',c=t.indexOf(":"+n+":")>-1?":"+n+":":n;return t=t.replace(c,l),i}),"
"+t+"
"},buttons:function(){return this.message.context&&this.message.context.buttons||[]},expert:function(){var e=this;return"expert"!==this.message.from?null:this.$store.state.chat.conversation.experts.find(function(n){return n&&n.name===e.message.author})}},Object(F.d)("chat",["moduleEnabled"])),components:{VRuntimeTemplate:Pg,actionButton:eI}},tI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"message-text",class:["-"+e.message.from]},["expert"===e.message.from?t("div",{staticClass:"avatar"},[e.expert&&e.expert.image?e._e():t("font-awesome-icon",{attrs:{icon:["fas","user"]}}),e._v(" "),e.expert&&e.expert.image?t("img",{attrs:{src:e.expert.image,alt:e.expert?e.expert.name:e.$t("Atendimento")}}):e._e()],1):e._e(),e._v(" "),t("div",{staticClass:"content"},[t("v-runtime-template",{attrs:{template:e.content}}),e._v(" "),e.buttons.length>0?t("div",{staticClass:"buttons"},e._l(e.buttons,function(e,n){return t("action-button",{key:n,attrs:{settings:e}})}),1):e._e()],1),e._v(" "),t("div",{staticClass:"info"},[e._v("\n "+e._s(e._f("moment")(e.message.date,"DD/MM/YYYY HH:mm:ss"))+" - "+e._s(e.moduleChatBot===e.moduleEnabled&&"customer"!==e.message.from?e.botName:e.message.author)+"\n\n "),"expert"!==e.message.from&&"warning"!==e.message.from?t("span",{staticClass:"status",class:{"-active":"read"===e.message.status}},[t("font-awesome-icon",{staticClass:"icon",attrs:{icon:"check"}}),e._v(" "),"read"===e.message.status?t("font-awesome-icon",{staticClass:"icon",attrs:{icon:"check"}}):e._e()],1):e._e()])])},staticRenderFns:[]};var aI=t("mUJo")(nI,tI,!1,function(e){t("a57K")},"data-v-06736ee8",null).exports,iI={name:"message-queue-position",props:{message:{required:!0,type:Object}},computed:c()({},Object(F.d)("chat/queue",["position"]))},lI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("v-card",{staticClass:"card"},[t("p",[e._v("\n "+e._s(e.$t("Oi {name}!",{name:e.name}))+"\n "),t("strong",[e._v(e._s(e.$t("Voc\xea \xe9 o {position}\xba da fila",{position:e.position})))])]),e._v(" "),t("p",[e._v("\n "+e._s(e.$t("Em breve um de nossos atendentes ficar\xe1 dispon\xedvel para te atender :)"))+"\n ")]),e._v(" "),t("div",{attrs:{slot:"footer"},slot:"footer"},[t("v-button",{attrs:{type:"button",layout:"secondary","text-lower":!0},on:{click:e.cancel}},[e._v(e._s(e.$t("Cancelar")))])],1)])},staticRenderFns:[]};var cI=t("mUJo")(iI,lI,!1,function(e){t("jOav")},"data-v-893fa8ea",null).exports,gI={name:"survey-base",methods:{updateMessageAdditionalData:function(e){this.$store.commit("chat/SET_SURVEY_ADDITIONAL_DATA",{"Coment\xe1rio":e})},sendSurvey:function(){var e=this;return this.$store.dispatch("chat/sendSurvey").then(function(){e.$store.commit("chat/RESET_SURVEY"),e.$router.replace("/chat/final")}).catch(function(){return null})}},computed:c()({option:{get:function(){return this.$store.state.chat.survey.option},set:function(e){this.$store.commit("chat/SET_SURVEY_OPTION",e)}}},Object(F.d)("chat",{additionalData:function(e){return e.survey.additionalData}}))},II={render:function(){var e=this.$createElement;return(this._self._c||e)("div")},staticRenderFns:[]};var rI=t("mUJo")(gI,II,!1,function(e){t("TBbS")},"data-v-52258222",null).exports,oI={name:"survey-stars",extends:rI},dI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"survey-stars"},[t("h2",{staticClass:"title"},[e._v(e._s(e.$t("Voc\xea gostou do seu atendimento?")))]),e._v(" "),t("div",{staticClass:"rate"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-answer-5",name:"Rate"},domProps:{value:5,checked:e._q(e.option,5)},on:{change:function(n){e.option=5}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":5===e.option},attrs:{for:"survey-answer-5",title:e.$t("Muito Satisfat\xf3rio")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-4",name:"Rate"},domProps:{value:4,checked:e._q(e.option,4)},on:{change:function(n){e.option=4}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":4===e.option},attrs:{for:"survey-option-4",title:e.$t("Satisfat\xf3rio")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-3",name:"Rate"},domProps:{value:3,checked:e._q(e.option,3)},on:{change:function(n){e.option=3}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":3===e.option},attrs:{for:"survey-option-3",title:e.$t("Razo\xe1vel")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-2",name:"Rate"},domProps:{value:2,checked:e._q(e.option,2)},on:{change:function(n){e.option=2}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":2===e.option},attrs:{for:"survey-option-2",title:e.$t("Indiferente")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-1",name:"Rate"},domProps:{value:1,checked:e._q(e.option,1)},on:{change:function(n){e.option=1}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":1===e.option},attrs:{for:"survey-option-1",title:e.$t("Pouco Satisfat\xf3rio")}})]),e._v(" "),e.option?t("div",{staticClass:"comment"},[t("h3",{staticClass:"title"},[e._v(e._s(e.$t("Obrigado pela avalia\xe7\xe3o")))]),e._v(" "),t("p",[e._v("\n "+e._s(e.$t("Quer deixar uma mensagem?"))+"\n ")]),e._v(" "),t("v-textarea",{staticClass:"field",attrs:{placeholder:e.$t("Deixe uma mensagem de avalia\xe7\xe3o"),value:e.additionalData["Coment\xe1rio"]},on:{input:function(n){return e.updateMessageAdditionalData(n.target.value)}}}),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"primary",disabled:!e.option},on:{click:e.sendSurvey}},[e._v(e._s(e.$t("Enviar")))])],1)],1):e._e(),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"secondary",link:!0},on:{click:function(n){return e.$router.replace("/chat/final")}}},[t("small",[e._v(e._s(e.$t("Concluir sem responder")))])])],1)])},staticRenderFns:[]};var uI={name:"survey-faces",extends:rI},sI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"survey-faces"},[t("h2",{staticClass:"title"},[e._v(e._s(e.$t("Voc\xea gostou do seu atendimento?")))]),e._v(" "),t("div",{staticClass:"rate"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-answer-5",name:"Rate"},domProps:{value:5,checked:e._q(e.option,5)},on:{change:function(n){e.option=5}}}),e._v(" "),t("label",{staticClass:"answer -option5",class:{"-voted":5===e.option},attrs:{for:"survey-answer-5",title:e.$t("Muito Satisfat\xf3rio")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-4",name:"Rate"},domProps:{value:4,checked:e._q(e.option,4)},on:{change:function(n){e.option=4}}}),e._v(" "),t("label",{staticClass:"answer -option4",class:{"-voted":4===e.option},attrs:{for:"survey-option-4",title:e.$t("Satisfat\xf3rio")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-3",name:"Rate"},domProps:{value:3,checked:e._q(e.option,3)},on:{change:function(n){e.option=3}}}),e._v(" "),t("label",{staticClass:"answer -option3",class:{"-voted":3===e.option},attrs:{for:"survey-option-3",title:e.$t("Razo\xe1vel")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-2",name:"Rate"},domProps:{value:2,checked:e._q(e.option,2)},on:{change:function(n){e.option=2}}}),e._v(" "),t("label",{staticClass:"answer -option2",class:{"-voted":2===e.option},attrs:{for:"survey-option-2",title:e.$t("Indiferente")}}),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-1",name:"Rate"},domProps:{value:1,checked:e._q(e.option,1)},on:{change:function(n){e.option=1}}}),e._v(" "),t("label",{staticClass:"answer -option1",class:{"-voted":1===e.option},attrs:{for:"survey-option-1",title:e.$t("Pouco Satisfat\xf3rio")}})]),e._v(" "),e.option?t("div",{staticClass:"comment"},[t("h3",{staticClass:"title"},[e._v(e._s(e.$t("Obrigado pela avalia\xe7\xe3o")))]),e._v(" "),t("p",[e._v("\n "+e._s(e.$t("Quer deixar uma mensagem?"))+"\n ")]),e._v(" "),t("v-textarea",{staticClass:"field",attrs:{placeholder:e.$t("Deixe uma mensagem de avalia\xe7\xe3o"),value:e.additionalData["Coment\xe1rio"]},on:{input:function(n){return e.updateMessageAdditionalData(n.target.value)}}}),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"primary",disabled:!e.option},on:{click:e.sendSurvey}},[e._v(e._s(e.$t("Enviar")))])],1)],1):e._e(),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"secondary",link:!0},on:{click:function(n){return e.$router.replace("/chat/final")}}},[t("small",[e._v(e._s(e.$t("Concluir sem responder")))])])],1)])},staticRenderFns:[]};var bI={name:"survey-numbers",extends:rI},CI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"survey-numbers"},[t("h2",{staticClass:"title"},[e._v(e._s(e.$t("Voc\xea gostou do seu atendimento?")))]),e._v(" "),t("div",{staticClass:"rate"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-1",name:"Rate"},domProps:{value:1,checked:e._q(e.option,1)},on:{change:function(n){e.option=1}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":1===e.option},attrs:{for:"survey-option-1",title:1}},[e._v("1")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-2",name:"Rate"},domProps:{value:2,checked:e._q(e.option,2)},on:{change:function(n){e.option=2}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":2===e.option},attrs:{for:"survey-option-2",title:2}},[e._v("2")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-3",name:"Rate"},domProps:{value:3,checked:e._q(e.option,3)},on:{change:function(n){e.option=3}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":3===e.option},attrs:{for:"survey-option-3",title:3}},[e._v("3")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-4",name:"Rate"},domProps:{value:4,checked:e._q(e.option,4)},on:{change:function(n){e.option=4}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":4===e.option},attrs:{for:"survey-option-4",title:4}},[e._v("4")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-answer-5",name:"Rate"},domProps:{value:5,checked:e._q(e.option,5)},on:{change:function(n){e.option=5}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":5===e.option},attrs:{for:"survey-answer-5",title:5}},[e._v("5")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-6",name:"Rate"},domProps:{value:6,checked:e._q(e.option,6)},on:{change:function(n){e.option=6}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":6===e.option},attrs:{for:"survey-option-6",title:6}},[e._v("6")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-7",name:"Rate"},domProps:{value:7,checked:e._q(e.option,7)},on:{change:function(n){e.option=7}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":7===e.option},attrs:{for:"survey-option-7",title:7}},[e._v("7")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-8",name:"Rate"},domProps:{value:8,checked:e._q(e.option,8)},on:{change:function(n){e.option=8}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":8===e.option},attrs:{for:"survey-option-8",title:8}},[e._v("8")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-option-9",name:"Rate"},domProps:{value:9,checked:e._q(e.option,9)},on:{change:function(n){e.option=9}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":9===e.option},attrs:{for:"survey-option-9",title:9}},[e._v("9")]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.option,expression:"option"}],staticClass:"field",attrs:{type:"radio",id:"survey-answer-10",name:"Rate"},domProps:{value:10,checked:e._q(e.option,10)},on:{change:function(n){e.option=10}}}),e._v(" "),t("label",{staticClass:"answer",class:{"-voted":10===e.option},attrs:{for:"survey-answer-10",title:10}},[e._v("10")])]),e._v(" "),e.option?t("div",{staticClass:"comment"},[t("h3",{staticClass:"title"},[e._v(e._s(e.$t("Obrigado pela avalia\xe7\xe3o")))]),e._v(" "),t("p",[e._v("\n "+e._s(e.$t("Quer deixar uma mensagem?"))+"\n ")]),e._v(" "),t("v-textarea",{staticClass:"field",attrs:{placeholder:e.$t("Deixe uma mensagem de avalia\xe7\xe3o"),value:e.additionalData["Coment\xe1rio"]},on:{input:function(n){return e.updateMessageAdditionalData(n.target.value)}}}),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"primary",disabled:!e.option},on:{click:e.sendSurvey}},[e._v(e._s(e.$t("Enviar")))])],1)],1):e._e(),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{layout:"secondary",link:!0},on:{click:function(n){return e.$router.replace("/chat/final")}}},[t("small",[e._v(e._s(e.$t("Concluir sem responder")))])])],1)])},staticRenderFns:[]};var BI={name:"message-survey",computed:{surveyComponent:function(){return{stars:"survey-stars",faces:"survey-faces",numbers:"survey-numbers"}[u.chat.survey.type]||null}},components:{surveyStars:t("mUJo")(oI,dI,!1,function(e){t("g8TY")},"data-v-59ae8b26",null).exports,surveyFaces:t("mUJo")(uI,sI,!1,function(e){t("2kiT")},"data-v-3800e235",null).exports,surveyNumbers:t("mUJo")(bI,CI,!1,function(e){t("hBbl")},"data-v-692a4601",null).exports}},AI={render:function(){var e=this.$createElement;return(this._self._c||e)(this.surveyComponent,this._g(this._b({tag:"component"},"component",this.$attrs,!1),this.$listeners))},staticRenderFns:[]},mI=t("mUJo")(BI,AI,!1,null,null,null).exports,GI={name:"message-system",props:{message:{required:!0,type:Object}},data:function(){}},QI={render:function(){var e=this.$createElement,n=this._self._c||e;return n("div",{staticClass:"message-system"},[n("div",{staticClass:"content"},[this._v("\n "+this._s(this.message.content)+"\n ")])])},staticRenderFns:[]};var pI=t("mUJo")(GI,QI,!1,function(e){t("kYfx")},"data-v-0e5c6e93",null).exports,ZI={name:"message-warning",props:{message:{required:!0,type:Object}},components:{messageText:aI}},FI={render:function(){var e=this.$createElement;return(this._self._c||e)("message-text",{attrs:{message:this.message}})},staticRenderFns:[]};var hI=t("mUJo")(ZI,FI,!1,function(e){t("oAUR")},"data-v-f3676756",null).exports,XI={name:"room",data:function(){return{autoScrollEnabled:!0,moduleChatBot:"ChatBot",botName:u.chat.bot.name,isOnline:!0}},methods:{messageComponent:function(e){return{text:"message-text",survey:"message-survey",system:"message-system","queue-position":"message-queue-position",warning:"message-warning"}[e.type]||null},toggleAutoScroll:function(){this.autoScrollEnabled=!this.autoScrollEnabled},online:function(){this.isOnline=!0},offline:function(){this.isOnline=!1}},computed:c()({},Object(F.d)({messages:function(e){return e.chat.conversation.messages}}),Object(F.d)("chat",["controls","moduleEnabled","socketReconnecting"]),Object(F.d)("chat/conversation",["showSendMessage","showExpertWriting","expert"])),directives:{autoScrollMessages:Zg},components:{connectionProblemsInformative:Bg,chatControls:Wg,videoParticipants:xg,confirmStartVideoChat:Sg,sendMessage:Kg,messageText:aI,messageQueuePosition:cI,messageSurvey:mI,messageSystem:pI,messageWarning:hI}},yI={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"chat-room",class:{"-videoroom":e.controls.videoChat}},[t("chat-controls",{staticClass:"controls"}),e._v(" "),e.controls.videoChat?t("video-participants"):e._e(),e._v(" "),t("div",{directives:[{name:"auto-scroll-messages",rawName:"v-auto-scroll-messages",value:{enabled:e.controls.autoScroll,messages:e.messages,delay:500,offsetTop:15},expression:"{enabled: controls.autoScroll, messages: messages, delay: 500, offsetTop: 15}"}],staticClass:"body"},[!e.isOnline||e.socketReconnecting?t("div",{staticClass:"reconnect-modal"},[t("connection-problems-informative",{on:{online:e.online,offline:e.offline}})],1):e._e(),e._v(" "),t("transition-group",{attrs:{name:"fade"}},e._l(e.messages,function(n){return t(e.messageComponent(n),{key:n.id,ref:"message-"+n.id,refInFor:!0,tag:"component",attrs:{message:n,id:"message-"+n.id}})}),1)],1),e._v(" "),t("div",{staticClass:"footer"},[e.showSendMessage?t("send-message"):e._e(),e._v(" "),e.showExpertWriting&&e.showSendMessage?t("p",{staticClass:"expertWriting"},[e._v("\n "+e._s(e.$t((e.moduleEnabled===e.moduleChatBot?e.botName:"Operador")+" digitando"))+"\n ")]):e._e()],1),e._v(" "),e.controls.confirmStartVideoChat?t("confirm-start-video-chat"):e._e()],1)},staticRenderFns:[]};var WI=t("mUJo")(XI,yI,!1,function(e){t("VoRx")},"data-v-39997bec",null).exports,vI={render:function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"row"},[this._t("default")],2)},staticRenderFns:[]};var VI=t("mUJo")({name:"row"},vI,!1,function(e){t("VB/R")},"data-v-124ea590",null).exports,UI=t("ZRhR"),RI=t.n(UI),NI={methods:{propagateClick:function(){for(var e=arguments.length,n=Array(e),t=0;t0?t("p",[e._v(e._s(e.error.message.details))]):e._e()]),e._v(" "),t("div",{staticClass:"block"},[t("v-button",{attrs:{type:"button",layout:"secondary"},on:{click:e.redirectToChatForm}},[e._v(e._s(e.$t("Tentar novamente")))])],1)])},staticRenderFns:[]};var JI=t("mUJo")(xI,TI,!1,function(e){t("FBQD")},"data-v-3a502839",null).exports,SI={props:{side:{required:!1,default:"bottom",type:String}}},kI={props:{layout:{required:!1,default:"default",type:String}}},EI={name:"btn-dropdown",props:{showCaretIcon:{required:!1,default:!0,type:Boolean}},mixins:[SI,kI],data:function(){return{showOptions:!1}},methods:{toggleShowOptionsAndNotifyClick:function(){this.showOptions=!this.showOptions;for(var e=arguments.length,n=Array(e),t=0;t5e3?(alert("Tamanho do arquivo muito grande!"),l()):t.$sdk.Chat.sendAttachment(n).then((c=Tc()(fc.a.mark(function n(i){var l,c;return fc.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return l=i.file,n.next=3,a("formatMessage",{id:i.id,content:l.name,type:"text"});case 3:return c=n.sent,n.next=6,a("storeMessage",c);case 6:return n.abrupt("return",e());case 7:case"end":return n.stop()}},n,t)})),function(e){return c.apply(this,arguments)})).catch(l);var c})},sendMessageRead:function(e,n){var t=this;return ar()(e),new eg.a(function(e,a){t.$sdk.Chat.sendMessageRead(n).then(e).catch(a)})},showStarted:function(e,n){var t=e.commit,a=e.dispatch,i=e.rootState,l=n.restored,c=n.expert;return new eg.a(function(e,n){var g=i.chat.moduleEnabled,I=i.route.path;return t("chat/DISABLE_LOADING",null,{root:!0}),t("chat/queue/RESET_POSITION",null,{root:!0}),t("STORE_EXPERT",c),t("SHOW_SEND_MESSAGE"),"/chat/room"!==I&&Or.replace("/chat/room"),"Chat"===g||l?e():a("chat/conversation/sendBlankMessage",null,{root:!0}).then(e).catch(n)})},showFinished:function(e){var n,t=this,a=e.dispatch,i=e.commit,l=e.rootState;return new eg.a((n=Tc()(fc.a.mark(function e(n){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("ChatBot"!==l.chat.moduleEnabled){e.next=3;break}return Or.replace({path:"/chat/final",query:{fromBot:!0}}),e.abrupt("return",n());case 3:if(u.chat.survey.enable){e.next=6;break}return Or.replace({path:"/chat/final"}),e.abrupt("return",n());case 6:if(!l.chat.ignoreNextSurvey){e.next=9;break}return i("chat/REMOVE_IGNORE_NEXT_SURVEY",null,{root:!0}),e.abrupt("return",n());case 9:return e.next=11,i("HIDE_SEND_MESSAGE");case 11:return e.next=13,a("chat/showSurveyMessage",null,{root:!0});case 13:return e.abrupt("return",n());case 14:case"end":return e.stop()}},e,t)})),function(e){return n.apply(this,arguments)}))},hideSendMessageUntilNextMessage:function(e){var n=this,t=e.state,a=e.commit;return new eg.a(function(e){a("SET_DISABLE_SEND_MESSAGE",!0);var i=n.watch(function(){return t.messages},function(){return a("SET_DISABLE_SEND_MESSAGE",!1),i()});return e()})},redirectToExpert:function(e){var n=this,t=e.state,a=e.commit,i=e.dispatch,l=e.rootState;return new eg.a(function(e,g){return a("chat/queue/SET_MODULE_THAT_ENQUEUED","ChatBot",{root:!0}),a("chat/SET_MODULE_ENABLED","Chat",{root:!0}),a("chat/IGNORE_NEXT_SURVEY",null,{root:!0}),n.$sdk.ChatBot.stopConversation(),i("start",c()({},l.customer.form,{chatBotProtocol:t.protocol,chatBotId:t.idBot,chatBotContext:t.context,fromChatBot:!0})).then(e).catch(g)})},stop:function(e){var n,t=this,a=e.dispatch,i=e.rootState;return new eg.a((n=Tc()(fc.a.mark(function e(n,l){var c;return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i.chat.controls.videoChat){e.next=3;break}return e.next=3,a("chat/video/hangup",{local:!0},{root:!0});case 3:return c=i.chat.moduleEnabled,e.abrupt("return",t.$sdk[c].stopConversation().then(n).catch(l));case 5:case"end":return e.stop()}},e,t)})),function(e,t){return n.apply(this,arguments)}))}}},lr={namespaced:!0,state:{position:0,moduleThatEnqueued:u.chat.initialModule},getters:{},mutations:{SET_POSITION:function(e,n){e.position=parseInt(n)},RESET_POSITION:function(e){e.position=0},SET_MODULE_THAT_ENQUEUED:function(e,n){e.moduleThatEnqueued=n}},actions:{sendPositionMessage:function(e){var n,t=this,a=e.commit,i=e.dispatch;return new eg.a((n=Tc()(fc.a.mark(function e(n){var l;return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i("chat/conversation/formatMessage",{content:"",type:"queue-position",from:"system"},{root:!0});case 2:return l=e.sent,a("chat/conversation/STORE_MESSAGE",l,{root:!0}),e.abrupt("return",n());case 5:case"end":return e.stop()}},e,t)})),function(e){return n.apply(this,arguments)}))},showEnqueued:function(e,n){var t=e.state,a=e.commit,i=(e.dispatch,n.position);return new eg.a(function(e,n){t.moduleThatEnqueued;return a("SET_POSITION",i),a("chat/DISABLE_LOADING",null,{root:!0}),Or.replace("/chat/queue"),e()})},showEnqueuedFailed:function(e,n){var t,a=this,i=(e.state,e.commit),l=(e.dispatch,n.error);return new eg.a((t=Tc()(fc.a.mark(function e(n,t){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i("chat/SET_ERROR",l,{root:!0}),i("chat/DISABLE_LOADING",null,{root:!0}),Or.replace("/chat/stopped"),e.abrupt("return",n());case 4:case"end":return e.stop()}},e,a)})),function(e,n){return t.apply(this,arguments)}))},showDequeued:function(e){(0,e.commit)("RESET_POSITION"),Or.replace({path:"/chat/final",query:{fromQueue:1}})}}},cr={STORE_PARTICIPANT:function(e,n){var t=e.participants;g.default.set(t,n.identity,n)},RESET_PARTICIPANTS:function(e){e.participants={}}},gr=t("WxTP"),Ir=t.n(gr),rr={namespaced:!0,state:MI,getters:{},mutations:PI,actions:qI,modules:{buttons:$I,conversation:ir,queue:lr,video:{namespaced:!0,state:{participants:{}},getters:{},mutations:cr,actions:{start:function(e,n){var t=e.commit;return new eg.a(function(e){return t("chat/SET_VALUE_CONTROLS_ITEM",{item:"videoChat",value:!0},{root:!0}),t("STORE_PARTICIPANT",c()({},n.localParticipant,{identity:"local",local:!0})),e()})},hangup:function(e){var n,t=this,a=e.commit,i=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).local;return new eg.a((n=Tc()(fc.a.mark(function e(n){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=3;break}return e.next=3,t.$sdk.Chat.Video.turnOff();case 3:return a("chat/SET_VALUE_CONTROLS_ITEM",{item:"videoChat",value:!1},{root:!0}),a("RESET_PARTICIPANTS"),e.abrupt("return",n());case 6:case"end":return e.stop()}},e,t)})),function(e){return n.apply(this,arguments)}))},showInvite:function(e){var n=e.commit;return new eg.a(function(e){return n("chat/SET_VALUE_CONTROLS_ITEM",{item:"confirmStartVideoChat",value:!0},{root:!0}),e()})},abortInvite:function(e){var n=e.commit;return new eg.a(function(e){return n("chat/SET_VALUE_CONTROLS_ITEM",{item:"confirmStartVideoChat",value:!1},{root:!0}),e()})},acceptInvite:function(e){var n=this,t=e.commit;return new eg.a(function(e,a){n.$sdk.Chat.Video.accept().then(function(){return e()}).catch(a).finally(function(){t("chat/SET_VALUE_CONTROLS_ITEM",{item:"confirmStartVideoChat",value:!1},{root:!0})})})},rejectInvite:function(e){var n=this,t=e.commit;return new eg.a(function(e,a){n.$sdk.Chat.Video.reject().then(function(){return e()}).catch(a).finally(function(){t("chat/SET_VALUE_CONTROLS_ITEM",{item:"confirmStartVideoChat",value:!1},{root:!0})})})},mute:function(e,n){var t,a=this,i=e.commit;return new eg.a((t=Tc()(fc.a.mark(function e(t){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.local){e.next=3;break}return e.next=3,a.$sdk.Chat.Video.mute();case 3:return i("chat/SET_VALUE_CONTROLS_ITEM",{item:"sound",value:!1},{root:!0}),e.abrupt("return",t());case 5:case"end":return e.stop()}},e,a)})),function(e){return t.apply(this,arguments)}))},unmute:function(e,n){var t,a=this,i=e.commit;return new eg.a((t=Tc()(fc.a.mark(function e(t){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.local){e.next=3;break}return e.next=3,a.$sdk.Chat.Video.unmute();case 3:return i("chat/SET_VALUE_CONTROLS_ITEM",{item:"sound",value:!0},{root:!0}),e.abrupt("return",t());case 5:case"end":return e.stop()}},e,a)})),function(e){return t.apply(this,arguments)}))},hide:function(e,n){var t,a=this,i=e.commit;return new eg.a((t=Tc()(fc.a.mark(function e(t){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.local){e.next=3;break}return e.next=3,a.$sdk.Chat.Video.hide();case 3:return i("chat/SET_VALUE_CONTROLS_ITEM",{item:"video",value:!1},{root:!0}),e.abrupt("return",t());case 5:case"end":return e.stop()}},e,a)})),function(e){return t.apply(this,arguments)}))},unhide:function(e,n){var t,a=this,i=e.commit;return new eg.a((t=Tc()(fc.a.mark(function e(t){return fc.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.local){e.next=3;break}return e.next=3,a.$sdk.Chat.Video.unhide();case 3:return i("chat/SET_VALUE_CONTROLS_ITEM",{item:"video",value:!0},{root:!0}),e.abrupt("return",t());case 5:case"end":return e.stop()}},e,a)})),function(e){return t.apply(this,arguments)}))},fullscreen:function(){var e=["webkit","moz","ms","o",""];return function(n,t){for(var a=0,i=null;a=1?"upload-delete-self-form":"v-upload"}},Object(F.c)("customer",{addsAttachmentFile:"CREATE_FORM_ATTACHMENT",removeAttachmentFile:"REMOVE_FORM_ATTACHMENT",setAttachmentValue:"SET_FORM_ATTACHMENT_VALUE",concatAttachments:"CONCAT_ATTACHMENTS"}),{submit:function(){var e=this;return Tc()(fc.a.mark(function n(){return fc.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.validationCounter=0,n.prev=1,n.next=4,e.validateFields();case 4:if(n.sent){n.next=7;break}return n.abrupt("return");case 7:n.next=12;break;case 9:return n.prev=9,n.t0=n.catch(1),n.abrupt("return");case 12:e.loading=!0,e.error=!1,e.concatenateQuestion(),e.concatAttachments(),e.$sdk.Email.submit(e.form).then(function(n){e.loading=!1,e.resetUpload=!0,e.$store.commit("email/SET_PROTOCOL",n.protocol),e.$router.replace("/email/final")}).catch(function(n){e.loading=!1,e.error=n.message||!1,n.code===e.$sdk.Errors.EMAIL.CODES.VALIDATION_ERROR&&e.showSubmitValidationErrors(n.errors)});case 17:case"end":return n.stop()}},n,e,[[1,9]])}))()},updateConcatQuestion:function(e,n){"object"==(void 0===n?"undefined":Ir()(n))&&null!=n&&(n=n.value),"onde"==e&&(this.$store.commit("customer/SET_FORM_FIELD",{field:"ProtocoloFieldA",value:null}),this.$store.commit("customer/SET_FORM_FIELD",{field:"ProtocoloFieldB",value:null}),this.$store.commit("customer/SET_FORM_FIELD",{field:"ProtocoloFieldC",value:null})),this.concatQuestion[e].value=n,this.updateFormField(e,n)},concatenateQuestion:function(){var e=this;return Tc()(fc.a.mark(function n(){var t,a;return fc.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(0!=Vg()(e.concatQuestion)){n.next=2;break}return n.abrupt("return");case 2:for(a in t="",e.concatQuestion)""!=e.concatQuestion[a].value&&null!=e.concatQuestion[a].value&&(t+=e.$t(e.concatQuestion[a].label)+": "+e.concatQuestion[a].value+"
");return t+="
"+e.$t("Mensagem")+":
"+e.form.question,e.updateFormField("question",t),n.next=8,e.$store.commit("customer/SET_FORM_FIELD",{field:"question",value:t});case 8:case"end":return n.stop()}},n,e)}))()},showSubmitValidationErrors:function(e){var n=this;e.forEach(function(e,t){var a=e[0],i=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();n.errors.add(i,a)})},resetRadioChilds:function(e){var n=this,t=[];return!!(e&&(e.forEach(function(e){e.children&&t.push(e.children)}),t.length>0))&&(t.forEach(function(e){n.$store.commit("customer/SET_FORM_FIELD",{field:e,value:null})}),!0)}}),computed:c()({canShowAlertError:function(){return Boolean(this.error)},obrigatorioRequired:function(){return this.form.subAttachments.obrigatorioAttachment.filter(function(e){return e.name}).length!==this.form.subAttachments.obrigatorioAttachment.length?"required":""}},Object(F.d)({pageType:function(e){return e.customer.pageType},form:function(e){return e.customer.form},attachmentCounter:function(e){return e.customer.attachmentCounter},categories:function(e){return e.email.categories},subCategories:function(e){return e.email.subCategories[e.customer.form.mainCategory]},onde:function(e){return e.email.onde},estados:function(e){return e.email.estados}})),mounted:function(){this.$store.commit("email/RESET_PROTOCOL")},created:function(){var e={pt_BR:{name:"Nome",email:"E-mail",FieldU:"CPF",FieldA:"Telefone",FieldB:"Estado",FieldC:"Cidade",ProtocoloFieldA:"N\xfamero do Pedido",ProtocoloFieldB:"N\xfamero do Cupom Fiscal",ProtocoloFieldC:"Nome da Loja",mainCategory:"Assunto",subCategories:"Sub-assunto",obrigatorioAttachment:"Anexo",question:"Mensagem"},es:{name:"Nombre",email:"E-mail",FieldA:"Tel\xe9fono",FieldU:"Documento",mainCategory:"Asunto",reclamacaoCategories:"Asunto secundario",question:"Mesaje"},en:{name:"Name",email:"E-mail",FieldA:"Phone",FieldU:"Document",mainCategory:"Subject",reclamacaoCategories:"Second Subject",question:"Message"}},n=this.$root.locale;this.$validator.localize("pt_BR",{attributes:e.pt_BR}),this.$validator.localize("en",{attributes:e.en}),this.$validator.localize("es",{attributes:e.es}),this.$validator.localize(n)},components:{uploadDeleteSelfForm:ur}},Cr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"email-form"},[t("p",{staticClass:"_textsmall"},[t("i",[e._v("\n "+e._s(e.$t("Ol\xe1! Preencha o formul\xe1rio e retornaremos seu email!"))+"\n ")])]),e._v(" "),e.errors.count()>0?t("v-alert",{attrs:{layout:"danger"}},[e._v("\n "+e._s(e.$t("Ocorreu algum erro no envio de seu e-mail."))+"\n "),t("br"),e._v("\n "+e._s(e.$t("Por favor, verifique se existe algum erro nos campos abaixo e tente novamente!"))+"\n ")]):e._e(),e._v(" "),e.error?t("v-alert",{attrs:{layout:"danger"}},[e._v("\n "+e._s(e.$t(e.error))+"\n ")]):e._e(),e._v(" "),t("form",{staticClass:"form",on:{submit:function(n){return n.preventDefault(),e.submit.apply(null,arguments)}}},[t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Nome"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"validate",rawName:"v-validate",value:"required|min:3",expression:"'required|min:3'"}],attrs:{id:"name",name:"name",placeholder:e.$t("Digite seu Nome"),value:e.form.name},on:{input:function(n){return e.updateFormField("name",n.target.value)}}}),e._v(" "),e.errors.has("name")?t("v-field-error",[e._v(e._s(e.errors.first("name")))]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("E-mail"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"validate",rawName:"v-validate",value:"required|min:3|email",expression:"'required|min:3|email'"}],attrs:{id:"email",name:"email",type:"email",placeholder:e.$t("Digite seu E-mail"),value:e.form.email},on:{input:function(n){return e.updateFormField("email",n.target.value)}}}),e._v(" "),e.errors.has("email")?t("v-field-error",[e._v(e._s(e.errors.first("email")))]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Telefone")))]),e._v(" "),t("v-input",{directives:[{name:"mask",rawName:"v-mask",value:["(##) ####-####","(##) #####-####"],expression:"['(##) ####-####', '(##) #####-####']"},{name:"validate",rawName:"v-validate",value:"phone",expression:"'phone'"}],attrs:{id:"FieldA",name:"FieldA",placeholder:e.$t("Digite seu Telefone"),value:e.form.FieldA},on:{input:function(n){return e.updateFormField("FieldA",n.target.value)}}}),e._v(" "),e.errors.has("FieldA")?t("v-field-error",[e._v(e._s(e.errors.first("FieldA")))]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("CPF"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"mask",rawName:"v-mask",value:["###.###.###-##"],expression:"['###.###.###-##']"},{name:"validate",rawName:"v-validate",value:"required|cpf",expression:"'required|cpf'"}],attrs:{id:"FieldU",name:"FieldU",type:"text",placeholder:e.$t("Digite seu CPF"),value:e.form.FieldU},on:{input:function(n){return e.updateFormField("FieldU",n.target.value)}}}),e._v(" "),e.errors.has("FieldU")?t("v-field-error",[e._v(e._s(e.errors.first("FieldU")))]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Estado"))+"*")]),e._v(" "),t("v-select2",{attrs:{id:"FieldB",name:"FieldB",value:e.form.FieldB,placeholder:e.$t("Escolha um Estado"),hasError:e.errors.has("FieldB"),options:e.estados},on:{input:function(n){return e.updateLocationField("FieldB",n)}}}),e._v(" "),e.errors.has("FieldB")?t("v-field-error",[e._v("O campo Estado \xe9 obrigat\xf3rio")]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Cidade"))+"*")]),e._v(" "),t("v-select2",{key:e.form.FieldB,attrs:{id:"FieldC",name:"FieldC",value:e.form.FieldC,placeholder:e.$t("Escolha uma Cidade"),hasError:e.errors.has("FieldC"),options:e.cidades,disabled:e.cityDisabled},on:{input:function(n){return e.updateLocationField("FieldC",n)}}}),e._v(" "),e.errors.has("FieldC")?t("v-field-error",[e._v("O campo Cidade \xe9 obrigat\xf3rio")]):e._e()],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Onde Adquiriu o produto?"))+"*")]),e._v(" "),t("v-select2",{attrs:{id:"onde",name:"onde",value:e.form.onde,placeholder:e.$t("Escolha uma op\xe7\xe3o"),hasError:e.errors.has("onde"),options:e.onde,validate:"select"},on:{input:function(n){return e.updateConcatQuestion("onde",n)}}}),e._v(" "),e.errors.has("onde")?t("v-field-error",[e._v("O campo Onde Adquiriu o produto \xe9 obrigat\xf3rio")]):e._e()],1),e._v(" "),"Televendas"==e.form.onde||"Internet"==e.form.onde?t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Numero do Pedido"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"validate",rawName:"v-validate",value:"required",expression:"'required'"}],attrs:{id:"ProtocoloFieldA",name:"ProtocoloFieldA",type:"text",placeholder:e.$t("Digite seu Numero do Pedido"),value:e.form.ProtocoloFieldA},on:{input:function(n){return e.updateFormField("ProtocoloFieldA",n.target.value)}}}),e._v(" "),e.errors.has("ProtocoloFieldA")?t("v-field-error",[e._v(e._s(e.errors.first("ProtocoloFieldA")))]):e._e()],1):e._e(),e._v(" "),"Lojas Polishop"==e.form.onde?t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Numero do Cupom Fiscal"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"validate",rawName:"v-validate",value:"required",expression:"'required'"}],attrs:{id:"ProtocoloFieldB",name:"ProtocoloFieldB",type:"text",placeholder:e.$t("Digite seu Cupom Fiscal"),value:e.form.ProtocoloFieldB},on:{input:function(n){return e.updateFormField("ProtocoloFieldB",n.target.value)}}}),e._v(" "),e.errors.has("ProtocoloFieldB")?t("v-field-error",[e._v(e._s(e.errors.first("ProtocoloFieldB")))]):e._e()],1):e._e(),e._v(" "),"Lojas Polishop"==e.form.onde?t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Nome da Loja"))+"*")]),e._v(" "),t("v-input",{directives:[{name:"validate",rawName:"v-validate",value:"required",expression:"'required'"}],attrs:{id:"ProtocoloFieldC",name:"ProtocoloFieldC",type:"text",placeholder:e.$t("Digite o Nome da Loja"),value:e.form.ProtocoloFieldC},on:{input:function(n){return e.updateFormField("ProtocoloFieldC",n.target.value)}}}),e._v(" "),e.errors.has("ProtocoloFieldC")?t("v-field-error",[e._v(e._s(e.errors.first("ProtocoloFieldC")))]):e._e()],1):e._e(),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Assunto"))+"*")]),e._v(" "),t("v-select2",{attrs:{id:"mainCategory",name:"mainCategory",value:e.form.mainCategory,placeholder:e.$t("Escolha um Assunto"),hasError:e.errors.has("mainCategory"),options:e.categories,validate:"select"},on:{input:function(n){return e.updateSelectField("mainCategory",n)}}}),e._v(" "),e.errors.has("mainCategory")?t("v-field-error",[e._v("O campo Assunto \xe9 obrigat\xf3rio")]):e._e()],1),e._v(" "),e.form.mainCategory?t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Sub-assunto"))+"*")]),e._v(" "),t("v-select2",{attrs:{id:"subCategories",name:"subCategories",value:e.form.subCategories,placeholder:e.$t("Escolha um sub-assunto"),hasError:e.errors.has("subCategories"),options:e.subCategories,validate:"select"},on:{input:function(n){return e.updateSelectField("subCategories",n)}}}),e._v(" "),e.errors.has("subCategories")?t("v-field-error",[e._v("O campo Sub-assunto \xe9 obrigat\xf3rio")]):e._e()],1):e._e(),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Anexos")))]),e._v(" "),t("v-field-container",{attrs:{"no-margin":!0,group:!0}},[e._l(e.form.subAttachments.opcionalAttachment,function(n,a){return t(e.attachmentComponent(a),{key:a,tag:"component",attrs:{id:"attachments-"+a,file:n,name:"opcionalAttachment",placeholder:e.$t("Adicione alguma foto ou arquivo"),"reset-upload":e.resetUpload},on:{select:function(n){return e.setAttachmentValue({name:"opcionalAttachment",key:a,value:n})},delete:function(n){return e.removeAttachmentFile({name:"opcionalAttachment",key:a})}}})}),e._v(" "),t("v-button",{directives:[{name:"show",rawName:"v-show",value:e.form.subAttachments&&e.form.subAttachments.opcionalAttachment.length<=4,expression:"form.subAttachments && form.subAttachments.opcionalAttachment.length <= 4"}],staticClass:"_floatright",attrs:{type:"button",link:!0,layout:"primary",size:"small"},on:{click:function(n){return e.addsAttachmentFile("opcionalAttachment")}}},[e._v(e._s(e.$t("Adicionar mais")))]),e._v(" "),e.errors.has("opcionalAttachment")?t("v-field-error",[e._v(e._s(e.errors.first("opcionalAttachment")))]):e._e()],2)],1),e._v(" "),t("v-field-container",[t("v-label",[e._v(e._s(e.$t("Mensagem"))+"*")]),e._v(" "),t("v-textarea",{directives:[{name:"validate",rawName:"v-validate",value:"required|min:3",expression:"'required|min:3'"}],staticClass:"fieldQuestion",attrs:{id:"question",name:"question",value:e.form.question,placeholder:e.$t("Digite aqui sua mensagem")},on:{input:function(n){return e.updateFormField("question",n.target.value)}}}),e._v(" "),e.errors.has("question")?t("v-field-error",[e._v(e._s(e.errors.first("question")))]):e._e()],1),e._v(" "),t("v-field-container",{attrs:{submit:!0}},[t("p",{staticClass:"_infotext"},[e._v("* "+e._s(e.$t("Campos de preenchimento obrigat\xf3rio")))]),e._v(" "),t("v-button",{attrs:{type:"submit",icon:e.loading?["fas","spinner"]:null,"pulse-icon":!0,disabled:e.loading}},[e._v(e._s(e.$t("Enviar")))])],1)],1)],1)},staticRenderFns:[]};var Br=t("mUJo")(br,Cr,!1,function(e){t("X2Nb")},"data-v-dadcf7f2",null).exports,Ar={name:"email-final",methods:{sendNewEmail:function(){this.$store.commit("email/RESET_PROTOCOL"),this.$store.commit("customer/RESET_FORM"),gg.a.$emit("resetSelecion"),this.$router.replace("/email")}},computed:c()({},Object(F.d)("email",["protocol"]),Object(F.d)("customer",{name:function(e){return e.form.name}}))},mr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"email-final"},[t("v-alert",{attrs:{layout:"success"}},[e._v("\n "+e._s(e.$t("Muito obrigado, {name},",{name:e.name}))+"\n "),e.protocol?t("span",[e._v(e._s(e.$t("o seu n\xfamero de protocolo \xe9 {protocol},",{protocol:e.protocol})))]):e._e(),e._v("\n "+e._s(e.$t(" sua mensagem foi recebida com sucesso, responderemos em breve."))+"\n ")]),e._v(" "),t("div",{staticClass:"actions"},[t("v-button",{attrs:{type:"primary",icon:["fas","envelope"]},on:{click:function(n){return e.sendNewEmail()}}},[t("i",[e._v(e._s(e.$t("Enviar outro e-mail")))])])],1)],1)},staticRenderFns:[]};var Gr=[{path:"/email",component:Br,meta:{name:"email",title:"Fale conosco!",titleIcon:["far","envelope"]}},{path:"/email/final",component:t("mUJo")(Ar,mr,!1,function(e){t("jUNf")},"data-v-658ed890",null).exports,meta:{name:"email",title:"Fale conosco!",titleIcon:["far","envelope"]}}],Qr={namespaced:!0,state:{categories:[{label:"Trocas",value:"trocas",enableSubItems:!0},{label:"Sobre minha Entrega",value:379601},{label:"Status do meu Pedido",value:379603},{label:"Cancelamento de Pedido",value:379605},{label:"Cancelamento de Seguro",value:379607},{label:"Solicita\xe7\xe3o de 2 via de Seguro",value:379609},{label:"Duvidas sobre Produtos",value:379611},{label:"Compra Coletiva",value:379613},{label:"Sugestoes e Elogios",value:379615},{label:"Parcerias",value:379619},{label:"Duvidas sobre o Site",value:379621},{label:"Promocoes e Descontos",value:379623},{label:"Outras Duvidas",value:379617}],subCategories:{trocas:[{label:"Arrependimento ou desistencia",value:379591},{label:"Achei um defeito de funcionamento",value:379591},{label:"Produto avariado ou incompleto",value:379595},{label:"Entregaram o produto errado",value:379597},{label:"Recebi de presente",value:379599}],outras:[]},onde:[{label:"Lojas Polishop",value:"Lojas Polishop"},{label:"Televendas",value:"Televendas"},{label:"Internet",value:"Internet"}],estados:[{label:"AC",value:"AC"},{label:"AL",value:"AL"},{label:"AM",value:"AM"},{label:"AP",value:"AP"},{label:"BA",value:"BA"},{label:"CE",value:"CE"},{label:"DF",value:"DF"},{label:"ES",value:"ES"},{label:"GO",value:"GO"},{label:"MA",value:"MA"},{label:"MG",value:"MG"},{label:"MS",value:"MS"},{label:"MT",value:"MT"},{label:"PA",value:"PA"},{label:"PB",value:"PB"},{label:"PE",value:"PE"},{label:"PI",value:"PI"},{label:"PR",value:"PR"},{label:"RJ",value:"RJ"},{label:"RN",value:"RN"},{label:"RO",value:"RO"},{label:"RR",value:"RR"},{label:"RS",value:"RS"},{label:"SC",value:"SC"},{label:"SE",value:"SE"},{label:"SP",value:"SP"},{label:"TO",value:"TO"}],protocol:0},getters:{},mutations:{SET_PROTOCOL:function(e,n){e.protocol=n},RESET_PROTOCOL:function(e){e.protocol=0}},actions:{}},pr={formUpdate:{name:"form-update",namespaced:!0,directive:{bind:function(e,n,t){var a="select"===e.tagName.toLowerCase()?"change":"input";e.addEventListener(a,function(){return t.context.$store.commit("customer/SET_FORM_FIELD",{field:n.arg,value:e.value})})}}}},Zr=t("6eYa"),Fr=t.n(Zr),hr={namespaced:!0,state:{pageType:"",form:{subAttachments:{obrigatorioAttachment:[{name:"",content:""}],opcionalAttachment:[{name:"",content:""}]}},error:{}},getters:{},mutations:{SET_FORM_FIELD:function(e,n){var t=n.field,a=n.value;g.default.set(e.form,t,a)},CREATE_FORM_ATTACHMENT:function(e,n){e.form.subAttachments[n].length>=5||e.form.subAttachments[n].push({name:"",content:""})},REMOVE_FORM_ATTACHMENT:function(e,n){var t=n.name,a=n.key;if(e.form.subAttachments[t]){var i=[].concat(RI()(e.form.subAttachments[t]));i.splice(a,1),g.default.set(e.form.subAttachments,t,i)}},SET_FORM_ATTACHMENT_VALUE:function(e,n){var t=n.name,a=n.key,i=n.value;e.form.subAttachments[t]||g.default.set(e.form.subAttachments,t,[]),g.default.set(e.form.subAttachments[t],a,i)},CONCAT_ATTACHMENTS:function(e){e.form.attachments=Fr()(e.form.subAttachments).reduce(function(e,n){return[].concat(RI()(e),RI()(n))},[])},RESET_FORM:function(e){var n=e.form.subAttachments,t=Vg()(n);e.form={},e.form.subAttachments=n,t.forEach(function(n){g.default.set(e.form.subAttachments[n],name,[{name:"",content:""}])})},SET_ERROR:function(e,n){e.error=n},SET_PAGE_TYPE:function(e,n){e.pageType=n}},actions:{}},Xr={name:"error",computed:{error:function(){return this.$store.state.customer.error}},methods:{redirectToStartPage:function(){var e=this.$localStorage.get("lastPage");e&&"error"!==e||(e=u.startModule),this.$router.replace("/"+e+"/")}},mounted:function(){this.error.code||this.redirectToStartPage()}},yr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"error"},[t("h1",{staticClass:"title"},[e._v(e._s(e.$t("Um erro foi encontrado"))+"!")]),e._v(" "),t("p",[t("strong",[e._v(e._s(e.$t("C\xf3digo"))+":")]),e._v("\n "+e._s(e.error.code)+"\n ")]),e._v(" "),t("p",[t("strong",[e._v(e._s(e.$t("Mensagem"))+":")]),e._v("\n "+e._s(e.error.msg)+"\n ")])])},staticRenderFns:[]};var Wr=[{path:"/error",component:t("mUJo")(Xr,yr,!1,function(e){t("ryNo")},"data-v-7444488f",null).exports,meta:{name:"error",layout:{empty:!0,fluid:!0}}}],vr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"phone-page"},[t("p",{staticClass:"_textsmall"},[t("i",[e._v(e._s(e.$t("Entre em contato ligando para qualquer um dos n\xfameros abaixo:")))])]),e._v(" "),t("div",{staticClass:"phone-block"},[t("div",{staticClass:"title"},[e._v(e._s(e.$t("Telefones")))]),e._v(" "),e._m(0),e._v(" "),e._m(1)]),e._v(" "),t("div",{staticClass:"phone-block"},[t("div",{staticClass:"title"},[e._v(e._s(e.$t("Whatsapp")))]),e._v(" "),e._m(2)]),e._v(" "),t("p",[e._v(e._s(e.$t("Segunda a Sexta-feira: 9h \xe0s 20h "))),t("br"),e._v(e._s(e.$t("S\xe1bado: 9h \xe0s 18h")))])])},staticRenderFns:[function(){var e=this.$createElement,n=this._self._c||e;return n("div",{staticClass:"phone"},[n("a",{attrs:{href:"tel://11-3323-3456"}},[this._v("+55 (11) 3323-3456")])])},function(){var e=this.$createElement,n=this._self._c||e;return n("div",{staticClass:"phone"},[n("a",{attrs:{href:"tel://11-3323-3457"}},[this._v("+55 (11) 3323-3457")])])},function(){var e=this.$createElement,n=this._self._c||e;return n("div",{staticClass:"phone"},[n("a",{attrs:{href:"https://api.whatsapp.com/send?phone=+5511999999999"}},[this._v("+55 (11) 99999-9999")])])}]};var Vr=[{path:"/telefone",component:t("mUJo")({name:"telefone"},vr,!1,function(e){t("8QOk")},"data-v-5b52481c",null).exports,meta:{name:"telefone",title:"Nossos Telefones",titleIcon:["fas","phone"]}}],Ur={ai:ng,chat:rr,email:Qr,customer:hr,telefone:{namespaced:!0,state:{},getters:{},mutations:{},actions:{}}},Rr={methods:{enterLink:function(){return this.$sdk.Chat.enqueued?"/chat/queue":this.$sdk.Chat.talking||this.$sdk.ChatBot.Authentication.authenticated?"/chat/room":"/ai"}}},Nr={name:"avatar",mixins:[Rr,Lg]},Yr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"central-avatar",class:{"-isSafari":e.isSafari}},[t("v-button",{staticClass:"action",attrs:{shadow:!0},on:{click:function(n){e.$router.replace(e.enterLink())}}},[e._v(e._s(e.$t("Precisa de Ajuda?")))])],1)},staticRenderFns:[]};var Hr={name:"avatar-icon",mixins:[Rr]},fr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"central-avatar"},[t("v-button",{staticClass:"action",attrs:{shadow:!0,icon:["far","comment"],onlyIcon:!0,size:"large"},on:{click:function(n){e.$router.replace(e.enterLink())}}})],1)},staticRenderFns:[]};var xr={name:"avatar",mixins:[Rr]},Tr={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"central-avatar"},[t("v-button",{staticClass:"action",attrs:{shadow:!0,icon:["far","comment"]},on:{click:function(n){e.$router.replace(e.enterLink())}}},[e._v(e._s(e.$t("Precisa de Ajuda?")))])],1)},staticRenderFns:[]};var Jr={name:"avatar",computed:{avatarComponent:function(){return{text:"avatar-text",icon:"avatar-icon","text-icon":"avatar-text-icon"}[u.isMobile?"icon":u.avatar.type]||null}},components:{avatarText:t("mUJo")(Nr,Yr,!1,function(e){t("oB5Z")},"data-v-6cb0b2f0",null).exports,avatarIcon:t("mUJo")(Hr,fr,!1,function(e){t("97s3")},"data-v-5d1c15ea",null).exports,avatarTextIcon:t("mUJo")(xr,Tr,!1,function(e){t("8GWC")},"data-v-0d8eb041",null).exports}},Sr={render:function(){var e=this.$createElement;return(this._self._c||e)(this.avatarComponent,this._g(this._b({tag:"component"},"component",this.$attrs,!1),this.$listeners))},staticRenderFns:[]},kr=[{path:"/avatar",component:t("mUJo")(Jr,Sr,!1,null,null,null).exports,meta:{name:"avatar",layout:{empty:!0,fluid:!0}}}],Er=[].concat(RI()(Pc),RI()(KI),RI()(Gr),RI()(kr),RI()(Vr),RI()(Wr)),wr={customer:pr,chat:ig};g.default.use(Nc);var Or=new Nc({routes:Er}),Dr=function(e){Object.defineProperty(e,"$sdk",{get:function(){return J}})},Lr=function e(n,t){if(!e._vm)throw"Vm not defined";return n(e._vm,t)},zr=Lr;Lr.install=function(e){e.mixin({beforeCreate:function(){this.$options.dispatcher?(this._dispatcherRoot=this,this._dispatcher=this.$options.dispatcher,this._dispatcher._vm||(this._dispatcher._vm=this._dispatcherRoot)):this._dispatcherRoot=this.$parent&&this.$parent._dispatcherRoot||this}}),Object.defineProperty(e.prototype,"$dispatcher",{get:function(){return this._dispatcherRoot._dispatcher}})},g.default.use(zr);var jr=zr,_r=[Dr,function(e){Object.defineProperty(e,"$dispatcher",{get:function(){return jr}})}];g.default.use(F.a);var Kr=new F.a.Store({modules:Ur,plugins:_r}),Mr=t("rkdX"),Pr=t.n(Mr),qr=t("afBD"),$r=t.n(qr),eo=(t("eZEL"),[]),no={"change-route":function(e,n){return e.$router.replace(n)},"set-form":function(e,n,t){return e.$store.commit("customer/SET_FORM_FIELD",{field:n,value:t})},"submit-question":function(e,n){return e.$store.commit("ai/SET_QUERY",n),e.$store.dispatch("ai/search",n)},"set-locale":function(e,n){e.$root.locale=n,e.$validator.localize(n)}};window.iFrameResizer={widthCalculationMethod:"taggedElement",heightCalculationMethod:"taggedElement",onReady:function(){window.parentIFrame.getId();eo.forEach(function(e){var n;return(n=window.parentIFrame).sendMessage.apply(n,RI()(e))})},onMessage:function(e){var n=e.split(":");if("eaction"===n[0]){var t=n[1];no[t]&&no[t].apply(no,[window.iFrameResizer.$vue].concat(RI()(n.slice(2))))}}};var to=function(){function e(){Pr()(this,e)}return $r()(e,[{key:"sendMessage",value:function(){for(var e,n=arguments.length,t=Array(n),a=0;a",data:function(){return{locale:"pt_BR"}}}))},NLsH:function(e,n,t){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},NRj4:function(e,n){n.f={}.propertyIsEnumerable},NXnK:function(e,n){e.exports={avatarMobileHeight:"70px",avatarMobileWidth:"70px"}},Ngun:function(e,n){},Nlbk:function(e,n,t){"use strict";t("P7HG");var a,i=(a=t("vytY"))&&a.__esModule?a:{default:a};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},NpQ8:function(e,n,t){var a=t("zakI"),i=t("HNVq").f,l={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return c&&"[object Window]"==l.call(e)?function(e){try{return i(e)}catch(e){return c.slice()}}(e):i(a(e))}},O0lf:function(e,n,t){"use strict";var a=t("Vobs"),i=t("tMyS")(1);a(a.P+a.F*!t("TiCE")([].map,!0),"Array",{map:function(e){return i(this,e,arguments[1])}})},O5S5:function(e,n,t){var a=t("6zZR")("keys"),i=t("XQtG");e.exports=function(e){return a[e]||(a[e]=i(e))}},OI80:function(e,n,t){var a=t("Vobs");a(a.S,"Object",{is:t("wc3+")})},OLJb:function(e,n){},OWmJ:function(e,n,t){"use strict";var a=t("Vobs"),i=t("fXgB");a(a.P+a.F*!t("TiCE")([].reduce,!0),"Array",{reduce:function(e){return i(this,e,arguments.length,arguments[1],!1)}})},OaTR:function(e,n,t){var a=t("Vobs"),i=t("BI7s"),l=t("3V0R"),c=/"/g,g=function(e,n,t,a){var i=String(l(e)),g="<"+n;return""!==t&&(g+=" "+t+'="'+String(a).replace(c,""")+'"'),g+">"+i+""+n+">"};e.exports=function(e,n){var t={};t[e]=n(g),a(a.P+a.F*i(function(){var n=""[e]('"');return n!==n.toLowerCase()||n.split('"').length>3}),"String",t)}},OcUk:function(e,n,t){t("4db7"),t("+Rib"),e.exports=t("b5sM").f("iterator")},OhlP:function(e,n,t){"use strict";var a=t("zIVT");e.exports=a.isStandardBrowserEnv()?{write:function(e,n,t,i,l,c){var g=[];g.push(e+"="+encodeURIComponent(n)),a.isNumber(t)&&g.push("expires="+new Date(t).toGMTString()),a.isString(i)&&g.push("path="+i),a.isString(l)&&g.push("domain="+l),!0===c&&g.push("secure"),document.cookie=g.join("; ")},read:function(e){var n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},Ot1h:function(e,n,t){t("059N"),e.exports=t("WsAY").Object.values},"P/Mg":function(e,n,t){var a=t("Vobs");a(a.S,"Number",{isNaN:function(e){return e!=e}})},P7HG:function(e,n,t){"use strict";t("nA7w"),t("5KUS"),t("xHOo"),t("twe5"),t("2sfl"),t("AxHl"),t("lYME"),t("+PtA"),t("Pnj1"),t("6cR/"),t("0D7Z"),t("Rzz8"),t("oZhM"),t("VuXv")},PECj:function(e,n){e.exports=function(e,n){return{value:n,done:!!e}}},"PXK+":function(e,n,t){"use strict";var a=t("Vobs"),i=t("tMyS")(2);a(a.P+a.F*!t("TiCE")([].filter,!0),"Array",{filter:function(e){return i(this,e,arguments[1])}})},PbFk:function(e,n){},Pm3s:function(e,n){e.exports="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},PmIB:function(e,n,t){"use strict";var a=t("Vobs"),i=t("0KLz"),l=t("6dpx"),c="".endsWith;a(a.P+a.F*t("Z7lT")("endsWith"),"String",{endsWith:function(e){var n=l(this,e,"endsWith"),t=arguments.length>1?arguments[1]:void 0,a=i(n.length),g=void 0===t?a:Math.min(i(t),a),I=String(e);return c?c.call(n,I,g):n.slice(g-I.length,g)===I}})},Pnj1:function(e,n,t){t("ovdg"),e.exports=t("6DcE").Object.getOwnPropertyDescriptors},QI3t:function(e,n,t){"use strict";var a=t("SZ/P"),i=t("WsAY"),l=t("W9uE"),c=t("nuYf"),g=t("knjp");a(a.P+a.R,"Promise",{finally:function(e){var n=c(this,i.Promise||l.Promise),t="function"==typeof e;return this.then(t?function(t){return g(n,e()).then(function(){return t})}:e,t?function(t){return g(n,e()).then(function(){throw t})}:e)}})},QKlW:function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},QXjR:function(e,n,t){"use strict";var a=t("2XMZ"),i=t("tPLG"),l=t("0KLz");e.exports=[].copyWithin||function(e,n){var t=a(this),c=l(t.length),g=i(e,c),I=i(n,c),r=arguments.length>2?arguments[2]:void 0,o=Math.min((void 0===r?c:i(r,c))-I,c-g),d=1;for(I0;)I in t?t[g]=t[I]:delete t[g],g+=d,I+=d;return t}},Qj6T:function(e,n,t){"use strict";var a=t("zIVT");e.exports=function(e,n){n=n||{};var t={},i=["url","method","data"],l=["headers","auth","proxy","params"],c=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],g=["validateStatus"];function I(e,n){return a.isPlainObject(e)&&a.isPlainObject(n)?a.merge(e,n):a.isPlainObject(n)?a.merge({},n):a.isArray(n)?n.slice():n}function r(i){a.isUndefined(n[i])?a.isUndefined(e[i])||(t[i]=I(void 0,e[i])):t[i]=I(e[i],n[i])}a.forEach(i,function(e){a.isUndefined(n[e])||(t[e]=I(void 0,n[e]))}),a.forEach(l,r),a.forEach(c,function(i){a.isUndefined(n[i])?a.isUndefined(e[i])||(t[i]=I(void 0,e[i])):t[i]=I(void 0,n[i])}),a.forEach(g,function(a){a in n?t[a]=I(e[a],n[a]):a in e&&(t[a]=I(void 0,e[a]))});var o=i.concat(l).concat(c).concat(g),d=Object.keys(e).concat(Object.keys(n)).filter(function(e){return-1===o.indexOf(e)});return a.forEach(d,r),t}},QtM0:function(e,n,t){"use strict";var a=t("W9uE"),i=t("DVK/"),l=t("V5XO"),c=t("SZ/P"),g=t("36xL"),I=t("UGBX").KEY,r=t("gHxa"),o=t("6zZR"),d=t("fL6e"),u=t("XQtG"),s=t("Imef"),b=t("b5sM"),C=t("VA2M"),B=t("HuhR"),A=t("t4Wa"),m=t("ToFw"),G=t("GJ5T"),Q=t("vNUB"),p=t("buEK"),Z=t("scWE"),F=t("Te4x"),h=t("9F6d"),X=t("YxkS"),y=t("rLEW"),W=t("rXIM"),v=t("qQMF"),V=t("WFAk"),U=y.f,R=v.f,N=X.f,Y=a.Symbol,H=a.JSON,f=H&&H.stringify,x=s("_hidden"),T=s("toPrimitive"),J={}.propertyIsEnumerable,S=o("symbol-registry"),k=o("symbols"),E=o("op-symbols"),w=Object.prototype,O="function"==typeof Y&&!!W.f,D=a.QObject,L=!D||!D.prototype||!D.prototype.findChild,z=l&&r(function(){return 7!=h(R({},"a",{get:function(){return R(this,"a",{value:7}).a}})).a})?function(e,n,t){var a=U(w,n);a&&delete w[n],R(e,n,t),a&&e!==w&&R(w,n,a)}:R,j=function(e){var n=k[e]=h(Y.prototype);return n._k=e,n},_=O&&"symbol"==typeof Y.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof Y},K=function(e,n,t){return e===w&&K(E,n,t),m(e),n=Z(n,!0),m(t),i(k,n)?(t.enumerable?(i(e,x)&&e[x][n]&&(e[x][n]=!1),t=h(t,{enumerable:F(0,!1)})):(i(e,x)||R(e,x,F(1,{})),e[x][n]=!0),z(e,n,t)):R(e,n,t)},M=function(e,n){m(e);for(var t,a=B(n=p(n)),i=0,l=a.length;l>i;)K(e,t=a[i++],n[t]);return e},P=function(e){var n=J.call(this,e=Z(e,!0));return!(this===w&&i(k,e)&&!i(E,e))&&(!(n||!i(this,e)||!i(k,e)||i(this,x)&&this[x][e])||n)},q=function(e,n){if(e=p(e),n=Z(n,!0),e!==w||!i(k,n)||i(E,n)){var t=U(e,n);return!t||!i(k,n)||i(e,x)&&e[x][n]||(t.enumerable=!0),t}},$=function(e){for(var n,t=N(p(e)),a=[],l=0;t.length>l;)i(k,n=t[l++])||n==x||n==I||a.push(n);return a},ee=function(e){for(var n,t=e===w,a=N(t?E:p(e)),l=[],c=0;a.length>c;)!i(k,n=a[c++])||t&&!i(w,n)||l.push(k[n]);return l};O||(g((Y=function(){if(this instanceof Y)throw TypeError("Symbol is not a constructor!");var e=u(arguments.length>0?arguments[0]:void 0),n=function(t){this===w&&n.call(E,t),i(this,x)&&i(this[x],e)&&(this[x][e]=!1),z(this,e,F(1,t))};return l&&L&&z(w,e,{configurable:!0,set:n}),j(e)}).prototype,"toString",function(){return this._k}),y.f=q,v.f=K,t("Jh2P").f=X.f=$,t("hOZK").f=P,W.f=ee,l&&!t("q9/b")&&g(w,"propertyIsEnumerable",P,!0),b.f=function(e){return j(s(e))}),c(c.G+c.W+c.F*!O,{Symbol:Y});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ne.length>te;)s(ne[te++]);for(var ae=V(s.store),ie=0;ae.length>ie;)C(ae[ie++]);c(c.S+c.F*!O,"Symbol",{for:function(e){return i(S,e+="")?S[e]:S[e]=Y(e)},keyFor:function(e){if(!_(e))throw TypeError(e+" is not a symbol!");for(var n in S)if(S[n]===e)return n},useSetter:function(){L=!0},useSimple:function(){L=!1}}),c(c.S+c.F*!O,"Object",{create:function(e,n){return void 0===n?h(e):M(h(e),n)},defineProperty:K,defineProperties:M,getOwnPropertyDescriptor:q,getOwnPropertyNames:$,getOwnPropertySymbols:ee});var le=r(function(){W.f(1)});c(c.S+c.F*le,"Object",{getOwnPropertySymbols:function(e){return W.f(Q(e))}}),H&&c(c.S+c.F*(!O||r(function(){var e=Y();return"[null]"!=f([e])||"{}"!=f({a:e})||"{}"!=f(Object(e))})),"JSON",{stringify:function(e){for(var n,t,a=[e],i=1;arguments.length>i;)a.push(arguments[i++]);if(t=n=a[1],(G(n)||void 0!==e)&&!_(e))return A(n)||(n=function(e,n){if("function"==typeof t&&(n=t.call(this,e,n)),!_(n))return n}),a[1]=n,f.apply(H,a)}}),Y.prototype[T]||t("KktU")(Y.prototype,T,Y.prototype.valueOf),d(Y,"Symbol"),d(Math,"Math",!0),d(a.JSON,"JSON",!0)},Qz2Q:function(e,n){e.exports=function(e,n,t,a){if(!(e instanceof n)||void 0!==a&&a in e)throw TypeError(t+": incorrect invocation!");return e}},R9iJ:function(e,n){},RECM:function(e,n,t){"use strict";t("OaTR")("fontcolor",function(e){return function(n){return e(this,"font","color",n)}})},RG8K:function(e,n,t){var a=t("1087");e.exports=function(e,n,t,i){try{return i?n(a(t)[0],t[1]):n(t)}catch(n){var l=e.return;throw void 0!==l&&a(l.call(e)),n}}},RIKd:function(e,n,t){"use strict";var a=t("Vobs"),i=t("m0x4"),l=t("KrKR"),c=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(l);a(a.P+a.F*c,"String",{padEnd:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},RS1v:function(e,n,t){"use strict";var a=t("zIVT");function i(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,n,t){if(!n)return e;var l;if(t)l=t(n);else if(a.isURLSearchParams(n))l=n.toString();else{var c=[];a.forEach(n,function(e,n){null!==e&&void 0!==e&&(a.isArray(e)?n+="[]":e=[e],a.forEach(e,function(e){a.isDate(e)?e=e.toISOString():a.isObject(e)&&(e=JSON.stringify(e)),c.push(i(n)+"="+i(e))}))}),l=c.join("&")}if(l){var g=e.indexOf("#");-1!==g&&(e=e.slice(0,g)),e+=(-1===e.indexOf("?")?"?":"&")+l}return e}},RlDD:function(e,n,t){"use strict";function a(e){this.message=e}a.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},a.prototype.__CANCEL__=!0,e.exports=a},RpZ9:function(e,n,t){var a=t("2XMZ"),i=t("+huX");t("gG9K")("keys",function(){return function(e){return i(a(e))}})},RtH9:function(e,n,t){"use strict";t("OaTR")("blink",function(e){return function(){return e(this,"blink","","")}})},Rzz8:function(e,n,t){"use strict";t("M+wl"),t("q6pY"),e.exports=t("6DcE").Promise.finally},S072:function(e,n,t){t("jVdc")&&"g"!=/./g.flags&&t("gGgn").f(RegExp.prototype,"flags",{configurable:!0,get:t("3BaN")})},S47x:function(e,n,t){var a=t("V5XO"),i=t("WFAk"),l=t("buEK"),c=t("hOZK").f;e.exports=function(e){return function(n){for(var t,g=l(n),I=i(g),r=I.length,o=0,d=[];r>o;)t=I[o++],a&&!c.call(g,t)||d.push(e?[t,g[t]]:g[t]);return d}}},S7GM:function(e,n,t){var a=t("/2t/");e.exports=function(e,n){if(!a(e))return e;var t,i;if(n&&"function"==typeof(t=e.toString)&&!a(i=t.call(e)))return i;if("function"==typeof(t=e.valueOf)&&!a(i=t.call(e)))return i;if(!n&&"function"==typeof(t=e.toString)&&!a(i=t.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},SAmk:function(e,n,t){e.exports=!t("V5XO")&&!t("gHxa")(function(){return 7!=Object.defineProperty(t("2hHA")("div"),"a",{get:function(){return 7}}).a})},SR8z:function(e,n){},"SZ/P":function(e,n,t){var a=t("W9uE"),i=t("WsAY"),l=t("yhwo"),c=t("KktU"),g=t("DVK/"),I=function(e,n,t){var r,o,d,u=e&I.F,s=e&I.G,b=e&I.S,C=e&I.P,B=e&I.B,A=e&I.W,m=s?i:i[n]||(i[n]={}),G=m.prototype,Q=s?a:b?a[n]:(a[n]||{}).prototype;for(r in s&&(t=n),t)(o=!u&&Q&&void 0!==Q[r])&&g(m,r)||(d=o?Q[r]:t[r],m[r]=s&&"function"!=typeof Q[r]?t[r]:B&&o?l(d,a):A&&Q[r]==d?function(e){var n=function(n,t,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(n);case 2:return new e(n,t)}return new e(n,t,a)}return e.apply(this,arguments)};return n.prototype=e.prototype,n}(d):C&&"function"==typeof d?l(Function.call,d):d,C&&((m.virtual||(m.virtual={}))[r]=d,e&I.R&&G&&!G[r]&&c(G,r,d)))};I.F=1,I.G=2,I.S=4,I.P=8,I.B=16,I.W=32,I.U=64,I.R=128,e.exports=I},Siee:function(e,n,t){e.exports={default:t("UUO9"),__esModule:!0}},T2kP:function(e,n,t){"use strict";(function(n){var a=t("zIVT"),i=t("TOXd"),l=t("obgR"),c={"Content-Type":"application/x-www-form-urlencoded"};function g(e,n){!a.isUndefined(e)&&a.isUndefined(e["Content-Type"])&&(e["Content-Type"]=n)}var I,r={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:("undefined"!=typeof XMLHttpRequest?I=t("7LYE"):void 0!==n&&"[object process]"===Object.prototype.toString.call(n)&&(I=t("7LYE")),I),transformRequest:[function(e,n){return i(n,"Accept"),i(n,"Content-Type"),a.isFormData(e)||a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)?e:a.isArrayBufferView(e)?e.buffer:a.isURLSearchParams(e)?(g(n,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):a.isObject(e)||n&&"application/json"===n["Content-Type"]?(g(n,"application/json"),function(e,n,t){if(a.isString(e))try{return(n||JSON.parse)(e),a.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(t||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var n=this.transitional,t=n&&n.silentJSONParsing,i=n&&n.forcedJSONParsing,c=!t&&"json"===this.responseType;if(c||i&&a.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(c){if("SyntaxError"===e.name)throw l(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};r.headers={common:{Accept:"application/json, text/plain, */*"}},a.forEach(["delete","get","head"],function(e){r.headers[e]={}}),a.forEach(["post","put","patch"],function(e){r.headers[e]=a.merge(c)}),e.exports=r}).call(n,t("rH1J"))},TBbS:function(e,n){},TOXd:function(e,n,t){"use strict";var a=t("zIVT");e.exports=function(e,n){a.forEach(e,function(t,a){a!==n&&a.toUpperCase()===n.toUpperCase()&&(e[n]=t,delete e[a])})}},TVdo:function(e,n,t){var a=t("/2t/"),i=t("JI5q"),l=t("I5XL")("species");e.exports=function(e){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)||(n=void 0),a(n)&&null===(n=n[l])&&(n=void 0)),void 0===n?Array:n}},Te4x:function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},TiCE:function(e,n,t){"use strict";var a=t("BI7s");e.exports=function(e,n){return!!e&&a(function(){n?e.call(null,function(){},1):e.call(null)})}},ToFw:function(e,n,t){var a=t("GJ5T");e.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},TqUy:function(e,n,t){"use strict";var a=t("Vobs"),i=t("QKlW"),l=t("2XMZ"),c=t("BI7s"),g=[].sort,I=[1,2,3];a(a.P+a.F*(c(function(){I.sort(void 0)})||!c(function(){I.sort(null)})||!t("TiCE")(g)),"Array",{sort:function(e){return void 0===e?g.call(l(this)):g.call(l(this),i(e))}})},TuHS:function(e,n,t){var a=t("H5R/"),i=t("I5XL")("iterator"),l=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||l[i]===e)}},"U/D3":function(e,n,t){var a=t("8QiI").parseInt,i=t("JIX2").trim,l=t("Pm3s"),c=/^[-+]?0[xX]/;e.exports=8!==a(l+"08")||22!==a(l+"0x16")?function(e,n){var t=i(String(e),3);return a(t,n>>>0||(c.test(t)?16:10))}:a},"U2+V":function(e,n,t){"use strict";var a=t("zIVT"),i=t("i7gz"),l=t("C9l1"),c=t("T2kP");function g(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return g(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,e.transformRequest),e.headers=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),a.forEach(["delete","get","head","post","put","patch","common"],function(n){delete e.headers[n]}),(e.adapter||c.adapter)(e).then(function(n){return g(e),n.data=i.call(e,n.data,n.headers,e.transformResponse),n},function(n){return l(n)||(g(e),n&&n.response&&(n.response.data=i.call(e,n.response.data,n.response.headers,e.transformResponse))),Promise.reject(n)})}},U3MC:function(e,n,t){"use strict";var a=t("Vobs"),i=t("0KLz"),l=t("6dpx"),c="".startsWith;a(a.P+a.F*t("Z7lT")("startsWith"),"String",{startsWith:function(e){var n=l(this,e,"startsWith"),t=i(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),a=String(e);return c?c.call(n,a,t):n.slice(t,t+a.length)===a}})},UGBX:function(e,n,t){var a=t("XQtG")("meta"),i=t("GJ5T"),l=t("DVK/"),c=t("qQMF").f,g=0,I=Object.isExtensible||function(){return!0},r=!t("gHxa")(function(){return I(Object.preventExtensions({}))}),o=function(e){c(e,a,{value:{i:"O"+ ++g,w:{}}})},d=e.exports={KEY:a,NEED:!1,fastKey:function(e,n){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!l(e,a)){if(!I(e))return"F";if(!n)return"E";o(e)}return e[a].i},getWeak:function(e,n){if(!l(e,a)){if(!I(e))return!0;if(!n)return!1;o(e)}return e[a].w},onFreeze:function(e){return r&&d.NEED&&I(e)&&!l(e,a)&&o(e),e}}},URTo:function(e,n,t){"use strict";var a=t("Vobs"),i=t("g07e");a(a.S+a.F*t("BI7s")(function(){function e(){}return!(Array.of.call(e)instanceof e)}),"Array",{of:function(){for(var e=0,n=arguments.length,t=new("function"==typeof this?this:Array)(n);n>e;)i(t,e,arguments[e++]);return t.length=n,t}})},UUO9:function(e,n,t){t("+Rib"),t("4db7"),e.exports=t("fd6J")},UgUY:function(e,n,t){"use strict";var a=t("qQMF"),i=t("Te4x");e.exports=function(e,n,t){n in e?a.f(e,n,i(0,t)):e[n]=t}},Ui7t:function(e,n,t){"use strict";var a=t("Vobs"),i=t("HDWL"),l=t("3+Dr"),c=t("tPLG"),g=t("0KLz"),I=[].slice;a(a.P+a.F*t("BI7s")(function(){i&&I.call(i)}),"Array",{slice:function(e,n){var t=g(this.length),a=l(this);if(n=void 0===n?t:n,"Array"==a)return I.call(this,e,n);for(var i=c(e,t),r=c(n,t),o=g(r-i),d=new Array(o),u=0;u-1}}},computed:{sizeClass:function(){return"-size"+(this.size.charAt(0).toUpperCase()+this.size.substr(1))}}},c=["normal","left","right"],g={props:{position:{required:!1,default:"normal",type:String,validator:function(e){return c.indexOf(e)>-1}}},computed:{positionClass:function(){return"-position"+(this.position.charAt(0).toUpperCase()+this.position.substr(1))}}},I={name:"v-button",mixins:[a.a,l,g],props:{link:{required:!1,default:!1,type:Boolean},icon:{required:!1,default:null,type:Array},pulseIcon:{required:!1,default:!1,type:Boolean},onlyIcon:{required:!1,default:null,type:Boolean},disabled:{required:!1,default:!1,type:Boolean},shadow:{required:!1,default:!1,type:Boolean},textLower:{required:!1,default:!1,type:Boolean}},computed:{linkClass:function(){return this.link?"-link":""},disabledClass:function(){return this.disabled?"-disabled":""},shadowClass:function(){return this.shadow?"-shadow":""},textLowerClass:function(){return this.textLower?"-textLower":""},onlyIconClass:function(){return this.onlyIcon?"-onlyIcon":""}}},r={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("button",e._g(e._b({staticClass:"v-button",class:[e.layoutClass,e.linkClass,e.sizeClass,e.positionClass,e.disabledClass,e.shadowClass,e.textLowerClass,e.onlyIconClass],attrs:{disabled:e.disabled}},"button",e.$attrs,!1),e.$listeners),[e.icon?t("span",{staticClass:"icon"},[t("font-awesome-icon",{attrs:{icon:e.icon,pulse:e.pulseIcon}})],1):e._e(),e._v(" "),t("span",{staticClass:"title"},[e._t("default")],2)])},staticRenderFns:[]};var o=t("mUJo")(I,r,!1,function(e){t("dOh6")},"data-v-c5c28f50",null);n.default=o.exports},Usns:function(e,n){},V5XO:function(e,n,t){e.exports=!t("gHxa")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},V5se:function(e,n){},VA2M:function(e,n,t){var a=t("W9uE"),i=t("WsAY"),l=t("q9/b"),c=t("b5sM"),g=t("qQMF").f;e.exports=function(e){var n=i.Symbol||(i.Symbol=l?{}:a.Symbol||{});"_"==e.charAt(0)||e in n||g(n,e,{value:c.f(e)})}},"VB/R":function(e,n){},VK5J:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={name:"v-checkbox",mixins:[t("x9Du").a],props:{placeholder:{required:!1,default:null,type:String}}},i={render:function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"v-checkbox"},[t("label",{staticClass:"label"},[t("span",{staticClass:"title"},[e._v(e._s(e.placeholder))]),e._v(" "),t("input",e._g(e._b({staticClass:"field",attrs:{type:"checkbox"},domProps:{value:e.value},on:{input:e.updateValue}},"input",e.$attrs,!1),e.$listeners)),e._v(" "),t("span",{staticClass:"indicator"})])])},staticRenderFns:[]};var l=t("mUJo")(a,i,!1,function(e){t("arBK")},"data-v-d6ead27c",null);n.default=l.exports},VdYW:function(e,n,t){var a=t("qQMF"),i=t("ToFw"),l=t("WFAk");e.exports=t("V5XO")?Object.defineProperties:function(e,n){i(e);for(var t,c=l(n),g=c.length,I=0;g>I;)a.f(e,t=c[I++],n[t]);return e}},VoRx:function(e,n){},Vobs:function(e,n,t){var a=t("8QiI"),i=t("6DcE"),l=t("nCfi"),c=t("jDrK"),g=t("W8bf"),I=function(e,n,t){var r,o,d,u,s=e&I.F,b=e&I.G,C=e&I.S,B=e&I.P,A=e&I.B,m=b?a:C?a[n]||(a[n]={}):(a[n]||{}).prototype,G=b?i:i[n]||(i[n]={}),Q=G.prototype||(G.prototype={});for(r in b&&(t=n),t)d=((o=!s&&m&&void 0!==m[r])?m:t)[r],u=A&&o?g(d,a):B&&"function"==typeof d?g(Function.call,d):d,m&&c(m,r,d,e&I.U),G[r]!=d&&l(G,r,u),B&&Q[r]!=d&&(Q[r]=d)};a.core=i,I.F=1,I.G=2,I.S=4,I.P=8,I.B=16,I.W=32,I.U=64,I.R=128,e.exports=I},Vod2:function(e,n,t){t("1sXG")("Uint16",2,function(e){return function(n,t,a){return e(this,n,t,a)}})},VqD6:function(e,n,t){"use strict";var a=t("Vobs"),i=t("zl/6"),l=t("78hF"),c=t("1087"),g=t("tPLG"),I=t("0KLz"),r=t("/2t/"),o=t("8QiI").ArrayBuffer,d=t("othv"),u=l.ArrayBuffer,s=l.DataView,b=i.ABV&&o.isView,C=u.prototype.slice,B=i.VIEW;a(a.G+a.W+a.F*(o!==u),{ArrayBuffer:u}),a(a.S+a.F*!i.CONSTR,"ArrayBuffer",{isView:function(e){return b&&b(e)||r(e)&&B in e}}),a(a.P+a.U+a.F*t("BI7s")(function(){return!new u(2).slice(1,void 0).byteLength}),"ArrayBuffer",{slice:function(e,n){if(void 0!==C&&void 0===n)return C.call(c(this),e);for(var t=c(this).byteLength,a=g(e,t),i=g(void 0===n?t:n,t),l=new(d(this,u))(I(i-a)),r=new s(this),o=new s(l),b=0;a=0;--l){var c=this.tryEntries[l],g=c.completion;if("root"===c.tryLoc)return i("end");if(c.tryLoc<=this.prev){var I=a.call(c,"catchLoc"),r=a.call(c,"finallyLoc");if(I&&r){if(this.prev=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),v(t),B}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var a=t.completion;if("throw"===a.type){var i=a.arg;v(t)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,a){return this.delegate={iterator:U(e),resultName:t,nextLoc:a},"next"===this.method&&(this.arg=n),B}},e}(e.exports);try{regeneratorRuntime=a}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=a:Function("r","regeneratorRuntime = r")(a)}},VwM8:function(e,n){},VxVc:function(e,n,t){var a=t("Vobs");a(a.S,"Reflect",{has:function(e,n){return n in e}})},W8bf:function(e,n,t){var a=t("QKlW");e.exports=function(e,n,t){if(a(e),void 0===n)return e;switch(t){case 1:return function(t){return e.call(n,t)};case 2:return function(t,a){return e.call(n,t,a)};case 3:return function(t,a,i){return e.call(n,t,a,i)}}return function(){return e.apply(n,arguments)}}},W9uE:function(e,n){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},WFAk:function(e,n,t){var a=t("Fmkg"),i=t("9rUb");e.exports=Object.keys||function(e){return a(e,i)}},WN4F:function(e,n,t){"use strict";var a=t("4j93")(!0);t("MKcl")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,n=this._t,t=this._i;return t>=n.length?{value:void 0,done:!0}:(e=a(n,t),this._i+=e.length,{value:e,done:!1})})},WZRw:function(e,n,t){"use strict";var a=t("W8bf"),i=t("Vobs"),l=t("2XMZ"),c=t("RG8K"),g=t("TuHS"),I=t("0KLz"),r=t("g07e"),o=t("um4Z");i(i.S+i.F*!t("zP7t")(function(e){Array.from(e)}),"Array",{from:function(e){var n,t,i,d,u=l(e),s="function"==typeof this?this:Array,b=arguments.length,C=b>1?arguments[1]:void 0,B=void 0!==C,A=0,m=o(u);if(B&&(C=a(C,b>2?arguments[2]:void 0,2)),void 0==m||s==Array&&g(m))for(t=new s(n=I(u.length));n>A;A++)r(t,A,B?C(u[A],A):u[A]);else for(d=m.call(u),t=new s;!(i=d.next()).done;A++)r(t,A,B?c(d,C,[i.value,A],!0):i.value);return t.length=A,t}})},WhAl:function(e,n){},WhIp:function(e,n,t){t("3Ygt"),t("4db7"),t("+Rib"),t("oEbX"),t("QI3t"),t("ZRWD"),e.exports=t("WsAY").Promise},WsAY:function(e,n){var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},WxTP:function(e,n,t){"use strict";n.__esModule=!0;var a=c(t("DiG7")),i=c(t("LGng")),l="function"==typeof i.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof i.default&&e.constructor===i.default&&e!==i.default.prototype?"symbol":typeof e};function c(e){return e&&e.__esModule?e:{default:e}}n.default="function"==typeof i.default&&"symbol"===l(a.default)?function(e){return void 0===e?"undefined":l(e)}:function(e){return e&&"function"==typeof i.default&&e.constructor===i.default&&e!==i.default.prototype?"symbol":void 0===e?"undefined":l(e)}},X2Nb:function(e,n){},X3LC:function(e,n,t){"use strict";t("OaTR")("sup",function(e){return function(){return e(this,"sup","","")}})},X7pO:function(e,n){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},X9e9:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){t.d(n,"EffectScope",function(){return ft}),t.d(n,"computed",function(){return un}),t.d(n,"customRef",function(){return tn}),t.d(n,"default",function(){return li}),t.d(n,"defineAsyncComponent",function(){return la}),t.d(n,"defineComponent",function(){return pa}),t.d(n,"del",function(){return Te}),t.d(n,"effectScope",function(){return xt}),t.d(n,"getCurrentInstance",function(){return se}),t.d(n,"getCurrentScope",function(){return Tt}),t.d(n,"h",function(){return wt}),t.d(n,"inject",function(){return Et}),t.d(n,"isProxy",function(){return De}),t.d(n,"isReactive",function(){return Ee}),t.d(n,"isReadonly",function(){return Oe}),t.d(n,"isRef",function(){return _e}),t.d(n,"isShallow",function(){return we}),t.d(n,"markRaw",function(){return ze}),t.d(n,"mergeDefaults",function(){return qn}),t.d(n,"nextTick",function(){return ta}),t.d(n,"onActivated",function(){return sa}),t.d(n,"onBeforeMount",function(){return ga}),t.d(n,"onBeforeUnmount",function(){return da}),t.d(n,"onBeforeUpdate",function(){return ra}),t.d(n,"onDeactivated",function(){return ba}),t.d(n,"onErrorCaptured",function(){return Ga}),t.d(n,"onMounted",function(){return Ia}),t.d(n,"onRenderTracked",function(){return Ba}),t.d(n,"onRenderTriggered",function(){return Aa}),t.d(n,"onScopeDispose",function(){return Jt}),t.d(n,"onServerPrefetch",function(){return Ca}),t.d(n,"onUnmounted",function(){return ua}),t.d(n,"onUpdated",function(){return oa}),t.d(n,"provide",function(){return St}),t.d(n,"proxyRefs",function(){return en}),t.d(n,"reactive",function(){return Je}),t.d(n,"readonly",function(){return In}),t.d(n,"ref",function(){return Ke}),t.d(n,"set",function(){return xe}),t.d(n,"shallowReactive",function(){return Se}),t.d(n,"shallowReadonly",function(){return dn}),t.d(n,"shallowRef",function(){return Me}),t.d(n,"toRaw",function(){return Le}),t.d(n,"toRef",function(){return ln}),t.d(n,"toRefs",function(){return an}),t.d(n,"triggerRef",function(){return qe}),t.d(n,"unref",function(){return $e}),t.d(n,"useAttrs",function(){return Kn}),t.d(n,"useCssModule",function(){return aa}),t.d(n,"useCssVars",function(){return ia}),t.d(n,"useListeners",function(){return Mn}),t.d(n,"useSlots",function(){return _n}),t.d(n,"version",function(){return Qa}),t.d(n,"watch",function(){return Yt}),t.d(n,"watchEffect",function(){return vt}),t.d(n,"watchPostEffect",function(){return Vt}),t.d(n,"watchSyncEffect",function(){return Ut});var a=Object.freeze({}),i=Array.isArray;function l(e){return void 0===e||null===e}function c(e){return void 0!==e&&null!==e}function g(e){return!0===e}function I(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function r(e){return"function"==typeof e}function o(e){return null!==e&&"object"==typeof e}var d=Object.prototype.toString;function u(e){return"[object Object]"===d.call(e)}function s(e){return"[object RegExp]"===d.call(e)}function b(e){var n=parseFloat(String(e));return n>=0&&Math.floor(n)===n&&isFinite(e)}function C(e){return c(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function B(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===d?JSON.stringify(e,null,2):String(e)}function A(e){var n=parseFloat(e);return isNaN(n)?e:n}function m(e,n){for(var t=Object.create(null),a=e.split(","),i=0;i-1)return e.splice(a,1)}}var Z=Object.prototype.hasOwnProperty;function F(e,n){return Z.call(e,n)}function h(e){var n=Object.create(null);return function(t){return n[t]||(n[t]=e(t))}}var X=/-(\w)/g,y=h(function(e){return e.replace(X,function(e,n){return n?n.toUpperCase():""})}),W=h(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),v=/\B([A-Z])/g,V=h(function(e){return e.replace(v,"-$1").toLowerCase()});var U=Function.prototype.bind?function(e,n){return e.bind(n)}:function(e,n){function t(t){var a=arguments.length;return a?a>1?e.apply(n,arguments):e.call(n,t):e.call(n)}return t._length=e.length,t};function R(e,n){n=n||0;for(var t=e.length-n,a=new Array(t);t--;)a[t]=e[t+n];return a}function N(e,n){for(var t in n)e[t]=n[t];return e}function Y(e){for(var n={},t=0;t0,ee=P&&P.indexOf("edge/")>0;P&&P.indexOf("android");var ne=P&&/iphone|ipad|ipod|ios/.test(P);P&&/chrome\/\d+/.test(P),P&&/phantomjs/.test(P);var te,ae=P&&P.match(/firefox\/(\d+)/),ie={}.watch,le=!1;if(M)try{var ce={};Object.defineProperty(ce,"passive",{get:function(){le=!0}}),window.addEventListener("test-passive",null,ce)}catch(e){}var ge=function(){return void 0===te&&(te=!M&&void 0!==e&&(e.process&&"server"===e.process.env.VUE_ENV)),te},Ie=M&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return"function"==typeof e&&/native code/.test(e.toString())}var oe,de="undefined"!=typeof Symbol&&re(Symbol)&&"undefined"!=typeof Reflect&&re(Reflect.ownKeys);oe="undefined"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ue=null;function se(){return ue&&{proxy:ue}}function be(e){void 0===e&&(e=null),e||ue&&ue._scope.off(),ue=e,e&&e._scope.on()}var Ce=function(){function e(e,n,t,a,i,l,c,g){this.tag=e,this.data=n,this.children=t,this.text=a,this.elm=i,this.ns=void 0,this.context=l,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=n&&n.key,this.componentOptions=c,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=g,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),Be=function(e){void 0===e&&(e="");var n=new Ce;return n.text=e,n.isComment=!0,n};function Ae(e){return new Ce(void 0,void 0,void 0,String(e))}function me(e){var n=new Ce(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return n.ns=e.ns,n.isStatic=e.isStatic,n.key=e.key,n.isComment=e.isComment,n.fnContext=e.fnContext,n.fnOptions=e.fnOptions,n.fnScopeId=e.fnScopeId,n.asyncMeta=e.asyncMeta,n.isCloned=!0,n}var Ge=0,Qe=[],pe=function(){for(var e=0;e0&&(Gn((o=e(o,"".concat(t||"","_").concat(r)))[0])&&Gn(u)&&(a[d]=Ae(u.text+o[0].text),o.shift()),a.push.apply(a,o)):I(o)?Gn(u)?a[d]=Ae(u.text+o):""!==o&&a.push(Ae(o)):Gn(o)&&Gn(u)?a[d]=Ae(u.text+o.text):(g(n._isVList)&&c(o.tag)&&l(o.key)&&c(t)&&(o.key="__vlist".concat(t,"_").concat(r,"__")),a.push(o)));return a}(e):void 0}function Gn(e){return c(e)&&c(e.text)&&!1===e.isComment}var Qn=1,pn=2;function Zn(e,n,t,a,d,u){return(i(t)||I(t))&&(d=a,a=t,t=void 0),g(u)&&(d=pn),function(e,n,t,a,I){if(c(t)&&c(t.__ob__))return Be();c(t)&&c(t.is)&&(n=t.is);if(!n)return Be();0;i(a)&&r(a[0])&&((t=t||{}).scopedSlots={default:a[0]},a.length=0);I===pn?a=mn(a):I===Qn&&(a=function(e){for(var n=0;n0,g=n?!!n.$stable:!c,I=n&&n.$key;if(n){if(n._normalized)return n._normalized;if(g&&i&&i!==a&&I===i.$key&&!c&&!i.$hasNormal)return i;for(var r in l={},n)n[r]&&"$"!==r[0]&&(l[r]=wn(e,t,r,n[r]))}else l={};for(var o in t)o in l||(l[o]=On(t,o));return n&&Object.isExtensible(n)&&(n._normalized=l),j(l,"$stable",g),j(l,"$key",I),j(l,"$hasNormal",c),l}function wn(e,n,t,a){var l=function(){var n=ue;be(e);var t=arguments.length?a.apply(null,arguments):a({}),l=(t=t&&"object"==typeof t&&!i(t)?[t]:mn(t))&&t[0];return be(n),t&&(!l||1===t.length&&l.isComment&&!kn(l))?void 0:t};return a.proxy&&Object.defineProperty(n,t,{get:l,enumerable:!0,configurable:!0}),l}function On(e,n){return function(){return e[n]}}function Dn(e){return{get attrs(){if(!e._attrsProxy){var n=e._attrsProxy={};j(n,"_v_attr_proxy",!0),Ln(n,e.$attrs,a,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||Ln(e._listenersProxy={},e.$listeners,a,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||jn(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:U(e.$emit,e),expose:function(n){n&&Object.keys(n).forEach(function(t){return nn(e,n,t)})}}}function Ln(e,n,t,a,i){var l=!1;for(var c in n)c in e?n[c]!==t[c]&&(l=!0):(l=!0,zn(e,c,a,i));for(var c in e)c in n||(l=!0,delete e[c]);return l}function zn(e,n,t,a){Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:function(){return t[a][n]}})}function jn(e,n){for(var t in n)e[t]=n[t];for(var t in e)t in n||delete e[t]}function _n(){return Pn().slots}function Kn(){return Pn().attrs}function Mn(){return Pn().listeners}function Pn(){var e=ue;return e._setupContext||(e._setupContext=Dn(e))}function qn(e,n){var t=i(e)?e.reduce(function(e,n){return e[n]={},e},{}):e;for(var a in n){var l=t[a];l?i(l)||r(l)?t[a]={type:l,default:n[a]}:l.default=n[a]:null===l&&(t[a]={default:n[a]})}return t}var $n,et=null;function nt(e,n){return(e.__esModule||de&&"Module"===e[Symbol.toStringTag])&&(e=e.default),o(e)?n.extend(e):e}function tt(e){if(i(e))for(var n=0;ndocument.createEvent("Event").timeStamp&&(Gt=function(){return Qt.now()})}var pt=function(e,n){if(e.post){if(!n.post)return 1}else if(n.post)return-1;return e.id-n.id};function Zt(){var e,n;for(mt=Gt(),Bt=!0,ut.sort(pt),At=0;AtAt&&ut[t].id>e.id;)t--;ut.splice(t+1,0,e)}else ut.push(e);Ct||(Ct=!0,ta(Zt))}}var ht="watcher",Xt="".concat(ht," callback"),yt="".concat(ht," getter"),Wt="".concat(ht," cleanup");function vt(e,n){return Ht(e,null,n)}function Vt(e,n){return Ht(e,null,{flush:"post"})}function Ut(e,n){return Ht(e,null,{flush:"sync"})}var Rt,Nt={};function Yt(e,n,t){return Ht(e,n,t)}function Ht(e,n,t){var l=void 0===t?a:t,c=l.immediate,g=l.deep,I=l.flush,o=void 0===I?"pre":I;l.onTrack,l.onTrigger;var d,u,s=ue,b=function(e,n,t){return void 0===t&&(t=null),Dt(e,null,t,s,n)},C=!1,B=!1;if(_e(e)?(d=function(){return e.value},C=we(e)):Ee(e)?(d=function(){return e.__ob__.dep.depend(),e},g=!0):i(e)?(B=!0,C=e.some(function(e){return Ee(e)||we(e)}),d=function(){return e.map(function(e){return _e(e)?e.value:Ee(e)?Fa(e):r(e)?b(e,yt):void 0})}):d=r(e)?n?function(){return b(e,yt)}:function(){if(!s||!s._isDestroyed)return u&&u(),b(e,ht,[m])}:H,n&&g){var A=d;d=function(){return Fa(A())}}var m=function(e){u=G.onStop=function(){b(e,Wt)}};if(ge())return m=H,n?c&&b(n,Xt,[d(),B?[]:void 0,m]):d(),H;var G=new Xa(ue,d,H,{lazy:!0});G.noRecurse=!n;var Q=B?[]:Nt;return G.run=function(){if(G.active)if(n){var e=G.get();(g||C||(B?e.some(function(e,n){return k(e,Q[n])}):k(e,Q)))&&(u&&u(),b(n,Xt,[e,Q===Nt?void 0:Q,m]),Q=e)}else G.get()},"sync"===o?G.update=G.run:"post"===o?(G.post=!0,G.update=function(){return Ft(G)}):G.update=function(){if(s&&s===ue&&!s._isMounted){var e=s._preWatchers||(s._preWatchers=[]);e.indexOf(G)<0&&e.push(G)}else Ft(G)},n?c?G.run():Q=G.get():"post"===o&&s?s.$once("hook:mounted",function(){return G.get()}):G.get(),function(){G.teardown()}}var ft=function(){function e(e){void 0===e&&(e=!1),this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Rt,!e&&Rt&&(this.index=(Rt.scopes||(Rt.scopes=[])).push(this)-1)}return e.prototype.run=function(e){if(this.active){var n=Rt;try{return Rt=this,e()}finally{Rt=n}}else 0},e.prototype.on=function(){Rt=this},e.prototype.off=function(){Rt=this.parent},e.prototype.stop=function(e){if(this.active){var n=void 0,t=void 0;for(n=0,t=this.effects.length;n1)return t&&r(n)?n.call(a):n}else 0}function wt(e,n,t){return Zn(ue,e,n,t,2,!0)}function Ot(e,n,t){he();try{if(n)for(var a=n;a=a.$parent;){var i=a.$options.errorCaptured;if(i)for(var l=0;l-1)if(l&&!F(i,"default"))c=!1;else if(""===c||c===V(e)){var I=ii(String,i.type);(I<0||g-1:"string"==typeof e?e.split(",").indexOf(n)>-1:!!s(e)&&e.test(n)}function ri(e,n){var t=e.cache,a=e.keys,i=e._vnode;for(var l in t){var c=t[l];if(c){var g=c.name;g&&!n(g)&&oi(t,l,a,i)}}}function oi(e,n,t,a){var i=e[n];!i||a&&i.tag===a.tag||i.componentInstance.$destroy(),e[n]=null,p(t,n)}!function(e){e.prototype._init=function(e){var n=this;n._uid=fa++,n._isVue=!0,n.__v_skip=!0,n._scope=new ft(!0),n._scope._vm=!0,e&&e._isComponent?function(e,n){var t=e.$options=Object.create(e.constructor.options),a=n._parentVnode;t.parent=n.parent,t._parentVnode=a;var i=a.componentOptions;t.propsData=i.propsData,t._parentListeners=i.listeners,t._renderChildren=i.children,t._componentTag=i.tag,n.render&&(t.render=n.render,t.staticRenderFns=n.staticRenderFns)}(n,e):n.$options=qa(xa(n.constructor),e||{},n),n._renderProxy=n,n._self=n,function(e){var n=e.$options,t=n.parent;if(t&&!n.abstract){for(;t.$options.abstract&&t.$parent;)t=t.$parent;t.$children.push(e)}e.$parent=t,e.$root=t?t.$root:e,e.$children=[],e.$refs={},e._provided=t?t._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(n),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var n=e.$options._parentListeners;n&&ct(e,n)}(n),function(e){e._vnode=null,e._staticTrees=null;var n=e.$options,t=e.$vnode=n._parentVnode,i=t&&t.context;e.$slots=Jn(n._renderChildren,i),e.$scopedSlots=t?En(e.$parent,t.data.scopedSlots,e.$slots):a,e._c=function(n,t,a,i){return Zn(e,n,t,a,i,!1)},e.$createElement=function(n,t,a,i){return Zn(e,n,t,a,i,!0)};var l=t&&t.data;fe(e,"$attrs",l&&l.attrs||a,null,!0),fe(e,"$listeners",n._parentListeners||a,null,!0)}(n),dt(n,"beforeCreate",void 0,!1),function(e){var n=Ha(e.$options.inject,e);n&&(Re(!1),Object.keys(n).forEach(function(t){fe(e,t,n[t])}),Re(!0))}(n),va(n),function(e){var n=e.$options.provide;if(n){var t=r(n)?n.call(e):n;if(!o(t))return;for(var a=kt(e),i=de?Reflect.ownKeys(t):Object.keys(t),l=0;l1?R(t):t;for(var a=R(arguments,1),i='event handler for "'.concat(e,'"'),l=0,c=t.length;lparseInt(this.max)&&oi(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)oi(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",function(n){ri(e,function(e){return Ii(n,e)})}),this.$watch("exclude",function(n){ri(e,function(e){return!Ii(n,e)})})},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,n=tt(e),t=n&&n.componentOptions;if(t){var a=gi(t),i=this.include,l=this.exclude;if(i&&(!a||!Ii(i,a))||l&&a&&Ii(l,a))return n;var c=this.cache,g=this.keys,I=null==n.key?t.Ctor.cid+(t.tag?"::".concat(t.tag):""):n.key;c[I]?(n.componentInstance=c[I].componentInstance,p(g,I),g.push(I)):(this.vnodeToCache=n,this.keyToCache=I),n.data.keepAlive=!0}return n||e&&e[0]}}};!function(e){var n={get:function(){return D}};Object.defineProperty(e,"config",n),e.util={warn:La,extend:N,mergeOptions:qa,defineReactive:fe},e.set=xe,e.delete=Te,e.nextTick=ta,e.observable=function(e){return He(e),e},e.options=Object.create(null),w.forEach(function(n){e.options[n+"s"]=Object.create(null)}),e.options._base=e,N(e.options.components,ui),function(e){e.use=function(e){var n=this._installedPlugins||(this._installedPlugins=[]);if(n.indexOf(e)>-1)return this;var t=R(arguments,1);return t.unshift(this),r(e.install)?e.install.apply(e,t):r(e)&&e.apply(null,t),n.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=qa(this.options,e),this}}(e),ci(e),function(e){w.forEach(function(n){e[n]=function(e,t){return t?("component"===n&&u(t)&&(t.name=t.name||e,t=this.options._base.extend(t)),"directive"===n&&r(t)&&(t={bind:t,update:t}),this.options[n+"s"][e]=t,t):this.options[n+"s"][e]}})}(e)}(li),Object.defineProperty(li.prototype,"$isServer",{get:ge}),Object.defineProperty(li.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(li,"FunctionalRenderContext",{value:Ta}),li.version=Qa;var si=m("style,class"),bi=m("input,textarea,option,select,progress"),Ci=function(e,n,t){return"value"===t&&bi(e)&&"button"!==n||"selected"===t&&"option"===e||"checked"===t&&"input"===e||"muted"===t&&"video"===e},Bi=m("contenteditable,draggable,spellcheck"),Ai=m("events,caret,typing,plaintext-only"),mi=function(e,n){return Fi(n)||"false"===n?"false":"contenteditable"===e&&Ai(n)?n:"true"},Gi=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Qi="http://www.w3.org/1999/xlink",pi=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Zi=function(e){return pi(e)?e.slice(6,e.length):""},Fi=function(e){return null==e||!1===e};function hi(e){for(var n=e.data,t=e,a=e;c(a.componentInstance);)(a=a.componentInstance._vnode)&&a.data&&(n=Xi(a.data,n));for(;c(t=t.parent);)t&&t.data&&(n=Xi(n,t.data));return function(e,n){if(c(e)||c(n))return yi(e,Wi(n));return""}(n.staticClass,n.class)}function Xi(e,n){return{staticClass:yi(e.staticClass,n.staticClass),class:c(e.class)?[e.class,n.class]:n.class}}function yi(e,n){return e?n?e+" "+n:e:n||""}function Wi(e){return Array.isArray(e)?function(e){for(var n,t="",a=0,i=e.length;a-1?$i(e,n,t):Gi(n)?Fi(t)?e.removeAttribute(n):(t="allowfullscreen"===n&&"EMBED"===e.tagName?"true":n,e.setAttribute(n,t)):Bi(n)?e.setAttribute(n,mi(n,t)):pi(n)?Fi(t)?e.removeAttributeNS(Qi,Zi(n)):e.setAttributeNS(Qi,n,t):$i(e,n,t)}function $i(e,n,t){if(Fi(t))e.removeAttribute(n);else{if(q&&!$&&"TEXTAREA"===e.tagName&&"placeholder"===n&&""!==t&&!e.__ieph){var a=function(n){n.stopImmediatePropagation(),e.removeEventListener("input",a)};e.addEventListener("input",a),e.__ieph=!0}e.setAttribute(n,t)}}var el={create:Pi,update:Pi};function nl(e,n){var t=n.elm,a=n.data,i=e.data;if(!(l(a.staticClass)&&l(a.class)&&(l(i)||l(i.staticClass)&&l(i.class)))){var g=hi(n),I=t._transitionClasses;c(I)&&(g=yi(g,Wi(I))),g!==t._prevClass&&(t.setAttribute("class",g),t._prevClass=g)}}var tl,al,il,ll,cl,gl,Il={create:nl,update:nl},rl=/[\w).+\-_$\]]/;function ol(e){var n,t,a,i,l,c=!1,g=!1,I=!1,r=!1,o=0,d=0,u=0,s=0;for(a=0;a=0&&" "===(C=e.charAt(b));b--);C&&rl.test(C)||(r=!0)}}else void 0===i?(s=a+1,i=e.slice(0,a).trim()):B();function B(){(l||(l=[])).push(e.slice(s,a).trim()),s=a+1}if(void 0===i?i=e.slice(0,a).trim():0!==s&&B(),l)for(a=0;a-1?{exp:e.slice(0,ll),key:'"'+e.slice(ll+1)+'"'}:{exp:e,key:null};al=e,ll=cl=gl=0;for(;!vl();)Vl(il=Wl())?Rl(il):91===il&&Ul(il);return{exp:e.slice(0,cl),key:e.slice(cl+1,gl)}}(e);return null===t.key?"".concat(e,"=").concat(n):"$set(".concat(t.exp,", ").concat(t.key,", ").concat(n,")")}function Wl(){return al.charCodeAt(++ll)}function vl(){return ll>=tl}function Vl(e){return 34===e||39===e}function Ul(e){var n=1;for(cl=ll;!vl();)if(Vl(e=Wl()))Rl(e);else if(91===e&&n++,93===e&&n--,0===n){gl=ll;break}}function Rl(e){for(var n=e;!vl()&&(e=Wl())!==n;);}var Nl,Yl="__r",Hl="__c";function fl(e,n,t){var a=Nl;return function i(){null!==n.apply(null,arguments)&&Jl(e,i,t,a)}}var xl=_t&&!(ae&&Number(ae[1])<=53);function Tl(e,n,t,a){if(xl){var i=mt,l=n;n=l._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return l.apply(this,arguments)}}Nl.addEventListener(e,n,le?{capture:t,passive:a}:t)}function Jl(e,n,t,a){(a||Nl).removeEventListener(e,n._wrapper||n,t)}function Sl(e,n){if(!l(e.data.on)||!l(n.data.on)){var t=n.data.on||{},a=e.data.on||{};Nl=n.elm||e.elm,function(e){if(c(e[Yl])){var n=q?"change":"input";e[n]=[].concat(e[Yl],e[n]||[]),delete e[Yl]}c(e[Hl])&&(e.change=[].concat(e[Hl],e.change||[]),delete e[Hl])}(t),Cn(t,a,Tl,Jl,fl,n.context),Nl=void 0}}var kl,El={create:Sl,update:Sl,destroy:function(e){return Sl(e,ki)}};function wl(e,n){if(!l(e.data.domProps)||!l(n.data.domProps)){var t,a,i=n.elm,I=e.data.domProps||{},r=n.data.domProps||{};for(t in(c(r.__ob__)||g(r._v_attr_proxy))&&(r=n.data.domProps=N({},r)),I)t in r||(i[t]="");for(t in r){if(a=r[t],"textContent"===t||"innerHTML"===t){if(n.children&&(n.children.length=0),a===I[t])continue;1===i.childNodes.length&&i.removeChild(i.childNodes[0])}if("value"===t&&"PROGRESS"!==i.tagName){i._value=a;var o=l(a)?"":String(a);Ol(i,o)&&(i.value=o)}else if("innerHTML"===t&&Ui(i.tagName)&&l(i.innerHTML)){(kl=kl||document.createElement("div")).innerHTML="");for(var d=kl.firstChild;i.firstChild;)i.removeChild(i.firstChild);for(;d.firstChild;)i.appendChild(d.firstChild)}else if(a!==I[t])try{i[t]=a}catch(e){}}}}function Ol(e,n){return!e.composing&&("OPTION"===e.tagName||function(e,n){var t=!0;try{t=document.activeElement!==e}catch(e){}return t&&e.value!==n}(e,n)||function(e,n){var t=e.value,a=e._vModifiers;if(c(a)){if(a.number)return A(t)!==A(n);if(a.trim)return t.trim()!==n.trim()}return t!==n}(e,n))}var Dl={create:wl,update:wl},Ll=h(function(e){var n={},t=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach(function(e){if(e){var a=e.split(t);a.length>1&&(n[a[0].trim()]=a[1].trim())}}),n});function zl(e){var n=jl(e.style);return e.staticStyle?N(e.staticStyle,n):n}function jl(e){return Array.isArray(e)?Y(e):"string"==typeof e?Ll(e):e}var _l,Kl=/^--/,Ml=/\s*!important$/,Pl=function(e,n,t){if(Kl.test(n))e.style.setProperty(n,t);else if(Ml.test(t))e.style.setProperty(V(n),t.replace(Ml,""),"important");else{var a=$l(n);if(Array.isArray(t))for(var i=0,l=t.length;i-1?n.split(tc).forEach(function(n){return e.classList.add(n)}):e.classList.add(n);else{var t=" ".concat(e.getAttribute("class")||""," ");t.indexOf(" "+n+" ")<0&&e.setAttribute("class",(t+n).trim())}}function ic(e,n){if(n&&(n=n.trim()))if(e.classList)n.indexOf(" ")>-1?n.split(tc).forEach(function(n){return e.classList.remove(n)}):e.classList.remove(n),e.classList.length||e.removeAttribute("class");else{for(var t=" ".concat(e.getAttribute("class")||""," "),a=" "+n+" ";t.indexOf(a)>=0;)t=t.replace(a," ");(t=t.trim())?e.setAttribute("class",t):e.removeAttribute("class")}}function lc(e){if(e){if("object"==typeof e){var n={};return!1!==e.css&&N(n,cc(e.name||"v")),N(n,e),n}return"string"==typeof e?cc(e):void 0}}var cc=h(function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}}),gc=M&&!$,Ic="transition",rc="animation",oc="transition",dc="transitionend",uc="animation",sc="animationend";gc&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(oc="WebkitTransition",dc="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(uc="WebkitAnimation",sc="webkitAnimationEnd"));var bc=M?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Cc(e){bc(function(){bc(e)})}function Bc(e,n){var t=e._transitionClasses||(e._transitionClasses=[]);t.indexOf(n)<0&&(t.push(n),ac(e,n))}function Ac(e,n){e._transitionClasses&&p(e._transitionClasses,n),ic(e,n)}function mc(e,n,t){var a=Qc(e,n),i=a.type,l=a.timeout,c=a.propCount;if(!i)return t();var g=i===Ic?dc:sc,I=0,r=function(){e.removeEventListener(g,o),t()},o=function(n){n.target===e&&++I>=c&&r()};setTimeout(function(){I0&&(t=Ic,o=c,d=l.length):n===rc?r>0&&(t=rc,o=r,d=I.length):d=(t=(o=Math.max(c,r))>0?c>r?Ic:rc:null)?t===Ic?l.length:I.length:0,{type:t,timeout:o,propCount:d,hasTransform:t===Ic&&Gc.test(a[oc+"Property"])}}function pc(e,n){for(;e.length1}function Wc(e,n){!0!==n.data.show&&Fc(n)}var vc=function(e){var n,t,a={},r=e.modules,o=e.nodeOps;for(n=0;nb?Q(e,l(t[A+1])?null:t[A+1].elm,t,s,A,a):s>A&&Z(n,d,b)}(d,C,A,t,r):c(A)?(c(e.text)&&o.setTextContent(d,""),Q(d,null,A,0,A.length-1,t)):c(C)?Z(C,0,C.length-1):c(e.text)&&o.setTextContent(d,""):e.text!==n.text&&o.setTextContent(d,n.text),c(b)&&c(s=b.hook)&&c(s=s.postpatch)&&s(e,n)}}}function y(e,n,t){if(g(t)&&c(e.parent))e.parent.data.pendingInsert=n;else for(var a=0;a-1,c.selected!==l&&(c.selected=l);else if(T(Yc(c),a))return void(e.selectedIndex!==g&&(e.selectedIndex=g));i||(e.selectedIndex=-1)}}function Nc(e,n){return n.every(function(n){return!T(n,e)})}function Yc(e){return"_value"in e?e._value:e.value}function Hc(e){e.target.composing=!0}function fc(e){e.target.composing&&(e.target.composing=!1,xc(e.target,"input"))}function xc(e,n){var t=document.createEvent("HTMLEvents");t.initEvent(n,!0,!0),e.dispatchEvent(t)}function Tc(e){return!e.componentInstance||e.data&&e.data.transition?e:Tc(e.componentInstance._vnode)}var Jc={model:Vc,show:{bind:function(e,n,t){var a=n.value,i=(t=Tc(t)).data&&t.data.transition,l=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;a&&i?(t.data.show=!0,Fc(t,function(){e.style.display=l})):e.style.display=a?l:"none"},update:function(e,n,t){var a=n.value;!a!=!n.oldValue&&((t=Tc(t)).data&&t.data.transition?(t.data.show=!0,a?Fc(t,function(){e.style.display=e.__vOriginalDisplay}):hc(t,function(){e.style.display="none"})):e.style.display=a?e.__vOriginalDisplay:"none")},unbind:function(e,n,t,a,i){i||(e.style.display=e.__vOriginalDisplay)}}},Sc={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function kc(e){var n=e&&e.componentOptions;return n&&n.Ctor.options.abstract?kc(tt(n.children)):e}function Ec(e){var n={},t=e.$options;for(var a in t.propsData)n[a]=e[a];var i=t._parentListeners;for(var a in i)n[y(a)]=i[a];return n}function wc(e,n){if(/\d-keep-alive$/.test(n.tag))return e("keep-alive",{props:n.componentOptions.propsData})}var Oc=function(e){return e.tag||kn(e)},Dc=function(e){return"show"===e.name},Lc={name:"transition",props:Sc,abstract:!0,render:function(e){var n=this,t=this.$slots.default;if(t&&(t=t.filter(Oc)).length){0;var a=this.mode;0;var i=t[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var l=kc(i);if(!l)return i;if(this._leaving)return wc(e,i);var c="__transition-".concat(this._uid,"-");l.key=null==l.key?l.isComment?c+"comment":c+l.tag:I(l.key)?0===String(l.key).indexOf(c)?l.key:c+l.key:l.key;var g=(l.data||(l.data={})).transition=Ec(this),r=this._vnode,o=kc(r);if(l.data.directives&&l.data.directives.some(Dc)&&(l.data.show=!0),o&&o.data&&!function(e,n){return n.key===e.key&&n.tag===e.tag}(l,o)&&!kn(o)&&(!o.componentInstance||!o.componentInstance._vnode.isComment)){var d=o.data.transition=N({},g);if("out-in"===a)return this._leaving=!0,Bn(d,"afterLeave",function(){n._leaving=!1,n.$forceUpdate()}),wc(e,i);if("in-out"===a){if(kn(l))return r;var u,s=function(){u()};Bn(g,"afterEnter",s),Bn(g,"enterCancelled",s),Bn(d,"delayLeave",function(e){u=e})}}return i}}},zc=N({tag:String,moveClass:String},Sc);function jc(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function _c(e){e.data.newPos=e.elm.getBoundingClientRect()}function Kc(e){var n=e.data.pos,t=e.data.newPos,a=n.left-t.left,i=n.top-t.top;if(a||i){e.data.moved=!0;var l=e.elm.style;l.transform=l.WebkitTransform="translate(".concat(a,"px,").concat(i,"px)"),l.transitionDuration="0s"}}delete zc.mode;var Mc={Transition:Lc,TransitionGroup:{props:zc,beforeMount:function(){var e=this,n=this._update;this._update=function(t,a){var i=It(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),n.call(e,t,a)}},render:function(e){for(var n=this.tag||this.$vnode.data.tag||"span",t=Object.create(null),a=this.prevChildren=this.children,i=this.$slots.default||[],l=this.children=[],c=Ec(this),g=0;g-1?Yi[e]=n.constructor===window.HTMLUnknownElement||n.constructor===window.HTMLElement:Yi[e]=/HTMLUnknownElement/.test(n.toString())},N(li.options.directives,Jc),N(li.options.components,Mc),li.prototype.__patch__=M?vc:H,li.prototype.$mount=function(e,n){return function(e,n,t){e.$el=n,e.$options.render||(e.$options.render=Be),dt(e,"beforeMount");var a={before:function(){e._isMounted&&!e._isDestroyed&&dt(e,"beforeUpdate")}};new Xa(e,function(){e._update(e._render(),t)},H,a,!0),t=!1;var i=e._preWatchers;if(i)for(var l=0;lI&&(g.push(l=e.slice(I,i)),c.push(JSON.stringify(l)));var r=ol(a[1].trim());c.push("_s(".concat(r,")")),g.push({"@binding":r}),I=i+a[0].length}return I\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,rg=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,og="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(L.source,"]*"),dg="((?:".concat(og,"\\:)?").concat(og,")"),ug=new RegExp("^<".concat(dg)),sg=/^\s*(\/?)>/,bg=new RegExp("^<\\/".concat(dg,"[^>]*>")),Cg=/^]+>/i,Bg=/^",""":'"',"&":"&","
":"\n"," ":"\t","'":"'"},pg=/&(?:lt|gt|quot|amp|#39);/g,Zg=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Fg=m("pre,textarea",!0),hg=function(e,n){return e&&Fg(e)&&"\n"===n[0]};function Xg(e,n){var t=n?Zg:pg;return e.replace(t,function(e){return Qg[e]})}function yg(e,n){for(var t,a,i=[],l=n.expectHTML,c=n.isUnaryTag||f,g=n.canBeLeftOpenTag||f,I=0,r=function(){if(t=e,a&&mg(a)){var r=0,u=a.toLowerCase(),s=Gg[u]||(Gg[u]=new RegExp("([\\s\\S]*?)("+u+"[^>]*>)","i"));Z=e.replace(s,function(e,t,a){return r=a.length,mg(u)||"noscript"===u||(t=t.replace(//g,"$1").replace(//g,"$1")),hg(u,t)&&(t=t.slice(1)),n.chars&&n.chars(t),""});I+=e.length-Z.length,e=Z,d(u,I-r,I)}else{var b=e.indexOf("<");if(0===b){if(Bg.test(e)){var C=e.indexOf("--\x3e");if(C>=0)return n.shouldKeepComment&&n.comment&&n.comment(e.substring(4,C),I,I+C+3),o(C+3),"continue"}if(Ag.test(e)){var B=e.indexOf("]>");if(B>=0)return o(B+2),"continue"}var A=e.match(Cg);if(A)return o(A[0].length),"continue";var m=e.match(bg);if(m){var G=I;return o(m[0].length),d(m[1],G,I),"continue"}var Q=function(){var n=e.match(ug);if(n){var t={tagName:n[1],attrs:[],start:I};o(n[0].length);for(var a=void 0,i=void 0;!(a=e.match(sg))&&(i=e.match(rg)||e.match(Ig));)i.start=I,o(i[0].length),i.end=I,t.attrs.push(i);if(a)return t.unarySlash=a[1],o(a[0].length),t.end=I,t}}();if(Q)return function(e){var t=e.tagName,I=e.unarySlash;l&&("p"===a&&gg(t)&&d(a),g(t)&&a===t&&d(t));for(var r=c(t)||!!I,o=e.attrs.length,u=new Array(o),s=0;s=0){for(Z=e.slice(b);!(bg.test(Z)||ug.test(Z)||Bg.test(Z)||Ag.test(Z)||(F=Z.indexOf("<",1))<0);)b+=F,Z=e.slice(b);p=e.substring(0,b)}b<0&&(p=e),p&&o(p.length),n.chars&&p&&n.chars(p,I-p.length,I)}if(e===t)return n.chars&&n.chars(e),"break"};e;){if("break"===r())break}function o(n){I+=n,e=e.substring(n)}function d(e,t,l){var c,g;if(null==t&&(t=I),null==l&&(l=I),e)for(g=e.toLowerCase(),c=i.length-1;c>=0&&i[c].lowerCasedTag!==g;c--);else c=0;if(c>=0){for(var r=i.length-1;r>=c;r--)n.end&&n.end(i[r].tag,t,l);i.length=c,a=c&&i[c-1].tag}else"br"===g?n.start&&n.start(e,[],!0,t,l):"p"===g&&(n.start&&n.start(e,[],!1,t,l),n.end&&n.end(e,t,l))}d()}var Wg,vg,Vg,Ug,Rg,Ng,Yg,Hg,fg=/^@|^v-on:/,xg=/^v-|^@|^:|^#/,Tg=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Jg=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Sg=/^\(|\)$/g,kg=/^\[.*\]$/,Eg=/:(.*)$/,wg=/^:|^\.|^v-bind:/,Og=/\.[^.\]]+(?=[^\]]*$)/g,Dg=/^v-slot(:|$)|^#/,Lg=/[\r\n]/,zg=/[ \f\t\r\n]+/g,jg=h(ig),_g="_empty_";function Kg(e,n,t){return{type:1,tag:e,attrsList:n,attrsMap:function(e){for(var n={},t=0,a=e.length;t-1")+("true"===l?":(".concat(n,")"):":_q(".concat(n,",").concat(l,")"))),Gl(e,"change","var $$a=".concat(n,",")+"$$el=$event.target,"+"$$c=$$el.checked?(".concat(l,"):(").concat(c,");")+"if(Array.isArray($$a)){"+"var $$v=".concat(a?"_n("+i+")":i,",")+"$$i=_i($$a,$$v);"+"if($$el.checked){$$i<0&&(".concat(yl(n,"$$a.concat([$$v])"),")}")+"else{$$i>-1&&(".concat(yl(n,"$$a.slice(0,$$i).concat($$a.slice($$i+1))"),")}")+"}else{".concat(yl(n,"$$c"),"}"),null,!0)}(e,a,i);else if("input"===l&&"radio"===c)!function(e,n,t){var a=t&&t.number,i=pl(e,"value")||"null";i=a?"_n(".concat(i,")"):i,bl(e,"checked","_q(".concat(n,",").concat(i,")")),Gl(e,"change",yl(n,i),null,!0)}(e,a,i);else if("input"===l||"textarea"===l)!function(e,n,t){var a=e.attrsMap.type,i=t||{},l=i.lazy,c=i.number,g=i.trim,I=!l&&"range"!==a,r=l?"change":"range"===a?Yl:"input",o="$event.target.value";g&&(o="$event.target.value.trim()"),c&&(o="_n(".concat(o,")"));var d=yl(n,o);I&&(d="if($event.target.composing)return;".concat(d)),bl(e,"value","(".concat(n,")")),Gl(e,r,d,null,!0),(g||c)&&Gl(e,"blur","$forceUpdate()")}(e,a,i);else if(!D.isReservedTag(l))return Xl(e,a,i),!1;return!0},text:function(e,n){n.value&&bl(e,"textContent","_s(".concat(n.value,")"),n)},html:function(e,n){n.value&&bl(e,"innerHTML","_s(".concat(n.value,")"),n)}},isPreTag:function(e){return"pre"===e},isUnaryTag:lg,mustUseProp:Ci,canBeLeftOpenTag:cg,isReservedTag:Ri,getTagNamespace:Ni,staticKeys:function(e){return e.reduce(function(e,n){return e.concat(n.staticKeys||[])},[]).join(",")}(lI)},rI=h(function(e){return m("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))});function oI(e,n){e&&(cI=rI(n.staticKeys||""),gI=n.isReservedTag||f,function e(n){n.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||G(e.tag)||!gI(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(cI)))}(n);if(1===n.type){if(!gI(n.tag)&&"slot"!==n.tag&&null==n.attrsMap["inline-template"])return;for(var t=0,a=n.children.length;t|^function(?:\s+[\w$]+)?\s*\(/,uI=/\([^)]*?\);*$/,sI=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,bI={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},CI={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},BI=function(e){return"if(".concat(e,")return null;")},AI={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:BI("$event.target !== $event.currentTarget"),ctrl:BI("!$event.ctrlKey"),shift:BI("!$event.shiftKey"),alt:BI("!$event.altKey"),meta:BI("!$event.metaKey"),left:BI("'button' in $event && $event.button !== 0"),middle:BI("'button' in $event && $event.button !== 1"),right:BI("'button' in $event && $event.button !== 2")};function mI(e,n){var t=n?"nativeOn:":"on:",a="",i="";for(var l in e){var c=GI(e[l]);e[l]&&e[l].dynamic?i+="".concat(l,",").concat(c,","):a+='"'.concat(l,'":').concat(c,",")}return a="{".concat(a.slice(0,-1),"}"),i?t+"_d(".concat(a,",[").concat(i.slice(0,-1),"])"):t+a}function GI(e){if(!e)return"function(){}";if(Array.isArray(e))return"[".concat(e.map(function(e){return GI(e)}).join(","),"]");var n=sI.test(e.value),t=dI.test(e.value),a=sI.test(e.value.replace(uI,""));if(e.modifiers){var i="",l="",c=[],g=function(n){if(AI[n])l+=AI[n],bI[n]&&c.push(n);else if("exact"===n){var t=e.modifiers;l+=BI(["ctrl","shift","alt","meta"].filter(function(e){return!t[e]}).map(function(e){return"$event.".concat(e,"Key")}).join("||"))}else c.push(n)};for(var I in e.modifiers)g(I);c.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+"".concat(e.map(QI).join("&&"),")return null;")}(c)),l&&(i+=l);var r=n?"return ".concat(e.value,".apply(null, arguments)"):t?"return (".concat(e.value,").apply(null, arguments)"):a?"return ".concat(e.value):e.value;return"function($event){".concat(i).concat(r,"}")}return n||t?e.value:"function($event){".concat(a?"return ".concat(e.value):e.value,"}")}function QI(e){var n=parseInt(e,10);if(n)return"$event.keyCode!==".concat(n);var t=bI[e],a=CI[e];return"_k($event.keyCode,"+"".concat(JSON.stringify(e),",")+"".concat(JSON.stringify(t),",")+"$event.key,"+"".concat(JSON.stringify(a))+")"}var pI={on:function(e,n){e.wrapListeners=function(e){return"_g(".concat(e,",").concat(n.value,")")}},bind:function(e,n){e.wrapData=function(t){return"_b(".concat(t,",'").concat(e.tag,"',").concat(n.value,",").concat(n.modifiers&&n.modifiers.prop?"true":"false").concat(n.modifiers&&n.modifiers.sync?",true":"",")")}},cloak:H},ZI=function(){return function(e){this.options=e,this.warn=e.warn||ul,this.transforms=sl(e.modules,"transformCode"),this.dataGenFns=sl(e.modules,"genData"),this.directives=N(N({},pI),e.directives);var n=e.isReservedTag||f;this.maybeComponent=function(e){return!!e.component||!n(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1}}();function FI(e,n){var t=new ZI(n),a=e?"script"===e.tag?"null":hI(e,t):'_c("div")';return{render:"with(this){return ".concat(a,"}"),staticRenderFns:t.staticRenderFns}}function hI(e,n){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return XI(e,n);if(e.once&&!e.onceProcessed)return yI(e,n);if(e.for&&!e.forProcessed)return vI(e,n);if(e.if&&!e.ifProcessed)return WI(e,n);if("template"!==e.tag||e.slotTarget||n.pre){if("slot"===e.tag)return function(e,n){var t=e.slotName||'"default"',a=NI(e,n),i="_t(".concat(t).concat(a?",function(){return ".concat(a,"}"):""),l=e.attrs||e.dynamicAttrs?fI((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:y(e.name),value:e.value,dynamic:e.dynamic}})):null,c=e.attrsMap["v-bind"];!l&&!c||a||(i+=",null");l&&(i+=",".concat(l));c&&(i+="".concat(l?"":",null",",").concat(c));return i+")"}(e,n);var t=void 0;if(e.component)t=function(e,n,t){var a=n.inlineTemplate?null:NI(n,t,!0);return"_c(".concat(e,",").concat(VI(n,t)).concat(a?",".concat(a):"",")")}(e.component,e,n);else{var a=void 0,i=n.maybeComponent(e);(!e.plain||e.pre&&i)&&(a=VI(e,n));var l=void 0,c=n.options.bindings;i&&c&&!1!==c.__isScriptSetup&&(l=function(e,n){var t=y(n),a=W(t),i=function(i){return e[n]===i?n:e[t]===i?t:e[a]===i?a:void 0},l=i("setup-const")||i("setup-reactive-const");if(l)return l;var c=i("setup-let")||i("setup-ref")||i("setup-maybe-ref");if(c)return c}(c,e.tag)),l||(l="'".concat(e.tag,"'"));var g=e.inlineTemplate?null:NI(e,n,!0);t="_c(".concat(l).concat(a?",".concat(a):"").concat(g?",".concat(g):"",")")}for(var I=0;I>>0}(c)):"",")")}(e,e.scopedSlots,n),",")),e.model&&(t+="model:{value:".concat(e.model.value,",callback:").concat(e.model.callback,",expression:").concat(e.model.expression,"},")),e.inlineTemplate){var l=function(e,n){var t=e.children[0];0;if(t&&1===t.type){var a=FI(t,n.options);return"inlineTemplate:{render:function(){".concat(a.render,"},staticRenderFns:[").concat(a.staticRenderFns.map(function(e){return"function(){".concat(e,"}")}).join(","),"]}")}}(e,n);l&&(t+="".concat(l,","))}return t=t.replace(/,$/,"")+"}",e.dynamicAttrs&&(t="_b(".concat(t,',"').concat(e.tag,'",').concat(fI(e.dynamicAttrs),")")),e.wrapData&&(t=e.wrapData(t)),e.wrapListeners&&(t=e.wrapListeners(t)),t}function UI(e){return 1===e.type&&("slot"===e.tag||e.children.some(UI))}function RI(e,n){var t=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!t)return WI(e,n,RI,"null");if(e.for&&!e.forProcessed)return vI(e,n,RI);var a=e.slotScope===_g?"":String(e.slotScope),i="function(".concat(a,"){")+"return ".concat("template"===e.tag?e.if&&t?"(".concat(e.if,")?").concat(NI(e,n)||"undefined",":undefined"):NI(e,n)||"undefined":hI(e,n),"}"),l=a?"":",proxy:true";return"{key:".concat(e.slotTarget||'"default"',",fn:").concat(i).concat(l,"}")}function NI(e,n,t,a,i){var l=e.children;if(l.length){var c=l[0];if(1===l.length&&c.for&&"template"!==c.tag&&"slot"!==c.tag){var g=t?n.maybeComponent(c)?",1":",0":"";return"".concat((a||hI)(c,n)).concat(g)}var I=t?function(e,n){for(var t=0,a=0;a':'',kI.innerHTML.indexOf("
")>0}var OI=!!M&&wI(!1),DI=!!M&&wI(!0),LI=h(function(e){var n=fi(e);return n&&n.innerHTML}),zI=li.prototype.$mount;li.prototype.$mount=function(e,n){if((e=e&&fi(e))===document.body||e===document.documentElement)return this;var t=this.$options;if(!t.render){var a=t.template;if(a)if("string"==typeof a)"#"===a.charAt(0)&&(a=LI(a));else{if(!a.nodeType)return this;a=a.innerHTML}else e&&(a=function(e){if(e.outerHTML)return e.outerHTML;var n=document.createElement("div");return n.appendChild(e.cloneNode(!0)),n.innerHTML}(e));if(a){0;var i=EI(a,{outputSourceRange:!1,shouldDecodeNewlines:OI,shouldDecodeNewlinesForHref:DI,delimiters:t.delimiters,comments:t.comments},this),l=i.render,c=i.staticRenderFns;t.render=l,t.staticRenderFns=c}}return zI.call(this,e,n)},li.compile=EI}.call(n,t("GTd5"))},XQtG:function(e,n){var t=0,a=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+a).toString(36))}},XVW8:function(e,n,t){e.exports={default:t("oDy/"),__esModule:!0}},"Xjk/":function(e,n,t){var a=t("Vobs");a(a.S,"Array",{isArray:t("JI5q")})},Y0Wb:function(e,n,t){"use strict";var a,i=t("8QiI"),l=t("tMyS")(0),c=t("jDrK"),g=t("nxhn"),I=t("v89L"),r=t("3y1p"),o=t("/2t/"),d=t("yRub"),u=t("yRub"),s=!i.ActiveXObject&&"ActiveXObject"in i,b=g.getWeak,C=Object.isExtensible,B=r.ufstore,A=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},m={get:function(e){if(o(e)){var n=b(e);return!0===n?B(d(this,"WeakMap")).get(e):n?n[this._i]:void 0}},set:function(e,n){return r.def(d(this,"WeakMap"),e,n)}},G=e.exports=t("J5Ss")("WeakMap",A,m,r,!0,!0);u&&s&&(I((a=r.getConstructor(A,"WeakMap")).prototype,m),g.NEED=!0,l(["delete","has","get","set"],function(e){var n=G.prototype,t=n[e];c(n,e,function(n,i){if(o(n)&&!C(n)){this._f||(this._f=new a);var l=this._f[e](n,i);return"set"==e?this:l}return t.call(this,n,i)})}))},YBdf:function(e,n,t){"use strict";var a=t("8QiI"),i=t("gGgn"),l=t("jVdc"),c=t("I5XL")("species");e.exports=function(e){var n=a[e];l&&n&&!n[c]&&i.f(n,c,{configurable:!0,get:function(){return this}})}},YxkS:function(e,n,t){var a=t("buEK"),i=t("Jh2P").f,l={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return c&&"[object Window]"==l.call(e)?function(e){try{return i(e)}catch(e){return c.slice()}}(e):i(a(e))}},"Z+ck":function(e,n,t){"use strict";var a=t("ke6T"),i=t("PECj"),l=t("H5R/"),c=t("zakI");e.exports=t("MKcl")(Array,"Array",function(e,n){this._t=c(e),this._i=0,this._k=n},function(){var e=this._t,n=this._k,t=this._i++;return!e||t>=e.length?(this._t=void 0,i(1)):i(0,"keys"==n?t:"values"==n?e[t]:[t,e[t]])},"values"),l.Arguments=l.Array,a("keys"),a("values"),a("entries")},"Z/Ab":function(e,n,t){var a=t("Vobs");a(a.P,"String",{repeat:t("0Lz3")})},Z7lT:function(e,n,t){var a=t("I5XL")("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[a]=!1,!"/./"[e](n)}catch(e){}}return!0}},ZBH0:function(e,n,t){var a=t("Vobs");a(a.P,"Array",{fill:t("hOOH")}),t("ke6T")("fill")},ZIrZ:function(e,n){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},ZKGF:function(e,n,t){t("1sXG")("Float64",8,function(e){return function(n,t,a){return e(this,n,t,a)}})},ZRWD:function(e,n,t){"use strict";var a=t("SZ/P"),i=t("zYZI"),l=t("e1Cu");a(a.S,"Promise",{try:function(e){var n=i.f(this),t=l(e);return(t.e?n.reject:n.resolve)(t.v),n.promise}})},ZRhR:function(e,n,t){"use strict";n.__esModule=!0;var a,i=t("XVW8"),l=(a=i)&&a.__esModule?a:{default:a};n.default=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},o={exports:{}};!function(e){var n,t,a,i,l,c,g,I,o,d,u,s,b,C,B;n=r,t=function(e,n,a){if(!I(n)||d(n)||u(n)||s(n)||g(n))return n;var i,l=0,c=0;if(o(n))for(i=[],c=n.length;l2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=(n.children||[]).map(s.bind(null,e)),c=Object.keys(n.attributes||{}).reduce(function(e,t){var a=n.attributes[t];switch(t){case"class":e.class=a.split(/\s+/).reduce(function(e,n){return e[n]=!0,e},{});break;case"style":e.style=a.split(";").map(function(e){return e.trim()}).filter(function(e){return e}).reduce(function(e,n){var t=n.indexOf(":"),a=d.camelize(n.slice(0,t)),i=n.slice(t+1).trim();return e[a]=i,e},{});break;default:e.attrs[t]=a}return e},{class:{},style:{},attrs:{}}),g=a.class,r=void 0===g?{}:g,o=a.style,b=void 0===o?{}:o,C=a.attrs,B=void 0===C?{}:C,A=I(a,u);return"string"==typeof n?n:e(n.tag,l(l({class:function(){for(var e=arguments.length,n=new Array(e),t=0;t0||!Array.isArray(n)&&n?g({},e,n):{}}function B(e){return e&&"object"===c(e)&&e.prefix&&e.iconName&&e.icon?e:a.d.icon?a.d.icon(e):null===e?null:"object"===c(e)&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"==typeof e?{prefix:"fas",iconName:e}:void 0}var A={name:"FontAwesomeIcon",functional:!0,props:{beat:{type:Boolean,default:!1},border:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(e){return[!0,!1,"horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1}},render:function(e,n){var t=n.props,i=t.icon,c=t.mask,I=t.symbol,r=t.title,o=B(i),d=C("classes",function(e){var n,t=(g(n={"fa-spin":e.spin,"fa-spin-pulse":e.spinPulse,"fa-spin-reverse":e.spinReverse,"fa-pulse":e.pulse,"fa-beat":e.beat,"fa-fade":e.fade,"fa-flash":e.flash,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":!0===e.flip,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},"fa-".concat(e.size),null!==e.size),g(n,"fa-rotate-".concat(e.rotation),null!==e.rotation),g(n,"fa-pull-".concat(e.pull),null!==e.pull),g(n,"fa-swap-opacity",e.swapOpacity),g(n,"fa-bounce",e.bounce),g(n,"fa-shake",e.shake),g(n,"fa-beat-fade",e.beatFade),n);return Object.keys(t).map(function(e){return t[e]?e:null}).filter(function(e){return e})}(t)),u=C("transform","string"==typeof t.transform?a.d.transform(t.transform):t.transform),A=C("mask",B(c)),m=Object(a.b)(o,l(l(l(l({},d),u),A),{},{symbol:I,title:r}));if(!m)return function(){var e;!b&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find one or more icon(s)",o,A);var G=m.abstract;return s.bind(null,e)(G[0],{},n.data)}};Boolean,String,Number,String,Object,Boolean,String}).call(n,t("GTd5"))},aoB7:function(e,n,t){var a=t("SZ/P");a(a.S+a.F,"Object",{assign:t("igJl")})},arBK:function(e,n){},av62:function(e,n,t){var a=t("Vobs");a(a.S+a.F,"Object",{assign:t("v89L")})},b5sM:function(e,n,t){n.f=t("Imef")},bJ9Y:function(module,exports,__webpack_require__){var factory;window,factory=function(){return function(e){var n={};function t(a){if(n[a])return n[a].exports;var i=n[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(a,i,function(n){return e[n]}.bind(null,i));return a},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s="./src/app.ts")}({"./node_modules/@twilio/webrtc/lib/getstats.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar flatMap = __webpack_require__(/*! ./util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").flatMap;\nvar guessBrowser = __webpack_require__(/*! ./util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").guessBrowser;\nvar guessBrowserVersion = __webpack_require__(/*! ./util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").guessBrowserVersion;\nvar getSdpFormat = __webpack_require__(/*! ./util/sdp */ \"./node_modules/@twilio/webrtc/lib/util/sdp.js\").getSdpFormat;\n\nvar guess = guessBrowser();\nvar guessVersion = guessBrowserVersion();\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\n\nvar chromeMajorVersion = isChrome ? guessVersion.major : null;\n\nvar CHROME_LEGACY_MAX_AUDIO_LEVEL = 32767;\n\n/**\n * Get the standardized {@link RTCPeerConnection} statistics.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.}\n */\nfunction getStats(peerConnection, options) {\n if (!(peerConnection && typeof peerConnection.getStats === 'function')) {\n return Promise.reject(new Error('Given PeerConnection does not support getStats'));\n }\n return _getStats(peerConnection, options);\n}\n\n/**\n * getStats() implementation.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.}\n */\nfunction _getStats(peerConnection, options) {\n var localAudioTracks = getTracks(peerConnection, 'audio', 'local');\n var localVideoTracks = getTracks(peerConnection, 'video', 'local');\n var remoteAudioTracks = getTracks(peerConnection, 'audio');\n var remoteVideoTracks = getTracks(peerConnection, 'video');\n\n var statsResponse = {\n activeIceCandidatePair: null,\n localAudioTrackStats: [],\n localVideoTrackStats: [],\n remoteAudioTrackStats: [],\n remoteVideoTrackStats: []\n };\n\n var trackStatsPromises = flatMap([\n [localAudioTracks, 'localAudioTrackStats', false],\n [localVideoTracks, 'localVideoTrackStats', false],\n [remoteAudioTracks, 'remoteAudioTrackStats', true],\n [remoteVideoTracks, 'remoteVideoTrackStats', true]\n ], function(triple) {\n var tracks = triple[0];\n var statsArrayName = triple[1];\n var isRemote = triple[2];\n return tracks.map(function(track) {\n return getTrackStats(peerConnection, track, Object.assign({\n isRemote: isRemote\n }, options)).then(function(trackStatsArray) {\n trackStatsArray.forEach(function(trackStats) {\n trackStats.trackId = track.id;\n statsResponse[statsArrayName].push(trackStats);\n });\n });\n });\n });\n\n return Promise.all(trackStatsPromises).then(function() {\n return getActiveIceCandidatePairStats(peerConnection, options);\n }).then(function(activeIceCandidatePairStatsReport) {\n statsResponse.activeIceCandidatePair = activeIceCandidatePairStatsReport;\n return statsResponse;\n });\n}\n\n/**\n * Generate the {@link StandardizedActiveIceCandidatePairStatsReport} for the\n * {@link RTCPeerConnection}.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options]\n * @returns {Promise}\n */\nfunction getActiveIceCandidatePairStats(peerConnection, options) {\n options = options || {};\n\n if (typeof options.testForChrome !== 'undefined' || isChrome\n || typeof options.testForSafari !== 'undefined' || isSafari) {\n return peerConnection.getStats().then(\n standardizeChromeOrSafariActiveIceCandidatePairStats);\n }\n if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n return peerConnection.getStats().then(standardizeFirefoxActiveIceCandidatePairStats);\n }\n return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Chrome or Safari.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeChromeOrSafariActiveIceCandidatePairStats(stats) {\n var activeCandidatePairStats = Array.from(stats.values()).find(function(stat) {\n return stat.type === 'candidate-pair' && stat.nominated;\n });\n\n if (!activeCandidatePairStats) {\n return null;\n }\n\n var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n\n var standardizedCandidateStatsKeys = [\n { key: 'candidateType', type: 'string' },\n { key: 'ip', type: 'string' },\n { key: 'port', type: 'number' },\n { key: 'priority', type: 'number' },\n { key: 'protocol', type: 'string' },\n { key: 'url', type: 'string' }\n ];\n\n var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n { key: 'deleted', type: 'boolean' },\n { key: 'relayProtocol', type: 'string' }\n ]);\n\n var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n ? standardizedLocalCandidateStatsKeys.reduce(function(report, keyInfo) {\n report[keyInfo.key] = typeof activeLocalCandidateStats[keyInfo.key] === keyInfo.type\n ? activeLocalCandidateStats[keyInfo.key]\n : keyInfo.key === 'deleted' ? false : null;\n return report;\n }, {})\n : null;\n\n var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n ? standardizedCandidateStatsKeys.reduce(function(report, keyInfo) {\n report[keyInfo.key] = typeof activeRemoteCandidateStats[keyInfo.key] === keyInfo.type\n ? activeRemoteCandidateStats[keyInfo.key]\n : null;\n return report;\n }, {})\n : null;\n\n return [\n { key: 'availableIncomingBitrate', type: 'number' },\n { key: 'availableOutgoingBitrate', type: 'number' },\n { key: 'bytesReceived', type: 'number' },\n { key: 'bytesSent', type: 'number' },\n { key: 'consentRequestsSent', type: 'number' },\n { key: 'currentRoundTripTime', type: 'number' },\n { key: 'lastPacketReceivedTimestamp', type: 'number' },\n { key: 'lastPacketSentTimestamp', type: 'number' },\n { key: 'nominated', type: 'boolean' },\n { key: 'priority', type: 'number' },\n { key: 'readable', type: 'boolean' },\n { key: 'requestsReceived', type: 'number' },\n { key: 'requestsSent', type: 'number' },\n { key: 'responsesReceived', type: 'number' },\n { key: 'responsesSent', type: 'number' },\n { key: 'retransmissionsReceived', type: 'number' },\n { key: 'retransmissionsSent', type: 'number' },\n { key: 'state', type: 'string', fixup: function(state) { return state === 'inprogress' ? 'in-progress' : state; } },\n { key: 'totalRoundTripTime', type: 'number' },\n { key: 'transportId', type: 'string' },\n { key: 'writable', type: 'boolean' }\n ].reduce(function(report, keyInfo) {\n report[keyInfo.key] = typeof activeCandidatePairStats[keyInfo.key] === keyInfo.type\n ? (keyInfo.fixup ? keyInfo.fixup(activeCandidatePairStats[keyInfo.key]) : activeCandidatePairStats[keyInfo.key])\n : null;\n return report;\n }, {\n localCandidate: standatdizedLocalCandidateStatsReport,\n remoteCandidate: standardizedRemoteCandidateStatsReport\n });\n}\n\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Firefox.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeFirefoxActiveIceCandidatePairStats(stats) {\n var activeCandidatePairStats = Array.from(stats.values()).find(function(stat) {\n return stat.type === 'candidate-pair' && stat.nominated;\n });\n\n if (!activeCandidatePairStats) {\n return null;\n }\n\n var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n\n var standardizedCandidateStatsKeys = [\n { key: 'candidateType', type: 'string' },\n { key: 'ip', ffKeys: ['address', 'ipAddress'], type: 'string' },\n { key: 'port', ffKeys: ['portNumber'], type: 'number' },\n { key: 'priority', type: 'number' },\n { key: 'protocol', ffKeys: ['transport'], type: 'string' },\n { key: 'url', type: 'string' }\n ];\n\n var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n { key: 'deleted', type: 'boolean' },\n { key: 'relayProtocol', type: 'string' }\n ]);\n\n var candidateTypes = {\n host: 'host',\n peerreflexive: 'prflx',\n relayed: 'relay',\n serverreflexive: 'srflx'\n };\n\n var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n ? standardizedLocalCandidateStatsKeys.reduce(function(report, keyInfo) {\n var key = keyInfo.ffKeys && keyInfo.ffKeys.find(function(key) {\n return key in activeLocalCandidateStats;\n }) || keyInfo.key;\n report[keyInfo.key] = typeof activeLocalCandidateStats[key] === keyInfo.type\n ? key === 'candidateType'\n ? candidateTypes[activeLocalCandidateStats[key]] || activeLocalCandidateStats[key]\n : activeLocalCandidateStats[key]\n : key === 'deleted' ? false : null;\n return report;\n }, {})\n : null;\n\n var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n ? standardizedCandidateStatsKeys.reduce(function(report, keyInfo) {\n var key = keyInfo.ffKeys && keyInfo.ffKeys.find(function(key) {\n return key in activeRemoteCandidateStats;\n }) || keyInfo.key;\n report[keyInfo.key] = typeof activeRemoteCandidateStats[key] === keyInfo.type\n ? key === 'candidateType'\n ? candidateTypes[activeRemoteCandidateStats[key]] || activeRemoteCandidateStats[key]\n : activeRemoteCandidateStats[key]\n : null;\n return report;\n }, {})\n : null;\n\n return [\n { key: 'availableIncomingBitrate', type: 'number' },\n { key: 'availableOutgoingBitrate', type: 'number' },\n { key: 'bytesReceived', type: 'number' },\n { key: 'bytesSent', type: 'number' },\n { key: 'consentRequestsSent', type: 'number' },\n { key: 'currentRoundTripTime', type: 'number' },\n { key: 'lastPacketReceivedTimestamp', type: 'number' },\n { key: 'lastPacketSentTimestamp', type: 'number' },\n { key: 'nominated', type: 'boolean' },\n { key: 'priority', type: 'number' },\n { key: 'readable', type: 'boolean' },\n { key: 'requestsReceived', type: 'number' },\n { key: 'requestsSent', type: 'number' },\n { key: 'responsesReceived', type: 'number' },\n { key: 'responsesSent', type: 'number' },\n { key: 'retransmissionsReceived', type: 'number' },\n { key: 'retransmissionsSent', type: 'number' },\n { key: 'state', type: 'string' },\n { key: 'totalRoundTripTime', type: 'number' },\n { key: 'transportId', type: 'string' },\n { key: 'writable', type: 'boolean' }\n ].reduce(function(report, keyInfo) {\n report[keyInfo.key] = typeof activeCandidatePairStats[keyInfo.key] === keyInfo.type\n ? activeCandidatePairStats[keyInfo.key]\n : null;\n return report;\n }, {\n localCandidate: standatdizedLocalCandidateStatsReport,\n remoteCandidate: standardizedRemoteCandidateStatsReport\n });\n}\n\n/**\n * Get local/remote audio/video MediaStreamTracks.\n * @param {RTCPeerConnection} peerConnection - The RTCPeerConnection\n * @param {string} kind - 'audio' or 'video'\n * @param {string} [localOrRemote] - 'local' or 'remote'\n * @returns {Array}\n */\nfunction getTracks(peerConnection, kind, localOrRemote) {\n var getSendersOrReceivers = localOrRemote === 'local' ? 'getSenders' : 'getReceivers';\n if (peerConnection[getSendersOrReceivers]) {\n return peerConnection[getSendersOrReceivers]().map(function(senderOrReceiver) {\n return senderOrReceiver.track;\n }).filter(function(track) {\n return track && track.kind === kind;\n });\n }\n var getStreams = localOrRemote === 'local' ? 'getLocalStreams' : 'getRemoteStreams';\n return flatMap(peerConnection[getStreams](), function(stream) {\n var getTracks = kind === 'audio' ? 'getAudioTracks' : 'getVideoTracks';\n return stream[getTracks]();\n });\n}\n\n/**\n * Get the standardized statistics for a particular MediaStreamTrack.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} [options] - Used for testing\n * @returns {Promise.>}\n */\nfunction getTrackStats(peerConnection, track, options) {\n options = options || {};\n\n if (typeof options.testForChrome !== 'undefined' || isChrome) {\n return chromeOrSafariGetTrackStats(peerConnection, track);\n }\n if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n return firefoxGetTrackStats(peerConnection, track, options.isRemote);\n }\n if (typeof options.testForSafari !== 'undefined' || isSafari) {\n if (typeof options.testForSafari !== 'undefined' || getSdpFormat() === 'unified') {\n return chromeOrSafariGetTrackStats(peerConnection, track);\n }\n // NOTE(syerrapragada): getStats() is not supported on\n // Safari versions where plan-b is the SDP format\n // due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601\n return Promise.reject(new Error([\n 'getStats() is not supported on this version of Safari',\n 'due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601'\n ].join(' ')));\n }\n return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Chrome or Safari.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @returns {Promise.>}\n */\nfunction chromeOrSafariGetTrackStats(peerConnection, track) {\n return new Promise(function(resolve, reject) {\n if (chromeMajorVersion && chromeMajorVersion < 67) {\n peerConnection.getStats(function(response) {\n resolve([standardizeChromeLegacyStats(response, track)]);\n }, null, reject);\n return;\n }\n peerConnection.getStats(track).then(function(response) {\n resolve(standardizeChromeOrSafariStats(response));\n }, reject);\n });\n}\n\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Firefox.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {boolean} isRemote\n * @returns {Promise.>}\n */\nfunction firefoxGetTrackStats(peerConnection, track, isRemote) {\n return new Promise(function(resolve, reject) {\n peerConnection.getStats(track).then(function(response) {\n resolve([standardizeFirefoxStats(response, isRemote)]);\n }, reject);\n });\n}\n\n/**\n * Standardize the MediaStreamTrack's legacy statistics in Chrome.\n * @param {RTCStatsResponse} response\n * @param {MediaStreamTrack} track\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeChromeLegacyStats(response, track) {\n var ssrcReport = response.result().find(function(report) {\n return report.type === 'ssrc' && report.stat('googTrackId') === track.id;\n });\n\n var standardizedStats = {};\n\n if (ssrcReport) {\n standardizedStats.timestamp = Math.round(Number(ssrcReport.timestamp));\n standardizedStats = ssrcReport.names().reduce(function(stats, name) {\n switch (name) {\n case 'googCodecName':\n stats.codecName = ssrcReport.stat(name);\n break;\n case 'googRtt':\n stats.roundTripTime = Number(ssrcReport.stat(name));\n break;\n case 'googJitterReceived':\n stats.jitter = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthInput':\n stats.frameWidthInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightInput':\n stats.frameHeightInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthSent':\n stats.frameWidthSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightSent':\n stats.frameHeightSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthReceived':\n stats.frameWidthReceived = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightReceived':\n stats.frameHeightReceived = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateInput':\n stats.frameRateInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateSent':\n stats.frameRateSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateReceived':\n stats.frameRateReceived = Number(ssrcReport.stat(name));\n break;\n case 'ssrc':\n stats[name] = ssrcReport.stat(name);\n break;\n case 'bytesReceived':\n case 'bytesSent':\n case 'packetsLost':\n case 'packetsReceived':\n case 'packetsSent':\n case 'audioInputLevel':\n case 'audioOutputLevel':\n stats[name] = Number(ssrcReport.stat(name));\n break;\n }\n\n return stats;\n }, standardizedStats);\n }\n\n return standardizedStats;\n}\n\n/**\n * Standardize the MediaStreamTrack's statistics in Chrome or Safari.\n * @param {RTCStatsResponse} response\n * @returns {Array}\n */\nfunction standardizeChromeOrSafariStats(response) {\n var inbound = null;\n\n // NOTE(mpatwardhan): We should expect more than one \"outbound-rtp\" stats for a\n // VP8 simulcast MediaStreamTrack.\n var outbound = [];\n\n var remoteInbound = null;\n var remoteOutbound = null;\n var track = null;\n var codec = null;\n\n response.forEach(function(stat) {\n switch (stat.type) {\n case 'inbound-rtp':\n inbound = stat;\n break;\n case 'outbound-rtp':\n outbound.push(stat);\n break;\n case 'track':\n track = stat;\n break;\n case 'codec':\n codec = stat;\n break;\n case 'remote-inbound-rtp':\n remoteInbound = stat;\n break;\n case 'remote-outbound-rtp':\n remoteOutbound = stat;\n break;\n }\n });\n\n var isRemote = track && track.remoteSource;\n var mainSources = isRemote ? [inbound] : outbound;\n var stats = [];\n var remoteSource = isRemote ? remoteOutbound : remoteInbound; // remote rtp stats\n\n mainSources.forEach(function(source) {\n var standardizedStats = {};\n var statSources = [\n source, // local rtp stats\n track,\n codec,\n remoteSource && remoteSource.ssrc === source.ssrc ? remoteSource : null, // remote rtp stats\n ];\n\n function getStatValue(name) {\n var sourceFound = statSources.find(function(statSource) {\n return statSource && typeof statSource[name] !== 'undefined';\n }) || null;\n\n return sourceFound ? sourceFound[name] : null;\n }\n\n var ssrc = getStatValue('ssrc');\n if (typeof ssrc === 'number') {\n standardizedStats.ssrc = String(ssrc);\n }\n\n var timestamp = getStatValue('timestamp');\n standardizedStats.timestamp = Math.round(timestamp);\n\n var mimeType = getStatValue('mimeType');\n if (typeof mimeType === 'string') {\n mimeType = mimeType.split('/');\n standardizedStats.codecName = mimeType[mimeType.length - 1];\n }\n\n var roundTripTime = getStatValue('roundTripTime');\n if (typeof roundTripTime === 'number') {\n standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n }\n\n var jitter = getStatValue('jitter');\n if (typeof jitter === 'number') {\n standardizedStats.jitter = Math.round(jitter * 1000);\n }\n\n var frameWidth = getStatValue('frameWidth');\n if (typeof frameWidth === 'number') {\n if (isRemote) {\n standardizedStats.frameWidthReceived = frameWidth;\n } else {\n standardizedStats.frameWidthSent = frameWidth;\n }\n }\n\n var frameHeight = getStatValue('frameHeight');\n if (typeof frameHeight === 'number') {\n if (isRemote) {\n standardizedStats.frameHeightReceived = frameHeight;\n } else {\n standardizedStats.frameHeightSent = frameHeight;\n }\n }\n\n var framesPerSecond = getStatValue('framesPerSecond');\n if (typeof framesPerSecond === 'number') {\n standardizedStats.frameRateSent = framesPerSecond;\n }\n\n var bytesReceived = getStatValue('bytesReceived');\n if (typeof bytesReceived === 'number') {\n standardizedStats.bytesReceived = bytesReceived;\n }\n\n var bytesSent = getStatValue('bytesSent');\n if (typeof bytesSent === 'number') {\n standardizedStats.bytesSent = bytesSent;\n }\n\n var packetsLost = getStatValue('packetsLost');\n if (typeof packetsLost === 'number') {\n standardizedStats.packetsLost = packetsLost;\n }\n\n var packetsReceived = getStatValue('packetsReceived');\n if (typeof packetsReceived === 'number') {\n standardizedStats.packetsReceived = packetsReceived;\n }\n\n var packetsSent = getStatValue('packetsSent');\n if (typeof packetsSent === 'number') {\n standardizedStats.packetsSent = packetsSent;\n }\n\n var audioLevel = getStatValue('audioLevel');\n if (typeof audioLevel === 'number') {\n audioLevel = Math.round(audioLevel * CHROME_LEGACY_MAX_AUDIO_LEVEL);\n if (isRemote) {\n standardizedStats.audioOutputLevel = audioLevel;\n } else {\n standardizedStats.audioInputLevel = audioLevel;\n }\n }\n\n var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n if (typeof totalPacketSendDalay === 'number') {\n standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n }\n\n var totalEncodeTime = getStatValue('totalEncodeTime');\n if (typeof totalEncodeTime === 'number') {\n standardizedStats.totalEncodeTime = totalEncodeTime;\n }\n\n var framesEncoded = getStatValue('framesEncoded');\n if (typeof framesEncoded === 'number') {\n standardizedStats.framesEncoded = framesEncoded;\n }\n\n var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n if (typeof estimatedPlayoutTimestamp === 'number') {\n standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n }\n\n var totalDecodeTime = getStatValue('totalDecodeTime');\n if (typeof totalDecodeTime === 'number') {\n standardizedStats.totalDecodeTime = totalDecodeTime;\n }\n\n var framesDecoded = getStatValue('framesDecoded');\n if (typeof framesDecoded === 'number') {\n standardizedStats.framesDecoded = framesDecoded;\n }\n\n var jitterBufferDelay = getStatValue('jitterBufferDelay');\n if (typeof jitterBufferDelay === 'number') {\n standardizedStats.jitterBufferDelay = jitterBufferDelay;\n }\n\n var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n if (typeof jitterBufferEmittedCount === 'number') {\n standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n }\n\n stats.push(standardizedStats);\n });\n\n return stats;\n}\n\n/**\n * Standardize the MediaStreamTrack's statistics in Firefox.\n * @param {RTCStatsReport} response\n * @param {boolean} isRemote\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeFirefoxStats(response, isRemote) {\n // NOTE(mroberts): If getStats is called on a closed RTCPeerConnection,\n // Firefox returns undefined instead of an RTCStatsReport. We workaround this\n // here. See the following bug for more details:\n //\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1377225\n //\n response = response || new Map();\n\n var inbound = null;\n var outbound = null;\n\n // NOTE(mmalavalli): Starting from Firefox 63, RTC{Inbound, Outbound}RTPStreamStats.isRemote\n // will be deprecated, followed by its removal in Firefox 66. Also, trying to\n // access members of the remote RTC{Inbound, Outbound}RTPStreamStats without\n // using RTCStatsReport.get(remoteId) will trigger console warnings. So, we\n // no longer depend on \"isRemote\", and we call RTCStatsReport.get(remoteId)\n // to access the remote RTC{Inbound, Outbound}RTPStreamStats.\n //\n // Source: https://blog.mozilla.org/webrtc/getstats-isremote-65/\n //\n response.forEach(function(stat) {\n if (stat.isRemote) {\n return;\n }\n switch (stat.type) {\n case 'inbound-rtp':\n inbound = stat;\n outbound = response.get(stat.remoteId);\n break;\n case 'outbound-rtp':\n outbound = stat;\n inbound = response.get(stat.remoteId);\n break;\n }\n });\n\n var first = isRemote ? inbound : outbound;\n var second = isRemote ? outbound : inbound;\n\n function getStatValue(name) {\n if (first && typeof first[name] !== 'undefined') {\n return first[name];\n }\n if (second && typeof second[name] !== 'undefined') {\n return second[name];\n }\n return null;\n }\n\n var standardizedStats = {};\n var timestamp = getStatValue('timestamp');\n standardizedStats.timestamp = Math.round(timestamp);\n\n var ssrc = getStatValue('ssrc');\n if (typeof ssrc === 'number') {\n standardizedStats.ssrc = String(ssrc);\n }\n\n var bytesSent = getStatValue('bytesSent');\n if (typeof bytesSent === 'number') {\n standardizedStats.bytesSent = bytesSent;\n }\n\n var packetsLost = getStatValue('packetsLost');\n if (typeof packetsLost === 'number') {\n standardizedStats.packetsLost = packetsLost;\n }\n\n var packetsSent = getStatValue('packetsSent');\n if (typeof packetsSent === 'number') {\n standardizedStats.packetsSent = packetsSent;\n }\n\n var roundTripTime = getStatValue('roundTripTime');\n if (typeof roundTripTime === 'number') {\n // roundTripTime is double - measured in seconds.\n // https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats-roundtriptime\n // cover it to milliseconds (and make it integer)\n standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n }\n\n var jitter = getStatValue('jitter');\n if (typeof jitter === 'number') {\n standardizedStats.jitter = Math.round(jitter * 1000);\n }\n\n var frameRateSent = getStatValue('framerateMean');\n if (typeof frameRateSent === 'number') {\n standardizedStats.frameRateSent = Math.round(frameRateSent);\n }\n\n var bytesReceived = getStatValue('bytesReceived');\n if (typeof bytesReceived === 'number') {\n standardizedStats.bytesReceived = bytesReceived;\n }\n\n var packetsReceived = getStatValue('packetsReceived');\n if (typeof packetsReceived === 'number') {\n standardizedStats.packetsReceived = packetsReceived;\n }\n\n var frameRateReceived = getStatValue('framerateMean');\n if (typeof frameRateReceived === 'number') {\n standardizedStats.frameRateReceived = Math.round(frameRateReceived);\n }\n\n var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n if (typeof totalPacketSendDalay === 'number') {\n standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n }\n\n var totalEncodeTime = getStatValue('totalEncodeTime');\n if (typeof totalEncodeTime === 'number') {\n standardizedStats.totalEncodeTime = totalEncodeTime;\n }\n\n var framesEncoded = getStatValue('framesEncoded');\n if (typeof framesEncoded === 'number') {\n standardizedStats.framesEncoded = framesEncoded;\n }\n\n var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n if (typeof estimatedPlayoutTimestamp === 'number') {\n standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n }\n\n var totalDecodeTime = getStatValue('totalDecodeTime');\n if (typeof totalDecodeTime === 'number') {\n standardizedStats.totalDecodeTime = totalDecodeTime;\n }\n\n var framesDecoded = getStatValue('framesDecoded');\n if (typeof framesDecoded === 'number') {\n standardizedStats.framesDecoded = framesDecoded;\n }\n\n var jitterBufferDelay = getStatValue('jitterBufferDelay');\n if (typeof jitterBufferDelay === 'number') {\n standardizedStats.jitterBufferDelay = jitterBufferDelay;\n }\n\n var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n if (typeof jitterBufferEmittedCount === 'number') {\n standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n }\n\n return standardizedStats;\n}\n\n/**\n * Standardized RTCIceCandidate statistics.\n * @typedef {object} StandardizedIceCandidateStatsReport\n * @property {'host'|'prflx'|'relay'|'srflx'} candidateType\n * @property {string} ip\n * @property {number} port\n * @property {number} priority\n * @property {'tcp'|'udp'} protocol\n * @property {string} url\n */\n\n/**\n * Standardized local RTCIceCandidate statistics.\n * @typedef {StandardizedIceCandidateStatsReport} StandardizedLocalIceCandidateStatsReport\n * @property {boolean} [deleted=false]\n * @property {'tcp'|'tls'|'udp'} relayProtocol\n */\n\n/**\n * Standardized active RTCIceCandidate pair statistics.\n * @typedef {object} StandardizedActiveIceCandidatePairStatsReport\n * @property {number} availableIncomingBitrate\n * @property {number} availableOutgoingBitrate\n * @property {number} bytesReceived\n * @property {number} bytesSent\n * @property {number} consentRequestsSent\n * @property {number} currentRoundTripTime\n * @property {number} lastPacketReceivedTimestamp\n * @property {number} lastPacketSentTimestamp\n * @property {StandardizedLocalIceCandidateStatsReport} localCandidate\n * @property {boolean} nominated\n * @property {number} priority\n * @property {boolean} readable\n * @property {StandardizedIceCandidateStatsReport} remoteCandidate\n * @property {number} requestsReceived\n * @property {number} requestsSent\n * @property {number} responsesReceived\n * @property {number} responsesSent\n * @property {number} retransmissionsReceived\n * @property {number} retransmissionsSent\n * @property {'frozen'|'waiting'|'in-progress'|'failed'|'succeeded'} state\n * @property {number} totalRoundTripTime\n * @property {string} transportId\n * @property {boolean} writable\n */\n\n/**\n * Standardized {@link RTCPeerConnection} statistics.\n * @typedef {Object} StandardizedStatsResponse\n * @property {StandardizedActiveIceCandidatePairStatsReport} activeIceCandidatePair - Stats for active ICE candidate pair\n * @property Array localAudioTrackStats - Stats for local audio MediaStreamTracks\n * @property Array localVideoTrackStats - Stats for local video MediaStreamTracks\n * @property Array remoteAudioTrackStats - Stats for remote audio MediaStreamTracks\n * @property Array remoteVideoTrackStats - Stats for remote video MediaStreamTracks\n */\n\n/**\n * Standardized MediaStreamTrack statistics.\n * @typedef {Object} StandardizedTrackStatsReport\n * @property {string} trackId - MediaStreamTrack ID\n * @property {string} ssrc - SSRC of the MediaStreamTrack\n * @property {number} timestamp - The Unix timestamp in milliseconds\n * @property {string} [codecName] - Name of the codec used to encode the MediaStreamTrack's media\n * @property {number} [roundTripTime] - Round trip time in milliseconds\n * @property {number} [jitter] - Jitter in milliseconds\n * @property {number} [frameWidthInput] - Width in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameHeightInput] - Height in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameWidthSent] - Width in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameHeightSent] - Height in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameWidthReceived] - Width in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameHeightReceived] - Height in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameRateInput] - Captured frames per second of the local video MediaStreamTrack\n * @property {number} [frameRateSent] - Frames per second of the local video MediaStreamTrack's encoded video\n * @property {number} [frameRateReceived] - Frames per second of the remote video MediaStreamTrack's received video\n * @property {number} [bytesReceived] - Number of bytes of the remote MediaStreamTrack's media received\n * @property {number} [bytesSent] - Number of bytes of the local MediaStreamTrack's media sent\n * @property {number} [packetsLost] - Number of packets of the MediaStreamTrack's media lost\n * @property {number} [packetsReceived] - Number of packets of the remote MediaStreamTrack's media received\n * @property {number} [packetsSent] - Number of packets of the local MediaStreamTrack's media sent\n * @property {number} [totalPacketSendDelay] - The total number of seconds that the local MediaStreamTrack's packets\n * have spent buffered locally before being sent over the network\n * @property {number} [totalEncodeTime] - The total number of seconds spent on encoding the local MediaStreamTrack's frames\n * @property {number} [framesEncoded] - The total number of frames of the local MediaStreamTrack that have been encoded sor far\n * @property {number} [estimatedPlayoutTimestamp] - The estimated playout time of the remote MediaStreamTrack\n * @property {number} [totalDecodeTime] - The total number of seconds spent on decoding the remote MediaStreamTrack's frames\n * @property {number} [framesDecoded] - The total number of frames of the remote MediaStreamTrack that have been decoded sor far\n * @property {number} [jitterBufferDelay] - The sum of the time, in seconds, each audio sample or a video frame of the remote\n * MediaStreamTrack takes from the time the first packet is received by the jitter buffer to the time it exits the jitter buffer\n * @property {number} [jitterBufferEmittedCount] - The total number of audio samples or video frames that have come out of the jitter buffer\n * @property {AudioLevel} [audioInputLevel] - The {@link AudioLevel} of the local audio MediaStreamTrack\n * @property {AudioLevel} [audioOutputLevel] - The {@link AudioLevel} of the remote video MediaStreamTrack\n */\n\nmodule.exports = getStats;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL2dldHN0YXRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi9nZXRzdGF0cy5qcz9mMTA5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGZsYXRNYXAgPSByZXF1aXJlKCcuL3V0aWwnKS5mbGF0TWFwO1xudmFyIGd1ZXNzQnJvd3NlciA9IHJlcXVpcmUoJy4vdXRpbCcpLmd1ZXNzQnJvd3NlcjtcbnZhciBndWVzc0Jyb3dzZXJWZXJzaW9uID0gcmVxdWlyZSgnLi91dGlsJykuZ3Vlc3NCcm93c2VyVmVyc2lvbjtcbnZhciBnZXRTZHBGb3JtYXQgPSByZXF1aXJlKCcuL3V0aWwvc2RwJykuZ2V0U2RwRm9ybWF0O1xuXG52YXIgZ3Vlc3MgPSBndWVzc0Jyb3dzZXIoKTtcbnZhciBndWVzc1ZlcnNpb24gPSBndWVzc0Jyb3dzZXJWZXJzaW9uKCk7XG52YXIgaXNDaHJvbWUgPSBndWVzcyA9PT0gJ2Nocm9tZSc7XG52YXIgaXNGaXJlZm94ID0gZ3Vlc3MgPT09ICdmaXJlZm94JztcbnZhciBpc1NhZmFyaSA9IGd1ZXNzID09PSAnc2FmYXJpJztcblxudmFyIGNocm9tZU1ham9yVmVyc2lvbiA9IGlzQ2hyb21lID8gZ3Vlc3NWZXJzaW9uLm1ham9yIDogbnVsbDtcblxudmFyIENIUk9NRV9MRUdBQ1lfTUFYX0FVRElPX0xFVkVMID0gMzI3Njc7XG5cbi8qKlxuICogR2V0IHRoZSBzdGFuZGFyZGl6ZWQge0BsaW5rIFJUQ1BlZXJDb25uZWN0aW9ufSBzdGF0aXN0aWNzLlxuICogQHBhcmFtIHtSVENQZWVyQ29ubmVjdGlvbn0gcGVlckNvbm5lY3Rpb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBVc2VkIGZvciB0ZXN0aW5nXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48U3RhbmRhcmRpemVkU3RhdHNSZXNwb25zZT59XG4gKi9cbmZ1bmN0aW9uIGdldFN0YXRzKHBlZXJDb25uZWN0aW9uLCBvcHRpb25zKSB7XG4gIGlmICghKHBlZXJDb25uZWN0aW9uICYmIHR5cGVvZiBwZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdHaXZlbiBQZWVyQ29ubmVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGdldFN0YXRzJykpO1xuICB9XG4gIHJldHVybiBfZ2V0U3RhdHMocGVlckNvbm5lY3Rpb24sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIGdldFN0YXRzKCkgaW1wbGVtZW50YXRpb24uXG4gKiBAcGFyYW0ge1JUQ1BlZXJDb25uZWN0aW9ufSBwZWVyQ29ubmVjdGlvblxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIFVzZWQgZm9yIHRlc3RpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxTdGFuZGFyZGl6ZWRTdGF0c1Jlc3BvbnNlPn1cbiAqL1xuZnVuY3Rpb24gX2dldFN0YXRzKHBlZXJDb25uZWN0aW9uLCBvcHRpb25zKSB7XG4gIHZhciBsb2NhbEF1ZGlvVHJhY2tzID0gZ2V0VHJhY2tzKHBlZXJDb25uZWN0aW9uLCAnYXVkaW8nLCAnbG9jYWwnKTtcbiAgdmFyIGxvY2FsVmlkZW9UcmFja3MgPSBnZXRUcmFja3MocGVlckNvbm5lY3Rpb24sICd2aWRlbycsICdsb2NhbCcpO1xuICB2YXIgcmVtb3RlQXVkaW9UcmFja3MgPSBnZXRUcmFja3MocGVlckNvbm5lY3Rpb24sICdhdWRpbycpO1xuICB2YXIgcmVtb3RlVmlkZW9UcmFja3MgPSBnZXRUcmFja3MocGVlckNvbm5lY3Rpb24sICd2aWRlbycpO1xuXG4gIHZhciBzdGF0c1Jlc3BvbnNlID0ge1xuICAgIGFjdGl2ZUljZUNhbmRpZGF0ZVBhaXI6IG51bGwsXG4gICAgbG9jYWxBdWRpb1RyYWNrU3RhdHM6IFtdLFxuICAgIGxvY2FsVmlkZW9UcmFja1N0YXRzOiBbXSxcbiAgICByZW1vdGVBdWRpb1RyYWNrU3RhdHM6IFtdLFxuICAgIHJlbW90ZVZpZGVvVHJhY2tTdGF0czogW11cbiAgfTtcblxuICB2YXIgdHJhY2tTdGF0c1Byb21pc2VzID0gZmxhdE1hcChbXG4gICAgW2xvY2FsQXVkaW9UcmFja3MsICdsb2NhbEF1ZGlvVHJhY2tTdGF0cycsIGZhbHNlXSxcbiAgICBbbG9jYWxWaWRlb1RyYWNrcywgJ2xvY2FsVmlkZW9UcmFja1N0YXRzJywgZmFsc2VdLFxuICAgIFtyZW1vdGVBdWRpb1RyYWNrcywgJ3JlbW90ZUF1ZGlvVHJhY2tTdGF0cycsIHRydWVdLFxuICAgIFtyZW1vdGVWaWRlb1RyYWNrcywgJ3JlbW90ZVZpZGVvVHJhY2tTdGF0cycsIHRydWVdXG4gIF0sIGZ1bmN0aW9uKHRyaXBsZSkge1xuICAgIHZhciB0cmFja3MgPSB0cmlwbGVbMF07XG4gICAgdmFyIHN0YXRzQXJyYXlOYW1lID0gdHJpcGxlWzFdO1xuICAgIHZhciBpc1JlbW90ZSA9IHRyaXBsZVsyXTtcbiAgICByZXR1cm4gdHJhY2tzLm1hcChmdW5jdGlvbih0cmFjaykge1xuICAgICAgcmV0dXJuIGdldFRyYWNrU3RhdHMocGVlckNvbm5lY3Rpb24sIHRyYWNrLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgaXNSZW1vdGU6IGlzUmVtb3RlXG4gICAgICB9LCBvcHRpb25zKSkudGhlbihmdW5jdGlvbih0cmFja1N0YXRzQXJyYXkpIHtcbiAgICAgICAgdHJhY2tTdGF0c0FycmF5LmZvckVhY2goZnVuY3Rpb24odHJhY2tTdGF0cykge1xuICAgICAgICAgIHRyYWNrU3RhdHMudHJhY2tJZCA9IHRyYWNrLmlkO1xuICAgICAgICAgIHN0YXRzUmVzcG9uc2Vbc3RhdHNBcnJheU5hbWVdLnB1c2godHJhY2tTdGF0cyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBQcm9taXNlLmFsbCh0cmFja1N0YXRzUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGdldEFjdGl2ZUljZUNhbmRpZGF0ZVBhaXJTdGF0cyhwZWVyQ29ubmVjdGlvbiwgb3B0aW9ucyk7XG4gIH0pLnRoZW4oZnVuY3Rpb24oYWN0aXZlSWNlQ2FuZGlkYXRlUGFpclN0YXRzUmVwb3J0KSB7XG4gICAgc3RhdHNSZXNwb25zZS5hY3RpdmVJY2VDYW5kaWRhdGVQYWlyID0gYWN0aXZlSWNlQ2FuZGlkYXRlUGFpclN0YXRzUmVwb3J0O1xuICAgIHJldHVybiBzdGF0c1Jlc3BvbnNlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSB0aGUge0BsaW5rIFN0YW5kYXJkaXplZEFjdGl2ZUljZUNhbmRpZGF0ZVBhaXJTdGF0c1JlcG9ydH0gZm9yIHRoZVxuICoge0BsaW5rIFJUQ1BlZXJDb25uZWN0aW9ufS5cbiAqIEBwYXJhbSB7UlRDUGVlckNvbm5lY3Rpb259IHBlZXJDb25uZWN0aW9uXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTdGFuZGFyZGl6ZWRBY3RpdmVJY2VDYW5kaWRhdGVQYWlyU3RhdHNSZXBvcnQ+fVxuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVJY2VDYW5kaWRhdGVQYWlyU3RhdHMocGVlckNvbm5lY3Rpb24sIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnRlc3RGb3JDaHJvbWUgIT09ICd1bmRlZmluZWQnIHx8IGlzQ2hyb21lXG4gICAgfHwgdHlwZW9mIG9wdGlvbnMudGVzdEZvclNhZmFyaSAgIT09ICd1bmRlZmluZWQnIHx8IGlzU2FmYXJpKSB7XG4gICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmdldFN0YXRzKCkudGhlbihcbiAgICAgIHN0YW5kYXJkaXplQ2hyb21lT3JTYWZhcmlBY3RpdmVJY2VDYW5kaWRhdGVQYWlyU3RhdHMpO1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy50ZXN0Rm9yRmlyZWZveCAhPT0gJ3VuZGVmaW5lZCcgfHwgaXNGaXJlZm94KSB7XG4gICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmdldFN0YXRzKCkudGhlbihzdGFuZGFyZGl6ZUZpcmVmb3hBY3RpdmVJY2VDYW5kaWRhdGVQYWlyU3RhdHMpO1xuICB9XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1JUQ1BlZXJDb25uZWN0aW9uI2dldFN0YXRzKCkgbm90IHN1cHBvcnRlZCcpKTtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZGl6ZSB0aGUgYWN0aXZlIFJUQ0ljZUNhbmRpZGF0ZSBwYWlyJ3Mgc3RhdGlzdGljcyBpbiBDaHJvbWUgb3IgU2FmYXJpLlxuICogQHBhcmFtIHtSVENTdGF0c1JlcG9ydH0gc3RhdHNcbiAqIEByZXR1cm5zIHs/U3RhbmRhcmRpemVkQWN0aXZlSWNlQ2FuZGlkYXRlUGFpclN0YXRzUmVwb3J0fVxuICovXG5mdW5jdGlvbiBzdGFuZGFyZGl6ZUNocm9tZU9yU2FmYXJpQWN0aXZlSWNlQ2FuZGlkYXRlUGFpclN0YXRzKHN0YXRzKSB7XG4gIHZhciBhY3RpdmVDYW5kaWRhdGVQYWlyU3RhdHMgPSBBcnJheS5mcm9tKHN0YXRzLnZhbHVlcygpKS5maW5kKGZ1bmN0aW9uKHN0YXQpIHtcbiAgICByZXR1cm4gc3RhdC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHN0YXQubm9taW5hdGVkO1xuICB9KTtcblxuICBpZiAoIWFjdGl2ZUNhbmRpZGF0ZVBhaXJTdGF0cykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFjdGl2ZUxvY2FsQ2FuZGlkYXRlU3RhdHMgPSBzdGF0cy5nZXQoYWN0aXZlQ2FuZGlkYXRlUGFpclN0YXRzLmxvY2FsQ2FuZGlkYXRlSWQpO1xuICB2YXIgYWN0aXZlUmVtb3RlQ2FuZGlkYXRlU3RhdHMgPSBzdGF0cy5nZXQoYWN0aXZlQ2FuZGlkYXRlUGFpclN0YXRzLnJlbW90ZUNhbmRpZGF0ZUlkKTtcblxuICB2YXIgc3RhbmRhcmRpemVkQ2FuZGlkYXRlU3RhdHNLZXlzID0gW1xuICAgIHsga2V5OiAnY2FuZGlkYXRlVHlwZScsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgeyBrZXk6ICdpcCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgeyBrZXk6ICdwb3J0JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3ByaW9yaXR5JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3Byb3RvY29sJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICB7IGtleTogJ3VybCcsIHR5cGU6ICdzdHJpbmcnIH1cbiAgXTtcblxuICB2YXIgc3RhbmRhcmRpemVkTG9jYWxDYW5kaWRhdGVTdGF0c0tleXMgPSBzdGFuZGFyZGl6ZWRDYW5kaWRhdGVTdGF0c0tleXMuY29uY2F0KFtcbiAgICB7IGtleTogJ2RlbGV0ZWQnLCB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICB7IGtleTogJ3JlbGF5UHJvdG9jb2wnLCB0eXBlOiAnc3RyaW5nJyB9XG4gIF0pO1xuXG4gIHZhciBzdGFuZGF0ZGl6ZWRMb2NhbENhbmRpZGF0ZVN0YXRzUmVwb3J0ID0gYWN0aXZlTG9jYWxDYW5kaWRhdGVTdGF0c1xuICAgID8gc3RhbmRhcmRpemVkTG9jYWxDYW5kaWRhdGVTdGF0c0tleXMucmVkdWNlKGZ1bmN0aW9uKHJlcG9ydCwga2V5SW5mbykge1xuICAgICAgcmVwb3J0W2tleUluZm8ua2V5XSA9IHR5cGVvZiBhY3RpdmVMb2NhbENhbmRpZGF0ZVN0YXRzW2tleUluZm8ua2V5XSA9PT0ga2V5SW5mby50eXBlXG4gICAgICAgID8gYWN0aXZlTG9jYWxDYW5kaWRhdGVTdGF0c1trZXlJbmZvLmtleV1cbiAgICAgICAgOiBrZXlJbmZvLmtleSA9PT0gJ2RlbGV0ZWQnID8gZmFsc2UgOiBudWxsO1xuICAgICAgcmV0dXJuIHJlcG9ydDtcbiAgICB9LCB7fSlcbiAgICA6IG51bGw7XG5cbiAgdmFyIHN0YW5kYXJkaXplZFJlbW90ZUNhbmRpZGF0ZVN0YXRzUmVwb3J0ID0gYWN0aXZlUmVtb3RlQ2FuZGlkYXRlU3RhdHNcbiAgICA/IHN0YW5kYXJkaXplZENhbmRpZGF0ZVN0YXRzS2V5cy5yZWR1Y2UoZnVuY3Rpb24ocmVwb3J0LCBrZXlJbmZvKSB7XG4gICAgICByZXBvcnRba2V5SW5mby5rZXldID0gdHlwZW9mIGFjdGl2ZVJlbW90ZUNhbmRpZGF0ZVN0YXRzW2tleUluZm8ua2V5XSA9PT0ga2V5SW5mby50eXBlXG4gICAgICAgID8gYWN0aXZlUmVtb3RlQ2FuZGlkYXRlU3RhdHNba2V5SW5mby5rZXldXG4gICAgICAgIDogbnVsbDtcbiAgICAgIHJldHVybiByZXBvcnQ7XG4gICAgfSwge30pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICdhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGUnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnYXZhaWxhYmxlT3V0Z29pbmdCaXRyYXRlJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2J5dGVzUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnYnl0ZXNTZW50JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2NvbnNlbnRSZXF1ZXN0c1NlbnQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnY3VycmVudFJvdW5kVHJpcFRpbWUnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2xhc3RQYWNrZXRTZW50VGltZXN0YW1wJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ25vbWluYXRlZCcsIHR5cGU6ICdib29sZWFuJyB9LFxuICAgIHsga2V5OiAncHJpb3JpdHknLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmVhZGFibGUnLCB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICB7IGtleTogJ3JlcXVlc3RzUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmVxdWVzdHNTZW50JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3Jlc3BvbnNlc1JlY2VpdmVkJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3Jlc3BvbnNlc1NlbnQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmV0cmFuc21pc3Npb25zUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmV0cmFuc21pc3Npb25zU2VudCcsIHR5cGU6ICdudW1iZXInIH0sXG4gICAgeyBrZXk6ICdzdGF0ZScsIHR5cGU6ICdzdHJpbmcnLCBmaXh1cDogZnVuY3Rpb24oc3RhdGUpIHsgcmV0dXJuIHN0YXRlID09PSAnaW5wcm9ncmVzcycgPyAnaW4tcHJvZ3Jlc3MnIDogc3RhdGU7IH0gfSxcbiAgICB7IGtleTogJ3RvdGFsUm91bmRUcmlwVGltZScsIHR5cGU6ICdudW1iZXInIH0sXG4gICAgeyBrZXk6ICd0cmFuc3BvcnRJZCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgeyBrZXk6ICd3cml0YWJsZScsIHR5cGU6ICdib29sZWFuJyB9XG4gIF0ucmVkdWNlKGZ1bmN0aW9uKHJlcG9ydCwga2V5SW5mbykge1xuICAgIHJlcG9ydFtrZXlJbmZvLmtleV0gPSB0eXBlb2YgYWN0aXZlQ2FuZGlkYXRlUGFpclN0YXRzW2tleUluZm8ua2V5XSA9PT0ga2V5SW5mby50eXBlXG4gICAgICA/IChrZXlJbmZvLmZpeHVwID8ga2V5SW5mby5maXh1cChhY3RpdmVDYW5kaWRhdGVQYWlyU3RhdHNba2V5SW5mby5rZXldKSA6IGFjdGl2ZUNhbmRpZGF0ZVBhaXJTdGF0c1trZXlJbmZvLmtleV0pXG4gICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHJlcG9ydDtcbiAgfSwge1xuICAgIGxvY2FsQ2FuZGlkYXRlOiBzdGFuZGF0ZGl6ZWRMb2NhbENhbmRpZGF0ZVN0YXRzUmVwb3J0LFxuICAgIHJlbW90ZUNhbmRpZGF0ZTogc3RhbmRhcmRpemVkUmVtb3RlQ2FuZGlkYXRlU3RhdHNSZXBvcnRcbiAgfSk7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemUgdGhlIGFjdGl2ZSBSVENJY2VDYW5kaWRhdGUgcGFpcidzIHN0YXRpc3RpY3MgaW4gRmlyZWZveC5cbiAqIEBwYXJhbSB7UlRDU3RhdHNSZXBvcnR9IHN0YXRzXG4gKiBAcmV0dXJucyB7P1N0YW5kYXJkaXplZEFjdGl2ZUljZUNhbmRpZGF0ZVBhaXJTdGF0c1JlcG9ydH1cbiAqL1xuZnVuY3Rpb24gc3RhbmRhcmRpemVGaXJlZm94QWN0aXZlSWNlQ2FuZGlkYXRlUGFpclN0YXRzKHN0YXRzKSB7XG4gIHZhciBhY3RpdmVDYW5kaWRhdGVQYWlyU3RhdHMgPSBBcnJheS5mcm9tKHN0YXRzLnZhbHVlcygpKS5maW5kKGZ1bmN0aW9uKHN0YXQpIHtcbiAgICByZXR1cm4gc3RhdC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHN0YXQubm9taW5hdGVkO1xuICB9KTtcblxuICBpZiAoIWFjdGl2ZUNhbmRpZGF0ZVBhaXJTdGF0cykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFjdGl2ZUxvY2FsQ2FuZGlkYXRlU3RhdHMgPSBzdGF0cy5nZXQoYWN0aXZlQ2FuZGlkYXRlUGFpclN0YXRzLmxvY2FsQ2FuZGlkYXRlSWQpO1xuICB2YXIgYWN0aXZlUmVtb3RlQ2FuZGlkYXRlU3RhdHMgPSBzdGF0cy5nZXQoYWN0aXZlQ2FuZGlkYXRlUGFpclN0YXRzLnJlbW90ZUNhbmRpZGF0ZUlkKTtcblxuICB2YXIgc3RhbmRhcmRpemVkQ2FuZGlkYXRlU3RhdHNLZXlzID0gW1xuICAgIHsga2V5OiAnY2FuZGlkYXRlVHlwZScsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgeyBrZXk6ICdpcCcsIGZmS2V5czogWydhZGRyZXNzJywgJ2lwQWRkcmVzcyddLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgIHsga2V5OiAncG9ydCcsIGZmS2V5czogWydwb3J0TnVtYmVyJ10sIHR5cGU6ICdudW1iZXInIH0sXG4gICAgeyBrZXk6ICdwcmlvcml0eScsIHR5cGU6ICdudW1iZXInIH0sXG4gICAgeyBrZXk6ICdwcm90b2NvbCcsIGZmS2V5czogWyd0cmFuc3BvcnQnXSwgdHlwZTogJ3N0cmluZycgfSxcbiAgICB7IGtleTogJ3VybCcsIHR5cGU6ICdzdHJpbmcnIH1cbiAgXTtcblxuICB2YXIgc3RhbmRhcmRpemVkTG9jYWxDYW5kaWRhdGVTdGF0c0tleXMgPSBzdGFuZGFyZGl6ZWRDYW5kaWRhdGVTdGF0c0tleXMuY29uY2F0KFtcbiAgICB7IGtleTogJ2RlbGV0ZWQnLCB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICB7IGtleTogJ3JlbGF5UHJvdG9jb2wnLCB0eXBlOiAnc3RyaW5nJyB9XG4gIF0pO1xuXG4gIHZhciBjYW5kaWRhdGVUeXBlcyA9IHtcbiAgICBob3N0OiAnaG9zdCcsXG4gICAgcGVlcnJlZmxleGl2ZTogJ3ByZmx4JyxcbiAgICByZWxheWVkOiAncmVsYXknLFxuICAgIHNlcnZlcnJlZmxleGl2ZTogJ3NyZmx4J1xuICB9O1xuXG4gIHZhciBzdGFuZGF0ZGl6ZWRMb2NhbENhbmRpZGF0ZVN0YXRzUmVwb3J0ID0gYWN0aXZlTG9jYWxDYW5kaWRhdGVTdGF0c1xuICAgID8gc3RhbmRhcmRpemVkTG9jYWxDYW5kaWRhdGVTdGF0c0tleXMucmVkdWNlKGZ1bmN0aW9uKHJlcG9ydCwga2V5SW5mbykge1xuICAgICAgdmFyIGtleSA9IGtleUluZm8uZmZLZXlzICYmIGtleUluZm8uZmZLZXlzLmZpbmQoZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkgaW4gYWN0aXZlTG9jYWxDYW5kaWRhdGVTdGF0cztcbiAgICAgIH0pIHx8IGtleUluZm8ua2V5O1xuICAgICAgcmVwb3J0W2tleUluZm8ua2V5XSA9IHR5cGVvZiBhY3RpdmVMb2NhbENhbmRpZGF0ZVN0YXRzW2tleV0gPT09IGtleUluZm8udHlwZVxuICAgICAgICA/IGtleSA9PT0gJ2NhbmRpZGF0ZVR5cGUnXG4gICAgICAgICAgPyBjYW5kaWRhdGVUeXBlc1thY3RpdmVMb2NhbENhbmRpZGF0ZVN0YXRzW2tleV1dIHx8IGFjdGl2ZUxvY2FsQ2FuZGlkYXRlU3RhdHNba2V5XVxuICAgICAgICAgIDogYWN0aXZlTG9jYWxDYW5kaWRhdGVTdGF0c1trZXldXG4gICAgICAgIDoga2V5ID09PSAnZGVsZXRlZCcgPyBmYWxzZSA6IG51bGw7XG4gICAgICByZXR1cm4gcmVwb3J0O1xuICAgIH0sIHt9KVxuICAgIDogbnVsbDtcblxuICB2YXIgc3RhbmRhcmRpemVkUmVtb3RlQ2FuZGlkYXRlU3RhdHNSZXBvcnQgPSBhY3RpdmVSZW1vdGVDYW5kaWRhdGVTdGF0c1xuICAgID8gc3RhbmRhcmRpemVkQ2FuZGlkYXRlU3RhdHNLZXlzLnJlZHVjZShmdW5jdGlvbihyZXBvcnQsIGtleUluZm8pIHtcbiAgICAgIHZhciBrZXkgPSBrZXlJbmZvLmZmS2V5cyAmJiBrZXlJbmZvLmZmS2V5cy5maW5kKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5IGluIGFjdGl2ZVJlbW90ZUNhbmRpZGF0ZVN0YXRzO1xuICAgICAgfSkgfHwga2V5SW5mby5rZXk7XG4gICAgICByZXBvcnRba2V5SW5mby5rZXldID0gdHlwZW9mIGFjdGl2ZVJlbW90ZUNhbmRpZGF0ZVN0YXRzW2tleV0gPT09IGtleUluZm8udHlwZVxuICAgICAgICA/IGtleSA9PT0gJ2NhbmRpZGF0ZVR5cGUnXG4gICAgICAgICAgPyBjYW5kaWRhdGVUeXBlc1thY3RpdmVSZW1vdGVDYW5kaWRhdGVTdGF0c1trZXldXSB8fCBhY3RpdmVSZW1vdGVDYW5kaWRhdGVTdGF0c1trZXldXG4gICAgICAgICAgOiBhY3RpdmVSZW1vdGVDYW5kaWRhdGVTdGF0c1trZXldXG4gICAgICAgIDogbnVsbDtcbiAgICAgIHJldHVybiByZXBvcnQ7XG4gICAgfSwge30pXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiBbXG4gICAgeyBrZXk6ICdhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGUnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnYXZhaWxhYmxlT3V0Z29pbmdCaXRyYXRlJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2J5dGVzUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnYnl0ZXNTZW50JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2NvbnNlbnRSZXF1ZXN0c1NlbnQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnY3VycmVudFJvdW5kVHJpcFRpbWUnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAnbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ2xhc3RQYWNrZXRTZW50VGltZXN0YW1wJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ25vbWluYXRlZCcsIHR5cGU6ICdib29sZWFuJyB9LFxuICAgIHsga2V5OiAncHJpb3JpdHknLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmVhZGFibGUnLCB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICB7IGtleTogJ3JlcXVlc3RzUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmVxdWVzdHNTZW50JywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3Jlc3BvbnNlc1JlY2VpdmVkJywgdHlwZTogJ251bWJlcicgfSxcbiAgICB7IGtleTogJ3Jlc3BvbnNlc1NlbnQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmV0cmFuc21pc3Npb25zUmVjZWl2ZWQnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAncmV0cmFuc21pc3Npb25zU2VudCcsIHR5cGU6ICdudW1iZXInIH0sXG4gICAgeyBrZXk6ICdzdGF0ZScsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgeyBrZXk6ICd0b3RhbFJvdW5kVHJpcFRpbWUnLCB0eXBlOiAnbnVtYmVyJyB9LFxuICAgIHsga2V5OiAndHJhbnNwb3J0SWQnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgIHsga2V5OiAnd3JpdGFibGUnLCB0eXBlOiAnYm9vbGVhbicgfVxuICBdLnJlZHVjZShmdW5jdGlvbihyZXBvcnQsIGtleUluZm8pIHtcbiAgICByZXBvcnRba2V5SW5mby5rZXldID0gdHlwZW9mIGFjdGl2ZUNhbmRpZGF0ZVBhaXJTdGF0c1trZXlJbmZvLmtleV0gPT09IGtleUluZm8udHlwZVxuICAgICAgPyBhY3RpdmVDYW5kaWRhdGVQYWlyU3RhdHNba2V5SW5mby5rZXldXG4gICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHJlcG9ydDtcbiAgfSwge1xuICAgIGxvY2FsQ2FuZGlkYXRlOiBzdGFuZGF0ZGl6ZWRMb2NhbENhbmRpZGF0ZVN0YXRzUmVwb3J0LFxuICAgIHJlbW90ZUNhbmRpZGF0ZTogc3RhbmRhcmRpemVkUmVtb3RlQ2FuZGlkYXRlU3RhdHNSZXBvcnRcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGxvY2FsL3JlbW90ZSBhdWRpby92aWRlbyBNZWRpYVN0cmVhbVRyYWNrcy5cbiAqIEBwYXJhbSB7UlRDUGVlckNvbm5lY3Rpb259IHBlZXJDb25uZWN0aW9uIC0gVGhlIFJUQ1BlZXJDb25uZWN0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30ga2luZCAtICdhdWRpbycgb3IgJ3ZpZGVvJ1xuICogQHBhcmFtIHtzdHJpbmd9IFtsb2NhbE9yUmVtb3RlXSAtICdsb2NhbCcgb3IgJ3JlbW90ZSdcbiAqIEByZXR1cm5zIHtBcnJheTxNZWRpYVN0cmVhbVRyYWNrPn1cbiAqL1xuZnVuY3Rpb24gZ2V0VHJhY2tzKHBlZXJDb25uZWN0aW9uLCBraW5kLCBsb2NhbE9yUmVtb3RlKSB7XG4gIHZhciBnZXRTZW5kZXJzT3JSZWNlaXZlcnMgPSBsb2NhbE9yUmVtb3RlID09PSAnbG9jYWwnID8gJ2dldFNlbmRlcnMnIDogJ2dldFJlY2VpdmVycyc7XG4gIGlmIChwZWVyQ29ubmVjdGlvbltnZXRTZW5kZXJzT3JSZWNlaXZlcnNdKSB7XG4gICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uW2dldFNlbmRlcnNPclJlY2VpdmVyc10oKS5tYXAoZnVuY3Rpb24oc2VuZGVyT3JSZWNlaXZlcikge1xuICAgICAgcmV0dXJuIHNlbmRlck9yUmVjZWl2ZXIudHJhY2s7XG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uKHRyYWNrKSB7XG4gICAgICByZXR1cm4gdHJhY2sgJiYgdHJhY2sua2luZCA9PT0ga2luZDtcbiAgICB9KTtcbiAgfVxuICB2YXIgZ2V0U3RyZWFtcyA9IGxvY2FsT3JSZW1vdGUgPT09ICdsb2NhbCcgPyAnZ2V0TG9jYWxTdHJlYW1zJyA6ICdnZXRSZW1vdGVTdHJlYW1zJztcbiAgcmV0dXJuIGZsYXRNYXAocGVlckNvbm5lY3Rpb25bZ2V0U3RyZWFtc10oKSwgZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgdmFyIGdldFRyYWNrcyA9IGtpbmQgPT09ICdhdWRpbycgPyAnZ2V0QXVkaW9UcmFja3MnIDogJ2dldFZpZGVvVHJhY2tzJztcbiAgICByZXR1cm4gc3RyZWFtW2dldFRyYWNrc10oKTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzdGFuZGFyZGl6ZWQgc3RhdGlzdGljcyBmb3IgYSBwYXJ0aWN1bGFyIE1lZGlhU3RyZWFtVHJhY2suXG4gKiBAcGFyYW0ge1JUQ1BlZXJDb25uZWN0aW9ufSBwZWVyQ29ubmVjdGlvblxuICogQHBhcmFtIHtNZWRpYVN0cmVhbVRyYWNrfSB0cmFja1xuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIFVzZWQgZm9yIHRlc3RpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBcnJheTxTdGFuZGFyZGl6ZWRUcmFja1N0YXRzUmVwb3J0Pj59XG4gKi9cbmZ1bmN0aW9uIGdldFRyYWNrU3RhdHMocGVlckNvbm5lY3Rpb24sIHRyYWNrLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy50ZXN0Rm9yQ2hyb21lICE9PSAndW5kZWZpbmVkJyB8fCBpc0Nocm9tZSkge1xuICAgIHJldHVybiBjaHJvbWVPclNhZmFyaUdldFRyYWNrU3RhdHMocGVlckNvbm5lY3Rpb24sIHRyYWNrKTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMudGVzdEZvckZpcmVmb3ggICE9PSAndW5kZWZpbmVkJyB8fCBpc0ZpcmVmb3gpIHtcbiAgICByZXR1cm4gZmlyZWZveEdldFRyYWNrU3RhdHMocGVlckNvbm5lY3Rpb24sIHRyYWNrLCBvcHRpb25zLmlzUmVtb3RlKTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMudGVzdEZvclNhZmFyaSAgIT09ICd1bmRlZmluZWQnIHx8IGlzU2FmYXJpKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRlc3RGb3JTYWZhcmkgICE9PSAndW5kZWZpbmVkJyB8fCBnZXRTZHBGb3JtYXQoKSA9PT0gJ3VuaWZpZWQnKSB7XG4gICAgICByZXR1cm4gY2hyb21lT3JTYWZhcmlHZXRUcmFja1N0YXRzKHBlZXJDb25uZWN0aW9uLCB0cmFjayk7XG4gICAgfVxuICAgIC8vIE5PVEUoc3llcnJhcHJhZ2FkYSk6IGdldFN0YXRzKCkgaXMgbm90IHN1cHBvcnRlZCBvblxuICAgIC8vIFNhZmFyaSB2ZXJzaW9ucyB3aGVyZSBwbGFuLWIgaXMgdGhlIFNEUCBmb3JtYXRcbiAgICAvLyBkdWUgdG8gdGhpcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2MDFcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFtcbiAgICAgICdnZXRTdGF0cygpIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaScsXG4gICAgICAnZHVlIHRvIHRoaXMgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjAxJ1xuICAgIF0uam9pbignICcpKSk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignUlRDUGVlckNvbm5lY3Rpb24jZ2V0U3RhdHMoKSBub3Qgc3VwcG9ydGVkJykpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhbmRhcmRpemVkIHN0YXRpc3RpY3MgZm9yIGEgcGFydGljdWxhciBNZWRpYVN0cmVhbVRyYWNrIGluIENocm9tZSBvciBTYWZhcmkuXG4gKiBAcGFyYW0ge1JUQ1BlZXJDb25uZWN0aW9ufSBwZWVyQ29ubmVjdGlvblxuICogQHBhcmFtIHtNZWRpYVN0cmVhbVRyYWNrfSB0cmFja1xuICogQHJldHVybnMge1Byb21pc2UuPEFycmF5PFN0YW5kYXJkaXplZFRyYWNrU3RhdHNSZXBvcnQ+Pn1cbiAqL1xuZnVuY3Rpb24gY2hyb21lT3JTYWZhcmlHZXRUcmFja1N0YXRzKHBlZXJDb25uZWN0aW9uLCB0cmFjaykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKGNocm9tZU1ham9yVmVyc2lvbiAmJiBjaHJvbWVNYWpvclZlcnNpb24gPCA2Nykge1xuICAgICAgcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgcmVzb2x2ZShbc3RhbmRhcmRpemVDaHJvbWVMZWdhY3lTdGF0cyhyZXNwb25zZSwgdHJhY2spXSk7XG4gICAgICB9LCBudWxsLCByZWplY3QpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyh0cmFjaykudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgcmVzb2x2ZShzdGFuZGFyZGl6ZUNocm9tZU9yU2FmYXJpU3RhdHMocmVzcG9uc2UpKTtcbiAgICB9LCByZWplY3QpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN0YW5kYXJkaXplZCBzdGF0aXN0aWNzIGZvciBhIHBhcnRpY3VsYXIgTWVkaWFTdHJlYW1UcmFjayBpbiBGaXJlZm94LlxuICogQHBhcmFtIHtSVENQZWVyQ29ubmVjdGlvbn0gcGVlckNvbm5lY3Rpb25cbiAqIEBwYXJhbSB7TWVkaWFTdHJlYW1UcmFja30gdHJhY2tcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZW1vdGVcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxBcnJheTxTdGFuZGFyZGl6ZWRUcmFja1N0YXRzUmVwb3J0Pj59XG4gKi9cbmZ1bmN0aW9uIGZpcmVmb3hHZXRUcmFja1N0YXRzKHBlZXJDb25uZWN0aW9uLCB0cmFjaywgaXNSZW1vdGUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHBlZXJDb25uZWN0aW9uLmdldFN0YXRzKHRyYWNrKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICByZXNvbHZlKFtzdGFuZGFyZGl6ZUZpcmVmb3hTdGF0cyhyZXNwb25zZSwgaXNSZW1vdGUpXSk7XG4gICAgfSwgcmVqZWN0KTtcbiAgfSk7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemUgdGhlIE1lZGlhU3RyZWFtVHJhY2sncyBsZWdhY3kgc3RhdGlzdGljcyBpbiBDaHJvbWUuXG4gKiBAcGFyYW0ge1JUQ1N0YXRzUmVzcG9uc2V9IHJlc3BvbnNlXG4gKiBAcGFyYW0ge01lZGlhU3RyZWFtVHJhY2t9IHRyYWNrXG4gKiBAcmV0dXJucyB7U3RhbmRhcmRpemVkVHJhY2tTdGF0c1JlcG9ydH1cbiAqL1xuZnVuY3Rpb24gc3RhbmRhcmRpemVDaHJvbWVMZWdhY3lTdGF0cyhyZXNwb25zZSwgdHJhY2spIHtcbiAgdmFyIHNzcmNSZXBvcnQgPSByZXNwb25zZS5yZXN1bHQoKS5maW5kKGZ1bmN0aW9uKHJlcG9ydCkge1xuICAgIHJldHVybiByZXBvcnQudHlwZSA9PT0gJ3NzcmMnICYmIHJlcG9ydC5zdGF0KCdnb29nVHJhY2tJZCcpID09PSB0cmFjay5pZDtcbiAgfSk7XG5cbiAgdmFyIHN0YW5kYXJkaXplZFN0YXRzID0ge307XG5cbiAgaWYgKHNzcmNSZXBvcnQpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy50aW1lc3RhbXAgPSBNYXRoLnJvdW5kKE51bWJlcihzc3JjUmVwb3J0LnRpbWVzdGFtcCkpO1xuICAgIHN0YW5kYXJkaXplZFN0YXRzID0gc3NyY1JlcG9ydC5uYW1lcygpLnJlZHVjZShmdW5jdGlvbihzdGF0cywgbmFtZSkge1xuICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgIGNhc2UgJ2dvb2dDb2RlY05hbWUnOlxuICAgICAgICAgIHN0YXRzLmNvZGVjTmFtZSA9IHNzcmNSZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ1J0dCc6XG4gICAgICAgICAgc3RhdHMucm91bmRUcmlwVGltZSA9IE51bWJlcihzc3JjUmVwb3J0LnN0YXQobmFtZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnb29nSml0dGVyUmVjZWl2ZWQnOlxuICAgICAgICAgIHN0YXRzLmppdHRlciA9IE51bWJlcihzc3JjUmVwb3J0LnN0YXQobmFtZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnb29nRnJhbWVXaWR0aElucHV0JzpcbiAgICAgICAgICBzdGF0cy5mcmFtZVdpZHRoSW5wdXQgPSBOdW1iZXIoc3NyY1JlcG9ydC5zdGF0KG5hbWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ0ZyYW1lSGVpZ2h0SW5wdXQnOlxuICAgICAgICAgIHN0YXRzLmZyYW1lSGVpZ2h0SW5wdXQgPSBOdW1iZXIoc3NyY1JlcG9ydC5zdGF0KG5hbWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ0ZyYW1lV2lkdGhTZW50JzpcbiAgICAgICAgICBzdGF0cy5mcmFtZVdpZHRoU2VudCA9IE51bWJlcihzc3JjUmVwb3J0LnN0YXQobmFtZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnb29nRnJhbWVIZWlnaHRTZW50JzpcbiAgICAgICAgICBzdGF0cy5mcmFtZUhlaWdodFNlbnQgPSBOdW1iZXIoc3NyY1JlcG9ydC5zdGF0KG5hbWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ0ZyYW1lV2lkdGhSZWNlaXZlZCc6XG4gICAgICAgICAgc3RhdHMuZnJhbWVXaWR0aFJlY2VpdmVkID0gTnVtYmVyKHNzcmNSZXBvcnQuc3RhdChuYW1lKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2dvb2dGcmFtZUhlaWdodFJlY2VpdmVkJzpcbiAgICAgICAgICBzdGF0cy5mcmFtZUhlaWdodFJlY2VpdmVkID0gTnVtYmVyKHNzcmNSZXBvcnQuc3RhdChuYW1lKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2dvb2dGcmFtZVJhdGVJbnB1dCc6XG4gICAgICAgICAgc3RhdHMuZnJhbWVSYXRlSW5wdXQgPSBOdW1iZXIoc3NyY1JlcG9ydC5zdGF0KG5hbWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ0ZyYW1lUmF0ZVNlbnQnOlxuICAgICAgICAgIHN0YXRzLmZyYW1lUmF0ZVNlbnQgPSBOdW1iZXIoc3NyY1JlcG9ydC5zdGF0KG5hbWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ29vZ0ZyYW1lUmF0ZVJlY2VpdmVkJzpcbiAgICAgICAgICBzdGF0cy5mcmFtZVJhdGVSZWNlaXZlZCA9IE51bWJlcihzc3JjUmVwb3J0LnN0YXQobmFtZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzc3JjJzpcbiAgICAgICAgICBzdGF0c1tuYW1lXSA9IHNzcmNSZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYnl0ZXNSZWNlaXZlZCc6XG4gICAgICAgIGNhc2UgJ2J5dGVzU2VudCc6XG4gICAgICAgIGNhc2UgJ3BhY2tldHNMb3N0JzpcbiAgICAgICAgY2FzZSAncGFja2V0c1JlY2VpdmVkJzpcbiAgICAgICAgY2FzZSAncGFja2V0c1NlbnQnOlxuICAgICAgICBjYXNlICdhdWRpb0lucHV0TGV2ZWwnOlxuICAgICAgICBjYXNlICdhdWRpb091dHB1dExldmVsJzpcbiAgICAgICAgICBzdGF0c1tuYW1lXSA9IE51bWJlcihzc3JjUmVwb3J0LnN0YXQobmFtZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhdHM7XG4gICAgfSwgc3RhbmRhcmRpemVkU3RhdHMpO1xuICB9XG5cbiAgcmV0dXJuIHN0YW5kYXJkaXplZFN0YXRzO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkaXplIHRoZSBNZWRpYVN0cmVhbVRyYWNrJ3Mgc3RhdGlzdGljcyBpbiBDaHJvbWUgb3IgU2FmYXJpLlxuICogQHBhcmFtIHtSVENTdGF0c1Jlc3BvbnNlfSByZXNwb25zZVxuICogQHJldHVybnMge0FycmF5PFN0YW5kYXJkaXplZFRyYWNrU3RhdHNSZXBvcnQ+fVxuICovXG5mdW5jdGlvbiBzdGFuZGFyZGl6ZUNocm9tZU9yU2FmYXJpU3RhdHMocmVzcG9uc2UpIHtcbiAgdmFyIGluYm91bmQgPSBudWxsO1xuXG4gIC8vIE5PVEUobXBhdHdhcmRoYW4pOiBXZSBzaG91bGQgZXhwZWN0IG1vcmUgdGhhbiBvbmUgXCJvdXRib3VuZC1ydHBcIiBzdGF0cyBmb3IgYVxuICAvLyBWUDggc2ltdWxjYXN0IE1lZGlhU3RyZWFtVHJhY2suXG4gIHZhciBvdXRib3VuZCA9IFtdO1xuXG4gIHZhciByZW1vdGVJbmJvdW5kID0gbnVsbDtcbiAgdmFyIHJlbW90ZU91dGJvdW5kID0gbnVsbDtcbiAgdmFyIHRyYWNrID0gbnVsbDtcbiAgdmFyIGNvZGVjID0gbnVsbDtcblxuICByZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKHN0YXQpIHtcbiAgICBzd2l0Y2ggKHN0YXQudHlwZSkge1xuICAgICAgY2FzZSAnaW5ib3VuZC1ydHAnOlxuICAgICAgICBpbmJvdW5kID0gc3RhdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdXRib3VuZC1ydHAnOlxuICAgICAgICBvdXRib3VuZC5wdXNoKHN0YXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RyYWNrJzpcbiAgICAgICAgdHJhY2sgPSBzdGF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvZGVjJzpcbiAgICAgICAgY29kZWMgPSBzdGF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlbW90ZS1pbmJvdW5kLXJ0cCc6XG4gICAgICAgIHJlbW90ZUluYm91bmQgPSBzdGF0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlbW90ZS1vdXRib3VuZC1ydHAnOlxuICAgICAgICByZW1vdGVPdXRib3VuZCA9IHN0YXQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGlzUmVtb3RlID0gdHJhY2sgJiYgdHJhY2sucmVtb3RlU291cmNlO1xuICB2YXIgbWFpblNvdXJjZXMgPSBpc1JlbW90ZSA/IFtpbmJvdW5kXSA6IG91dGJvdW5kO1xuICB2YXIgc3RhdHMgPSBbXTtcbiAgdmFyIHJlbW90ZVNvdXJjZSA9IGlzUmVtb3RlID8gcmVtb3RlT3V0Ym91bmQgOiByZW1vdGVJbmJvdW5kOyAvLyByZW1vdGUgcnRwIHN0YXRzXG5cbiAgbWFpblNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbihzb3VyY2UpIHtcbiAgICB2YXIgc3RhbmRhcmRpemVkU3RhdHMgPSB7fTtcbiAgICB2YXIgc3RhdFNvdXJjZXMgPSBbXG4gICAgICBzb3VyY2UsIC8vIGxvY2FsIHJ0cCBzdGF0c1xuICAgICAgdHJhY2ssXG4gICAgICBjb2RlYyxcbiAgICAgIHJlbW90ZVNvdXJjZSAmJiByZW1vdGVTb3VyY2Uuc3NyYyA9PT0gc291cmNlLnNzcmMgPyByZW1vdGVTb3VyY2UgOiBudWxsLCAvLyByZW1vdGUgcnRwIHN0YXRzXG4gICAgXTtcblxuICAgIGZ1bmN0aW9uIGdldFN0YXRWYWx1ZShuYW1lKSB7XG4gICAgICB2YXIgc291cmNlRm91bmQgPSBzdGF0U291cmNlcy5maW5kKGZ1bmN0aW9uKHN0YXRTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRTb3VyY2UgJiYgdHlwZW9mIHN0YXRTb3VyY2VbbmFtZV0gIT09ICd1bmRlZmluZWQnO1xuICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgcmV0dXJuIHNvdXJjZUZvdW5kID8gc291cmNlRm91bmRbbmFtZV0gOiBudWxsO1xuICAgIH1cblxuICAgIHZhciBzc3JjID0gZ2V0U3RhdFZhbHVlKCdzc3JjJyk7XG4gICAgaWYgKHR5cGVvZiBzc3JjID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuc3NyYyA9IFN0cmluZyhzc3JjKTtcbiAgICB9XG5cbiAgICB2YXIgdGltZXN0YW1wID0gZ2V0U3RhdFZhbHVlKCd0aW1lc3RhbXAnKTtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy50aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgICB2YXIgbWltZVR5cGUgPSBnZXRTdGF0VmFsdWUoJ21pbWVUeXBlJyk7XG4gICAgaWYgKHR5cGVvZiBtaW1lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1pbWVUeXBlID0gbWltZVR5cGUuc3BsaXQoJy8nKTtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmNvZGVjTmFtZSA9IG1pbWVUeXBlW21pbWVUeXBlLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIHZhciByb3VuZFRyaXBUaW1lID0gZ2V0U3RhdFZhbHVlKCdyb3VuZFRyaXBUaW1lJyk7XG4gICAgaWYgKHR5cGVvZiByb3VuZFRyaXBUaW1lID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMucm91bmRUcmlwVGltZSA9IE1hdGgucm91bmQocm91bmRUcmlwVGltZSAqIDEwMDApO1xuICAgIH1cblxuICAgIHZhciBqaXR0ZXIgPSBnZXRTdGF0VmFsdWUoJ2ppdHRlcicpO1xuICAgIGlmICh0eXBlb2Ygaml0dGVyID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuaml0dGVyID0gTWF0aC5yb3VuZChqaXR0ZXIgKiAxMDAwKTtcbiAgICB9XG5cbiAgICB2YXIgZnJhbWVXaWR0aCA9IGdldFN0YXRWYWx1ZSgnZnJhbWVXaWR0aCcpO1xuICAgIGlmICh0eXBlb2YgZnJhbWVXaWR0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChpc1JlbW90ZSkge1xuICAgICAgICBzdGFuZGFyZGl6ZWRTdGF0cy5mcmFtZVdpZHRoUmVjZWl2ZWQgPSBmcmFtZVdpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVXaWR0aFNlbnQgPSBmcmFtZVdpZHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBmcmFtZUhlaWdodCA9IGdldFN0YXRWYWx1ZSgnZnJhbWVIZWlnaHQnKTtcbiAgICBpZiAodHlwZW9mIGZyYW1lSGVpZ2h0ID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGlzUmVtb3RlKSB7XG4gICAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmZyYW1lSGVpZ2h0UmVjZWl2ZWQgPSBmcmFtZUhlaWdodDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmZyYW1lSGVpZ2h0U2VudCA9IGZyYW1lSGVpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBmcmFtZXNQZXJTZWNvbmQgPSBnZXRTdGF0VmFsdWUoJ2ZyYW1lc1BlclNlY29uZCcpO1xuICAgIGlmICh0eXBlb2YgZnJhbWVzUGVyU2Vjb25kID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVSYXRlU2VudCA9IGZyYW1lc1BlclNlY29uZDtcbiAgICB9XG5cbiAgICB2YXIgYnl0ZXNSZWNlaXZlZCA9IGdldFN0YXRWYWx1ZSgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgIGlmICh0eXBlb2YgYnl0ZXNSZWNlaXZlZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmJ5dGVzUmVjZWl2ZWQgPSBieXRlc1JlY2VpdmVkO1xuICAgIH1cblxuICAgIHZhciBieXRlc1NlbnQgPSBnZXRTdGF0VmFsdWUoJ2J5dGVzU2VudCcpO1xuICAgIGlmICh0eXBlb2YgYnl0ZXNTZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuYnl0ZXNTZW50ID0gYnl0ZXNTZW50O1xuICAgIH1cblxuICAgIHZhciBwYWNrZXRzTG9zdCA9IGdldFN0YXRWYWx1ZSgncGFja2V0c0xvc3QnKTtcbiAgICBpZiAodHlwZW9mIHBhY2tldHNMb3N0ID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMucGFja2V0c0xvc3QgPSBwYWNrZXRzTG9zdDtcbiAgICB9XG5cbiAgICB2YXIgcGFja2V0c1JlY2VpdmVkID0gZ2V0U3RhdFZhbHVlKCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICBpZiAodHlwZW9mIHBhY2tldHNSZWNlaXZlZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLnBhY2tldHNSZWNlaXZlZCA9IHBhY2tldHNSZWNlaXZlZDtcbiAgICB9XG5cbiAgICB2YXIgcGFja2V0c1NlbnQgPSBnZXRTdGF0VmFsdWUoJ3BhY2tldHNTZW50Jyk7XG4gICAgaWYgKHR5cGVvZiBwYWNrZXRzU2VudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLnBhY2tldHNTZW50ID0gcGFja2V0c1NlbnQ7XG4gICAgfVxuXG4gICAgdmFyIGF1ZGlvTGV2ZWwgPSBnZXRTdGF0VmFsdWUoJ2F1ZGlvTGV2ZWwnKTtcbiAgICBpZiAodHlwZW9mIGF1ZGlvTGV2ZWwgPT09ICdudW1iZXInKSB7XG4gICAgICBhdWRpb0xldmVsID0gTWF0aC5yb3VuZChhdWRpb0xldmVsICogQ0hST01FX0xFR0FDWV9NQVhfQVVESU9fTEVWRUwpO1xuICAgICAgaWYgKGlzUmVtb3RlKSB7XG4gICAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmF1ZGlvT3V0cHV0TGV2ZWwgPSBhdWRpb0xldmVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhbmRhcmRpemVkU3RhdHMuYXVkaW9JbnB1dExldmVsID0gYXVkaW9MZXZlbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG90YWxQYWNrZXRTZW5kRGFsYXkgPSBnZXRTdGF0VmFsdWUoJ3RvdGFsUGFja2V0U2VuZERlbGF5Jyk7XG4gICAgaWYgKHR5cGVvZiB0b3RhbFBhY2tldFNlbmREYWxheSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLnRvdGFsUGFja2V0U2VuZERlbGF5ID0gdG90YWxQYWNrZXRTZW5kRGFsYXk7XG4gICAgfVxuXG4gICAgdmFyIHRvdGFsRW5jb2RlVGltZSA9IGdldFN0YXRWYWx1ZSgndG90YWxFbmNvZGVUaW1lJyk7XG4gICAgaWYgKHR5cGVvZiB0b3RhbEVuY29kZVRpbWUgPT09ICdudW1iZXInKSB7XG4gICAgICBzdGFuZGFyZGl6ZWRTdGF0cy50b3RhbEVuY29kZVRpbWUgPSB0b3RhbEVuY29kZVRpbWU7XG4gICAgfVxuXG4gICAgdmFyIGZyYW1lc0VuY29kZWQgPSBnZXRTdGF0VmFsdWUoJ2ZyYW1lc0VuY29kZWQnKTtcbiAgICBpZiAodHlwZW9mIGZyYW1lc0VuY29kZWQgPT09ICdudW1iZXInKSB7XG4gICAgICBzdGFuZGFyZGl6ZWRTdGF0cy5mcmFtZXNFbmNvZGVkID0gZnJhbWVzRW5jb2RlZDtcbiAgICB9XG5cbiAgICB2YXIgZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcCA9IGdldFN0YXRWYWx1ZSgnZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcCcpO1xuICAgIGlmICh0eXBlb2YgZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YW5kYXJkaXplZFN0YXRzLmVzdGltYXRlZFBsYXlvdXRUaW1lc3RhbXAgPSBlc3RpbWF0ZWRQbGF5b3V0VGltZXN0YW1wO1xuICAgIH1cblxuICAgIHZhciB0b3RhbERlY29kZVRpbWUgPSBnZXRTdGF0VmFsdWUoJ3RvdGFsRGVjb2RlVGltZScpO1xuICAgIGlmICh0eXBlb2YgdG90YWxEZWNvZGVUaW1lID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMudG90YWxEZWNvZGVUaW1lID0gdG90YWxEZWNvZGVUaW1lO1xuICAgIH1cblxuICAgIHZhciBmcmFtZXNEZWNvZGVkID0gZ2V0U3RhdFZhbHVlKCdmcmFtZXNEZWNvZGVkJyk7XG4gICAgaWYgKHR5cGVvZiBmcmFtZXNEZWNvZGVkID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVzRGVjb2RlZCA9IGZyYW1lc0RlY29kZWQ7XG4gICAgfVxuXG4gICAgdmFyIGppdHRlckJ1ZmZlckRlbGF5ID0gZ2V0U3RhdFZhbHVlKCdqaXR0ZXJCdWZmZXJEZWxheScpO1xuICAgIGlmICh0eXBlb2Ygaml0dGVyQnVmZmVyRGVsYXkgPT09ICdudW1iZXInKSB7XG4gICAgICBzdGFuZGFyZGl6ZWRTdGF0cy5qaXR0ZXJCdWZmZXJEZWxheSA9IGppdHRlckJ1ZmZlckRlbGF5O1xuICAgIH1cblxuICAgIHZhciBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQgPSBnZXRTdGF0VmFsdWUoJ2ppdHRlckJ1ZmZlckVtaXR0ZWRDb3VudCcpO1xuICAgIGlmICh0eXBlb2Ygaml0dGVyQnVmZmVyRW1pdHRlZENvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgc3RhbmRhcmRpemVkU3RhdHMuaml0dGVyQnVmZmVyRW1pdHRlZENvdW50ID0gaml0dGVyQnVmZmVyRW1pdHRlZENvdW50O1xuICAgIH1cblxuICAgIHN0YXRzLnB1c2goc3RhbmRhcmRpemVkU3RhdHMpO1xuICB9KTtcblxuICByZXR1cm4gc3RhdHM7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemUgdGhlIE1lZGlhU3RyZWFtVHJhY2sncyBzdGF0aXN0aWNzIGluIEZpcmVmb3guXG4gKiBAcGFyYW0ge1JUQ1N0YXRzUmVwb3J0fSByZXNwb25zZVxuICogQHBhcmFtIHtib29sZWFufSBpc1JlbW90ZVxuICogQHJldHVybnMge1N0YW5kYXJkaXplZFRyYWNrU3RhdHNSZXBvcnR9XG4gKi9cbmZ1bmN0aW9uIHN0YW5kYXJkaXplRmlyZWZveFN0YXRzKHJlc3BvbnNlLCBpc1JlbW90ZSkge1xuICAvLyBOT1RFKG1yb2JlcnRzKTogSWYgZ2V0U3RhdHMgaXMgY2FsbGVkIG9uIGEgY2xvc2VkIFJUQ1BlZXJDb25uZWN0aW9uLFxuICAvLyBGaXJlZm94IHJldHVybnMgdW5kZWZpbmVkIGluc3RlYWQgb2YgYW4gUlRDU3RhdHNSZXBvcnQuIFdlIHdvcmthcm91bmQgdGhpc1xuICAvLyBoZXJlLiBTZWUgdGhlIGZvbGxvd2luZyBidWcgZm9yIG1vcmUgZGV0YWlsczpcbiAgLy9cbiAgLy8gICBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MjI1XG4gIC8vXG4gIHJlc3BvbnNlID0gcmVzcG9uc2UgfHwgbmV3IE1hcCgpO1xuXG4gIHZhciBpbmJvdW5kID0gbnVsbDtcbiAgdmFyIG91dGJvdW5kID0gbnVsbDtcblxuICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBTdGFydGluZyBmcm9tIEZpcmVmb3ggNjMsIFJUQ3tJbmJvdW5kLCBPdXRib3VuZH1SVFBTdHJlYW1TdGF0cy5pc1JlbW90ZVxuICAvLyB3aWxsIGJlIGRlcHJlY2F0ZWQsIGZvbGxvd2VkIGJ5IGl0cyByZW1vdmFsIGluIEZpcmVmb3ggNjYuIEFsc28sIHRyeWluZyB0b1xuICAvLyBhY2Nlc3MgbWVtYmVycyBvZiB0aGUgcmVtb3RlIFJUQ3tJbmJvdW5kLCBPdXRib3VuZH1SVFBTdHJlYW1TdGF0cyB3aXRob3V0XG4gIC8vIHVzaW5nIFJUQ1N0YXRzUmVwb3J0LmdldChyZW1vdGVJZCkgd2lsbCB0cmlnZ2VyIGNvbnNvbGUgd2FybmluZ3MuIFNvLCB3ZVxuICAvLyBubyBsb25nZXIgZGVwZW5kIG9uIFwiaXNSZW1vdGVcIiwgYW5kIHdlIGNhbGwgUlRDU3RhdHNSZXBvcnQuZ2V0KHJlbW90ZUlkKVxuICAvLyB0byBhY2Nlc3MgdGhlIHJlbW90ZSBSVEN7SW5ib3VuZCwgT3V0Ym91bmR9UlRQU3RyZWFtU3RhdHMuXG4gIC8vXG4gIC8vIFNvdXJjZTogaHR0cHM6Ly9ibG9nLm1vemlsbGEub3JnL3dlYnJ0Yy9nZXRzdGF0cy1pc3JlbW90ZS02NS9cbiAgLy9cbiAgcmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihzdGF0KSB7XG4gICAgaWYgKHN0YXQuaXNSZW1vdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChzdGF0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2luYm91bmQtcnRwJzpcbiAgICAgICAgaW5ib3VuZCA9IHN0YXQ7XG4gICAgICAgIG91dGJvdW5kID0gcmVzcG9uc2UuZ2V0KHN0YXQucmVtb3RlSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ291dGJvdW5kLXJ0cCc6XG4gICAgICAgIG91dGJvdW5kID0gc3RhdDtcbiAgICAgICAgaW5ib3VuZCA9IHJlc3BvbnNlLmdldChzdGF0LnJlbW90ZUlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcblxuICB2YXIgZmlyc3QgPSBpc1JlbW90ZSA/IGluYm91bmQgOiBvdXRib3VuZDtcbiAgdmFyIHNlY29uZCA9IGlzUmVtb3RlID8gb3V0Ym91bmQgOiBpbmJvdW5kO1xuXG4gIGZ1bmN0aW9uIGdldFN0YXRWYWx1ZShuYW1lKSB7XG4gICAgaWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdFtuYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmaXJzdFtuYW1lXTtcbiAgICB9XG4gICAgaWYgKHNlY29uZCAmJiB0eXBlb2Ygc2Vjb25kW25hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHNlY29uZFtuYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgc3RhbmRhcmRpemVkU3RhdHMgPSB7fTtcbiAgdmFyIHRpbWVzdGFtcCA9IGdldFN0YXRWYWx1ZSgndGltZXN0YW1wJyk7XG4gIHN0YW5kYXJkaXplZFN0YXRzLnRpbWVzdGFtcCA9IE1hdGgucm91bmQodGltZXN0YW1wKTtcblxuICB2YXIgc3NyYyA9IGdldFN0YXRWYWx1ZSgnc3NyYycpO1xuICBpZiAodHlwZW9mIHNzcmMgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuc3NyYyA9IFN0cmluZyhzc3JjKTtcbiAgfVxuXG4gIHZhciBieXRlc1NlbnQgPSBnZXRTdGF0VmFsdWUoJ2J5dGVzU2VudCcpO1xuICBpZiAodHlwZW9mIGJ5dGVzU2VudCA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy5ieXRlc1NlbnQgPSBieXRlc1NlbnQ7XG4gIH1cblxuICB2YXIgcGFja2V0c0xvc3QgPSBnZXRTdGF0VmFsdWUoJ3BhY2tldHNMb3N0Jyk7XG4gIGlmICh0eXBlb2YgcGFja2V0c0xvc3QgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMucGFja2V0c0xvc3QgPSBwYWNrZXRzTG9zdDtcbiAgfVxuXG4gIHZhciBwYWNrZXRzU2VudCA9IGdldFN0YXRWYWx1ZSgncGFja2V0c1NlbnQnKTtcbiAgaWYgKHR5cGVvZiBwYWNrZXRzU2VudCA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy5wYWNrZXRzU2VudCA9IHBhY2tldHNTZW50O1xuICB9XG5cbiAgdmFyIHJvdW5kVHJpcFRpbWUgPSBnZXRTdGF0VmFsdWUoJ3JvdW5kVHJpcFRpbWUnKTtcbiAgaWYgKHR5cGVvZiByb3VuZFRyaXBUaW1lID09PSAnbnVtYmVyJykge1xuICAgIC8vIHJvdW5kVHJpcFRpbWUgaXMgZG91YmxlIC0gbWVhc3VyZWQgaW4gc2Vjb25kcy5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2VicnRjLXN0YXRzLyNkb20tcnRjcmVtb3RlaW5ib3VuZHJ0cHN0cmVhbXN0YXRzLXJvdW5kdHJpcHRpbWVcbiAgICAvLyBjb3ZlciBpdCB0byBtaWxsaXNlY29uZHMgKGFuZCBtYWtlIGl0IGludGVnZXIpXG4gICAgc3RhbmRhcmRpemVkU3RhdHMucm91bmRUcmlwVGltZSA9IE1hdGgucm91bmQocm91bmRUcmlwVGltZSAqIDEwMDApO1xuICB9XG5cbiAgdmFyIGppdHRlciA9IGdldFN0YXRWYWx1ZSgnaml0dGVyJyk7XG4gIGlmICh0eXBlb2Ygaml0dGVyID09PSAnbnVtYmVyJykge1xuICAgIHN0YW5kYXJkaXplZFN0YXRzLmppdHRlciA9IE1hdGgucm91bmQoaml0dGVyICogMTAwMCk7XG4gIH1cblxuICB2YXIgZnJhbWVSYXRlU2VudCA9IGdldFN0YXRWYWx1ZSgnZnJhbWVyYXRlTWVhbicpO1xuICBpZiAodHlwZW9mIGZyYW1lUmF0ZVNlbnQgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVSYXRlU2VudCA9IE1hdGgucm91bmQoZnJhbWVSYXRlU2VudCk7XG4gIH1cblxuICB2YXIgYnl0ZXNSZWNlaXZlZCA9IGdldFN0YXRWYWx1ZSgnYnl0ZXNSZWNlaXZlZCcpO1xuICBpZiAodHlwZW9mIGJ5dGVzUmVjZWl2ZWQgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuYnl0ZXNSZWNlaXZlZCA9IGJ5dGVzUmVjZWl2ZWQ7XG4gIH1cblxuICB2YXIgcGFja2V0c1JlY2VpdmVkID0gZ2V0U3RhdFZhbHVlKCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgaWYgKHR5cGVvZiBwYWNrZXRzUmVjZWl2ZWQgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMucGFja2V0c1JlY2VpdmVkID0gcGFja2V0c1JlY2VpdmVkO1xuICB9XG5cbiAgdmFyIGZyYW1lUmF0ZVJlY2VpdmVkID0gZ2V0U3RhdFZhbHVlKCdmcmFtZXJhdGVNZWFuJyk7XG4gIGlmICh0eXBlb2YgZnJhbWVSYXRlUmVjZWl2ZWQgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVSYXRlUmVjZWl2ZWQgPSBNYXRoLnJvdW5kKGZyYW1lUmF0ZVJlY2VpdmVkKTtcbiAgfVxuXG4gIHZhciB0b3RhbFBhY2tldFNlbmREYWxheSA9IGdldFN0YXRWYWx1ZSgndG90YWxQYWNrZXRTZW5kRGVsYXknKTtcbiAgaWYgKHR5cGVvZiB0b3RhbFBhY2tldFNlbmREYWxheSA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy50b3RhbFBhY2tldFNlbmREZWxheSA9IHRvdGFsUGFja2V0U2VuZERhbGF5O1xuICB9XG5cbiAgdmFyIHRvdGFsRW5jb2RlVGltZSA9IGdldFN0YXRWYWx1ZSgndG90YWxFbmNvZGVUaW1lJyk7XG4gIGlmICh0eXBlb2YgdG90YWxFbmNvZGVUaW1lID09PSAnbnVtYmVyJykge1xuICAgIHN0YW5kYXJkaXplZFN0YXRzLnRvdGFsRW5jb2RlVGltZSA9IHRvdGFsRW5jb2RlVGltZTtcbiAgfVxuXG4gIHZhciBmcmFtZXNFbmNvZGVkID0gZ2V0U3RhdFZhbHVlKCdmcmFtZXNFbmNvZGVkJyk7XG4gIGlmICh0eXBlb2YgZnJhbWVzRW5jb2RlZCA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy5mcmFtZXNFbmNvZGVkID0gZnJhbWVzRW5jb2RlZDtcbiAgfVxuXG4gIHZhciBlc3RpbWF0ZWRQbGF5b3V0VGltZXN0YW1wID0gZ2V0U3RhdFZhbHVlKCdlc3RpbWF0ZWRQbGF5b3V0VGltZXN0YW1wJyk7XG4gIGlmICh0eXBlb2YgZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcCA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy5lc3RpbWF0ZWRQbGF5b3V0VGltZXN0YW1wID0gZXN0aW1hdGVkUGxheW91dFRpbWVzdGFtcDtcbiAgfVxuXG4gIHZhciB0b3RhbERlY29kZVRpbWUgPSBnZXRTdGF0VmFsdWUoJ3RvdGFsRGVjb2RlVGltZScpO1xuICBpZiAodHlwZW9mIHRvdGFsRGVjb2RlVGltZSA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy50b3RhbERlY29kZVRpbWUgPSB0b3RhbERlY29kZVRpbWU7XG4gIH1cblxuICB2YXIgZnJhbWVzRGVjb2RlZCA9IGdldFN0YXRWYWx1ZSgnZnJhbWVzRGVjb2RlZCcpO1xuICBpZiAodHlwZW9mIGZyYW1lc0RlY29kZWQgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuZnJhbWVzRGVjb2RlZCA9IGZyYW1lc0RlY29kZWQ7XG4gIH1cblxuICB2YXIgaml0dGVyQnVmZmVyRGVsYXkgPSBnZXRTdGF0VmFsdWUoJ2ppdHRlckJ1ZmZlckRlbGF5Jyk7XG4gIGlmICh0eXBlb2Ygaml0dGVyQnVmZmVyRGVsYXkgPT09ICdudW1iZXInKSB7XG4gICAgc3RhbmRhcmRpemVkU3RhdHMuaml0dGVyQnVmZmVyRGVsYXkgPSBqaXR0ZXJCdWZmZXJEZWxheTtcbiAgfVxuXG4gIHZhciBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQgPSBnZXRTdGF0VmFsdWUoJ2ppdHRlckJ1ZmZlckVtaXR0ZWRDb3VudCcpO1xuICBpZiAodHlwZW9mIGppdHRlckJ1ZmZlckVtaXR0ZWRDb3VudCA9PT0gJ251bWJlcicpIHtcbiAgICBzdGFuZGFyZGl6ZWRTdGF0cy5qaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQgPSBqaXR0ZXJCdWZmZXJFbWl0dGVkQ291bnQ7XG4gIH1cblxuICByZXR1cm4gc3RhbmRhcmRpemVkU3RhdHM7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemVkIFJUQ0ljZUNhbmRpZGF0ZSBzdGF0aXN0aWNzLlxuICogQHR5cGVkZWYge29iamVjdH0gU3RhbmRhcmRpemVkSWNlQ2FuZGlkYXRlU3RhdHNSZXBvcnRcbiAqIEBwcm9wZXJ0eSB7J2hvc3QnfCdwcmZseCd8J3JlbGF5J3wnc3JmbHgnfSBjYW5kaWRhdGVUeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaXBcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwb3J0XG4gKiBAcHJvcGVydHkge251bWJlcn0gcHJpb3JpdHlcbiAqIEBwcm9wZXJ0eSB7J3RjcCd8J3VkcCd9IHByb3RvY29sXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdXJsXG4gKi9cblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgbG9jYWwgUlRDSWNlQ2FuZGlkYXRlIHN0YXRpc3RpY3MuXG4gKiBAdHlwZWRlZiB7U3RhbmRhcmRpemVkSWNlQ2FuZGlkYXRlU3RhdHNSZXBvcnR9IFN0YW5kYXJkaXplZExvY2FsSWNlQ2FuZGlkYXRlU3RhdHNSZXBvcnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2RlbGV0ZWQ9ZmFsc2VdXG4gKiBAcHJvcGVydHkgeyd0Y3AnfCd0bHMnfCd1ZHAnfSByZWxheVByb3RvY29sXG4gKi9cblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgYWN0aXZlIFJUQ0ljZUNhbmRpZGF0ZSBwYWlyIHN0YXRpc3RpY3MuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTdGFuZGFyZGl6ZWRBY3RpdmVJY2VDYW5kaWRhdGVQYWlyU3RhdHNSZXBvcnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBhdmFpbGFibGVJbmNvbWluZ0JpdHJhdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBhdmFpbGFibGVPdXRnb2luZ0JpdHJhdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBieXRlc1JlY2VpdmVkXG4gKiBAcHJvcGVydHkge251bWJlcn0gYnl0ZXNTZW50XG4gKiBAcHJvcGVydHkge251bWJlcn0gY29uc2VudFJlcXVlc3RzU2VudFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGN1cnJlbnRSb3VuZFRyaXBUaW1lXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXBcbiAqIEBwcm9wZXJ0eSB7U3RhbmRhcmRpemVkTG9jYWxJY2VDYW5kaWRhdGVTdGF0c1JlcG9ydH0gbG9jYWxDYW5kaWRhdGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbm9taW5hdGVkXG4gKiBAcHJvcGVydHkge251bWJlcn0gcHJpb3JpdHlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVhZGFibGVcbiAqIEBwcm9wZXJ0eSB7U3RhbmRhcmRpemVkSWNlQ2FuZGlkYXRlU3RhdHNSZXBvcnR9IHJlbW90ZUNhbmRpZGF0ZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJlcXVlc3RzUmVjZWl2ZWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZXF1ZXN0c1NlbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZXNwb25zZXNSZWNlaXZlZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJlc3BvbnNlc1NlbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZXRyYW5zbWlzc2lvbnNSZWNlaXZlZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJldHJhbnNtaXNzaW9uc1NlbnRcbiAqIEBwcm9wZXJ0eSB7J2Zyb3plbid8J3dhaXRpbmcnfCdpbi1wcm9ncmVzcyd8J2ZhaWxlZCd8J3N1Y2NlZWRlZCd9IHN0YXRlXG4gKiBAcHJvcGVydHkge251bWJlcn0gdG90YWxSb3VuZFRyaXBUaW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHJhbnNwb3J0SWRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gd3JpdGFibGVcbiAqL1xuXG4vKipcbiAqIFN0YW5kYXJkaXplZCB7QGxpbmsgUlRDUGVlckNvbm5lY3Rpb259IHN0YXRpc3RpY3MuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFuZGFyZGl6ZWRTdGF0c1Jlc3BvbnNlXG4gKiBAcHJvcGVydHkge1N0YW5kYXJkaXplZEFjdGl2ZUljZUNhbmRpZGF0ZVBhaXJTdGF0c1JlcG9ydH0gYWN0aXZlSWNlQ2FuZGlkYXRlUGFpciAtIFN0YXRzIGZvciBhY3RpdmUgSUNFIGNhbmRpZGF0ZSBwYWlyXG4gKiBAcHJvcGVydHkgQXJyYXk8U3RhbmRhcmRpemVkVHJhY2tTdGF0c1JlcG9ydD4gbG9jYWxBdWRpb1RyYWNrU3RhdHMgLSBTdGF0cyBmb3IgbG9jYWwgYXVkaW8gTWVkaWFTdHJlYW1UcmFja3NcbiAqIEBwcm9wZXJ0eSBBcnJheTxTdGFuZGFyZGl6ZWRUcmFja1N0YXRzUmVwb3J0PiBsb2NhbFZpZGVvVHJhY2tTdGF0cyAtIFN0YXRzIGZvciBsb2NhbCB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrc1xuICogQHByb3BlcnR5IEFycmF5PFN0YW5kYXJkaXplZFRyYWNrU3RhdHNSZXBvcnQ+IHJlbW90ZUF1ZGlvVHJhY2tTdGF0cyAtIFN0YXRzIGZvciByZW1vdGUgYXVkaW8gTWVkaWFTdHJlYW1UcmFja3NcbiAqIEBwcm9wZXJ0eSBBcnJheTxTdGFuZGFyZGl6ZWRUcmFja1N0YXRzUmVwb3J0PiByZW1vdGVWaWRlb1RyYWNrU3RhdHMgLSBTdGF0cyBmb3IgcmVtb3RlIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2tzXG4gKi9cblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgTWVkaWFTdHJlYW1UcmFjayBzdGF0aXN0aWNzLlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhbmRhcmRpemVkVHJhY2tTdGF0c1JlcG9ydFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRyYWNrSWQgLSBNZWRpYVN0cmVhbVRyYWNrIElEXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3NyYyAtIFNTUkMgb2YgdGhlIE1lZGlhU3RyZWFtVHJhY2tcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lc3RhbXAgLSBUaGUgVW5peCB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvZGVjTmFtZV0gLSBOYW1lIG9mIHRoZSBjb2RlYyB1c2VkIHRvIGVuY29kZSB0aGUgTWVkaWFTdHJlYW1UcmFjaydzIG1lZGlhXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3JvdW5kVHJpcFRpbWVdIC0gUm91bmQgdHJpcCB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtqaXR0ZXJdIC0gSml0dGVyIGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtmcmFtZVdpZHRoSW5wdXRdIC0gV2lkdGggaW4gcGl4ZWxzIG9mIHRoZSBsb2NhbCB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrJ3MgY2FwdHVyZWQgZnJhbWVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVIZWlnaHRJbnB1dF0gLSBIZWlnaHQgaW4gcGl4ZWxzIG9mIHRoZSBsb2NhbCB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrJ3MgY2FwdHVyZWQgZnJhbWVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVXaWR0aFNlbnRdIC0gV2lkdGggaW4gcGl4ZWxzIG9mIHRoZSBsb2NhbCB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrJ3MgZW5jb2RlZCBmcmFtZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtmcmFtZUhlaWdodFNlbnRdIC0gSGVpZ2h0IGluIHBpeGVscyBvZiB0aGUgbG9jYWwgdmlkZW8gTWVkaWFTdHJlYW1UcmFjaydzIGVuY29kZWQgZnJhbWVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVXaWR0aFJlY2VpdmVkXSAtIFdpZHRoIGluIHBpeGVscyBvZiB0aGUgcmVtb3RlIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2sncyByZWNlaXZlZCBmcmFtZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtmcmFtZUhlaWdodFJlY2VpdmVkXSAtIEhlaWdodCBpbiBwaXhlbHMgb2YgdGhlIHJlbW90ZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrJ3MgcmVjZWl2ZWQgZnJhbWVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVSYXRlSW5wdXRdIC0gQ2FwdHVyZWQgZnJhbWVzIHBlciBzZWNvbmQgb2YgdGhlIGxvY2FsIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2tcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVSYXRlU2VudF0gLSBGcmFtZXMgcGVyIHNlY29uZCBvZiB0aGUgbG9jYWwgdmlkZW8gTWVkaWFTdHJlYW1UcmFjaydzIGVuY29kZWQgdmlkZW9cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZnJhbWVSYXRlUmVjZWl2ZWRdIC0gRnJhbWVzIHBlciBzZWNvbmQgb2YgdGhlIHJlbW90ZSB2aWRlbyBNZWRpYVN0cmVhbVRyYWNrJ3MgcmVjZWl2ZWQgdmlkZW9cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbYnl0ZXNSZWNlaXZlZF0gLSBOdW1iZXIgb2YgYnl0ZXMgb2YgdGhlIHJlbW90ZSBNZWRpYVN0cmVhbVRyYWNrJ3MgbWVkaWEgcmVjZWl2ZWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbYnl0ZXNTZW50XSAtIE51bWJlciBvZiBieXRlcyBvZiB0aGUgbG9jYWwgTWVkaWFTdHJlYW1UcmFjaydzIG1lZGlhIHNlbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcGFja2V0c0xvc3RdIC0gTnVtYmVyIG9mIHBhY2tldHMgb2YgdGhlIE1lZGlhU3RyZWFtVHJhY2sncyBtZWRpYSBsb3N0XG4gKiBAcHJvcGVydHkge251bWJlcn0gW3BhY2tldHNSZWNlaXZlZF0gLSBOdW1iZXIgb2YgcGFja2V0cyBvZiB0aGUgcmVtb3RlIE1lZGlhU3RyZWFtVHJhY2sncyBtZWRpYSByZWNlaXZlZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwYWNrZXRzU2VudF0gLSBOdW1iZXIgb2YgcGFja2V0cyBvZiB0aGUgbG9jYWwgTWVkaWFTdHJlYW1UcmFjaydzIG1lZGlhIHNlbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbdG90YWxQYWNrZXRTZW5kRGVsYXldIC0gVGhlIHRvdGFsIG51bWJlciBvZiBzZWNvbmRzIHRoYXQgdGhlIGxvY2FsIE1lZGlhU3RyZWFtVHJhY2sncyBwYWNrZXRzXG4gKiAgaGF2ZSBzcGVudCBidWZmZXJlZCBsb2NhbGx5IGJlZm9yZSBiZWluZyBzZW50IG92ZXIgdGhlIG5ldHdvcmtcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbdG90YWxFbmNvZGVUaW1lXSAtIFRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vjb25kcyBzcGVudCBvbiBlbmNvZGluZyB0aGUgbG9jYWwgTWVkaWFTdHJlYW1UcmFjaydzIGZyYW1lc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtmcmFtZXNFbmNvZGVkXSAtIFRoZSB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSBsb2NhbCBNZWRpYVN0cmVhbVRyYWNrIHRoYXQgaGF2ZSBiZWVuIGVuY29kZWQgc29yIGZhclxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtlc3RpbWF0ZWRQbGF5b3V0VGltZXN0YW1wXSAtIFRoZSBlc3RpbWF0ZWQgcGxheW91dCB0aW1lIG9mIHRoZSByZW1vdGUgTWVkaWFTdHJlYW1UcmFja1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFt0b3RhbERlY29kZVRpbWVdIC0gVGhlIHRvdGFsIG51bWJlciBvZiBzZWNvbmRzIHNwZW50IG9uIGRlY29kaW5nIHRoZSByZW1vdGUgTWVkaWFTdHJlYW1UcmFjaydzIGZyYW1lc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtmcmFtZXNEZWNvZGVkXSAtIFRoZSB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIG9mIHRoZSByZW1vdGUgTWVkaWFTdHJlYW1UcmFjayB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHNvciBmYXJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbaml0dGVyQnVmZmVyRGVsYXldIC0gVGhlIHN1bSBvZiB0aGUgdGltZSwgaW4gc2Vjb25kcywgZWFjaCBhdWRpbyBzYW1wbGUgb3IgYSB2aWRlbyBmcmFtZSBvZiB0aGUgcmVtb3RlXG4gKiAgIE1lZGlhU3RyZWFtVHJhY2sgdGFrZXMgZnJvbSB0aGUgdGltZSB0aGUgZmlyc3QgcGFja2V0IGlzIHJlY2VpdmVkIGJ5IHRoZSBqaXR0ZXIgYnVmZmVyIHRvIHRoZSB0aW1lIGl0IGV4aXRzIHRoZSBqaXR0ZXIgYnVmZmVyXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2ppdHRlckJ1ZmZlckVtaXR0ZWRDb3VudF0gLSBUaGUgdG90YWwgbnVtYmVyIG9mIGF1ZGlvIHNhbXBsZXMgb3IgdmlkZW8gZnJhbWVzIHRoYXQgaGF2ZSBjb21lIG91dCBvZiB0aGUgaml0dGVyIGJ1ZmZlclxuICogQHByb3BlcnR5IHtBdWRpb0xldmVsfSBbYXVkaW9JbnB1dExldmVsXSAtIFRoZSB7QGxpbmsgQXVkaW9MZXZlbH0gb2YgdGhlIGxvY2FsIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2tcbiAqIEBwcm9wZXJ0eSB7QXVkaW9MZXZlbH0gW2F1ZGlvT3V0cHV0TGV2ZWxdIC0gVGhlIHtAbGluayBBdWRpb0xldmVsfSBvZiB0aGUgcmVtb3RlIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2tcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN0YXRzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/getstats.js\n")},"./node_modules/@twilio/webrtc/lib/getusermedia.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals navigator */\n\n\n/**\n * This function is very similar to navigator.mediaDevices.getUserMedia
\n * except that if no MediaStreamConstraints are provided, then bot audio and video\n * are requested.\n * @function getUserMedia\n * @param {MediaStreamConstraints} [constraints={audio:true,video:true}] - the\n * MediaStreamConstraints object specifying what kind of MediaStream to\n * request from the browser (by default both audio and video)\n * @returns Promise\n */\nfunction getUserMedia(constraints) {\n if (typeof navigator === 'object'\n && typeof navigator.mediaDevices === 'object'\n && typeof navigator.mediaDevices.getUserMedia === 'function') {\n constraints = constraints || { audio: true, video: true };\n return navigator.mediaDevices.getUserMedia(constraints);\n }\n return Promise.reject(new Error('getUserMedia is not supported'));\n}\n\nmodule.exports = getUserMedia;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL2dldHVzZXJtZWRpYS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvZ2V0dXNlcm1lZGlhLmpzP2Q3ZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBuYXZpZ2F0b3IgKi9cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2ltaWxhciB0byA8Y29kZT5uYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYTwvY29kZT5cbiAqIGV4Y2VwdCB0aGF0IGlmIG5vIE1lZGlhU3RyZWFtQ29uc3RyYWludHMgYXJlIHByb3ZpZGVkLCB0aGVuIGJvdCBhdWRpbyBhbmQgdmlkZW9cbiAqIGFyZSByZXF1ZXN0ZWQuXG4gKiBAZnVuY3Rpb24gZ2V0VXNlck1lZGlhXG4gKiBAcGFyYW0ge01lZGlhU3RyZWFtQ29uc3RyYWludHN9IFtjb25zdHJhaW50cz17YXVkaW86dHJ1ZSx2aWRlbzp0cnVlfV0gLSB0aGVcbiAqICAgTWVkaWFTdHJlYW1Db25zdHJhaW50cyBvYmplY3Qgc3BlY2lmeWluZyB3aGF0IGtpbmQgb2YgTWVkaWFTdHJlYW0gdG9cbiAqICAgcmVxdWVzdCBmcm9tIHRoZSBicm93c2VyIChieSBkZWZhdWx0IGJvdGggYXVkaW8gYW5kIHZpZGVvKVxuICogQHJldHVybnMgUHJvbWlzZTxNZWRpYVN0cmVhbT5cbiAqL1xuZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0J1xuICAgICYmIHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzID09PSAnb2JqZWN0J1xuICAgICYmIHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHMgfHwgeyBhdWRpbzogdHJ1ZSwgdmlkZW86IHRydWUgfTtcbiAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpO1xuICB9XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2dldFVzZXJNZWRpYSBpcyBub3Qgc3VwcG9ydGVkJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVzZXJNZWRpYTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/getusermedia.js\n")},"./node_modules/@twilio/webrtc/lib/index.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar WebRTC = {};\n\nObject.defineProperties(WebRTC, {\n getStats: {\n enumerable: true,\n value: __webpack_require__(/*! ./getstats */ "./node_modules/@twilio/webrtc/lib/getstats.js")\n },\n getUserMedia: {\n enumerable: true,\n value: __webpack_require__(/*! ./getusermedia */ "./node_modules/@twilio/webrtc/lib/getusermedia.js")\n },\n MediaStream: {\n enumerable: true,\n value: __webpack_require__(/*! ./mediastream */ "./node_modules/@twilio/webrtc/lib/mediastream.js")\n },\n MediaStreamTrack: {\n enumerable: true,\n value: __webpack_require__(/*! ./mediastreamtrack */ "./node_modules/@twilio/webrtc/lib/mediastreamtrack.js")\n },\n RTCIceCandidate: {\n enumerable: true,\n value: __webpack_require__(/*! ./rtcicecandidate */ "./node_modules/@twilio/webrtc/lib/rtcicecandidate.js")\n },\n RTCPeerConnection: {\n enumerable: true,\n value: __webpack_require__(/*! ./rtcpeerconnection */ "./node_modules/@twilio/webrtc/lib/rtcpeerconnection/index.js")\n },\n RTCSessionDescription: {\n enumerable: true,\n value: __webpack_require__(/*! ./rtcsessiondescription */ "./node_modules/@twilio/webrtc/lib/rtcsessiondescription/index.js")\n },\n version: {\n enumerable: true,\n value: __webpack_require__(/*! ../package.json */ "./node_modules/@twilio/webrtc/package.json").version\n }\n});\n\nmodule.exports = WebRTC;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi9pbmRleC5qcz9kYTFkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIFdlYlJUQyA9IHt9O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhXZWJSVEMsIHtcbiAgZ2V0U3RhdHM6IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiByZXF1aXJlKCcuL2dldHN0YXRzJylcbiAgfSxcbiAgZ2V0VXNlck1lZGlhOiB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogcmVxdWlyZSgnLi9nZXR1c2VybWVkaWEnKVxuICB9LFxuICBNZWRpYVN0cmVhbToge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHJlcXVpcmUoJy4vbWVkaWFzdHJlYW0nKVxuICB9LFxuICBNZWRpYVN0cmVhbVRyYWNrOiB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogcmVxdWlyZSgnLi9tZWRpYXN0cmVhbXRyYWNrJylcbiAgfSxcbiAgUlRDSWNlQ2FuZGlkYXRlOiB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogcmVxdWlyZSgnLi9ydGNpY2VjYW5kaWRhdGUnKVxuICB9LFxuICBSVENQZWVyQ29ubmVjdGlvbjoge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHJlcXVpcmUoJy4vcnRjcGVlcmNvbm5lY3Rpb24nKVxuICB9LFxuICBSVENTZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiByZXF1aXJlKCcuL3J0Y3Nlc3Npb25kZXNjcmlwdGlvbicpXG4gIH0sXG4gIHZlcnNpb246IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uXG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYlJUQztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/index.js\n')},"./node_modules/@twilio/webrtc/lib/mediastream.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals MediaStream */\n\n\nif (typeof MediaStream === 'function') {\n module.exports = MediaStream;\n} else {\n module.exports = function MediaStream() {\n throw new Error('MediaStream is not supported');\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL21lZGlhc3RyZWFtLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi9tZWRpYXN0cmVhbS5qcz9hYTY3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbHMgTWVkaWFTdHJlYW0gKi9cbid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IE1lZGlhU3RyZWFtO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBNZWRpYVN0cmVhbSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01lZGlhU3RyZWFtIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/mediastream.js\n")},"./node_modules/@twilio/webrtc/lib/mediastreamtrack.js":function(module,exports,__webpack_require__){"use strict";eval("/* global MediaStreamTrack */\n\n\nif (typeof MediaStreamTrack === 'function') {\n module.exports = MediaStreamTrack;\n} else {\n module.exports = function MediaStreamTrack() {\n throw new Error('MediaStreamTrack is not supported');\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL21lZGlhc3RyZWFtdHJhY2suanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL21lZGlhc3RyZWFtdHJhY2suanM/MGVjYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgTWVkaWFTdHJlYW1UcmFjayAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pZiAodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBNZWRpYVN0cmVhbVRyYWNrO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBNZWRpYVN0cmVhbVRyYWNrKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWVkaWFTdHJlYW1UcmFjayBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/mediastreamtrack.js\n")},"./node_modules/@twilio/webrtc/lib/rtcicecandidate.js":function(module,exports,__webpack_require__){"use strict";eval("/* global RTCIceCandidate */\n\n\nif (typeof RTCIceCandidate === 'function') {\n module.exports = RTCIceCandidate;\n} else {\n module.exports = function RTCIceCandidate() {\n throw new Error('RTCIceCandidate is not supported');\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y2ljZWNhbmRpZGF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvcnRjaWNlY2FuZGlkYXRlLmpzPzBhNjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIFJUQ0ljZUNhbmRpZGF0ZSAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pZiAodHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IFJUQ0ljZUNhbmRpZGF0ZTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gUlRDSWNlQ2FuZGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUlRDSWNlQ2FuZGlkYXRlIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcicecandidate.js\n")},"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/chrome.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCDataChannel, RTCPeerConnection, RTCSessionDescription */\n\n\nvar ChromeRTCSessionDescription = __webpack_require__(/*! ../rtcsessiondescription/chrome */ \"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/chrome.js\");\nvar EventTarget = __webpack_require__(/*! ../util/eventtarget */ \"./node_modules/@twilio/webrtc/lib/util/eventtarget.js\");\nvar inherits = __webpack_require__(/*! util */ \"./node_modules/util/util.js\").inherits;\nvar Latch = __webpack_require__(/*! ../util/latch */ \"./node_modules/@twilio/webrtc/lib/util/latch.js\");\nvar MediaStream = __webpack_require__(/*! ../mediastream */ \"./node_modules/@twilio/webrtc/lib/mediastream.js\");\nvar RTCRtpSenderShim = __webpack_require__(/*! ../rtcrtpsender */ \"./node_modules/@twilio/webrtc/lib/rtcrtpsender.js\");\nvar sdpUtils = __webpack_require__(/*! ../util/sdp */ \"./node_modules/@twilio/webrtc/lib/util/sdp.js\");\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\");\nvar isIOSChrome = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").isIOSChrome;\n\nvar isUnifiedPlan = sdpUtils.getSdpFormat() === 'unified';\n\n// NOTE(mroberts): This class wraps Chrome's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Chrome, namely the\n// abilities to\n//\n// 1. Rollback, per the workaround suggested here:\n// https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n//\n// 2. Listen for track events, per the adapter.js workaround.\n//\n// 3. Set iceTransportPolicy.\n//\nfunction ChromeRTCPeerConnection(configuration, constraints) {\n if (!(this instanceof ChromeRTCPeerConnection)) {\n return new ChromeRTCPeerConnection(configuration, constraints);\n }\n\n EventTarget.call(this);\n\n configuration = configuration || {};\n var newConfiguration = Object.assign(configuration.iceTransportPolicy\n ? { iceTransports: configuration.iceTransportPolicy }\n : {}, configuration);\n\n util.interceptEvent(this, 'datachannel');\n util.interceptEvent(this, 'signalingstatechange');\n\n var sdpFormat = sdpUtils.getSdpFormat(newConfiguration.sdpSemantics);\n var peerConnection = new RTCPeerConnection(newConfiguration, constraints);\n\n Object.defineProperties(this, {\n _appliedTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _localStream: {\n value: new MediaStream()\n },\n _peerConnection: {\n value: peerConnection\n },\n _pendingLocalOffer: {\n value: null,\n writable: true\n },\n _pendingRemoteOffer: {\n value: null,\n writable: true\n },\n _rolledBackTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _sdpFormat: {\n value: sdpFormat\n },\n _senders: {\n value: new Map()\n },\n _signalingStateLatch: {\n value: new Latch()\n },\n _tracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n localDescription: {\n enumerable: true,\n get: function() {\n return this._pendingLocalOffer ? this._pendingLocalOffer : peerConnection.localDescription;\n }\n },\n remoteDescription: {\n enumerable: true,\n get: function() {\n return this._pendingRemoteOffer ? this._pendingRemoteOffer : peerConnection.remoteDescription;\n }\n },\n signalingState: {\n enumerable: true,\n get: function() {\n if (this._pendingLocalOffer) {\n return 'have-local-offer';\n } else if (this._pendingRemoteOffer) {\n return 'have-remote-offer';\n }\n return peerConnection.signalingState;\n }\n }\n });\n\n var self = this;\n\n peerConnection.addEventListener('datachannel', function ondatachannel(event) {\n shimDataChannel(event.channel);\n self.dispatchEvent(event);\n });\n\n peerConnection.addEventListener('signalingstatechange', function onsignalingstatechange() {\n if (peerConnection.signalingState === 'stable') {\n self._appliedTracksToSSRCs = new Map(self._tracksToSSRCs);\n }\n if (!self._pendingLocalOffer && !self._pendingRemoteOffer) {\n self.dispatchEvent.apply(self, arguments);\n }\n });\n\n peerConnection.ontrack = function ontrack() {\n // NOTE(mroberts): adapter.js's \"track\" event shim only kicks off if we set\n // the ontrack property of the RTCPeerConnection.\n };\n\n if (typeof RTCPeerConnection.prototype.addTrack !== 'function') {\n peerConnection.addStream(this._localStream);\n }\n util.proxyProperties(RTCPeerConnection.prototype, this, peerConnection);\n}\n\ninherits(ChromeRTCPeerConnection, EventTarget);\n\nif (typeof RTCPeerConnection.prototype.addTrack !== 'function') {\n // NOTE(mmalavalli): This shim supports our limited case of adding\n // all MediaStreamTracks to one MediaStream. It has been implemented this\n // keeping in mind that this is to be maintained only until \"addTrack\" is\n // supported natively in Chrome.\n ChromeRTCPeerConnection.prototype.addTrack = function addTrack() {\n var args = [].slice.call(arguments);\n var track = args[0];\n if (this._peerConnection.signalingState === 'closed') {\n throw new Error('Cannot add MediaStreamTrack [' + track.id + ', '\n + track.kind + ']: RTCPeerConnection is closed');\n }\n\n var sender = this._senders.get(track);\n if (sender && sender.track) {\n throw new Error('Cannot add MediaStreamTrack [' + track.id + ', '\n + track.kind + ']: RTCPeerConnection already has it');\n }\n this._peerConnection.removeStream(this._localStream);\n this._localStream.addTrack(track);\n this._peerConnection.addStream(this._localStream);\n\n sender = new RTCRtpSenderShim(track);\n this._senders.set(track, sender);\n return sender;\n };\n\n // NOTE(mmalavalli): This shim supports our limited case of removing\n // MediaStreamTracks from one MediaStream. It has been implemented this\n // keeping in mind that this is to be maintained only until \"removeTrack\" is\n // supported natively in Chrome.\n ChromeRTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n if (this._peerConnection.signalingState === 'closed') {\n throw new Error('Cannot remove MediaStreamTrack: RTCPeerConnection is closed');\n }\n\n var track = sender.track;\n if (!track) {\n return;\n }\n sender = this._senders.get(track);\n if (sender && sender.track) {\n sender.track = null;\n this._peerConnection.removeStream(this._localStream);\n this._localStream.removeTrack(track);\n this._peerConnection.addStream(this._localStream);\n }\n };\n\n ChromeRTCPeerConnection.prototype.getSenders = function getSenders() {\n return Array.from(this._senders.values());\n };\n} else {\n ChromeRTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n if (this._peerConnection.signalingState === 'closed') {\n throw new Error('Cannot remove MediaStreamTrack: RTCPeerConnection is closed');\n }\n try {\n this._peerConnection.removeTrack(sender);\n } catch (e) {\n // NOTE(mhuynh): Do nothing. In Chrome, will throw if a 'sender was not\n // created by this peer connection'. This behavior does not seem to be\n // spec compliant, so a temporary shim is introduced. A bug has been filed,\n // and is tracked here:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=860853\n }\n };\n}\n\nChromeRTCPeerConnection.prototype.addIceCandidate = function addIceCandidate(candidate) {\n var args = [].slice.call(arguments);\n var promise;\n var self = this;\n\n if (this.signalingState === 'have-remote-offer') {\n // NOTE(mroberts): Because the ChromeRTCPeerConnection simulates the\n // \"have-remote-offer\" signalingStates, we only want to invoke the true\n // addIceCandidates method when the remote description has been applied.\n promise = this._signalingStateLatch.when('low').then(function signalingStatesResolved() {\n return self._peerConnection.addIceCandidate(candidate);\n });\n } else {\n promise = this._peerConnection.addIceCandidate(candidate);\n }\n\n return args.length > 1\n ? util.legacyPromise(promise, args[1], args[2])\n : promise;\n};\n\n// NOTE(mroberts): The WebRTC spec does not specify that close should throw an\n// Error; however, in Chrome it does. We workaround this by checking the\n// signalingState manually.\nChromeRTCPeerConnection.prototype.close = function close() {\n if (this.signalingState !== 'closed') {\n this._pendingLocalOffer = null;\n this._pendingRemoteOffer = null;\n this._peerConnection.close();\n }\n};\n\n// NOTE(mroberts): Because we workaround Chrome's lack of rollback support by\n// \"faking\" setRemoteDescription, we cannot create an answer until we actually\n// apply the remote description. This means, once you call createAnswer, you\n// can no longer rollback. This is acceptable for our use case because we will\n// apply the newly-created answer almost immediately; however, this may be\n// unacceptable for other use cases.\nChromeRTCPeerConnection.prototype.createAnswer = function createAnswer() {\n var args = [].slice.call(arguments);\n var promise;\n var self = this;\n\n if (this._pendingRemoteOffer) {\n promise = this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function setRemoteDescriptionSucceeded() {\n // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation have converged. We\n // can unblock any pending calls to addIceCandidate now.\n self._signalingStateLatch.lower();\n return self._peerConnection.createAnswer();\n }).then(function createAnswerSucceeded(answer) {\n self._pendingRemoteOffer = null;\n\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return new ChromeRTCSessionDescription({\n type: 'answer',\n sdp: updateTrackIdsToSSRCs(self._sdpFormat, self._tracksToSSRCs, answer.sdp)\n });\n }, function setRemoteDescriptionOrCreateAnswerFailed(error) {\n self._pendingRemoteOffer = null;\n throw error;\n });\n } else {\n promise = this._peerConnection.createAnswer().then(function(answer) {\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return new ChromeRTCSessionDescription({\n type: 'answer',\n sdp: updateTrackIdsToSSRCs(self._sdpFormat, self._tracksToSSRCs, answer.sdp)\n });\n });\n }\n\n return args.length > 1\n ? util.legacyPromise(promise, args[0], args[1])\n : promise;\n};\n\nChromeRTCPeerConnection.prototype.createOffer = function createOffer() {\n var args = [].slice.call(arguments);\n var options = (args.length > 1 ? args[2] : args[0]) || {};\n var self = this;\n\n if (isIOSChrome()) {\n // NOTE (joma): From SafariRTCPeerConnection in order to support iOS Chrome.\n if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n delete options.offerToReceiveAudio;\n try {\n this._audioTransceiver = isUnifiedPlan\n ? this.addTransceiver('audio', { direction: 'recvonly' })\n : this.addTransceiver('audio');\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n delete options.offerToReceiveVideo;\n try {\n this._videoTransceiver = isUnifiedPlan\n ? this.addTransceiver('video', { direction: 'recvonly' })\n : this.addTransceiver('video');\n } catch (e) {\n return Promise.reject(e);\n }\n }\n }\n\n var promise = this._peerConnection.createOffer(options).then(function(offer) {\n // NOTE(mmalavalli): If createOffer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return new ChromeRTCSessionDescription({\n type: offer.type,\n sdp: updateTrackIdsToSSRCs(self._sdpFormat, self._tracksToSSRCs, offer.sdp)\n });\n });\n\n return args.length > 1\n ? util.legacyPromise(promise, args[0], args[1])\n : promise;\n};\n\nChromeRTCPeerConnection.prototype.createDataChannel = function createDataChannel(label, dataChannelDict) {\n dataChannelDict = shimDataChannelInit(dataChannelDict);\n var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n shimDataChannel(dataChannel);\n return dataChannel;\n};\n\nChromeRTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() {\n var args = [].slice.call(arguments);\n var description = args[0];\n\n // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n // then we need to restore the rolled back tracks to SSRCs Map.\n if (this._rolledBackTracksToSSRCs.size > 0) {\n this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n this._rolledBackTracksToSSRCs.clear();\n }\n\n var promise = setDescription(this, true, description);\n return args.length > 1\n ? util.legacyPromise(promise, args[1], args[2])\n : promise;\n};\n\nChromeRTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() {\n var args = [].slice.call(arguments);\n var description = args[0];\n\n // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n this._rolledBackTracksToSSRCs.clear();\n\n var promise = setDescription(this, false, description);\n return args.length > 1\n ? util.legacyPromise(promise, args[1], args[2])\n : promise;\n};\n\nutil.delegateMethods(\n RTCPeerConnection.prototype,\n ChromeRTCPeerConnection.prototype,\n '_peerConnection');\n\n// NOTE(mroberts): We workaround Chrome's lack of rollback support, per the\n// workaround suggested here: https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n// Namely, we \"fake\" setting the local or remote description and instead buffer\n// it. If we receive or create an answer, then we will actually apply the\n// description. Until we receive or create an answer, we will be able to\n// \"rollback\" by simply discarding the buffer description.\nfunction setDescription(peerConnection, local, description) {\n function setPendingLocalOffer(offer) {\n if (local) {\n peerConnection._pendingLocalOffer = offer;\n } else {\n peerConnection._pendingRemoteOffer = offer;\n }\n }\n\n function clearPendingLocalOffer() {\n if (local) {\n peerConnection._pendingLocalOffer = null;\n } else {\n peerConnection._pendingRemoteOffer = null;\n }\n }\n\n var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n var promise;\n\n if (!local && pendingRemoteOffer && description.type === 'answer') {\n promise = setRemoteAnswer(peerConnection, description);\n } else if (description.type === 'offer') {\n if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n // NOTE(mroberts): Error message copied from Firefox.\n return Promise.reject(new Error('Cannot set ' + (local ? 'local' : 'remote') +\n ' offer in state ' + peerConnection.signalingState));\n }\n\n // We need to save this local offer in case of a rollback. We also need to\n // check to see if the signalingState between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation are about to diverge.\n // If so, we need to ensure subsequent calls to addIceCandidate will block.\n if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n peerConnection._signalingStateLatch.raise();\n }\n var previousSignalingState = peerConnection.signalingState;\n setPendingLocalOffer(unwrap(description));\n promise = Promise.resolve();\n\n // Only dispatch a signalingstatechange event if we transitioned.\n if (peerConnection.signalingState !== previousSignalingState) {\n promise.then(function dispatchSignalingStateChangeEvent() {\n peerConnection.dispatchEvent(new Event('signalingstatechange'));\n });\n }\n\n } else if (description.type === 'rollback') {\n if (peerConnection.signalingState !== intermediateState) {\n // NOTE(mroberts): Error message copied from Firefox.\n promise = Promise.reject(new Error('Cannot rollback ' +\n (local ? 'local' : 'remote') + ' description in ' + peerConnection.signalingState));\n } else {\n // Reset the pending offer.\n clearPendingLocalOffer();\n\n // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n // setLocalDescription() is called immediately after a rollback (without calling\n // createOffer() or createAnswer()), in which case this roll back is not due to a\n // glare scenario and this Map should be restored.\n peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n\n promise = Promise.resolve();\n promise.then(function dispatchSignalingStateChangeEvent() {\n peerConnection.dispatchEvent(new Event('signalingstatechange'));\n });\n }\n }\n\n return promise || peerConnection._peerConnection[setLocalDescription](unwrap(description));\n}\n\nfunction setRemoteAnswer(peerConnection, answer) {\n // Apply the pending local offer.\n var pendingLocalOffer = peerConnection._pendingLocalOffer;\n return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function setLocalOfferSucceeded() {\n peerConnection._pendingLocalOffer = null;\n return peerConnection.setRemoteDescription(answer);\n }).then(function setRemoteAnswerSucceeded() {\n // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation have converged. We\n // can unblock any pending calls to addIceCandidate now.\n peerConnection._signalingStateLatch.lower();\n });\n}\n\n/**\n * Whether a ChromeRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {ChromeRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\n function hasReceiversForTracksOfKind(peerConnection, kind) {\n return !!peerConnection.getTransceivers().find(function(transceiver) {\n return transceiver.receiver && transceiver.receiver.track && transceiver.receiver.track.kind === kind;\n });\n}\n\nfunction unwrap(description) {\n if (description instanceof ChromeRTCSessionDescription) {\n if (description._description) {\n return description._description;\n }\n }\n return new RTCSessionDescription(description);\n}\n\n/**\n * Check whether or not we need to apply our maxPacketLifeTime shim. We are\n * pretty conservative: we'll only apply it if the legacy maxRetransmitTime\n * property is available _and_ the standard maxPacketLifeTime property is _not_\n * available (the thinking being that Chrome will land the standards-compliant\n * property).\n * @returns {boolean}\n */\nfunction needsMaxPacketLifeTimeShim() {\n return 'maxRetransmitTime' in RTCDataChannel.prototype\n && !('maxPacketLifeTime' in RTCDataChannel.prototype);\n}\n\n/**\n * Shim an RTCDataChannelInit dictionary (if necessary). This function returns\n * a copy of the original RTCDataChannelInit.\n * @param {RTCDataChannelInit} dataChannelDict\n * @returns {RTCDataChannelInit}\n */\nfunction shimDataChannelInit(dataChannelDict) {\n dataChannelDict = Object.assign({}, dataChannelDict);\n if (needsMaxPacketLifeTimeShim() && 'maxPacketLifeTime' in dataChannelDict) {\n dataChannelDict.maxRetransmitTime = dataChannelDict.maxPacketLifeTime;\n }\n return dataChannelDict;\n}\n\n/**\n * Shim an RTCDataChannel (if necessary). This function mutates the\n * RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n Object.defineProperty(dataChannel, 'maxRetransmits', {\n value: dataChannel.maxRetransmits === 65535\n ? null\n : dataChannel.maxRetransmits\n });\n if (needsMaxPacketLifeTimeShim()) {\n // NOTE(mroberts): We can rename `maxRetransmitTime` to `maxPacketLifeTime`.\n //\n // https://bugs.chromium.org/p/chromium/issues/detail?id=696681\n //\n Object.defineProperty(dataChannel, 'maxPacketLifeTime', {\n value: dataChannel.maxRetransmitTime === 65535\n ? null\n : dataChannel.maxRetransmitTime\n });\n }\n return dataChannel;\n}\n\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {'planb'|'unified'} sdpFormat\n * @param {Map>} tracksToSSRCs\n * @param {string} sdp - an SDP whose format is determined by `sdpSemantics`\n * @returns {string} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(sdpFormat, tracksToSSRCs, sdp) {\n return sdpFormat === 'unified'\n ? sdpUtils.updateUnifiedPlanTrackIdsToSSRCs(tracksToSSRCs, sdp)\n : sdpUtils.updatePlanBTrackIdsToSSRCs(tracksToSSRCs, sdp);\n}\n\nmodule.exports = ChromeRTCPeerConnection;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3BlZXJjb25uZWN0aW9uL2Nocm9tZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvcnRjcGVlcmNvbm5lY3Rpb24vY2hyb21lLmpzPzE3NTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBSVENEYXRhQ2hhbm5lbCwgUlRDUGVlckNvbm5lY3Rpb24sIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2hyb21lUlRDU2Vzc2lvbkRlc2NyaXB0aW9uID0gcmVxdWlyZSgnLi4vcnRjc2Vzc2lvbmRlc2NyaXB0aW9uL2Nocm9tZScpO1xudmFyIEV2ZW50VGFyZ2V0ID0gcmVxdWlyZSgnLi4vdXRpbC9ldmVudHRhcmdldCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgndXRpbCcpLmluaGVyaXRzO1xudmFyIExhdGNoID0gcmVxdWlyZSgnLi4vdXRpbC9sYXRjaCcpO1xudmFyIE1lZGlhU3RyZWFtID0gcmVxdWlyZSgnLi4vbWVkaWFzdHJlYW0nKTtcbnZhciBSVENSdHBTZW5kZXJTaGltID0gcmVxdWlyZSgnLi4vcnRjcnRwc2VuZGVyJyk7XG52YXIgc2RwVXRpbHMgPSByZXF1aXJlKCcuLi91dGlsL3NkcCcpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuLi91dGlsJyk7XG52YXIgaXNJT1NDaHJvbWUgPSByZXF1aXJlKCcuLi91dGlsJykuaXNJT1NDaHJvbWU7XG5cbnZhciBpc1VuaWZpZWRQbGFuID0gc2RwVXRpbHMuZ2V0U2RwRm9ybWF0KCkgPT09ICd1bmlmaWVkJztcblxuLy8gTk9URShtcm9iZXJ0cyk6IFRoaXMgY2xhc3Mgd3JhcHMgQ2hyb21lJ3MgUlRDUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50YXRpb24uXG4vLyBJdCBwcm92aWRlcyBzb21lIGZ1bmN0aW9uYWxpdHkgbm90IGN1cnJlbnRseSBwcmVzZW50IGluIENocm9tZSwgbmFtZWx5IHRoZVxuLy8gYWJpbGl0aWVzIHRvXG4vL1xuLy8gICAxLiBSb2xsYmFjaywgcGVyIHRoZSB3b3JrYXJvdW5kIHN1Z2dlc3RlZCBoZXJlOlxuLy8gICAgICBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NTczOCNjM1xuLy9cbi8vICAgMi4gTGlzdGVuIGZvciB0cmFjayBldmVudHMsIHBlciB0aGUgYWRhcHRlci5qcyB3b3JrYXJvdW5kLlxuLy9cbi8vICAgMy4gU2V0IGljZVRyYW5zcG9ydFBvbGljeS5cbi8vXG5mdW5jdGlvbiBDaHJvbWVSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uLCBjb25zdHJhaW50cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ2hyb21lUlRDUGVlckNvbm5lY3Rpb24pKSB7XG4gICAgcmV0dXJuIG5ldyBDaHJvbWVSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uLCBjb25zdHJhaW50cyk7XG4gIH1cblxuICBFdmVudFRhcmdldC5jYWxsKHRoaXMpO1xuXG4gIGNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICB2YXIgbmV3Q29uZmlndXJhdGlvbiA9IE9iamVjdC5hc3NpZ24oY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3lcbiAgICA/IHsgaWNlVHJhbnNwb3J0czogY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgfVxuICAgIDoge30sIGNvbmZpZ3VyYXRpb24pO1xuXG4gIHV0aWwuaW50ZXJjZXB0RXZlbnQodGhpcywgJ2RhdGFjaGFubmVsJyk7XG4gIHV0aWwuaW50ZXJjZXB0RXZlbnQodGhpcywgJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJyk7XG5cbiAgdmFyIHNkcEZvcm1hdCA9IHNkcFV0aWxzLmdldFNkcEZvcm1hdChuZXdDb25maWd1cmF0aW9uLnNkcFNlbWFudGljcyk7XG4gIHZhciBwZWVyQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbihuZXdDb25maWd1cmF0aW9uLCBjb25zdHJhaW50cyk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgIF9hcHBsaWVkVHJhY2tzVG9TU1JDczoge1xuICAgICAgdmFsdWU6IG5ldyBNYXAoKSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfbG9jYWxTdHJlYW06IHtcbiAgICAgIHZhbHVlOiBuZXcgTWVkaWFTdHJlYW0oKVxuICAgIH0sXG4gICAgX3BlZXJDb25uZWN0aW9uOiB7XG4gICAgICB2YWx1ZTogcGVlckNvbm5lY3Rpb25cbiAgICB9LFxuICAgIF9wZW5kaW5nTG9jYWxPZmZlcjoge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgX3BlbmRpbmdSZW1vdGVPZmZlcjoge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzOiB7XG4gICAgICB2YWx1ZTogbmV3IE1hcCgpLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9LFxuICAgIF9zZHBGb3JtYXQ6IHtcbiAgICAgIHZhbHVlOiBzZHBGb3JtYXRcbiAgICB9LFxuICAgIF9zZW5kZXJzOiB7XG4gICAgICB2YWx1ZTogbmV3IE1hcCgpXG4gICAgfSxcbiAgICBfc2lnbmFsaW5nU3RhdGVMYXRjaDoge1xuICAgICAgdmFsdWU6IG5ldyBMYXRjaCgpXG4gICAgfSxcbiAgICBfdHJhY2tzVG9TU1JDczoge1xuICAgICAgdmFsdWU6IG5ldyBNYXAoKSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBsb2NhbERlc2NyaXB0aW9uOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdMb2NhbE9mZmVyID8gdGhpcy5fcGVuZGluZ0xvY2FsT2ZmZXIgOiBwZWVyQ29ubmVjdGlvbi5sb2NhbERlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyID8gdGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyIDogcGVlckNvbm5lY3Rpb24ucmVtb3RlRGVzY3JpcHRpb247XG4gICAgICB9XG4gICAgfSxcbiAgICBzaWduYWxpbmdTdGF0ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nTG9jYWxPZmZlcikge1xuICAgICAgICAgIHJldHVybiAnaGF2ZS1sb2NhbC1vZmZlcic7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyKSB7XG4gICAgICAgICAgcmV0dXJuICdoYXZlLXJlbW90ZS1vZmZlcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFjaGFubmVsJywgZnVuY3Rpb24gb25kYXRhY2hhbm5lbChldmVudCkge1xuICAgIHNoaW1EYXRhQ2hhbm5lbChldmVudC5jaGFubmVsKTtcbiAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9KTtcblxuICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdzaWduYWxpbmdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uIG9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UoKSB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlID09PSAnc3RhYmxlJykge1xuICAgICAgc2VsZi5fYXBwbGllZFRyYWNrc1RvU1NSQ3MgPSBuZXcgTWFwKHNlbGYuX3RyYWNrc1RvU1NSQ3MpO1xuICAgIH1cbiAgICBpZiAoIXNlbGYuX3BlbmRpbmdMb2NhbE9mZmVyICYmICFzZWxmLl9wZW5kaW5nUmVtb3RlT2ZmZXIpIHtcbiAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudC5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfSk7XG5cbiAgcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGZ1bmN0aW9uIG9udHJhY2soKSB7XG4gICAgLy8gTk9URShtcm9iZXJ0cyk6IGFkYXB0ZXIuanMncyBcInRyYWNrXCIgZXZlbnQgc2hpbSBvbmx5IGtpY2tzIG9mZiBpZiB3ZSBzZXRcbiAgICAvLyB0aGUgb250cmFjayBwcm9wZXJ0eSBvZiB0aGUgUlRDUGVlckNvbm5lY3Rpb24uXG4gIH07XG5cbiAgaWYgKHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkVHJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fbG9jYWxTdHJlYW0pO1xuICB9XG4gIHV0aWwucHJveHlQcm9wZXJ0aWVzKFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSwgdGhpcywgcGVlckNvbm5lY3Rpb24pO1xufVxuXG5pbmhlcml0cyhDaHJvbWVSVENQZWVyQ29ubmVjdGlvbiwgRXZlbnRUYXJnZXQpO1xuXG5pZiAodHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5hZGRUcmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBUaGlzIHNoaW0gc3VwcG9ydHMgb3VyIGxpbWl0ZWQgY2FzZSBvZiBhZGRpbmdcbiAgLy8gYWxsIE1lZGlhU3RyZWFtVHJhY2tzIHRvIG9uZSBNZWRpYVN0cmVhbS4gSXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhpc1xuICAvLyBrZWVwaW5nIGluIG1pbmQgdGhhdCB0aGlzIGlzIHRvIGJlIG1haW50YWluZWQgb25seSB1bnRpbCBcImFkZFRyYWNrXCIgaXNcbiAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGluIENocm9tZS5cbiAgQ2hyb21lUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmFkZFRyYWNrID0gZnVuY3Rpb24gYWRkVHJhY2soKSB7XG4gICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgdmFyIHRyYWNrID0gYXJnc1swXTtcbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24uc2lnbmFsaW5nU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhZGQgTWVkaWFTdHJlYW1UcmFjayBbJyArIHRyYWNrLmlkICsgJywgJ1xuICAgICAgICArIHRyYWNrLmtpbmQgKyAnXTogUlRDUGVlckNvbm5lY3Rpb24gaXMgY2xvc2VkJyk7XG4gICAgfVxuXG4gICAgdmFyIHNlbmRlciA9IHRoaXMuX3NlbmRlcnMuZ2V0KHRyYWNrKTtcbiAgICBpZiAoc2VuZGVyICYmIHNlbmRlci50cmFjaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgYWRkIE1lZGlhU3RyZWFtVHJhY2sgWycgKyB0cmFjay5pZCArICcsICdcbiAgICAgICAgKyB0cmFjay5raW5kICsgJ106IFJUQ1BlZXJDb25uZWN0aW9uIGFscmVhZHkgaGFzIGl0Jyk7XG4gICAgfVxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZVN0cmVhbSh0aGlzLl9sb2NhbFN0cmVhbSk7XG4gICAgdGhpcy5fbG9jYWxTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSh0aGlzLl9sb2NhbFN0cmVhbSk7XG5cbiAgICBzZW5kZXIgPSBuZXcgUlRDUnRwU2VuZGVyU2hpbSh0cmFjayk7XG4gICAgdGhpcy5fc2VuZGVycy5zZXQodHJhY2ssIHNlbmRlcik7XG4gICAgcmV0dXJuIHNlbmRlcjtcbiAgfTtcblxuICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBUaGlzIHNoaW0gc3VwcG9ydHMgb3VyIGxpbWl0ZWQgY2FzZSBvZiByZW1vdmluZ1xuICAvLyBNZWRpYVN0cmVhbVRyYWNrcyBmcm9tIG9uZSBNZWRpYVN0cmVhbS4gSXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgdGhpc1xuICAvLyBrZWVwaW5nIGluIG1pbmQgdGhhdCB0aGlzIGlzIHRvIGJlIG1haW50YWluZWQgb25seSB1bnRpbCBcInJlbW92ZVRyYWNrXCIgaXNcbiAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGluIENocm9tZS5cbiAgQ2hyb21lUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnJlbW92ZVRyYWNrID0gZnVuY3Rpb24gcmVtb3ZlVHJhY2soc2VuZGVyKSB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVtb3ZlIE1lZGlhU3RyZWFtVHJhY2s6IFJUQ1BlZXJDb25uZWN0aW9uIGlzIGNsb3NlZCcpO1xuICAgIH1cblxuICAgIHZhciB0cmFjayA9IHNlbmRlci50cmFjaztcbiAgICBpZiAoIXRyYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlbmRlciA9IHRoaXMuX3NlbmRlcnMuZ2V0KHRyYWNrKTtcbiAgICBpZiAoc2VuZGVyICYmIHNlbmRlci50cmFjaykge1xuICAgICAgc2VuZGVyLnRyYWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZVN0cmVhbSh0aGlzLl9sb2NhbFN0cmVhbSk7XG4gICAgICB0aGlzLl9sb2NhbFN0cmVhbS5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fbG9jYWxTdHJlYW0pO1xuICAgIH1cbiAgfTtcblxuICBDaHJvbWVSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuZ2V0U2VuZGVycyA9IGZ1bmN0aW9uIGdldFNlbmRlcnMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fc2VuZGVycy52YWx1ZXMoKSk7XG4gIH07XG59IGVsc2Uge1xuICBDaHJvbWVSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUucmVtb3ZlVHJhY2sgPSBmdW5jdGlvbiByZW1vdmVUcmFjayhzZW5kZXIpIHtcbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24uc2lnbmFsaW5nU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZW1vdmUgTWVkaWFTdHJlYW1UcmFjazogUlRDUGVlckNvbm5lY3Rpb24gaXMgY2xvc2VkJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayhzZW5kZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIE5PVEUobWh1eW5oKTogRG8gbm90aGluZy4gSW4gQ2hyb21lLCB3aWxsIHRocm93IGlmIGEgJ3NlbmRlciB3YXMgbm90XG4gICAgICAvLyBjcmVhdGVkIGJ5IHRoaXMgcGVlciBjb25uZWN0aW9uJy4gVGhpcyBiZWhhdmlvciBkb2VzIG5vdCBzZWVtIHRvIGJlXG4gICAgICAvLyBzcGVjIGNvbXBsaWFudCwgc28gYSB0ZW1wb3Jhcnkgc2hpbSBpcyBpbnRyb2R1Y2VkLiBBIGJ1ZyBoYXMgYmVlbiBmaWxlZCxcbiAgICAgIC8vIGFuZCBpcyB0cmFja2VkIGhlcmU6XG4gICAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04NjA4NTNcbiAgICB9XG4gIH07XG59XG5cbkNocm9tZVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5hZGRJY2VDYW5kaWRhdGUgPSBmdW5jdGlvbiBhZGRJY2VDYW5kaWRhdGUoY2FuZGlkYXRlKSB7XG4gIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICB2YXIgcHJvbWlzZTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGlmICh0aGlzLnNpZ25hbGluZ1N0YXRlID09PSAnaGF2ZS1yZW1vdGUtb2ZmZXInKSB7XG4gICAgLy8gTk9URShtcm9iZXJ0cyk6IEJlY2F1c2UgdGhlIENocm9tZVJUQ1BlZXJDb25uZWN0aW9uIHNpbXVsYXRlcyB0aGVcbiAgICAvLyBcImhhdmUtcmVtb3RlLW9mZmVyXCIgc2lnbmFsaW5nU3RhdGVzLCB3ZSBvbmx5IHdhbnQgdG8gaW52b2tlIHRoZSB0cnVlXG4gICAgLy8gYWRkSWNlQ2FuZGlkYXRlcyBtZXRob2Qgd2hlbiB0aGUgcmVtb3RlIGRlc2NyaXB0aW9uIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAgcHJvbWlzZSA9IHRoaXMuX3NpZ25hbGluZ1N0YXRlTGF0Y2gud2hlbignbG93JykudGhlbihmdW5jdGlvbiBzaWduYWxpbmdTdGF0ZXNSZXNvbHZlZCgpIHtcbiAgICAgIHJldHVybiBzZWxmLl9wZWVyQ29ubmVjdGlvbi5hZGRJY2VDYW5kaWRhdGUoY2FuZGlkYXRlKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7XG4gIH1cblxuICByZXR1cm4gYXJncy5sZW5ndGggPiAxXG4gICAgPyB1dGlsLmxlZ2FjeVByb21pc2UocHJvbWlzZSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICA6IHByb21pc2U7XG59O1xuXG4vLyBOT1RFKG1yb2JlcnRzKTogVGhlIFdlYlJUQyBzcGVjIGRvZXMgbm90IHNwZWNpZnkgdGhhdCBjbG9zZSBzaG91bGQgdGhyb3cgYW5cbi8vIEVycm9yOyBob3dldmVyLCBpbiBDaHJvbWUgaXQgZG9lcy4gV2Ugd29ya2Fyb3VuZCB0aGlzIGJ5IGNoZWNraW5nIHRoZVxuLy8gc2lnbmFsaW5nU3RhdGUgbWFudWFsbHkuXG5DaHJvbWVSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgaWYgKHRoaXMuc2lnbmFsaW5nU3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgdGhpcy5fcGVuZGluZ0xvY2FsT2ZmZXIgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZW1vdGVPZmZlciA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxufTtcblxuLy8gTk9URShtcm9iZXJ0cyk6IEJlY2F1c2Ugd2Ugd29ya2Fyb3VuZCBDaHJvbWUncyBsYWNrIG9mIHJvbGxiYWNrIHN1cHBvcnQgYnlcbi8vIFwiZmFraW5nXCIgc2V0UmVtb3RlRGVzY3JpcHRpb24sIHdlIGNhbm5vdCBjcmVhdGUgYW4gYW5zd2VyIHVudGlsIHdlIGFjdHVhbGx5XG4vLyBhcHBseSB0aGUgcmVtb3RlIGRlc2NyaXB0aW9uLiBUaGlzIG1lYW5zLCBvbmNlIHlvdSBjYWxsIGNyZWF0ZUFuc3dlciwgeW91XG4vLyBjYW4gbm8gbG9uZ2VyIHJvbGxiYWNrLiBUaGlzIGlzIGFjY2VwdGFibGUgZm9yIG91ciB1c2UgY2FzZSBiZWNhdXNlIHdlIHdpbGxcbi8vIGFwcGx5IHRoZSBuZXdseS1jcmVhdGVkIGFuc3dlciBhbG1vc3QgaW1tZWRpYXRlbHk7IGhvd2V2ZXIsIHRoaXMgbWF5IGJlXG4vLyB1bmFjY2VwdGFibGUgZm9yIG90aGVyIHVzZSBjYXNlcy5cbkNocm9tZVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVBbnN3ZXIgPSBmdW5jdGlvbiBjcmVhdGVBbnN3ZXIoKSB7XG4gIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICB2YXIgcHJvbWlzZTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGlmICh0aGlzLl9wZW5kaW5nUmVtb3RlT2ZmZXIpIHtcbiAgICBwcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24odGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyKS50aGVuKGZ1bmN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2VlZGVkKCkge1xuICAgICAgLy8gTk9URShtcm9iZXJ0cyk6IFRoZSBzaWduYWxpbmdTdGF0ZXMgYmV0d2VlbiB0aGUgQ2hyb21lUlRDUGVlckNvbm5lY3Rpb25cbiAgICAgIC8vIGFuZCB0aGUgdW5kZXJseWluZyBSVENQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRhdGlvbiBoYXZlIGNvbnZlcmdlZC4gV2VcbiAgICAgIC8vIGNhbiB1bmJsb2NrIGFueSBwZW5kaW5nIGNhbGxzIHRvIGFkZEljZUNhbmRpZGF0ZSBub3cuXG4gICAgICBzZWxmLl9zaWduYWxpbmdTdGF0ZUxhdGNoLmxvd2VyKCk7XG4gICAgICByZXR1cm4gc2VsZi5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKCk7XG4gICAgfSkudGhlbihmdW5jdGlvbiBjcmVhdGVBbnN3ZXJTdWNjZWVkZWQoYW5zd2VyKSB7XG4gICAgICBzZWxmLl9wZW5kaW5nUmVtb3RlT2ZmZXIgPSBudWxsO1xuXG4gICAgICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBjcmVhdGVBbnN3ZXIoKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGVuIHdlIG5vXG4gICAgICAvLyBsb25nZXIgbmVlZCB0byByZXRhaW4gdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAuXG4gICAgICBzZWxmLl9yb2xsZWRCYWNrVHJhY2tzVG9TU1JDcy5jbGVhcigpO1xuXG4gICAgICByZXR1cm4gbmV3IENocm9tZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICAgIHR5cGU6ICdhbnN3ZXInLFxuICAgICAgICBzZHA6IHVwZGF0ZVRyYWNrSWRzVG9TU1JDcyhzZWxmLl9zZHBGb3JtYXQsIHNlbGYuX3RyYWNrc1RvU1NSQ3MsIGFuc3dlci5zZHApXG4gICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvbk9yQ3JlYXRlQW5zd2VyRmFpbGVkKGVycm9yKSB7XG4gICAgICBzZWxmLl9wZW5kaW5nUmVtb3RlT2ZmZXIgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvbWlzZSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigpLnRoZW4oZnVuY3Rpb24oYW5zd2VyKSB7XG4gICAgICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBjcmVhdGVBbnN3ZXIoKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGVuIHdlIG5vXG4gICAgICAvLyBsb25nZXIgbmVlZCB0byByZXRhaW4gdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAuXG4gICAgICBzZWxmLl9yb2xsZWRCYWNrVHJhY2tzVG9TU1JDcy5jbGVhcigpO1xuXG4gICAgICByZXR1cm4gbmV3IENocm9tZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICAgIHR5cGU6ICdhbnN3ZXInLFxuICAgICAgICBzZHA6IHVwZGF0ZVRyYWNrSWRzVG9TU1JDcyhzZWxmLl9zZHBGb3JtYXQsIHNlbGYuX3RyYWNrc1RvU1NSQ3MsIGFuc3dlci5zZHApXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhcmdzLmxlbmd0aCA+IDFcbiAgICA/IHV0aWwubGVnYWN5UHJvbWlzZShwcm9taXNlLCBhcmdzWzBdLCBhcmdzWzFdKVxuICAgIDogcHJvbWlzZTtcbn07XG5cbkNocm9tZVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVPZmZlciA9IGZ1bmN0aW9uIGNyZWF0ZU9mZmVyKCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIG9wdGlvbnMgPSAoYXJncy5sZW5ndGggPiAxID8gYXJnc1syXSA6IGFyZ3NbMF0pIHx8IHt9O1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgaWYgKGlzSU9TQ2hyb21lKCkpIHtcbiAgICAvLyBOT1RFIChqb21hKTogRnJvbSBTYWZhcmlSVENQZWVyQ29ubmVjdGlvbiBpbiBvcmRlciB0byBzdXBwb3J0IGlPUyBDaHJvbWUuXG4gICAgaWYgKG9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbyAmJiAhdGhpcy5fYXVkaW9UcmFuc2NlaXZlciAmJiAhKGlzVW5pZmllZFBsYW4gJiYgaGFzUmVjZWl2ZXJzRm9yVHJhY2tzT2ZLaW5kKHRoaXMsICdhdWRpbycpKSkge1xuICAgICAgZGVsZXRlIG9wdGlvbnMub2ZmZXJUb1JlY2VpdmVBdWRpbztcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX2F1ZGlvVHJhbnNjZWl2ZXIgPSBpc1VuaWZpZWRQbGFuXG4gICAgICAgICAgPyB0aGlzLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHsgZGlyZWN0aW9uOiAncmVjdm9ubHknIH0pXG4gICAgICAgICAgOiB0aGlzLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbyAmJiAhdGhpcy5fdmlkZW9UcmFuc2NlaXZlciAmJiAhKGlzVW5pZmllZFBsYW4gJiYgaGFzUmVjZWl2ZXJzRm9yVHJhY2tzT2ZLaW5kKHRoaXMsICd2aWRlbycpKSkge1xuICAgICAgZGVsZXRlIG9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbztcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3ZpZGVvVHJhbnNjZWl2ZXIgPSBpc1VuaWZpZWRQbGFuXG4gICAgICAgICAgPyB0aGlzLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycsIHsgZGlyZWN0aW9uOiAncmVjdm9ubHknIH0pXG4gICAgICAgICAgOiB0aGlzLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKS50aGVuKGZ1bmN0aW9uKG9mZmVyKSB7XG4gICAgLy8gTk9URShtbWFsYXZhbGxpKTogSWYgY3JlYXRlT2ZmZXIoKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGVuIHdlIG5vXG4gICAgLy8gbG9uZ2VyIG5lZWQgdG8gcmV0YWluIHRoZSByb2xsZWQgYmFjayB0cmFja3MgdG8gU1NSQ3MgTWFwLlxuICAgIHNlbGYuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gbmV3IENocm9tZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICB0eXBlOiBvZmZlci50eXBlLFxuICAgICAgc2RwOiB1cGRhdGVUcmFja0lkc1RvU1NSQ3Moc2VsZi5fc2RwRm9ybWF0LCBzZWxmLl90cmFja3NUb1NTUkNzLCBvZmZlci5zZHApXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBhcmdzLmxlbmd0aCA+IDFcbiAgICA/IHV0aWwubGVnYWN5UHJvbWlzZShwcm9taXNlLCBhcmdzWzBdLCBhcmdzWzFdKVxuICAgIDogcHJvbWlzZTtcbn07XG5cbkNocm9tZVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVEYXRhQ2hhbm5lbCA9IGZ1bmN0aW9uIGNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLCBkYXRhQ2hhbm5lbERpY3QpIHtcbiAgZGF0YUNoYW5uZWxEaWN0ID0gc2hpbURhdGFDaGFubmVsSW5pdChkYXRhQ2hhbm5lbERpY3QpO1xuICB2YXIgZGF0YUNoYW5uZWwgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5lbChsYWJlbCwgZGF0YUNoYW5uZWxEaWN0KTtcbiAgc2hpbURhdGFDaGFubmVsKGRhdGFDaGFubmVsKTtcbiAgcmV0dXJuIGRhdGFDaGFubmVsO1xufTtcblxuQ2hyb21lUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnNldExvY2FsRGVzY3JpcHRpb24gPSBmdW5jdGlvbiBzZXRMb2NhbERlc2NyaXB0aW9uKCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIGRlc2NyaXB0aW9uID0gYXJnc1swXTtcblxuICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBzZXRMb2NhbERlc2NyaXB0aW9uKCkgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHJvbGxpbmcgYmFjayxcbiAgLy8gdGhlbiB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAuXG4gIGlmICh0aGlzLl9yb2xsZWRCYWNrVHJhY2tzVG9TU1JDcy5zaXplID4gMCkge1xuICAgIHRoaXMuX3RyYWNrc1RvU1NSQ3MgPSBuZXcgTWFwKHRoaXMuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzKTtcbiAgICB0aGlzLl9yb2xsZWRCYWNrVHJhY2tzVG9TU1JDcy5jbGVhcigpO1xuICB9XG5cbiAgdmFyIHByb21pc2UgPSBzZXREZXNjcmlwdGlvbih0aGlzLCB0cnVlLCBkZXNjcmlwdGlvbik7XG4gIHJldHVybiBhcmdzLmxlbmd0aCA+IDFcbiAgICA/IHV0aWwubGVnYWN5UHJvbWlzZShwcm9taXNlLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgIDogcHJvbWlzZTtcbn07XG5cbkNocm9tZVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZXRSZW1vdGVEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uKCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIGRlc2NyaXB0aW9uID0gYXJnc1swXTtcblxuICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBzZXRSZW1vdGVEZXNjcmlwdGlvbigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciByb2xsaW5nIGJhY2ssXG4gIC8vIHRoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gcmV0YWluIHRoZSByb2xsZWQgYmFjayB0cmFja3MgdG8gU1NSQ3MgTWFwLlxuICB0aGlzLl9yb2xsZWRCYWNrVHJhY2tzVG9TU1JDcy5jbGVhcigpO1xuXG4gIHZhciBwcm9taXNlID0gc2V0RGVzY3JpcHRpb24odGhpcywgZmFsc2UsIGRlc2NyaXB0aW9uKTtcbiAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMVxuICAgID8gdXRpbC5sZWdhY3lQcm9taXNlKHByb21pc2UsIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgOiBwcm9taXNlO1xufTtcblxudXRpbC5kZWxlZ2F0ZU1ldGhvZHMoXG4gIFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSxcbiAgQ2hyb21lUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLFxuICAnX3BlZXJDb25uZWN0aW9uJyk7XG5cbi8vIE5PVEUobXJvYmVydHMpOiBXZSB3b3JrYXJvdW5kIENocm9tZSdzIGxhY2sgb2Ygcm9sbGJhY2sgc3VwcG9ydCwgcGVyIHRoZVxuLy8gd29ya2Fyb3VuZCBzdWdnZXN0ZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3dlYnJ0Yy9pc3N1ZXMvZGV0YWlsP2lkPTU3MzgjYzNcbi8vIE5hbWVseSwgd2UgXCJmYWtlXCIgc2V0dGluZyB0aGUgbG9jYWwgb3IgcmVtb3RlIGRlc2NyaXB0aW9uIGFuZCBpbnN0ZWFkIGJ1ZmZlclxuLy8gaXQuIElmIHdlIHJlY2VpdmUgb3IgY3JlYXRlIGFuIGFuc3dlciwgdGhlbiB3ZSB3aWxsIGFjdHVhbGx5IGFwcGx5IHRoZVxuLy8gZGVzY3JpcHRpb24uIFVudGlsIHdlIHJlY2VpdmUgb3IgY3JlYXRlIGFuIGFuc3dlciwgd2Ugd2lsbCBiZSBhYmxlIHRvXG4vLyBcInJvbGxiYWNrXCIgYnkgc2ltcGx5IGRpc2NhcmRpbmcgdGhlIGJ1ZmZlciBkZXNjcmlwdGlvbi5cbmZ1bmN0aW9uIHNldERlc2NyaXB0aW9uKHBlZXJDb25uZWN0aW9uLCBsb2NhbCwgZGVzY3JpcHRpb24pIHtcbiAgZnVuY3Rpb24gc2V0UGVuZGluZ0xvY2FsT2ZmZXIob2ZmZXIpIHtcbiAgICBpZiAobG9jYWwpIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlciA9IG9mZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5fcGVuZGluZ1JlbW90ZU9mZmVyID0gb2ZmZXI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJQZW5kaW5nTG9jYWxPZmZlcigpIHtcbiAgICBpZiAobG9jYWwpIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlciA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nUmVtb3RlT2ZmZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwZW5kaW5nTG9jYWxPZmZlciA9IGxvY2FsID8gcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdMb2NhbE9mZmVyIDogcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdSZW1vdGVPZmZlcjtcbiAgdmFyIHBlbmRpbmdSZW1vdGVPZmZlciA9IGxvY2FsID8gcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdSZW1vdGVPZmZlciA6IHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlcjtcbiAgdmFyIGludGVybWVkaWF0ZVN0YXRlID0gbG9jYWwgPyAnaGF2ZS1sb2NhbC1vZmZlcicgOiAnaGF2ZS1yZW1vdGUtb2ZmZXInO1xuICB2YXIgc2V0TG9jYWxEZXNjcmlwdGlvbiA9IGxvY2FsID8gJ3NldExvY2FsRGVzY3JpcHRpb24nIDogJ3NldFJlbW90ZURlc2NyaXB0aW9uJztcbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFsb2NhbCAmJiBwZW5kaW5nUmVtb3RlT2ZmZXIgJiYgZGVzY3JpcHRpb24udHlwZSA9PT0gJ2Fuc3dlcicpIHtcbiAgICBwcm9taXNlID0gc2V0UmVtb3RlQW5zd2VyKHBlZXJDb25uZWN0aW9uLCBkZXNjcmlwdGlvbik7XG4gIH0gZWxzZSBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ29mZmVyJykge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZSAhPT0gaW50ZXJtZWRpYXRlU3RhdGUgJiYgcGVlckNvbm5lY3Rpb24uc2lnbmFsaW5nU3RhdGUgIT09ICdzdGFibGUnKSB7XG4gICAgICAvLyBOT1RFKG1yb2JlcnRzKTogRXJyb3IgbWVzc2FnZSBjb3BpZWQgZnJvbSBGaXJlZm94LlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ2Fubm90IHNldCAnICsgKGxvY2FsID8gJ2xvY2FsJyA6ICdyZW1vdGUnKSArXG4gICAgICAgICcgb2ZmZXIgaW4gc3RhdGUgJyArIHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlKSk7XG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCB0byBzYXZlIHRoaXMgbG9jYWwgb2ZmZXIgaW4gY2FzZSBvZiBhIHJvbGxiYWNrLiBXZSBhbHNvIG5lZWQgdG9cbiAgICAvLyBjaGVjayB0byBzZWUgaWYgdGhlIHNpZ25hbGluZ1N0YXRlIGJldHdlZW4gdGhlIENocm9tZVJUQ1BlZXJDb25uZWN0aW9uXG4gICAgLy8gYW5kIHRoZSB1bmRlcmx5aW5nIFJUQ1BlZXJDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uIGFyZSBhYm91dCB0byBkaXZlcmdlLlxuICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIGVuc3VyZSBzdWJzZXF1ZW50IGNhbGxzIHRvIGFkZEljZUNhbmRpZGF0ZSB3aWxsIGJsb2NrLlxuICAgIGlmICghcGVuZGluZ0xvY2FsT2ZmZXIgJiYgcGVlckNvbm5lY3Rpb24uX3NpZ25hbGluZ1N0YXRlTGF0Y2guc3RhdGUgPT09ICdsb3cnKSB7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5fc2lnbmFsaW5nU3RhdGVMYXRjaC5yYWlzZSgpO1xuICAgIH1cbiAgICB2YXIgcHJldmlvdXNTaWduYWxpbmdTdGF0ZSA9IHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlO1xuICAgIHNldFBlbmRpbmdMb2NhbE9mZmVyKHVud3JhcChkZXNjcmlwdGlvbikpO1xuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgIC8vIE9ubHkgZGlzcGF0Y2ggYSBzaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBpZiB3ZSB0cmFuc2l0aW9uZWQuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlICE9PSBwcmV2aW91c1NpZ25hbGluZ1N0YXRlKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gZGlzcGF0Y2hTaWduYWxpbmdTdGF0ZUNoYW5nZUV2ZW50KCkge1xuICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc2lnbmFsaW5nc3RhdGVjaGFuZ2UnKSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAncm9sbGJhY2snKSB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlICE9PSBpbnRlcm1lZGlhdGVTdGF0ZSkge1xuICAgICAgLy8gTk9URShtcm9iZXJ0cyk6IEVycm9yIG1lc3NhZ2UgY29waWVkIGZyb20gRmlyZWZveC5cbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0Nhbm5vdCByb2xsYmFjayAnICtcbiAgICAgICAgKGxvY2FsID8gJ2xvY2FsJyA6ICdyZW1vdGUnKSArICcgZGVzY3JpcHRpb24gaW4gJyArIHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBwZW5kaW5nIG9mZmVyLlxuICAgICAgY2xlYXJQZW5kaW5nTG9jYWxPZmZlcigpO1xuXG4gICAgICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBXZSBzdG9yZSB0aGUgcm9sbGVkIGJhY2sgdHJhY2tzIHRvIFNTUkNzIE1hcCBoZXJlIGluIGNhc2VcbiAgICAgIC8vIHNldExvY2FsRGVzY3JpcHRpb24oKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSByb2xsYmFjayAod2l0aG91dCBjYWxsaW5nXG4gICAgICAvLyBjcmVhdGVPZmZlcigpIG9yIGNyZWF0ZUFuc3dlcigpKSwgaW4gd2hpY2ggY2FzZSB0aGlzIHJvbGwgYmFjayBpcyBub3QgZHVlIHRvIGFcbiAgICAgIC8vIGdsYXJlIHNjZW5hcmlvIGFuZCB0aGlzIE1hcCBzaG91bGQgYmUgcmVzdG9yZWQuXG4gICAgICBwZWVyQ29ubmVjdGlvbi5fcm9sbGVkQmFja1RyYWNrc1RvU1NSQ3MgPSBuZXcgTWFwKHBlZXJDb25uZWN0aW9uLl90cmFja3NUb1NTUkNzKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl90cmFja3NUb1NTUkNzID0gbmV3IE1hcChwZWVyQ29ubmVjdGlvbi5fYXBwbGllZFRyYWNrc1RvU1NSQ3MpO1xuXG4gICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gZGlzcGF0Y2hTaWduYWxpbmdTdGF0ZUNoYW5nZUV2ZW50KCkge1xuICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc2lnbmFsaW5nc3RhdGVjaGFuZ2UnKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZSB8fCBwZWVyQ29ubmVjdGlvbi5fcGVlckNvbm5lY3Rpb25bc2V0TG9jYWxEZXNjcmlwdGlvbl0odW53cmFwKGRlc2NyaXB0aW9uKSk7XG59XG5cbmZ1bmN0aW9uIHNldFJlbW90ZUFuc3dlcihwZWVyQ29ubmVjdGlvbiwgYW5zd2VyKSB7XG4gIC8vIEFwcGx5IHRoZSBwZW5kaW5nIGxvY2FsIG9mZmVyLlxuICB2YXIgcGVuZGluZ0xvY2FsT2ZmZXIgPSBwZWVyQ29ubmVjdGlvbi5fcGVuZGluZ0xvY2FsT2ZmZXI7XG4gIHJldHVybiBwZWVyQ29ubmVjdGlvbi5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihwZW5kaW5nTG9jYWxPZmZlcikudGhlbihmdW5jdGlvbiBzZXRMb2NhbE9mZmVyU3VjY2VlZGVkKCkge1xuICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlciA9IG51bGw7XG4gICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGFuc3dlcik7XG4gIH0pLnRoZW4oZnVuY3Rpb24gc2V0UmVtb3RlQW5zd2VyU3VjY2VlZGVkKCkge1xuICAgIC8vIE5PVEUobXJvYmVydHMpOiBUaGUgc2lnbmFsaW5nU3RhdGVzIGJldHdlZW4gdGhlIENocm9tZVJUQ1BlZXJDb25uZWN0aW9uXG4gICAgLy8gYW5kIHRoZSB1bmRlcmx5aW5nIFJUQ1BlZXJDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uIGhhdmUgY29udmVyZ2VkLiBXZVxuICAgIC8vIGNhbiB1bmJsb2NrIGFueSBwZW5kaW5nIGNhbGxzIHRvIGFkZEljZUNhbmRpZGF0ZSBub3cuXG4gICAgcGVlckNvbm5lY3Rpb24uX3NpZ25hbGluZ1N0YXRlTGF0Y2gubG93ZXIoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogV2hldGhlciBhIENocm9tZVJUQ1BlZXJDb25uZWN0aW9uIGhhcyBhbnkgUlRDUnRwUmVjZWl2ZXJzKHMpIGZvciB0aGUgZ2l2ZW5cbiAqIE1lZGlhU3RyZWFtVHJhY2sga2luZC5cbiAqIEBwYXJhbSB7Q2hyb21lUlRDUGVlckNvbm5lY3Rpb259IHBlZXJDb25uZWN0aW9uXG4gKiBAcGFyYW0geydhdWRpbycgfCAndmlkZW8nfSBraW5kXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuIGZ1bmN0aW9uIGhhc1JlY2VpdmVyc0ZvclRyYWNrc09mS2luZChwZWVyQ29ubmVjdGlvbiwga2luZCkge1xuICByZXR1cm4gISFwZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKS5maW5kKGZ1bmN0aW9uKHRyYW5zY2VpdmVyKSB7XG4gICAgcmV0dXJuIHRyYW5zY2VpdmVyLnJlY2VpdmVyICYmIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrICYmIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgPT09IGtpbmQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1bndyYXAoZGVzY3JpcHRpb24pIHtcbiAgaWYgKGRlc2NyaXB0aW9uIGluc3RhbmNlb2YgQ2hyb21lUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uLl9kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uLl9kZXNjcmlwdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQgdG8gYXBwbHkgb3VyIG1heFBhY2tldExpZmVUaW1lIHNoaW0uIFdlIGFyZVxuICogcHJldHR5IGNvbnNlcnZhdGl2ZTogd2UnbGwgb25seSBhcHBseSBpdCBpZiB0aGUgbGVnYWN5IG1heFJldHJhbnNtaXRUaW1lXG4gKiBwcm9wZXJ0eSBpcyBhdmFpbGFibGUgX2FuZF8gdGhlIHN0YW5kYXJkIG1heFBhY2tldExpZmVUaW1lIHByb3BlcnR5IGlzIF9ub3RfXG4gKiBhdmFpbGFibGUgKHRoZSB0aGlua2luZyBiZWluZyB0aGF0IENocm9tZSB3aWxsIGxhbmQgdGhlIHN0YW5kYXJkcy1jb21wbGlhbnRcbiAqIHByb3BlcnR5KS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBuZWVkc01heFBhY2tldExpZmVUaW1lU2hpbSgpIHtcbiAgcmV0dXJuICdtYXhSZXRyYW5zbWl0VGltZScgaW4gUlRDRGF0YUNoYW5uZWwucHJvdG90eXBlXG4gICAgJiYgISgnbWF4UGFja2V0TGlmZVRpbWUnIGluIFJUQ0RhdGFDaGFubmVsLnByb3RvdHlwZSk7XG59XG5cbi8qKlxuICogU2hpbSBhbiBSVENEYXRhQ2hhbm5lbEluaXQgZGljdGlvbmFyeSAoaWYgbmVjZXNzYXJ5KS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIFJUQ0RhdGFDaGFubmVsSW5pdC5cbiAqIEBwYXJhbSB7UlRDRGF0YUNoYW5uZWxJbml0fSBkYXRhQ2hhbm5lbERpY3RcbiAqIEByZXR1cm5zIHtSVENEYXRhQ2hhbm5lbEluaXR9XG4gKi9cbmZ1bmN0aW9uIHNoaW1EYXRhQ2hhbm5lbEluaXQoZGF0YUNoYW5uZWxEaWN0KSB7XG4gIGRhdGFDaGFubmVsRGljdCA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGFDaGFubmVsRGljdCk7XG4gIGlmIChuZWVkc01heFBhY2tldExpZmVUaW1lU2hpbSgpICYmICdtYXhQYWNrZXRMaWZlVGltZScgaW4gZGF0YUNoYW5uZWxEaWN0KSB7XG4gICAgZGF0YUNoYW5uZWxEaWN0Lm1heFJldHJhbnNtaXRUaW1lID0gZGF0YUNoYW5uZWxEaWN0Lm1heFBhY2tldExpZmVUaW1lO1xuICB9XG4gIHJldHVybiBkYXRhQ2hhbm5lbERpY3Q7XG59XG5cbi8qKlxuICogU2hpbSBhbiBSVENEYXRhQ2hhbm5lbCAoaWYgbmVjZXNzYXJ5KS4gVGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZVxuICogUlRDRGF0YUNoYW5uZWwuXG4gKiBAcGFyYW0ge1JUQ0RhdGFDaGFubmVsfSBkYXRhQ2hhbm5lbFxuICogQHJldHVybnMge1JUQ0RhdGFDaGFubmVsfVxuICovXG5mdW5jdGlvbiBzaGltRGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGFDaGFubmVsLCAnbWF4UmV0cmFuc21pdHMnLCB7XG4gICAgdmFsdWU6IGRhdGFDaGFubmVsLm1heFJldHJhbnNtaXRzID09PSA2NTUzNVxuICAgICAgPyBudWxsXG4gICAgICA6IGRhdGFDaGFubmVsLm1heFJldHJhbnNtaXRzXG4gIH0pO1xuICBpZiAobmVlZHNNYXhQYWNrZXRMaWZlVGltZVNoaW0oKSkge1xuICAgIC8vIE5PVEUobXJvYmVydHMpOiBXZSBjYW4gcmVuYW1lIGBtYXhSZXRyYW5zbWl0VGltZWAgdG8gYG1heFBhY2tldExpZmVUaW1lYC5cbiAgICAvL1xuICAgIC8vICAgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Njk2NjgxXG4gICAgLy9cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0YUNoYW5uZWwsICdtYXhQYWNrZXRMaWZlVGltZScsIHtcbiAgICAgIHZhbHVlOiBkYXRhQ2hhbm5lbC5tYXhSZXRyYW5zbWl0VGltZSA9PT0gNjU1MzVcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogZGF0YUNoYW5uZWwubWF4UmV0cmFuc21pdFRpbWVcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGF0YUNoYW5uZWw7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBtYXBwaW5ncyBmcm9tIE1lZGlhU3RyZWFtVHJhY2sgSURzIHRvIFNTUkNzIGFzIGluZGljYXRlZCBieSBib3RoXG4gKiB0aGUgTWFwIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgYW5kIHRoZSBTRFAgaXRzZWxmLiBUaGlzIG1ldGhvZFxuICogZW5zdXJlcyB0aGF0IFNTUkNzIG5ldmVyIGNoYW5nZSBvbmNlIGFubm91bmNlZC5cbiAqIEBwYXJhbSB7J3BsYW5iJ3wndW5pZmllZCd9IHNkcEZvcm1hdFxuICogQHBhcmFtIHtNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj59IHRyYWNrc1RvU1NSQ3NcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBhbiBTRFAgd2hvc2UgZm9ybWF0IGlzIGRldGVybWluZWQgYnkgYHNkcFNlbWFudGljc2BcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHVwZGF0ZWRTZHAgLSB1cGRhdGVkIFNEUFxuICovXG5mdW5jdGlvbiB1cGRhdGVUcmFja0lkc1RvU1NSQ3Moc2RwRm9ybWF0LCB0cmFja3NUb1NTUkNzLCBzZHApIHtcbiAgcmV0dXJuIHNkcEZvcm1hdCA9PT0gJ3VuaWZpZWQnXG4gICAgPyBzZHBVdGlscy51cGRhdGVVbmlmaWVkUGxhblRyYWNrSWRzVG9TU1JDcyh0cmFja3NUb1NTUkNzLCBzZHApXG4gICAgOiBzZHBVdGlscy51cGRhdGVQbGFuQlRyYWNrSWRzVG9TU1JDcyh0cmFja3NUb1NTUkNzLCBzZHApO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENocm9tZVJUQ1BlZXJDb25uZWN0aW9uO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcpeerconnection/chrome.js\n")},"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/firefox.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCPeerConnection */\n\n\nvar EventTarget = __webpack_require__(/*! ../util/eventtarget */ \"./node_modules/@twilio/webrtc/lib/util/eventtarget.js\");\nvar FirefoxRTCSessionDescription = __webpack_require__(/*! ../rtcsessiondescription/firefox */ \"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/firefox.js\");\nvar inherits = __webpack_require__(/*! util */ \"./node_modules/util/util.js\").inherits;\nvar updateTracksToSSRCs = __webpack_require__(/*! ../util/sdp */ \"./node_modules/@twilio/webrtc/lib/util/sdp.js\").updateUnifiedPlanTrackIdsToSSRCs;\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\");\n\n// NOTE(mroberts): This is a short-lived workaround. Checking the user agent\n// string might not fix every affected Firefox instance, but it should be good\n// enough for this bug.\nvar needsWorkaroundForBug1480277 = typeof navigator === 'object'\n && navigator.userAgent\n && (navigator.userAgent.match(/Firefox\\/61/) || navigator.userAgent.match(/Firefox\\/62/));\n\n// NOTE(mroberts): This class wraps Firefox's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Firefox, namely the\n// abilities to\n//\n// 1. Call setLocalDescription and setRemoteDescription with new offers in\n// signalingStates \"have-local-offer\" and \"have-remote-offer\",\n// respectively.\n//\n// 2. The ability to call createOffer in signalingState \"have-local-offer\".\n//\n// Both of these are implemented using rollbacks to workaround the following\n// bug:\n//\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1072388\n//\n// We also provide a workaround for a bug where Firefox may change the\n// previously-negotiated DTLS role in an answer, which breaks Chrome:\n//\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1240897\n//\nfunction FirefoxRTCPeerConnection(configuration) {\n if (!(this instanceof FirefoxRTCPeerConnection)) {\n return new FirefoxRTCPeerConnection(configuration);\n }\n\n EventTarget.call(this);\n\n util.interceptEvent(this, 'signalingstatechange');\n\n /* eslint new-cap:0 */\n var peerConnection = new RTCPeerConnection(configuration);\n\n Object.defineProperties(this, {\n _initiallyNegotiatedDtlsRole: {\n value: null,\n writable: true\n },\n _isClosed: {\n value: false,\n writable: true\n },\n _peerConnection: {\n value: peerConnection\n },\n _rollingBack: {\n value: false,\n writable: true\n },\n _tracksToSSRCs: {\n value: new Map()\n },\n iceGatheringState: {\n enumerable: true,\n get: function() {\n return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n }\n },\n localDescription: {\n enumerable: true,\n get: function() {\n return overwriteWithInitiallyNegotiatedDtlsRole(this._peerConnection.localDescription, this._initiallyNegotiatedDtlsRole);\n }\n },\n signalingState: {\n enumerable: true,\n get: function() {\n return this._isClosed ? 'closed' : this._peerConnection.signalingState;\n }\n }\n });\n\n var self = this;\n var previousSignalingState;\n\n peerConnection.addEventListener('signalingstatechange', function onsignalingstatechange() {\n if (!self._rollingBack && self.signalingState !== previousSignalingState) {\n previousSignalingState = self.signalingState;\n\n // NOTE(mmalavalli): In Firefox, 'signalingstatechange' event is\n // triggered synchronously in the same tick after\n // RTCPeerConnection#close() is called. So we mimic Chrome's behavior\n // by triggering 'signalingstatechange' on the next tick.\n var dispatchEventToSelf = self.dispatchEvent.apply.bind(self.dispatchEvent, self, arguments);\n if (self._isClosed) {\n setTimeout(dispatchEventToSelf);\n } else {\n dispatchEventToSelf();\n }\n }\n });\n\n util.proxyProperties(RTCPeerConnection.prototype, this, peerConnection);\n}\n\ninherits(FirefoxRTCPeerConnection, EventTarget);\n\n// NOTE(mmalavalli): Firefox throws a TypeError when the PeerConnection's\n// prototype's \"peerIdentity\" property is accessed. In order to overcome\n// this, we ignore this property while delegating methods.\n// Reference: https://bugzilla.mozilla.org/show_bug.cgi?id=1363815\nObject.defineProperty(FirefoxRTCPeerConnection.prototype, 'peerIdentity', {\n enumerable: true,\n value: Promise.resolve({\n idp: '',\n name: ''\n })\n});\n\nif (needsWorkaroundForBug1480277) {\n FirefoxRTCPeerConnection.prototype.addTrack = function addTrack() {\n var track = arguments[0];\n var sender = this._peerConnection.addTrack.apply(this._peerConnection, arguments);\n sender.replaceTrack(track);\n return sender;\n };\n}\n\nFirefoxRTCPeerConnection.prototype.createAnswer = function createAnswer() {\n var args = [].slice.call(arguments);\n var promise;\n var self = this;\n\n promise = this._peerConnection.createAnswer().then(function createAnswerSucceeded(answer) {\n saveInitiallyNegotiatedDtlsRole(self, answer);\n return overwriteWithInitiallyNegotiatedDtlsRole(answer, self._initiallyNegotiatedDtlsRole);\n });\n\n return typeof args[0] === 'function'\n ? util.legacyPromise(promise, args[0], args[1])\n : promise;\n};\n\n// NOTE(mroberts): The WebRTC spec allows you to call createOffer from any\n// signalingState other than \"closed\"; however, Firefox has not yet implemented\n// this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388). We workaround\n// this by rolling back if we are in state \"have-local-offer\" or\n// \"have-remote-offer\". This is acceptable for our use case because we will\n// apply the newly-created offer almost immediately; however, this may be\n// unacceptable for other use cases.\nFirefoxRTCPeerConnection.prototype.createOffer = function createOffer() {\n var args = [].slice.call(arguments);\n var options = (args.length > 1 ? args[2] : args[0]) || {};\n var promise;\n var self = this;\n\n if (this.signalingState === 'have-local-offer' ||\n this.signalingState === 'have-remote-offer') {\n var local = this.signalingState === 'have-local-offer';\n promise = rollback(this, local, function rollbackSucceeded() {\n return self.createOffer(options);\n });\n } else {\n promise = self._peerConnection.createOffer(options);\n }\n\n promise = promise.then(function(offer) {\n return new FirefoxRTCSessionDescription({\n type: offer.type,\n sdp: updateTracksToSSRCs(self._tracksToSSRCs, offer.sdp)\n });\n });\n\n return args.length > 1\n ? util.legacyPromise(promise, args[0], args[1])\n : promise;\n};\n\n// NOTE(mroberts): While Firefox will reject the Promise returned by\n// setLocalDescription when called from signalingState \"have-local-offer\" with\n// an answer, it still updates the .localDescription property. We workaround\n// this by explicitly handling this case.\nFirefoxRTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() {\n var args = [].slice.call(arguments);\n var description = args[0];\n var promise;\n\n if (description && description.type === 'answer' && this.signalingState === 'have-local-offer') {\n promise = Promise.reject(new Error('Cannot set local answer in state have-local-offer'));\n }\n\n if (promise) {\n return args.length > 1\n ? util.legacyPromise(promise, args[1], args[2])\n : promise;\n }\n\n return this._peerConnection.setLocalDescription.apply(this._peerConnection, args);\n};\n\n// NOTE(mroberts): The WebRTC spec allows you to call setRemoteDescription with\n// an offer multiple times in signalingState \"have-remote-offer\"; however,\n// Firefox has not yet implemented this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388).\n// We workaround this by rolling back if we are in state \"have-remote-offer\".\n// This is acceptable for our use case; however, this may be unacceptable for\n// other use cases.\n//\n// While Firefox will reject the Promise returned by setRemoteDescription when\n// called from signalingState \"have-remote-offer\" with an answer, it sill\n// updates the .remoteDescription property. We workaround this by explicitly\n// handling this case.\nFirefoxRTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() {\n var args = [].slice.call(arguments);\n var description = args[0];\n var promise;\n var self = this;\n\n if (description && this.signalingState === 'have-remote-offer') {\n if (description.type === 'answer') {\n promise = Promise.reject(new Error('Cannot set remote answer in state have-remote-offer'));\n } else if (description.type === 'offer') {\n promise = rollback(this, false, function rollbackSucceeded() {\n return self._peerConnection.setRemoteDescription(description);\n });\n }\n }\n\n if (!promise) {\n promise = this._peerConnection.setRemoteDescription(description);\n }\n\n promise = promise.then(function setRemoteDescriptionSucceeded() {\n saveInitiallyNegotiatedDtlsRole(self, description, true);\n });\n\n return args.length > 1\n ? util.legacyPromise(promise, args[1], args[2])\n : promise;\n};\n\n// NOTE(mroberts): The WebRTC spec specifies that the PeerConnection's internal\n// isClosed slot should immediately be set to true; however, in Firefox it\n// occurs in the next tick. We workaround this by tracking isClosed manually.\nFirefoxRTCPeerConnection.prototype.close = function close() {\n if (this.signalingState !== 'closed') {\n this._isClosed = true;\n this._peerConnection.close();\n }\n};\n\nutil.delegateMethods(\n RTCPeerConnection.prototype,\n FirefoxRTCPeerConnection.prototype,\n '_peerConnection');\n\nfunction rollback(peerConnection, local, onceRolledBack) {\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n peerConnection._rollingBack = true;\n return peerConnection._peerConnection[setLocalDescription](new FirefoxRTCSessionDescription({\n type: 'rollback'\n })).then(onceRolledBack).then(function onceRolledBackSucceeded(result) {\n peerConnection._rollingBack = false;\n return result;\n }, function rollbackOrOnceRolledBackFailed(error) {\n peerConnection._rollingBack = false;\n throw error;\n });\n}\n\n/**\n * Extract the initially negotiated DTLS role out of an RTCSessionDescription's\n * sdp property and save it on the FirefoxRTCPeerConnection if and only if\n *\n * 1. A DTLS role was not already saved on the FirefoxRTCPeerConnection, and\n * 2. The description is an answer.\n *\n * @private\n * @param {FirefoxRTCPeerConnection} peerConnection\n * @param {RTCSessionDescription} description\n * @param {boolean} [remote=false] - if true, save the inverse of the DTLS role,\n * e.g. \"active\" instead of \"passive\" and vice versa\n * @returns {undefined}\n */\nfunction saveInitiallyNegotiatedDtlsRole(peerConnection, description, remote) {\n // NOTE(mroberts): JSEP specifies that offers always offer \"actpass\" as the\n // DTLS role. We need to inspect answers to figure out the negotiated DTLS\n // role.\n if (peerConnection._initiallyNegotiatedDtlsRole || description.type === 'offer') {\n return;\n }\n\n var match = description.sdp.match(/a=setup:([a-z]+)/);\n if (!match) {\n return;\n }\n\n var dtlsRole = match[1];\n peerConnection._initiallyNegotiatedDtlsRole = remote ? {\n active: 'passive',\n passive: 'active'\n }[dtlsRole] : dtlsRole;\n}\n\n/**\n * Overwrite the DTLS role in the sdp property of an RTCSessionDescription if\n * and only if\n *\n * 1. The description is an answer, and\n * 2. A DTLS role is provided.\n *\n * @private\n * @param {RTCSessionDescription} [description]\n * @param {string} [dtlsRole] - one of \"active\" or \"passive\"\n * @returns {?RTCSessionDescription} description\n */\nfunction overwriteWithInitiallyNegotiatedDtlsRole(description, dtlsRole) {\n if (description && description.type === 'answer' && dtlsRole) {\n return new FirefoxRTCSessionDescription({\n type: description.type,\n sdp: description.sdp.replace(/a=setup:[a-z]+/g, 'a=setup:' + dtlsRole)\n });\n }\n return description;\n}\n\nmodule.exports = FirefoxRTCPeerConnection;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3BlZXJjb25uZWN0aW9uL2ZpcmVmb3guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3BlZXJjb25uZWN0aW9uL2ZpcmVmb3guanM/OTZjZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWxzIFJUQ1BlZXJDb25uZWN0aW9uICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4uL3V0aWwvZXZlbnR0YXJnZXQnKTtcbnZhciBGaXJlZm94UlRDU2Vzc2lvbkRlc2NyaXB0aW9uID0gcmVxdWlyZSgnLi4vcnRjc2Vzc2lvbmRlc2NyaXB0aW9uL2ZpcmVmb3gnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ3V0aWwnKS5pbmhlcml0cztcbnZhciB1cGRhdGVUcmFja3NUb1NTUkNzID0gcmVxdWlyZSgnLi4vdXRpbC9zZHAnKS51cGRhdGVVbmlmaWVkUGxhblRyYWNrSWRzVG9TU1JDcztcbnZhciB1dGlsID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG4vLyBOT1RFKG1yb2JlcnRzKTogVGhpcyBpcyBhIHNob3J0LWxpdmVkIHdvcmthcm91bmQuIENoZWNraW5nIHRoZSB1c2VyIGFnZW50XG4vLyBzdHJpbmcgbWlnaHQgbm90IGZpeCBldmVyeSBhZmZlY3RlZCBGaXJlZm94IGluc3RhbmNlLCBidXQgaXQgc2hvdWxkIGJlIGdvb2Rcbi8vIGVub3VnaCBmb3IgdGhpcyBidWcuXG52YXIgbmVlZHNXb3JrYXJvdW5kRm9yQnVnMTQ4MDI3NyA9IHR5cGVvZiBuYXZpZ2F0b3IgPT09ICdvYmplY3QnXG4gICYmIG5hdmlnYXRvci51c2VyQWdlbnRcbiAgJiYgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hcXC82MS8pIHx8IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hcXC82Mi8pKTtcblxuLy8gTk9URShtcm9iZXJ0cyk6IFRoaXMgY2xhc3Mgd3JhcHMgRmlyZWZveCdzIFJUQ1BlZXJDb25uZWN0aW9uIGltcGxlbWVudGF0aW9uLlxuLy8gSXQgcHJvdmlkZXMgc29tZSBmdW5jdGlvbmFsaXR5IG5vdCBjdXJyZW50bHkgcHJlc2VudCBpbiBGaXJlZm94LCBuYW1lbHkgdGhlXG4vLyBhYmlsaXRpZXMgdG9cbi8vXG4vLyAgIDEuIENhbGwgc2V0TG9jYWxEZXNjcmlwdGlvbiBhbmQgc2V0UmVtb3RlRGVzY3JpcHRpb24gd2l0aCBuZXcgb2ZmZXJzIGluXG4vLyAgICAgIHNpZ25hbGluZ1N0YXRlcyBcImhhdmUtbG9jYWwtb2ZmZXJcIiBhbmQgXCJoYXZlLXJlbW90ZS1vZmZlclwiLFxuLy8gICAgICByZXNwZWN0aXZlbHkuXG4vL1xuLy8gICAyLiBUaGUgYWJpbGl0eSB0byBjYWxsIGNyZWF0ZU9mZmVyIGluIHNpZ25hbGluZ1N0YXRlIFwiaGF2ZS1sb2NhbC1vZmZlclwiLlxuLy9cbi8vIEJvdGggb2YgdGhlc2UgYXJlIGltcGxlbWVudGVkIHVzaW5nIHJvbGxiYWNrcyB0byB3b3JrYXJvdW5kIHRoZSBmb2xsb3dpbmdcbi8vIGJ1Zzpcbi8vXG4vLyAgIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIzODhcbi8vXG4vLyBXZSBhbHNvIHByb3ZpZGUgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyB3aGVyZSBGaXJlZm94IG1heSBjaGFuZ2UgdGhlXG4vLyBwcmV2aW91c2x5LW5lZ290aWF0ZWQgRFRMUyByb2xlIGluIGFuIGFuc3dlciwgd2hpY2ggYnJlYWtzIENocm9tZTpcbi8vXG4vLyAgICAgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDg5N1xuLy9cbmZ1bmN0aW9uIEZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBGaXJlZm94UlRDUGVlckNvbm5lY3Rpb24pKSB7XG4gICAgcmV0dXJuIG5ldyBGaXJlZm94UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBFdmVudFRhcmdldC5jYWxsKHRoaXMpO1xuXG4gIHV0aWwuaW50ZXJjZXB0RXZlbnQodGhpcywgJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJyk7XG5cbiAgLyogZXNsaW50IG5ldy1jYXA6MCAqL1xuICB2YXIgcGVlckNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgIF9pbml0aWFsbHlOZWdvdGlhdGVkRHRsc1JvbGU6IHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9LFxuICAgIF9pc0Nsb3NlZDoge1xuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9LFxuICAgIF9wZWVyQ29ubmVjdGlvbjoge1xuICAgICAgdmFsdWU6IHBlZXJDb25uZWN0aW9uXG4gICAgfSxcbiAgICBfcm9sbGluZ0JhY2s6IHtcbiAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfdHJhY2tzVG9TU1JDczoge1xuICAgICAgdmFsdWU6IG5ldyBNYXAoKVxuICAgIH0sXG4gICAgaWNlR2F0aGVyaW5nU3RhdGU6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDbG9zZWQgPyAnY29tcGxldGUnIDogdGhpcy5fcGVlckNvbm5lY3Rpb24uaWNlR2F0aGVyaW5nU3RhdGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBsb2NhbERlc2NyaXB0aW9uOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJ3cml0ZVdpdGhJbml0aWFsbHlOZWdvdGlhdGVkRHRsc1JvbGUodGhpcy5fcGVlckNvbm5lY3Rpb24ubG9jYWxEZXNjcmlwdGlvbiwgdGhpcy5faW5pdGlhbGx5TmVnb3RpYXRlZER0bHNSb2xlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNpZ25hbGluZ1N0YXRlOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xvc2VkID8gJ2Nsb3NlZCcgOiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHByZXZpb3VzU2lnbmFsaW5nU3RhdGU7XG5cbiAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignc2lnbmFsaW5nc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbiBvbnNpZ25hbGluZ3N0YXRlY2hhbmdlKCkge1xuICAgIGlmICghc2VsZi5fcm9sbGluZ0JhY2sgJiYgc2VsZi5zaWduYWxpbmdTdGF0ZSAhPT0gcHJldmlvdXNTaWduYWxpbmdTdGF0ZSkge1xuICAgICAgcHJldmlvdXNTaWduYWxpbmdTdGF0ZSA9IHNlbGYuc2lnbmFsaW5nU3RhdGU7XG5cbiAgICAgIC8vIE5PVEUobW1hbGF2YWxsaSk6IEluIEZpcmVmb3gsICdzaWduYWxpbmdzdGF0ZWNoYW5nZScgZXZlbnQgaXNcbiAgICAgIC8vIHRyaWdnZXJlZCBzeW5jaHJvbm91c2x5IGluIHRoZSBzYW1lIHRpY2sgYWZ0ZXJcbiAgICAgIC8vIFJUQ1BlZXJDb25uZWN0aW9uI2Nsb3NlKCkgaXMgY2FsbGVkLiBTbyB3ZSBtaW1pYyBDaHJvbWUncyBiZWhhdmlvclxuICAgICAgLy8gYnkgdHJpZ2dlcmluZyAnc2lnbmFsaW5nc3RhdGVjaGFuZ2UnIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgICB2YXIgZGlzcGF0Y2hFdmVudFRvU2VsZiA9IHNlbGYuZGlzcGF0Y2hFdmVudC5hcHBseS5iaW5kKHNlbGYuZGlzcGF0Y2hFdmVudCwgc2VsZiwgYXJndW1lbnRzKTtcbiAgICAgIGlmIChzZWxmLl9pc0Nsb3NlZCkge1xuICAgICAgICBzZXRUaW1lb3V0KGRpc3BhdGNoRXZlbnRUb1NlbGYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGF0Y2hFdmVudFRvU2VsZigpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdXRpbC5wcm94eVByb3BlcnRpZXMoUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLCB0aGlzLCBwZWVyQ29ubmVjdGlvbik7XG59XG5cbmluaGVyaXRzKEZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbiwgRXZlbnRUYXJnZXQpO1xuXG4vLyBOT1RFKG1tYWxhdmFsbGkpOiBGaXJlZm94IHRocm93cyBhIFR5cGVFcnJvciB3aGVuIHRoZSBQZWVyQ29ubmVjdGlvbidzXG4vLyBwcm90b3R5cGUncyBcInBlZXJJZGVudGl0eVwiIHByb3BlcnR5IGlzIGFjY2Vzc2VkLiBJbiBvcmRlciB0byBvdmVyY29tZVxuLy8gdGhpcywgd2UgaWdub3JlIHRoaXMgcHJvcGVydHkgd2hpbGUgZGVsZWdhdGluZyBtZXRob2RzLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzODE1XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRmlyZWZveFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSwgJ3BlZXJJZGVudGl0eScsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgdmFsdWU6IFByb21pc2UucmVzb2x2ZSh7XG4gICAgaWRwOiAnJyxcbiAgICBuYW1lOiAnJ1xuICB9KVxufSk7XG5cbmlmIChuZWVkc1dvcmthcm91bmRGb3JCdWcxNDgwMjc3KSB7XG4gIEZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkVHJhY2sgPSBmdW5jdGlvbiBhZGRUcmFjaygpIHtcbiAgICB2YXIgdHJhY2sgPSBhcmd1bWVudHNbMF07XG4gICAgdmFyIHNlbmRlciA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrLmFwcGx5KHRoaXMuX3BlZXJDb25uZWN0aW9uLCBhcmd1bWVudHMpO1xuICAgIHNlbmRlci5yZXBsYWNlVHJhY2sodHJhY2spO1xuICAgIHJldHVybiBzZW5kZXI7XG4gIH07XG59XG5cbkZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuY3JlYXRlQW5zd2VyID0gZnVuY3Rpb24gY3JlYXRlQW5zd2VyKCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIHByb21pc2U7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBwcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKCkudGhlbihmdW5jdGlvbiBjcmVhdGVBbnN3ZXJTdWNjZWVkZWQoYW5zd2VyKSB7XG4gICAgc2F2ZUluaXRpYWxseU5lZ290aWF0ZWREdGxzUm9sZShzZWxmLCBhbnN3ZXIpO1xuICAgIHJldHVybiBvdmVyd3JpdGVXaXRoSW5pdGlhbGx5TmVnb3RpYXRlZER0bHNSb2xlKGFuc3dlciwgc2VsZi5faW5pdGlhbGx5TmVnb3RpYXRlZER0bHNSb2xlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVvZiBhcmdzWzBdID09PSAnZnVuY3Rpb24nXG4gICAgPyB1dGlsLmxlZ2FjeVByb21pc2UocHJvbWlzZSwgYXJnc1swXSwgYXJnc1sxXSlcbiAgICA6IHByb21pc2U7XG59O1xuXG4vLyBOT1RFKG1yb2JlcnRzKTogVGhlIFdlYlJUQyBzcGVjIGFsbG93cyB5b3UgdG8gY2FsbCBjcmVhdGVPZmZlciBmcm9tIGFueVxuLy8gc2lnbmFsaW5nU3RhdGUgb3RoZXIgdGhhbiBcImNsb3NlZFwiOyBob3dldmVyLCBGaXJlZm94IGhhcyBub3QgeWV0IGltcGxlbWVudGVkXG4vLyB0aGlzIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyMzg4KS4gV2Ugd29ya2Fyb3VuZFxuLy8gdGhpcyBieSByb2xsaW5nIGJhY2sgaWYgd2UgYXJlIGluIHN0YXRlIFwiaGF2ZS1sb2NhbC1vZmZlclwiIG9yXG4vLyBcImhhdmUtcmVtb3RlLW9mZmVyXCIuIFRoaXMgaXMgYWNjZXB0YWJsZSBmb3Igb3VyIHVzZSBjYXNlIGJlY2F1c2Ugd2Ugd2lsbFxuLy8gYXBwbHkgdGhlIG5ld2x5LWNyZWF0ZWQgb2ZmZXIgYWxtb3N0IGltbWVkaWF0ZWx5OyBob3dldmVyLCB0aGlzIG1heSBiZVxuLy8gdW5hY2NlcHRhYmxlIGZvciBvdGhlciB1c2UgY2FzZXMuXG5GaXJlZm94UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNyZWF0ZU9mZmVyID0gZnVuY3Rpb24gY3JlYXRlT2ZmZXIoKSB7XG4gIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICB2YXIgb3B0aW9ucyA9IChhcmdzLmxlbmd0aCA+IDEgPyBhcmdzWzJdIDogYXJnc1swXSkgfHwge307XG4gIHZhciBwcm9taXNlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuc2lnbmFsaW5nU3RhdGUgPT09ICdoYXZlLWxvY2FsLW9mZmVyJyB8fFxuICAgICAgdGhpcy5zaWduYWxpbmdTdGF0ZSA9PT0gJ2hhdmUtcmVtb3RlLW9mZmVyJykge1xuICAgIHZhciBsb2NhbCA9IHRoaXMuc2lnbmFsaW5nU3RhdGUgPT09ICdoYXZlLWxvY2FsLW9mZmVyJztcbiAgICBwcm9taXNlID0gcm9sbGJhY2sodGhpcywgbG9jYWwsIGZ1bmN0aW9uIHJvbGxiYWNrU3VjY2VlZGVkKCkge1xuICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvbWlzZSA9IHNlbGYuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvbWlzZSA9IHByb21pc2UudGhlbihmdW5jdGlvbihvZmZlcikge1xuICAgIHJldHVybiBuZXcgRmlyZWZveFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICB0eXBlOiBvZmZlci50eXBlLFxuICAgICAgc2RwOiB1cGRhdGVUcmFja3NUb1NTUkNzKHNlbGYuX3RyYWNrc1RvU1NSQ3MsIG9mZmVyLnNkcClcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMVxuICAgID8gdXRpbC5sZWdhY3lQcm9taXNlKHByb21pc2UsIGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgOiBwcm9taXNlO1xufTtcblxuLy8gTk9URShtcm9iZXJ0cyk6IFdoaWxlIEZpcmVmb3ggd2lsbCByZWplY3QgdGhlIFByb21pc2UgcmV0dXJuZWQgYnlcbi8vIHNldExvY2FsRGVzY3JpcHRpb24gd2hlbiBjYWxsZWQgZnJvbSBzaWduYWxpbmdTdGF0ZSBcImhhdmUtbG9jYWwtb2ZmZXJcIiB3aXRoXG4vLyBhbiBhbnN3ZXIsIGl0IHN0aWxsIHVwZGF0ZXMgdGhlIC5sb2NhbERlc2NyaXB0aW9uIHByb3BlcnR5LiBXZSB3b3JrYXJvdW5kXG4vLyB0aGlzIGJ5IGV4cGxpY2l0bHkgaGFuZGxpbmcgdGhpcyBjYXNlLlxuRmlyZWZveFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZXRMb2NhbERlc2NyaXB0aW9uID0gZnVuY3Rpb24gc2V0TG9jYWxEZXNjcmlwdGlvbigpIHtcbiAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gIHZhciBkZXNjcmlwdGlvbiA9IGFyZ3NbMF07XG4gIHZhciBwcm9taXNlO1xuXG4gIGlmIChkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi50eXBlID09PSAnYW5zd2VyJyAmJiB0aGlzLnNpZ25hbGluZ1N0YXRlID09PSAnaGF2ZS1sb2NhbC1vZmZlcicpIHtcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdDYW5ub3Qgc2V0IGxvY2FsIGFuc3dlciBpbiBzdGF0ZSBoYXZlLWxvY2FsLW9mZmVyJykpO1xuICB9XG5cbiAgaWYgKHByb21pc2UpIHtcbiAgICByZXR1cm4gYXJncy5sZW5ndGggPiAxXG4gICAgICA/IHV0aWwubGVnYWN5UHJvbWlzZShwcm9taXNlLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgOiBwcm9taXNlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24uYXBwbHkodGhpcy5fcGVlckNvbm5lY3Rpb24sIGFyZ3MpO1xufTtcblxuLy8gTk9URShtcm9iZXJ0cyk6IFRoZSBXZWJSVEMgc3BlYyBhbGxvd3MgeW91IHRvIGNhbGwgc2V0UmVtb3RlRGVzY3JpcHRpb24gd2l0aFxuLy8gYW4gb2ZmZXIgbXVsdGlwbGUgdGltZXMgaW4gc2lnbmFsaW5nU3RhdGUgXCJoYXZlLXJlbW90ZS1vZmZlclwiOyBob3dldmVyLFxuLy8gRmlyZWZveCBoYXMgbm90IHlldCBpbXBsZW1lbnRlZCB0aGlzIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyMzg4KS5cbi8vIFdlIHdvcmthcm91bmQgdGhpcyBieSByb2xsaW5nIGJhY2sgaWYgd2UgYXJlIGluIHN0YXRlIFwiaGF2ZS1yZW1vdGUtb2ZmZXJcIi5cbi8vIFRoaXMgaXMgYWNjZXB0YWJsZSBmb3Igb3VyIHVzZSBjYXNlOyBob3dldmVyLCB0aGlzIG1heSBiZSB1bmFjY2VwdGFibGUgZm9yXG4vLyBvdGhlciB1c2UgY2FzZXMuXG4vL1xuLy8gV2hpbGUgRmlyZWZveCB3aWxsIHJlamVjdCB0aGUgUHJvbWlzZSByZXR1cm5lZCBieSBzZXRSZW1vdGVEZXNjcmlwdGlvbiB3aGVuXG4vLyBjYWxsZWQgZnJvbSBzaWduYWxpbmdTdGF0ZSBcImhhdmUtcmVtb3RlLW9mZmVyXCIgd2l0aCBhbiBhbnN3ZXIsIGl0IHNpbGxcbi8vIHVwZGF0ZXMgdGhlIC5yZW1vdGVEZXNjcmlwdGlvbiBwcm9wZXJ0eS4gV2Ugd29ya2Fyb3VuZCB0aGlzIGJ5IGV4cGxpY2l0bHlcbi8vIGhhbmRsaW5nIHRoaXMgY2FzZS5cbkZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuc2V0UmVtb3RlRGVzY3JpcHRpb24gPSBmdW5jdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvbigpIHtcbiAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gIHZhciBkZXNjcmlwdGlvbiA9IGFyZ3NbMF07XG4gIHZhciBwcm9taXNlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgaWYgKGRlc2NyaXB0aW9uICYmIHRoaXMuc2lnbmFsaW5nU3RhdGUgPT09ICdoYXZlLXJlbW90ZS1vZmZlcicpIHtcbiAgICBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ2Fuc3dlcicpIHtcbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0Nhbm5vdCBzZXQgcmVtb3RlIGFuc3dlciBpbiBzdGF0ZSBoYXZlLXJlbW90ZS1vZmZlcicpKTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdvZmZlcicpIHtcbiAgICAgIHByb21pc2UgPSByb2xsYmFjayh0aGlzLCBmYWxzZSwgZnVuY3Rpb24gcm9sbGJhY2tTdWNjZWVkZWQoKSB7XG4gICAgICAgIHJldHVybiBzZWxmLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAoIXByb21pc2UpIHtcbiAgICBwcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgcHJvbWlzZSA9IHByb21pc2UudGhlbihmdW5jdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvblN1Y2NlZWRlZCgpIHtcbiAgICBzYXZlSW5pdGlhbGx5TmVnb3RpYXRlZER0bHNSb2xlKHNlbGYsIGRlc2NyaXB0aW9uLCB0cnVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMVxuICAgID8gdXRpbC5sZWdhY3lQcm9taXNlKHByb21pc2UsIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgOiBwcm9taXNlO1xufTtcblxuLy8gTk9URShtcm9iZXJ0cyk6IFRoZSBXZWJSVEMgc3BlYyBzcGVjaWZpZXMgdGhhdCB0aGUgUGVlckNvbm5lY3Rpb24ncyBpbnRlcm5hbFxuLy8gaXNDbG9zZWQgc2xvdCBzaG91bGQgaW1tZWRpYXRlbHkgYmUgc2V0IHRvIHRydWU7IGhvd2V2ZXIsIGluIEZpcmVmb3ggaXRcbi8vIG9jY3VycyBpbiB0aGUgbmV4dCB0aWNrLiBXZSB3b3JrYXJvdW5kIHRoaXMgYnkgdHJhY2tpbmcgaXNDbG9zZWQgbWFudWFsbHkuXG5GaXJlZm94UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gY2xvc2UoKSB7XG4gIGlmICh0aGlzLnNpZ25hbGluZ1N0YXRlICE9PSAnY2xvc2VkJykge1xuICAgIHRoaXMuX2lzQ2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICB9XG59O1xuXG51dGlsLmRlbGVnYXRlTWV0aG9kcyhcbiAgUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLFxuICBGaXJlZm94UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLFxuICAnX3BlZXJDb25uZWN0aW9uJyk7XG5cbmZ1bmN0aW9uIHJvbGxiYWNrKHBlZXJDb25uZWN0aW9uLCBsb2NhbCwgb25jZVJvbGxlZEJhY2spIHtcbiAgdmFyIHNldExvY2FsRGVzY3JpcHRpb24gPSBsb2NhbCA/ICdzZXRMb2NhbERlc2NyaXB0aW9uJyA6ICdzZXRSZW1vdGVEZXNjcmlwdGlvbic7XG4gIHBlZXJDb25uZWN0aW9uLl9yb2xsaW5nQmFjayA9IHRydWU7XG4gIHJldHVybiBwZWVyQ29ubmVjdGlvbi5fcGVlckNvbm5lY3Rpb25bc2V0TG9jYWxEZXNjcmlwdGlvbl0obmV3IEZpcmVmb3hSVENTZXNzaW9uRGVzY3JpcHRpb24oe1xuICAgIHR5cGU6ICdyb2xsYmFjaydcbiAgfSkpLnRoZW4ob25jZVJvbGxlZEJhY2spLnRoZW4oZnVuY3Rpb24gb25jZVJvbGxlZEJhY2tTdWNjZWVkZWQocmVzdWx0KSB7XG4gICAgcGVlckNvbm5lY3Rpb24uX3JvbGxpbmdCYWNrID0gZmFsc2U7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgZnVuY3Rpb24gcm9sbGJhY2tPck9uY2VSb2xsZWRCYWNrRmFpbGVkKGVycm9yKSB7XG4gICAgcGVlckNvbm5lY3Rpb24uX3JvbGxpbmdCYWNrID0gZmFsc2U7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0pO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIGluaXRpYWxseSBuZWdvdGlhdGVkIERUTFMgcm9sZSBvdXQgb2YgYW4gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJ3NcbiAqIHNkcCBwcm9wZXJ0eSBhbmQgc2F2ZSBpdCBvbiB0aGUgRmlyZWZveFJUQ1BlZXJDb25uZWN0aW9uIGlmIGFuZCBvbmx5IGlmXG4gKlxuICogICAxLiBBIERUTFMgcm9sZSB3YXMgbm90IGFscmVhZHkgc2F2ZWQgb24gdGhlIEZpcmVmb3hSVENQZWVyQ29ubmVjdGlvbiwgYW5kXG4gKiAgIDIuIFRoZSBkZXNjcmlwdGlvbiBpcyBhbiBhbnN3ZXIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RmlyZWZveFJUQ1BlZXJDb25uZWN0aW9ufSBwZWVyQ29ubmVjdGlvblxuICogQHBhcmFtIHtSVENTZXNzaW9uRGVzY3JpcHRpb259IGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZW1vdGU9ZmFsc2VdIC0gaWYgdHJ1ZSwgc2F2ZSB0aGUgaW52ZXJzZSBvZiB0aGUgRFRMUyByb2xlLFxuICogICBlLmcuIFwiYWN0aXZlXCIgaW5zdGVhZCBvZiBcInBhc3NpdmVcIiBhbmQgdmljZSB2ZXJzYVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gc2F2ZUluaXRpYWxseU5lZ290aWF0ZWREdGxzUm9sZShwZWVyQ29ubmVjdGlvbiwgZGVzY3JpcHRpb24sIHJlbW90ZSkge1xuICAvLyBOT1RFKG1yb2JlcnRzKTogSlNFUCBzcGVjaWZpZXMgdGhhdCBvZmZlcnMgYWx3YXlzIG9mZmVyIFwiYWN0cGFzc1wiIGFzIHRoZVxuICAvLyBEVExTIHJvbGUuIFdlIG5lZWQgdG8gaW5zcGVjdCBhbnN3ZXJzIHRvIGZpZ3VyZSBvdXQgdGhlIG5lZ290aWF0ZWQgRFRMU1xuICAvLyByb2xlLlxuICBpZiAocGVlckNvbm5lY3Rpb24uX2luaXRpYWxseU5lZ290aWF0ZWREdGxzUm9sZSB8fCBkZXNjcmlwdGlvbi50eXBlID09PSAnb2ZmZXInKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1hdGNoID0gZGVzY3JpcHRpb24uc2RwLm1hdGNoKC9hPXNldHVwOihbYS16XSspLyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZHRsc1JvbGUgPSBtYXRjaFsxXTtcbiAgcGVlckNvbm5lY3Rpb24uX2luaXRpYWxseU5lZ290aWF0ZWREdGxzUm9sZSA9IHJlbW90ZSA/IHtcbiAgICBhY3RpdmU6ICdwYXNzaXZlJyxcbiAgICBwYXNzaXZlOiAnYWN0aXZlJ1xuICB9W2R0bHNSb2xlXSA6IGR0bHNSb2xlO1xufVxuXG4vKipcbiAqIE92ZXJ3cml0ZSB0aGUgRFRMUyByb2xlIGluIHRoZSBzZHAgcHJvcGVydHkgb2YgYW4gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIGlmXG4gKiBhbmQgb25seSBpZlxuICpcbiAqICAgMS4gVGhlIGRlc2NyaXB0aW9uIGlzIGFuIGFuc3dlciwgYW5kXG4gKiAgIDIuIEEgRFRMUyByb2xlIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1JUQ1Nlc3Npb25EZXNjcmlwdGlvbn0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtIHtzdHJpbmd9IFtkdGxzUm9sZV0gLSBvbmUgb2YgXCJhY3RpdmVcIiBvciBcInBhc3NpdmVcIlxuICogQHJldHVybnMgez9SVENTZXNzaW9uRGVzY3JpcHRpb259IGRlc2NyaXB0aW9uXG4gKi9cbmZ1bmN0aW9uIG92ZXJ3cml0ZVdpdGhJbml0aWFsbHlOZWdvdGlhdGVkRHRsc1JvbGUoZGVzY3JpcHRpb24sIGR0bHNSb2xlKSB7XG4gIGlmIChkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi50eXBlID09PSAnYW5zd2VyJyAmJiBkdGxzUm9sZSkge1xuICAgIHJldHVybiBuZXcgRmlyZWZveFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICB0eXBlOiBkZXNjcmlwdGlvbi50eXBlLFxuICAgICAgc2RwOiBkZXNjcmlwdGlvbi5zZHAucmVwbGFjZSgvYT1zZXR1cDpbYS16XSsvZywgJ2E9c2V0dXA6JyArIGR0bHNSb2xlKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBkZXNjcmlwdGlvbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBGaXJlZm94UlRDUGVlckNvbm5lY3Rpb247XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcpeerconnection/firefox.js\n")},"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/index.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nif (typeof RTCPeerConnection === 'function') {\n var guessBrowser = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").guessBrowser;\n switch (guessBrowser()) {\n case 'chrome':\n module.exports = __webpack_require__(/*! ./chrome */ \"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/chrome.js\");\n break;\n case 'firefox':\n module.exports = __webpack_require__(/*! ./firefox */ \"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/firefox.js\");\n break;\n case 'safari':\n module.exports = __webpack_require__(/*! ./safari */ \"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/safari.js\");\n break;\n default:\n module.exports = RTCPeerConnection;\n break;\n }\n} else {\n module.exports = function RTCPeerConnection() {\n throw new Error('RTCPeerConnection is not supported');\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3BlZXJjb25uZWN0aW9uL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi9ydGNwZWVyY29ubmVjdGlvbi9pbmRleC5qcz8xOWMwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICB2YXIgZ3Vlc3NCcm93c2VyID0gcmVxdWlyZSgnLi4vdXRpbCcpLmd1ZXNzQnJvd3NlcjtcbiAgc3dpdGNoIChndWVzc0Jyb3dzZXIoKSkge1xuICAgIGNhc2UgJ2Nocm9tZSc6XG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2hyb21lJyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmaXJlZm94JzpcbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9maXJlZm94Jyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzYWZhcmknOlxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3NhZmFyaScpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1vZHVsZS5leHBvcnRzID0gUlRDUGVlckNvbm5lY3Rpb247XG4gICAgICBicmVhaztcbiAgfVxufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBSVENQZWVyQ29ubmVjdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JUQ1BlZXJDb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcpeerconnection/index.js\n")},"./node_modules/@twilio/webrtc/lib/rtcpeerconnection/safari.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCPeerConnection, RTCSessionDescription */\n\n\nvar EventTarget = __webpack_require__(/*! ../util/eventtarget */ \"./node_modules/@twilio/webrtc/lib/util/eventtarget.js\");\nvar inherits = __webpack_require__(/*! util */ \"./node_modules/util/util.js\").inherits;\nvar Latch = __webpack_require__(/*! ../util/latch */ \"./node_modules/@twilio/webrtc/lib/util/latch.js\");\nvar sdpUtils = __webpack_require__(/*! ../util/sdp */ \"./node_modules/@twilio/webrtc/lib/util/sdp.js\");\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\");\n\nvar isUnifiedPlan = sdpUtils.getSdpFormat() === 'unified';\n\nvar updateTrackIdsToSSRCs = isUnifiedPlan\n ? sdpUtils.updateUnifiedPlanTrackIdsToSSRCs\n : sdpUtils.updatePlanBTrackIdsToSSRCs;\n\nfunction SafariRTCPeerConnection(configuration) {\n if (!(this instanceof SafariRTCPeerConnection)) {\n return new SafariRTCPeerConnection(configuration);\n }\n\n EventTarget.call(this);\n\n util.interceptEvent(this, 'datachannel');\n util.interceptEvent(this, 'iceconnectionstatechange');\n util.interceptEvent(this, 'signalingstatechange');\n util.interceptEvent(this, 'track');\n\n var peerConnection = new RTCPeerConnection(configuration);\n\n Object.defineProperties(this, {\n _appliedTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _audioTransceiver: {\n value: null,\n writable: true\n },\n _isClosed: {\n value: false,\n writable: true\n },\n _peerConnection: {\n value: peerConnection\n },\n _pendingLocalOffer: {\n value: null,\n writable: true\n },\n _pendingRemoteOffer: {\n value: null,\n writable: true\n },\n _rolledBackTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _signalingStateLatch: {\n value: new Latch()\n },\n _tracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _videoTransceiver: {\n value: null,\n writable: true\n },\n localDescription: {\n enumerable: true,\n get: function() {\n return this._pendingLocalOffer || this._peerConnection.localDescription;\n }\n },\n iceConnectionState: {\n enumerable: true,\n get: function() {\n return this._isClosed ? 'closed' : this._peerConnection.iceConnectionState;\n }\n },\n iceGatheringState: {\n enumerable: true,\n get: function() {\n return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n }\n },\n remoteDescription: {\n enumerable: true,\n get: function() {\n return this._pendingRemoteOffer || this._peerConnection.remoteDescription;\n }\n },\n signalingState: {\n enumerable: true,\n get: function() {\n if (this._isClosed) {\n return 'closed';\n } else if (this._pendingLocalOffer) {\n return 'have-local-offer';\n } else if (this._pendingRemoteOffer) {\n return 'have-remote-offer';\n }\n return this._peerConnection.signalingState;\n }\n }\n });\n\n var self = this;\n\n peerConnection.addEventListener('datachannel', function ondatachannel(event) {\n shimDataChannel(event.channel);\n self.dispatchEvent(event);\n });\n\n peerConnection.addEventListener('iceconnectionstatechange', function oniceconnectionstatechange() {\n if (self._isClosed) {\n return;\n }\n self.dispatchEvent.apply(self, arguments);\n });\n\n peerConnection.addEventListener('signalingstatechange', function onsignalingstatechange() {\n if (self._isClosed) {\n return;\n }\n if (peerConnection.signalingState === 'stable') {\n self._appliedTracksToSSRCs = new Map(self._tracksToSSRCs);\n }\n if (!self._pendingLocalOffer && !self._pendingRemoteOffer) {\n self.dispatchEvent.apply(self, arguments);\n }\n });\n\n // NOTE(syerrapragada): This ensures that SafariRTCPeerConnection's \"remoteDescription\", when accessed\n // in an RTCTrackEvent listener, will point to the underlying RTCPeerConnection's\n // \"remoteDescription\". Before this fix, this was still pointing to \"_pendingRemoteOffer\"\n // even though a new remote RTCSessionDescription had already been applied.\n peerConnection.addEventListener('track', function ontrack(event) {\n self._pendingRemoteOffer = null;\n self.dispatchEvent(event);\n });\n\n util.proxyProperties(RTCPeerConnection.prototype, this, peerConnection);\n}\n\ninherits(SafariRTCPeerConnection, EventTarget);\n\nSafariRTCPeerConnection.prototype.addIceCandidate = function addIceCandidate(candidate) {\n var self = this;\n if (this.signalingState === 'have-remote-offer') {\n return this._signalingStateLatch.when('low').then(function signalingStatesResolved() {\n return self._peerConnection.addIceCandidate(candidate);\n });\n }\n return this._peerConnection.addIceCandidate(candidate);\n};\n\nSafariRTCPeerConnection.prototype.createOffer = function createOffer(options) {\n options = Object.assign({}, options);\n var self = this;\n\n // NOTE(mroberts): In general, this is not the way to do this; however, it's\n // good enough for our application.\n if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n delete options.offerToReceiveAudio;\n try {\n this._audioTransceiver = isUnifiedPlan\n ? this.addTransceiver('audio', { direction: 'recvonly' })\n : this.addTransceiver('audio');\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n delete options.offerToReceiveVideo;\n try {\n this._videoTransceiver = isUnifiedPlan\n ? this.addTransceiver('video', { direction: 'recvonly' })\n : this.addTransceiver('video');\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n return this._peerConnection.createOffer(options).then(function(offer) {\n // NOTE(mmalavalli): If createOffer() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return new RTCSessionDescription({\n type: offer.type,\n sdp: updateTrackIdsToSSRCs(self._tracksToSSRCs, offer.sdp)\n });\n });\n};\n\nSafariRTCPeerConnection.prototype.createAnswer = function createAnswer(options) {\n var self = this;\n\n if (this._pendingRemoteOffer) {\n return this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function setRemoteDescriptionSucceeded() {\n self._signalingStateLatch.lower();\n return self._peerConnection.createAnswer();\n }).then(function createAnswerSucceeded(answer) {\n self._pendingRemoteOffer = null;\n\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return isUnifiedPlan ? new RTCSessionDescription({\n type: answer.type,\n sdp: updateTrackIdsToSSRCs(self._tracksToSSRCs, answer.sdp)\n }) : answer;\n }, function setRemoteDescriptionOrCreateAnswerFailed(error) {\n self._pendingRemoteOffer = null;\n throw error;\n });\n }\n\n return this._peerConnection.createAnswer(options).then(function createAnswerSucceeded(answer) {\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n self._rolledBackTracksToSSRCs.clear();\n\n return isUnifiedPlan ? new RTCSessionDescription({\n type: answer.type,\n sdp: updateTrackIdsToSSRCs(self._tracksToSSRCs, answer.sdp)\n }) : answer;\n });\n};\n\nSafariRTCPeerConnection.prototype.createDataChannel = function createDataChannel(label, dataChannelDict) {\n var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n shimDataChannel(dataChannel);\n return dataChannel;\n};\n\nSafariRTCPeerConnection.prototype.removeTrack = function removeTrack(sender) {\n sender.replaceTrack(null);\n this._peerConnection.removeTrack(sender);\n};\n\nSafariRTCPeerConnection.prototype.setLocalDescription = function setLocalDescription(description) {\n // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n // then we need to restore the rolled back tracks to SSRCs Map.\n if (this._rolledBackTracksToSSRCs.size > 0) {\n this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n this._rolledBackTracksToSSRCs.clear();\n }\n return setDescription(this, true, description);\n};\n\nSafariRTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(description) {\n // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n this._rolledBackTracksToSSRCs.clear();\n return setDescription(this, false, description);\n};\n\nSafariRTCPeerConnection.prototype.close = function close() {\n if (this._isClosed) {\n return;\n }\n this._isClosed = true;\n this._peerConnection.close();\n var self = this;\n setTimeout(function() {\n self.dispatchEvent(new Event('iceconnectionstatechange'));\n self.dispatchEvent(new Event('signalingstatechange'));\n });\n};\n\nutil.delegateMethods(\n RTCPeerConnection.prototype,\n SafariRTCPeerConnection.prototype,\n '_peerConnection');\n\nfunction setDescription(peerConnection, local, description) {\n function setPendingLocalOffer(offer) {\n if (local) {\n peerConnection._pendingLocalOffer = offer;\n } else {\n peerConnection._pendingRemoteOffer = offer;\n }\n }\n\n function clearPendingLocalOffer() {\n if (local) {\n peerConnection._pendingLocalOffer = null;\n } else {\n peerConnection._pendingRemoteOffer = null;\n }\n }\n\n var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n\n if (!local && pendingRemoteOffer && description.type === 'answer') {\n return setRemoteAnswer(peerConnection, description);\n } else if (description.type === 'offer') {\n if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n return Promise.reject(new Error('Cannot set ' + (local ? 'local' : 'remote') +\n ' offer in state ' + peerConnection.signalingState));\n }\n\n if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n peerConnection._signalingStateLatch.raise();\n }\n var previousSignalingState = peerConnection.signalingState;\n setPendingLocalOffer(description);\n\n // Only dispatch a signalingstatechange event if we transitioned.\n if (peerConnection.signalingState !== previousSignalingState) {\n return Promise.resolve().then(function dispatchSignalingStateChangeEvent() {\n peerConnection.dispatchEvent(new Event('signalingstatechange'));\n });\n }\n\n return Promise.resolve();\n } else if (description.type === 'rollback') {\n if (peerConnection.signalingState !== intermediateState) {\n return Promise.reject(new Error('Cannot rollback ' +\n (local ? 'local' : 'remote') + ' description in ' + peerConnection.signalingState));\n }\n clearPendingLocalOffer();\n\n // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n // setLocalDescription() is called immediately aftera rollback (without calling\n // createOffer() or createAnswer()), in which case this roll back is not due to\n // a glare scenario and this Map should be restored.\n peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n\n return Promise.resolve().then(function dispatchSignalingStateChangeEvent() {\n peerConnection.dispatchEvent(new Event('signalingstatechange'));\n });\n }\n\n return peerConnection._peerConnection[setLocalDescription](description);\n}\n\nfunction setRemoteAnswer(peerConnection, answer) {\n var pendingLocalOffer = peerConnection._pendingLocalOffer;\n return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function setLocalOfferSucceeded() {\n peerConnection._pendingLocalOffer = null;\n return peerConnection.setRemoteDescription(answer);\n }).then(function setRemoteAnswerSucceeded() {\n peerConnection._signalingStateLatch.lower();\n });\n}\n\n/**\n * Whether a SafariRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {SafariRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n return !!peerConnection.getTransceivers().find(function(transceiver) {\n return transceiver.receiver && transceiver.receiver.track && transceiver.receiver.track.kind === kind;\n });\n}\n\n/**\n * Shim an RTCDataChannel. This function mutates the RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n return Object.defineProperties(dataChannel, {\n maxPacketLifeTime: {\n value: dataChannel.maxPacketLifeTime === 65535\n ? null\n : dataChannel.maxPacketLifeTime\n },\n maxRetransmits: {\n value: dataChannel.maxRetransmits === 65535\n ? null\n : dataChannel.maxRetransmits\n }\n });\n}\n\nmodule.exports = SafariRTCPeerConnection;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3BlZXJjb25uZWN0aW9uL3NhZmFyaS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvcnRjcGVlcmNvbm5lY3Rpb24vc2FmYXJpLmpzP2FmNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBSVENQZWVyQ29ubmVjdGlvbiwgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4uL3V0aWwvZXZlbnR0YXJnZXQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ3V0aWwnKS5pbmhlcml0cztcbnZhciBMYXRjaCA9IHJlcXVpcmUoJy4uL3V0aWwvbGF0Y2gnKTtcbnZhciBzZHBVdGlscyA9IHJlcXVpcmUoJy4uL3V0aWwvc2RwJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxudmFyIGlzVW5pZmllZFBsYW4gPSBzZHBVdGlscy5nZXRTZHBGb3JtYXQoKSA9PT0gJ3VuaWZpZWQnO1xuXG52YXIgdXBkYXRlVHJhY2tJZHNUb1NTUkNzID0gaXNVbmlmaWVkUGxhblxuICA/IHNkcFV0aWxzLnVwZGF0ZVVuaWZpZWRQbGFuVHJhY2tJZHNUb1NTUkNzXG4gIDogc2RwVXRpbHMudXBkYXRlUGxhbkJUcmFja0lkc1RvU1NSQ3M7XG5cbmZ1bmN0aW9uIFNhZmFyaVJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNhZmFyaVJUQ1BlZXJDb25uZWN0aW9uKSkge1xuICAgIHJldHVybiBuZXcgU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBFdmVudFRhcmdldC5jYWxsKHRoaXMpO1xuXG4gIHV0aWwuaW50ZXJjZXB0RXZlbnQodGhpcywgJ2RhdGFjaGFubmVsJyk7XG4gIHV0aWwuaW50ZXJjZXB0RXZlbnQodGhpcywgJ2ljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZScpO1xuICB1dGlsLmludGVyY2VwdEV2ZW50KHRoaXMsICdzaWduYWxpbmdzdGF0ZWNoYW5nZScpO1xuICB1dGlsLmludGVyY2VwdEV2ZW50KHRoaXMsICd0cmFjaycpO1xuXG4gIHZhciBwZWVyQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgX2FwcGxpZWRUcmFja3NUb1NTUkNzOiB7XG4gICAgICB2YWx1ZTogbmV3IE1hcCgpLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9LFxuICAgIF9hdWRpb1RyYW5zY2VpdmVyOiB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfaXNDbG9zZWQ6IHtcbiAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfcGVlckNvbm5lY3Rpb246IHtcbiAgICAgIHZhbHVlOiBwZWVyQ29ubmVjdGlvblxuICAgIH0sXG4gICAgX3BlbmRpbmdMb2NhbE9mZmVyOiB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfcGVuZGluZ1JlbW90ZU9mZmVyOiB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSxcbiAgICBfcm9sbGVkQmFja1RyYWNrc1RvU1NSQ3M6IHtcbiAgICAgIHZhbHVlOiBuZXcgTWFwKCksXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgX3NpZ25hbGluZ1N0YXRlTGF0Y2g6IHtcbiAgICAgIHZhbHVlOiBuZXcgTGF0Y2goKVxuICAgIH0sXG4gICAgX3RyYWNrc1RvU1NSQ3M6IHtcbiAgICAgIHZhbHVlOiBuZXcgTWFwKCksXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0sXG4gICAgX3ZpZGVvVHJhbnNjZWl2ZXI6IHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9LFxuICAgIGxvY2FsRGVzY3JpcHRpb246IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0xvY2FsT2ZmZXIgfHwgdGhpcy5fcGVlckNvbm5lY3Rpb24ubG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICB9LFxuICAgIGljZUNvbm5lY3Rpb25TdGF0ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nsb3NlZCA/ICdjbG9zZWQnIDogdGhpcy5fcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlO1xuICAgICAgfVxuICAgIH0sXG4gICAgaWNlR2F0aGVyaW5nU3RhdGU6IHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDbG9zZWQgPyAnY29tcGxldGUnIDogdGhpcy5fcGVlckNvbm5lY3Rpb24uaWNlR2F0aGVyaW5nU3RhdGU7XG4gICAgICB9XG4gICAgfSxcbiAgICByZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZW5kaW5nUmVtb3RlT2ZmZXIgfHwgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3RlRGVzY3JpcHRpb247XG4gICAgICB9XG4gICAgfSxcbiAgICBzaWduYWxpbmdTdGF0ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0Nsb3NlZCkge1xuICAgICAgICAgIHJldHVybiAnY2xvc2VkJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nTG9jYWxPZmZlcikge1xuICAgICAgICAgIHJldHVybiAnaGF2ZS1sb2NhbC1vZmZlcic7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyKSB7XG4gICAgICAgICAgcmV0dXJuICdoYXZlLXJlbW90ZS1vZmZlcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFjaGFubmVsJywgZnVuY3Rpb24gb25kYXRhY2hhbm5lbChldmVudCkge1xuICAgIHNoaW1EYXRhQ2hhbm5lbChldmVudC5jaGFubmVsKTtcbiAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9KTtcblxuICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdpY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbiBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpIHtcbiAgICBpZiAoc2VsZi5faXNDbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2VsZi5kaXNwYXRjaEV2ZW50LmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7XG4gIH0pO1xuXG4gIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24gb25zaWduYWxpbmdzdGF0ZWNoYW5nZSgpIHtcbiAgICBpZiAoc2VsZi5faXNDbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlID09PSAnc3RhYmxlJykge1xuICAgICAgc2VsZi5fYXBwbGllZFRyYWNrc1RvU1NSQ3MgPSBuZXcgTWFwKHNlbGYuX3RyYWNrc1RvU1NSQ3MpO1xuICAgIH1cbiAgICBpZiAoIXNlbGYuX3BlbmRpbmdMb2NhbE9mZmVyICYmICFzZWxmLl9wZW5kaW5nUmVtb3RlT2ZmZXIpIHtcbiAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudC5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gTk9URShzeWVycmFwcmFnYWRhKTogVGhpcyBlbnN1cmVzIHRoYXQgU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ncyBcInJlbW90ZURlc2NyaXB0aW9uXCIsIHdoZW4gYWNjZXNzZWRcbiAgLy8gaW4gYW4gUlRDVHJhY2tFdmVudCBsaXN0ZW5lciwgd2lsbCBwb2ludCB0byB0aGUgdW5kZXJseWluZyBSVENQZWVyQ29ubmVjdGlvbidzXG4gIC8vIFwicmVtb3RlRGVzY3JpcHRpb25cIi4gQmVmb3JlIHRoaXMgZml4LCB0aGlzIHdhcyBzdGlsbCBwb2ludGluZyB0byBcIl9wZW5kaW5nUmVtb3RlT2ZmZXJcIlxuICAvLyBldmVuIHRob3VnaCBhIG5ldyByZW1vdGUgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIGhhZCBhbHJlYWR5IGJlZW4gYXBwbGllZC5cbiAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCBmdW5jdGlvbiBvbnRyYWNrKGV2ZW50KSB7XG4gICAgc2VsZi5fcGVuZGluZ1JlbW90ZU9mZmVyID0gbnVsbDtcbiAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9KTtcblxuICB1dGlsLnByb3h5UHJvcGVydGllcyhSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUsIHRoaXMsIHBlZXJDb25uZWN0aW9uKTtcbn1cblxuaW5oZXJpdHMoU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24sIEV2ZW50VGFyZ2V0KTtcblxuU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmFkZEljZUNhbmRpZGF0ZSA9IGZ1bmN0aW9uIGFkZEljZUNhbmRpZGF0ZShjYW5kaWRhdGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAodGhpcy5zaWduYWxpbmdTdGF0ZSA9PT0gJ2hhdmUtcmVtb3RlLW9mZmVyJykge1xuICAgIHJldHVybiB0aGlzLl9zaWduYWxpbmdTdGF0ZUxhdGNoLndoZW4oJ2xvdycpLnRoZW4oZnVuY3Rpb24gc2lnbmFsaW5nU3RhdGVzUmVzb2x2ZWQoKSB7XG4gICAgICByZXR1cm4gc2VsZi5fcGVlckNvbm5lY3Rpb24uYWRkSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShjYW5kaWRhdGUpO1xufTtcblxuU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNyZWF0ZU9mZmVyID0gZnVuY3Rpb24gY3JlYXRlT2ZmZXIob3B0aW9ucykge1xuICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvLyBOT1RFKG1yb2JlcnRzKTogSW4gZ2VuZXJhbCwgdGhpcyBpcyBub3QgdGhlIHdheSB0byBkbyB0aGlzOyBob3dldmVyLCBpdCdzXG4gIC8vIGdvb2QgZW5vdWdoIGZvciBvdXIgYXBwbGljYXRpb24uXG4gIGlmIChvcHRpb25zLm9mZmVyVG9SZWNlaXZlVmlkZW8gJiYgIXRoaXMuX2F1ZGlvVHJhbnNjZWl2ZXIgJiYgIShpc1VuaWZpZWRQbGFuICYmIGhhc1JlY2VpdmVyc0ZvclRyYWNrc09mS2luZCh0aGlzLCAnYXVkaW8nKSkpIHtcbiAgICBkZWxldGUgb3B0aW9ucy5vZmZlclRvUmVjZWl2ZUF1ZGlvO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9hdWRpb1RyYW5zY2VpdmVyID0gaXNVbmlmaWVkUGxhblxuICAgICAgICA/IHRoaXMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJywgeyBkaXJlY3Rpb246ICdyZWN2b25seScgfSlcbiAgICAgICAgOiB0aGlzLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5vZmZlclRvUmVjZWl2ZVZpZGVvICYmICF0aGlzLl92aWRlb1RyYW5zY2VpdmVyICYmICEoaXNVbmlmaWVkUGxhbiAmJiBoYXNSZWNlaXZlcnNGb3JUcmFja3NPZktpbmQodGhpcywgJ3ZpZGVvJykpKSB7XG4gICAgZGVsZXRlIG9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbztcbiAgICB0cnkge1xuICAgICAgdGhpcy5fdmlkZW9UcmFuc2NlaXZlciA9IGlzVW5pZmllZFBsYW5cbiAgICAgICAgPyB0aGlzLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycsIHsgZGlyZWN0aW9uOiAncmVjdm9ubHknIH0pXG4gICAgICAgIDogdGhpcy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24ob2ZmZXIpIHtcbiAgICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBjcmVhdGVPZmZlcigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciByb2xsaW5nIGJhY2ssXG4gICAgLy8gdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0byByZXRhaW4gdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAuXG4gICAgc2VsZi5fcm9sbGVkQmFja1RyYWNrc1RvU1NSQ3MuY2xlYXIoKTtcblxuICAgIHJldHVybiBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHtcbiAgICAgIHR5cGU6IG9mZmVyLnR5cGUsXG4gICAgICBzZHA6IHVwZGF0ZVRyYWNrSWRzVG9TU1JDcyhzZWxmLl90cmFja3NUb1NTUkNzLCBvZmZlci5zZHApXG4gICAgfSk7XG4gIH0pO1xufTtcblxuU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNyZWF0ZUFuc3dlciA9IGZ1bmN0aW9uIGNyZWF0ZUFuc3dlcihvcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBpZiAodGhpcy5fcGVuZGluZ1JlbW90ZU9mZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHRoaXMuX3BlbmRpbmdSZW1vdGVPZmZlcikudGhlbihmdW5jdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvblN1Y2NlZWRlZCgpIHtcbiAgICAgIHNlbGYuX3NpZ25hbGluZ1N0YXRlTGF0Y2gubG93ZXIoKTtcbiAgICAgIHJldHVybiBzZWxmLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoKTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIGNyZWF0ZUFuc3dlclN1Y2NlZWRlZChhbnN3ZXIpIHtcbiAgICAgIHNlbGYuX3BlbmRpbmdSZW1vdGVPZmZlciA9IG51bGw7XG5cbiAgICAgIC8vIE5PVEUobW1hbGF2YWxsaSk6IElmIGNyZWF0ZUFuc3dlcigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciByb2xsaW5nIGJhY2ssIHRoZW4gd2Ugbm9cbiAgICAgIC8vIGxvbmdlciBuZWVkIHRvIHJldGFpbiB0aGUgcm9sbGVkIGJhY2sgdHJhY2tzIHRvIFNTUkNzIE1hcC5cbiAgICAgIHNlbGYuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLmNsZWFyKCk7XG5cbiAgICAgIHJldHVybiBpc1VuaWZpZWRQbGFuID8gbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICAgIHR5cGU6IGFuc3dlci50eXBlLFxuICAgICAgICBzZHA6IHVwZGF0ZVRyYWNrSWRzVG9TU1JDcyhzZWxmLl90cmFja3NUb1NTUkNzLCBhbnN3ZXIuc2RwKVxuICAgICAgfSkgOiBhbnN3ZXI7XG4gICAgfSwgZnVuY3Rpb24gc2V0UmVtb3RlRGVzY3JpcHRpb25PckNyZWF0ZUFuc3dlckZhaWxlZChlcnJvcikge1xuICAgICAgc2VsZi5fcGVuZGluZ1JlbW90ZU9mZmVyID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKS50aGVuKGZ1bmN0aW9uIGNyZWF0ZUFuc3dlclN1Y2NlZWRlZChhbnN3ZXIpIHtcbiAgICAvLyBOT1RFKG1tYWxhdmFsbGkpOiBJZiBjcmVhdGVBbnN3ZXIoKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGVuIHdlIG5vXG4gICAgLy8gbG9uZ2VyIG5lZWQgdG8gcmV0YWluIHRoZSByb2xsZWQgYmFjayB0cmFja3MgdG8gU1NSQ3MgTWFwLlxuICAgIHNlbGYuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLmNsZWFyKCk7XG5cbiAgICByZXR1cm4gaXNVbmlmaWVkUGxhbiA/IG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe1xuICAgICAgdHlwZTogYW5zd2VyLnR5cGUsXG4gICAgICBzZHA6IHVwZGF0ZVRyYWNrSWRzVG9TU1JDcyhzZWxmLl90cmFja3NUb1NTUkNzLCBhbnN3ZXIuc2RwKVxuICAgIH0pIDogYW5zd2VyO1xuICB9KTtcbn07XG5cblNhZmFyaVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVEYXRhQ2hhbm5lbCA9IGZ1bmN0aW9uIGNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLCBkYXRhQ2hhbm5lbERpY3QpIHtcbiAgdmFyIGRhdGFDaGFubmVsID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlRGF0YUNoYW5uZWwobGFiZWwsIGRhdGFDaGFubmVsRGljdCk7XG4gIHNoaW1EYXRhQ2hhbm5lbChkYXRhQ2hhbm5lbCk7XG4gIHJldHVybiBkYXRhQ2hhbm5lbDtcbn07XG5cblNhZmFyaVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVUcmFjayA9IGZ1bmN0aW9uIHJlbW92ZVRyYWNrKHNlbmRlcikge1xuICBzZW5kZXIucmVwbGFjZVRyYWNrKG51bGwpO1xuICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVUcmFjayhzZW5kZXIpO1xufTtcblxuU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnNldExvY2FsRGVzY3JpcHRpb24gPSBmdW5jdGlvbiBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSB7XG4gIC8vIE5PVEUobW1hbGF2YWxsaSk6IElmIHNldExvY2FsRGVzY3JpcHRpb24oKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcm9sbGluZyBiYWNrLFxuICAvLyB0aGVuIHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgcm9sbGVkIGJhY2sgdHJhY2tzIHRvIFNTUkNzIE1hcC5cbiAgaWYgKHRoaXMuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLnNpemUgPiAwKSB7XG4gICAgdGhpcy5fdHJhY2tzVG9TU1JDcyA9IG5ldyBNYXAodGhpcy5fcm9sbGVkQmFja1RyYWNrc1RvU1NSQ3MpO1xuICAgIHRoaXMuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLmNsZWFyKCk7XG4gIH1cbiAgcmV0dXJuIHNldERlc2NyaXB0aW9uKHRoaXMsIHRydWUsIGRlc2NyaXB0aW9uKTtcbn07XG5cblNhZmFyaVJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZXRSZW1vdGVEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSB7XG4gIC8vIE5PVEUobW1hbGF2YWxsaSk6IElmIHNldFJlbW90ZURlc2NyaXB0aW9uKCkgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHJvbGxpbmcgYmFjayxcbiAgLy8gdGhlbiB3ZSBubyBsb25nZXIgbmVlZCB0byByZXRhaW4gdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAuXG4gIHRoaXMuX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzLmNsZWFyKCk7XG4gIHJldHVybiBzZXREZXNjcmlwdGlvbih0aGlzLCBmYWxzZSwgZGVzY3JpcHRpb24pO1xufTtcblxuU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gY2xvc2UoKSB7XG4gIGlmICh0aGlzLl9pc0Nsb3NlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLl9pc0Nsb3NlZCA9IHRydWU7XG4gIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICBzZWxmLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UnKSk7XG4gICAgc2VsZi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc2lnbmFsaW5nc3RhdGVjaGFuZ2UnKSk7XG4gIH0pO1xufTtcblxudXRpbC5kZWxlZ2F0ZU1ldGhvZHMoXG4gIFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSxcbiAgU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLFxuICAnX3BlZXJDb25uZWN0aW9uJyk7XG5cbmZ1bmN0aW9uIHNldERlc2NyaXB0aW9uKHBlZXJDb25uZWN0aW9uLCBsb2NhbCwgZGVzY3JpcHRpb24pIHtcbiAgZnVuY3Rpb24gc2V0UGVuZGluZ0xvY2FsT2ZmZXIob2ZmZXIpIHtcbiAgICBpZiAobG9jYWwpIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlciA9IG9mZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5fcGVuZGluZ1JlbW90ZU9mZmVyID0gb2ZmZXI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJQZW5kaW5nTG9jYWxPZmZlcigpIHtcbiAgICBpZiAobG9jYWwpIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlciA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nUmVtb3RlT2ZmZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwZW5kaW5nTG9jYWxPZmZlciA9IGxvY2FsID8gcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdMb2NhbE9mZmVyIDogcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdSZW1vdGVPZmZlcjtcbiAgdmFyIHBlbmRpbmdSZW1vdGVPZmZlciA9IGxvY2FsID8gcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdSZW1vdGVPZmZlciA6IHBlZXJDb25uZWN0aW9uLl9wZW5kaW5nTG9jYWxPZmZlcjtcbiAgdmFyIGludGVybWVkaWF0ZVN0YXRlID0gbG9jYWwgPyAnaGF2ZS1sb2NhbC1vZmZlcicgOiAnaGF2ZS1yZW1vdGUtb2ZmZXInO1xuICB2YXIgc2V0TG9jYWxEZXNjcmlwdGlvbiA9IGxvY2FsID8gJ3NldExvY2FsRGVzY3JpcHRpb24nIDogJ3NldFJlbW90ZURlc2NyaXB0aW9uJztcblxuICBpZiAoIWxvY2FsICYmIHBlbmRpbmdSZW1vdGVPZmZlciAmJiBkZXNjcmlwdGlvbi50eXBlID09PSAnYW5zd2VyJykge1xuICAgIHJldHVybiBzZXRSZW1vdGVBbnN3ZXIocGVlckNvbm5lY3Rpb24sIGRlc2NyaXB0aW9uKTtcbiAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnb2ZmZXInKSB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlICE9PSBpbnRlcm1lZGlhdGVTdGF0ZSAmJiBwZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZSAhPT0gJ3N0YWJsZScpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0Nhbm5vdCBzZXQgJyArIChsb2NhbCA/ICdsb2NhbCcgOiAncmVtb3RlJykgK1xuICAgICAgICAnIG9mZmVyIGluIHN0YXRlICcgKyBwZWVyQ29ubmVjdGlvbi5zaWduYWxpbmdTdGF0ZSkpO1xuICAgIH1cblxuICAgIGlmICghcGVuZGluZ0xvY2FsT2ZmZXIgJiYgcGVlckNvbm5lY3Rpb24uX3NpZ25hbGluZ1N0YXRlTGF0Y2guc3RhdGUgPT09ICdsb3cnKSB7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5fc2lnbmFsaW5nU3RhdGVMYXRjaC5yYWlzZSgpO1xuICAgIH1cbiAgICB2YXIgcHJldmlvdXNTaWduYWxpbmdTdGF0ZSA9IHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlO1xuICAgIHNldFBlbmRpbmdMb2NhbE9mZmVyKGRlc2NyaXB0aW9uKTtcblxuICAgIC8vIE9ubHkgZGlzcGF0Y2ggYSBzaWduYWxpbmdzdGF0ZWNoYW5nZSBldmVudCBpZiB3ZSB0cmFuc2l0aW9uZWQuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlICE9PSBwcmV2aW91c1NpZ25hbGluZ1N0YXRlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiBkaXNwYXRjaFNpZ25hbGluZ1N0YXRlQ2hhbmdlRXZlbnQoKSB7XG4gICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzaWduYWxpbmdzdGF0ZWNoYW5nZScpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAncm9sbGJhY2snKSB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlICE9PSBpbnRlcm1lZGlhdGVTdGF0ZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ2Fubm90IHJvbGxiYWNrICcgK1xuICAgICAgICAobG9jYWwgPyAnbG9jYWwnIDogJ3JlbW90ZScpICsgJyBkZXNjcmlwdGlvbiBpbiAnICsgcGVlckNvbm5lY3Rpb24uc2lnbmFsaW5nU3RhdGUpKTtcbiAgICB9XG4gICAgY2xlYXJQZW5kaW5nTG9jYWxPZmZlcigpO1xuXG4gICAgLy8gTk9URShtbWFsYXZhbGxpKTogV2Ugc3RvcmUgdGhlIHJvbGxlZCBiYWNrIHRyYWNrcyB0byBTU1JDcyBNYXAgaGVyZSBpbiBjYXNlXG4gICAgLy8gc2V0TG9jYWxEZXNjcmlwdGlvbigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlcmEgcm9sbGJhY2sgKHdpdGhvdXQgY2FsbGluZ1xuICAgIC8vIGNyZWF0ZU9mZmVyKCkgb3IgY3JlYXRlQW5zd2VyKCkpLCBpbiB3aGljaCBjYXNlIHRoaXMgcm9sbCBiYWNrIGlzIG5vdCBkdWUgdG9cbiAgICAvLyBhIGdsYXJlIHNjZW5hcmlvIGFuZCB0aGlzIE1hcCBzaG91bGQgYmUgcmVzdG9yZWQuXG4gICAgcGVlckNvbm5lY3Rpb24uX3JvbGxlZEJhY2tUcmFja3NUb1NTUkNzID0gbmV3IE1hcChwZWVyQ29ubmVjdGlvbi5fdHJhY2tzVG9TU1JDcyk7XG4gICAgcGVlckNvbm5lY3Rpb24uX3RyYWNrc1RvU1NSQ3MgPSBuZXcgTWFwKHBlZXJDb25uZWN0aW9uLl9hcHBsaWVkVHJhY2tzVG9TU1JDcyk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiBkaXNwYXRjaFNpZ25hbGluZ1N0YXRlQ2hhbmdlRXZlbnQoKSB7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnc2lnbmFsaW5nc3RhdGVjaGFuZ2UnKSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGVlckNvbm5lY3Rpb24uX3BlZXJDb25uZWN0aW9uW3NldExvY2FsRGVzY3JpcHRpb25dKGRlc2NyaXB0aW9uKTtcbn1cblxuZnVuY3Rpb24gc2V0UmVtb3RlQW5zd2VyKHBlZXJDb25uZWN0aW9uLCBhbnN3ZXIpIHtcbiAgdmFyIHBlbmRpbmdMb2NhbE9mZmVyID0gcGVlckNvbm5lY3Rpb24uX3BlbmRpbmdMb2NhbE9mZmVyO1xuICByZXR1cm4gcGVlckNvbm5lY3Rpb24uX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ocGVuZGluZ0xvY2FsT2ZmZXIpLnRoZW4oZnVuY3Rpb24gc2V0TG9jYWxPZmZlclN1Y2NlZWRlZCgpIHtcbiAgICBwZWVyQ29ubmVjdGlvbi5fcGVuZGluZ0xvY2FsT2ZmZXIgPSBudWxsO1xuICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpO1xuICB9KS50aGVuKGZ1bmN0aW9uIHNldFJlbW90ZUFuc3dlclN1Y2NlZWRlZCgpIHtcbiAgICBwZWVyQ29ubmVjdGlvbi5fc2lnbmFsaW5nU3RhdGVMYXRjaC5sb3dlcigpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgU2FmYXJpUlRDUGVlckNvbm5lY3Rpb24gaGFzIGFueSBSVENSdHBSZWNlaXZlcnMocykgZm9yIHRoZSBnaXZlblxuICogTWVkaWFTdHJlYW1UcmFjayBraW5kLlxuICogQHBhcmFtIHtTYWZhcmlSVENQZWVyQ29ubmVjdGlvbn0gcGVlckNvbm5lY3Rpb25cbiAqIEBwYXJhbSB7J2F1ZGlvJyB8ICd2aWRlbyd9IGtpbmRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNSZWNlaXZlcnNGb3JUcmFja3NPZktpbmQocGVlckNvbm5lY3Rpb24sIGtpbmQpIHtcbiAgcmV0dXJuICEhcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmluZChmdW5jdGlvbih0cmFuc2NlaXZlcikge1xuICAgIHJldHVybiB0cmFuc2NlaXZlci5yZWNlaXZlciAmJiB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjayAmJiB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kID09PSBraW5kO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTaGltIGFuIFJUQ0RhdGFDaGFubmVsLiBUaGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIFJUQ0RhdGFDaGFubmVsLlxuICogQHBhcmFtIHtSVENEYXRhQ2hhbm5lbH0gZGF0YUNoYW5uZWxcbiAqIEByZXR1cm5zIHtSVENEYXRhQ2hhbm5lbH1cbiAqL1xuZnVuY3Rpb24gc2hpbURhdGFDaGFubmVsKGRhdGFDaGFubmVsKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkYXRhQ2hhbm5lbCwge1xuICAgIG1heFBhY2tldExpZmVUaW1lOiB7XG4gICAgICB2YWx1ZTogZGF0YUNoYW5uZWwubWF4UGFja2V0TGlmZVRpbWUgPT09IDY1NTM1XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IGRhdGFDaGFubmVsLm1heFBhY2tldExpZmVUaW1lXG4gICAgfSxcbiAgICBtYXhSZXRyYW5zbWl0czoge1xuICAgICAgdmFsdWU6IGRhdGFDaGFubmVsLm1heFJldHJhbnNtaXRzID09PSA2NTUzNVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiBkYXRhQ2hhbm5lbC5tYXhSZXRyYW5zbWl0c1xuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2FmYXJpUlRDUGVlckNvbm5lY3Rpb247XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcpeerconnection/safari.js\n")},"./node_modules/@twilio/webrtc/lib/rtcrtpsender.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * RTCRtpSender shim.\n * @param {MediaStreamTrack} track\n * @property {MediaStreamTrack} track\n */\nfunction RTCRtpSenderShim(track) {\n Object.defineProperties(this, {\n track: {\n enumerable: true,\n value: track,\n writable: true\n }\n });\n}\n\n// NOTE(mmalavalli): Because of the way we will be using this shim, there\n// are a couple of use cases that will not be covered:\n//\n// /* Case 1 */\n// const sender = pc.addTrack(track);\n// assert.equal(sender.track, track);\n// pc.removeTrack(sender);\n// assert.equal(sender.track, null); /* Error */\n//\n// /* Case 2 */\n// const sender = pc.addTrack(track);\n// const senders1 = new Set(pc.getSenders());\n// assert(senders1.has(sender));\n// pc.removeTrack(track);\n// const senders2 = new Set(pc.getSenders());\n// assert(senders2.has(sender)); /* Error */\n//\n// For now, since we only use senders for passing them to RTCPeerConnection#removeTrack(),\n// we will omit handling these use cases for now, and revisit them when we start\n// using the RTCRtpSender APIs.\n\nmodule.exports = RTCRtpSenderShim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3J0cHNlbmRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvcnRjcnRwc2VuZGVyLmpzPzUxMDciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFJUQ1J0cFNlbmRlciBzaGltLlxuICogQHBhcmFtIHtNZWRpYVN0cmVhbVRyYWNrfSB0cmFja1xuICogQHByb3BlcnR5IHtNZWRpYVN0cmVhbVRyYWNrfSB0cmFja1xuICovXG5mdW5jdGlvbiBSVENSdHBTZW5kZXJTaGltKHRyYWNrKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICB0cmFjazoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB0cmFjayxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbn1cblxuLy8gTk9URShtbWFsYXZhbGxpKTogQmVjYXVzZSBvZiB0aGUgd2F5IHdlIHdpbGwgYmUgdXNpbmcgdGhpcyBzaGltLCB0aGVyZVxuLy8gYXJlIGEgY291cGxlIG9mIHVzZSBjYXNlcyB0aGF0IHdpbGwgbm90IGJlIGNvdmVyZWQ6XG4vL1xuLy8gLyogQ2FzZSAxICovXG4vLyBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjayk7XG4vLyBhc3NlcnQuZXF1YWwoc2VuZGVyLnRyYWNrLCB0cmFjayk7XG4vLyBwYy5yZW1vdmVUcmFjayhzZW5kZXIpO1xuLy8gYXNzZXJ0LmVxdWFsKHNlbmRlci50cmFjaywgbnVsbCk7IC8qIEVycm9yICovXG4vL1xuLy8gLyogQ2FzZSAyICovXG4vLyBjb25zdCBzZW5kZXIgPSBwYy5hZGRUcmFjayh0cmFjayk7XG4vLyBjb25zdCBzZW5kZXJzMSA9IG5ldyBTZXQocGMuZ2V0U2VuZGVycygpKTtcbi8vIGFzc2VydChzZW5kZXJzMS5oYXMoc2VuZGVyKSk7XG4vLyBwYy5yZW1vdmVUcmFjayh0cmFjayk7XG4vLyBjb25zdCBzZW5kZXJzMiA9IG5ldyBTZXQocGMuZ2V0U2VuZGVycygpKTtcbi8vIGFzc2VydChzZW5kZXJzMi5oYXMoc2VuZGVyKSk7IC8qIEVycm9yICovXG4vL1xuLy8gRm9yIG5vdywgc2luY2Ugd2Ugb25seSB1c2Ugc2VuZGVycyBmb3IgcGFzc2luZyB0aGVtIHRvIFJUQ1BlZXJDb25uZWN0aW9uI3JlbW92ZVRyYWNrKCksXG4vLyB3ZSB3aWxsIG9taXQgaGFuZGxpbmcgdGhlc2UgdXNlIGNhc2VzIGZvciBub3csIGFuZCByZXZpc2l0IHRoZW0gd2hlbiB3ZSBzdGFydFxuLy8gdXNpbmcgdGhlIFJUQ1J0cFNlbmRlciBBUElzLlxuXG5tb2R1bGUuZXhwb3J0cyA9IFJUQ1J0cFNlbmRlclNoaW07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcrtpsender.js\n")},"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/chrome.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCSessionDescription */\n\n\n// This class wraps Chrome's RTCSessionDescription implementation. It provides\n// one piece of functionality not currently present in Chrome, namely\n//\n// 1. Rollback support\n// https://bugs.chromium.org/p/webrtc/issues/detail?id=4676\n//\nfunction ChromeRTCSessionDescription(descriptionInitDict) {\n if (!(this instanceof ChromeRTCSessionDescription)) {\n return new ChromeRTCSessionDescription(descriptionInitDict);\n }\n\n // If this constructor is called with an object with a .type property set to\n // \"rollback\", we should not call Chrome's RTCSessionDescription constructor,\n // because this would throw an RTCSdpType error.\n var description = descriptionInitDict && descriptionInitDict.type === 'rollback'\n ? null\n : new RTCSessionDescription(descriptionInitDict);\n\n Object.defineProperties(this, {\n _description: {\n get: function() {\n return description;\n }\n },\n sdp: {\n enumerable: true,\n value: description ? description.sdp : descriptionInitDict.sdp\n },\n type: {\n enumerable: true,\n value: description ? description.type : descriptionInitDict.type\n }\n });\n}\n\nmodule.exports = ChromeRTCSessionDescription;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3Nlc3Npb25kZXNjcmlwdGlvbi9jaHJvbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3Nlc3Npb25kZXNjcmlwdGlvbi9jaHJvbWUuanM/OWE0MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWxzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUaGlzIGNsYXNzIHdyYXBzIENocm9tZSdzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBpbXBsZW1lbnRhdGlvbi4gSXQgcHJvdmlkZXNcbi8vIG9uZSBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5IG5vdCBjdXJyZW50bHkgcHJlc2VudCBpbiBDaHJvbWUsIG5hbWVseVxuLy9cbi8vICAgMS4gUm9sbGJhY2sgc3VwcG9ydFxuLy8gICAgICBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NDY3NlxuLy9cbmZ1bmN0aW9uIENocm9tZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbkluaXREaWN0KSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDaHJvbWVSVENTZXNzaW9uRGVzY3JpcHRpb24pKSB7XG4gICAgcmV0dXJuIG5ldyBDaHJvbWVSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb25Jbml0RGljdCk7XG4gIH1cblxuICAvLyBJZiB0aGlzIGNvbnN0cnVjdG9yIGlzIGNhbGxlZCB3aXRoIGFuIG9iamVjdCB3aXRoIGEgLnR5cGUgcHJvcGVydHkgc2V0IHRvXG4gIC8vIFwicm9sbGJhY2tcIiwgd2Ugc2hvdWxkIG5vdCBjYWxsIENocm9tZSdzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBjb25zdHJ1Y3RvcixcbiAgLy8gYmVjYXVzZSB0aGlzIHdvdWxkIHRocm93IGFuIFJUQ1NkcFR5cGUgZXJyb3IuXG4gIHZhciBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uSW5pdERpY3QgJiYgZGVzY3JpcHRpb25Jbml0RGljdC50eXBlID09PSAncm9sbGJhY2snXG4gICAgPyBudWxsXG4gICAgOiBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uSW5pdERpY3QpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICBfZGVzY3JpcHRpb246IHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNkcDoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uLnNkcCA6IGRlc2NyaXB0aW9uSW5pdERpY3Quc2RwXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uID8gZGVzY3JpcHRpb24udHlwZSA6IGRlc2NyaXB0aW9uSW5pdERpY3QudHlwZVxuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ2hyb21lUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcsessiondescription/chrome.js\n")},"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/firefox.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCSessionDescription */\n\n\nmodule.exports = RTCSessionDescription;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3Nlc3Npb25kZXNjcmlwdGlvbi9maXJlZm94LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi9ydGNzZXNzaW9uZGVzY3JpcHRpb24vZmlyZWZveC5qcz85YWQ1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbHMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uICovXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcsessiondescription/firefox.js\n")},"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/index.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCSessionDescription */\n\n\nif (typeof RTCSessionDescription === 'function') {\n var guessBrowser = __webpack_require__(/*! ../util */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").guessBrowser;\n switch (guessBrowser()) {\n case 'chrome':\n module.exports = __webpack_require__(/*! ./chrome */ \"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/chrome.js\");\n break;\n case 'firefox':\n module.exports = __webpack_require__(/*! ./firefox */ \"./node_modules/@twilio/webrtc/lib/rtcsessiondescription/firefox.js\");\n break;\n default:\n module.exports = RTCSessionDescription;\n break;\n }\n} else {\n module.exports = function RTCSessionDescription() {\n throw new Error('RTCSessionDescription is not supported');\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3J0Y3Nlc3Npb25kZXNjcmlwdGlvbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9AdHdpbGlvL3dlYnJ0Yy9saWIvcnRjc2Vzc2lvbmRlc2NyaXB0aW9uL2luZGV4LmpzPzFlNjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBSVENTZXNzaW9uRGVzY3JpcHRpb24gKi9cbid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgdmFyIGd1ZXNzQnJvd3NlciA9IHJlcXVpcmUoJy4uL3V0aWwnKS5ndWVzc0Jyb3dzZXI7XG4gIHN3aXRjaCAoZ3Vlc3NCcm93c2VyKCkpIHtcbiAgICBjYXNlICdjaHJvbWUnOlxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nocm9tZScpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZmlyZWZveCc6XG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmlyZWZveCcpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1vZHVsZS5leHBvcnRzID0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgICAgYnJlYWs7XG4gIH1cbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/rtcsessiondescription/index.js\n")},"./node_modules/@twilio/webrtc/lib/util/eventtarget.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar EventEmitter = __webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter;\n\n/**\n * Event target.\n * @class\n */\nfunction EventTarget() {\n Object.defineProperties(this, {\n _eventEmitter: {\n value: new EventEmitter()\n }\n });\n}\n\n/**\n * Dispatch an Event to the {@link EventTarget}.\n * @param {Event} event\n */\nEventTarget.prototype.dispatchEvent = function dispatchEvent(event) {\n return this._eventEmitter.emit(event.type, event);\n};\n\n/**\n * Add an Event listener to the {@link EventTarget}.\n */\nEventTarget.prototype.addEventListener = function addEventListener() {\n return this._eventEmitter.addListener.apply(this._eventEmitter, arguments);\n};\n\n/**\n * Remove an Event listener to the {@link EventTarget}.\n */\nEventTarget.prototype.removeEventListener = function removeEventListener() {\n return this._eventEmitter.removeListener.apply(this._eventEmitter, arguments);\n};\n\nmodule.exports = EventTarget;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvZXZlbnR0YXJnZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvZXZlbnR0YXJnZXQuanM/ZjMyMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbi8qKlxuICogRXZlbnQgdGFyZ2V0LlxuICogQGNsYXNzXG4gKi9cbmZ1bmN0aW9uIEV2ZW50VGFyZ2V0KCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgX2V2ZW50RW1pdHRlcjoge1xuICAgICAgdmFsdWU6IG5ldyBFdmVudEVtaXR0ZXIoKVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYW4gRXZlbnQgdG8gdGhlIHtAbGluayBFdmVudFRhcmdldH0uXG4gKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICovXG5FdmVudFRhcmdldC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50RW1pdHRlci5lbWl0KGV2ZW50LnR5cGUsIGV2ZW50KTtcbn07XG5cbi8qKlxuICogQWRkIGFuIEV2ZW50IGxpc3RlbmVyIHRvIHRoZSB7QGxpbmsgRXZlbnRUYXJnZXR9LlxuICovXG5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudEVtaXR0ZXIuYWRkTGlzdGVuZXIuYXBwbHkodGhpcy5fZXZlbnRFbWl0dGVyLCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gRXZlbnQgbGlzdGVuZXIgdG8gdGhlIHtAbGluayBFdmVudFRhcmdldH0uXG4gKi9cbkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50RW1pdHRlci5yZW1vdmVMaXN0ZW5lci5hcHBseSh0aGlzLl9ldmVudEVtaXR0ZXIsIGFyZ3VtZW50cyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50VGFyZ2V0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/util/eventtarget.js\n')},"./node_modules/@twilio/webrtc/lib/util/index.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function(resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n if (methodName in wrapper) {\n // Skip any methods already set.\n return;\n } else if (methodName.match(/^on[a-z]+$/)) {\n // Skip EventHandlers (these are handled in the constructor).\n return;\n }\n\n\n var isProperty = false;\n try {\n var propDesc = Object.getOwnPropertyDescriptor(source, methodName);\n isProperty = propDesc && !!propDesc.get;\n } catch (error) {\n // its okay to eat failure here.\n }\n\n // NOTE(mpatwardhan):skip properties. we are only interested in overriding\n // functions. we do not even want to evaluate `typeof source[methodName]` for properties\n // because getter would get invoked, and they might have side effects.\n // For example RTCPeerConnection.peerIdentity is a property that returns a promise.\n // calling typeof RTCPeerConnection.peerIdentity, would leak a promise, and in case it rejects\n // we see errors.\n if (isProperty) {\n return;\n }\n\n var type;\n try {\n type = typeof source[methodName];\n } catch (error) {\n // NOTE(mroberts): Attempting to check the type of non-function members\n // on the prototype throws an error for some types.\n }\n\n if (type !== 'function') {\n // Skip non-function members.\n return;\n }\n\n /* eslint no-loop-func:0 */\n wrapper[methodName] = function() {\n return this[target][methodName].apply(this[target], arguments);\n };\n}\n\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n for (var methodName in source) {\n delegateMethod(source, wrapper, target, methodName);\n }\n}\n\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n\n var difference = new Set();\n\n list1.forEach(function(item) {\n if (!list2.has(item)) {\n difference.add(item);\n }\n });\n\n return difference;\n}\n\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} mapFn\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n var listArray = list instanceof Map || list instanceof Set\n ? Array.from(list.values())\n : list;\n\n return listArray.reduce(function(flattened, item) {\n var mapped = mapFn(item);\n return flattened.concat(mapped);\n }, []);\n}\n\n/**\n * Get the browser's user agent, if available.\n * @returns {?string}\n */\nfunction getUserAgent() {\n return typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string'\n ? navigator.userAgent\n : null;\n}\n\n/**\n * Guess the browser.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?string} browser - \"chrome\", \"firefox\", \"safari\", or null\n */\nfunction guessBrowser(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n if (/Chrome|CriOS/.test(userAgent)) {\n return 'chrome';\n }\n if (/Firefox|FxiOS/.test(userAgent)) {\n return 'firefox';\n }\n if (/Safari/.test(userAgent)) {\n return 'safari';\n }\n return null;\n}\n\n/**\n * Guess the browser version.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?{major: number, minor: number}}\n */\nfunction guessBrowserVersion(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n var prefix = {\n chrome: 'Chrome|CriOS',\n firefox: 'Firefox|FxiOS',\n safari: 'Version'\n }[guessBrowser(userAgent)];\n\n if (!prefix) {\n return null;\n }\n var regex = new RegExp('(' + prefix + ')/([^\\\\s]+)');\n var match = (userAgent.match(regex) || [])[2];\n\n if (!match) {\n return null;\n }\n var versions = match.split('.').map(Number);\n return {\n major: isNaN(versions[0]) ? null : versions[0],\n minor: isNaN(versions[1]) ? null : versions[1]\n };\n}\n\n/**\n * Check whether the current browser is iOS Chrome.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {boolean}\n */\nfunction isIOSChrome(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n return (/Mobi/.test(userAgent) && guessBrowser() === 'chrome' && /iPad|iPhone|iPod/.test(userAgent));\n}\n\n/**\n * Intercept an event that might otherwise be proxied on an EventTarget.\n * @param {EventTarget} target\n * @param {string} type\n * @returns {void}\n */\nfunction interceptEvent(target, type) {\n var currentListener = null;\n Object.defineProperty(target, 'on' + type, {\n get: function() {\n return currentListener;\n },\n set: function(newListener) {\n if (currentListener) {\n this.removeEventListener(type, currentListener);\n }\n\n if (typeof newListener === 'function') {\n currentListener = newListener;\n this.addEventListener(type, currentListener);\n } else {\n currentListener = null;\n }\n }\n });\n}\n\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function} onFailure\n * @returns {Promise}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n if (onSuccess) {\n return promise.then(function(result) {\n onSuccess(result);\n }, function(error) {\n onFailure(error);\n });\n }\n return promise;\n}\n\n/**\n * Make a unique ID.\n * @return {string}\n */\nfunction makeUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n Object.getOwnPropertyNames(source).forEach(function(propertyName) {\n proxyProperty(source, wrapper, target, propertyName);\n });\n}\n\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n if (propertyName in wrapper) {\n // Skip any properties already set.\n return;\n } else if (propertyName.match(/^on[a-z]+$/)) {\n Object.defineProperty(wrapper, propertyName, {\n value: null,\n writable: true\n });\n\n target.addEventListener(propertyName.slice(2), function() {\n wrapper.dispatchEvent.apply(wrapper, arguments);\n });\n\n return;\n }\n\n Object.defineProperty(wrapper, propertyName, {\n enumerable: true,\n get: function() {\n return target[propertyName];\n }\n });\n}\n\n/**\n * Check whether native WebRTC APIs are supported.\n * @returns {boolean}\n */\nfunction support() {\n return typeof navigator === 'object'\n && typeof navigator.mediaDevices === 'object'\n && typeof navigator.mediaDevices.getUserMedia === 'function'\n && typeof RTCPeerConnection === 'function';\n}\n\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\n\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.difference = difference;\nexports.flatMap = flatMap;\nexports.guessBrowser = guessBrowser;\nexports.guessBrowserVersion = guessBrowserVersion;\nexports.isIOSChrome = isIOSChrome;\nexports.interceptEvent = interceptEvent;\nexports.legacyPromise = legacyPromise;\nexports.makeUUID = makeUUID;\nexports.proxyProperties = proxyProperties;\nexports.support = support;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvaW5kZXguanM/MDU2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlIGEge0BsaW5rIERlZmVycmVkfS5cbiAqIEByZXR1cm5zIHtEZWZlcnJlZH1cbiAqL1xuZnVuY3Rpb24gZGVmZXIoKSB7XG4gIHZhciBkZWZlcnJlZCA9IHt9O1xuICBkZWZlcnJlZC5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZGVmZXJyZWQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIGRlZmVycmVkO1xufVxuXG4vKipcbiAqIENvcHkgYSBtZXRob2QgZnJvbSBhIGBzb3VyY2VgIHByb3RvdHlwZSBvbnRvIGEgYHdyYXBwZXJgIHByb3RvdHlwZS4gSW52b2tpbmdcbiAqIHRoZSBtZXRob2Qgb24gdGhlIGB3cmFwcGVyYCBwcm90b3R5cGUgd2lsbCBpbnZva2UgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kXG4gKiBvbiBhbiBpbnN0YW5jZSBhY2Nlc3NlZCBieSBgdGFyZ2V0YC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzb3VyY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSB3cmFwcGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gZGVsZWdhdGVNZXRob2Qoc291cmNlLCB3cmFwcGVyLCB0YXJnZXQsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKG1ldGhvZE5hbWUgaW4gd3JhcHBlcikge1xuICAgIC8vIFNraXAgYW55IG1ldGhvZHMgYWxyZWFkeSBzZXQuXG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUubWF0Y2goL15vblthLXpdKyQvKSkge1xuICAgIC8vIFNraXAgRXZlbnRIYW5kbGVycyAodGhlc2UgYXJlIGhhbmRsZWQgaW4gdGhlIGNvbnN0cnVjdG9yKS5cbiAgICByZXR1cm47XG4gIH1cblxuXG4gIHZhciBpc1Byb3BlcnR5ID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIG1ldGhvZE5hbWUpO1xuICAgIGlzUHJvcGVydHkgPSBwcm9wRGVzYyAmJiAhIXByb3BEZXNjLmdldDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBpdHMgb2theSB0byBlYXQgZmFpbHVyZSBoZXJlLlxuICB9XG5cbiAgLy8gTk9URShtcGF0d2FyZGhhbik6c2tpcCBwcm9wZXJ0aWVzLiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIG92ZXJyaWRpbmdcbiAgLy8gZnVuY3Rpb25zLiB3ZSBkbyBub3QgZXZlbiB3YW50IHRvIGV2YWx1YXRlICBgdHlwZW9mIHNvdXJjZVttZXRob2ROYW1lXWAgZm9yIHByb3BlcnRpZXNcbiAgLy8gYmVjYXVzZSBnZXR0ZXIgd291bGQgZ2V0IGludm9rZWQsIGFuZCB0aGV5IG1pZ2h0IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAvLyBGb3IgZXhhbXBsZSBSVENQZWVyQ29ubmVjdGlvbi5wZWVySWRlbnRpdHkgaXMgYSBwcm9wZXJ0eSB0aGF0IHJldHVybnMgYSBwcm9taXNlLlxuICAvLyBjYWxsaW5nIHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbi5wZWVySWRlbnRpdHksIHdvdWxkIGxlYWsgYSBwcm9taXNlLCBhbmQgaW4gY2FzZSBpdCByZWplY3RzXG4gIC8vIHdlIHNlZSBlcnJvcnMuXG4gIGlmIChpc1Byb3BlcnR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHR5cGU7XG4gIHRyeSB7XG4gICAgdHlwZSA9IHR5cGVvZiBzb3VyY2VbbWV0aG9kTmFtZV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gTk9URShtcm9iZXJ0cyk6IEF0dGVtcHRpbmcgdG8gY2hlY2sgdGhlIHR5cGUgb2Ygbm9uLWZ1bmN0aW9uIG1lbWJlcnNcbiAgICAvLyBvbiB0aGUgcHJvdG90eXBlIHRocm93cyBhbiBlcnJvciBmb3Igc29tZSB0eXBlcy5cbiAgfVxuXG4gIGlmICh0eXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gU2tpcCBub24tZnVuY3Rpb24gbWVtYmVycy5cbiAgICByZXR1cm47XG4gIH1cblxuICAvKiBlc2xpbnQgbm8tbG9vcC1mdW5jOjAgKi9cbiAgd3JhcHBlclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzW3RhcmdldF1bbWV0aG9kTmFtZV0uYXBwbHkodGhpc1t0YXJnZXRdLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG4vKipcbiAqIENvcHkgbWV0aG9kcyBmcm9tIGEgYHNvdXJjZWAgcHJvdG90eXBlIG9udG8gYSBgd3JhcHBlcmAgcHJvdG90eXBlLiBJbnZva2luZ1xuICogdGhlIG1ldGhvZHMgb24gdGhlIGB3cmFwcGVyYCBwcm90b3R5cGUgd2lsbCBpbnZva2UgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kXG4gKiBvbiBhbiBpbnN0YW5jZSBhY2Nlc3NlZCBieSBgdGFyZ2V0YC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzb3VyY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSB3cmFwcGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0XG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICovXG5mdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZHMoc291cmNlLCB3cmFwcGVyLCB0YXJnZXQpIHtcbiAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBzb3VyY2UpIHtcbiAgICBkZWxlZ2F0ZU1ldGhvZChzb3VyY2UsIHdyYXBwZXIsIHRhcmdldCwgbWV0aG9kTmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgaXRlbXMgaW4gbGlzdDEgdGhhdCBhcmUgbm90IGluIGxpc3QyLlxuICogQHBhcmFtIHtBcnJheTwqPnxNYXA8Kj58U2V0PCo+fSBsaXN0MVxuICogQHBhcmFtIHtBcnJheTwqPnxNYXA8Kj58U2V0PCo+fSBsaXN0MlxuICogQHJldHVybnMge1NldH1cbiAqL1xuZnVuY3Rpb24gZGlmZmVyZW5jZShsaXN0MSwgbGlzdDIpIHtcbiAgbGlzdDEgPSBBcnJheS5pc0FycmF5KGxpc3QxKSA/IG5ldyBTZXQobGlzdDEpIDogbmV3IFNldChsaXN0MS52YWx1ZXMoKSk7XG4gIGxpc3QyID0gQXJyYXkuaXNBcnJheShsaXN0MikgPyBuZXcgU2V0KGxpc3QyKSA6IG5ldyBTZXQobGlzdDIudmFsdWVzKCkpO1xuXG4gIHZhciBkaWZmZXJlbmNlID0gbmV3IFNldCgpO1xuXG4gIGxpc3QxLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIGlmICghbGlzdDIuaGFzKGl0ZW0pKSB7XG4gICAgICBkaWZmZXJlbmNlLmFkZChpdGVtKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkaWZmZXJlbmNlO1xufVxuXG4vKipcbiAqIE1hcCBhIGxpc3QgdG8gYW4gYXJyYXkgb2YgYXJyYXlzLCBhbmQgcmV0dXJuIHRoZSBmbGF0dGVuZWQgcmVzdWx0LlxuICogQHBhcmFtIHtBcnJheTwqPnxTZXQ8Kj58TWFwPCo+fSBsaXN0XG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCopOiBBcnJheTwqPn0gbWFwRm5cbiAqIEByZXR1cm5zIEFycmF5PCo+XG4gKi9cbmZ1bmN0aW9uIGZsYXRNYXAobGlzdCwgbWFwRm4pIHtcbiAgdmFyIGxpc3RBcnJheSA9IGxpc3QgaW5zdGFuY2VvZiBNYXAgfHwgbGlzdCBpbnN0YW5jZW9mIFNldFxuICAgID8gQXJyYXkuZnJvbShsaXN0LnZhbHVlcygpKVxuICAgIDogbGlzdDtcblxuICByZXR1cm4gbGlzdEFycmF5LnJlZHVjZShmdW5jdGlvbihmbGF0dGVuZWQsIGl0ZW0pIHtcbiAgICB2YXIgbWFwcGVkID0gbWFwRm4oaXRlbSk7XG4gICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQobWFwcGVkKTtcbiAgfSwgW10pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYnJvd3NlcidzIHVzZXIgYWdlbnQsIGlmIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIHs/c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRVc2VyQWdlbnQoKSB7XG4gIHJldHVybiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCA9PT0gJ3N0cmluZydcbiAgICA/IG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogR3Vlc3MgdGhlIGJyb3dzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3VzZXJBZ2VudD1uYXZpZ2F0b3IudXNlckFnZW50XVxuICogQHJldHVybnMgez9zdHJpbmd9IGJyb3dzZXIgLSBcImNocm9tZVwiLCBcImZpcmVmb3hcIiwgXCJzYWZhcmlcIiwgb3IgbnVsbFxuICovXG5mdW5jdGlvbiBndWVzc0Jyb3dzZXIodXNlckFnZW50KSB7XG4gIGlmICh0eXBlb2YgdXNlckFnZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIHVzZXJBZ2VudCA9IGdldFVzZXJBZ2VudCgpO1xuICB9XG4gIGlmICgvQ2hyb21lfENyaU9TLy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2Nocm9tZSc7XG4gIH1cbiAgaWYgKC9GaXJlZm94fEZ4aU9TLy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ2ZpcmVmb3gnO1xuICB9XG4gIGlmICgvU2FmYXJpLy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICByZXR1cm4gJ3NhZmFyaSc7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR3Vlc3MgdGhlIGJyb3dzZXIgdmVyc2lvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdXNlckFnZW50PW5hdmlnYXRvci51c2VyQWdlbnRdXG4gKiBAcmV0dXJucyB7P3ttYWpvcjogbnVtYmVyLCBtaW5vcjogbnVtYmVyfX1cbiAqL1xuZnVuY3Rpb24gZ3Vlc3NCcm93c2VyVmVyc2lvbih1c2VyQWdlbnQpIHtcbiAgaWYgKHR5cGVvZiB1c2VyQWdlbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdXNlckFnZW50ID0gZ2V0VXNlckFnZW50KCk7XG4gIH1cbiAgdmFyIHByZWZpeCA9IHtcbiAgICBjaHJvbWU6ICdDaHJvbWV8Q3JpT1MnLFxuICAgIGZpcmVmb3g6ICdGaXJlZm94fEZ4aU9TJyxcbiAgICBzYWZhcmk6ICdWZXJzaW9uJ1xuICB9W2d1ZXNzQnJvd3Nlcih1c2VyQWdlbnQpXTtcblxuICBpZiAoIXByZWZpeCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgcHJlZml4ICsgJykvKFteXFxcXHNdKyknKTtcbiAgdmFyIG1hdGNoID0gKHVzZXJBZ2VudC5tYXRjaChyZWdleCkgfHwgW10pWzJdO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgdmVyc2lvbnMgPSBtYXRjaC5zcGxpdCgnLicpLm1hcChOdW1iZXIpO1xuICByZXR1cm4ge1xuICAgIG1ham9yOiBpc05hTih2ZXJzaW9uc1swXSkgPyBudWxsIDogdmVyc2lvbnNbMF0sXG4gICAgbWlub3I6IGlzTmFOKHZlcnNpb25zWzFdKSA/IG51bGwgOiB2ZXJzaW9uc1sxXVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBpT1MgQ2hyb21lLlxuICogQHBhcmFtIHtzdHJpbmd9IFt1c2VyQWdlbnQ9bmF2aWdhdG9yLnVzZXJBZ2VudF1cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0lPU0Nocm9tZSh1c2VyQWdlbnQpIHtcbiAgaWYgKHR5cGVvZiB1c2VyQWdlbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdXNlckFnZW50ID0gZ2V0VXNlckFnZW50KCk7XG4gIH1cbiAgcmV0dXJuICgvTW9iaS8udGVzdCh1c2VyQWdlbnQpICYmIGd1ZXNzQnJvd3NlcigpID09PSAnY2hyb21lJyAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdCh1c2VyQWdlbnQpKTtcbn1cblxuLyoqXG4gKiBJbnRlcmNlcHQgYW4gZXZlbnQgdGhhdCBtaWdodCBvdGhlcndpc2UgYmUgcHJveGllZCBvbiBhbiBFdmVudFRhcmdldC5cbiAqIEBwYXJhbSB7RXZlbnRUYXJnZXR9IHRhcmdldFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbnRlcmNlcHRFdmVudCh0YXJnZXQsIHR5cGUpIHtcbiAgdmFyIGN1cnJlbnRMaXN0ZW5lciA9IG51bGw7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICdvbicgKyB0eXBlLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBjdXJyZW50TGlzdGVuZXI7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKG5ld0xpc3RlbmVyKSB7XG4gICAgICBpZiAoY3VycmVudExpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBjdXJyZW50TGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5ld0xpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGN1cnJlbnRMaXN0ZW5lciA9IG5ld0xpc3RlbmVyO1xuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgY3VycmVudExpc3RlbmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgZnVuY3Rpb24gZm9yIHR1cm5pbmcgYSBQcm9taXNlIGludG8gdGhlIGtpbmQgcmVmZXJlbmNlZCBpbiB0aGVcbiAqIExlZ2FjeSBJbnRlcmZhY2UgRXh0ZW5zaW9ucyBzZWN0aW9uIG9mIHRoZSBXZWJSVEMgc3BlYy5cbiAqIEBwYXJhbSB7UHJvbWlzZTwqPn0gcHJvbWlzZVxuICogQHBhcmFtIHtmdW5jdGlvbjwqPn0gb25TdWNjZXNzXG4gKiBAcGFyYW0ge2Z1bmN0aW9uPEVycm9yPn0gb25GYWlsdXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx1bmRlZmluZWQ+fVxuICovXG5mdW5jdGlvbiBsZWdhY3lQcm9taXNlKHByb21pc2UsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gIGlmIChvblN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgb25TdWNjZXNzKHJlc3VsdCk7XG4gICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIG9uRmFpbHVyZShlcnJvcik7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8qKlxuICogTWFrZSBhIHVuaXF1ZSBJRC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbWFrZVVVSUQoKSB7XG4gIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uKGMpIHtcbiAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDA7XG4gICAgdmFyIHYgPSBjID09PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xuICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRm9yIGVhY2ggcHJvcGVydHkgbmFtZSBvbiB0aGUgYHNvdXJjZWAgcHJvdG90eXBlLCBhZGQgZ2V0dGVycyBhbmQvb3Igc2V0dGVyc1xuICogdG8gYHdyYXBwZXJgIHRoYXQgcHJveHkgdG8gYHRhcmdldGAuXG4gKiBAcGFyYW0ge29iamVjdH0gc291cmNlXG4gKiBAcGFyYW0ge29iamVjdH0gd3JhcHBlclxuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gcHJveHlQcm9wZXJ0aWVzKHNvdXJjZSwgd3JhcHBlciwgdGFyZ2V0KSB7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eU5hbWUpIHtcbiAgICBwcm94eVByb3BlcnR5KHNvdXJjZSwgd3JhcHBlciwgdGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBGb3IgdGhlIHByb3BlcnR5IG5hbWUgb24gdGhlIGBzb3VyY2VgIHByb3RvdHlwZSwgYWRkIGEgZ2V0dGVyIGFuZC9vciBzZXR0ZXJcbiAqIHRvIGB3cmFwcGVyYCB0aGF0IHByb3hpZXMgdG8gYHRhcmdldGAuXG4gKiBAcGFyYW0ge29iamVjdH0gc291cmNlXG4gKiBAcGFyYW0ge29iamVjdH0gd3JhcHBlclxuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5TmFtZVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gcHJveHlQcm9wZXJ0eShzb3VyY2UsIHdyYXBwZXIsIHRhcmdldCwgcHJvcGVydHlOYW1lKSB7XG4gIGlmIChwcm9wZXJ0eU5hbWUgaW4gd3JhcHBlcikge1xuICAgIC8vIFNraXAgYW55IHByb3BlcnRpZXMgYWxyZWFkeSBzZXQuXG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZS5tYXRjaCgvXm9uW2Etel0rJC8pKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdyYXBwZXIsIHByb3BlcnR5TmFtZSwge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIocHJvcGVydHlOYW1lLnNsaWNlKDIpLCBmdW5jdGlvbigpIHtcbiAgICAgIHdyYXBwZXIuZGlzcGF0Y2hFdmVudC5hcHBseSh3cmFwcGVyLCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdyYXBwZXIsIHByb3BlcnR5TmFtZSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHlOYW1lXTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgbmF0aXZlIFdlYlJUQyBBUElzIGFyZSBzdXBwb3J0ZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gc3VwcG9ydCgpIHtcbiAgcmV0dXJuIHR5cGVvZiBuYXZpZ2F0b3IgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IERlZmVycmVkXG4gKiBAcHJvcGVydHkge1Byb21pc2V9IHByb21pc2VcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHJlamVjdFxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcmVzb2x2ZVxuICovXG5cbmV4cG9ydHMuZGVmZXIgPSBkZWZlcjtcbmV4cG9ydHMuZGVsZWdhdGVNZXRob2RzID0gZGVsZWdhdGVNZXRob2RzO1xuZXhwb3J0cy5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbmV4cG9ydHMuZmxhdE1hcCA9IGZsYXRNYXA7XG5leHBvcnRzLmd1ZXNzQnJvd3NlciA9IGd1ZXNzQnJvd3NlcjtcbmV4cG9ydHMuZ3Vlc3NCcm93c2VyVmVyc2lvbiA9IGd1ZXNzQnJvd3NlclZlcnNpb247XG5leHBvcnRzLmlzSU9TQ2hyb21lID0gaXNJT1NDaHJvbWU7XG5leHBvcnRzLmludGVyY2VwdEV2ZW50ID0gaW50ZXJjZXB0RXZlbnQ7XG5leHBvcnRzLmxlZ2FjeVByb21pc2UgPSBsZWdhY3lQcm9taXNlO1xuZXhwb3J0cy5tYWtlVVVJRCA9IG1ha2VVVUlEO1xuZXhwb3J0cy5wcm94eVByb3BlcnRpZXMgPSBwcm94eVByb3BlcnRpZXM7XG5leHBvcnRzLnN1cHBvcnQgPSBzdXBwb3J0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/util/index.js\n")},"./node_modules/@twilio/webrtc/lib/util/latch.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar defer = __webpack_require__(/*! ./ */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").defer;\n\nvar states = {\n high: new Set(['low']),\n low: new Set(['high'])\n};\n\n/**\n * Construct a {@link Latch}.\n * @class\n * @classdesc A {@link Latch} has two states (\"high\" and \"low\") and methods for\n * transitioning between them ({@link Latch#raise} and {@link Latch#lower}).\n * @param {string} [initialState=\"low\"] - either \"high\" or \"low\"\n */\nfunction Latch(initialState) {\n if (!(this instanceof Latch)) {\n return new Latch(initialState);\n }\n var state = initialState || 'low';\n Object.defineProperties(this, {\n _state: {\n set: function(_state) {\n if (state !== _state) {\n state = _state;\n var whenDeferreds = this._whenDeferreds.get(state);\n whenDeferreds.forEach(function(deferred) {\n deferred.resolve(this);\n }, this);\n whenDeferreds.clear();\n }\n },\n get: function() {\n return state;\n }\n },\n _whenDeferreds: {\n value: new Map([\n ['high', new Set()],\n ['low', new Set()]\n ])\n },\n state: {\n enumerable: true,\n get: function() {\n return this._state;\n }\n }\n });\n}\n\n/**\n * Transition to \"low\".\n * @returns {this}\n * @throws {Error}\n */\nLatch.prototype.lower = function lower() {\n return this.transition('low');\n};\n\n/**\n * Transition to \"high\".\n * @returns {this}\n * @throws {Error}\n */\nLatch.prototype.raise = function raise() {\n return this.transition('high');\n};\n\n/**\n * Transition to a new state.\n * @param {string} newState\n * @returns {this}\n * @throws {Error}\n */\nLatch.prototype.transition = function transition(newState) {\n if (!states[this.state].has(newState)) {\n throw createUnreachableStateError(this.state, newState);\n }\n this._state = newState;\n return this;\n};\n\n/**\n * Return a Promise that resolves when the {@link Latch} transitions to\n * the specified state.\n * @param {string} state\n * @returns {Promise}\n */\nLatch.prototype.when = function when(state) {\n if (this.state === state) {\n return Promise.resolve(this);\n }\n if (!states[this.state].has(state)) {\n return Promise.reject(createUnreachableStateError(this.state, state));\n }\n var deferred = defer();\n this._whenDeferreds.get(state).add(deferred);\n return deferred.promise;\n};\n\n/**\n * Create an unreachable state Error.\n * @param {string} from - state to be transitioned from\n * @param {string} to - state to be transitioned to\n * @return {Error}\n */\nfunction createUnreachableStateError(from, to) {\n return new Error('Cannot transition from \"' + from + '\" to \"' + to + '\"');\n}\n\nmodule.exports = Latch;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvbGF0Y2guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvbGF0Y2guanM/YWVjOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBkZWZlciA9IHJlcXVpcmUoJy4vJykuZGVmZXI7XG5cbnZhciBzdGF0ZXMgPSB7XG4gIGhpZ2g6IG5ldyBTZXQoWydsb3cnXSksXG4gIGxvdzogbmV3IFNldChbJ2hpZ2gnXSlcbn07XG5cbi8qKlxuICogQ29uc3RydWN0IGEge0BsaW5rIExhdGNofS5cbiAqIEBjbGFzc1xuICogQGNsYXNzZGVzYyBBIHtAbGluayBMYXRjaH0gaGFzIHR3byBzdGF0ZXMgKFwiaGlnaFwiIGFuZCBcImxvd1wiKSBhbmQgbWV0aG9kcyBmb3JcbiAqIHRyYW5zaXRpb25pbmcgYmV0d2VlbiB0aGVtICh7QGxpbmsgTGF0Y2gjcmFpc2V9IGFuZCB7QGxpbmsgTGF0Y2gjbG93ZXJ9KS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5pdGlhbFN0YXRlPVwibG93XCJdIC0gZWl0aGVyIFwiaGlnaFwiIG9yIFwibG93XCJcbiAqL1xuZnVuY3Rpb24gTGF0Y2goaW5pdGlhbFN0YXRlKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMYXRjaCkpIHtcbiAgICByZXR1cm4gbmV3IExhdGNoKGluaXRpYWxTdGF0ZSk7XG4gIH1cbiAgdmFyIHN0YXRlID0gaW5pdGlhbFN0YXRlIHx8ICdsb3cnO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgX3N0YXRlOiB7XG4gICAgICBzZXQ6IGZ1bmN0aW9uKF9zdGF0ZSkge1xuICAgICAgICBpZiAoc3RhdGUgIT09IF9zdGF0ZSkge1xuICAgICAgICAgIHN0YXRlID0gX3N0YXRlO1xuICAgICAgICAgIHZhciB3aGVuRGVmZXJyZWRzID0gdGhpcy5fd2hlbkRlZmVycmVkcy5nZXQoc3RhdGUpO1xuICAgICAgICAgIHdoZW5EZWZlcnJlZHMuZm9yRWFjaChmdW5jdGlvbihkZWZlcnJlZCkge1xuICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0aGlzKTtcbiAgICAgICAgICB9LCB0aGlzKTtcbiAgICAgICAgICB3aGVuRGVmZXJyZWRzLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBfd2hlbkRlZmVycmVkczoge1xuICAgICAgdmFsdWU6IG5ldyBNYXAoW1xuICAgICAgICBbJ2hpZ2gnLCBuZXcgU2V0KCldLFxuICAgICAgICBbJ2xvdycsIG5ldyBTZXQoKV1cbiAgICAgIF0pXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFRyYW5zaXRpb24gdG8gXCJsb3dcIi5cbiAqIEByZXR1cm5zIHt0aGlzfVxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbkxhdGNoLnByb3RvdHlwZS5sb3dlciA9IGZ1bmN0aW9uIGxvd2VyKCkge1xuICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKCdsb3cnKTtcbn07XG5cbi8qKlxuICogVHJhbnNpdGlvbiB0byBcImhpZ2hcIi5cbiAqIEByZXR1cm5zIHt0aGlzfVxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbkxhdGNoLnByb3RvdHlwZS5yYWlzZSA9IGZ1bmN0aW9uIHJhaXNlKCkge1xuICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKCdoaWdoJyk7XG59O1xuXG4vKipcbiAqIFRyYW5zaXRpb24gdG8gYSBuZXcgc3RhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3U3RhdGVcbiAqIEByZXR1cm5zIHt0aGlzfVxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbkxhdGNoLnByb3RvdHlwZS50cmFuc2l0aW9uID0gZnVuY3Rpb24gdHJhbnNpdGlvbihuZXdTdGF0ZSkge1xuICBpZiAoIXN0YXRlc1t0aGlzLnN0YXRlXS5oYXMobmV3U3RhdGUpKSB7XG4gICAgdGhyb3cgY3JlYXRlVW5yZWFjaGFibGVTdGF0ZUVycm9yKHRoaXMuc3RhdGUsIG5ld1N0YXRlKTtcbiAgfVxuICB0aGlzLl9zdGF0ZSA9IG5ld1N0YXRlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmV0dXJuIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHtAbGluayBMYXRjaH0gdHJhbnNpdGlvbnMgdG9cbiAqIHRoZSBzcGVjaWZpZWQgc3RhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVcbiAqIEByZXR1cm5zIHtQcm9taXNlPHRoaXM+fVxuICovXG5MYXRjaC5wcm90b3R5cGUud2hlbiA9IGZ1bmN0aW9uIHdoZW4oc3RhdGUpIHtcbiAgaWYgKHRoaXMuc3RhdGUgPT09IHN0YXRlKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzKTtcbiAgfVxuICBpZiAoIXN0YXRlc1t0aGlzLnN0YXRlXS5oYXMoc3RhdGUpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGNyZWF0ZVVucmVhY2hhYmxlU3RhdGVFcnJvcih0aGlzLnN0YXRlLCBzdGF0ZSkpO1xuICB9XG4gIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gIHRoaXMuX3doZW5EZWZlcnJlZHMuZ2V0KHN0YXRlKS5hZGQoZGVmZXJyZWQpO1xuICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuIHVucmVhY2hhYmxlIHN0YXRlIEVycm9yLlxuICogQHBhcmFtIHtzdHJpbmd9IGZyb20gLSBzdGF0ZSB0byBiZSB0cmFuc2l0aW9uZWQgZnJvbVxuICogQHBhcmFtIHtzdHJpbmd9IHRvIC0gc3RhdGUgdG8gYmUgdHJhbnNpdGlvbmVkIHRvXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlVW5yZWFjaGFibGVTdGF0ZUVycm9yKGZyb20sIHRvKSB7XG4gIHJldHVybiBuZXcgRXJyb3IoJ0Nhbm5vdCB0cmFuc2l0aW9uIGZyb20gXCInICsgZnJvbSArICdcIiB0byBcIicgKyB0byArICdcIicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExhdGNoO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/util/latch.js\n")},"./node_modules/@twilio/webrtc/lib/util/sdp.js":function(module,exports,__webpack_require__){"use strict";eval("/* globals RTCPeerConnection, RTCRtpTransceiver */\n\n\n\nvar flatMap = __webpack_require__(/*! ./ */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").flatMap;\nvar guessBrowser = __webpack_require__(/*! ./ */ \"./node_modules/@twilio/webrtc/lib/util/index.js\").guessBrowser;\n\n// NOTE(mmalavalli): We cache Chrome's sdpSemantics support in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar isSdpSemanticsSupported = null;\n\n/**\n * Check if Chrome supports specifying sdpSemantics for an RTCPeerConnection.\n * @return {boolean}\n */\nfunction checkIfSdpSemanticsIsSupported() {\n if (typeof isSdpSemanticsSupported === 'boolean') {\n return isSdpSemanticsSupported;\n }\n if (typeof RTCPeerConnection === 'undefined') {\n isSdpSemanticsSupported = false;\n return isSdpSemanticsSupported;\n }\n try {\n new RTCPeerConnection({ sdpSemantics: 'foo' });\n isSdpSemanticsSupported = false;\n } catch (e) {\n isSdpSemanticsSupported = true;\n }\n return isSdpSemanticsSupported;\n}\n\n// NOTE(mmalavalli): We cache Chrome's SDP format in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar chromeSdpFormat = null;\n\n/**\n * Get Chrome's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getChromeDefaultSdpFormat() {\n if (!chromeSdpFormat) {\n if (typeof RTCPeerConnection !== 'undefined'\n && 'addTransceiver' in RTCPeerConnection.prototype) {\n try {\n new RTCPeerConnection().addTransceiver('audio');\n chromeSdpFormat = 'unified';\n } catch (e) {\n chromeSdpFormat = 'planb';\n }\n } else {\n chromeSdpFormat = 'planb';\n }\n }\n return chromeSdpFormat;\n}\n\n/**\n * Get Chrome's SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getChromeSdpFormat(sdpSemantics) {\n if (!sdpSemantics || !checkIfSdpSemanticsIsSupported()) {\n return getChromeDefaultSdpFormat();\n }\n return {\n 'plan-b': 'planb',\n 'unified-plan': 'unified'\n }[sdpSemantics];\n}\n\n/**\n * Get Safari's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getSafariSdpFormat() {\n return typeof RTCRtpTransceiver !== 'undefined'\n && 'currentDirection' in RTCRtpTransceiver.prototype\n ? 'unified'\n : 'planb';\n}\n\n/**\n * Get the browser's default SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getSdpFormat(sdpSemantics) {\n return {\n chrome: getChromeSdpFormat(sdpSemantics),\n firefox: 'unified',\n safari: getSafariSdpFormat()\n }[guessBrowser()] || null;\n}\n\n/**\n * Match a pattern across lines, returning the first capture group for any\n * matches.\n * @param {string} pattern\n * @param {string} lines\n * @returns {Set} matches\n */\nfunction getMatches(pattern, lines) {\n var matches = lines.match(new RegExp(pattern, 'gm')) || [];\n return matches.reduce(function(results, line) {\n var match = line.match(new RegExp(pattern));\n return match ? results.add(match[1]) : results;\n }, new Set());\n}\n\n/**\n * Get a Set of MediaStreamTrack IDs from an SDP.\n * @param {string} pattern\n * @param {string} sdp\n * @returns {Set}\n */\nfunction getTrackIds(pattern, sdp) {\n return getMatches(pattern, sdp);\n}\n\n/**\n * Get a Set of MediaStreamTrack IDs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Set} trackIds\n */\nfunction getPlanBTrackIds(sdp) {\n return getTrackIds('^a=ssrc:[0-9]+ +msid:.+ +(.+) *$', sdp);\n}\n\n/**\n * Get a Set of MediaStreamTrack IDs from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @returns {Set} trackIds\n */\nfunction getUnifiedPlanTrackIds(sdp) {\n return getTrackIds('^a=msid:.+ +(.+) *$', sdp);\n}\n\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set}\n */\nfunction getPlanBSSRCs(sdp, trackId) {\n var pattern = '^a=ssrc:([0-9]+) +msid:[^ ]+ +' + trackId + ' *$';\n return getMatches(pattern, sdp);\n}\n\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - sdp string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n kind = kind || '.*';\n direction = direction || '.*';\n return sdp.split('\\r\\nm=').slice(1).map(function(mediaSection) {\n return 'm=' + mediaSection;\n }).filter(function(mediaSection) {\n var kindPattern = new RegExp('m=' + kind, 'gm');\n var directionPattern = new RegExp('a=' + direction, 'gm');\n return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n });\n}\n\n/**\n * Get the Set of SSRCs announced in a MediaSection.\n * @param {string} mediaSection\n * @returns {Array} ssrcs\n */\nfunction getMediaSectionSSRCs(mediaSection) {\n return Array.from(getMatches('^a=ssrc:([0-9]+) +.*$', mediaSection));\n}\n\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set}\n */\nfunction getUnifiedPlanSSRCs(sdp, trackId) {\n var mediaSections = getMediaSections(sdp);\n\n var msidAttrRegExp = new RegExp('^a=msid:[^ ]+ +' + trackId + ' *$', 'gm');\n var matchingMediaSections = mediaSections.filter(function(mediaSection) {\n return mediaSection.match(msidAttrRegExp);\n });\n\n return new Set(flatMap(matchingMediaSections, getMediaSectionSSRCs));\n}\n\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from an SDP.\n * @param {function(string): Set} getTrackIds\n * @param {function(string, string): Set} getSSRCs\n * @param {string} sdp - SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getTrackIdsToSSRCs(getTrackIds, getSSRCs, sdp) {\n return new Map(Array.from(getTrackIds(sdp)).map(function(trackId) {\n return [trackId, getSSRCs(sdp, trackId)];\n }));\n}\n\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getPlanBTrackIdsToSSRCs(sdp) {\n return getTrackIdsToSSRCs(getPlanBTrackIds, getPlanBSSRCs, sdp);\n}\n\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getUnifiedPlanTrackIdsToSSRCs(sdp) {\n return getTrackIdsToSSRCs(getUnifiedPlanTrackIds, getUnifiedPlanSSRCs, sdp);\n}\n\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {function(string): Map>} getTrackIdsToSSRCs\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - SDP\n * @returns {strinng} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(getTrackIdsToSSRCs, trackIdsToSSRCs, sdp) {\n var newTrackIdsToSSRCs = getTrackIdsToSSRCs(sdp);\n var newSSRCsToOldSSRCs = new Map();\n\n // NOTE(mroberts): First, update a=ssrc attributes.\n newTrackIdsToSSRCs.forEach(function(ssrcs, trackId) {\n if (!trackIdsToSSRCs.has(trackId)) {\n trackIdsToSSRCs.set(trackId, ssrcs);\n return;\n }\n var oldSSRCs = Array.from(trackIdsToSSRCs.get(trackId));\n var newSSRCs = Array.from(ssrcs);\n oldSSRCs.forEach(function(oldSSRC, i) {\n var newSSRC = newSSRCs[i];\n newSSRCsToOldSSRCs.set(newSSRC, oldSSRC);\n var pattern = '^a=ssrc:' + newSSRC + ' (.*)$';\n var replacement = 'a=ssrc:' + oldSSRC + ' $1';\n sdp = sdp.replace(new RegExp(pattern, 'gm'), replacement);\n });\n });\n\n // NOTE(mroberts): Then, update a=ssrc-group attributes.\n var pattern = '^(a=ssrc-group:[^ ]+ +)(.*)$';\n var matches = sdp.match(new RegExp(pattern, 'gm')) || [];\n matches.forEach(function(line) {\n var match = line.match(new RegExp(pattern));\n if (!match) {\n return;\n }\n var prefix = match[1];\n var newSSRCs = match[2];\n var oldSSRCs = newSSRCs.split(' ').map(function(newSSRC) {\n var oldSSRC = newSSRCsToOldSSRCs.get(newSSRC);\n return oldSSRC ? oldSSRC : newSSRC;\n }).join(' ');\n sdp = sdp.replace(match[0], prefix + oldSSRCs);\n });\n\n return sdp;\n}\n\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updatePlanBTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n return updateTrackIdsToSSRCs(getPlanBTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\n\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updateUnifiedPlanTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n return updateTrackIdsToSSRCs(getUnifiedPlanTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\n\nexports.getSdpFormat = getSdpFormat;\nexports.getMediaSections = getMediaSections;\nexports.getPlanBTrackIds = getPlanBTrackIds;\nexports.getUnifiedPlanTrackIds = getUnifiedPlanTrackIds;\nexports.getPlanBSSRCs = getPlanBSSRCs;\nexports.getUnifiedPlanSSRCs = getUnifiedPlanSSRCs;\nexports.updatePlanBTrackIdsToSSRCs = updatePlanBTrackIdsToSSRCs;\nexports.updateUnifiedPlanTrackIdsToSSRCs = updateUnifiedPlanTrackIdsToSSRCs;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvbGliL3V0aWwvc2RwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL0B0d2lsaW8vd2VicnRjL2xpYi91dGlsL3NkcC5qcz84OTY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbHMgUlRDUGVlckNvbm5lY3Rpb24sIFJUQ1J0cFRyYW5zY2VpdmVyICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGZsYXRNYXAgPSByZXF1aXJlKCcuLycpLmZsYXRNYXA7XG52YXIgZ3Vlc3NCcm93c2VyID0gcmVxdWlyZSgnLi8nKS5ndWVzc0Jyb3dzZXI7XG5cbi8vIE5PVEUobW1hbGF2YWxsaSk6IFdlIGNhY2hlIENocm9tZSdzIHNkcFNlbWFudGljcyBzdXBwb3J0IGluIG9yZGVyIHRvIHByZXZlbnRcbi8vIGluc3RhbnRpYXRpb24gb2YgbW9yZSB0aGFuIG9uZSBSVENQZWVyQ29ubmVjdGlvbi5cbnZhciBpc1NkcFNlbWFudGljc1N1cHBvcnRlZCA9IG51bGw7XG5cbi8qKlxuICogQ2hlY2sgaWYgQ2hyb21lIHN1cHBvcnRzIHNwZWNpZnlpbmcgc2RwU2VtYW50aWNzIGZvciBhbiBSVENQZWVyQ29ubmVjdGlvbi5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGNoZWNrSWZTZHBTZW1hbnRpY3NJc1N1cHBvcnRlZCgpIHtcbiAgaWYgKHR5cGVvZiBpc1NkcFNlbWFudGljc1N1cHBvcnRlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIGlzU2RwU2VtYW50aWNzU3VwcG9ydGVkO1xuICB9XG4gIGlmICh0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaXNTZHBTZW1hbnRpY3NTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gaXNTZHBTZW1hbnRpY3NTdXBwb3J0ZWQ7XG4gIH1cbiAgdHJ5IHtcbiAgICBuZXcgUlRDUGVlckNvbm5lY3Rpb24oeyBzZHBTZW1hbnRpY3M6ICdmb28nIH0pO1xuICAgIGlzU2RwU2VtYW50aWNzU3VwcG9ydGVkID0gZmFsc2U7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpc1NkcFNlbWFudGljc1N1cHBvcnRlZCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGlzU2RwU2VtYW50aWNzU3VwcG9ydGVkO1xufVxuXG4vLyBOT1RFKG1tYWxhdmFsbGkpOiBXZSBjYWNoZSBDaHJvbWUncyBTRFAgZm9ybWF0IGluIG9yZGVyIHRvIHByZXZlbnRcbi8vIGluc3RhbnRpYXRpb24gb2YgbW9yZSB0aGFuIG9uZSBSVENQZWVyQ29ubmVjdGlvbi5cbnZhciBjaHJvbWVTZHBGb3JtYXQgPSBudWxsO1xuXG4vKipcbiAqIEdldCBDaHJvbWUncyBkZWZhdWx0IFNEUCBmb3JtYXQuXG4gKiBAcmV0dXJucyB7J3BsYW5iJ3wndW5pZmllZCd9XG4gKi9cbmZ1bmN0aW9uIGdldENocm9tZURlZmF1bHRTZHBGb3JtYXQoKSB7XG4gIGlmICghY2hyb21lU2RwRm9ybWF0KSB7XG4gICAgaWYgKHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmICdhZGRUcmFuc2NlaXZlcicgaW4gUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKS5hZGRUcmFuc2NlaXZlcignYXVkaW8nKTtcbiAgICAgICAgY2hyb21lU2RwRm9ybWF0ID0gJ3VuaWZpZWQnO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjaHJvbWVTZHBGb3JtYXQgPSAncGxhbmInO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjaHJvbWVTZHBGb3JtYXQgPSAncGxhbmInO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2hyb21lU2RwRm9ybWF0O1xufVxuXG4vKipcbiAqIEdldCBDaHJvbWUncyBTRFAgZm9ybWF0LlxuICogQHBhcmFtIHsncGxhbi1iJ3wndW5pZmllZC1wbGFuJ30gW3NkcFNlbWFudGljc11cbiAqIEByZXR1cm5zIHsncGxhbmInfCd1bmlmaWVkJ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q2hyb21lU2RwRm9ybWF0KHNkcFNlbWFudGljcykge1xuICBpZiAoIXNkcFNlbWFudGljcyB8fCAhY2hlY2tJZlNkcFNlbWFudGljc0lzU3VwcG9ydGVkKCkpIHtcbiAgICByZXR1cm4gZ2V0Q2hyb21lRGVmYXVsdFNkcEZvcm1hdCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgJ3BsYW4tYic6ICdwbGFuYicsXG4gICAgJ3VuaWZpZWQtcGxhbic6ICd1bmlmaWVkJ1xuICB9W3NkcFNlbWFudGljc107XG59XG5cbi8qKlxuICogR2V0IFNhZmFyaSdzIGRlZmF1bHQgU0RQIGZvcm1hdC5cbiAqIEByZXR1cm5zIHsncGxhbmInfCd1bmlmaWVkJ31cbiAqL1xuZnVuY3Rpb24gZ2V0U2FmYXJpU2RwRm9ybWF0KCkge1xuICByZXR1cm4gdHlwZW9mIFJUQ1J0cFRyYW5zY2VpdmVyICE9PSAndW5kZWZpbmVkJ1xuICAgICYmICdjdXJyZW50RGlyZWN0aW9uJyBpbiBSVENSdHBUcmFuc2NlaXZlci5wcm90b3R5cGVcbiAgICAgID8gJ3VuaWZpZWQnXG4gICAgICA6ICdwbGFuYic7XG59XG5cbi8qKlxuICogR2V0IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBTRFAgZm9ybWF0LlxuICogQHBhcmFtIHsncGxhbi1iJ3wndW5pZmllZC1wbGFuJ30gW3NkcFNlbWFudGljc11cbiAqIEByZXR1cm5zIHsncGxhbmInfCd1bmlmaWVkJ31cbiAqL1xuZnVuY3Rpb24gZ2V0U2RwRm9ybWF0KHNkcFNlbWFudGljcykge1xuICByZXR1cm4ge1xuICAgIGNocm9tZTogZ2V0Q2hyb21lU2RwRm9ybWF0KHNkcFNlbWFudGljcyksXG4gICAgZmlyZWZveDogJ3VuaWZpZWQnLFxuICAgIHNhZmFyaTogZ2V0U2FmYXJpU2RwRm9ybWF0KClcbiAgfVtndWVzc0Jyb3dzZXIoKV0gfHwgbnVsbDtcbn1cblxuLyoqXG4gKiBNYXRjaCBhIHBhdHRlcm4gYWNyb3NzIGxpbmVzLCByZXR1cm5pbmcgdGhlIGZpcnN0IGNhcHR1cmUgZ3JvdXAgZm9yIGFueVxuICogbWF0Y2hlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuXG4gKiBAcGFyYW0ge3N0cmluZ30gbGluZXNcbiAqIEByZXR1cm5zIHtTZXQ8c3RyaW5nPn0gbWF0Y2hlc1xuICovXG5mdW5jdGlvbiBnZXRNYXRjaGVzKHBhdHRlcm4sIGxpbmVzKSB7XG4gIHZhciBtYXRjaGVzID0gbGluZXMubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuLCAnZ20nKSkgfHwgW107XG4gIHJldHVybiBtYXRjaGVzLnJlZHVjZShmdW5jdGlvbihyZXN1bHRzLCBsaW5lKSB7XG4gICAgdmFyIG1hdGNoID0gbGluZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4pKTtcbiAgICByZXR1cm4gbWF0Y2ggPyByZXN1bHRzLmFkZChtYXRjaFsxXSkgOiByZXN1bHRzO1xuICB9LCBuZXcgU2V0KCkpO1xufVxuXG4vKipcbiAqIEdldCBhIFNldCBvZiBNZWRpYVN0cmVhbVRyYWNrIElEcyBmcm9tIGFuIFNEUC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RwXG4gKiBAcmV0dXJucyB7U2V0PHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGdldFRyYWNrSWRzKHBhdHRlcm4sIHNkcCkge1xuICByZXR1cm4gZ2V0TWF0Y2hlcyhwYXR0ZXJuLCBzZHApO1xufVxuXG4vKipcbiAqIEdldCBhIFNldCBvZiBNZWRpYVN0cmVhbVRyYWNrIElEcyBmcm9tIGEgUGxhbiBCIFNEUC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBQbGFuIEIgU0RQXG4gKiBAcmV0dXJucyB7U2V0PHN0cmluZz59IHRyYWNrSWRzXG4gKi9cbmZ1bmN0aW9uIGdldFBsYW5CVHJhY2tJZHMoc2RwKSB7XG4gIHJldHVybiBnZXRUcmFja0lkcygnXmE9c3NyYzpbMC05XSsgK21zaWQ6LisgKyguKykgKiQnLCBzZHApO1xufVxuXG4vKipcbiAqIEdldCBhIFNldCBvZiBNZWRpYVN0cmVhbVRyYWNrIElEcyBmcm9tIGEgVW5pZmllZCBQbGFuIFNEUC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBVbmlmaWVkIFBsYW4gU0RQXG4gKiBAcmV0dXJucyB7U2V0PHN0cmluZz59IHRyYWNrSWRzXG4gKi9cbmZ1bmN0aW9uIGdldFVuaWZpZWRQbGFuVHJhY2tJZHMoc2RwKSB7XG4gIHJldHVybiBnZXRUcmFja0lkcygnXmE9bXNpZDouKyArKC4rKSAqJCcsIHNkcCk7XG59XG5cbi8qKlxuICogR2V0IGEgU2V0IG9mIFNTUkNzIGZvciBhIE1lZGlhU3RyZWFtVHJhY2sgZnJvbSBhIFBsYW4gQiBTRFAuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RwIC0gUGxhbiBCIFNEUFxuICogQHBhcmFtIHtzdHJpbmd9IHRyYWNrSWQgLSBNZWRpYVN0cmVhbVRyYWNrIElEXG4gKiBAcmV0dXJucyB7U2V0PHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGdldFBsYW5CU1NSQ3Moc2RwLCB0cmFja0lkKSB7XG4gIHZhciBwYXR0ZXJuID0gJ15hPXNzcmM6KFswLTldKykgK21zaWQ6W14gXSsgKycgKyB0cmFja0lkICsgJyAqJCc7XG4gIHJldHVybiBnZXRNYXRjaGVzKHBhdHRlcm4sIHNkcCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBtPSBzZWN0aW9ucyBvZiBhIHBhcnRpY3VsYXIga2luZCBhbmQgZGlyZWN0aW9uIGZyb20gYW4gc2RwLlxuICogQHBhcmFtIHtzdHJpbmd9IHNkcCAtICBzZHAgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tpbmRdIC0gUGF0dGVybiBmb3IgbWF0Y2hpbmcga2luZFxuICogQHBhcmFtIHtzdHJpbmd9IFtkaXJlY3Rpb25dIC0gUGF0dGVybiBmb3IgbWF0Y2hpbmcgZGlyZWN0aW9uXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gbWVkaWFTZWN0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRNZWRpYVNlY3Rpb25zKHNkcCwga2luZCwgZGlyZWN0aW9uKSB7XG4gIGtpbmQgPSBraW5kIHx8ICcuKic7XG4gIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAnLionO1xuICByZXR1cm4gc2RwLnNwbGl0KCdcXHJcXG5tPScpLnNsaWNlKDEpLm1hcChmdW5jdGlvbihtZWRpYVNlY3Rpb24pIHtcbiAgICByZXR1cm4gJ209JyArIG1lZGlhU2VjdGlvbjtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKG1lZGlhU2VjdGlvbikge1xuICAgIHZhciBraW5kUGF0dGVybiA9IG5ldyBSZWdFeHAoJ209JyArIGtpbmQsICdnbScpO1xuICAgIHZhciBkaXJlY3Rpb25QYXR0ZXJuID0gbmV3IFJlZ0V4cCgnYT0nICsgZGlyZWN0aW9uLCAnZ20nKTtcbiAgICByZXR1cm4ga2luZFBhdHRlcm4udGVzdChtZWRpYVNlY3Rpb24pICYmIGRpcmVjdGlvblBhdHRlcm4udGVzdChtZWRpYVNlY3Rpb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIFNldCBvZiBTU1JDcyBhbm5vdW5jZWQgaW4gYSBNZWRpYVNlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVkaWFTZWN0aW9uXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gc3NyY3NcbiAqL1xuZnVuY3Rpb24gZ2V0TWVkaWFTZWN0aW9uU1NSQ3MobWVkaWFTZWN0aW9uKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGdldE1hdGNoZXMoJ15hPXNzcmM6KFswLTldKykgKy4qJCcsIG1lZGlhU2VjdGlvbikpO1xufVxuXG4vKipcbiAqIEdldCBhIFNldCBvZiBTU1JDcyBmb3IgYSBNZWRpYVN0cmVhbVRyYWNrIGZyb20gYSBVbmlmaWVkIFBsYW4gU0RQLlxuICogQHBhcmFtIHtzdHJpbmd9IHNkcCAtIFVuaWZpZWQgUGxhbiBTRFBcbiAqIEBwYXJhbSB7c3RyaW5nfSB0cmFja0lkIC0gTWVkaWFTdHJlYW1UcmFjayBJRFxuICogQHJldHVybnMge1NldDxzdHJpbmc+fVxuICovXG5mdW5jdGlvbiBnZXRVbmlmaWVkUGxhblNTUkNzKHNkcCwgdHJhY2tJZCkge1xuICB2YXIgbWVkaWFTZWN0aW9ucyA9IGdldE1lZGlhU2VjdGlvbnMoc2RwKTtcblxuICB2YXIgbXNpZEF0dHJSZWdFeHAgPSBuZXcgUmVnRXhwKCdeYT1tc2lkOlteIF0rICsnICsgdHJhY2tJZCArICcgKiQnLCAnZ20nKTtcbiAgdmFyIG1hdGNoaW5nTWVkaWFTZWN0aW9ucyA9IG1lZGlhU2VjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKG1lZGlhU2VjdGlvbikge1xuICAgIHJldHVybiBtZWRpYVNlY3Rpb24ubWF0Y2gobXNpZEF0dHJSZWdFeHApO1xuICB9KTtcblxuICByZXR1cm4gbmV3IFNldChmbGF0TWFwKG1hdGNoaW5nTWVkaWFTZWN0aW9ucywgZ2V0TWVkaWFTZWN0aW9uU1NSQ3MpKTtcbn1cblxuLyoqXG4gKiBHZXQgYSBNYXAgZnJvbSBNZWRpYVN0cmVhbVRyYWNrIElEcyB0byBTU1JDcyBmcm9tIGFuIFNEUC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKTogU2V0PHN0cmluZz59IGdldFRyYWNrSWRzXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZywgc3RyaW5nKTogU2V0PHN0cmluZz59IGdldFNTUkNzXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RwIC0gU0RQXG4gKiBAcmV0dXJucyB7TWFwPHN0cmluZywgU2V0PHN0cmluZz4+fSB0cmFja0lkc1RvU1NSQ3NcbiAqL1xuZnVuY3Rpb24gZ2V0VHJhY2tJZHNUb1NTUkNzKGdldFRyYWNrSWRzLCBnZXRTU1JDcywgc2RwKSB7XG4gIHJldHVybiBuZXcgTWFwKEFycmF5LmZyb20oZ2V0VHJhY2tJZHMoc2RwKSkubWFwKGZ1bmN0aW9uKHRyYWNrSWQpIHtcbiAgICByZXR1cm4gW3RyYWNrSWQsIGdldFNTUkNzKHNkcCwgdHJhY2tJZCldO1xuICB9KSk7XG59XG5cbi8qKlxuICogR2V0IGEgTWFwIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgZnJvbSBhIFBsYW4gQiBTRFAuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RwIC0gUGxhbiBCIFNEUFxuICogQHJldHVybnMge01hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pn0gdHJhY2tJZHNUb1NTUkNzXG4gKi9cbmZ1bmN0aW9uIGdldFBsYW5CVHJhY2tJZHNUb1NTUkNzKHNkcCkge1xuICByZXR1cm4gZ2V0VHJhY2tJZHNUb1NTUkNzKGdldFBsYW5CVHJhY2tJZHMsIGdldFBsYW5CU1NSQ3MsIHNkcCk7XG59XG5cbi8qKlxuICogR2V0IGEgTWFwIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgZnJvbSBhIFBsYW4gQiBTRFAuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RwIC0gUGxhbiBCIFNEUFxuICogQHJldHVybnMge01hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pn0gdHJhY2tJZHNUb1NTUkNzXG4gKi9cbmZ1bmN0aW9uIGdldFVuaWZpZWRQbGFuVHJhY2tJZHNUb1NTUkNzKHNkcCkge1xuICByZXR1cm4gZ2V0VHJhY2tJZHNUb1NTUkNzKGdldFVuaWZpZWRQbGFuVHJhY2tJZHMsIGdldFVuaWZpZWRQbGFuU1NSQ3MsIHNkcCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBtYXBwaW5ncyBmcm9tIE1lZGlhU3RyZWFtVHJhY2sgSURzIHRvIFNTUkNzIGFzIGluZGljYXRlZCBieSBib3RoXG4gKiB0aGUgTWFwIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgYW5kIHRoZSBTRFAgaXRzZWxmLiBUaGlzIG1ldGhvZFxuICogZW5zdXJlcyB0aGF0IFNTUkNzIG5ldmVyIGNoYW5nZSBvbmNlIGFubm91bmNlZC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKTogTWFwPHN0cmluZywgU2V0PHN0cmluZz4+fSBnZXRUcmFja0lkc1RvU1NSQ3NcbiAqIEBwYXJhbSB7TWFwPHN0cmluZywgU2V0PHN0cmluZz4+fSB0cmFja0lkc1RvU1NSQ3NcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBTRFBcbiAqIEByZXR1cm5zIHtzdHJpbm5nfSB1cGRhdGVkU2RwIC0gdXBkYXRlZCBTRFBcbiAqL1xuZnVuY3Rpb24gdXBkYXRlVHJhY2tJZHNUb1NTUkNzKGdldFRyYWNrSWRzVG9TU1JDcywgdHJhY2tJZHNUb1NTUkNzLCBzZHApIHtcbiAgdmFyIG5ld1RyYWNrSWRzVG9TU1JDcyA9IGdldFRyYWNrSWRzVG9TU1JDcyhzZHApO1xuICB2YXIgbmV3U1NSQ3NUb09sZFNTUkNzID0gbmV3IE1hcCgpO1xuXG4gIC8vIE5PVEUobXJvYmVydHMpOiBGaXJzdCwgdXBkYXRlIGE9c3NyYyBhdHRyaWJ1dGVzLlxuICBuZXdUcmFja0lkc1RvU1NSQ3MuZm9yRWFjaChmdW5jdGlvbihzc3JjcywgdHJhY2tJZCkge1xuICAgIGlmICghdHJhY2tJZHNUb1NTUkNzLmhhcyh0cmFja0lkKSkge1xuICAgICAgdHJhY2tJZHNUb1NTUkNzLnNldCh0cmFja0lkLCBzc3Jjcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBvbGRTU1JDcyA9IEFycmF5LmZyb20odHJhY2tJZHNUb1NTUkNzLmdldCh0cmFja0lkKSk7XG4gICAgdmFyIG5ld1NTUkNzID0gQXJyYXkuZnJvbShzc3Jjcyk7XG4gICAgb2xkU1NSQ3MuZm9yRWFjaChmdW5jdGlvbihvbGRTU1JDLCBpKSB7XG4gICAgICB2YXIgbmV3U1NSQyA9IG5ld1NTUkNzW2ldO1xuICAgICAgbmV3U1NSQ3NUb09sZFNTUkNzLnNldChuZXdTU1JDLCBvbGRTU1JDKTtcbiAgICAgIHZhciBwYXR0ZXJuID0gJ15hPXNzcmM6JyArIG5ld1NTUkMgKyAnICguKikkJztcbiAgICAgIHZhciByZXBsYWNlbWVudCA9ICdhPXNzcmM6JyArIG9sZFNTUkMgKyAnICQxJztcbiAgICAgIHNkcCA9IHNkcC5yZXBsYWNlKG5ldyBSZWdFeHAocGF0dGVybiwgJ2dtJyksIHJlcGxhY2VtZW50KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gTk9URShtcm9iZXJ0cyk6IFRoZW4sIHVwZGF0ZSBhPXNzcmMtZ3JvdXAgYXR0cmlidXRlcy5cbiAgdmFyIHBhdHRlcm4gPSAnXihhPXNzcmMtZ3JvdXA6W14gXSsgKykoLiopJCc7XG4gIHZhciBtYXRjaGVzID0gc2RwLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybiwgJ2dtJykpIHx8IFtdO1xuICBtYXRjaGVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIHZhciBtYXRjaCA9IGxpbmUubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcHJlZml4ID0gbWF0Y2hbMV07XG4gICAgdmFyIG5ld1NTUkNzID0gbWF0Y2hbMl07XG4gICAgdmFyIG9sZFNTUkNzID0gbmV3U1NSQ3Muc3BsaXQoJyAnKS5tYXAoZnVuY3Rpb24obmV3U1NSQykge1xuICAgICAgdmFyIG9sZFNTUkMgPSBuZXdTU1JDc1RvT2xkU1NSQ3MuZ2V0KG5ld1NTUkMpO1xuICAgICAgcmV0dXJuIG9sZFNTUkMgPyBvbGRTU1JDIDogbmV3U1NSQztcbiAgICB9KS5qb2luKCcgJyk7XG4gICAgc2RwID0gc2RwLnJlcGxhY2UobWF0Y2hbMF0sIHByZWZpeCArIG9sZFNTUkNzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNkcDtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIG1hcHBpbmdzIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgYXMgaW5kaWNhdGVkIGJ5IGJvdGhcbiAqIHRoZSBNYXAgZnJvbSBNZWRpYVN0cmVhbVRyYWNrIElEcyB0byBTU1JDcyBhbmQgdGhlIFBsYW4gQiBTRFAgaXRzZWxmLiBUaGlzXG4gKiBtZXRob2QgZW5zdXJlcyB0aGF0IFNTUkNzIG5ldmVyIGNoYW5nZSBvbmNlIGFubm91bmNlZC5cbiAqIEBwYXJhbSB7TWFwPHN0cmluZywgU2V0PHN0cmluZz4+fSB0cmFja0lkc1RvU1NSQ3NcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBQbGFuIEIgU0RQXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB1cGRhdGVkU2RwIC0gdXBkYXRlZCBQbGFuIEIgU0RQXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVBsYW5CVHJhY2tJZHNUb1NTUkNzKHRyYWNrSWRzVG9TU1JDcywgc2RwKSB7XG4gIHJldHVybiB1cGRhdGVUcmFja0lkc1RvU1NSQ3MoZ2V0UGxhbkJUcmFja0lkc1RvU1NSQ3MsIHRyYWNrSWRzVG9TU1JDcywgc2RwKTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIG1hcHBpbmdzIGZyb20gTWVkaWFTdHJlYW1UcmFjayBJRHMgdG8gU1NSQ3MgYXMgaW5kaWNhdGVkIGJ5IGJvdGhcbiAqIHRoZSBNYXAgZnJvbSBNZWRpYVN0cmVhbVRyYWNrIElEcyB0byBTU1JDcyBhbmQgdGhlIFBsYW4gQiBTRFAgaXRzZWxmLiBUaGlzXG4gKiBtZXRob2QgZW5zdXJlcyB0aGF0IFNTUkNzIG5ldmVyIGNoYW5nZSBvbmNlIGFubm91bmNlZC5cbiAqIEBwYXJhbSB7TWFwPHN0cmluZywgU2V0PHN0cmluZz4+fSB0cmFja0lkc1RvU1NSQ3NcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZHAgLSBQbGFuIEIgU0RQXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB1cGRhdGVkU2RwIC0gdXBkYXRlZCBQbGFuIEIgU0RQXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVVuaWZpZWRQbGFuVHJhY2tJZHNUb1NTUkNzKHRyYWNrSWRzVG9TU1JDcywgc2RwKSB7XG4gIHJldHVybiB1cGRhdGVUcmFja0lkc1RvU1NSQ3MoZ2V0VW5pZmllZFBsYW5UcmFja0lkc1RvU1NSQ3MsIHRyYWNrSWRzVG9TU1JDcywgc2RwKTtcbn1cblxuZXhwb3J0cy5nZXRTZHBGb3JtYXQgPSBnZXRTZHBGb3JtYXQ7XG5leHBvcnRzLmdldE1lZGlhU2VjdGlvbnMgPSBnZXRNZWRpYVNlY3Rpb25zO1xuZXhwb3J0cy5nZXRQbGFuQlRyYWNrSWRzID0gZ2V0UGxhbkJUcmFja0lkcztcbmV4cG9ydHMuZ2V0VW5pZmllZFBsYW5UcmFja0lkcyA9IGdldFVuaWZpZWRQbGFuVHJhY2tJZHM7XG5leHBvcnRzLmdldFBsYW5CU1NSQ3MgPSBnZXRQbGFuQlNTUkNzO1xuZXhwb3J0cy5nZXRVbmlmaWVkUGxhblNTUkNzID0gZ2V0VW5pZmllZFBsYW5TU1JDcztcbmV4cG9ydHMudXBkYXRlUGxhbkJUcmFja0lkc1RvU1NSQ3MgPSB1cGRhdGVQbGFuQlRyYWNrSWRzVG9TU1JDcztcbmV4cG9ydHMudXBkYXRlVW5pZmllZFBsYW5UcmFja0lkc1RvU1NSQ3MgPSB1cGRhdGVVbmlmaWVkUGxhblRyYWNrSWRzVG9TU1JDcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/lib/util/sdp.js\n")},"./node_modules/@twilio/webrtc/package.json":function(module){eval('module.exports = JSON.parse("{\\"name\\":\\"@twilio/webrtc\\",\\"version\\":\\"4.5.1\\",\\"description\\":\\"WebRTC-related APIs and shims used by twilio-video.js\\",\\"scripts\\":{\\"build\\":\\"npm-run-all clean lint test\\",\\"clean\\":\\"rimraf coverage\\",\\"lint\\":\\"eslint ./lib\\",\\"test:unit\\":\\"istanbul cover node_modules/mocha/bin/_mocha -- ./test/unit/index.js\\",\\"test:integration:native\\":\\"karma start karma/integration.conf.js\\",\\"test:integration:adapter\\":\\"karma start karma/integration.adapter.conf.js\\",\\"test:integration\\":\\"npm-run-all test:integration:*\\",\\"test\\":\\"npm-run-all test:*\\"},\\"repository\\":{\\"type\\":\\"git\\",\\"url\\":\\"git+https://github.com/twilio/twilio-webrtc.js.git\\"},\\"keywords\\":[\\"shim\\",\\"twilio\\",\\"video\\",\\"webrtc\\"],\\"author\\":\\"Manjesh Malavalli \\",\\"contributors\\":[\\"Mark Roberts \\",\\"Ryan Rowland \\",\\"Makarand Patwardhan \\"],\\"license\\":\\"BSD-3-Clause\\",\\"main\\":\\"./lib/index.js\\",\\"bugs\\":{\\"url\\":\\"https://github.com/twilio/twilio-webrtc.js/issues\\"},\\"homepage\\":\\"https://github.com/twilio/twilio-webrtc.js#readme\\",\\"devDependencies\\":{\\"browserify\\":\\"^14.4.0\\",\\"electron\\":\\"9.4.0\\",\\"envify\\":\\"^4.1.0\\",\\"eslint\\":\\"^4.4.1\\",\\"is-docker\\":\\"^2.0.0\\",\\"istanbul\\":\\"^0.4.5\\",\\"karma\\":\\"^6.3.4\\",\\"karma-browserify\\":\\"^8.1.0\\",\\"karma-chrome-launcher\\":\\"^2.2.0\\",\\"karma-edgium-launcher\\":\\"^4.0.0-0\\",\\"karma-electron\\":\\"^6.1.0\\",\\"karma-firefox-launcher\\":\\"^1.0.1\\",\\"karma-htmlfile-reporter\\":\\"^0.3.8\\",\\"karma-junit-reporter\\":\\"^1.2.0\\",\\"karma-mocha\\":\\"^2.0.1\\",\\"karma-safari-launcher\\":\\"~0.1\\",\\"karma-spec-reporter\\":\\"0.0.31\\",\\"mocha\\":\\"^9.1.1\\",\\"npm-run-all\\":\\"^4.0.2\\",\\"rimraf\\":\\"^2.6.1\\",\\"simple-git\\":\\"^2.4.0\\",\\"twilio-release-tool\\":\\"^1.0.0\\",\\"watchify\\":\\"^4.0.0\\",\\"webrtc-adapter\\":\\"^6.4.8\\"}}");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHR3aWxpby93ZWJydGMvcGFja2FnZS5qc29uLmpzIiwic291cmNlcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@twilio/webrtc/package.json\n')},"./node_modules/after/index.js":function(module,exports){eval("module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYWZ0ZXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYWZ0ZXIvaW5kZXguanM/Y2NjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGFmdGVyXG5cbmZ1bmN0aW9uIGFmdGVyKGNvdW50LCBjYWxsYmFjaywgZXJyX2NiKSB7XG4gICAgdmFyIGJhaWwgPSBmYWxzZVxuICAgIGVycl9jYiA9IGVycl9jYiB8fCBub29wXG4gICAgcHJveHkuY291bnQgPSBjb3VudFxuXG4gICAgcmV0dXJuIChjb3VudCA9PT0gMCkgPyBjYWxsYmFjaygpIDogcHJveHlcblxuICAgIGZ1bmN0aW9uIHByb3h5KGVyciwgcmVzdWx0KSB7XG4gICAgICAgIGlmIChwcm94eS5jb3VudCA8PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FmdGVyIGNhbGxlZCB0b28gbWFueSB0aW1lcycpXG4gICAgICAgIH1cbiAgICAgICAgLS1wcm94eS5jb3VudFxuXG4gICAgICAgIC8vIGFmdGVyIGZpcnN0IGVycm9yLCByZXN0IGFyZSBwYXNzZWQgdG8gZXJyX2NiXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGJhaWwgPSB0cnVlXG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgICAgICAvLyBmdXR1cmUgZXJyb3IgY2FsbGJhY2tzIHdpbGwgZ28gdG8gZXJyb3IgaGFuZGxlclxuICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJfY2JcbiAgICAgICAgfSBlbHNlIGlmIChwcm94eS5jb3VudCA9PT0gMCAmJiAhYmFpbCkge1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBub29wKCkge31cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/after/index.js\n")},"./node_modules/arraybuffer.slice/index.js":function(module,exports){eval("/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXJyYXlidWZmZXIuc2xpY2UvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXJyYXlidWZmZXIuc2xpY2UvaW5kZXguanM/Y2E5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFic3RyYWN0aW9uIGZvciBzbGljaW5nIGFuIGFycmF5YnVmZmVyIGV2ZW4gd2hlblxuICogQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlIGlzIG5vdCBzdXBwb3J0ZWRcbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXJyYXlidWZmZXIsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYXJyYXlidWZmZXIuYnl0ZUxlbmd0aDtcbiAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICBlbmQgPSBlbmQgfHwgYnl0ZXM7XG5cbiAgaWYgKGFycmF5YnVmZmVyLnNsaWNlKSB7IHJldHVybiBhcnJheWJ1ZmZlci5zbGljZShzdGFydCwgZW5kKTsgfVxuXG4gIGlmIChzdGFydCA8IDApIHsgc3RhcnQgKz0gYnl0ZXM7IH1cbiAgaWYgKGVuZCA8IDApIHsgZW5kICs9IGJ5dGVzOyB9XG4gIGlmIChlbmQgPiBieXRlcykgeyBlbmQgPSBieXRlczsgfVxuXG4gIGlmIChzdGFydCA+PSBieXRlcyB8fCBzdGFydCA+PSBlbmQgfHwgYnl0ZXMgPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5QnVmZmVyKDApO1xuICB9XG5cbiAgdmFyIGFidiA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKTtcbiAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGVuZCAtIHN0YXJ0KTtcbiAgZm9yICh2YXIgaSA9IHN0YXJ0LCBpaSA9IDA7IGkgPCBlbmQ7IGkrKywgaWkrKykge1xuICAgIHJlc3VsdFtpaV0gPSBhYnZbaV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5idWZmZXI7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/arraybuffer.slice/index.js\n")},"./node_modules/axios/index.js":function(module,exports,__webpack_require__){eval('module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanM/YmMzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/index.js\n')},"./node_modules/axios/lib/adapters/xhr.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar settle = __webpack_require__(/*! ./../core/settle */ \"./node_modules/axios/lib/core/settle.js\");\nvar cookies = __webpack_require__(/*! ./../helpers/cookies */ \"./node_modules/axios/lib/helpers/cookies.js\");\nvar buildURL = __webpack_require__(/*! ./../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ \"./node_modules/axios/lib/core/buildFullPath.js\");\nvar parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ \"./node_modules/axios/lib/helpers/parseHeaders.js\");\nvar isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ \"./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\nvar createError = __webpack_require__(/*! ../core/createError */ \"./node_modules/axios/lib/core/createError.js\");\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzP2I1MGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcbiAgICB2YXIgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5hdXRoLnBhc3N3b3JkKSkgOiAnJztcbiAgICAgIHJlcXVlc3RIZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCAgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgdmFyIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWcudHJhbnNpdGlvbmFsICYmIGNvbmZpZy50cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/xhr.js\n")},"./node_modules/axios/lib/axios.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");\nvar bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");\nvar Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js");\nvar mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");\nvar defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js");\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");\naxios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js");\naxios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js");\n\n// Expose isAxiosError\naxios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js");\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9heGlvcy5qcz9jZWU0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIEF4aW9zID0gcmVxdWlyZSgnLi9jb3JlL0F4aW9zJyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxudmFyIGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbmF4aW9zLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoYXhpb3MuZGVmYXVsdHMsIGluc3RhbmNlQ29uZmlnKSk7XG59O1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXhpb3M7XG5cbi8vIEFsbG93IHVzZSBvZiBkZWZhdWx0IGltcG9ydCBzeW50YXggaW4gVHlwZVNjcmlwdFxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGF4aW9zO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/axios.js\n')},"./node_modules/axios/lib/cancel/Cancel.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanM/N2E3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/Cancel.js\n")},"./node_modules/axios/lib/cancel/CancelToken.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar Cancel = __webpack_require__(/*! ./Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzPzhkZjQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/CancelToken.js\n")},"./node_modules/axios/lib/cancel/isCancel.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzPzJlNjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/isCancel.js\n")},"./node_modules/axios/lib/core/Axios.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar buildURL = __webpack_require__(/*! ../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ \"./node_modules/axios/lib/core/InterceptorManager.js\");\nvar dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ \"./node_modules/axios/lib/core/dispatchRequest.js\");\nvar mergeConfig = __webpack_require__(/*! ./mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\nvar validator = __webpack_require__(/*! ../helpers/validator */ \"./node_modules/axios/lib/helpers/validator.js\");\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanM/MGEwNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsO1xuXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiwgJzEuMC4wJyksXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuLCAnMS4wLjAnKSxcbiAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiwgJzEuMC4wJylcbiAgICB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB2YXIgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcblxuICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcblxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICB2YXIgbmV3Q29uZmlnID0gY29uZmlnO1xuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB2YXIgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuXG4gIHdoaWxlIChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/Axios.js\n")},"./node_modules/axios/lib/core/InterceptorManager.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcz9mNmI0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWQsXG4gICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgcnVuV2hlbjogb3B0aW9ucyA/IG9wdGlvbnMucnVuV2hlbiA6IG51bGxcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/InterceptorManager.js\n')},"./node_modules/axios/lib/core/buildFullPath.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");\nvar combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzPzgzYjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/buildFullPath.js\n')},"./node_modules/axios/lib/core/createError.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar enhanceError = __webpack_require__(/*! ./enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanM/MmQ4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/createError.js\n")},"./node_modules/axios/lib/core/dispatchRequest.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar transformData = __webpack_require__(/*! ./transformData */ \"./node_modules/axios/lib/core/transformData.js\");\nvar isCancel = __webpack_require__(/*! ../cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\nvar defaults = __webpack_require__(/*! ../defaults */ \"./node_modules/axios/lib/defaults.js\");\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcz81MjcwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcbnZhciBpc0NhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9pc0NhbmNlbCcpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/dispatchRequest.js\n")},"./node_modules/axios/lib/core/enhanceError.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2VuaGFuY2VFcnJvci5qcz8zODdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGVcbiAgICB9O1xuICB9O1xuICByZXR1cm4gZXJyb3I7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/enhanceError.js\n")},"./node_modules/axios/lib/core/mergeConfig.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanM/NGE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICB2YXIgY29uZmlnID0ge307XG5cbiAgdmFyIHZhbHVlRnJvbUNvbmZpZzJLZXlzID0gWyd1cmwnLCAnbWV0aG9kJywgJ2RhdGEnXTtcbiAgdmFyIG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzID0gWydoZWFkZXJzJywgJ2F1dGgnLCAncHJveHknLCAncGFyYW1zJ107XG4gIHZhciBkZWZhdWx0VG9Db25maWcyS2V5cyA9IFtcbiAgICAnYmFzZVVSTCcsICd0cmFuc2Zvcm1SZXF1ZXN0JywgJ3RyYW5zZm9ybVJlc3BvbnNlJywgJ3BhcmFtc1NlcmlhbGl6ZXInLFxuICAgICd0aW1lb3V0JywgJ3RpbWVvdXRNZXNzYWdlJywgJ3dpdGhDcmVkZW50aWFscycsICdhZGFwdGVyJywgJ3Jlc3BvbnNlVHlwZScsICd4c3JmQ29va2llTmFtZScsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJywgJ29uVXBsb2FkUHJvZ3Jlc3MnLCAnb25Eb3dubG9hZFByb2dyZXNzJywgJ2RlY29tcHJlc3MnLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJywgJ21heEJvZHlMZW5ndGgnLCAnbWF4UmVkaXJlY3RzJywgJ3RyYW5zcG9ydCcsICdodHRwQWdlbnQnLFxuICAgICdodHRwc0FnZW50JywgJ2NhbmNlbFRva2VuJywgJ3NvY2tldFBhdGgnLCAncmVzcG9uc2VFbmNvZGluZydcbiAgXTtcbiAgdmFyIGRpcmVjdE1lcmdlS2V5cyA9IFsndmFsaWRhdGVTdGF0dXMnXTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIHV0aWxzLmZvckVhY2godmFsdWVGcm9tQ29uZmlnMktleXMsIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzLCBtZXJnZURlZXBQcm9wZXJ0aWVzKTtcblxuICB1dGlscy5mb3JFYWNoKGRlZmF1bHRUb0NvbmZpZzJLZXlzLCBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChkaXJlY3RNZXJnZUtleXMsIGZ1bmN0aW9uIG1lcmdlKHByb3ApIHtcbiAgICBpZiAocHJvcCBpbiBjb25maWcyKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBheGlvc0tleXMgPSB2YWx1ZUZyb21Db25maWcyS2V5c1xuICAgIC5jb25jYXQobWVyZ2VEZWVwUHJvcGVydGllc0tleXMpXG4gICAgLmNvbmNhdChkZWZhdWx0VG9Db25maWcyS2V5cylcbiAgICAuY29uY2F0KGRpcmVjdE1lcmdlS2V5cyk7XG5cbiAgdmFyIG90aGVyS2V5cyA9IE9iamVjdFxuICAgIC5rZXlzKGNvbmZpZzEpXG4gICAgLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSlcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIGZpbHRlckF4aW9zS2V5cyhrZXkpIHtcbiAgICAgIHJldHVybiBheGlvc0tleXMuaW5kZXhPZihrZXkpID09PSAtMTtcbiAgICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG90aGVyS2V5cywgbWVyZ2VEZWVwUHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/mergeConfig.js\n")},"./node_modules/axios/lib/core/settle.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar createError = __webpack_require__(/*! ./createError */ \"./node_modules/axios/lib/core/createError.js\");\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcz80NjdmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi9jcmVhdGVFcnJvcicpO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICByZWplY3QoY3JlYXRlRXJyb3IoXG4gICAgICAnUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxuICAgICAgbnVsbCxcbiAgICAgIHJlc3BvbnNlLnJlcXVlc3QsXG4gICAgICByZXNwb25zZVxuICAgICkpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/settle.js\n")},"./node_modules/axios/lib/core/transformData.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");\nvar defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js");\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzP2M0MDEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykge1xuICB2YXIgY29udGV4dCA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29udGV4dCwgZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/transformData.js\n')},"./node_modules/axios/lib/defaults.js":function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ \"./node_modules/axios/lib/helpers/normalizeHeaderName.js\");\nvar enhanceError = __webpack_require__(/*! ./core/enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = __webpack_require__(/*! ./adapters/xhr */ \"./node_modules/axios/lib/adapters/xhr.js\");\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = __webpack_require__(/*! ./adapters/http */ \"./node_modules/axios/lib/adapters/xhr.js\");\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcz8yNDQ0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vY29yZS9lbmhhbmNlRXJyb3InKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDoge1xuICAgIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXG4gIH0sXG5cbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSB8fCAoaGVhZGVycyAmJiBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICByZXR1cm4gc3RyaW5naWZ5U2FmZWx5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgdmFyIHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsO1xuICAgIHZhciBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfVxufTtcblxuZGVmYXVsdHMuaGVhZGVycyA9IHtcbiAgY29tbW9uOiB7XG4gICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/defaults.js\n")},"./node_modules/axios/lib/helpers/bind.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzPzFkMmIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/bind.js\n")},"./node_modules/axios/lib/helpers/buildURL.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanM/MzBiNSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/buildURL.js\n")},"./node_modules/axios/lib/helpers/combineURLs.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanM/ZTY4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/combineURLs.js\n")},"./node_modules/axios/lib/helpers/cookies.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzPzdhYWMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/cookies.js\n")},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":function(module,exports,__webpack_require__){"use strict";eval('\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzP2Q5MjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGRcXCtcXC1cXC5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAbsoluteURL.js\n')},"./node_modules/axios/lib/helpers/isAxiosError.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcz81ZjAyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiAodHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAxiosError.js\n")},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcz8zOTM0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isURLSameOrigin.js\n")},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzP2M4YWYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/normalizeHeaderName.js\n')},"./node_modules/axios/lib/helpers/parseHeaders.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcz9jMzQ1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xudmFyIGlnbm9yZUR1cGxpY2F0ZU9mID0gW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl07XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga2V5O1xuICB2YXIgdmFsO1xuICB2YXIgaTtcblxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxuXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoMCwgaSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/parseHeaders.js\n")},"./node_modules/axios/lib/helpers/spread.js":function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcz8wZGY2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/spread.js\n")},"./node_modules/axios/lib/helpers/validator.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar pkg = __webpack_require__(/*! ./../../package.json */ \"./node_modules/axios/package.json\");\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcz84NDhiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHBrZyA9IHJlcXVpcmUoJy4vLi4vLi4vcGFja2FnZS5qc29uJyk7XG5cbnZhciB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG52YXIgY3VycmVudFZlckFyciA9IHBrZy52ZXJzaW9uLnNwbGl0KCcuJyk7XG5cbi8qKlxuICogQ29tcGFyZSBwYWNrYWdlIHZlcnNpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSB0aGFuVmVyc2lvblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzT2xkZXJWZXJzaW9uKHZlcnNpb24sIHRoYW5WZXJzaW9uKSB7XG4gIHZhciBwa2dWZXJzaW9uQXJyID0gdGhhblZlcnNpb24gPyB0aGFuVmVyc2lvbi5zcGxpdCgnLicpIDogY3VycmVudFZlckFycjtcbiAgdmFyIGRlc3RWZXIgPSB2ZXJzaW9uLnNwbGl0KCcuJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgaWYgKHBrZ1ZlcnNpb25BcnJbaV0gPiBkZXN0VmVyW2ldKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHBrZ1ZlcnNpb25BcnJbaV0gPCBkZXN0VmVyW2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICB2YXIgaXNEZXByZWNhdGVkID0gdmVyc2lvbiAmJiBpc09sZGVyVmVyc2lvbih2ZXJzaW9uKTtcblxuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgcGtnLnZlcnNpb24gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQgaW4gJyArIHZlcnNpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEZXByZWNhdGVkICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICB2YXIgb3B0ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc09sZGVyVmVyc2lvbjogaXNPbGRlclZlcnNpb24sXG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/validator.js\n")},"./node_modules/axios/lib/utils.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcz9jNTMyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodmFsKSB7XG4gIHJldHVybiAodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJykgJiYgKHZhbCBpbnN0YW5jZW9mIEZvcm1EYXRhKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAodmFsLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEJsb2JdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMgIT09ICd1bmRlZmluZWQnICYmIHZhbCBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcztcbn1cblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyLnRyaW0gPyBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKi9cbmZ1bmN0aW9uIGlzU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOYXRpdmVTY3JpcHQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOUycpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG4gICk7XG59XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgYG9iamAgaXMgYW4gQXJyYXkgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgJ29iaicgaXMgYW4gT2JqZWN0IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogVGhlIG9iamVjdCB0byBpdGVyYXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuKSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRm9yY2UgYW4gYXJyYXkgaWYgbm90IGFscmVhZHkgc29tZXRoaW5nIGl0ZXJhYmxlXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIG9iaiA9IFtvYmpdO1xuICB9XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZShyZXN1bHRba2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKGEsIGIsIHRoaXNBcmcpIHtcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhO1xufVxuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGNvbnRlbnQgdmFsdWUgd2l0aG91dCBCT01cbiAqL1xuZnVuY3Rpb24gc3RyaXBCT00oY29udGVudCkge1xuICBpZiAoY29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQXJyYXk6IGlzQXJyYXksXG4gIGlzQXJyYXlCdWZmZXI6IGlzQXJyYXlCdWZmZXIsXG4gIGlzQnVmZmVyOiBpc0J1ZmZlcixcbiAgaXNGb3JtRGF0YTogaXNGb3JtRGF0YSxcbiAgaXNBcnJheUJ1ZmZlclZpZXc6IGlzQXJyYXlCdWZmZXJWaWV3LFxuICBpc1N0cmluZzogaXNTdHJpbmcsXG4gIGlzTnVtYmVyOiBpc051bWJlcixcbiAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXG4gIGlzRGF0ZTogaXNEYXRlLFxuICBpc0ZpbGU6IGlzRmlsZSxcbiAgaXNCbG9iOiBpc0Jsb2IsXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXG4gIGlzU3RyZWFtOiBpc1N0cmVhbSxcbiAgaXNVUkxTZWFyY2hQYXJhbXM6IGlzVVJMU2VhcmNoUGFyYW1zLFxuICBpc1N0YW5kYXJkQnJvd3NlckVudjogaXNTdGFuZGFyZEJyb3dzZXJFbnYsXG4gIGZvckVhY2g6IGZvckVhY2gsXG4gIG1lcmdlOiBtZXJnZSxcbiAgZXh0ZW5kOiBleHRlbmQsXG4gIHRyaW06IHRyaW0sXG4gIHN0cmlwQk9NOiBzdHJpcEJPTVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/utils.js\n")},"./node_modules/axios/package.json":function(module){eval('module.exports = JSON.parse("{\\"name\\":\\"axios\\",\\"version\\":\\"0.21.4\\",\\"description\\":\\"Promise based HTTP client for the browser and node.js\\",\\"main\\":\\"index.js\\",\\"scripts\\":{\\"test\\":\\"grunt test\\",\\"start\\":\\"node ./sandbox/server.js\\",\\"build\\":\\"NODE_ENV=production grunt build\\",\\"preversion\\":\\"npm test\\",\\"version\\":\\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\\",\\"postversion\\":\\"git push && git push --tags\\",\\"examples\\":\\"node ./examples/server.js\\",\\"coveralls\\":\\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\\",\\"fix\\":\\"eslint --fix lib/**/*.js\\"},\\"repository\\":{\\"type\\":\\"git\\",\\"url\\":\\"https://github.com/axios/axios.git\\"},\\"keywords\\":[\\"xhr\\",\\"http\\",\\"ajax\\",\\"promise\\",\\"node\\"],\\"author\\":\\"Matt Zabriskie\\",\\"license\\":\\"MIT\\",\\"bugs\\":{\\"url\\":\\"https://github.com/axios/axios/issues\\"},\\"homepage\\":\\"https://axios-http.com\\",\\"devDependencies\\":{\\"coveralls\\":\\"^3.0.0\\",\\"es6-promise\\":\\"^4.2.4\\",\\"grunt\\":\\"^1.3.0\\",\\"grunt-banner\\":\\"^0.6.0\\",\\"grunt-cli\\":\\"^1.2.0\\",\\"grunt-contrib-clean\\":\\"^1.1.0\\",\\"grunt-contrib-watch\\":\\"^1.0.0\\",\\"grunt-eslint\\":\\"^23.0.0\\",\\"grunt-karma\\":\\"^4.0.0\\",\\"grunt-mocha-test\\":\\"^0.13.3\\",\\"grunt-ts\\":\\"^6.0.0-beta.19\\",\\"grunt-webpack\\":\\"^4.0.2\\",\\"istanbul-instrumenter-loader\\":\\"^1.0.0\\",\\"jasmine-core\\":\\"^2.4.1\\",\\"karma\\":\\"^6.3.2\\",\\"karma-chrome-launcher\\":\\"^3.1.0\\",\\"karma-firefox-launcher\\":\\"^2.1.0\\",\\"karma-jasmine\\":\\"^1.1.1\\",\\"karma-jasmine-ajax\\":\\"^0.1.13\\",\\"karma-safari-launcher\\":\\"^1.0.0\\",\\"karma-sauce-launcher\\":\\"^4.3.6\\",\\"karma-sinon\\":\\"^1.0.5\\",\\"karma-sourcemap-loader\\":\\"^0.3.8\\",\\"karma-webpack\\":\\"^4.0.2\\",\\"load-grunt-tasks\\":\\"^3.5.2\\",\\"minimist\\":\\"^1.2.0\\",\\"mocha\\":\\"^8.2.1\\",\\"sinon\\":\\"^4.5.0\\",\\"terser-webpack-plugin\\":\\"^4.2.3\\",\\"typescript\\":\\"^4.0.5\\",\\"url-search-params\\":\\"^0.10.0\\",\\"webpack\\":\\"^4.44.2\\",\\"webpack-dev-server\\":\\"^3.11.0\\"},\\"browser\\":{\\"./lib/adapters/http.js\\":\\"./lib/adapters/xhr.js\\"},\\"jsdelivr\\":\\"dist/axios.min.js\\",\\"unpkg\\":\\"dist/axios.min.js\\",\\"typings\\":\\"./index.d.ts\\",\\"dependencies\\":{\\"follow-redirects\\":\\"^1.14.0\\"},\\"bundlesize\\":[{\\"path\\":\\"./dist/axios.min.js\\",\\"threshold\\":\\"5kB\\"}]}");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvcGFja2FnZS5qc29uLmpzIiwic291cmNlcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/package.json\n')},"./node_modules/backo2/index.js":function(module,exports){eval("\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja28yL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2JhY2tvMi9pbmRleC5qcz8wYjY0Il0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBFeHBvc2UgYEJhY2tvZmZgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gQmFja29mZjtcblxuLyoqXG4gKiBJbml0aWFsaXplIGJhY2tvZmYgdGltZXIgd2l0aCBgb3B0c2AuXG4gKlxuICogLSBgbWluYCBpbml0aWFsIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIFsxMDBdXG4gKiAtIGBtYXhgIG1heCB0aW1lb3V0IFsxMDAwMF1cbiAqIC0gYGppdHRlcmAgWzBdXG4gKiAtIGBmYWN0b3JgIFsyXVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIEJhY2tvZmYob3B0cykge1xuICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdGhpcy5tcyA9IG9wdHMubWluIHx8IDEwMDtcbiAgdGhpcy5tYXggPSBvcHRzLm1heCB8fCAxMDAwMDtcbiAgdGhpcy5mYWN0b3IgPSBvcHRzLmZhY3RvciB8fCAyO1xuICB0aGlzLmppdHRlciA9IG9wdHMuaml0dGVyID4gMCAmJiBvcHRzLmppdHRlciA8PSAxID8gb3B0cy5qaXR0ZXIgOiAwO1xuICB0aGlzLmF0dGVtcHRzID0gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGJhY2tvZmYgZHVyYXRpb24uXG4gKlxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5CYWNrb2ZmLnByb3RvdHlwZS5kdXJhdGlvbiA9IGZ1bmN0aW9uKCl7XG4gIHZhciBtcyA9IHRoaXMubXMgKiBNYXRoLnBvdyh0aGlzLmZhY3RvciwgdGhpcy5hdHRlbXB0cysrKTtcbiAgaWYgKHRoaXMuaml0dGVyKSB7XG4gICAgdmFyIHJhbmQgPSAgTWF0aC5yYW5kb20oKTtcbiAgICB2YXIgZGV2aWF0aW9uID0gTWF0aC5mbG9vcihyYW5kICogdGhpcy5qaXR0ZXIgKiBtcyk7XG4gICAgbXMgPSAoTWF0aC5mbG9vcihyYW5kICogMTApICYgMSkgPT0gMCAgPyBtcyAtIGRldmlhdGlvbiA6IG1zICsgZGV2aWF0aW9uO1xuICB9XG4gIHJldHVybiBNYXRoLm1pbihtcywgdGhpcy5tYXgpIHwgMDtcbn07XG5cbi8qKlxuICogUmVzZXQgdGhlIG51bWJlciBvZiBhdHRlbXB0cy5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkJhY2tvZmYucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKXtcbiAgdGhpcy5hdHRlbXB0cyA9IDA7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbWluaW11bSBkdXJhdGlvblxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuQmFja29mZi5wcm90b3R5cGUuc2V0TWluID0gZnVuY3Rpb24obWluKXtcbiAgdGhpcy5tcyA9IG1pbjtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBtYXhpbXVtIGR1cmF0aW9uXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5CYWNrb2ZmLnByb3RvdHlwZS5zZXRNYXggPSBmdW5jdGlvbihtYXgpe1xuICB0aGlzLm1heCA9IG1heDtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBqaXR0ZXJcbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkJhY2tvZmYucHJvdG90eXBlLnNldEppdHRlciA9IGZ1bmN0aW9uKGppdHRlcil7XG4gIHRoaXMuaml0dGVyID0gaml0dGVyO1xufTtcblxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/backo2/index.js\n")},"./node_modules/backoff/index.js":function(module,exports,__webpack_require__){eval('// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar Backoff = __webpack_require__(/*! ./lib/backoff */ "./node_modules/backoff/lib/backoff.js");\nvar ExponentialBackoffStrategy = __webpack_require__(/*! ./lib/strategy/exponential */ "./node_modules/backoff/lib/strategy/exponential.js");\nvar FibonacciBackoffStrategy = __webpack_require__(/*! ./lib/strategy/fibonacci */ "./node_modules/backoff/lib/strategy/fibonacci.js");\nvar FunctionCall = __webpack_require__(/*! ./lib/function_call.js */ "./node_modules/backoff/lib/function_call.js");\n\nmodule.exports.Backoff = Backoff;\nmodule.exports.FunctionCall = FunctionCall;\nmodule.exports.FibonacciStrategy = FibonacciBackoffStrategy;\nmodule.exports.ExponentialStrategy = ExponentialBackoffStrategy;\n\n// Constructs a Fibonacci backoff.\nmodule.exports.fibonacci = function(options) {\n return new Backoff(new FibonacciBackoffStrategy(options));\n};\n\n// Constructs an exponential backoff.\nmodule.exports.exponential = function(options) {\n return new Backoff(new ExponentialBackoffStrategy(options));\n};\n\n// Constructs a FunctionCall for the given function and arguments.\nmodule.exports.call = function(fn, vargs, callback) {\n var args = Array.prototype.slice.call(arguments);\n fn = args[0];\n vargs = args.slice(1, args.length - 1);\n callback = args[args.length - 1];\n return new FunctionCall(fn, vargs, callback);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9iYWNrb2ZmL2luZGV4LmpzPzBiMzgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gICAgICBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0aGlldSBUdXJjb3R0ZVxuLy8gICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbnZhciBCYWNrb2ZmID0gcmVxdWlyZSgnLi9saWIvYmFja29mZicpO1xudmFyIEV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5ID0gcmVxdWlyZSgnLi9saWIvc3RyYXRlZ3kvZXhwb25lbnRpYWwnKTtcbnZhciBGaWJvbmFjY2lCYWNrb2ZmU3RyYXRlZ3kgPSByZXF1aXJlKCcuL2xpYi9zdHJhdGVneS9maWJvbmFjY2knKTtcbnZhciBGdW5jdGlvbkNhbGwgPSByZXF1aXJlKCcuL2xpYi9mdW5jdGlvbl9jYWxsLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzLkJhY2tvZmYgPSBCYWNrb2ZmO1xubW9kdWxlLmV4cG9ydHMuRnVuY3Rpb25DYWxsID0gRnVuY3Rpb25DYWxsO1xubW9kdWxlLmV4cG9ydHMuRmlib25hY2NpU3RyYXRlZ3kgPSBGaWJvbmFjY2lCYWNrb2ZmU3RyYXRlZ3k7XG5tb2R1bGUuZXhwb3J0cy5FeHBvbmVudGlhbFN0cmF0ZWd5ID0gRXhwb25lbnRpYWxCYWNrb2ZmU3RyYXRlZ3k7XG5cbi8vIENvbnN0cnVjdHMgYSBGaWJvbmFjY2kgYmFja29mZi5cbm1vZHVsZS5leHBvcnRzLmZpYm9uYWNjaSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJhY2tvZmYobmV3IEZpYm9uYWNjaUJhY2tvZmZTdHJhdGVneShvcHRpb25zKSk7XG59O1xuXG4vLyBDb25zdHJ1Y3RzIGFuIGV4cG9uZW50aWFsIGJhY2tvZmYuXG5tb2R1bGUuZXhwb3J0cy5leHBvbmVudGlhbCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJhY2tvZmYobmV3IEV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5KG9wdGlvbnMpKTtcbn07XG5cbi8vIENvbnN0cnVjdHMgYSBGdW5jdGlvbkNhbGwgZm9yIHRoZSBnaXZlbiBmdW5jdGlvbiBhbmQgYXJndW1lbnRzLlxubW9kdWxlLmV4cG9ydHMuY2FsbCA9IGZ1bmN0aW9uKGZuLCB2YXJncywgY2FsbGJhY2spIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgZm4gPSBhcmdzWzBdO1xuICAgIHZhcmdzID0gYXJncy5zbGljZSgxLCBhcmdzLmxlbmd0aCAtIDEpO1xuICAgIGNhbGxiYWNrID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsKGZuLCB2YXJncywgY2FsbGJhY2spO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/backoff/index.js\n')},"./node_modules/backoff/lib/backoff.js":function(module,exports,__webpack_require__){eval("// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(/*! events */ \"./node_modules/events/events.js\");\nvar precond = __webpack_require__(/*! precond */ \"./node_modules/precond/index.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\n// A class to hold the state of a backoff operation. Accepts a backoff strategy\n// to generate the backoff delays.\nfunction Backoff(backoffStrategy) {\n events.EventEmitter.call(this);\n\n this.backoffStrategy_ = backoffStrategy;\n this.maxNumberOfRetry_ = -1;\n this.backoffNumber_ = 0;\n this.backoffDelay_ = 0;\n this.timeoutID_ = -1;\n\n this.handlers = {\n backoff: this.onBackoff_.bind(this)\n };\n}\nutil.inherits(Backoff, events.EventEmitter);\n\n// Sets a limit, greater than 0, on the maximum number of backoffs. A 'fail'\n// event will be emitted when the limit is reached.\nBackoff.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkArgument(maxNumberOfRetry > 0,\n 'Expected a maximum number of retry greater than 0 but got %s.',\n maxNumberOfRetry);\n\n this.maxNumberOfRetry_ = maxNumberOfRetry;\n};\n\n// Starts a backoff operation. Accepts an optional parameter to let the\n// listeners know why the backoff operation was started.\nBackoff.prototype.backoff = function(err) {\n precond.checkState(this.timeoutID_ === -1, 'Backoff in progress.');\n\n if (this.backoffNumber_ === this.maxNumberOfRetry_) {\n this.emit('fail', err);\n this.reset();\n } else {\n this.backoffDelay_ = this.backoffStrategy_.next();\n this.timeoutID_ = setTimeout(this.handlers.backoff, this.backoffDelay_);\n this.emit('backoff', this.backoffNumber_, this.backoffDelay_, err);\n }\n};\n\n// Handles the backoff timeout completion.\nBackoff.prototype.onBackoff_ = function() {\n this.timeoutID_ = -1;\n this.emit('ready', this.backoffNumber_, this.backoffDelay_);\n this.backoffNumber_++;\n};\n\n// Stops any backoff operation and resets the backoff delay to its inital value.\nBackoff.prototype.reset = function() {\n this.backoffNumber_ = 0;\n this.backoffStrategy_.reset();\n clearTimeout(this.timeoutID_);\n this.timeoutID_ = -1;\n};\n\nmodule.exports = Backoff;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvYmFja29mZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9iYWNrb2ZmL2xpYi9iYWNrb2ZmLmpzPzI4NjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gICAgICBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0aGlldSBUdXJjb3R0ZVxuLy8gICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbnZhciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKTtcbnZhciBwcmVjb25kID0gcmVxdWlyZSgncHJlY29uZCcpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8vIEEgY2xhc3MgdG8gaG9sZCB0aGUgc3RhdGUgb2YgYSBiYWNrb2ZmIG9wZXJhdGlvbi4gQWNjZXB0cyBhIGJhY2tvZmYgc3RyYXRlZ3lcbi8vIHRvIGdlbmVyYXRlIHRoZSBiYWNrb2ZmIGRlbGF5cy5cbmZ1bmN0aW9uIEJhY2tvZmYoYmFja29mZlN0cmF0ZWd5KSB7XG4gICAgZXZlbnRzLkV2ZW50RW1pdHRlci5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5iYWNrb2ZmU3RyYXRlZ3lfID0gYmFja29mZlN0cmF0ZWd5O1xuICAgIHRoaXMubWF4TnVtYmVyT2ZSZXRyeV8gPSAtMTtcbiAgICB0aGlzLmJhY2tvZmZOdW1iZXJfID0gMDtcbiAgICB0aGlzLmJhY2tvZmZEZWxheV8gPSAwO1xuICAgIHRoaXMudGltZW91dElEXyA9IC0xO1xuXG4gICAgdGhpcy5oYW5kbGVycyA9IHtcbiAgICAgICAgYmFja29mZjogdGhpcy5vbkJhY2tvZmZfLmJpbmQodGhpcylcbiAgICB9O1xufVxudXRpbC5pbmhlcml0cyhCYWNrb2ZmLCBldmVudHMuRXZlbnRFbWl0dGVyKTtcblxuLy8gU2V0cyBhIGxpbWl0LCBncmVhdGVyIHRoYW4gMCwgb24gdGhlIG1heGltdW0gbnVtYmVyIG9mIGJhY2tvZmZzLiBBICdmYWlsJ1xuLy8gZXZlbnQgd2lsbCBiZSBlbWl0dGVkIHdoZW4gdGhlIGxpbWl0IGlzIHJlYWNoZWQuXG5CYWNrb2ZmLnByb3RvdHlwZS5mYWlsQWZ0ZXIgPSBmdW5jdGlvbihtYXhOdW1iZXJPZlJldHJ5KSB7XG4gICAgcHJlY29uZC5jaGVja0FyZ3VtZW50KG1heE51bWJlck9mUmV0cnkgPiAwLFxuICAgICAgICAnRXhwZWN0ZWQgYSBtYXhpbXVtIG51bWJlciBvZiByZXRyeSBncmVhdGVyIHRoYW4gMCBidXQgZ290ICVzLicsXG4gICAgICAgIG1heE51bWJlck9mUmV0cnkpO1xuXG4gICAgdGhpcy5tYXhOdW1iZXJPZlJldHJ5XyA9IG1heE51bWJlck9mUmV0cnk7XG59O1xuXG4vLyBTdGFydHMgYSBiYWNrb2ZmIG9wZXJhdGlvbi4gQWNjZXB0cyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gbGV0IHRoZVxuLy8gbGlzdGVuZXJzIGtub3cgd2h5IHRoZSBiYWNrb2ZmIG9wZXJhdGlvbiB3YXMgc3RhcnRlZC5cbkJhY2tvZmYucHJvdG90eXBlLmJhY2tvZmYgPSBmdW5jdGlvbihlcnIpIHtcbiAgICBwcmVjb25kLmNoZWNrU3RhdGUodGhpcy50aW1lb3V0SURfID09PSAtMSwgJ0JhY2tvZmYgaW4gcHJvZ3Jlc3MuJyk7XG5cbiAgICBpZiAodGhpcy5iYWNrb2ZmTnVtYmVyXyA9PT0gdGhpcy5tYXhOdW1iZXJPZlJldHJ5Xykge1xuICAgICAgICB0aGlzLmVtaXQoJ2ZhaWwnLCBlcnIpO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5iYWNrb2ZmRGVsYXlfID0gdGhpcy5iYWNrb2ZmU3RyYXRlZ3lfLm5leHQoKTtcbiAgICAgICAgdGhpcy50aW1lb3V0SURfID0gc2V0VGltZW91dCh0aGlzLmhhbmRsZXJzLmJhY2tvZmYsIHRoaXMuYmFja29mZkRlbGF5Xyk7XG4gICAgICAgIHRoaXMuZW1pdCgnYmFja29mZicsIHRoaXMuYmFja29mZk51bWJlcl8sIHRoaXMuYmFja29mZkRlbGF5XywgZXJyKTtcbiAgICB9XG59O1xuXG4vLyBIYW5kbGVzIHRoZSBiYWNrb2ZmIHRpbWVvdXQgY29tcGxldGlvbi5cbkJhY2tvZmYucHJvdG90eXBlLm9uQmFja29mZl8gPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRpbWVvdXRJRF8gPSAtMTtcbiAgICB0aGlzLmVtaXQoJ3JlYWR5JywgdGhpcy5iYWNrb2ZmTnVtYmVyXywgdGhpcy5iYWNrb2ZmRGVsYXlfKTtcbiAgICB0aGlzLmJhY2tvZmZOdW1iZXJfKys7XG59O1xuXG4vLyBTdG9wcyBhbnkgYmFja29mZiBvcGVyYXRpb24gYW5kIHJlc2V0cyB0aGUgYmFja29mZiBkZWxheSB0byBpdHMgaW5pdGFsIHZhbHVlLlxuQmFja29mZi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmJhY2tvZmZOdW1iZXJfID0gMDtcbiAgICB0aGlzLmJhY2tvZmZTdHJhdGVneV8ucmVzZXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SURfKTtcbiAgICB0aGlzLnRpbWVvdXRJRF8gPSAtMTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQmFja29mZjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/backoff/lib/backoff.js\n")},"./node_modules/backoff/lib/function_call.js":function(module,exports,__webpack_require__){eval("// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(/*! events */ \"./node_modules/events/events.js\");\nvar precond = __webpack_require__(/*! precond */ \"./node_modules/precond/index.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nvar Backoff = __webpack_require__(/*! ./backoff */ \"./node_modules/backoff/lib/backoff.js\");\nvar FibonacciBackoffStrategy = __webpack_require__(/*! ./strategy/fibonacci */ \"./node_modules/backoff/lib/strategy/fibonacci.js\");\n\n// Wraps a function to be called in a backoff loop.\nfunction FunctionCall(fn, args, callback) {\n events.EventEmitter.call(this);\n\n precond.checkIsFunction(fn, 'Expected fn to be a function.');\n precond.checkIsArray(args, 'Expected args to be an array.');\n precond.checkIsFunction(callback, 'Expected callback to be a function.');\n\n this.function_ = fn;\n this.arguments_ = args;\n this.callback_ = callback;\n this.lastResult_ = [];\n this.numRetries_ = 0;\n\n this.backoff_ = null;\n this.strategy_ = null;\n this.failAfter_ = -1;\n this.retryPredicate_ = FunctionCall.DEFAULT_RETRY_PREDICATE_;\n\n this.state_ = FunctionCall.State_.PENDING;\n}\nutil.inherits(FunctionCall, events.EventEmitter);\n\n// States in which the call can be.\nFunctionCall.State_ = {\n // Call isn't started yet.\n PENDING: 0,\n // Call is in progress.\n RUNNING: 1,\n // Call completed successfully which means that either the wrapped function\n // returned successfully or the maximal number of backoffs was reached.\n COMPLETED: 2,\n // The call was aborted.\n ABORTED: 3\n};\n\n// The default retry predicate which considers any error as retriable.\nFunctionCall.DEFAULT_RETRY_PREDICATE_ = function(err) {\n return true;\n};\n\n// Checks whether the call is pending.\nFunctionCall.prototype.isPending = function() {\n return this.state_ == FunctionCall.State_.PENDING;\n};\n\n// Checks whether the call is in progress.\nFunctionCall.prototype.isRunning = function() {\n return this.state_ == FunctionCall.State_.RUNNING;\n};\n\n// Checks whether the call is completed.\nFunctionCall.prototype.isCompleted = function() {\n return this.state_ == FunctionCall.State_.COMPLETED;\n};\n\n// Checks whether the call is aborted.\nFunctionCall.prototype.isAborted = function() {\n return this.state_ == FunctionCall.State_.ABORTED;\n};\n\n// Sets the backoff strategy to use. Can only be called before the call is\n// started otherwise an exception will be thrown.\nFunctionCall.prototype.setStrategy = function(strategy) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.strategy_ = strategy;\n return this; // Return this for chaining.\n};\n\n// Sets the predicate which will be used to determine whether the errors\n// returned from the wrapped function should be retried or not, e.g. a\n// network error would be retriable while a type error would stop the\n// function call.\nFunctionCall.prototype.retryIf = function(retryPredicate) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.retryPredicate_ = retryPredicate;\n return this;\n};\n\n// Returns all intermediary results returned by the wrapped function since\n// the initial call.\nFunctionCall.prototype.getLastResult = function() {\n return this.lastResult_.concat();\n};\n\n// Returns the number of times the wrapped function call was retried.\nFunctionCall.prototype.getNumRetries = function() {\n return this.numRetries_;\n};\n\n// Sets the backoff limit.\nFunctionCall.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.failAfter_ = maxNumberOfRetry;\n return this; // Return this for chaining.\n};\n\n// Aborts the call.\nFunctionCall.prototype.abort = function() {\n if (this.isCompleted() || this.isAborted()) {\n return;\n }\n\n if (this.isRunning()) {\n this.backoff_.reset();\n }\n\n this.state_ = FunctionCall.State_.ABORTED;\n this.lastResult_ = [new Error('Backoff aborted.')];\n this.emit('abort');\n this.doCallback_();\n};\n\n// Initiates the call to the wrapped function. Accepts an optional factory\n// function used to create the backoff instance; used when testing.\nFunctionCall.prototype.start = function(backoffFactory) {\n precond.checkState(!this.isAborted(), 'FunctionCall is aborted.');\n precond.checkState(this.isPending(), 'FunctionCall already started.');\n\n var strategy = this.strategy_ || new FibonacciBackoffStrategy();\n\n this.backoff_ = backoffFactory ?\n backoffFactory(strategy) :\n new Backoff(strategy);\n\n this.backoff_.on('ready', this.doCall_.bind(this, true /* isRetry */));\n this.backoff_.on('fail', this.doCallback_.bind(this));\n this.backoff_.on('backoff', this.handleBackoff_.bind(this));\n\n if (this.failAfter_ > 0) {\n this.backoff_.failAfter(this.failAfter_);\n }\n\n this.state_ = FunctionCall.State_.RUNNING;\n this.doCall_(false /* isRetry */);\n};\n\n// Calls the wrapped function.\nFunctionCall.prototype.doCall_ = function(isRetry) {\n if (isRetry) {\n this.numRetries_++;\n }\n var eventArgs = ['call'].concat(this.arguments_);\n events.EventEmitter.prototype.emit.apply(this, eventArgs);\n var callback = this.handleFunctionCallback_.bind(this);\n this.function_.apply(null, this.arguments_.concat(callback));\n};\n\n// Calls the wrapped function's callback with the last result returned by the\n// wrapped function.\nFunctionCall.prototype.doCallback_ = function() {\n this.callback_.apply(null, this.lastResult_);\n};\n\n// Handles wrapped function's completion. This method acts as a replacement\n// for the original callback function.\nFunctionCall.prototype.handleFunctionCallback_ = function() {\n if (this.isAborted()) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments);\n this.lastResult_ = args; // Save last callback arguments.\n events.EventEmitter.prototype.emit.apply(this, ['callback'].concat(args));\n\n var err = args[0];\n if (err && this.retryPredicate_(err)) {\n this.backoff_.backoff(err);\n } else {\n this.state_ = FunctionCall.State_.COMPLETED;\n this.doCallback_();\n }\n};\n\n// Handles the backoff event by reemitting it.\nFunctionCall.prototype.handleBackoff_ = function(number, delay, err) {\n this.emit('backoff', number, delay, err);\n};\n\nmodule.exports = FunctionCall;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvZnVuY3Rpb25fY2FsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9iYWNrb2ZmL2xpYi9mdW5jdGlvbl9jYWxsLmpzPzQyYzQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gICAgICBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0aGlldSBUdXJjb3R0ZVxuLy8gICAgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbnZhciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKTtcbnZhciBwcmVjb25kID0gcmVxdWlyZSgncHJlY29uZCcpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbnZhciBCYWNrb2ZmID0gcmVxdWlyZSgnLi9iYWNrb2ZmJyk7XG52YXIgRmlib25hY2NpQmFja29mZlN0cmF0ZWd5ID0gcmVxdWlyZSgnLi9zdHJhdGVneS9maWJvbmFjY2knKTtcblxuLy8gV3JhcHMgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgaW4gYSBiYWNrb2ZmIGxvb3AuXG5mdW5jdGlvbiBGdW5jdGlvbkNhbGwoZm4sIGFyZ3MsIGNhbGxiYWNrKSB7XG4gICAgZXZlbnRzLkV2ZW50RW1pdHRlci5jYWxsKHRoaXMpO1xuXG4gICAgcHJlY29uZC5jaGVja0lzRnVuY3Rpb24oZm4sICdFeHBlY3RlZCBmbiB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIHByZWNvbmQuY2hlY2tJc0FycmF5KGFyZ3MsICdFeHBlY3RlZCBhcmdzIHRvIGJlIGFuIGFycmF5LicpO1xuICAgIHByZWNvbmQuY2hlY2tJc0Z1bmN0aW9uKGNhbGxiYWNrLCAnRXhwZWN0ZWQgY2FsbGJhY2sgdG8gYmUgYSBmdW5jdGlvbi4nKTtcblxuICAgIHRoaXMuZnVuY3Rpb25fID0gZm47XG4gICAgdGhpcy5hcmd1bWVudHNfID0gYXJncztcbiAgICB0aGlzLmNhbGxiYWNrXyA9IGNhbGxiYWNrO1xuICAgIHRoaXMubGFzdFJlc3VsdF8gPSBbXTtcbiAgICB0aGlzLm51bVJldHJpZXNfID0gMDtcblxuICAgIHRoaXMuYmFja29mZl8gPSBudWxsO1xuICAgIHRoaXMuc3RyYXRlZ3lfID0gbnVsbDtcbiAgICB0aGlzLmZhaWxBZnRlcl8gPSAtMTtcbiAgICB0aGlzLnJldHJ5UHJlZGljYXRlXyA9IEZ1bmN0aW9uQ2FsbC5ERUZBVUxUX1JFVFJZX1BSRURJQ0FURV87XG5cbiAgICB0aGlzLnN0YXRlXyA9IEZ1bmN0aW9uQ2FsbC5TdGF0ZV8uUEVORElORztcbn1cbnV0aWwuaW5oZXJpdHMoRnVuY3Rpb25DYWxsLCBldmVudHMuRXZlbnRFbWl0dGVyKTtcblxuLy8gU3RhdGVzIGluIHdoaWNoIHRoZSBjYWxsIGNhbiBiZS5cbkZ1bmN0aW9uQ2FsbC5TdGF0ZV8gPSB7XG4gICAgLy8gQ2FsbCBpc24ndCBzdGFydGVkIHlldC5cbiAgICBQRU5ESU5HOiAwLFxuICAgIC8vIENhbGwgaXMgaW4gcHJvZ3Jlc3MuXG4gICAgUlVOTklORzogMSxcbiAgICAvLyBDYWxsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgd2hpY2ggbWVhbnMgdGhhdCBlaXRoZXIgdGhlIHdyYXBwZWQgZnVuY3Rpb25cbiAgICAvLyByZXR1cm5lZCBzdWNjZXNzZnVsbHkgb3IgdGhlIG1heGltYWwgbnVtYmVyIG9mIGJhY2tvZmZzIHdhcyByZWFjaGVkLlxuICAgIENPTVBMRVRFRDogMixcbiAgICAvLyBUaGUgY2FsbCB3YXMgYWJvcnRlZC5cbiAgICBBQk9SVEVEOiAzXG59O1xuXG4vLyBUaGUgZGVmYXVsdCByZXRyeSBwcmVkaWNhdGUgd2hpY2ggY29uc2lkZXJzIGFueSBlcnJvciBhcyByZXRyaWFibGUuXG5GdW5jdGlvbkNhbGwuREVGQVVMVF9SRVRSWV9QUkVESUNBVEVfID0gZnVuY3Rpb24oZXJyKSB7XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGNhbGwgaXMgcGVuZGluZy5cbkZ1bmN0aW9uQ2FsbC5wcm90b3R5cGUuaXNQZW5kaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVfID09IEZ1bmN0aW9uQ2FsbC5TdGF0ZV8uUEVORElORztcbn07XG5cbi8vIENoZWNrcyB3aGV0aGVyIHRoZSBjYWxsIGlzIGluIHByb2dyZXNzLlxuRnVuY3Rpb25DYWxsLnByb3RvdHlwZS5pc1J1bm5pbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZV8gPT0gRnVuY3Rpb25DYWxsLlN0YXRlXy5SVU5OSU5HO1xufTtcblxuLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGNhbGwgaXMgY29tcGxldGVkLlxuRnVuY3Rpb25DYWxsLnByb3RvdHlwZS5pc0NvbXBsZXRlZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlXyA9PSBGdW5jdGlvbkNhbGwuU3RhdGVfLkNPTVBMRVRFRDtcbn07XG5cbi8vIENoZWNrcyB3aGV0aGVyIHRoZSBjYWxsIGlzIGFib3J0ZWQuXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLmlzQWJvcnRlZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlXyA9PSBGdW5jdGlvbkNhbGwuU3RhdGVfLkFCT1JURUQ7XG59O1xuXG4vLyBTZXRzIHRoZSBiYWNrb2ZmIHN0cmF0ZWd5IHRvIHVzZS4gQ2FuIG9ubHkgYmUgY2FsbGVkIGJlZm9yZSB0aGUgY2FsbCBpc1xuLy8gc3RhcnRlZCBvdGhlcndpc2UgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxuRnVuY3Rpb25DYWxsLnByb3RvdHlwZS5zZXRTdHJhdGVneSA9IGZ1bmN0aW9uKHN0cmF0ZWd5KSB7XG4gICAgcHJlY29uZC5jaGVja1N0YXRlKHRoaXMuaXNQZW5kaW5nKCksICdGdW5jdGlvbkNhbGwgaW4gcHJvZ3Jlc3MuJyk7XG4gICAgdGhpcy5zdHJhdGVneV8gPSBzdHJhdGVneTtcbiAgICByZXR1cm4gdGhpczsgLy8gUmV0dXJuIHRoaXMgZm9yIGNoYWluaW5nLlxufTtcblxuLy8gU2V0cyB0aGUgcHJlZGljYXRlIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZXJyb3JzXG4vLyByZXR1cm5lZCBmcm9tIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIHNob3VsZCBiZSByZXRyaWVkIG9yIG5vdCwgZS5nLiBhXG4vLyBuZXR3b3JrIGVycm9yIHdvdWxkIGJlIHJldHJpYWJsZSB3aGlsZSBhIHR5cGUgZXJyb3Igd291bGQgc3RvcCB0aGVcbi8vIGZ1bmN0aW9uIGNhbGwuXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLnJldHJ5SWYgPSBmdW5jdGlvbihyZXRyeVByZWRpY2F0ZSkge1xuICAgIHByZWNvbmQuY2hlY2tTdGF0ZSh0aGlzLmlzUGVuZGluZygpLCAnRnVuY3Rpb25DYWxsIGluIHByb2dyZXNzLicpO1xuICAgIHRoaXMucmV0cnlQcmVkaWNhdGVfID0gcmV0cnlQcmVkaWNhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBSZXR1cm5zIGFsbCBpbnRlcm1lZGlhcnkgcmVzdWx0cyByZXR1cm5lZCBieSB0aGUgd3JhcHBlZCBmdW5jdGlvbiBzaW5jZVxuLy8gdGhlIGluaXRpYWwgY2FsbC5cbkZ1bmN0aW9uQ2FsbC5wcm90b3R5cGUuZ2V0TGFzdFJlc3VsdCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmxhc3RSZXN1bHRfLmNvbmNhdCgpO1xufTtcblxuLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIGNhbGwgd2FzIHJldHJpZWQuXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLmdldE51bVJldHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5udW1SZXRyaWVzXztcbn07XG5cbi8vIFNldHMgdGhlIGJhY2tvZmYgbGltaXQuXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLmZhaWxBZnRlciA9IGZ1bmN0aW9uKG1heE51bWJlck9mUmV0cnkpIHtcbiAgICBwcmVjb25kLmNoZWNrU3RhdGUodGhpcy5pc1BlbmRpbmcoKSwgJ0Z1bmN0aW9uQ2FsbCBpbiBwcm9ncmVzcy4nKTtcbiAgICB0aGlzLmZhaWxBZnRlcl8gPSBtYXhOdW1iZXJPZlJldHJ5O1xuICAgIHJldHVybiB0aGlzOyAvLyBSZXR1cm4gdGhpcyBmb3IgY2hhaW5pbmcuXG59O1xuXG4vLyBBYm9ydHMgdGhlIGNhbGwuXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNDb21wbGV0ZWQoKSB8fCB0aGlzLmlzQWJvcnRlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSdW5uaW5nKCkpIHtcbiAgICAgICAgdGhpcy5iYWNrb2ZmXy5yZXNldCgpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGVfID0gRnVuY3Rpb25DYWxsLlN0YXRlXy5BQk9SVEVEO1xuICAgIHRoaXMubGFzdFJlc3VsdF8gPSBbbmV3IEVycm9yKCdCYWNrb2ZmIGFib3J0ZWQuJyldO1xuICAgIHRoaXMuZW1pdCgnYWJvcnQnKTtcbiAgICB0aGlzLmRvQ2FsbGJhY2tfKCk7XG59O1xuXG4vLyBJbml0aWF0ZXMgdGhlIGNhbGwgdG8gdGhlIHdyYXBwZWQgZnVuY3Rpb24uIEFjY2VwdHMgYW4gb3B0aW9uYWwgZmFjdG9yeVxuLy8gZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgdGhlIGJhY2tvZmYgaW5zdGFuY2U7IHVzZWQgd2hlbiB0ZXN0aW5nLlxuRnVuY3Rpb25DYWxsLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKGJhY2tvZmZGYWN0b3J5KSB7XG4gICAgcHJlY29uZC5jaGVja1N0YXRlKCF0aGlzLmlzQWJvcnRlZCgpLCAnRnVuY3Rpb25DYWxsIGlzIGFib3J0ZWQuJyk7XG4gICAgcHJlY29uZC5jaGVja1N0YXRlKHRoaXMuaXNQZW5kaW5nKCksICdGdW5jdGlvbkNhbGwgYWxyZWFkeSBzdGFydGVkLicpO1xuXG4gICAgdmFyIHN0cmF0ZWd5ID0gdGhpcy5zdHJhdGVneV8gfHwgbmV3IEZpYm9uYWNjaUJhY2tvZmZTdHJhdGVneSgpO1xuXG4gICAgdGhpcy5iYWNrb2ZmXyA9IGJhY2tvZmZGYWN0b3J5ID9cbiAgICAgICAgYmFja29mZkZhY3Rvcnkoc3RyYXRlZ3kpIDpcbiAgICAgICAgbmV3IEJhY2tvZmYoc3RyYXRlZ3kpO1xuXG4gICAgdGhpcy5iYWNrb2ZmXy5vbigncmVhZHknLCB0aGlzLmRvQ2FsbF8uYmluZCh0aGlzLCB0cnVlIC8qIGlzUmV0cnkgKi8pKTtcbiAgICB0aGlzLmJhY2tvZmZfLm9uKCdmYWlsJywgdGhpcy5kb0NhbGxiYWNrXy5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmJhY2tvZmZfLm9uKCdiYWNrb2ZmJywgdGhpcy5oYW5kbGVCYWNrb2ZmXy5iaW5kKHRoaXMpKTtcblxuICAgIGlmICh0aGlzLmZhaWxBZnRlcl8gPiAwKSB7XG4gICAgICAgIHRoaXMuYmFja29mZl8uZmFpbEFmdGVyKHRoaXMuZmFpbEFmdGVyXyk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZV8gPSBGdW5jdGlvbkNhbGwuU3RhdGVfLlJVTk5JTkc7XG4gICAgdGhpcy5kb0NhbGxfKGZhbHNlIC8qIGlzUmV0cnkgKi8pO1xufTtcblxuLy8gQ2FsbHMgdGhlIHdyYXBwZWQgZnVuY3Rpb24uXG5GdW5jdGlvbkNhbGwucHJvdG90eXBlLmRvQ2FsbF8gPSBmdW5jdGlvbihpc1JldHJ5KSB7XG4gICAgaWYgKGlzUmV0cnkpIHtcbiAgICAgICAgdGhpcy5udW1SZXRyaWVzXysrO1xuICAgIH1cbiAgICB2YXIgZXZlbnRBcmdzID0gWydjYWxsJ10uY29uY2F0KHRoaXMuYXJndW1lbnRzXyk7XG4gICAgZXZlbnRzLkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdC5hcHBseSh0aGlzLCBldmVudEFyZ3MpO1xuICAgIHZhciBjYWxsYmFjayA9IHRoaXMuaGFuZGxlRnVuY3Rpb25DYWxsYmFja18uYmluZCh0aGlzKTtcbiAgICB0aGlzLmZ1bmN0aW9uXy5hcHBseShudWxsLCB0aGlzLmFyZ3VtZW50c18uY29uY2F0KGNhbGxiYWNrKSk7XG59O1xuXG4vLyBDYWxscyB0aGUgd3JhcHBlZCBmdW5jdGlvbidzIGNhbGxiYWNrIHdpdGggdGhlIGxhc3QgcmVzdWx0IHJldHVybmVkIGJ5IHRoZVxuLy8gd3JhcHBlZCBmdW5jdGlvbi5cbkZ1bmN0aW9uQ2FsbC5wcm90b3R5cGUuZG9DYWxsYmFja18gPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmNhbGxiYWNrXy5hcHBseShudWxsLCB0aGlzLmxhc3RSZXN1bHRfKTtcbn07XG5cbi8vIEhhbmRsZXMgd3JhcHBlZCBmdW5jdGlvbidzIGNvbXBsZXRpb24uIFRoaXMgbWV0aG9kIGFjdHMgYXMgYSByZXBsYWNlbWVudFxuLy8gZm9yIHRoZSBvcmlnaW5hbCBjYWxsYmFjayBmdW5jdGlvbi5cbkZ1bmN0aW9uQ2FsbC5wcm90b3R5cGUuaGFuZGxlRnVuY3Rpb25DYWxsYmFja18gPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc0Fib3J0ZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIHRoaXMubGFzdFJlc3VsdF8gPSBhcmdzOyAvLyBTYXZlIGxhc3QgY2FsbGJhY2sgYXJndW1lbnRzLlxuICAgIGV2ZW50cy5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQuYXBwbHkodGhpcywgWydjYWxsYmFjayddLmNvbmNhdChhcmdzKSk7XG5cbiAgICB2YXIgZXJyID0gYXJnc1swXTtcbiAgICBpZiAoZXJyICYmIHRoaXMucmV0cnlQcmVkaWNhdGVfKGVycikpIHtcbiAgICAgICAgdGhpcy5iYWNrb2ZmXy5iYWNrb2ZmKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZV8gPSBGdW5jdGlvbkNhbGwuU3RhdGVfLkNPTVBMRVRFRDtcbiAgICAgICAgdGhpcy5kb0NhbGxiYWNrXygpO1xuICAgIH1cbn07XG5cbi8vIEhhbmRsZXMgdGhlIGJhY2tvZmYgZXZlbnQgYnkgcmVlbWl0dGluZyBpdC5cbkZ1bmN0aW9uQ2FsbC5wcm90b3R5cGUuaGFuZGxlQmFja29mZl8gPSBmdW5jdGlvbihudW1iZXIsIGRlbGF5LCBlcnIpIHtcbiAgICB0aGlzLmVtaXQoJ2JhY2tvZmYnLCBudW1iZXIsIGRlbGF5LCBlcnIpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbkNhbGw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/backoff/lib/function_call.js\n")},"./node_modules/backoff/lib/strategy/exponential.js":function(module,exports,__webpack_require__){eval('// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = __webpack_require__(/*! util */ "./node_modules/util/util.js");\nvar precond = __webpack_require__(/*! precond */ "./node_modules/precond/index.js");\n\nvar BackoffStrategy = __webpack_require__(/*! ./strategy */ "./node_modules/backoff/lib/strategy/strategy.js");\n\n// Exponential backoff strategy.\nfunction ExponentialBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.factor_ = ExponentialBackoffStrategy.DEFAULT_FACTOR;\n\n if (options && options.factor !== undefined) {\n precond.checkArgument(options.factor > 1,\n \'Exponential factor should be greater than 1 but got %s.\',\n options.factor);\n this.factor_ = options.factor;\n }\n}\nutil.inherits(ExponentialBackoffStrategy, BackoffStrategy);\n\n// Default multiplication factor used to compute the next backoff delay from\n// the current one. The value can be overridden by passing a custom factor as\n// part of the options.\nExponentialBackoffStrategy.DEFAULT_FACTOR = 2;\n\nExponentialBackoffStrategy.prototype.next_ = function() {\n this.backoffDelay_ = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ = this.backoffDelay_ * this.factor_;\n return this.backoffDelay_;\n};\n\nExponentialBackoffStrategy.prototype.reset_ = function() {\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n};\n\nmodule.exports = ExponentialBackoffStrategy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvc3RyYXRlZ3kvZXhwb25lbnRpYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvc3RyYXRlZ3kvZXhwb25lbnRpYWwuanM/ZjNkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgIENvcHlyaWdodCAoYykgMjAxMiBNYXRoaWV1IFR1cmNvdHRlXG4vLyAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgcHJlY29uZCA9IHJlcXVpcmUoJ3ByZWNvbmQnKTtcblxudmFyIEJhY2tvZmZTdHJhdGVneSA9IHJlcXVpcmUoJy4vc3RyYXRlZ3knKTtcblxuLy8gRXhwb25lbnRpYWwgYmFja29mZiBzdHJhdGVneS5cbmZ1bmN0aW9uIEV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5KG9wdGlvbnMpIHtcbiAgICBCYWNrb2ZmU3RyYXRlZ3kuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLmJhY2tvZmZEZWxheV8gPSAwO1xuICAgIHRoaXMubmV4dEJhY2tvZmZEZWxheV8gPSB0aGlzLmdldEluaXRpYWxEZWxheSgpO1xuICAgIHRoaXMuZmFjdG9yXyA9IEV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5LkRFRkFVTFRfRkFDVE9SO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5mYWN0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcmVjb25kLmNoZWNrQXJndW1lbnQob3B0aW9ucy5mYWN0b3IgPiAxLFxuICAgICAgICAgICAgJ0V4cG9uZW50aWFsIGZhY3RvciBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEgYnV0IGdvdCAlcy4nLFxuICAgICAgICAgICAgb3B0aW9ucy5mYWN0b3IpO1xuICAgICAgICB0aGlzLmZhY3Rvcl8gPSBvcHRpb25zLmZhY3RvcjtcbiAgICB9XG59XG51dGlsLmluaGVyaXRzKEV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5LCBCYWNrb2ZmU3RyYXRlZ3kpO1xuXG4vLyBEZWZhdWx0IG11bHRpcGxpY2F0aW9uIGZhY3RvciB1c2VkIHRvIGNvbXB1dGUgdGhlIG5leHQgYmFja29mZiBkZWxheSBmcm9tXG4vLyB0aGUgY3VycmVudCBvbmUuIFRoZSB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzaW5nIGEgY3VzdG9tIGZhY3RvciBhc1xuLy8gcGFydCBvZiB0aGUgb3B0aW9ucy5cbkV4cG9uZW50aWFsQmFja29mZlN0cmF0ZWd5LkRFRkFVTFRfRkFDVE9SID0gMjtcblxuRXhwb25lbnRpYWxCYWNrb2ZmU3RyYXRlZ3kucHJvdG90eXBlLm5leHRfID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5iYWNrb2ZmRGVsYXlfID0gTWF0aC5taW4odGhpcy5uZXh0QmFja29mZkRlbGF5XywgdGhpcy5nZXRNYXhEZWxheSgpKTtcbiAgICB0aGlzLm5leHRCYWNrb2ZmRGVsYXlfID0gdGhpcy5iYWNrb2ZmRGVsYXlfICogdGhpcy5mYWN0b3JfO1xuICAgIHJldHVybiB0aGlzLmJhY2tvZmZEZWxheV87XG59O1xuXG5FeHBvbmVudGlhbEJhY2tvZmZTdHJhdGVneS5wcm90b3R5cGUucmVzZXRfID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5iYWNrb2ZmRGVsYXlfID0gMDtcbiAgICB0aGlzLm5leHRCYWNrb2ZmRGVsYXlfID0gdGhpcy5nZXRJbml0aWFsRGVsYXkoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXhwb25lbnRpYWxCYWNrb2ZmU3RyYXRlZ3k7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/backoff/lib/strategy/exponential.js\n')},"./node_modules/backoff/lib/strategy/fibonacci.js":function(module,exports,__webpack_require__){eval('// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = __webpack_require__(/*! util */ "./node_modules/util/util.js");\n\nvar BackoffStrategy = __webpack_require__(/*! ./strategy */ "./node_modules/backoff/lib/strategy/strategy.js");\n\n// Fibonacci backoff strategy.\nfunction FibonacciBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n}\nutil.inherits(FibonacciBackoffStrategy, BackoffStrategy);\n\nFibonacciBackoffStrategy.prototype.next_ = function() {\n var backoffDelay = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ += this.backoffDelay_;\n this.backoffDelay_ = backoffDelay;\n return backoffDelay;\n};\n\nFibonacciBackoffStrategy.prototype.reset_ = function() {\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.backoffDelay_ = 0;\n};\n\nmodule.exports = FibonacciBackoffStrategy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvc3RyYXRlZ3kvZmlib25hY2NpLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2JhY2tvZmYvbGliL3N0cmF0ZWd5L2ZpYm9uYWNjaS5qcz8xY2VhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vICAgICAgQ29weXJpZ2h0IChjKSAyMDEyIE1hdGhpZXUgVHVyY290dGVcbi8vICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxudmFyIEJhY2tvZmZTdHJhdGVneSA9IHJlcXVpcmUoJy4vc3RyYXRlZ3knKTtcblxuLy8gRmlib25hY2NpIGJhY2tvZmYgc3RyYXRlZ3kuXG5mdW5jdGlvbiBGaWJvbmFjY2lCYWNrb2ZmU3RyYXRlZ3kob3B0aW9ucykge1xuICAgIEJhY2tvZmZTdHJhdGVneS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuYmFja29mZkRlbGF5XyA9IDA7XG4gICAgdGhpcy5uZXh0QmFja29mZkRlbGF5XyA9IHRoaXMuZ2V0SW5pdGlhbERlbGF5KCk7XG59XG51dGlsLmluaGVyaXRzKEZpYm9uYWNjaUJhY2tvZmZTdHJhdGVneSwgQmFja29mZlN0cmF0ZWd5KTtcblxuRmlib25hY2NpQmFja29mZlN0cmF0ZWd5LnByb3RvdHlwZS5uZXh0XyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBiYWNrb2ZmRGVsYXkgPSBNYXRoLm1pbih0aGlzLm5leHRCYWNrb2ZmRGVsYXlfLCB0aGlzLmdldE1heERlbGF5KCkpO1xuICAgIHRoaXMubmV4dEJhY2tvZmZEZWxheV8gKz0gdGhpcy5iYWNrb2ZmRGVsYXlfO1xuICAgIHRoaXMuYmFja29mZkRlbGF5XyA9IGJhY2tvZmZEZWxheTtcbiAgICByZXR1cm4gYmFja29mZkRlbGF5O1xufTtcblxuRmlib25hY2NpQmFja29mZlN0cmF0ZWd5LnByb3RvdHlwZS5yZXNldF8gPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLm5leHRCYWNrb2ZmRGVsYXlfID0gdGhpcy5nZXRJbml0aWFsRGVsYXkoKTtcbiAgICB0aGlzLmJhY2tvZmZEZWxheV8gPSAwO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGaWJvbmFjY2lCYWNrb2ZmU3RyYXRlZ3k7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/backoff/lib/strategy/fibonacci.js\n')},"./node_modules/backoff/lib/strategy/strategy.js":function(module,exports,__webpack_require__){eval("// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(/*! events */ \"./node_modules/events/events.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nfunction isDef(value) {\n return value !== undefined && value !== null;\n}\n\n// Abstract class defining the skeleton for the backoff strategies. Accepts an\n// object holding the options for the backoff strategy:\n//\n// * `randomisationFactor`: The randomisation factor which must be between 0\n// and 1 where 1 equates to a randomization factor of 100% and 0 to no\n// randomization.\n// * `initialDelay`: The backoff initial delay in milliseconds.\n// * `maxDelay`: The backoff maximal delay in milliseconds.\nfunction BackoffStrategy(options) {\n options = options || {};\n\n if (isDef(options.initialDelay) && options.initialDelay < 1) {\n throw new Error('The initial timeout must be greater than 0.');\n } else if (isDef(options.maxDelay) && options.maxDelay < 1) {\n throw new Error('The maximal timeout must be greater than 0.');\n }\n\n this.initialDelay_ = options.initialDelay || 100;\n this.maxDelay_ = options.maxDelay || 10000;\n\n if (this.maxDelay_ <= this.initialDelay_) {\n throw new Error('The maximal backoff delay must be ' +\n 'greater than the initial backoff delay.');\n }\n\n if (isDef(options.randomisationFactor) &&\n (options.randomisationFactor < 0 || options.randomisationFactor > 1)) {\n throw new Error('The randomisation factor must be between 0 and 1.');\n }\n\n this.randomisationFactor_ = options.randomisationFactor || 0;\n}\n\n// Gets the maximal backoff delay.\nBackoffStrategy.prototype.getMaxDelay = function() {\n return this.maxDelay_;\n};\n\n// Gets the initial backoff delay.\nBackoffStrategy.prototype.getInitialDelay = function() {\n return this.initialDelay_;\n};\n\n// Template method that computes and returns the next backoff delay in\n// milliseconds.\nBackoffStrategy.prototype.next = function() {\n var backoffDelay = this.next_();\n var randomisationMultiple = 1 + Math.random() * this.randomisationFactor_;\n var randomizedDelay = Math.round(backoffDelay * randomisationMultiple);\n return randomizedDelay;\n};\n\n// Computes and returns the next backoff delay. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.next_ = function() {\n throw new Error('BackoffStrategy.next_() unimplemented.');\n};\n\n// Template method that resets the backoff delay to its initial value.\nBackoffStrategy.prototype.reset = function() {\n this.reset_();\n};\n\n// Resets the backoff delay to its initial value. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.reset_ = function() {\n throw new Error('BackoffStrategy.reset_() unimplemented.');\n};\n\nmodule.exports = BackoffStrategy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvc3RyYXRlZ3kvc3RyYXRlZ3kuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYmFja29mZi9saWIvc3RyYXRlZ3kvc3RyYXRlZ3kuanM/OTEzOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgIENvcHlyaWdodCAoYykgMjAxMiBNYXRoaWV1IFR1cmNvdHRlXG4vLyAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cblxudmFyIGV2ZW50cyA9IHJlcXVpcmUoJ2V2ZW50cycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbmZ1bmN0aW9uIGlzRGVmKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG59XG5cbi8vIEFic3RyYWN0IGNsYXNzIGRlZmluaW5nIHRoZSBza2VsZXRvbiBmb3IgdGhlIGJhY2tvZmYgc3RyYXRlZ2llcy4gQWNjZXB0cyBhblxuLy8gb2JqZWN0IGhvbGRpbmcgdGhlIG9wdGlvbnMgZm9yIHRoZSBiYWNrb2ZmIHN0cmF0ZWd5OlxuLy9cbi8vICAqIGByYW5kb21pc2F0aW9uRmFjdG9yYDogVGhlIHJhbmRvbWlzYXRpb24gZmFjdG9yIHdoaWNoIG11c3QgYmUgYmV0d2VlbiAwXG4vLyAgICAgYW5kIDEgd2hlcmUgMSBlcXVhdGVzIHRvIGEgcmFuZG9taXphdGlvbiBmYWN0b3Igb2YgMTAwJSBhbmQgMCB0byBub1xuLy8gICAgIHJhbmRvbWl6YXRpb24uXG4vLyAgKiBgaW5pdGlhbERlbGF5YDogVGhlIGJhY2tvZmYgaW5pdGlhbCBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4vLyAgKiBgbWF4RGVsYXlgOiBUaGUgYmFja29mZiBtYXhpbWFsIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbmZ1bmN0aW9uIEJhY2tvZmZTdHJhdGVneShvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICBpZiAoaXNEZWYob3B0aW9ucy5pbml0aWFsRGVsYXkpICYmIG9wdGlvbnMuaW5pdGlhbERlbGF5IDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpbml0aWFsIHRpbWVvdXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4nKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVmKG9wdGlvbnMubWF4RGVsYXkpICYmIG9wdGlvbnMubWF4RGVsYXkgPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIG1heGltYWwgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLicpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbERlbGF5XyA9IG9wdGlvbnMuaW5pdGlhbERlbGF5IHx8IDEwMDtcbiAgICB0aGlzLm1heERlbGF5XyA9IG9wdGlvbnMubWF4RGVsYXkgfHwgMTAwMDA7XG5cbiAgICBpZiAodGhpcy5tYXhEZWxheV8gPD0gdGhpcy5pbml0aWFsRGVsYXlfKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIG1heGltYWwgYmFja29mZiBkZWxheSBtdXN0IGJlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyZWF0ZXIgdGhhbiB0aGUgaW5pdGlhbCBiYWNrb2ZmIGRlbGF5LicpO1xuICAgIH1cblxuICAgIGlmIChpc0RlZihvcHRpb25zLnJhbmRvbWlzYXRpb25GYWN0b3IpICYmXG4gICAgICAgIChvcHRpb25zLnJhbmRvbWlzYXRpb25GYWN0b3IgPCAwIHx8IG9wdGlvbnMucmFuZG9taXNhdGlvbkZhY3RvciA+IDEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHJhbmRvbWlzYXRpb24gZmFjdG9yIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLicpO1xuICAgIH1cblxuICAgIHRoaXMucmFuZG9taXNhdGlvbkZhY3Rvcl8gPSBvcHRpb25zLnJhbmRvbWlzYXRpb25GYWN0b3IgfHwgMDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW1hbCBiYWNrb2ZmIGRlbGF5LlxuQmFja29mZlN0cmF0ZWd5LnByb3RvdHlwZS5nZXRNYXhEZWxheSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm1heERlbGF5Xztcbn07XG5cbi8vIEdldHMgdGhlIGluaXRpYWwgYmFja29mZiBkZWxheS5cbkJhY2tvZmZTdHJhdGVneS5wcm90b3R5cGUuZ2V0SW5pdGlhbERlbGF5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbERlbGF5Xztcbn07XG5cbi8vIFRlbXBsYXRlIG1ldGhvZCB0aGF0IGNvbXB1dGVzIGFuZCByZXR1cm5zIHRoZSBuZXh0IGJhY2tvZmYgZGVsYXkgaW5cbi8vIG1pbGxpc2Vjb25kcy5cbkJhY2tvZmZTdHJhdGVneS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBiYWNrb2ZmRGVsYXkgPSB0aGlzLm5leHRfKCk7XG4gICAgdmFyIHJhbmRvbWlzYXRpb25NdWx0aXBsZSA9IDEgKyBNYXRoLnJhbmRvbSgpICogdGhpcy5yYW5kb21pc2F0aW9uRmFjdG9yXztcbiAgICB2YXIgcmFuZG9taXplZERlbGF5ID0gTWF0aC5yb3VuZChiYWNrb2ZmRGVsYXkgKiByYW5kb21pc2F0aW9uTXVsdGlwbGUpO1xuICAgIHJldHVybiByYW5kb21pemVkRGVsYXk7XG59O1xuXG4vLyBDb21wdXRlcyBhbmQgcmV0dXJucyB0aGUgbmV4dCBiYWNrb2ZmIGRlbGF5LiBJbnRlbmRlZCB0byBiZSBvdmVycmlkZGVuIGJ5XG4vLyBzdWJjbGFzc2VzLlxuQmFja29mZlN0cmF0ZWd5LnByb3RvdHlwZS5uZXh0XyA9IGZ1bmN0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQmFja29mZlN0cmF0ZWd5Lm5leHRfKCkgdW5pbXBsZW1lbnRlZC4nKTtcbn07XG5cbi8vIFRlbXBsYXRlIG1ldGhvZCB0aGF0IHJlc2V0cyB0aGUgYmFja29mZiBkZWxheSB0byBpdHMgaW5pdGlhbCB2YWx1ZS5cbkJhY2tvZmZTdHJhdGVneS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlc2V0XygpO1xufTtcblxuLy8gUmVzZXRzIHRoZSBiYWNrb2ZmIGRlbGF5IHRvIGl0cyBpbml0aWFsIHZhbHVlLiBJbnRlbmRlZCB0byBiZSBvdmVycmlkZGVuIGJ5XG4vLyBzdWJjbGFzc2VzLlxuQmFja29mZlN0cmF0ZWd5LnByb3RvdHlwZS5yZXNldF8gPSBmdW5jdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JhY2tvZmZTdHJhdGVneS5yZXNldF8oKSB1bmltcGxlbWVudGVkLicpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBCYWNrb2ZmU3RyYXRlZ3k7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/backoff/lib/strategy/strategy.js\n")},"./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js":function(module,exports){eval('/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(chars){\n "use strict";\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = "";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + "=";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + "==";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === "=") {\n bufferLength--;\n if (base64[base64.length - 2] === "=") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = chars.indexOf(base64[i]);\n encoded2 = chars.indexOf(base64[i+1]);\n encoded3 = chars.indexOf(base64[i+2]);\n encoded4 = chars.indexOf(base64[i+3]);\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFzZTY0LWFycmF5YnVmZmVyL2xpYi9iYXNlNjQtYXJyYXlidWZmZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvYmFzZTY0LWFycmF5YnVmZmVyL2xpYi9iYXNlNjQtYXJyYXlidWZmZXIuanM/ODM5MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogYmFzZTY0LWFycmF5YnVmZmVyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmlrbGFzdmgvYmFzZTY0LWFycmF5YnVmZmVyXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIE5pa2xhcyB2b24gSGVydHplblxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG4oZnVuY3Rpb24oY2hhcnMpe1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBleHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uKGFycmF5YnVmZmVyKSB7XG4gICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLFxuICAgIGksIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gXCJcIjtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrPTMpIHtcbiAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpXSA+PiAyXTtcbiAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTtcbiAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2kgKyAxXSAmIDE1KSA8PCAyKSB8IChieXRlc1tpICsgMl0gPj4gNildO1xuICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kgKyAyXSAmIDYzXTtcbiAgICB9XG5cbiAgICBpZiAoKGxlbiAlIDMpID09PSAyKSB7XG4gICAgICBiYXNlNjQgPSBiYXNlNjQuc3Vic3RyaW5nKDAsIGJhc2U2NC5sZW5ndGggLSAxKSArIFwiPVwiO1xuICAgIH0gZWxzZSBpZiAobGVuICUgMyA9PT0gMSkge1xuICAgICAgYmFzZTY0ID0gYmFzZTY0LnN1YnN0cmluZygwLCBiYXNlNjQubGVuZ3RoIC0gMikgKyBcIj09XCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2U2NDtcbiAgfTtcblxuICBleHBvcnRzLmRlY29kZSA9ICBmdW5jdGlvbihiYXNlNjQpIHtcbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gYmFzZTY0Lmxlbmd0aCAqIDAuNzUsXG4gICAgbGVuID0gYmFzZTY0Lmxlbmd0aCwgaSwgcCA9IDAsXG4gICAgZW5jb2RlZDEsIGVuY29kZWQyLCBlbmNvZGVkMywgZW5jb2RlZDQ7XG5cbiAgICBpZiAoYmFzZTY0W2Jhc2U2NC5sZW5ndGggLSAxXSA9PT0gXCI9XCIpIHtcbiAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgaWYgKGJhc2U2NFtiYXNlNjQubGVuZ3RoIC0gMl0gPT09IFwiPVwiKSB7XG4gICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhcnJheWJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXJMZW5ndGgpLFxuICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSs9NCkge1xuICAgICAgZW5jb2RlZDEgPSBjaGFycy5pbmRleE9mKGJhc2U2NFtpXSk7XG4gICAgICBlbmNvZGVkMiA9IGNoYXJzLmluZGV4T2YoYmFzZTY0W2krMV0pO1xuICAgICAgZW5jb2RlZDMgPSBjaGFycy5pbmRleE9mKGJhc2U2NFtpKzJdKTtcbiAgICAgIGVuY29kZWQ0ID0gY2hhcnMuaW5kZXhPZihiYXNlNjRbaSszXSk7XG5cbiAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDEgPDwgMikgfCAoZW5jb2RlZDIgPj4gNCk7XG4gICAgICBieXRlc1twKytdID0gKChlbmNvZGVkMiAmIDE1KSA8PCA0KSB8IChlbmNvZGVkMyA+PiAyKTtcbiAgICAgIGJ5dGVzW3ArK10gPSAoKGVuY29kZWQzICYgMykgPDwgNikgfCAoZW5jb2RlZDQgJiA2Myk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5YnVmZmVyO1xuICB9O1xufSkoXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\n')},"./node_modules/base64-js/index.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcz8xZmI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/base64-js/index.js\n")},"./node_modules/blob/index.js":function(module,exports){eval("/**\r\n * Create a blob builder even when vendor prefixes exist\r\n */\r\n\r\nvar BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\r\n typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :\r\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\r\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : \r\n false;\r\n\r\n/**\r\n * Check if Blob constructor is supported\r\n */\r\n\r\nvar blobSupported = (function() {\r\n try {\r\n var a = new Blob(['hi']);\r\n return a.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if Blob constructor supports ArrayBufferViews\r\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\r\n */\r\n\r\nvar blobSupportsArrayBufferView = blobSupported && (function() {\r\n try {\r\n var b = new Blob([new Uint8Array([1,2])]);\r\n return b.size === 2;\r\n } catch(e) {\r\n return false;\r\n }\r\n})();\r\n\r\n/**\r\n * Check if BlobBuilder is supported\r\n */\r\n\r\nvar blobBuilderSupported = BlobBuilder\r\n && BlobBuilder.prototype.append\r\n && BlobBuilder.prototype.getBlob;\r\n\r\n/**\r\n * Helper function that maps ArrayBufferViews to ArrayBuffers\r\n * Used by BlobBuilder constructor and old browsers that didn't\r\n * support it in the Blob constructor.\r\n */\r\n\r\nfunction mapArrayBufferViews(ary) {\r\n return ary.map(function(chunk) {\r\n if (chunk.buffer instanceof ArrayBuffer) {\r\n var buf = chunk.buffer;\r\n\r\n // if this is a subarray, make a copy so we only\r\n // include the subarray region from the underlying buffer\r\n if (chunk.byteLength !== buf.byteLength) {\r\n var copy = new Uint8Array(chunk.byteLength);\r\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\r\n buf = copy.buffer;\r\n }\r\n\r\n return buf;\r\n }\r\n\r\n return chunk;\r\n });\r\n}\r\n\r\nfunction BlobBuilderConstructor(ary, options) {\r\n options = options || {};\r\n\r\n var bb = new BlobBuilder();\r\n mapArrayBufferViews(ary).forEach(function(part) {\r\n bb.append(part);\r\n });\r\n\r\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\r\n};\r\n\r\nfunction BlobConstructor(ary, options) {\r\n return new Blob(mapArrayBufferViews(ary), options || {});\r\n};\r\n\r\nif (typeof Blob !== 'undefined') {\r\n BlobBuilderConstructor.prototype = Blob.prototype;\r\n BlobConstructor.prototype = Blob.prototype;\r\n}\r\n\r\nmodule.exports = (function() {\r\n if (blobSupported) {\r\n return blobSupportsArrayBufferView ? Blob : BlobConstructor;\r\n } else if (blobBuilderSupported) {\r\n return BlobBuilderConstructor;\r\n } else {\r\n return undefined;\r\n }\r\n})();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmxvYi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9ibG9iL2luZGV4LmpzP2Q3ODAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZSBhIGJsb2IgYnVpbGRlciBldmVuIHdoZW4gdmVuZG9yIHByZWZpeGVzIGV4aXN0XHJcbiAqL1xyXG5cclxudmFyIEJsb2JCdWlsZGVyID0gdHlwZW9mIEJsb2JCdWlsZGVyICE9PSAndW5kZWZpbmVkJyA/IEJsb2JCdWlsZGVyIDpcclxuICB0eXBlb2YgV2ViS2l0QmxvYkJ1aWxkZXIgIT09ICd1bmRlZmluZWQnID8gV2ViS2l0QmxvYkJ1aWxkZXIgOlxyXG4gIHR5cGVvZiBNU0Jsb2JCdWlsZGVyICE9PSAndW5kZWZpbmVkJyA/IE1TQmxvYkJ1aWxkZXIgOlxyXG4gIHR5cGVvZiBNb3pCbG9iQnVpbGRlciAhPT0gJ3VuZGVmaW5lZCcgPyBNb3pCbG9iQnVpbGRlciA6IFxyXG4gIGZhbHNlO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIEJsb2IgY29uc3RydWN0b3IgaXMgc3VwcG9ydGVkXHJcbiAqL1xyXG5cclxudmFyIGJsb2JTdXBwb3J0ZWQgPSAoZnVuY3Rpb24oKSB7XHJcbiAgdHJ5IHtcclxuICAgIHZhciBhID0gbmV3IEJsb2IoWydoaSddKTtcclxuICAgIHJldHVybiBhLnNpemUgPT09IDI7XHJcbiAgfSBjYXRjaChlKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59KSgpO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIEJsb2IgY29uc3RydWN0b3Igc3VwcG9ydHMgQXJyYXlCdWZmZXJWaWV3c1xyXG4gKiBGYWlscyBpbiBTYWZhcmkgNiwgc28gd2UgbmVlZCB0byBtYXAgdG8gQXJyYXlCdWZmZXJzIHRoZXJlLlxyXG4gKi9cclxuXHJcbnZhciBibG9iU3VwcG9ydHNBcnJheUJ1ZmZlclZpZXcgPSBibG9iU3VwcG9ydGVkICYmIChmdW5jdGlvbigpIHtcclxuICB0cnkge1xyXG4gICAgdmFyIGIgPSBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoWzEsMl0pXSk7XHJcbiAgICByZXR1cm4gYi5zaXplID09PSAyO1xyXG4gIH0gY2F0Y2goZSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufSkoKTtcclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBCbG9iQnVpbGRlciBpcyBzdXBwb3J0ZWRcclxuICovXHJcblxyXG52YXIgYmxvYkJ1aWxkZXJTdXBwb3J0ZWQgPSBCbG9iQnVpbGRlclxyXG4gICYmIEJsb2JCdWlsZGVyLnByb3RvdHlwZS5hcHBlbmRcclxuICAmJiBCbG9iQnVpbGRlci5wcm90b3R5cGUuZ2V0QmxvYjtcclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBtYXBzIEFycmF5QnVmZmVyVmlld3MgdG8gQXJyYXlCdWZmZXJzXHJcbiAqIFVzZWQgYnkgQmxvYkJ1aWxkZXIgY29uc3RydWN0b3IgYW5kIG9sZCBicm93c2VycyB0aGF0IGRpZG4ndFxyXG4gKiBzdXBwb3J0IGl0IGluIHRoZSBCbG9iIGNvbnN0cnVjdG9yLlxyXG4gKi9cclxuXHJcbmZ1bmN0aW9uIG1hcEFycmF5QnVmZmVyVmlld3MoYXJ5KSB7XHJcbiAgcmV0dXJuIGFyeS5tYXAoZnVuY3Rpb24oY2h1bmspIHtcclxuICAgIGlmIChjaHVuay5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xyXG4gICAgICB2YXIgYnVmID0gY2h1bmsuYnVmZmVyO1xyXG5cclxuICAgICAgLy8gaWYgdGhpcyBpcyBhIHN1YmFycmF5LCBtYWtlIGEgY29weSBzbyB3ZSBvbmx5XHJcbiAgICAgIC8vIGluY2x1ZGUgdGhlIHN1YmFycmF5IHJlZ2lvbiBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlclxyXG4gICAgICBpZiAoY2h1bmsuYnl0ZUxlbmd0aCAhPT0gYnVmLmJ5dGVMZW5ndGgpIHtcclxuICAgICAgICB2YXIgY29weSA9IG5ldyBVaW50OEFycmF5KGNodW5rLmJ5dGVMZW5ndGgpO1xyXG4gICAgICAgIGNvcHkuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZiwgY2h1bmsuYnl0ZU9mZnNldCwgY2h1bmsuYnl0ZUxlbmd0aCkpO1xyXG4gICAgICAgIGJ1ZiA9IGNvcHkuYnVmZmVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gYnVmO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjaHVuaztcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gQmxvYkJ1aWxkZXJDb25zdHJ1Y3RvcihhcnksIG9wdGlvbnMpIHtcclxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgdmFyIGJiID0gbmV3IEJsb2JCdWlsZGVyKCk7XHJcbiAgbWFwQXJyYXlCdWZmZXJWaWV3cyhhcnkpLmZvckVhY2goZnVuY3Rpb24ocGFydCkge1xyXG4gICAgYmIuYXBwZW5kKHBhcnQpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gKG9wdGlvbnMudHlwZSkgPyBiYi5nZXRCbG9iKG9wdGlvbnMudHlwZSkgOiBiYi5nZXRCbG9iKCk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBCbG9iQ29uc3RydWN0b3IoYXJ5LCBvcHRpb25zKSB7XHJcbiAgcmV0dXJuIG5ldyBCbG9iKG1hcEFycmF5QnVmZmVyVmlld3MoYXJ5KSwgb3B0aW9ucyB8fCB7fSk7XHJcbn07XHJcblxyXG5pZiAodHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgQmxvYkJ1aWxkZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBCbG9iLnByb3RvdHlwZTtcclxuICBCbG9iQ29uc3RydWN0b3IucHJvdG90eXBlID0gQmxvYi5wcm90b3R5cGU7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uKCkge1xyXG4gIGlmIChibG9iU3VwcG9ydGVkKSB7XHJcbiAgICByZXR1cm4gYmxvYlN1cHBvcnRzQXJyYXlCdWZmZXJWaWV3ID8gQmxvYiA6IEJsb2JDb25zdHJ1Y3RvcjtcclxuICB9IGVsc2UgaWYgKGJsb2JCdWlsZGVyU3VwcG9ydGVkKSB7XHJcbiAgICByZXR1cm4gQmxvYkJ1aWxkZXJDb25zdHJ1Y3RvcjtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbn0pKCk7XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/blob/index.js\n")},"./node_modules/buffer/index.js":function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\")\nvar ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/ieee754/index.js\")\nvar isArray = __webpack_require__(/*! isarray */ \"./node_modules/buffer/node_modules/isarray/index.js\")\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcz9iNjM5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBVc2UgT2JqZWN0IGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuXG4gKiB3aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBOb3RlOlxuICpcbiAqICAgLSBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YCBpbnN0YW5jZXMsXG4gKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguXG4gKlxuICogICAtIENocm9tZSA5LTEwIGlzIG1pc3NpbmcgdGhlIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24uXG4gKlxuICogICAtIElFMTAgaGFzIGEgYnJva2VuIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhcnJheXMgb2ZcbiAqICAgICBpbmNvcnJlY3QgbGVuZ3RoIGluIHNvbWUgc2l0dWF0aW9ucy5cblxuICogV2UgZGV0ZWN0IHRoZXNlIGJ1Z2d5IGJyb3dzZXJzIGFuZCBzZXQgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYCB0byBgZmFsc2VgIHNvIHRoZXlcbiAqIGdldCB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBzbG93ZXIgYnV0IGJlaGF2ZXMgY29ycmVjdGx5LlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUICE9PSB1bmRlZmluZWRcbiAgPyBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVFxuICA6IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuLypcbiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC5cbiAqL1xuZXhwb3J0cy5rTWF4TGVuZ3RoID0ga01heExlbmd0aCgpXG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0ge19fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfX1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKHRoaXMsIGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuLy8gVE9ETzogTGVnYWN5LCBub3QgbmVlZGVkIGFueW1vcmUuIFJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG5CdWZmZXIuX2F1Z21lbnQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gZnJvbSAodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHRoYXQsIHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKG51bGwsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbmlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICBCdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG4gIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAmJlxuICAgICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLCBTeW1ib2wuc3BlY2llcywge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAodGhhdCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxuICB9XG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPbmx5IHBheSBhdHRlbnRpb24gdG8gZW5jb2RpbmcgaWYgaXQncyBhIHN0cmluZy4gVGhpc1xuICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGRcbiAgICAvLyBiZSBpbnRlcnByZXR0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2MobnVsbCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlICh0aGF0LCBzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG4gICAgICB0aGF0W2ldID0gMFxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHRoYXQsIHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmNvZGluZ1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG5cbiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7XG4gICAgLy8gV3JpdGluZyBhIGhleCBzdHJpbmcsIGZvciBleGFtcGxlLCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyB3aWxsXG4gICAgLy8gY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgaW52YWxpZCBjaGFyYWN0ZXIgdG8gYmUgaWdub3JlZC4gKGUuZy5cbiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJylcbiAgICB0aGF0ID0gdGhhdC5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGFycmF5LmJ5dGVMZW5ndGggLy8gdGhpcyB0aHJvd3MgaWYgYGFycmF5YCBpcyBub3QgYSB2YWxpZCBBcnJheUJ1ZmZlclxuXG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gYXJyYXlcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAodGhhdCwgb2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKVxuXG4gICAgaWYgKHRoYXQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhhdFxuICAgIH1cblxuICAgIG9iai5jb3B5KHRoYXQsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gdGhhdFxuICB9XG5cbiAgaWYgKG9iaikge1xuICAgIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBvYmouYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHx8ICdsZW5ndGgnIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIDApXG4gICAgICB9XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopXG4gICAgfVxuXG4gICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpXG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0ga01heExlbmd0aCgpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIGtNYXhMZW5ndGgoKS50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIWlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJlxuICAgICAgICB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NilcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIHZhciBzbGljZUxlbiA9IGVuZCAtIHN0YXJ0XG4gICAgbmV3QnVmID0gbmV3IEJ1ZmZlcihzbGljZUxlbiwgdW5kZWZpbmVkKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkge1xuICAgICAgbmV3QnVmW2ldID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj5cbiAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOFxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmZcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcbiAgdmFyIGlcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/buffer/index.js\n")},"./node_modules/buffer/node_modules/isarray/index.js":function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYnVmZmVyL25vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2J1ZmZlci9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcz8yMzM1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/buffer/node_modules/isarray/index.js\n")},"./node_modules/component-bind/index.js":function(module,exports){eval("/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29tcG9uZW50LWJpbmQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvY29tcG9uZW50LWJpbmQvaW5kZXguanM/NDBkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNsaWNlIHJlZmVyZW5jZS5cbiAqL1xuXG52YXIgc2xpY2UgPSBbXS5zbGljZTtcblxuLyoqXG4gKiBCaW5kIGBvYmpgIHRvIGBmbmAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHtGdW5jdGlvbnxTdHJpbmd9IGZuIG9yIHN0cmluZ1xuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqLCBmbil7XG4gIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgZm4pIGZuID0gb2JqW2ZuXTtcbiAgaWYgKCdmdW5jdGlvbicgIT0gdHlwZW9mIGZuKSB0aHJvdyBuZXcgRXJyb3IoJ2JpbmQoKSByZXF1aXJlcyBhIGZ1bmN0aW9uJyk7XG4gIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpO1xuICByZXR1cm4gZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gZm4uYXBwbHkob2JqLCBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/component-bind/index.js\n")},"./node_modules/component-inherit/index.js":function(module,exports){eval("\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY29tcG9uZW50LWluaGVyaXQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvY29tcG9uZW50LWluaGVyaXQvaW5kZXguanM/NjJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYSwgYil7XG4gIHZhciBmbiA9IGZ1bmN0aW9uKCl7fTtcbiAgZm4ucHJvdG90eXBlID0gYi5wcm90b3R5cGU7XG4gIGEucHJvdG90eXBlID0gbmV3IGZuO1xuICBhLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGE7XG59OyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/component-inherit/index.js\n")},"./node_modules/debug/src/browser.js":function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(/*! ./debug */ \"./node_modules/debug/src/debug.js\");\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanM/MzRlYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9ICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWVcbiAgICAgICAgICAgICAgICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWUuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgPyBjaHJvbWUuc3RvcmFnZS5sb2NhbFxuICAgICAgICAgICAgICAgICAgOiBsb2NhbHN0b3JhZ2UoKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbXG4gICcjMDAwMENDJywgJyMwMDAwRkYnLCAnIzAwMzNDQycsICcjMDAzM0ZGJywgJyMwMDY2Q0MnLCAnIzAwNjZGRicsICcjMDA5OUNDJyxcbiAgJyMwMDk5RkYnLCAnIzAwQ0MwMCcsICcjMDBDQzMzJywgJyMwMENDNjYnLCAnIzAwQ0M5OScsICcjMDBDQ0NDJywgJyMwMENDRkYnLFxuICAnIzMzMDBDQycsICcjMzMwMEZGJywgJyMzMzMzQ0MnLCAnIzMzMzNGRicsICcjMzM2NkNDJywgJyMzMzY2RkYnLCAnIzMzOTlDQycsXG4gICcjMzM5OUZGJywgJyMzM0NDMDAnLCAnIzMzQ0MzMycsICcjMzNDQzY2JywgJyMzM0NDOTknLCAnIzMzQ0NDQycsICcjMzNDQ0ZGJyxcbiAgJyM2NjAwQ0MnLCAnIzY2MDBGRicsICcjNjYzM0NDJywgJyM2NjMzRkYnLCAnIzY2Q0MwMCcsICcjNjZDQzMzJywgJyM5OTAwQ0MnLFxuICAnIzk5MDBGRicsICcjOTkzM0NDJywgJyM5OTMzRkYnLCAnIzk5Q0MwMCcsICcjOTlDQzMzJywgJyNDQzAwMDAnLCAnI0NDMDAzMycsXG4gICcjQ0MwMDY2JywgJyNDQzAwOTknLCAnI0NDMDBDQycsICcjQ0MwMEZGJywgJyNDQzMzMDAnLCAnI0NDMzMzMycsICcjQ0MzMzY2JyxcbiAgJyNDQzMzOTknLCAnI0NDMzNDQycsICcjQ0MzM0ZGJywgJyNDQzY2MDAnLCAnI0NDNjYzMycsICcjQ0M5OTAwJywgJyNDQzk5MzMnLFxuICAnI0NDQ0MwMCcsICcjQ0NDQzMzJywgJyNGRjAwMDAnLCAnI0ZGMDAzMycsICcjRkYwMDY2JywgJyNGRjAwOTknLCAnI0ZGMDBDQycsXG4gICcjRkYwMEZGJywgJyNGRjMzMDAnLCAnI0ZGMzMzMycsICcjRkYzMzY2JywgJyNGRjMzOTknLCAnI0ZGMzNDQycsICcjRkYzM0ZGJyxcbiAgJyNGRjY2MDAnLCAnI0ZGNjYzMycsICcjRkY5OTAwJywgJyNGRjk5MzMnLCAnI0ZGQ0MwMCcsICcjRkZDQzMzJ1xuXTtcblxuLyoqXG4gKiBDdXJyZW50bHkgb25seSBXZWJLaXQtYmFzZWQgV2ViIEluc3BlY3RvcnMsIEZpcmVmb3ggPj0gdjMxLFxuICogYW5kIHRoZSBGaXJlYnVnIGV4dGVuc2lvbiAoYW55IEZpcmVmb3ggdmVyc2lvbikgYXJlIGtub3duXG4gKiB0byBzdXBwb3J0IFwiJWNcIiBDU1MgY3VzdG9taXphdGlvbnMuXG4gKlxuICogVE9ETzogYWRkIGEgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgdG8gZXhwbGljaXRseSBlbmFibGUvZGlzYWJsZSBjb2xvcnNcbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG4gIC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcbiAgLy8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2VcbiAgLy8gZXhwbGljaXRseVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBpcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuICAvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuICByZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcbiAgICAvLyBpcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG4gICAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcbiAgICAvLyBpcyBmaXJlZm94ID49IHYzMT9cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcbiAgICAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcbiAgICAvLyBkb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbih2KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gJ1tVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiAnICsgZXJyLm1lc3NhZ2U7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcbiAgdmFyIHVzZUNvbG9ycyA9IHRoaXMudXNlQ29sb3JzO1xuXG4gIGFyZ3NbMF0gPSAodXNlQ29sb3JzID8gJyVjJyA6ICcnKVxuICAgICsgdGhpcy5uYW1lc3BhY2VcbiAgICArICh1c2VDb2xvcnMgPyAnICVjJyA6ICcgJylcbiAgICArIGFyZ3NbMF1cbiAgICArICh1c2VDb2xvcnMgPyAnJWMgJyA6ICcgJylcbiAgICArICcrJyArIGV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuICBpZiAoIXVzZUNvbG9ycykgcmV0dXJuO1xuXG4gIHZhciBjID0gJ2NvbG9yOiAnICsgdGhpcy5jb2xvcjtcbiAgYXJncy5zcGxpY2UoMSwgMCwgYywgJ2NvbG9yOiBpbmhlcml0JylcblxuICAvLyB0aGUgZmluYWwgXCIlY1wiIGlzIHNvbWV3aGF0IHRyaWNreSwgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBvdGhlclxuICAvLyBhcmd1bWVudHMgcGFzc2VkIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlICVjLCBzbyB3ZSBuZWVkIHRvXG4gIC8vIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgaW5kZXggdG8gaW5zZXJ0IHRoZSBDU1MgaW50b1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEMgPSAwO1xuICBhcmdzWzBdLnJlcGxhY2UoLyVbYS16QS1aJV0vZywgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICBpZiAoJyUlJyA9PT0gbWF0Y2gpIHJldHVybjtcbiAgICBpbmRleCsrO1xuICAgIGlmICgnJWMnID09PSBtYXRjaCkge1xuICAgICAgLy8gd2Ugb25seSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgKmxhc3QqICVjXG4gICAgICAvLyAodGhlIHVzZXIgbWF5IGhhdmUgcHJvdmlkZWQgdGhlaXIgb3duKVxuICAgICAgbGFzdEMgPSBpbmRleDtcbiAgICB9XG4gIH0pO1xuXG4gIGFyZ3Muc3BsaWNlKGxhc3RDLCAwLCBjKTtcbn1cblxuLyoqXG4gKiBJbnZva2VzIGBjb25zb2xlLmxvZygpYCB3aGVuIGF2YWlsYWJsZS5cbiAqIE5vLW9wIHdoZW4gYGNvbnNvbGUubG9nYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBsb2coKSB7XG4gIC8vIHRoaXMgaGFja2VyeSBpcyByZXF1aXJlZCBmb3IgSUU4LzksIHdoZXJlXG4gIC8vIHRoZSBgY29uc29sZS5sb2dgIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSAnYXBwbHknXG4gIHJldHVybiAnb2JqZWN0JyA9PT0gdHlwZW9mIGNvbnNvbGVcbiAgICAmJiBjb25zb2xlLmxvZ1xuICAgICYmIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGUubG9nLCBjb25zb2xlLCBhcmd1bWVudHMpO1xufVxuXG4vKipcbiAqIFNhdmUgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzYXZlKG5hbWVzcGFjZXMpIHtcbiAgdHJ5IHtcbiAgICBpZiAobnVsbCA9PSBuYW1lc3BhY2VzKSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UucmVtb3ZlSXRlbSgnZGVidWcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5zdG9yYWdlLmRlYnVnID0gbmFtZXNwYWNlcztcbiAgICB9XG4gIH0gY2F0Y2goZSkge31cbn1cblxuLyoqXG4gKiBMb2FkIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybnMgdGhlIHByZXZpb3VzbHkgcGVyc2lzdGVkIGRlYnVnIG1vZGVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkKCkge1xuICB2YXIgcjtcbiAgdHJ5IHtcbiAgICByID0gZXhwb3J0cy5zdG9yYWdlLmRlYnVnO1xuICB9IGNhdGNoKGUpIHt9XG5cbiAgLy8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuICBpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcbiAgICByID0gcHJvY2Vzcy5lbnYuREVCVUc7XG4gIH1cblxuICByZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBFbmFibGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gYGxvY2FsU3RvcmFnZS5kZWJ1Z2AgaW5pdGlhbGx5LlxuICovXG5cbmV4cG9ydHMuZW5hYmxlKGxvYWQoKSk7XG5cbi8qKlxuICogTG9jYWxzdG9yYWdlIGF0dGVtcHRzIHRvIHJldHVybiB0aGUgbG9jYWxzdG9yYWdlLlxuICpcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc2FmYXJpIHRocm93c1xuICogd2hlbiBhIHVzZXIgZGlzYWJsZXMgY29va2llcy9sb2NhbHN0b3JhZ2VcbiAqIGFuZCB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgaXQuXG4gKlxuICogQHJldHVybiB7TG9jYWxTdG9yYWdlfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9jYWxzdG9yYWdlKCkge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xuICB9IGNhdGNoIChlKSB7fVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/debug/src/browser.js\n")},"./node_modules/debug/src/debug.js":function(module,exports,__webpack_require__){eval("\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2RlYnVnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9kZWJ1Zy5qcz85NmZlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBUaGlzIGlzIHRoZSBjb21tb24gbG9naWMgZm9yIGJvdGggdGhlIE5vZGUuanMgYW5kIHdlYiBicm93c2VyXG4gKiBpbXBsZW1lbnRhdGlvbnMgb2YgYGRlYnVnKClgLlxuICpcbiAqIEV4cG9zZSBgZGVidWcoKWAgYXMgdGhlIG1vZHVsZS5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVEZWJ1Zy5kZWJ1ZyA9IGNyZWF0ZURlYnVnWydkZWZhdWx0J10gPSBjcmVhdGVEZWJ1ZztcbmV4cG9ydHMuY29lcmNlID0gY29lcmNlO1xuZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcbmV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xuZXhwb3J0cy5lbmFibGVkID0gZW5hYmxlZDtcbmV4cG9ydHMuaHVtYW5pemUgPSByZXF1aXJlKCdtcycpO1xuXG4vKipcbiAqIEFjdGl2ZSBgZGVidWdgIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0cy5pbnN0YW5jZXMgPSBbXTtcblxuLyoqXG4gKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBkZWJ1ZyBtb2RlIG5hbWVzLCBhbmQgbmFtZXMgdG8gc2tpcC5cbiAqL1xuXG5leHBvcnRzLm5hbWVzID0gW107XG5leHBvcnRzLnNraXBzID0gW107XG5cbi8qKlxuICogTWFwIG9mIHNwZWNpYWwgXCIlblwiIGhhbmRsaW5nIGZ1bmN0aW9ucywgZm9yIHRoZSBkZWJ1ZyBcImZvcm1hdFwiIGFyZ3VtZW50LlxuICpcbiAqIFZhbGlkIGtleSBuYW1lcyBhcmUgYSBzaW5nbGUsIGxvd2VyIG9yIHVwcGVyLWNhc2UgbGV0dGVyLCBpLmUuIFwiblwiIGFuZCBcIk5cIi5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMgPSB7fTtcblxuLyoqXG4gKiBTZWxlY3QgYSBjb2xvci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlbGVjdENvbG9yKG5hbWVzcGFjZSkge1xuICB2YXIgaGFzaCA9IDAsIGk7XG5cbiAgZm9yIChpIGluIG5hbWVzcGFjZSkge1xuICAgIGhhc2ggID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBuYW1lc3BhY2UuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICB9XG5cbiAgcmV0dXJuIGV4cG9ydHMuY29sb3JzW01hdGguYWJzKGhhc2gpICUgZXhwb3J0cy5jb2xvcnMubGVuZ3RoXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkZWJ1Z2dlciB3aXRoIHRoZSBnaXZlbiBgbmFtZXNwYWNlYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlRGVidWcobmFtZXNwYWNlKSB7XG5cbiAgdmFyIHByZXZUaW1lO1xuXG4gIGZ1bmN0aW9uIGRlYnVnKCkge1xuICAgIC8vIGRpc2FibGVkP1xuICAgIGlmICghZGVidWcuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgdmFyIHNlbGYgPSBkZWJ1ZztcblxuICAgIC8vIHNldCBgZGlmZmAgdGltZXN0YW1wXG4gICAgdmFyIGN1cnIgPSArbmV3IERhdGUoKTtcbiAgICB2YXIgbXMgPSBjdXJyIC0gKHByZXZUaW1lIHx8IGN1cnIpO1xuICAgIHNlbGYuZGlmZiA9IG1zO1xuICAgIHNlbGYucHJldiA9IHByZXZUaW1lO1xuICAgIHNlbGYuY3VyciA9IGN1cnI7XG4gICAgcHJldlRpbWUgPSBjdXJyO1xuXG4gICAgLy8gdHVybiB0aGUgYGFyZ3VtZW50c2AgaW50byBhIHByb3BlciBBcnJheVxuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG5cbiAgICBhcmdzWzBdID0gZXhwb3J0cy5jb2VyY2UoYXJnc1swXSk7XG5cbiAgICBpZiAoJ3N0cmluZycgIT09IHR5cGVvZiBhcmdzWzBdKSB7XG4gICAgICAvLyBhbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuICAgICAgYXJncy51bnNoaWZ0KCclTycpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBhcmdzWzBdID0gYXJnc1swXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywgZnVuY3Rpb24obWF0Y2gsIGZvcm1hdCkge1xuICAgICAgLy8gaWYgd2UgZW5jb3VudGVyIGFuIGVzY2FwZWQgJSB0aGVuIGRvbid0IGluY3JlYXNlIHRoZSBhcnJheSBpbmRleFxuICAgICAgaWYgKG1hdGNoID09PSAnJSUnKSByZXR1cm4gbWF0Y2g7XG4gICAgICBpbmRleCsrO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IGV4cG9ydHMuZm9ybWF0dGVyc1tmb3JtYXRdO1xuICAgICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdmFyIHZhbCA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICBtYXRjaCA9IGZvcm1hdHRlci5jYWxsKHNlbGYsIHZhbCk7XG5cbiAgICAgICAgLy8gbm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuICAgICAgICBhcmdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGluZGV4LS07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG5cbiAgICAvLyBhcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuICAgIGV4cG9ydHMuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG4gICAgdmFyIGxvZ0ZuID0gZGVidWcubG9nIHx8IGV4cG9ydHMubG9nIHx8IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XG4gICAgbG9nRm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gIH1cblxuICBkZWJ1Zy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gIGRlYnVnLmVuYWJsZWQgPSBleHBvcnRzLmVuYWJsZWQobmFtZXNwYWNlKTtcbiAgZGVidWcudXNlQ29sb3JzID0gZXhwb3J0cy51c2VDb2xvcnMoKTtcbiAgZGVidWcuY29sb3IgPSBzZWxlY3RDb2xvcihuYW1lc3BhY2UpO1xuICBkZWJ1Zy5kZXN0cm95ID0gZGVzdHJveTtcblxuICAvLyBlbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGV4cG9ydHMuaW5pdCkge1xuICAgIGV4cG9ydHMuaW5pdChkZWJ1Zyk7XG4gIH1cblxuICBleHBvcnRzLmluc3RhbmNlcy5wdXNoKGRlYnVnKTtcblxuICByZXR1cm4gZGVidWc7XG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3kgKCkge1xuICB2YXIgaW5kZXggPSBleHBvcnRzLmluc3RhbmNlcy5pbmRleE9mKHRoaXMpO1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgZXhwb3J0cy5pbnN0YW5jZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBFbmFibGVzIGEgZGVidWcgbW9kZSBieSBuYW1lc3BhY2VzLiBUaGlzIGNhbiBpbmNsdWRlIG1vZGVzXG4gKiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZShuYW1lc3BhY2VzKSB7XG4gIGV4cG9ydHMuc2F2ZShuYW1lc3BhY2VzKTtcblxuICBleHBvcnRzLm5hbWVzID0gW107XG4gIGV4cG9ydHMuc2tpcHMgPSBbXTtcblxuICB2YXIgaTtcbiAgdmFyIHNwbGl0ID0gKHR5cGVvZiBuYW1lc3BhY2VzID09PSAnc3RyaW5nJyA/IG5hbWVzcGFjZXMgOiAnJykuc3BsaXQoL1tcXHMsXSsvKTtcbiAgdmFyIGxlbiA9IHNwbGl0Lmxlbmd0aDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIXNwbGl0W2ldKSBjb250aW51ZTsgLy8gaWdub3JlIGVtcHR5IHN0cmluZ3NcbiAgICBuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcbiAgICBpZiAobmFtZXNwYWNlc1swXSA9PT0gJy0nKSB7XG4gICAgICBleHBvcnRzLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzLnN1YnN0cigxKSArICckJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzICsgJyQnKSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGV4cG9ydHMuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGluc3RhbmNlID0gZXhwb3J0cy5pbnN0YW5jZXNbaV07XG4gICAgaW5zdGFuY2UuZW5hYmxlZCA9IGV4cG9ydHMuZW5hYmxlZChpbnN0YW5jZS5uYW1lc3BhY2UpO1xuICB9XG59XG5cbi8qKlxuICogRGlzYWJsZSBkZWJ1ZyBvdXRwdXQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkaXNhYmxlKCkge1xuICBleHBvcnRzLmVuYWJsZSgnJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBtb2RlIG5hbWUgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmFibGVkKG5hbWUpIHtcbiAgaWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGksIGxlbjtcbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5za2lwcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLnNraXBzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29lcmNlIGB2YWxgLlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbFxuICogQHJldHVybiB7TWl4ZWR9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb2VyY2UodmFsKSB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcbiAgcmV0dXJuIHZhbDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/debug/src/debug.js\n")},"./node_modules/engine.io-client/lib/globalThis.browser.js":function(module,exports){eval("module.exports = (function () {\n if (typeof self !== 'undefined') {\n return self;\n } else if (typeof window !== 'undefined') {\n return window;\n } else {\n return Function('return this')(); // eslint-disable-line no-new-func\n }\n})();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvZ2xvYmFsVGhpcy5icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2VuZ2luZS5pby1jbGllbnQvbGliL2dsb2JhbFRoaXMuYnJvd3Nlci5qcz9kOTQxIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzZWxmO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctZnVuY1xuICB9XG59KSgpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/engine.io-client/lib/globalThis.browser.js\n")},"./node_modules/engine.io-client/lib/index.js":function(module,exports,__webpack_require__){eval('\nmodule.exports = __webpack_require__(/*! ./socket */ "./node_modules/engine.io-client/lib/socket.js");\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = __webpack_require__(/*! engine.io-parser */ "./node_modules/engine.io-parser/lib/browser.js");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9OZW9Bc3Npc3QvLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvaW5kZXguanM/OTRhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zb2NrZXQnKTtcblxuLyoqXG4gKiBFeHBvcnRzIHBhcnNlclxuICpcbiAqIEBhcGkgcHVibGljXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cy5wYXJzZXIgPSByZXF1aXJlKCdlbmdpbmUuaW8tcGFyc2VyJyk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/engine.io-client/lib/index.js\n')},"./node_modules/engine.io-client/lib/socket.js":function(module,exports,__webpack_require__){eval("/**\n * Module dependencies.\n */\n\nvar transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/engine.io-client/node_modules/component-emitter/index.js\");\nvar debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")('engine.io-client:socket');\nvar index = __webpack_require__(/*! indexof */ \"./node_modules/indexof/index.js\");\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/browser.js\");\nvar parseuri = __webpack_require__(/*! parseuri */ \"./node_modules/parseuri/index.js\");\nvar parseqs = __webpack_require__(/*! parseqs */ \"./node_modules/parseqs/index.js\");\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (typeof location !== 'undefined' && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (typeof location !== 'undefined' ? location.hostname : 'localhost');\n this.port = opts.port || (typeof location !== 'undefined' && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.withCredentials = false !== opts.withCredentials;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || undefined;\n this.key = opts.key || undefined;\n this.passphrase = opts.passphrase || undefined;\n this.cert = opts.cert || undefined;\n this.ca = opts.ca || undefined;\n this.ciphers = opts.ciphers || undefined;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // detect ReactNative environment\n this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');\n\n // other options for Node.js or ReactNative client\n if (typeof self === 'undefined' || this.isReactNative) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = __webpack_require__(/*! ./transport */ \"./node_modules/engine.io-client/lib/transport.js\");\nSocket.transports = __webpack_require__(/*! ./transports/index */ \"./node_modules/engine.io-client/lib/transports/index.js\");\nSocket.parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/browser.js\");\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n withCredentials: options.withCredentials || this.withCredentials,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0),\n isReactNative: this.isReactNative\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvc29ja2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2VuZ2luZS5pby1jbGllbnQvbGliL3NvY2tldC5qcz9kYTkyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgdHJhbnNwb3J0cyA9IHJlcXVpcmUoJy4vdHJhbnNwb3J0cy9pbmRleCcpO1xudmFyIEVtaXR0ZXIgPSByZXF1aXJlKCdjb21wb25lbnQtZW1pdHRlcicpO1xudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZW5naW5lLmlvLWNsaWVudDpzb2NrZXQnKTtcbnZhciBpbmRleCA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcbnZhciBwYXJzZXIgPSByZXF1aXJlKCdlbmdpbmUuaW8tcGFyc2VyJyk7XG52YXIgcGFyc2V1cmkgPSByZXF1aXJlKCdwYXJzZXVyaScpO1xudmFyIHBhcnNlcXMgPSByZXF1aXJlKCdwYXJzZXFzJyk7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBTb2NrZXQ7XG5cbi8qKlxuICogU29ja2V0IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gdXJpIG9yIG9wdGlvbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFNvY2tldCAodXJpLCBvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTb2NrZXQpKSByZXR1cm4gbmV3IFNvY2tldCh1cmksIG9wdHMpO1xuXG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuXG4gIGlmICh1cmkgJiYgJ29iamVjdCcgPT09IHR5cGVvZiB1cmkpIHtcbiAgICBvcHRzID0gdXJpO1xuICAgIHVyaSA9IG51bGw7XG4gIH1cblxuICBpZiAodXJpKSB7XG4gICAgdXJpID0gcGFyc2V1cmkodXJpKTtcbiAgICBvcHRzLmhvc3RuYW1lID0gdXJpLmhvc3Q7XG4gICAgb3B0cy5zZWN1cmUgPSB1cmkucHJvdG9jb2wgPT09ICdodHRwcycgfHwgdXJpLnByb3RvY29sID09PSAnd3NzJztcbiAgICBvcHRzLnBvcnQgPSB1cmkucG9ydDtcbiAgICBpZiAodXJpLnF1ZXJ5KSBvcHRzLnF1ZXJ5ID0gdXJpLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKG9wdHMuaG9zdCkge1xuICAgIG9wdHMuaG9zdG5hbWUgPSBwYXJzZXVyaShvcHRzLmhvc3QpLmhvc3Q7XG4gIH1cblxuICB0aGlzLnNlY3VyZSA9IG51bGwgIT0gb3B0cy5zZWN1cmUgPyBvcHRzLnNlY3VyZVxuICAgIDogKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2h0dHBzOicgPT09IGxvY2F0aW9uLnByb3RvY29sKTtcblxuICBpZiAob3B0cy5ob3N0bmFtZSAmJiAhb3B0cy5wb3J0KSB7XG4gICAgLy8gaWYgbm8gcG9ydCBpcyBzcGVjaWZpZWQgbWFudWFsbHksIHVzZSB0aGUgcHJvdG9jb2wgZGVmYXVsdFxuICAgIG9wdHMucG9ydCA9IHRoaXMuc2VjdXJlID8gJzQ0MycgOiAnODAnO1xuICB9XG5cbiAgdGhpcy5hZ2VudCA9IG9wdHMuYWdlbnQgfHwgZmFsc2U7XG4gIHRoaXMuaG9zdG5hbWUgPSBvcHRzLmhvc3RuYW1lIHx8XG4gICAgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgPyBsb2NhdGlvbi5ob3N0bmFtZSA6ICdsb2NhbGhvc3QnKTtcbiAgdGhpcy5wb3J0ID0gb3B0cy5wb3J0IHx8ICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnICYmIGxvY2F0aW9uLnBvcnRcbiAgICAgID8gbG9jYXRpb24ucG9ydFxuICAgICAgOiAodGhpcy5zZWN1cmUgPyA0NDMgOiA4MCkpO1xuICB0aGlzLnF1ZXJ5ID0gb3B0cy5xdWVyeSB8fCB7fTtcbiAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgdGhpcy5xdWVyeSkgdGhpcy5xdWVyeSA9IHBhcnNlcXMuZGVjb2RlKHRoaXMucXVlcnkpO1xuICB0aGlzLnVwZ3JhZGUgPSBmYWxzZSAhPT0gb3B0cy51cGdyYWRlO1xuICB0aGlzLnBhdGggPSAob3B0cy5wYXRoIHx8ICcvZW5naW5lLmlvJykucmVwbGFjZSgvXFwvJC8sICcnKSArICcvJztcbiAgdGhpcy5mb3JjZUpTT05QID0gISFvcHRzLmZvcmNlSlNPTlA7XG4gIHRoaXMuanNvbnAgPSBmYWxzZSAhPT0gb3B0cy5qc29ucDtcbiAgdGhpcy5mb3JjZUJhc2U2NCA9ICEhb3B0cy5mb3JjZUJhc2U2NDtcbiAgdGhpcy5lbmFibGVzWERSID0gISFvcHRzLmVuYWJsZXNYRFI7XG4gIHRoaXMud2l0aENyZWRlbnRpYWxzID0gZmFsc2UgIT09IG9wdHMud2l0aENyZWRlbnRpYWxzO1xuICB0aGlzLnRpbWVzdGFtcFBhcmFtID0gb3B0cy50aW1lc3RhbXBQYXJhbSB8fCAndCc7XG4gIHRoaXMudGltZXN0YW1wUmVxdWVzdHMgPSBvcHRzLnRpbWVzdGFtcFJlcXVlc3RzO1xuICB0aGlzLnRyYW5zcG9ydHMgPSBvcHRzLnRyYW5zcG9ydHMgfHwgWydwb2xsaW5nJywgJ3dlYnNvY2tldCddO1xuICB0aGlzLnRyYW5zcG9ydE9wdGlvbnMgPSBvcHRzLnRyYW5zcG9ydE9wdGlvbnMgfHwge307XG4gIHRoaXMucmVhZHlTdGF0ZSA9ICcnO1xuICB0aGlzLndyaXRlQnVmZmVyID0gW107XG4gIHRoaXMucHJldkJ1ZmZlckxlbiA9IDA7XG4gIHRoaXMucG9saWN5UG9ydCA9IG9wdHMucG9saWN5UG9ydCB8fCA4NDM7XG4gIHRoaXMucmVtZW1iZXJVcGdyYWRlID0gb3B0cy5yZW1lbWJlclVwZ3JhZGUgfHwgZmFsc2U7XG4gIHRoaXMuYmluYXJ5VHlwZSA9IG51bGw7XG4gIHRoaXMub25seUJpbmFyeVVwZ3JhZGVzID0gb3B0cy5vbmx5QmluYXJ5VXBncmFkZXM7XG4gIHRoaXMucGVyTWVzc2FnZURlZmxhdGUgPSBmYWxzZSAhPT0gb3B0cy5wZXJNZXNzYWdlRGVmbGF0ZSA/IChvcHRzLnBlck1lc3NhZ2VEZWZsYXRlIHx8IHt9KSA6IGZhbHNlO1xuXG4gIGlmICh0cnVlID09PSB0aGlzLnBlck1lc3NhZ2VEZWZsYXRlKSB0aGlzLnBlck1lc3NhZ2VEZWZsYXRlID0ge307XG4gIGlmICh0aGlzLnBlck1lc3NhZ2VEZWZsYXRlICYmIG51bGwgPT0gdGhpcy5wZXJNZXNzYWdlRGVmbGF0ZS50aHJlc2hvbGQpIHtcbiAgICB0aGlzLnBlck1lc3NhZ2VEZWZsYXRlLnRocmVzaG9sZCA9IDEwMjQ7XG4gIH1cblxuICAvLyBTU0wgb3B0aW9ucyBmb3IgTm9kZS5qcyBjbGllbnRcbiAgdGhpcy5wZnggPSBvcHRzLnBmeCB8fCB1bmRlZmluZWQ7XG4gIHRoaXMua2V5ID0gb3B0cy5rZXkgfHwgdW5kZWZpbmVkO1xuICB0aGlzLnBhc3NwaHJhc2UgPSBvcHRzLnBhc3NwaHJhc2UgfHwgdW5kZWZpbmVkO1xuICB0aGlzLmNlcnQgPSBvcHRzLmNlcnQgfHwgdW5kZWZpbmVkO1xuICB0aGlzLmNhID0gb3B0cy5jYSB8fCB1bmRlZmluZWQ7XG4gIHRoaXMuY2lwaGVycyA9IG9wdHMuY2lwaGVycyB8fCB1bmRlZmluZWQ7XG4gIHRoaXMucmVqZWN0VW5hdXRob3JpemVkID0gb3B0cy5yZWplY3RVbmF1dGhvcml6ZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBvcHRzLnJlamVjdFVuYXV0aG9yaXplZDtcbiAgdGhpcy5mb3JjZU5vZGUgPSAhIW9wdHMuZm9yY2VOb2RlO1xuXG4gIC8vIGRldGVjdCBSZWFjdE5hdGl2ZSBlbnZpcm9ubWVudFxuICB0aGlzLmlzUmVhY3ROYXRpdmUgPSAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnc3RyaW5nJyAmJiBuYXZpZ2F0b3IucHJvZHVjdC50b0xvd2VyQ2FzZSgpID09PSAncmVhY3RuYXRpdmUnKTtcblxuICAvLyBvdGhlciBvcHRpb25zIGZvciBOb2RlLmpzIG9yIFJlYWN0TmF0aXZlIGNsaWVudFxuICBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuaXNSZWFjdE5hdGl2ZSkge1xuICAgIGlmIChvcHRzLmV4dHJhSGVhZGVycyAmJiBPYmplY3Qua2V5cyhvcHRzLmV4dHJhSGVhZGVycykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5leHRyYUhlYWRlcnMgPSBvcHRzLmV4dHJhSGVhZGVycztcbiAgICB9XG5cbiAgICBpZiAob3B0cy5sb2NhbEFkZHJlc3MpIHtcbiAgICAgIHRoaXMubG9jYWxBZGRyZXNzID0gb3B0cy5sb2NhbEFkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IG9uIGhhbmRzaGFrZVxuICB0aGlzLmlkID0gbnVsbDtcbiAgdGhpcy51cGdyYWRlcyA9IG51bGw7XG4gIHRoaXMucGluZ0ludGVydmFsID0gbnVsbDtcbiAgdGhpcy5waW5nVGltZW91dCA9IG51bGw7XG5cbiAgLy8gc2V0IG9uIGhlYXJ0YmVhdFxuICB0aGlzLnBpbmdJbnRlcnZhbFRpbWVyID0gbnVsbDtcbiAgdGhpcy5waW5nVGltZW91dFRpbWVyID0gbnVsbDtcblxuICB0aGlzLm9wZW4oKTtcbn1cblxuU29ja2V0LnByaW9yV2Vic29ja2V0U3VjY2VzcyA9IGZhbHNlO1xuXG4vKipcbiAqIE1peCBpbiBgRW1pdHRlcmAuXG4gKi9cblxuRW1pdHRlcihTb2NrZXQucHJvdG90eXBlKTtcblxuLyoqXG4gKiBQcm90b2NvbCB2ZXJzaW9uLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU29ja2V0LnByb3RvY29sID0gcGFyc2VyLnByb3RvY29sOyAvLyB0aGlzIGlzIGFuIGludFxuXG4vKipcbiAqIEV4cG9zZSBkZXBzIGZvciBsZWdhY3kgY29tcGF0aWJpbGl0eVxuICogYW5kIHN0YW5kYWxvbmUgYnJvd3NlciBhY2Nlc3MuXG4gKi9cblxuU29ja2V0LlNvY2tldCA9IFNvY2tldDtcblNvY2tldC5UcmFuc3BvcnQgPSByZXF1aXJlKCcuL3RyYW5zcG9ydCcpO1xuU29ja2V0LnRyYW5zcG9ydHMgPSByZXF1aXJlKCcuL3RyYW5zcG9ydHMvaW5kZXgnKTtcblNvY2tldC5wYXJzZXIgPSByZXF1aXJlKCdlbmdpbmUuaW8tcGFyc2VyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyB0cmFuc3BvcnQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRyYW5zcG9ydCBuYW1lXG4gKiBAcmV0dXJuIHtUcmFuc3BvcnR9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5Tb2NrZXQucHJvdG90eXBlLmNyZWF0ZVRyYW5zcG9ydCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGRlYnVnKCdjcmVhdGluZyB0cmFuc3BvcnQgXCIlc1wiJywgbmFtZSk7XG4gIHZhciBxdWVyeSA9IGNsb25lKHRoaXMucXVlcnkpO1xuXG4gIC8vIGFwcGVuZCBlbmdpbmUuaW8gcHJvdG9jb2wgaWRlbnRpZmllclxuICBxdWVyeS5FSU8gPSBwYXJzZXIucHJvdG9jb2w7XG5cbiAgLy8gdHJhbnNwb3J0IG5hbWVcbiAgcXVlcnkudHJhbnNwb3J0ID0gbmFtZTtcblxuICAvLyBwZXItdHJhbnNwb3J0IG9wdGlvbnNcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLnRyYW5zcG9ydE9wdGlvbnNbbmFtZV0gfHwge307XG5cbiAgLy8gc2Vzc2lvbiBpZCBpZiB3ZSBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICh0aGlzLmlkKSBxdWVyeS5zaWQgPSB0aGlzLmlkO1xuXG4gIHZhciB0cmFuc3BvcnQgPSBuZXcgdHJhbnNwb3J0c1tuYW1lXSh7XG4gICAgcXVlcnk6IHF1ZXJ5LFxuICAgIHNvY2tldDogdGhpcyxcbiAgICBhZ2VudDogb3B0aW9ucy5hZ2VudCB8fCB0aGlzLmFnZW50LFxuICAgIGhvc3RuYW1lOiBvcHRpb25zLmhvc3RuYW1lIHx8IHRoaXMuaG9zdG5hbWUsXG4gICAgcG9ydDogb3B0aW9ucy5wb3J0IHx8IHRoaXMucG9ydCxcbiAgICBzZWN1cmU6IG9wdGlvbnMuc2VjdXJlIHx8IHRoaXMuc2VjdXJlLFxuICAgIHBhdGg6IG9wdGlvbnMucGF0aCB8fCB0aGlzLnBhdGgsXG4gICAgZm9yY2VKU09OUDogb3B0aW9ucy5mb3JjZUpTT05QIHx8IHRoaXMuZm9yY2VKU09OUCxcbiAgICBqc29ucDogb3B0aW9ucy5qc29ucCB8fCB0aGlzLmpzb25wLFxuICAgIGZvcmNlQmFzZTY0OiBvcHRpb25zLmZvcmNlQmFzZTY0IHx8IHRoaXMuZm9yY2VCYXNlNjQsXG4gICAgZW5hYmxlc1hEUjogb3B0aW9ucy5lbmFibGVzWERSIHx8IHRoaXMuZW5hYmxlc1hEUixcbiAgICB3aXRoQ3JlZGVudGlhbHM6IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzIHx8IHRoaXMud2l0aENyZWRlbnRpYWxzLFxuICAgIHRpbWVzdGFtcFJlcXVlc3RzOiBvcHRpb25zLnRpbWVzdGFtcFJlcXVlc3RzIHx8IHRoaXMudGltZXN0YW1wUmVxdWVzdHMsXG4gICAgdGltZXN0YW1wUGFyYW06IG9wdGlvbnMudGltZXN0YW1wUGFyYW0gfHwgdGhpcy50aW1lc3RhbXBQYXJhbSxcbiAgICBwb2xpY3lQb3J0OiBvcHRpb25zLnBvbGljeVBvcnQgfHwgdGhpcy5wb2xpY3lQb3J0LFxuICAgIHBmeDogb3B0aW9ucy5wZnggfHwgdGhpcy5wZngsXG4gICAga2V5OiBvcHRpb25zLmtleSB8fCB0aGlzLmtleSxcbiAgICBwYXNzcGhyYXNlOiBvcHRpb25zLnBhc3NwaHJhc2UgfHwgdGhpcy5wYXNzcGhyYXNlLFxuICAgIGNlcnQ6IG9wdGlvbnMuY2VydCB8fCB0aGlzLmNlcnQsXG4gICAgY2E6IG9wdGlvbnMuY2EgfHwgdGhpcy5jYSxcbiAgICBjaXBoZXJzOiBvcHRpb25zLmNpcGhlcnMgfHwgdGhpcy5jaXBoZXJzLFxuICAgIHJlamVjdFVuYXV0aG9yaXplZDogb3B0aW9ucy5yZWplY3RVbmF1dGhvcml6ZWQgfHwgdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQsXG4gICAgcGVyTWVzc2FnZURlZmxhdGU6IG9wdGlvbnMucGVyTWVzc2FnZURlZmxhdGUgfHwgdGhpcy5wZXJNZXNzYWdlRGVmbGF0ZSxcbiAgICBleHRyYUhlYWRlcnM6IG9wdGlvbnMuZXh0cmFIZWFkZXJzIHx8IHRoaXMuZXh0cmFIZWFkZXJzLFxuICAgIGZvcmNlTm9kZTogb3B0aW9ucy5mb3JjZU5vZGUgfHwgdGhpcy5mb3JjZU5vZGUsXG4gICAgbG9jYWxBZGRyZXNzOiBvcHRpb25zLmxvY2FsQWRkcmVzcyB8fCB0aGlzLmxvY2FsQWRkcmVzcyxcbiAgICByZXF1ZXN0VGltZW91dDogb3B0aW9ucy5yZXF1ZXN0VGltZW91dCB8fCB0aGlzLnJlcXVlc3RUaW1lb3V0LFxuICAgIHByb3RvY29sczogb3B0aW9ucy5wcm90b2NvbHMgfHwgdm9pZCAoMCksXG4gICAgaXNSZWFjdE5hdGl2ZTogdGhpcy5pc1JlYWN0TmF0aXZlXG4gIH0pO1xuXG4gIHJldHVybiB0cmFuc3BvcnQ7XG59O1xuXG5mdW5jdGlvbiBjbG9uZSAob2JqKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgb1tpXSA9IG9ialtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG87XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgdHJhbnNwb3J0IHRvIHVzZSBhbmQgc3RhcnRzIHByb2JlLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5Tb2NrZXQucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0cmFuc3BvcnQ7XG4gIGlmICh0aGlzLnJlbWVtYmVyVXBncmFkZSAmJiBTb2NrZXQucHJpb3JXZWJzb2NrZXRTdWNjZXNzICYmIHRoaXMudHJhbnNwb3J0cy5pbmRleE9mKCd3ZWJzb2NrZXQnKSAhPT0gLTEpIHtcbiAgICB0cmFuc3BvcnQgPSAnd2Vic29ja2V0JztcbiAgfSBlbHNlIGlmICgwID09PSB0aGlzLnRyYW5zcG9ydHMubGVuZ3RoKSB7XG4gICAgLy8gRW1pdCBlcnJvciBvbiBuZXh0IHRpY2sgc28gaXQgY2FuIGJlIGxpc3RlbmVkIHRvXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5lbWl0KCdlcnJvcicsICdObyB0cmFuc3BvcnRzIGF2YWlsYWJsZScpO1xuICAgIH0sIDApO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIHtcbiAgICB0cmFuc3BvcnQgPSB0aGlzLnRyYW5zcG9ydHNbMF07XG4gIH1cbiAgdGhpcy5yZWFkeVN0YXRlID0gJ29wZW5pbmcnO1xuXG4gIC8vIFJldHJ5IHdpdGggdGhlIG5leHQgdHJhbnNwb3J0IGlmIHRoZSB0cmFuc3BvcnQgaXMgZGlzYWJsZWQgKGpzb25wOiBmYWxzZSlcbiAgdHJ5IHtcbiAgICB0cmFuc3BvcnQgPSB0aGlzLmNyZWF0ZVRyYW5zcG9ydCh0cmFuc3BvcnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhpcy50cmFuc3BvcnRzLnNoaWZ0KCk7XG4gICAgdGhpcy5vcGVuKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJhbnNwb3J0Lm9wZW4oKTtcbiAgdGhpcy5zZXRUcmFuc3BvcnQodHJhbnNwb3J0KTtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgY3VycmVudCB0cmFuc3BvcnQuIERpc2FibGVzIHRoZSBleGlzdGluZyBvbmUgKGlmIGFueSkuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU29ja2V0LnByb3RvdHlwZS5zZXRUcmFuc3BvcnQgPSBmdW5jdGlvbiAodHJhbnNwb3J0KSB7XG4gIGRlYnVnKCdzZXR0aW5nIHRyYW5zcG9ydCAlcycsIHRyYW5zcG9ydC5uYW1lKTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIGlmICh0aGlzLnRyYW5zcG9ydCkge1xuICAgIGRlYnVnKCdjbGVhcmluZyBleGlzdGluZyB0cmFuc3BvcnQgJXMnLCB0aGlzLnRyYW5zcG9ydC5uYW1lKTtcbiAgICB0aGlzLnRyYW5zcG9ydC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8vIHNldCB1cCB0cmFuc3BvcnRcbiAgdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG5cbiAgLy8gc2V0IHVwIHRyYW5zcG9ydCBsaXN0ZW5lcnNcbiAgdHJhbnNwb3J0XG4gIC5vbignZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5vbkRyYWluKCk7XG4gIH0pXG4gIC5vbigncGFja2V0JywgZnVuY3Rpb24gKHBhY2tldCkge1xuICAgIHNlbGYub25QYWNrZXQocGFja2V0KTtcbiAgfSlcbiAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgc2VsZi5vbkVycm9yKGUpO1xuICB9KVxuICAub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgIHNlbGYub25DbG9zZSgndHJhbnNwb3J0IGNsb3NlJyk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBQcm9iZXMgYSB0cmFuc3BvcnQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRyYW5zcG9ydCBuYW1lXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5Tb2NrZXQucHJvdG90eXBlLnByb2JlID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgZGVidWcoJ3Byb2JpbmcgdHJhbnNwb3J0IFwiJXNcIicsIG5hbWUpO1xuICB2YXIgdHJhbnNwb3J0ID0gdGhpcy5jcmVhdGVUcmFuc3BvcnQobmFtZSwgeyBwcm9iZTogMSB9KTtcbiAgdmFyIGZhaWxlZCA9IGZhbHNlO1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgU29ja2V0LnByaW9yV2Vic29ja2V0U3VjY2VzcyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIG9uVHJhbnNwb3J0T3BlbiAoKSB7XG4gICAgaWYgKHNlbGYub25seUJpbmFyeVVwZ3JhZGVzKSB7XG4gICAgICB2YXIgdXBncmFkZUxvc2VzQmluYXJ5ID0gIXRoaXMuc3VwcG9ydHNCaW5hcnkgJiYgc2VsZi50cmFuc3BvcnQuc3VwcG9ydHNCaW5hcnk7XG4gICAgICBmYWlsZWQgPSBmYWlsZWQgfHwgdXBncmFkZUxvc2VzQmluYXJ5O1xuICAgIH1cbiAgICBpZiAoZmFpbGVkKSByZXR1cm47XG5cbiAgICBkZWJ1ZygncHJvYmUgdHJhbnNwb3J0IFwiJXNcIiBvcGVuZWQnLCBuYW1lKTtcbiAgICB0cmFuc3BvcnQuc2VuZChbeyB0eXBlOiAncGluZycsIGRhdGE6ICdwcm9iZScgfV0pO1xuICAgIHRyYW5zcG9ydC5vbmNlKCdwYWNrZXQnLCBmdW5jdGlvbiAobXNnKSB7XG4gICAgICBpZiAoZmFpbGVkKSByZXR1cm47XG4gICAgICBpZiAoJ3BvbmcnID09PSBtc2cudHlwZSAmJiAncHJvYmUnID09PSBtc2cuZGF0YSkge1xuICAgICAgICBkZWJ1ZygncHJvYmUgdHJhbnNwb3J0IFwiJXNcIiBwb25nJywgbmFtZSk7XG4gICAgICAgIHNlbGYudXBncmFkaW5nID0gdHJ1ZTtcbiAgICAgICAgc2VsZi5lbWl0KCd1cGdyYWRpbmcnLCB0cmFuc3BvcnQpO1xuICAgICAgICBpZiAoIXRyYW5zcG9ydCkgcmV0dXJuO1xuICAgICAgICBTb2NrZXQucHJpb3JXZWJzb2NrZXRTdWNjZXNzID0gJ3dlYnNvY2tldCcgPT09IHRyYW5zcG9ydC5uYW1lO1xuXG4gICAgICAgIGRlYnVnKCdwYXVzaW5nIGN1cnJlbnQgdHJhbnNwb3J0IFwiJXNcIicsIHNlbGYudHJhbnNwb3J0Lm5hbWUpO1xuICAgICAgICBzZWxmLnRyYW5zcG9ydC5wYXVzZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGZhaWxlZCkgcmV0dXJuO1xuICAgICAgICAgIGlmICgnY2xvc2VkJyA9PT0gc2VsZi5yZWFkeVN0YXRlKSByZXR1cm47XG4gICAgICAgICAgZGVidWcoJ2NoYW5naW5nIHRyYW5zcG9ydCBhbmQgc2VuZGluZyB1cGdyYWRlIHBhY2tldCcpO1xuXG4gICAgICAgICAgY2xlYW51cCgpO1xuXG4gICAgICAgICAgc2VsZi5zZXRUcmFuc3BvcnQodHJhbnNwb3J0KTtcbiAgICAgICAgICB0cmFuc3BvcnQuc2VuZChbeyB0eXBlOiAndXBncmFkZScgfV0pO1xuICAgICAgICAgIHNlbGYuZW1pdCgndXBncmFkZScsIHRyYW5zcG9ydCk7XG4gICAgICAgICAgdHJhbnNwb3J0ID0gbnVsbDtcbiAgICAgICAgICBzZWxmLnVwZ3JhZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHNlbGYuZmx1c2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygncHJvYmUgdHJhbnNwb3J0IFwiJXNcIiBmYWlsZWQnLCBuYW1lKTtcbiAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcigncHJvYmUgZXJyb3InKTtcbiAgICAgICAgZXJyLnRyYW5zcG9ydCA9IHRyYW5zcG9ydC5uYW1lO1xuICAgICAgICBzZWxmLmVtaXQoJ3VwZ3JhZGVFcnJvcicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBmcmVlemVUcmFuc3BvcnQgKCkge1xuICAgIGlmIChmYWlsZWQpIHJldHVybjtcblxuICAgIC8vIEFueSBjYWxsYmFjayBjYWxsZWQgYnkgdHJhbnNwb3J0IHNob3VsZCBiZSBpZ25vcmVkIHNpbmNlIG5vd1xuICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICBjbGVhbnVwKCk7XG5cbiAgICB0cmFuc3BvcnQuY2xvc2UoKTtcbiAgICB0cmFuc3BvcnQgPSBudWxsO1xuICB9XG5cbiAgLy8gSGFuZGxlIGFueSBlcnJvciB0aGF0IGhhcHBlbnMgd2hpbGUgcHJvYmluZ1xuICBmdW5jdGlvbiBvbmVycm9yIChlcnIpIHtcbiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3Byb2JlIGVycm9yOiAnICsgZXJyKTtcbiAgICBlcnJvci50cmFuc3BvcnQgPSB0cmFuc3BvcnQubmFtZTtcblxuICAgIGZyZWV6ZVRyYW5zcG9ydCgpO1xuXG4gICAgZGVidWcoJ3Byb2JlIHRyYW5zcG9ydCBcIiVzXCIgZmFpbGVkIGJlY2F1c2Ugb2YgZXJyb3I6ICVzJywgbmFtZSwgZXJyKTtcblxuICAgIHNlbGYuZW1pdCgndXBncmFkZUVycm9yJywgZXJyb3IpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25UcmFuc3BvcnRDbG9zZSAoKSB7XG4gICAgb25lcnJvcigndHJhbnNwb3J0IGNsb3NlZCcpO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCB3aGlsZSB3ZSdyZSBwcm9iaW5nXG4gIGZ1bmN0aW9uIG9uY2xvc2UgKCkge1xuICAgIG9uZXJyb3IoJ3NvY2tldCBjbG9zZWQnKTtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHNvY2tldCBpcyB1cGdyYWRlZCB3aGlsZSB3ZSdyZSBwcm9iaW5nXG4gIGZ1bmN0aW9uIG9udXBncmFkZSAodG8pIHtcbiAgICBpZiAodHJhbnNwb3J0ICYmIHRvLm5hbWUgIT09IHRyYW5zcG9ydC5uYW1lKSB7XG4gICAgICBkZWJ1ZygnXCIlc1wiIHdvcmtzIC0gYWJvcnRpbmcgXCIlc1wiJywgdG8ubmFtZSwgdHJhbnNwb3J0Lm5hbWUpO1xuICAgICAgZnJlZXplVHJhbnNwb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGFsbCBsaXN0ZW5lcnMgb24gdGhlIHRyYW5zcG9ydCBhbmQgb24gc2VsZlxuICBmdW5jdGlvbiBjbGVhbnVwICgpIHtcbiAgICB0cmFuc3BvcnQucmVtb3ZlTGlzdGVuZXIoJ29wZW4nLCBvblRyYW5zcG9ydE9wZW4pO1xuICAgIHRyYW5zcG9ydC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICB0cmFuc3BvcnQucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25UcmFuc3BvcnRDbG9zZSk7XG4gICAgc2VsZi5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBzZWxmLnJlbW92ZUxpc3RlbmVyKCd1cGdyYWRpbmcnLCBvbnVwZ3JhZGUpO1xuICB9XG5cbiAgdHJhbnNwb3J0Lm9uY2UoJ29wZW4nLCBvblRyYW5zcG9ydE9wZW4pO1xuICB0cmFuc3BvcnQub25jZSgnZXJyb3InLCBvbmVycm9yKTtcbiAgdHJhbnNwb3J0Lm9uY2UoJ2Nsb3NlJywgb25UcmFuc3BvcnRDbG9zZSk7XG5cbiAgdGhpcy5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuICB0aGlzLm9uY2UoJ3VwZ3JhZGluZycsIG9udXBncmFkZSk7XG5cbiAgdHJhbnNwb3J0Lm9wZW4oKTtcbn07XG5cbi8qKlxuICogQ2FsbGVkIHdoZW4gY29ubmVjdGlvbiBpcyBkZWVtZWQgb3Blbi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNvY2tldC5wcm90b3R5cGUub25PcGVuID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1Zygnc29ja2V0IG9wZW4nKTtcbiAgdGhpcy5yZWFkeVN0YXRlID0gJ29wZW4nO1xuICBTb2NrZXQucHJpb3JXZWJzb2NrZXRTdWNjZXNzID0gJ3dlYnNvY2tldCcgPT09IHRoaXMudHJhbnNwb3J0Lm5hbWU7XG4gIHRoaXMuZW1pdCgnb3BlbicpO1xuICB0aGlzLmZsdXNoKCk7XG5cbiAgLy8gd2UgY2hlY2sgZm9yIGByZWFkeVN0YXRlYCBpbiBjYXNlIGFuIGBvcGVuYFxuICAvLyBsaXN0ZW5lciBhbHJlYWR5IGNsb3NlZCB0aGUgc29ja2V0XG4gIGlmICgnb3BlbicgPT09IHRoaXMucmVhZHlTdGF0ZSAmJiB0aGlzLnVwZ3JhZGUgJiYgdGhpcy50cmFuc3BvcnQucGF1c2UpIHtcbiAgICBkZWJ1Zygnc3RhcnRpbmcgdXBncmFkZSBwcm9iZXMnKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMudXBncmFkZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLnByb2JlKHRoaXMudXBncmFkZXNbaV0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBIYW5kbGVzIGEgcGFja2V0LlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNvY2tldC5wcm90b3R5cGUub25QYWNrZXQgPSBmdW5jdGlvbiAocGFja2V0KSB7XG4gIGlmICgnb3BlbmluZycgPT09IHRoaXMucmVhZHlTdGF0ZSB8fCAnb3BlbicgPT09IHRoaXMucmVhZHlTdGF0ZSB8fFxuICAgICAgJ2Nsb3NpbmcnID09PSB0aGlzLnJlYWR5U3RhdGUpIHtcbiAgICBkZWJ1Zygnc29ja2V0IHJlY2VpdmU6IHR5cGUgXCIlc1wiLCBkYXRhIFwiJXNcIicsIHBhY2tldC50eXBlLCBwYWNrZXQuZGF0YSk7XG5cbiAgICB0aGlzLmVtaXQoJ3BhY2tldCcsIHBhY2tldCk7XG5cbiAgICAvLyBTb2NrZXQgaXMgbGl2ZSAtIGFueSBwYWNrZXQgY291bnRzXG4gICAgdGhpcy5lbWl0KCdoZWFydGJlYXQnKTtcblxuICAgIHN3aXRjaCAocGFja2V0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ29wZW4nOlxuICAgICAgICB0aGlzLm9uSGFuZHNoYWtlKEpTT04ucGFyc2UocGFja2V0LmRhdGEpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3BvbmcnOlxuICAgICAgICB0aGlzLnNldFBpbmcoKTtcbiAgICAgICAgdGhpcy5lbWl0KCdwb25nJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ3NlcnZlciBlcnJvcicpO1xuICAgICAgICBlcnIuY29kZSA9IHBhY2tldC5kYXRhO1xuICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICB0aGlzLmVtaXQoJ2RhdGEnLCBwYWNrZXQuZGF0YSk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZScsIHBhY2tldC5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGRlYnVnKCdwYWNrZXQgcmVjZWl2ZWQgd2l0aCBzb2NrZXQgcmVhZHlTdGF0ZSBcIiVzXCInLCB0aGlzLnJlYWR5U3RhdGUpO1xuICB9XG59O1xuXG4vKipcbiAqIENhbGxlZCB1cG9uIGhhbmRzaGFrZSBjb21wbGV0aW9uLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYW5kc2hha2Ugb2JqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5Tb2NrZXQucHJvdG90eXBlLm9uSGFuZHNoYWtlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5lbWl0KCdoYW5kc2hha2UnLCBkYXRhKTtcbiAgdGhpcy5pZCA9IGRhdGEuc2lkO1xuICB0aGlzLnRyYW5zcG9ydC5xdWVyeS5zaWQgPSBkYXRhLnNpZDtcbiAgdGhpcy51cGdyYWRlcyA9IHRoaXMuZmlsdGVyVXBncmFkZXMoZGF0YS51cGdyYWRlcyk7XG4gIHRoaXMucGluZ0ludGVydmFsID0gZGF0YS5waW5nSW50ZXJ2YWw7XG4gIHRoaXMucGluZ1RpbWVvdXQgPSBkYXRhLnBpbmdUaW1lb3V0O1xuICB0aGlzLm9uT3BlbigpO1xuICAvLyBJbiBjYXNlIG9wZW4gaGFuZGxlciBjbG9zZXMgc29ja2V0XG4gIGlmICgnY2xvc2VkJyA9PT0gdGhpcy5yZWFkeVN0YXRlKSByZXR1cm47XG4gIHRoaXMuc2V0UGluZygpO1xuXG4gIC8vIFByb2xvbmcgbGl2ZW5lc3Mgb2Ygc29ja2V0IG9uIGhlYXJ0YmVhdFxuICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdoZWFydGJlYXQnLCB0aGlzLm9uSGVhcnRiZWF0KTtcbiAgdGhpcy5vbignaGVhcnRiZWF0JywgdGhpcy5vbkhlYXJ0YmVhdCk7XG59O1xuXG4vKipcbiAqIFJlc2V0cyBwaW5nIHRpbWVvdXQuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU29ja2V0LnByb3RvdHlwZS5vbkhlYXJ0YmVhdCA9IGZ1bmN0aW9uICh0aW1lb3V0KSB7XG4gIGNsZWFyVGltZW91dCh0aGlzLnBpbmdUaW1lb3V0VGltZXIpO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHNlbGYucGluZ1RpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmICgnY2xvc2VkJyA9PT0gc2VsZi5yZWFkeVN0YXRlKSByZXR1cm47XG4gICAgc2VsZi5vbkNsb3NlKCdwaW5nIHRpbWVvdXQnKTtcbiAgfSwgdGltZW91dCB8fCAoc2VsZi5waW5nSW50ZXJ2YWwgKyBzZWxmLnBpbmdUaW1lb3V0KSk7XG59O1xuXG4vKipcbiAqIFBpbmdzIHNlcnZlciBldmVyeSBgdGhpcy5waW5nSW50ZXJ2YWxgIGFuZCBleHBlY3RzIHJlc3BvbnNlXG4gKiB3aXRoaW4gYHRoaXMucGluZ1RpbWVvdXRgIG9yIGNsb3NlcyBjb25uZWN0aW9uLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNvY2tldC5wcm90b3R5cGUuc2V0UGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBjbGVhclRpbWVvdXQoc2VsZi5waW5nSW50ZXJ2YWxUaW1lcik7XG4gIHNlbGYucGluZ0ludGVydmFsVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JpdGluZyBwaW5nIHBhY2tldCAtIGV4cGVjdGluZyBwb25nIHdpdGhpbiAlc21zJywgc2VsZi5waW5nVGltZW91dCk7XG4gICAgc2VsZi5waW5nKCk7XG4gICAgc2VsZi5vbkhlYXJ0YmVhdChzZWxmLnBpbmdUaW1lb3V0KTtcbiAgfSwgc2VsZi5waW5nSW50ZXJ2YWwpO1xufTtcblxuLyoqXG4qIFNlbmRzIGEgcGluZyBwYWNrZXQuXG4qXG4qIEBhcGkgcHJpdmF0ZVxuKi9cblxuU29ja2V0LnByb3RvdHlwZS5waW5nID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMuc2VuZFBhY2tldCgncGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBzZWxmLmVtaXQoJ3BpbmcnKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIENhbGxlZCBvbiBgZHJhaW5gIGV2ZW50XG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU29ja2V0LnByb3RvdHlwZS5vbkRyYWluID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLndyaXRlQnVmZmVyLnNwbGljZSgwLCB0aGlzLnByZXZCdWZmZXJMZW4pO1xuXG4gIC8vIHNldHRpbmcgcHJldkJ1ZmZlckxlbiA9IDAgaXMgdmVyeSBpbXBvcnRhbnRcbiAgLy8gZm9yIGV4YW1wbGUsIHdoZW4gdXBncmFkaW5nLCB1cGdyYWRlIHBhY2tldCBpcyBzZW50IG92ZXIsXG4gIC8vIGFuZCBhIG5vbnplcm8gcHJldkJ1ZmZlckxlbiBjb3VsZCBjYXVzZSBwcm9ibGVtcyBvbiBgZHJhaW5gXG4gIHRoaXMucHJldkJ1ZmZlckxlbiA9IDA7XG5cbiAgaWYgKDAgPT09IHRoaXMud3JpdGVCdWZmZXIubGVuZ3RoKSB7XG4gICAgdGhpcy5lbWl0KCdkcmFpbicpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZmx1c2goKTtcbiAgfVxufTtcblxuLyoqXG4gKiBGbHVzaCB3cml0ZSBidWZmZXJzLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNvY2tldC5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICgnY2xvc2VkJyAhPT0gdGhpcy5yZWFkeVN0YXRlICYmIHRoaXMudHJhbnNwb3J0LndyaXRhYmxlICYmXG4gICAgIXRoaXMudXBncmFkaW5nICYmIHRoaXMud3JpdGVCdWZmZXIubGVuZ3RoKSB7XG4gICAgZGVidWcoJ2ZsdXNoaW5nICVkIHBhY2tldHMgaW4gc29ja2V0JywgdGhpcy53cml0ZUJ1ZmZlci5sZW5ndGgpO1xuICAgIHRoaXMudHJhbnNwb3J0LnNlbmQodGhpcy53cml0ZUJ1ZmZlcik7XG4gICAgLy8ga2VlcCB0cmFjayBvZiBjdXJyZW50IGxlbmd0aCBvZiB3cml0ZUJ1ZmZlclxuICAgIC8vIHNwbGljZSB3cml0ZUJ1ZmZlciBhbmQgY2FsbGJhY2tCdWZmZXIgb24gYGRyYWluYFxuICAgIHRoaXMucHJldkJ1ZmZlckxlbiA9IHRoaXMud3JpdGVCdWZmZXIubGVuZ3RoO1xuICAgIHRoaXMuZW1pdCgnZmx1c2gnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZW5kcyBhIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLlxuICogQHJldHVybiB7U29ja2V0fSBmb3IgY2hhaW5pbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNvY2tldC5wcm90b3R5cGUud3JpdGUgPVxuU29ja2V0LnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKG1zZywgb3B0aW9ucywgZm4pIHtcbiAgdGhpcy5zZW5kUGFja2V0KCdtZXNzYWdlJywgbXNnLCBvcHRpb25zLCBmbik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZW5kcyBhIHBhY2tldC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGFja2V0IHR5cGUuXG4gKiBAcGFyYW0ge1N0cmluZ30gZGF0YS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24uXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5Tb2NrZXQucHJvdG90eXBlLnNlbmRQYWNrZXQgPSBmdW5jdGlvbiAodHlwZSwgZGF0YSwgb3B0aW9ucywgZm4pIHtcbiAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBkYXRhKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIG9wdGlvbnMpIHtcbiAgICBmbiA9IG9wdGlvbnM7XG4gICAgb3B0aW9ucyA9IG51bGw7XG4gIH1cblxuICBpZiAoJ2Nsb3NpbmcnID09PSB0aGlzLnJlYWR5U3RhdGUgfHwgJ2Nsb3NlZCcgPT09IHRoaXMucmVhZHlTdGF0ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBvcHRpb25zLmNvbXByZXNzID0gZmFsc2UgIT09IG9wdGlvbnMuY29tcHJlc3M7XG5cbiAgdmFyIHBhY2tldCA9IHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIGRhdGE6IGRhdGEsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9O1xuICB0aGlzLmVtaXQoJ3BhY2tldENyZWF0ZScsIHBhY2tldCk7XG4gIHRoaXMud3JpdGVCdWZmZXIucHVzaChwYWNrZXQpO1xuICBpZiAoZm4pIHRoaXMub25jZSgnZmx1c2gnLCBmbik7XG4gIHRoaXMuZmx1c2goKTtcbn07XG5cbi8qKlxuICogQ2xvc2VzIHRoZSBjb25uZWN0aW9uLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNvY2tldC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICgnb3BlbmluZycgPT09IHRoaXMucmVhZHlTdGF0ZSB8fCAnb3BlbicgPT09IHRoaXMucmVhZHlTdGF0ZSkge1xuICAgIHRoaXMucmVhZHlTdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICh0aGlzLndyaXRlQnVmZmVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5vbmNlKCdkcmFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMudXBncmFkaW5nKSB7XG4gICAgICAgICAgd2FpdEZvclVwZ3JhZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudXBncmFkaW5nKSB7XG4gICAgICB3YWl0Rm9yVXBncmFkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsb3NlICgpIHtcbiAgICBzZWxmLm9uQ2xvc2UoJ2ZvcmNlZCBjbG9zZScpO1xuICAgIGRlYnVnKCdzb2NrZXQgY2xvc2luZyAtIHRlbGxpbmcgdHJhbnNwb3J0IHRvIGNsb3NlJyk7XG4gICAgc2VsZi50cmFuc3BvcnQuY2xvc2UoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFudXBBbmRDbG9zZSAoKSB7XG4gICAgc2VsZi5yZW1vdmVMaXN0ZW5lcigndXBncmFkZScsIGNsZWFudXBBbmRDbG9zZSk7XG4gICAgc2VsZi5yZW1vdmVMaXN0ZW5lcigndXBncmFkZUVycm9yJywgY2xlYW51cEFuZENsb3NlKTtcbiAgICBjbG9zZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gd2FpdEZvclVwZ3JhZGUgKCkge1xuICAgIC8vIHdhaXQgZm9yIHVwZ3JhZGUgdG8gZmluaXNoIHNpbmNlIHdlIGNhbid0IHNlbmQgcGFja2V0cyB3aGlsZSBwYXVzaW5nIGEgdHJhbnNwb3J0XG4gICAgc2VsZi5vbmNlKCd1cGdyYWRlJywgY2xlYW51cEFuZENsb3NlKTtcbiAgICBzZWxmLm9uY2UoJ3VwZ3JhZGVFcnJvcicsIGNsZWFudXBBbmRDbG9zZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2FsbGVkIHVwb24gdHJhbnNwb3J0IGVycm9yXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU29ja2V0LnByb3RvdHlwZS5vbkVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICBkZWJ1Zygnc29ja2V0IGVycm9yICVqJywgZXJyKTtcbiAgU29ja2V0LnByaW9yV2Vic29ja2V0U3VjY2VzcyA9IGZhbHNlO1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgdGhpcy5vbkNsb3NlKCd0cmFuc3BvcnQgZXJyb3InLCBlcnIpO1xufTtcblxuLyoqXG4gKiBDYWxsZWQgdXBvbiB0cmFuc3BvcnQgY2xvc2UuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU29ja2V0LnByb3RvdHlwZS5vbkNsb3NlID0gZnVuY3Rpb24gKHJlYXNvbiwgZGVzYykge1xuICBpZiAoJ29wZW5pbmcnID09PSB0aGlzLnJlYWR5U3RhdGUgfHwgJ29wZW4nID09PSB0aGlzLnJlYWR5U3RhdGUgfHwgJ2Nsb3NpbmcnID09PSB0aGlzLnJlYWR5U3RhdGUpIHtcbiAgICBkZWJ1Zygnc29ja2V0IGNsb3NlIHdpdGggcmVhc29uOiBcIiVzXCInLCByZWFzb24pO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIC8vIGNsZWFyIHRpbWVyc1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnBpbmdJbnRlcnZhbFRpbWVyKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5waW5nVGltZW91dFRpbWVyKTtcblxuICAgIC8vIHN0b3AgZXZlbnQgZnJvbSBmaXJpbmcgYWdhaW4gZm9yIHRyYW5zcG9ydFxuICAgIHRoaXMudHJhbnNwb3J0LnJlbW92ZUFsbExpc3RlbmVycygnY2xvc2UnKTtcblxuICAgIC8vIGVuc3VyZSB0cmFuc3BvcnQgd29uJ3Qgc3RheSBvcGVuXG4gICAgdGhpcy50cmFuc3BvcnQuY2xvc2UoKTtcblxuICAgIC8vIGlnbm9yZSBmdXJ0aGVyIHRyYW5zcG9ydCBjb21tdW5pY2F0aW9uXG4gICAgdGhpcy50cmFuc3BvcnQucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG5cbiAgICAvLyBzZXQgcmVhZHkgc3RhdGVcbiAgICB0aGlzLnJlYWR5U3RhdGUgPSAnY2xvc2VkJztcblxuICAgIC8vIGNsZWFyIHNlc3Npb24gaWRcbiAgICB0aGlzLmlkID0gbnVsbDtcblxuICAgIC8vIGVtaXQgY2xvc2UgZXZlbnRcbiAgICB0aGlzLmVtaXQoJ2Nsb3NlJywgcmVhc29uLCBkZXNjKTtcblxuICAgIC8vIGNsZWFuIGJ1ZmZlcnMgYWZ0ZXIsIHNvIHVzZXJzIGNhbiBzdGlsbFxuICAgIC8vIGdyYWIgdGhlIGJ1ZmZlcnMgb24gYGNsb3NlYCBldmVudFxuICAgIHNlbGYud3JpdGVCdWZmZXIgPSBbXTtcbiAgICBzZWxmLnByZXZCdWZmZXJMZW4gPSAwO1xuICB9XG59O1xuXG4vKipcbiAqIEZpbHRlcnMgdXBncmFkZXMsIHJldHVybmluZyBvbmx5IHRob3NlIG1hdGNoaW5nIGNsaWVudCB0cmFuc3BvcnRzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHNlcnZlciB1cGdyYWRlc1xuICogQGFwaSBwcml2YXRlXG4gKlxuICovXG5cblNvY2tldC5wcm90b3R5cGUuZmlsdGVyVXBncmFkZXMgPSBmdW5jdGlvbiAodXBncmFkZXMpIHtcbiAgdmFyIGZpbHRlcmVkVXBncmFkZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIGogPSB1cGdyYWRlcy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICBpZiAofmluZGV4KHRoaXMudHJhbnNwb3J0cywgdXBncmFkZXNbaV0pKSBmaWx0ZXJlZFVwZ3JhZGVzLnB1c2godXBncmFkZXNbaV0pO1xuICB9XG4gIHJldHVybiBmaWx0ZXJlZFVwZ3JhZGVzO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/engine.io-client/lib/socket.js\n")},"./node_modules/engine.io-client/lib/transport.js":function(module,exports,__webpack_require__){eval("/**\n * Module dependencies.\n */\n\nvar parser = __webpack_require__(/*! engine.io-parser */ \"./node_modules/engine.io-parser/lib/browser.js\");\nvar Emitter = __webpack_require__(/*! component-emitter */ \"./node_modules/engine.io-client/node_modules/component-emitter/index.js\");\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n this.withCredentials = opts.withCredentials;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // results of ReactNative environment detection\n this.isReactNative = opts.isReactNative;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvdHJhbnNwb3J0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vTmVvQXNzaXN0Ly4vbm9kZV9tb2R1bGVzL2VuZ2luZS5pby1jbGllbnQvbGliL3RyYW5zcG9ydC5qcz8xOWI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgcGFyc2VyID0gcmVxdWlyZSgnZW5naW5lLmlvLXBhcnNlcicpO1xudmFyIEVtaXR0ZXIgPSByZXF1aXJlKCdjb21wb25lbnQtZW1pdHRlcicpO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNwb3J0O1xuXG4vKipcbiAqIFRyYW5zcG9ydCBhYnN0cmFjdCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFRyYW5zcG9ydCAob3B0cykge1xuICB0aGlzLnBhdGggPSBvcHRzLnBhdGg7XG4gIHRoaXMuaG9zdG5hbWUgPSBvcHRzLmhvc3RuYW1lO1xuICB0aGlzLnBvcnQgPSBvcHRzLnBvcnQ7XG4gIHRoaXMuc2VjdXJlID0gb3B0cy5zZWN1cmU7XG4gIHRoaXMucXVlcnkgPSBvcHRzLnF1ZXJ5O1xuICB0aGlzLnRpbWVzdGFtcFBhcmFtID0gb3B0cy50aW1lc3RhbXBQYXJhbTtcbiAgdGhpcy50aW1lc3RhbXBSZXF1ZXN0cyA9IG9wdHMudGltZXN0YW1wUmVxdWVzdHM7XG4gIHRoaXMucmVhZHlTdGF0ZSA9ICcnO1xuICB0aGlzLmFnZW50ID0gb3B0cy5hZ2VudCB8fCBmYWxzZTtcbiAgdGhpcy5zb2NrZXQgPSBvcHRzLnNvY2tldDtcbiAgdGhpcy5lbmFibGVzWERSID0gb3B0cy5lbmFibGVzWERSO1xuICB0aGlzLndpdGhDcmVkZW50aWFscyA9IG9wdHMud2l0aENyZWRlbnRpYWxzO1xuXG4gIC8vIFNTTCBvcHRpb25zIGZvciBOb2RlLmpzIGNsaWVudFxuICB0aGlzLnBmeCA9IG9wdHMucGZ4O1xuICB0aGlzLmtleSA9IG9wdHMua2V5O1xuICB0aGlzLnBhc3NwaHJhc2UgPSBvcHRzLnBhc3NwaHJhc2U7XG4gIHRoaXMuY2VydCA9IG9wdHMuY2VydDtcbiAgdGhpcy5jYSA9IG9wdHMuY2E7XG4gIHRoaXMuY2lwaGVycyA9IG9wdHMuY2lwaGVycztcbiAgdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQgPSBvcHRzLnJlamVjdFVuYXV0aG9yaXplZDtcbiAgdGhpcy5mb3JjZU5vZGUgPSBvcHRzLmZvcmNlTm9kZTtcblxuICAvLyByZXN1bHRzIG9mIFJlYWN0TmF0aXZlIGVudmlyb25tZW50IGRldGVjdGlvblxuICB0aGlzLmlzUmVhY3ROYXRpdmUgPSBvcHRzLmlzUmVhY3ROYXRpdmU7XG5cbiAgLy8gb3RoZXIgb3B0aW9ucyBmb3IgTm9kZS5qcyBjbGllbnRcbiAgdGhpcy5leHRyYUhlYWRlcnMgPSBvcHRzLmV4dHJhSGVhZGVycztcbiAgdGhpcy5sb2NhbEFkZHJlc3MgPSBvcHRzLmxvY2FsQWRkcmVzcztcbn1cblxuLyoqXG4gKiBNaXggaW4gYEVtaXR0ZXJgLlxuICovXG5cbkVtaXR0ZXIoVHJhbnNwb3J0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogRW1pdHMgYW4gZXJyb3IuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7VHJhbnNwb3J0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuVHJhbnNwb3J0LnByb3RvdHlwZS5vbkVycm9yID0gZnVuY3Rpb24gKG1zZywgZGVzYykge1xuICB2YXIgZXJyID0gbmV3IEVycm9yKG1zZyk7XG4gIGVyci50eXBlID0gJ1RyYW5zcG9ydEVycm9yJztcbiAgZXJyLmRlc2NyaXB0aW9uID0gZGVzYztcbiAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPcGVucyB0aGUgdHJhbnNwb3J0LlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuVHJhbnNwb3J0LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICBpZiAoJ2Nsb3NlZCcgPT09IHRoaXMucmVhZHlTdGF0ZSB8fCAnJyA9PT0gdGhpcy5yZWFkeVN0YXRlKSB7XG4gICAgdGhpcy5yZWFkeVN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMuZG9PcGVuKCk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2xvc2VzIHRoZSB0cmFuc3BvcnQuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuVHJhbnNwb3J0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCdvcGVuaW5nJyA9PT0gdGhpcy5yZWFkeVN0YXRlIHx8ICdvcGVuJyA9PT0gdGhpcy5yZWFkeVN0YXRlKSB7XG4gICAgdGhpcy5kb0Nsb3NlKCk7XG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2VuZHMgbXVsdGlwbGUgcGFja2V0cy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBwYWNrZXRzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5UcmFuc3BvcnQucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbiAocGFja2V0cykge1xuICBpZiAoJ29wZW4nID09PSB0aGlzLnJlYWR5U3RhdGUpIHtcbiAgICB0aGlzLndyaXRlKHBhY2tldHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNwb3J0IG5vdCBvcGVuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogQ2FsbGVkIHVwb24gb3BlblxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblRyYW5zcG9ydC5wcm90b3R5cGUub25PcGVuID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlYWR5U3RhdGUgPSAnb3Blbic7XG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuICB0aGlzLmVtaXQoJ29wZW4nKTtcbn07XG5cbi8qKlxuICogQ2FsbGVkIHdpdGggZGF0YS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZGF0YVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuVHJhbnNwb3J0LnByb3RvdHlwZS5vbkRhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB2YXIgcGFja2V0ID0gcGFyc2VyLmRlY29kZVBhY2tldChkYXRhLCB0aGlzLnNvY2tldC5iaW5hcnlUeXBlKTtcbiAgdGhpcy5vblBhY2tldChwYWNrZXQpO1xufTtcblxuLyoqXG4gKiBDYWxsZWQgd2l0aCBhIGRlY29kZWQgcGFja2V0LlxuICovXG5cblRyYW5zcG9ydC5wcm90b3R5cGUub25QYWNrZXQgPSBmdW5jdGlvbiAocGFja2V0KSB7XG4gIHRoaXMuZW1pdCgncGFja2V0JywgcGFja2V0KTtcbn07XG5cbi8qKlxuICogQ2FsbGVkIHVwb24gY2xvc2UuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuVHJhbnNwb3J0LnByb3RvdHlwZS5vbkNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlYWR5U3RhdGUgPSAnY2xvc2VkJztcbiAgdGhpcy5lbWl0KCdjbG9zZScpO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/engine.io-client/lib/transport.js\n")},"./node_modules/engine.io-client/lib/transports/index.js":function(module,exports,__webpack_require__){eval("/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = __webpack_require__(/*! xmlhttprequest-ssl */ \"./node_modules/engine.io-client/lib/xmlhttprequest.js\");\nvar XHR = __webpack_require__(/*! ./polling-xhr */ \"./node_modules/engine.io-client/lib/transports/polling-xhr.js\");\nvar JSONP = __webpack_require__(/*! ./polling-jsonp */ \"./node_modules/engine.io-client/lib/transports/polling-jsonp.js\");\nvar websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/engine.io-client/lib/transports/websocket.js\");\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZW5naW5lLmlvLWNsaWVudC9saWIvdHJhbnNwb3J0cy9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL05lb0Fzc2lzdC8uL25vZGVfbW9kdWxlcy9lbmdpbmUuaW8tY2xpZW50L2xpYi90cmFuc3BvcnRzL2luZGV4LmpzPzZhNDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cblxudmFyIFhNTEh0dHBSZXF1ZXN0ID0gcmVxdWlyZSgneG1saHR0cHJlcXVlc3Qtc3NsJyk7XG52YXIgWEhSID0gcmVxdWlyZSgnLi9wb2xsaW5nLXhocicpO1xudmFyIEpTT05QID0gcmVxdWlyZSgnLi9wb2xsaW5nLWpzb25wJyk7XG52YXIgd2Vic29ja2V0ID0gcmVxdWlyZSgnLi93ZWJzb2NrZXQnKTtcblxuLyoqXG4gKiBFeHBvcnQgdHJhbnNwb3J0cy5cbiAqL1xuXG5leHBvcnRzLnBvbGxpbmcgPSBwb2xsaW5nO1xuZXhwb3J0cy53ZWJzb2NrZXQgPSB3ZWJzb2NrZXQ7XG5cbi8qKlxuICogUG9sbGluZyB0cmFuc3BvcnQgcG9seW1vcnBoaWMgY29uc3RydWN0b3IuXG4gKiBEZWNpZGVzIG9uIHhociB2cyBqc29ucCBiYXNlZCBvbiBmZWF0dXJlIGRldGVjdGlvbi5cbiAqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb2xsaW5nIChvcHRzKSB7XG4gIHZhciB4aHI7XG4gIHZhciB4ZCA9IGZhbHNlO1xuICB2YXIgeHMgPSBmYWxzZTtcbiAgdmFyIGpzb25wID0gZmFsc2UgIT09IG9wdHMuanNvbnA7XG5cbiAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgaXNTU0wgPSAnaHR0cHM6JyA9PT0gbG9jYXRpb24ucHJvdG9jb2w7XG4gICAgdmFyIHBvcnQgPSBsb2NhdGlvbi5wb3J0O1xuXG4gICAgLy8gc29tZSB1c2VyIGFnZW50cyBoYXZlIGVtcHR5IGBsb2NhdGlvbi5wb3J0YFxuICAgIGlmICghcG9ydCkge1xuICAgICAgcG9ydCA9IGlzU1NMID8gNDQzIDogODA7XG4gICAgfVxuXG4gICAgeGQgPSBvcHRzLmhvc3RuYW1lICE9PSBsb2NhdGlvbi5ob3N0bmFtZSB8fCBwb3J0ICE9PSBvcHRzLnBvcnQ7XG4gICAgeHMgPSBvcHRzLnNlY3VyZSAhPT0gaXNTU0w7XG4gIH1cblxuICBvcHRzLnhkb21haW4gPSB4ZDtcbiAgb3B0cy54c2NoZW1lID0geHM7XG4gIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdChvcHRzKTtcblxuICBpZiAoJ29wZW4nIGluIHhociAmJiAhb3B0cy5mb3JjZUpTT05QKSB7XG4gICAgcmV0dXJuIG5ldyBYSFIob3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFqc29ucCkgdGhyb3cgbmV3IEVycm9yKCdKU09OUCBkaXNhYmxlZCcpO1xuICAgIHJldHVybiBuZXcgSlNPTlAob3B0cyk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/engine.io-client/lib/transports/index.js\n")},"./node_modules/engine.io-client/lib/transports/polling-jsonp.js":function(module,exports,__webpack_require__){eval("/**\n * Module requirements.\n */\n\nvar Polling = __webpack_require__(/*! ./polling */ \"./node_modules/engine.io-client/lib/transports/polling.js\");\nvar inherit = __webpack_require__(/*! component-inherit */ \"./node_modules/component-inherit/index.js\");\nvar globalThis = __webpack_require__(/*! ../globalThis */ \"./node_modules/engine.io-client/lib/globalThis.browser.js\");\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n callbacks = globalThis.___eio = (globalThis.___eio || []);\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (typeof addEventListener === 'function') {\n addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '