vue-office/examples/dist/js/index.7df5482e.js
2023-01-04 16:46:00 +08:00

45 lines
3.0 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){var t={4811:function(t,l,e){"use strict";var i=e(7005),n=function(){var t=this,l=t._self._c;return l("div",{attrs:{id:"app"}},[l("el-tabs",{attrs:{type:"card"},model:{value:t.activeName,callback:function(l){t.activeName=l},expression:"activeName"}},[l("el-tab-pane",{attrs:{label:"docx文件预览",name:"DOCX"}},[l("docx-demo")],1),l("el-tab-pane",{attrs:{label:"excel文件预览",name:"EXCEL"}},[l("excel-demo")],1),l("el-tab-pane",{attrs:{label:"pdf文件预览",name:"PDF"}},[l("pdf-demo")],1)],1)],1)},c=[],s=function(){var t=this,l=t._self._c;return l("div",{attrs:{id:"docx-demo"}},[l("div",{staticClass:"operate-area"},[l("div",{staticStyle:{width:"300px"}},[l("el-radio-group",{attrs:{size:"small"},model:{value:t.type,callback:function(l){t.type=l},expression:"type"}},[l("el-radio-button",{attrs:{label:"url"}},[t._v("远程文件地址")]),l("el-radio-button",{attrs:{label:"upload"}},[t._v("上传本地文件")])],1)],1),"url"===t.type?l("el-input",{attrs:{placeholder:"请输入doxc文件地址"},model:{value:t.inputSrc,callback:function(l){t.inputSrc=l},expression:"inputSrc"}}):t._e(),"url"===t.type?l("el-button",{staticStyle:{"margin-left":"10px"},attrs:{type:"primary"},on:{click:function(l){t.src=t.inputSrc}}},[t._v("预览")]):t._e(),"url"!==t.type?l("el-upload",{attrs:{limit:1,"file-list":t.fileList,accept:".docx",beforeUpload:t.beforeUpload,action:""}},[l("el-button",{attrs:{size:"small",type:"warning"}},[t._v("点击上传")])],1):t._e()],1),l("vue-office-docx",{attrs:{src:t.src}})],1)},d=[],a=function(){var t=this,l=t._self._c;return l("div",{ref:"vue-office-docx",staticClass:"vue-office-docx"})},u=[];const o=e(9531);function r(t,l={}){return"string"===typeof t?b(t,l):Promise.resolve(t)}function b(t,l){return fetch(t,l).then((t=>200!==t.status?Promise.reject(t):t))}function h(t,l){if(!t)return l.innerHTML="",Promise.resolve();let e;return t instanceof Blob?e=t:t instanceof Response?e=t.blob():t instanceof ArrayBuffer&&(e=new Blob([t])),o.renderAsync(e,l)}var Z={getData:r,render:h},m={name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},watch:{src:{handler(t){t?this.init():Z.render("",this.$refs["vue-office-docx"]).then((()=>{this.$emit("rendered")}))}}},mounted(){this.src&&this.init()},methods:{init(){Z.getData(this.src,this.requestOptions).then((t=>{Z.render(t,this.$refs["vue-office-docx"]).then((()=>{this.$emit("rendered")})).catch((t=>{Z.render("",this.$refs["vue-office-docx"]),this.$emit("error",t)}))})).catch((t=>{Z.render("",this.$refs["vue-office-docx"]),this.$emit("error",t)}))}}},y=m,p=e(8412),W=(0,p.Z)(y,a,u,!1,null,"0b354b6b",null),G=W.exports;G.install=function(t){t.component(G.name,G)};var X=G,Y={name:"DocxDemo",components:{VueOfficeDocx:X},data(){return{type:"url",inputSrc:"http://static.shanhuxueyuan.com/test6.docx",src:"http://static.shanhuxueyuan.com/test6.docx",fileList:[]}},methods:{beforeUpload(t){let l=new FileReader;return l.onload=t=>{let l=t.target.result;this.src=l},l.readAsArrayBuffer(t),!1}}},N=Y,V=(0,p.Z)(N,s,d,!1,null,"699588e6",null),M=V.exports,L=function(){var t=this,l=t._self._c;return l("div",{staticClass:"pdf-demo"},[l("vue-office-pdf",{attrs:{src:t.src},on:{rendered:t.rendered}})],1)},I=[],w=e(6779),f=e.n(w),R={name:"PdfDemo",components:{VueOfficePdf:f()},data(){return{src:"http://static.shanhuxueyuan.com/demo/qiniu.pdf"}},methods:{rendered(){console.log("加载完成")}}},T=R,z=(0,p.Z)(T,L,I,!1,null,"22acaaa4",null),x=z.exports,S=function(){var t=this,l=t._self._c;return l("div",{staticStyle:{width:"500px",overflow:"hidden",position:"relative"}},[l("vue-office-excel",{attrs:{src:t.src}})],1)},k=[],C=e(5221),J=e.n(C),g={name:"ExcelDemo",components:{VueOfficeExcel:J()},data(){return{src:"http://static.shanhuxueyuan.com/demo/excel.xlsx"}}},F=g,j=(0,p.Z)(F,S,k,!1,null,"0d069ebe",null),v=j.exports,D={name:"App",components:{DocxDemo:M,PdfDemo:x,ExcelDemo:v},data(){return{activeName:"DOCX"}},methods:{}},U=D,O=(0,p.Z)(U,n,c,!1,null,null,null),K=O.exports,E=e(4517),H=e.n(E);i["default"].config.productionTip=!1,i["default"].use(H()),new i["default"]({render:t=>t(K)}).$mount("#app")},5221:function(t){(function(l,e){t.exports=e()})("undefined"!==typeof self&&self,(function(){return function(){var t={715:function(t,l,e){(function(l){t.exports=l()})((function(){var t;return function(){function t(l,e,i){function n(s,d){if(!e[s]){if(!l[s]){var a=void 0;if(!d&&a)return require(s,!0);if(c)return c(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var o=e[s]={exports:{}};l[s][0].call(o.exports,(function(t){var e=l[s][1][t];return n(e||t)}),o,o.exports,t,l,e,i)}return e[s].exports}for(var c=void 0,s=0;s<i.length;s++)n(i[s]);return n}return t}()({1:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l,e,i,n,c,s){try{var d=t[c](s),a=d.value}catch(u){return void e(u)}d.done?l(a):Promise.resolve(a).then(i,n)}function c(t){return function(){var l=this,e=arguments;return new Promise((function(i,c){var s=t.apply(l,e);function d(t){n(s,i,c,d,a,"next",t)}function a(t){n(s,i,c,d,a,"throw",t)}d(void 0)}))}}function s(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function d(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,l,e){return l&&d(t.prototype,l),e&&d(t,e),t}var u=t("fs"),o=t("fast-csv"),r=t("dayjs/plugin/customParseFormat"),b=t("dayjs/plugin/utc"),h=t("dayjs").extend(r).extend(b),Z=t("../utils/stream-buf"),m=t("../utils/utils"),y=m.fs.exists,p={true:!0,false:!1,"#N/A":{error:"#N/A"},"#REF!":{error:"#REF!"},"#NAME?":{error:"#NAME?"},"#DIV/0!":{error:"#DIV/0!"},"#NULL!":{error:"#NULL!"},"#VALUE!":{error:"#VALUE!"},"#NUM!":{error:"#NUM!"}},W=function(){function t(l){s(this,t),this.workbook=l,this.worksheet=null}return a(t,[{key:"readFile",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e=e||{},t.next=3,y(l);case 3:if(t.sent){t.next=5;break}throw new Error("File not found: ".concat(l));case 5:return i=u.createReadStream(l),t.next=8,this.read(i,e);case 8:return n=t.sent,i.close(),t.abrupt("return",n);case 11:case"end":return t.stop()}}),t,this)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"read",value:function(t,l){var e=this;return l=l||{},new Promise((function(i,n){var c=e.workbook.addWorksheet(l.sheetName),s=l.dateFormats||["YYYY-MM-DD[T]HH:mm:ssZ","YYYY-MM-DD[T]HH:mm:ss","MM-DD-YYYY","YYYY-MM-DD"],d=l.map||function(t){if(""===t)return null;var l=Number(t);if(!Number.isNaN(l)&&l!==1/0)return l;var e=s.reduce((function(l,e){if(l)return l;var i=h(t,e,!0);return i.isValid()?i:null}),null);if(e)return new Date(e.valueOf());var i=p[t];return void 0!==i?i:t},a=o.parse(l.parserOptions).on("data",(function(t){c.addRow(t.map(d))})).on("end",(function(){a.emit("worksheet",c)}));a.on("worksheet",i).on("error",n),t.pipe(a)}))}},{key:"createInputStream",value:function(){throw new Error("`CSV#createInputStream` is deprecated. You should use `CSV#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"write",value:function(t,l){var e=this;return new Promise((function(n,c){l=l||{};var s=e.workbook.getWorksheet(l.sheetName||l.sheetId),d=o.format(l.formatterOptions);t.on("finish",(function(){n()})),d.on("error",c),d.pipe(t);var a=l,u=a.dateFormat,r=a.dateUTC,b=l.map||function(t){if(t){if(t.text||t.hyperlink)return t.hyperlink||t.text||"";if(t.formula||t.result)return t.result||"";if(t instanceof Date)return u?r?h.utc(t).format(u):h(t).format(u):r?h.utc(t).format():h(t).format();if(t.error)return t.error;if("object"===i(t))return JSON.stringify(t)}return t},Z=void 0===l.includeEmptyRows||l.includeEmptyRows,m=1;s&&s.eachRow((function(t,l){if(Z)while(m++<l-1)d.write([]);var e=t.values;e.shift(),d.write(e.map(b)),m=l})),d.end()}))}},{key:"writeFile",value:function(t,l){l=l||{};var e={encoding:l.encoding||"utf8"},i=u.createWriteStream(t,e);return this.write(i,l)}},{key:"writeBuffer",value:function(){var t=c(regeneratorRuntime.mark((function t(l){var e;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e=new Z,t.next=3,this.write(e,l);case 3:return t.abrupt("return",e.read());case 4:case"end":return t.stop()}}),t,this)})));function l(l){return t.apply(this,arguments)}return l}()}]),t}();l.exports=W},{"../utils/stream-buf":23,"../utils/utils":26,dayjs:336,"dayjs/plugin/customParseFormat":337,"dayjs/plugin/utc":338,"fast-csv":369,fs:215}],2:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/col-cache"),d=function(){function t(l,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(i(this,t),e)if("string"===typeof e){var c=s.decodeAddress(e);this.nativeCol=c.col+n,this.nativeColOff=0,this.nativeRow=c.row+n,this.nativeRowOff=0}else void 0!==e.nativeCol?(this.nativeCol=e.nativeCol||0,this.nativeColOff=e.nativeColOff||0,this.nativeRow=e.nativeRow||0,this.nativeRowOff=e.nativeRowOff||0):void 0!==e.col?(this.col=e.col+n,this.row=e.row+n):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);else this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;this.worksheet=l}return c(t,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(t){this.nativeCol=Math.floor(t),this.nativeColOff=Math.floor((t-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(t){this.nativeRow=Math.floor(t),this.nativeRowOff=Math.floor((t-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(1e4*this.worksheet.getColumn(this.nativeCol+1).width):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(1e4*this.worksheet.getRow(this.nativeRow+1).height):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(t){this.nativeCol=t.nativeCol,this.nativeColOff=t.nativeColOff,this.nativeRow=t.nativeRow,this.nativeRowOff=t.nativeRowOff}}],[{key:"asInstance",value:function(l){return l instanceof t||null==l?l:new t(l)}}]),t}();l.exports=d},{"../utils/col-cache":19}],3:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/col-cache"),d=t("../utils/under-dash"),a=t("./enums"),u=t("../utils/shared-formula"),o=u.slideFormula,r=t("./note"),b=function(){function t(l,e,n){if(i(this,t),!l||!e)throw new Error("A Cell needs a Row");this._row=l,this._column=e,s.validateAddress(n),this._address=n,this._value=L.create(t.Types.Null,this),this.style=this._mergeStyle(l.style,e.style,{}),this._mergeCount=0}return c(t,[{key:"destroy",value:function(){delete this.style,delete this._value,delete this._row,delete this._column,delete this._address}},{key:"_mergeStyle",value:function(t,l,e){var i=t&&t.numFmt||l&&l.numFmt;i&&(e.numFmt=i);var n=t&&t.font||l&&l.font;n&&(e.font=n);var c=t&&t.alignment||l&&l.alignment;c&&(e.alignment=c);var s=t&&t.border||l&&l.border;s&&(e.border=s);var d=t&&t.fill||l&&l.fill;d&&(e.fill=d);var a=t&&t.protection||l&&l.protection;return a&&(e.protection=a),e}},{key:"toCsvString",value:function(){return this._value.toCsvString()}},{key:"addMergeRef",value:function(){this._mergeCount++}},{key:"releaseMergeRef",value:function(){this._mergeCount--}},{key:"merge",value:function(l,e){this._value.release(),this._value=L.create(t.Types.Merge,this,l),e||(this.style=l.style)}},{key:"unmerge",value:function(){this.type===t.Types.Merge&&(this._value.release(),this._value=L.create(t.Types.Null,this),this.style=this._mergeStyle(this._row.style,this._column.style,{}))}},{key:"isMergedTo",value:function(l){return this._value.type===t.Types.Merge&&this._value.isMergedTo(l)}},{key:"toString",value:function(){return this.text}},{key:"_upgradeToHyperlink",value:function(l){this.type===t.Types.String&&(this._value=L.create(t.Types.Hyperlink,this,{text:this._value.value,hyperlink:l}))}},{key:"addName",value:function(t){this.workbook.definedNames.addEx(this.fullAddress,t)}},{key:"removeName",value:function(t){this.workbook.definedNames.removeEx(this.fullAddress,t)}},{key:"removeAllNames",value:function(){this.workbook.definedNames.removeAllNames(this.fullAddress)}},{key:"worksheet",get:function(){return this._row.worksheet}},{key:"workbook",get:function(){return this._row.worksheet.workbook}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(t){this.style.numFmt=t}},{key:"font",get:function(){return this.style.font},set:function(t){this.style.font=t}},{key:"alignment",get:function(){return this.style.alignment},set:function(t){this.style.alignment=t}},{key:"border",get:function(){return this.style.border},set:function(t){this.style.border=t}},{key:"fill",get:function(){return this.style.fill},set:function(t){this.style.fill=t}},{key:"protection",get:function(){return this.style.protection},set:function(t){this.style.protection=t}},{key:"address",get:function(){return this._address}},{key:"row",get:function(){return this._row.number}},{key:"col",get:function(){return this._column.number}},{key:"$col$row",get:function(){return"$".concat(this._column.letter,"$").concat(this.row)}},{key:"type",get:function(){return this._value.type}},{key:"effectiveType",get:function(){return this._value.effectiveType}},{key:"isMerged",get:function(){return this._mergeCount>0||this.type===t.Types.Merge}},{key:"master",get:function(){return this.type===t.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===t.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(l){this.type!==t.Types.Merge?(this._value.release(),this._value=L.create(L.getType(l),this,l)):this._value.master.value=l}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(t){this._comment=new r(t)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return d.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var t=this._row.worksheet;return{sheetName:t.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(t){this.names=[t]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(t){var l=this,e=this.workbook.definedNames;e.removeAllNames(this.fullAddress),t.forEach((function(t){e.addEx(l.fullAddress,t)}))}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(t){this._dataValidations.add(this.address,t)}},{key:"model",get:function(){var t=this._value.model;return t.style=this.style,this._comment&&(t.comment=this._comment.model),t},set:function(t){if(this._value.release(),this._value=L.create(t.type,this),this._value.model=t,t.comment)switch(t.comment.type){case"note":this._comment=r.fromModel(t.comment);break}t.style?this.style=t.style:this.style={}}}]),t}();b.Types=a.ValueType;var h=function(){function t(l){i(this,t),this.model={address:l.address,type:b.Types.Null}}return c(t,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(t){}},{key:"type",get:function(){return b.Types.Null}},{key:"effectiveType",get:function(){return b.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),Z=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Number,value:e}}return c(t,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.Number}},{key:"effectiveType",get:function(){return b.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),m=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.String,value:e}}return c(t,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.String}},{key:"effectiveType",get:function(){return b.Types.String}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),y=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.String,value:e}}return c(t,[{key:"toString",value:function(){return this.model.value.richText.map((function(t){return t.text})).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.RichText}},{key:"effectiveType",get:function(){return b.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),p=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Date,value:e}}return c(t,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.Date}},{key:"effectiveType",get:function(){return b.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),W=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Hyperlink,text:e?e.text:void 0,hyperlink:e?e.hyperlink:void 0},e&&e.tooltip&&(this.model.tooltip=e.tooltip)}return c(t,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var t={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(t.tooltip=this.model.tooltip),t},set:function(t){this.model={text:t.text,hyperlink:t.hyperlink},t.tooltip&&(this.model.tooltip=t.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(t){this.model.text=t}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(t){this.model.hyperlink=t}},{key:"type",get:function(){return b.Types.Hyperlink}},{key:"effectiveType",get:function(){return b.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),G=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Merge,master:e?e.address:void 0},this._master=e,e&&e.addMergeRef()}return c(t,[{key:"isMergedTo",value:function(t){return t===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(t){t instanceof b?(this._master&&this._master.releaseMergeRef(),t.addMergeRef(),this._master=t):this._master.value=t}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return b.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),X=function(){function t(l,e){i(this,t),this.cell=l,this.model={address:l.address,type:b.Types.Formula,shareType:e?e.shareType:void 0,ref:e?e.ref:void 0,formula:e?e.formula:void 0,sharedFormula:e?e.sharedFormula:void 0,result:e?e.result:void 0}}return c(t,[{key:"_copyModel",value:function(t){var l={},e=function(e){var i=t[e];i&&(l[e]=i)};return e("formula"),e("result"),e("ref"),e("shareType"),e("sharedFormula"),l}},{key:"validate",value:function(t){switch(L.getType(t)){case b.Types.Null:case b.Types.String:case b.Types.Number:case b.Types.Date:break;case b.Types.Hyperlink:case b.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var t=this.cell.worksheet,l=t.findCell(this.model.sharedFormula);this._translatedFormula=l&&o(l.formula,l.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(t){this.model=this._copyModel(t)}},{key:"dependencies",get:function(){var t=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),l=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:t,cells:l}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(t){this.model.formula=t}},{key:"formulaType",get:function(){return this.model.formula?a.FormulaType.Master:this.model.sharedFormula?a.FormulaType.Shared:a.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(t){this.model.result=t}},{key:"type",get:function(){return b.Types.Formula}},{key:"effectiveType",get:function(){var t=this.model.result;return null===t||void 0===t?a.ValueType.Null:t instanceof String||"string"===typeof t?a.ValueType.String:"number"===typeof t?a.ValueType.Number:t instanceof Date?a.ValueType.Date:t.text&&t.hyperlink?a.ValueType.Hyperlink:t.formula?a.ValueType.Formula:a.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),Y=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.SharedString,value:e}}return c(t,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.SharedString}},{key:"effectiveType",get:function(){return b.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),N=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Boolean,value:e}}return c(t,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.Boolean}},{key:"effectiveType",get:function(){return b.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),V=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.Error,value:e}}return c(t,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(t){this.model.value=t}},{key:"type",get:function(){return b.Types.Error}},{key:"effectiveType",get:function(){return b.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),M=function(){function t(l,e){i(this,t),this.model={address:l.address,type:b.Types.String,value:JSON.stringify(e),rawValue:e}}return c(t,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(t){this.model.rawValue=t,this.model.value=JSON.stringify(t)}},{key:"type",get:function(){return b.Types.String}},{key:"effectiveType",get:function(){return b.Types.String}},{key:"address",get:function(){return this.model.address},set:function(t){this.model.address=t}}]),t}(),L={getType:function(t){return null===t||void 0===t?b.Types.Null:t instanceof String||"string"===typeof t?b.Types.String:"number"===typeof t?b.Types.Number:"boolean"===typeof t?b.Types.Boolean:t instanceof Date?b.Types.Date:t.text&&t.hyperlink?b.Types.Hyperlink:t.formula||t.sharedFormula?b.Types.Formula:t.richText?b.Types.RichText:t.sharedString?b.Types.SharedString:t.error?b.Types.Error:b.Types.JSON},types:[{t:b.Types.Null,f:h},{t:b.Types.Number,f:Z},{t:b.Types.String,f:m},{t:b.Types.Date,f:p},{t:b.Types.Hyperlink,f:W},{t:b.Types.Formula,f:X},{t:b.Types.Merge,f:G},{t:b.Types.JSON,f:M},{t:b.Types.SharedString,f:Y},{t:b.Types.RichText,f:y},{t:b.Types.Boolean,f:N},{t:b.Types.Error,f:V}].reduce((function(t,l){return t[l.t]=l.f,t}),[]),create:function(t,l,e){var i=this.types[t];if(!i)throw new Error("Could not create Value of type ".concat(t));return new i(l,e)}};l.exports=b},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/under-dash"),d=t("./enums"),a=t("../utils/col-cache"),u=9,o=function(){function t(l,e,n){i(this,t),this._worksheet=l,this._number=e,!1!==n&&(this.defn=n)}return c(t,[{key:"toString",value:function(){return JSON.stringify({key:this.key,width:this.width,headers:this.headers.length?this.headers:void 0})}},{key:"equivalentTo",value:function(t){return this.width===t.width&&this.hidden===t.hidden&&this.outlineLevel===t.outlineLevel&&s.isEqual(this.style,t.style)}},{key:"eachCell",value:function(t,l){var e=this.number;l||(l=t,t=null),this._worksheet.eachRow(t,(function(t,i){l(t.getCell(e),i)}))}},{key:"_applyStyle",value:function(t,l){return this.style[t]=l,this.eachCell((function(e){e[t]=l})),l}},{key:"number",get:function(){return this._number}},{key:"worksheet",get:function(){return this._worksheet}},{key:"letter",get:function(){return a.n2l(this._number)}},{key:"isCustomWidth",get:function(){return void 0!==this.width&&this.width!==u}},{key:"defn",get:function(){return{header:this._header,key:this.key,width:this.width,style:this.style,hidden:this.hidden,outlineLevel:this.outlineLevel}},set:function(t){t?(this.key=t.key,this.width=void 0!==t.width?t.width:u,this.outlineLevel=t.outlineLevel,t.style?this.style=t.style:this.style={},this.header=t.header,this._hidden=!!t.hidden):(delete this._header,delete this._key,delete this.width,this.style={},this.outlineLevel=0)}},{key:"headers",get:function(){return this._header&&this._header instanceof Array?this._header:[this._header]}},{key:"header",get:function(){return this._header},set:function(t){var l=this;void 0!==t?(this._header=t,this.headers.forEach((function(t,e){l._worksheet.getCell(e+1,l.number).value=t}))):this._header=void 0}},{key:"key",get:function(){return this._key},set:function(t){var l=this._key&&this._worksheet.getColumnKey(this._key);l===this&&this._worksheet.deleteColumnKey(this._key),this._key=t,t&&this._worksheet.setColumnKey(this._key,this)}},{key:"hidden",get:function(){return!!this._hidden},set:function(t){this._hidden=t}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(t){this._outlineLevel=t}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth)return!1;if(this.hidden)return!1;if(this.outlineLevel)return!1;var t=this.style;return!t||!(t.font||t.numFmt||t.alignment||t.border||t.fill||t.protection)}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var t=[];return this.eachCell((function(l,e){l&&l.type!==d.ValueType.Null&&(t[e]=l.value)})),t},set:function(t){var l=this;if(t){var e=this.number,i=0;t.hasOwnProperty("0")&&(i=1),t.forEach((function(t,n){l._worksheet.getCell(n+i,e).value=t}))}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(t){this._applyStyle("numFmt",t)}},{key:"font",get:function(){return this.style.font},set:function(t){this._applyStyle("font",t)}},{key:"alignment",get:function(){return this.style.alignment},set:function(t){this._applyStyle("alignment",t)}},{key:"protection",get:function(){return this.style.protection},set:function(t){this._applyStyle("protection",t)}},{key:"border",get:function(){return this.style.border},set:function(t){this._applyStyle("border",t)}},{key:"fill",get:function(){return this.style.fill},set:function(t){this._applyStyle("fill",t)}}],[{key:"toModel",value:function(t){var l=[],e=null;return t&&t.forEach((function(t,i){t.isDefault?e&&(e=null):e&&t.equivalentTo(e)?e.max=i+1:(e={min:i+1,max:i+1,width:void 0!==t.width?t.width:u,style:t.style,isCustomWidth:t.isCustomWidth,hidden:t.hidden,outlineLevel:t.outlineLevel,collapsed:t.collapsed},l.push(e))})),l.length?l:void 0}},{key:"fromModel",value:function(l,e){e=e||[];var i=[],n=1,c=0;while(c<e.length){var s=e[c++];while(n<s.min)i.push(new t(l,n++));while(n<=s.max)i.push(new t(l,n++,s))}return i.length?i:null}}]),t}();l.exports=o},{"../utils/col-cache":19,"../utils/under-dash":25,"./enums":7}],5:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=function(){function t(l){i(this,t),this.model=l||{}}return c(t,[{key:"add",value:function(t,l){return this.model[t]=l}},{key:"find",value:function(t){return this.model[t]}},{key:"remove",value:function(t){this.model[t]=void 0}}]),t}();l.exports=s},{}],6:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/under-dash"),d=t("../utils/col-cache"),a=t("../utils/cell-matrix"),u=t("./range"),o=/[$](\w+)[$](\d+)(:[$](\w+)[$](\d+))?/,r=function(){function t(){i(this,t),this.matrixMap={}}return c(t,[{key:"getMatrix",value:function(t){var l=this.matrixMap[t]||(this.matrixMap[t]=new a);return l}},{key:"add",value:function(t,l){var e=d.decodeEx(t);this.addEx(e,l)}},{key:"addEx",value:function(t,l){var e=this.getMatrix(l);if(t.top)for(var i=t.left;i<=t.right;i++)for(var n=t.top;n<=t.bottom;n++){var c={sheetName:t.sheetName,address:d.n2l(i)+n,row:n,col:i};e.addCellEx(c)}else e.addCellEx(t)}},{key:"remove",value:function(t,l){var e=d.decodeEx(t);this.removeEx(e,l)}},{key:"removeEx",value:function(t,l){var e=this.getMatrix(l);e.removeCellEx(t)}},{key:"removeAllNames",value:function(t){s.each(this.matrixMap,(function(l){l.removeCellEx(t)}))}},{key:"forEach",value:function(t){s.each(this.matrixMap,(function(l,e){l.forEach((function(l){t(e,l)}))}))}},{key:"getNames",value:function(t){return this.getNamesEx(d.decodeEx(t))}},{key:"getNamesEx",value:function(t){return s.map(this.matrixMap,(function(l,e){return l.findCellEx(t)&&e})).filter(Boolean)}},{key:"_explore",value:function(t,l){l.mark=!1;var e,i,n=l.sheetName,c=new u(l.row,l.col,l.row,l.col,n);function s(e,i){var s=t.findCellAt(n,e,l.col);return!(!s||!s.mark)&&(c[i]=e,s.mark=!1,!0)}for(i=l.row-1;s(i,"top");i--);for(i=l.row+1;s(i,"bottom");i++);function d(l,e){var s=[];for(i=c.top;i<=c.bottom;i++){var d=t.findCellAt(n,i,l);if(!d||!d.mark)return!1;s.push(d)}c[e]=l;for(var a=0;a<s.length;a++)s[a].mark=!1;return!0}for(e=l.col-1;d(e,"left");e--);for(e=l.col+1;d(e,"right");e++);return c}},{key:"getRanges",value:function(t,l){var e=this;if(l=l||this.matrixMap[t],!l)return{name:t,ranges:[]};l.forEach((function(t){t.mark=!0}));var i=l.map((function(t){return t.mark&&e._explore(l,t)})).filter(Boolean).map((function(t){return t.$shortRange}));return{name:t,ranges:i}}},{key:"normaliseMatrix",value:function(t,l){t.forEachInSheet(l,(function(t,l,e){t&&(t.row===l&&t.col===e||(t.row=l,t.col=e,t.address=d.n2l(e)+l))}))}},{key:"spliceRows",value:function(t,l,e,i){var n=this;s.each(this.matrixMap,(function(c){c.spliceRows(t,l,e,i),n.normaliseMatrix(c,t)}))}},{key:"spliceColumns",value:function(t,l,e,i){var n=this;s.each(this.matrixMap,(function(c){c.spliceColumns(t,l,e,i),n.normaliseMatrix(c,t)}))}},{key:"model",get:function(){var t=this;return s.map(this.matrixMap,(function(l,e){return t.getRanges(e,l)})).filter((function(t){return t.ranges.length}))},set:function(t){var l=this.matrixMap={};t.forEach((function(t){var e=l[t.name]=new a;t.ranges.forEach((function(t){o.test(t.split("!").pop()||"")&&e.addCell(t)}))}))}}]),t}();l.exports=r},{"../utils/cell-matrix":18,"../utils/col-cache":19,"../utils/under-dash":25,"./range":10}],7:[function(t,l,e){"use strict";l.exports={ValueType:{Null:0,Merge:1,Number:2,String:3,Date:4,Hyperlink:5,Formula:6,SharedString:7,RichText:8,Boolean:9,Error:10},FormulaType:{None:0,Master:1,Shared:2},RelationshipType:{None:0,OfficeDocument:1,Worksheet:2,CalcChain:3,SharedStrings:4,Styles:5,Theme:6,Hyperlink:7},DocumentType:{Xlsx:1},ReadingOrder:{LeftToRight:1,RightToLeft:2},ErrorValue:{NotApplicable:"#N/A",Ref:"#REF!",Name:"#NAME?",DivZero:"#DIV/0!",Null:"#NULL!",Value:"#VALUE!",Num:"#NUM!"}}},{}],8:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/col-cache"),d=t("./anchor"),a=function(){function t(l,e){i(this,t),this.worksheet=l,this.model=e}return c(t,[{key:"model",get:function(){switch(this.type){case"background":return{type:this.type,imageId:this.imageId};case"image":return{type:this.type,imageId:this.imageId,hyperlinks:this.range.hyperlinks,range:{tl:this.range.tl.model,br:this.range.br&&this.range.br.model,ext:this.range.ext,editAs:this.range.editAs}};default:throw new Error("Invalid Image Type")}},set:function(t){var l=t.type,e=t.imageId,i=t.range,n=t.hyperlinks;if(this.type=l,this.imageId=e,"image"===l)if("string"===typeof i){var c=s.decode(i);this.range={tl:new d(this.worksheet,{col:c.left,row:c.top},-1),br:new d(this.worksheet,{col:c.right,row:c.bottom},0),editAs:"oneCell"}}else this.range={tl:new d(this.worksheet,i.tl,0),br:i.br&&new d(this.worksheet,i.br,0),ext:i.ext,editAs:i.editAs,hyperlinks:n||i.hyperlinks}}}]),t}();l.exports=a},{"../utils/col-cache":19,"./anchor":2}],9:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}var d=t("../utils/under-dash"),a=function(){function t(l){n(this,t),this.note=l}return s(t,[{key:"model",get:function(){var l=null;switch(i(this.note)){case"string":l={type:"note",note:{texts:[{text:this.note}]}};break;default:l={type:"note",note:this.note};break}return d.deepMerge({},t.DEFAULT_CONFIGS,l)},set:function(t){var l=t.note,e=l.texts;1===e.length&&1===Object.keys(e[0]).length?this.note=e[0].text:this.note=l}}],[{key:"fromModel",value:function(l){var e=new t;return e.model=l,e}}]),t}();a.DEFAULT_CONFIGS={note:{margins:{insetmode:"auto",inset:[.13,.13,.25,.25]},protection:{locked:"True",lockText:"True"},editAs:"absolute"}},l.exports=a},{"../utils/under-dash":25}],10:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/col-cache"),d=function(){function t(){i(this,t),this.decode(arguments)}return c(t,[{key:"setTLBR",value:function(t,l,e,i,n){if(arguments.length<4){var c=s.decodeAddress(t),d=s.decodeAddress(l);this.model={top:Math.min(c.row,d.row),left:Math.min(c.col,d.col),bottom:Math.max(c.row,d.row),right:Math.max(c.col,d.col),sheetName:e},this.setTLBR(c.row,c.col,d.row,d.col,n)}else this.model={top:Math.min(t,e),left:Math.min(l,i),bottom:Math.max(t,e),right:Math.max(l,i),sheetName:n}}},{key:"decode",value:function(l){switch(l.length){case 5:this.setTLBR(l[0],l[1],l[2],l[3],l[4]);break;case 4:this.setTLBR(l[0],l[1],l[2],l[3]);break;case 3:this.setTLBR(l[0],l[1],l[2]);break;case 2:this.setTLBR(l[0],l[1]);break;case 1:var e=l[0];if(e instanceof t)this.model={top:e.model.top,left:e.model.left,bottom:e.model.bottom,right:e.model.right,sheetName:e.sheetName};else if(e instanceof Array)this.decode(e);else if(e.top&&e.left&&e.bottom&&e.right)this.model={top:e.top,left:e.left,bottom:e.bottom,right:e.right,sheetName:e.sheetName};else{var i=s.decodeEx(e);i.top?this.model={top:i.top,left:i.left,bottom:i.bottom,right:i.right,sheetName:i.sheetName}:this.model={top:i.row,left:i.col,bottom:i.row,right:i.col,sheetName:i.sheetName}}break;case 0:this.model={top:0,left:0,bottom:0,right:0};break;default:throw new Error("Invalid number of arguments to _getDimensions() - ".concat(l.length))}}},{key:"expand",value:function(t,l,e,i){(!this.model.top||t<this.top)&&(this.top=t),(!this.model.left||l<this.left)&&(this.left=l),(!this.model.bottom||e>this.bottom)&&(this.bottom=e),(!this.model.right||i>this.right)&&(this.right=i)}},{key:"expandRow",value:function(t){if(t){var l=t.dimensions,e=t.number;l&&this.expand(e,l.min,e,l.max)}}},{key:"expandToAddress",value:function(t){var l=s.decodeEx(t);this.expand(l.row,l.col,l.row,l.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(t){return(!t.sheetName||!this.sheetName||t.sheetName===this.sheetName)&&!(t.bottom<this.top)&&!(t.top>this.bottom)&&!(t.right<this.left)&&!(t.left>this.right)}},{key:"contains",value:function(t){var l=s.decodeEx(t);return this.containsEx(l)}},{key:"containsEx",value:function(t){return(!t.sheetName||!this.sheetName||t.sheetName===this.sheetName)&&t.row>=this.top&&t.row<=this.bottom&&t.col>=this.left&&t.col<=this.right}},{key:"forEachAddress",value:function(t){for(var l=this.left;l<=this.right;l++)for(var e=this.top;e<=this.bottom;e++)t(s.encodeAddress(e,l),e,l)}},{key:"top",get:function(){return this.model.top||1},set:function(t){this.model.top=t}},{key:"left",get:function(){return this.model.left||1},set:function(t){this.model.left=t}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(t){this.model.bottom=t}},{key:"right",get:function(){return this.model.right||1},set:function(t){this.model.right=t}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(t){this.model.sheetName=t}},{key:"_serialisedSheetName",get:function(){var t=this.model.sheetName;return t?/^[a-zA-Z0-9]*$/.test(t)?"".concat(t,"!"):"'".concat(t,"'!"):""}},{key:"tl",get:function(){return s.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(s.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return s.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(s.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),t}();l.exports=d},{"../utils/col-cache":19}],11:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/under-dash"),d=t("./enums"),a=t("../utils/col-cache"),u=t("./cell"),o=function(){function t(l,e){i(this,t),this._worksheet=l,this._number=e,this._cells=[],this.style={},this.outlineLevel=0}return c(t,[{key:"commit",value:function(){this._worksheet._commitRow(this)}},{key:"destroy",value:function(){delete this._worksheet,delete this._cells,delete this.style}},{key:"findCell",value:function(t){return this._cells[t-1]}},{key:"getCellEx",value:function(t){var l=this._cells[t.col-1];if(!l){var e=this._worksheet.getColumn(t.col);l=new u(this,e,t.address),this._cells[t.col-1]=l}return l}},{key:"getCell",value:function(t){if("string"===typeof t){var l=this._worksheet.getColumnKey(t);t=l?l.number:a.l2n(t)}return this._cells[t-1]||this.getCellEx({address:a.encodeAddress(this._number,t),row:this._number,col:t})}},{key:"splice",value:function(t,l){for(var e=t+l,i=arguments.length,n=new Array(i>2?i-2:0),c=2;c<i;c++)n[c-2]=arguments[c];var s,d,a,u=n.length-l,o=this._cells.length;if(u<0)for(s=t+n.length;s<=o;s++)a=this._cells[s-1],d=this._cells[s-u-1],d?(a=this.getCell(s),a.value=d.value,a.style=d.style,a._comment=d._comment):a&&(a.value=null,a.style={},a._comment=void 0);else if(u>0)for(s=o;s>=e;s--)d=this._cells[s-1],d?(a=this.getCell(s+u),a.value=d.value,a.style=d.style,a._comment=d._comment):this._cells[s+u-1]=void 0;for(s=0;s<n.length;s++)a=this.getCell(t+s),a.value=n[s],a.style={},a._comment=void 0}},{key:"eachCell",value:function(t,l){if(l||(l=t,t=null),t&&t.includeEmpty)for(var e=this._cells.length,i=1;i<=e;i++)l(this.getCell(i),i);else this._cells.forEach((function(t,e){t&&t.type!==d.ValueType.Null&&l(t,e+1)}))}},{key:"addPageBreak",value:function(t,l){var e=this._worksheet,i=Math.max(0,t-1)||0,n=Math.max(0,l-1)||16838,c={id:this._number,max:n,man:1};i&&(c.min=i),e.rowBreaks.push(c)}},{key:"_applyStyle",value:function(t,l){return this.style[t]=l,this._cells.forEach((function(e){e&&(e[t]=l)})),l}},{key:"number",get:function(){return this._number}},{key:"worksheet",get:function(){return this._worksheet}},{key:"values",get:function(){var t=[];return this._cells.forEach((function(l){l&&l.type!==d.ValueType.Null&&(t[l.col]=l.value)})),t},set:function(t){var l=this;if(this._cells=[],t)if(t instanceof Array){var e=0;t.hasOwnProperty("0")&&(e=1),t.forEach((function(t,i){void 0!==t&&(l.getCellEx({address:a.encodeAddress(l._number,i+e),row:l._number,col:i+e}).value=t)}))}else this._worksheet.eachColumnKey((function(e,i){void 0!==t[i]&&(l.getCellEx({address:a.encodeAddress(l._number,e.number),row:l._number,col:e.number}).value=t[i])}))}},{key:"hasValues",get:function(){return s.some(this._cells,(function(t){return t&&t.type!==d.ValueType.Null}))}},{key:"cellCount",get:function(){return this._cells.length}},{key:"actualCellCount",get:function(){var t=0;return this.eachCell((function(){t++})),t}},{key:"dimensions",get:function(){var t=0,l=0;return this._cells.forEach((function(e){e&&e.type!==d.ValueType.Null&&((!t||t>e.col)&&(t=e.col),l<e.col&&(l=e.col))})),t>0?{min:t,max:l}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(t){this._applyStyle("numFmt",t)}},{key:"font",get:function(){return this.style.font},set:function(t){this._applyStyle("font",t)}},{key:"alignment",get:function(){return this.style.alignment},set:function(t){this._applyStyle("alignment",t)}},{key:"protection",get:function(){return this.style.protection},set:function(t){this._applyStyle("protection",t)}},{key:"border",get:function(){return this.style.border},set:function(t){this._applyStyle("border",t)}},{key:"fill",get:function(){return this.style.fill},set:function(t){this._applyStyle("fill",t)}},{key:"hidden",get:function(){return!!this._hidden},set:function(t){this._hidden=t}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(t){this._outlineLevel=t}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var t=[],l=0,e=0;return this._cells.forEach((function(i){if(i){var n=i.model;n&&((!l||l>i.col)&&(l=i.col),e<i.col&&(e=i.col),t.push(n))}})),this.height||t.length?{cells:t,number:this.number,min:l,max:e,height:this.height,style:this.style,hidden:this.hidden,outlineLevel:this.outlineLevel,collapsed:this.collapsed}:null},set:function(t){var l,e=this;if(t.number!==this._number)throw new Error("Invalid row number in model");this._cells=[],t.cells.forEach((function(t){switch(t.type){case u.Types.Merge:break;default:var i;if(t.address)i=a.decodeAddress(t.address);else if(l){var n=l,c=n.row,s=l.col+1;i={row:c,col:s,address:a.encodeAddress(c,s),$col$row:"$".concat(a.n2l(s),"$").concat(c)}}l=i;var d=e.getCellEx(i);d.model=t;break}})),t.height?this.height=t.height:delete this.height,this.hidden=t.hidden,this.outlineLevel=t.outlineLevel||0,this.style=t.style&&JSON.parse(JSON.stringify(t.style))||{}}}]),t}();l.exports=o},{"../utils/col-cache":19,"../utils/under-dash":25,"./cell":3,"./enums":7}],12:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../utils/col-cache"),d=function(){function t(l,e,n){i(this,t),this.table=l,this.column=e,this.index=n}return c(t,[{key:"_set",value:function(t,l){this.table.cacheState(),this.column[t]=l}},{key:"name",get:function(){return this.column.name},set:function(t){this._set("name",t)}},{key:"filterButton",get:function(){return this.column.filterButton},set:function(t){this.column.filterButton=t}},{key:"style",get:function(){return this.column.style},set:function(t){this.column.style=t}},{key:"totalsRowLabel",get:function(){return this.column.totalsRowLabel},set:function(t){this._set("totalsRowLabel",t)}},{key:"totalsRowFunction",get:function(){return this.column.totalsRowFunction},set:function(t){this._set("totalsRowFunction",t)}},{key:"totalsRowResult",get:function(){return this.column.totalsRowResult},set:function(t){this._set("totalsRowResult",t)}},{key:"totalsRowFormula",get:function(){return this.column.totalsRowFormula},set:function(t){this._set("totalsRowFormula",t)}}]),t}(),a=function(){function t(l,e){i(this,t),this.worksheet=l,e&&(this.table=e,this.validate(),this.store())}return c(t,[{key:"getFormula",value:function(t){switch(t.totalsRowFunction){case"none":return null;case"average":return"SUBTOTAL(101,".concat(this.table.name,"[").concat(t.name,"])");case"countNums":return"SUBTOTAL(102,".concat(this.table.name,"[").concat(t.name,"])");case"count":return"SUBTOTAL(103,".concat(this.table.name,"[").concat(t.name,"])");case"max":return"SUBTOTAL(104,".concat(this.table.name,"[").concat(t.name,"])");case"min":return"SUBTOTAL(105,".concat(this.table.name,"[").concat(t.name,"])");case"stdDev":return"SUBTOTAL(106,".concat(this.table.name,"[").concat(t.name,"])");case"var":return"SUBTOTAL(107,".concat(this.table.name,"[").concat(t.name,"])");case"sum":return"SUBTOTAL(109,".concat(this.table.name,"[").concat(t.name,"])");case"custom":return t.totalsRowFormula;default:throw new Error("Invalid Totals Row Function: ".concat(t.totalsRowFunction))}}},{key:"validate",value:function(){var t=this,l=this.table,e=function(t,l,e){void 0===t[l]&&(t[l]=e)};e(l,"headerRow",!0),e(l,"totalsRow",!1),e(l,"style",{}),e(l.style,"theme","TableStyleMedium2"),e(l.style,"showFirstColumn",!1),e(l.style,"showLastColumn",!1),e(l.style,"showRowStripes",!1),e(l.style,"showColumnStripes",!1);var i=function(t,l){if(!t)throw new Error(l)};i(l.ref,"Table must have ref"),i(l.columns,"Table must have column definitions"),i(l.rows,"Table must have row definitions"),l.tl=s.decodeAddress(l.ref);var n=l.tl,c=n.row,d=n.col;i(c>0,"Table must be on valid row"),i(d>0,"Table must be on valid col");var a=this.width,u=this.filterHeight,o=this.tableHeight;l.autoFilterRef=s.encode(c,d,c+u-1,d+a-1),l.tableRef=s.encode(c,d,c+o-1,d+a-1),l.columns.forEach((function(l,n){i(l.name,"Column ".concat(n," must have a name")),0===n?e(l,"totalsRowLabel","Total"):(e(l,"totalsRowFunction","none"),l.totalsRowFormula=t.getFormula(l))}))}},{key:"store",value:function(){var t=this,l=function(t,l){l&&Object.keys(l).forEach((function(e){t[e]=l[e]}))},e=this.worksheet,i=this.table,n=i.tl,c=n.row,s=n.col,d=0;if(i.headerRow){var a=e.getRow(c+d++);i.columns.forEach((function(t,e){var i=t.style,n=t.name,c=a.getCell(s+e);c.value=n,l(c,i)}))}if(i.rows.forEach((function(t){var n=e.getRow(c+d++);t.forEach((function(t,e){var c=n.getCell(s+e);c.value=t,l(c,i.columns[e].style)}))})),i.totalsRow){var u=e.getRow(c+d++);i.columns.forEach((function(e,i){var n=u.getCell(s+i);if(0===i)n.value=e.totalsRowLabel;else{var c=t.getFormula(e);n.value=c?{formula:e.totalsRowFormula,result:e.totalsRowResult}:null}l(n,e.style)}))}}},{key:"load",value:function(t){var l=this,e=this.table,i=e.tl,n=i.row,c=i.col,s=0;if(e.headerRow){var d=t.getRow(n+s++);e.columns.forEach((function(t,l){var e=d.getCell(c+l);e.value=t.name}))}if(e.rows.forEach((function(l){var e=t.getRow(n+s++);l.forEach((function(t,l){var i=e.getCell(c+l);i.value=t}))})),e.totalsRow){var a=t.getRow(n+s++);e.columns.forEach((function(t,e){var i=a.getCell(c+e);if(0===e)i.value=t.totalsRowLabel;else{var n=l.getFormula(t);n&&(i.value={formula:t.totalsRowFormula,result:t.totalsRowResult})}}))}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var t=s.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var l=0;l<this._cache.tableHeight;l++)for(var e=this.worksheet.getRow(t.row+l),i=0;i<this._cache.width;i++){var n=e.getCell(t.col+i);n.value=null}else{for(var c=this.tableHeight;c<this._cache.tableHeight;c++)for(var d=this.worksheet.getRow(t.row+c),a=0;a<this._cache.width;a++){var u=d.getCell(t.col+a);u.value=null}for(var o=0;o<this.tableHeight;o++)for(var r=this.worksheet.getRow(t.row+o),b=this.width;b<this._cache.width;b++){var h=r.getCell(t.col+b);h.value=null}}this.store()}}},{key:"addRow",value:function(t,l){this.cacheState(),void 0===l?this.table.rows.push(t):this.table.rows.splice(l,0,t)}},{key:"removeRows",value:function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.rows.splice(t,l)}},{key:"getColumn",value:function(t){var l=this.table.columns[t];return new d(this,l,t)}},{key:"addColumn",value:function(t,l,e){this.cacheState(),void 0===e?(this.table.columns.push(t),this.table.rows.forEach((function(t,e){t.push(l[e])}))):(this.table.columns.splice(e,0,t),this.table.rows.forEach((function(t,i){t.splice(e,0,l[i])})))}},{key:"removeColumns",value:function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.columns.splice(t,l),this.table.rows.forEach((function(e){e.splice(t,l)}))}},{key:"_assign",value:function(t,l,e){this.cacheState(),t[l]=e}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(t){this.table=t}},{key:"ref",get:function(){return this.table.ref},set:function(t){this._assign(this.table,"ref",t)}},{key:"name",get:function(){return this.table.name},set:function(t){this.table.name=t}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(t){this.table.displayName=t}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(t){this._assign(this.table,"headerRow",t)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(t){this._assign(this.table,"totalsRow",t)}},{key:"theme",get:function(){return this.table.style.name},set:function(t){this.table.style.name=t}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(t){this.table.style.showFirstColumn=t}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(t){this.table.style.showLastColumn=t}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(t){this.table.style.showRowStripes=t}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(t){this.table.style.showColumnStripes=t}}]),t}();l.exports=a},{"../utils/col-cache":19}],13:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("./worksheet"),d=t("./defined-names"),a=t("../xlsx/xlsx"),u=t("../csv/csv"),o=function(){function t(){i(this,t),this.category="",this.company="",this.created=new Date,this.description="",this.keywords="",this.manager="",this.modified=this.created,this.properties={},this.calcProperties={},this._worksheets=[],this.subject="",this.title="",this.views=[],this.media=[],this._definedNames=new d}return c(t,[{key:"addWorksheet",value:function(t,l){var e=this.nextId;if(t&&t.length>31&&console.warn("Worksheet name ".concat(t," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(t))throw new Error("Worksheet name ".concat(t," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(t))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(t));if(t=(t||"sheet".concat(e)).substring(0,31),this._worksheets.find((function(l){return l&&l.name.toLowerCase()===t.toLowerCase()})))throw new Error("Worksheet name already exists: ".concat(t));l&&("string"===typeof l?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),l={properties:{tabColor:{argb:l}}}):(l.argb||l.theme||l.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),l={properties:{tabColor:l}}));var i=this._worksheets.reduce((function(t,l){return(l&&l.orderNo)>t?l.orderNo:t}),0),n=Object.assign({},l,{id:e,name:t,orderNo:i+1,workbook:this}),c=new s(n);return this._worksheets[e]=c,c}},{key:"removeWorksheetEx",value:function(t){delete this._worksheets[t.id]}},{key:"removeWorksheet",value:function(t){var l=this.getWorksheet(t);l&&l.destroy()}},{key:"getWorksheet",value:function(t){return void 0===t?this._worksheets.find(Boolean):"number"===typeof t?this._worksheets[t]:"string"===typeof t?this._worksheets.find((function(l){return l&&l.name===t})):void 0}},{key:"eachSheet",value:function(t){this.worksheets.forEach((function(l){t(l,l.id)}))}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(t){var l=this.media.length;return this.media.push(Object.assign({},t,{type:"image"})),l}},{key:"getImage",value:function(t){return this.media[t]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new a(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new u(this)),this._csv}},{key:"nextId",get:function(){for(var t=1;t<this._worksheets.length;t++)if(!this._worksheets[t])return t;return this._worksheets.length||1}},{key:"worksheets",get:function(){return this._worksheets.slice(1).sort((function(t,l){return t.orderNo-l.orderNo})).filter(Boolean)}},{key:"definedNames",get:function(){return this._definedNames}},{key:"model",get:function(){return{creator:this.creator||"Unknown",lastModifiedBy:this.lastModifiedBy||"Unknown",lastPrinted:this.lastPrinted,created:this.created,modified:this.modified,properties:this.properties,worksheets:this.worksheets.map((function(t){return t.model})),sheets:this.worksheets.map((function(t){return t.model})).filter(Boolean),definedNames:this._definedNames.model,views:this.views,company:this.company,manager:this.manager,title:this.title,subject:this.subject,keywords:this.keywords,category:this.category,description:this.description,language:this.language,revision:this.revision,contentStatus:this.contentStatus,themes:this._themes,media:this.media,calcProperties:this.calcProperties}},set:function(t){var l=this;this.creator=t.creator,this.lastModifiedBy=t.lastModifiedBy,this.lastPrinted=t.lastPrinted,this.created=t.created,this.modified=t.modified,this.company=t.company,this.manager=t.manager,this.title=t.title,this.subject=t.subject,this.keywords=t.keywords,this.category=t.category,this.description=t.description,this.language=t.language,this.revision=t.revision,this.contentStatus=t.contentStatus,this.properties=t.properties,this.calcProperties=t.calcProperties,this._worksheets=[],t.worksheets.forEach((function(e){var i=e.id,n=e.name,c=e.state,d=t.sheets&&t.sheets.findIndex((function(t){return t.id===i})),a=l._worksheets[i]=new s({id:i,name:n,orderNo:d,state:c,workbook:l});a.model=e})),this._definedNames.model=t.definedNames,this.views=t.views,this._themes=t.themes,this.media=t.media||[]}}]),t}();l.exports=o},{"../csv/csv":1,"../xlsx/xlsx":141,"./defined-names":6,"./worksheet":14}],14:[function(t,l,e){"use strict";function i(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function n(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?i(Object(e),!0).forEach((function(l){c(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):i(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function c(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function s(t){return o(t)||u(t)||a(t)||d()}function d(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(t,l){if(t){if("string"===typeof t)return r(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,l):void 0}}function u(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function o(t){if(Array.isArray(t))return r(t)}function r(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function b(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function h(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function Z(t,l,e){return l&&h(t.prototype,l),e&&h(t,e),t}var m=t("../utils/under-dash"),y=t("../utils/col-cache"),p=t("./range"),W=t("./row"),G=t("./column"),X=t("./enums"),Y=t("./image"),N=t("./table"),V=t("./data-validations"),M=t("../utils/encryptor"),L=function(){function t(l){b(this,t),l=l||{},this.id=l.id,this.orderNo=l.orderNo,this.name=l.name||"Sheet".concat(this.id),this.state=l.state||"visible",this._rows=[],this._columns=null,this._keys={},this._merges={},this.rowBreaks=[],this._workbook=l.workbook,this.properties=Object.assign({},{defaultRowHeight:15,dyDescent:55,outlineLevelCol:0,outlineLevelRow:0},l.properties),this.pageSetup=Object.assign({},{margins:{left:.7,right:.7,top:.75,bottom:.75,header:.3,footer:.3},orientation:"portrait",horizontalDpi:4294967295,verticalDpi:4294967295,fitToPage:!(!l.pageSetup||!l.pageSetup.fitToWidth&&!l.pageSetup.fitToHeight||l.pageSetup.scale),pageOrder:"downThenOver",blackAndWhite:!1,draft:!1,cellComments:"None",errors:"displayed",scale:100,fitToWidth:1,fitToHeight:1,paperSize:void 0,showRowColHeaders:!1,showGridLines:!1,firstPageNumber:void 0,horizontalCentered:!1,verticalCentered:!1,rowBreaks:null,colBreaks:null},l.pageSetup),this.headerFooter=Object.assign({},{differentFirst:!1,differentOddEven:!1,oddHeader:null,oddFooter:null,evenHeader:null,evenFooter:null,firstHeader:null,firstFooter:null},l.headerFooter),this.dataValidations=new V,this.views=l.views||[],this.autoFilter=l.autoFilter||null,this._media=[],this.sheetProtection=null,this.tables={},this.conditionalFormattings=[]}return Z(t,[{key:"destroy",value:function(){this._workbook.removeWorksheetEx(this)}},{key:"getColumnKey",value:function(t){return this._keys[t]}},{key:"setColumnKey",value:function(t,l){this._keys[t]=l}},{key:"deleteColumnKey",value:function(t){delete this._keys[t]}},{key:"eachColumnKey",value:function(t){m.each(this._keys,t)}},{key:"getColumn",value:function(t){if("string"===typeof t){var l=this._keys[t];if(l)return l;t=y.l2n(t)}if(this._columns||(this._columns=[]),t>this._columns.length){var e=this._columns.length+1;while(e<=t)this._columns.push(new G(this,e++))}return this._columns[t-1]}},{key:"spliceColumns",value:function(t,l){for(var e=this,i=this._rows,n=i.length,c=arguments.length,s=new Array(c>2?c-2:0),d=2;d<c;d++)s[d-2]=arguments[d];if(s.length>0)for(var a=function(i){var n=[t,l];s.forEach((function(t){n.push(t[i]||null)}));var c=e.getRow(i+1);c.splice.apply(c,n)},u=0;u<n;u++)a(u);else this._rows.forEach((function(e){e&&e.splice(t,l)}));var o=s.length-l,r=t+l,b=this._columns.length;if(o<0)for(var h=t+s.length;h<=b;h++)this.getColumn(h).defn=this.getColumn(h-o).defn;else if(o>0)for(var Z=b;Z>=r;Z--)this.getColumn(Z+o).defn=this.getColumn(Z).defn;for(var m=t;m<t+s.length;m++)this.getColumn(m).defn=null;this.workbook.definedNames.spliceColumns(this.name,t,l,s.length)}},{key:"_commitRow",value:function(){}},{key:"findRow",value:function(t){return this._rows[t-1]}},{key:"findRows",value:function(t,l){return this._rows.slice(t-1,t-1+l)}},{key:"getRow",value:function(t){var l=this._rows[t-1];return l||(l=this._rows[t-1]=new W(this,t)),l}},{key:"getRows",value:function(t,l){if(!(l<1)){for(var e=[],i=t;i<t+l;i++)e.push(this.getRow(i));return e}}},{key:"addRow",value:function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"n",e=this._nextRow,i=this.getRow(e);return i.values=t,this._setStyleOption(e,"i"===l[0]?l:"n"),i}},{key:"addRows",value:function(t){var l=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"n",i=[];return t.forEach((function(t){i.push(l.addRow(t,e))})),i}},{key:"insertRow",value:function(t,l){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"n";return this.spliceRows(t,0,l),this._setStyleOption(t,e),this.getRow(t)}},{key:"insertRows",value:function(t,l){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"n";if(this.spliceRows.apply(this,[t,0].concat(s(l))),"n"!==e)for(var i=0;i<l.length;i++)"o"===e[0]&&void 0!==this.findRow(l.length+t+i)?this._copyStyle(l.length+t+i,t+i,"+"===e[1]):"i"===e[0]&&void 0!==this.findRow(t-1)&&this._copyStyle(t-1,t+i,"+"===e[1]);return this.getRows(t,l.length)}},{key:"_setStyleOption",value:function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"n";"o"===l[0]&&void 0!==this.findRow(t+1)?this._copyStyle(t+1,t,"+"===l[1]):"i"===l[0]&&void 0!==this.findRow(t-1)&&this._copyStyle(t-1,t,"+"===l[1])}},{key:"_copyStyle",value:function(t,l){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=this.getRow(t),c=this.getRow(l);c.style=Object.freeze(n({},i.style)),i.eachCell({includeEmpty:e},(function(t,l){c.getCell(l).style=Object.freeze(n({},t.style))})),c.height=i.height}},{key:"duplicateRow",value:function(t,l){var e=this,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this._rows[t-1],c=new Array(l).fill(n.values);this.spliceRows.apply(this,[t+1,i?0:l].concat(s(c)));for(var d=function(l){var i=e._rows[t+l];i.style=n.style,i.height=n.height,n.eachCell({includeEmpty:!0},(function(t,l){i.getCell(l).style=t.style}))},a=0;a<l;a++)d(a)}},{key:"spliceRows",value:function(t,l){for(var e=this,i=t+l,n=arguments.length,c=new Array(n>2?n-2:0),s=2;s<n;s++)c[s-2]=arguments[s];var d,a,u=c.length,o=u-l,r=this._rows.length;if(o<0)for(d=i;d<=r;d++)a=this._rows[d-1],a?function(){var t=e.getRow(d+o);t.values=a.values,t.style=a.style,t.height=a.height,a.eachCell({includeEmpty:!0},(function(l,e){t.getCell(e).style=l.style})),e._rows[d-1]=void 0}():this._rows[d+o-1]=void 0;else if(o>0)for(d=r;d>=i;d--)a=this._rows[d-1],a?function(){var t=e.getRow(d+o);t.values=a.values,t.style=a.style,t.height=a.height,a.eachCell({includeEmpty:!0},(function(l,i){if(t.getCell(i).style=l.style,"MergeValue"===l._value.constructor.name){var n=e.getRow(l._row._number+u).getCell(i),c=l._value._master,s=e.getRow(c._row._number+u).getCell(c._column._number);n.merge(s)}}))}():this._rows[d+o-1]=void 0;for(d=0;d<u;d++){var b=this.getRow(t+d);b.style={},b.values=c[d]}this.workbook.definedNames.spliceRows(this.name,t,l,u)}},{key:"eachRow",value:function(t,l){if(l||(l=t,t=void 0),t&&t.includeEmpty)for(var e=this._rows.length,i=1;i<=e;i++)l(this.getRow(i),i);else this._rows.forEach((function(t){t&&t.hasValues&&l(t,t.number)}))}},{key:"getSheetValues",value:function(){var t=[];return this._rows.forEach((function(l){l&&(t[l.number]=l.values)})),t}},{key:"findCell",value:function(t,l){var e=y.getAddress(t,l),i=this._rows[e.row-1];return i?i.findCell(e.col):void 0}},{key:"getCell",value:function(t,l){var e=y.getAddress(t,l),i=this.getRow(e.row);return i.getCellEx(e)}},{key:"mergeCells",value:function(){for(var t=arguments.length,l=new Array(t),e=0;e<t;e++)l[e]=arguments[e];var i=new p(l);this._mergeCellsInternal(i)}},{key:"mergeCellsWithoutStyle",value:function(){for(var t=arguments.length,l=new Array(t),e=0;e<t;e++)l[e]=arguments[e];var i=new p(l);this._mergeCellsInternal(i,!0)}},{key:"_mergeCellsInternal",value:function(t,l){m.each(this._merges,(function(l){if(l.intersects(t))throw new Error("Cannot merge already merged cells")}));for(var e=this.getCell(t.top,t.left),i=t.top;i<=t.bottom;i++)for(var n=t.left;n<=t.right;n++)(i>t.top||n>t.left)&&this.getCell(i,n).merge(e,l);this._merges[e.address]=t}},{key:"_unMergeMaster",value:function(t){var l=this._merges[t.address];if(l){for(var e=l.top;e<=l.bottom;e++)for(var i=l.left;i<=l.right;i++)this.getCell(e,i).unmerge();delete this._merges[t.address]}}},{key:"unMergeCells",value:function(){for(var t=arguments.length,l=new Array(t),e=0;e<t;e++)l[e]=arguments[e];for(var i=new p(l),n=i.top;n<=i.bottom;n++)for(var c=i.left;c<=i.right;c++){var s=this.findCell(n,c);s&&(s.type===X.ValueType.Merge?this._unMergeMaster(s.master):this._merges[s.address]&&this._unMergeMaster(s))}}},{key:"fillFormula",value:function(t,l,e){var i,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"shared",c=y.decode(t),s=c.top,d=c.left,a=c.bottom,u=c.right,o=u-d+1,r=y.encodeAddress(s,d),b="shared"===n;i="function"===typeof e?e:Array.isArray(e)?Array.isArray(e[0])?function(t,l){return e[t-s][l-d]}:function(t,l){return e[(t-s)*o+(l-d)]}:function(){};for(var h=!0,Z=s;Z<=a;Z++)for(var m=d;m<=u;m++)h?(this.getCell(Z,m).value={shareType:n,formula:l,ref:t,result:i(Z,m)},h=!1):this.getCell(Z,m).value=b?{sharedFormula:r,result:i(Z,m)}:i(Z,m)}},{key:"addImage",value:function(t,l){var e={type:"image",imageId:t,range:l};this._media.push(new Y(this,e))}},{key:"getImages",value:function(){return this._media.filter((function(t){return"image"===t.type}))}},{key:"addBackgroundImage",value:function(t){var l={type:"background",imageId:t};this._media.push(new Y(this,l))}},{key:"getBackgroundImageId",value:function(){var t=this._media.find((function(t){return"background"===t.type}));return t&&t.imageId}},{key:"protect",value:function(t,l){var e=this;return new Promise((function(i){e.sheetProtection={sheet:!0},l&&"spinCount"in l&&(l.spinCount=Number.isFinite(l.spinCount)?Math.round(Math.max(0,l.spinCount)):1e5),t&&(e.sheetProtection.algorithmName="SHA-512",e.sheetProtection.saltValue=M.randomBytes(16).toString("base64"),e.sheetProtection.spinCount=l&&"spinCount"in l?l.spinCount:1e5,e.sheetProtection.hashValue=M.convertPasswordToHash(t,"SHA512",e.sheetProtection.saltValue,e.sheetProtection.spinCount)),l&&(e.sheetProtection=Object.assign(e.sheetProtection,l),!t&&"spinCount"in l&&delete e.sheetProtection.spinCount),i()}))}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(t){var l=new N(this,t);return this.tables[t.name]=l,l}},{key:"getTable",value:function(t){return this.tables[t]}},{key:"removeTable",value:function(t){delete this.tables[t]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(t){this.conditionalFormattings.push(t)}},{key:"removeConditionalFormatting",value:function(t){"number"===typeof t?this.conditionalFormattings.splice(t,1):this.conditionalFormattings=t instanceof Function?this.conditionalFormattings.filter(t):[]}},{key:"_parseRows",value:function(t){var l=this;this._rows=[],t.rows.forEach((function(t){var e=new W(l,t.number);l._rows[e.number-1]=e,e.model=t}))}},{key:"_parseMergeCells",value:function(t){var l=this;m.each(t.mergeCells,(function(t){l.mergeCellsWithoutStyle(t)}))}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var t=new p;return this._rows.forEach((function(l){if(l){var e=l.dimensions;e&&t.expand(l.number,e.min,l.number,e.max)}})),t}},{key:"columns",get:function(){return this._columns},set:function(t){var l=this;this._headerRowCount=t.reduce((function(t,l){var e=(l.header?1:l.headers&&l.headers.length)||0;return Math.max(t,e)}),0);var e=1,i=this._columns=[];t.forEach((function(t){var n=new G(l,e++,!1);i.push(n),n.defn=t}))}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var t=0;return this.eachRow((function(l){t=Math.max(t,l.cellCount)})),t}},{key:"actualColumnCount",get:function(){var t=[],l=0;return this.eachRow((function(e){e.eachCell((function(e){var i=e.col;t[i]||(t[i]=!0,l++)}))})),l}},{key:"_lastRowNumber",get:function(){var t=this._rows,l=t.length;while(l>0&&void 0===t[l-1])l--;return l}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var t=0;return this.eachRow((function(){t++})),t}},{key:"hasMerges",get:function(){return m.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(t){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=t}},{key:"model",get:function(){var t={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map((function(t){return t.model})),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map((function(t){return t.model})),conditionalFormattings:this.conditionalFormattings};t.cols=G.toModel(this.columns);var l=t.rows=[],e=t.dimensions=new p;return this._rows.forEach((function(t){var i=t&&t.model;i&&(e.expand(i.number,i.min,i.number,i.max),l.push(i))})),t.merges=[],m.each(this._merges,(function(l){t.merges.push(l.range)})),t},set:function(t){var l=this;this.name=t.name,this._columns=G.fromModel(this,t.cols),this._parseRows(t),this._parseMergeCells(t),this.dataValidations=new V(t.dataValidations),this.properties=t.properties,this.pageSetup=t.pageSetup,this.headerFooter=t.headerFooter,this.views=t.views,this.autoFilter=t.autoFilter,this._media=t.media.map((function(t){return new Y(l,t)})),this.sheetProtection=t.sheetProtection,this.tables=t.tables.reduce((function(t,l){var e=new N;return e.model=l,t[l.name]=e,t}),{}),this.conditionalFormattings=t.conditionalFormattings}}]),t}();l.exports=L},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(t,l,e){"use strict";t("core-js/modules/es.promise"),t("core-js/modules/es.object.assign"),t("core-js/modules/es.object.keys"),t("core-js/modules/es.object.values"),t("core-js/modules/es.symbol"),t("core-js/modules/es.symbol.async-iterator"),t("core-js/modules/es.array.iterator"),t("core-js/modules/es.array.includes"),t("core-js/modules/es.array.find-index"),t("core-js/modules/es.array.find"),t("core-js/modules/es.string.from-code-point"),t("core-js/modules/es.string.includes"),t("core-js/modules/es.number.is-nan"),t("regenerator-runtime/runtime");var i={Workbook:t("./doc/workbook")},n=t("./doc/enums");Object.keys(n).forEach((function(t){i[t]=n[t]})),l.exports=i},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(t,l,e){"use strict";var i="undefined"===typeof TextDecoder?null:new TextDecoder("utf-8");function n(t){return"string"===typeof t?t:i?i.decode(t):t.toString()}e.bufferToString=n},{}],17:[function(t,l,e){"use strict";var i="undefined"===typeof TextEncoder?null:new TextEncoder("utf-8"),n=t("buffer"),c=n.Buffer;function s(t){return"string"!==typeof t?t:i?c.from(i.encode(t).buffer):c.from(t)}e.stringToBuffer=s},{buffer:216}],18:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("./under-dash"),d=t("./col-cache"),a=function(){function t(l){i(this,t),this.template=l,this.sheets={}}return c(t,[{key:"addCell",value:function(t){this.addCellEx(d.decodeEx(t))}},{key:"getCell",value:function(t){return this.findCellEx(d.decodeEx(t),!0)}},{key:"findCell",value:function(t){return this.findCellEx(d.decodeEx(t),!1)}},{key:"findCellAt",value:function(t,l,e){var i=this.sheets[t],n=i&&i[l];return n&&n[e]}},{key:"addCellEx",value:function(t){if(t.top)for(var l=t.top;l<=t.bottom;l++)for(var e=t.left;e<=t.right;e++)this.getCellAt(t.sheetName,l,e);else this.findCellEx(t,!0)}},{key:"getCellEx",value:function(t){return this.findCellEx(t,!0)}},{key:"findCellEx",value:function(t,l){var e=this.findSheet(t,l),i=this.findSheetRow(e,t,l);return this.findRowCell(i,t,l)}},{key:"getCellAt",value:function(t,l,e){var i=this.sheets[t]||(this.sheets[t]=[]),n=i[l]||(i[l]=[]),c=n[e]||(n[e]={sheetName:t,address:d.n2l(e)+l,row:l,col:e});return c}},{key:"removeCellEx",value:function(t){var l=this.findSheet(t);if(l){var e=this.findSheetRow(l,t);e&&delete e[t.col]}}},{key:"forEachInSheet",value:function(t,l){var e=this.sheets[t];e&&e.forEach((function(t,e){t&&t.forEach((function(t,i){t&&l(t,e,i)}))}))}},{key:"forEach",value:function(t){var l=this;s.each(this.sheets,(function(e,i){l.forEachInSheet(i,t)}))}},{key:"map",value:function(t){var l=[];return this.forEach((function(e){l.push(t(e))})),l}},{key:"findSheet",value:function(t,l){var e=t.sheetName;return this.sheets[e]?this.sheets[e]:l?this.sheets[e]=[]:void 0}},{key:"findSheetRow",value:function(t,l,e){var i=l.row;return t&&t[i]?t[i]:e?t[i]=[]:void 0}},{key:"findRowCell",value:function(t,l,e){var i=l.col;return t&&t[i]?t[i]:e?t[i]=this.template?Object.assign(l,JSON.parse(JSON.stringify(this.template))):l:void 0}},{key:"spliceRows",value:function(t,l,e,i){var n=this.sheets[t];if(n){for(var c=[],s=0;s<i;s++)c.push([]);n.splice.apply(n,[l,e].concat(c))}}},{key:"spliceColumns",value:function(t,l,e,i){var n=this.sheets[t];if(n){for(var c=[],d=0;d<i;d++)c.push(null);s.each(n,(function(t){t.splice.apply(t,[l,e].concat(c))}))}}}]),t}();l.exports=a},{"./col-cache":19,"./under-dash":25}],19:[function(t,l,e){"use strict";function i(t,l){return a(t)||d(t,l)||c(t,l)||n()}function n(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(t,l){if(t){if("string"===typeof t)return s(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?s(t,l):void 0}}function s(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function d(t,l){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var e=[],i=!0,n=!1,c=void 0;try{for(var s,d=t[Symbol.iterator]();!(i=(s=d.next()).done);i=!0)if(e.push(s.value),l&&e.length===l)break}catch(a){n=!0,c=a}finally{try{i||null==d["return"]||d["return"]()}finally{if(n)throw c}}return e}}function a(t){if(Array.isArray(t))return t}function u(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function o(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?u(Object(e),!0).forEach((function(l){r(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):u(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function r(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}var b=/^[A-Z]+\d+$/,h={_dictionary:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],_l2nFill:0,_l2n:{},_n2l:[],_level:function(t){return t<=26?1:t<=676?2:3},_fill:function(t){var l,e,i,n,c,s=1;if(t>=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&t>=1){while(s<=26)l=this._dictionary[s-1],this._n2l[s]=l,this._l2n[l]=s,s++;this._l2nFill=1}if(this._l2nFill<2&&t>=2){s=27;while(s<=702)e=s-27,i=e%26,n=Math.floor(e/26),l=this._dictionary[n]+this._dictionary[i],this._n2l[s]=l,this._l2n[l]=s,s++;this._l2nFill=2}if(this._l2nFill<3&&t>=3){s=703;while(s<=16384)e=s-703,i=e%26,n=Math.floor(e/26)%26,c=Math.floor(e/676),l=this._dictionary[c]+this._dictionary[n]+this._dictionary[i],this._n2l[s]=l,this._l2n[l]=s,s++;this._l2nFill=3}},l2n:function(t){if(this._l2n[t]||this._fill(t.length),!this._l2n[t])throw new Error("Out of bounds. Invalid column letter: ".concat(t));return this._l2n[t]},n2l:function(t){if(t<1||t>16384)throw new Error("".concat(t," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[t]||this._fill(this._level(t)),this._n2l[t]},_hash:{},validateAddress:function(t){if(!b.test(t))throw new Error("Invalid Address: ".concat(t));return!0},decodeAddress:function(t){var l=t.length<5&&this._hash[t];if(l)return l;for(var e,i=!1,n="",c=0,s=!1,d="",a=0,u=0;u<t.length;u++)if(e=t.charCodeAt(u),!s&&e>=65&&e<=90)i=!0,n+=t[u],c=26*c+e-64;else if(e>=48&&e<=57)s=!0,d+=t[u],a=10*a+e-48;else if(s&&i&&36!==e)break;if(i){if(c>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(n))}else c=void 0;s||(a=void 0),t=n+d;var o={address:t,col:c,row:a,$col$row:"$".concat(n,"$").concat(d)};return c<=100&&a<=100&&(this._hash[t]=o,this._hash[o.$col$row]=o),o},getAddress:function(t,l){if(l){var e=this.n2l(l)+t;return this.decodeAddress(e)}return this.decodeAddress(t)},decode:function(t){var l=t.split(":");if(2===l.length){var e=this.decodeAddress(l[0]),i=this.decodeAddress(l[1]),n={top:Math.min(e.row,i.row),left:Math.min(e.col,i.col),bottom:Math.max(e.row,i.row),right:Math.max(e.col,i.col)};return n.tl=this.n2l(n.left)+n.top,n.br=this.n2l(n.right)+n.bottom,n.dimensions="".concat(n.tl,":").concat(n.br),n}return this.decodeAddress(t)},decodeEx:function(t){var l=t.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),e=l[1]||l[2],i=l[3],n=i.split(":");if(n.length>1){var c=this.decodeAddress(n[0]),s=this.decodeAddress(n[1]),d=Math.min(c.row,s.row),a=Math.min(c.col,s.col),u=Math.max(c.row,s.row),r=Math.max(c.col,s.col);return c=this.n2l(a)+d,s=this.n2l(r)+u,{top:d,left:a,bottom:u,right:r,sheetName:e,tl:{address:c,col:a,row:d,$col$row:"$".concat(this.n2l(a),"$").concat(d),sheetName:e},br:{address:s,col:r,row:u,$col$row:"$".concat(this.n2l(r),"$").concat(u),sheetName:e},dimensions:"".concat(c,":").concat(s)}}if(i.startsWith("#"))return e?{sheetName:e,error:i}:{error:i};var b=this.decodeAddress(i);return e?o({sheetName:e},b):b},encodeAddress:function(t,l){return h.n2l(l)+t},encode:function(){switch(arguments.length){case 2:return h.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(h.encodeAddress(arguments[0],arguments[1]),":").concat(h.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(t,l){var e=i(t,5),n=e[0],c=e[1],s=e[3],d=e[4],a=i(l,2),u=a[0],o=a[1];return u>=n&&u<=s&&o>=c&&o<=d}};l.exports=h},{}],20:[function(t,l,e){(function(e){"use strict";var i=t("crypto"),n={hash:function(t){for(var l=i.createHash(t),n=arguments.length,c=new Array(n>1?n-1:0),s=1;s<n;s++)c[s-1]=arguments[s];return l.update(e.concat(c)),l.digest()},convertPasswordToHash:function(t,l,n,c){l=l.toLowerCase();var s=i.getHashes();if(s.indexOf(l)<0)throw new Error("Hash algorithm '".concat(l,"' not supported!"));for(var d=e.from(t,"utf16le"),a=this.hash(l,e.from(n,"base64"),d),u=0;u<c;u++){var o=e.alloc(4);o.writeUInt32LE(u,0),a=this.hash(l,a,o)}return a.toString("base64")},randomBytes:function(t){return i.randomBytes(t)}};l.exports=n}).call(this,t("buffer").Buffer)},{buffer:216,crypto:335}],21:[function(t,l,e){"use strict";function i(t){return new s(t)}function n(t){return function(){return new c(t.apply(this,arguments))}}function c(t){var l,e;function i(t,i){return new Promise((function(c,s){var d={key:t,arg:i,resolve:c,reject:s,next:null};e?e=e.next=d:(l=e=d,n(t,i))}))}function n(l,e){try{var i=t[l](e),d=i.value,a=d instanceof s;Promise.resolve(a?d.wrapped:d).then((function(t){a?n("return"===l?"return":"next",t):c(i.done?"return":"normal",t)}),(function(t){n("throw",t)}))}catch(u){c("throw",u)}}function c(t,i){switch(t){case"return":l.resolve({value:i,done:!0});break;case"throw":l.reject(i);break;default:l.resolve({value:i,done:!1});break}l=l.next,l?n(l.key,l.arg):e=null}this._invoke=i,"function"!==typeof t.return&&(this.return=void 0)}function s(t){this.wrapped=t}function d(t){var l;if("undefined"!==typeof Symbol){if(Symbol.asyncIterator&&(l=t[Symbol.asyncIterator],null!=l))return l.call(t);if(Symbol.iterator&&(l=t[Symbol.iterator],null!=l))return l.call(t)}throw new TypeError("Object is not async iterable")}"function"===typeof Symbol&&Symbol.asyncIterator&&(c.prototype[Symbol.asyncIterator]=function(){return this}),c.prototype.next=function(t){return this._invoke("next",t)},c.prototype.throw=function(t){return this._invoke("throw",t)},c.prototype.return=function(t){return this._invoke("return",t)};var a=t("saxes"),u=a.SaxesParser,o=t("readable-stream"),r=o.PassThrough,b=t("./browser-buffer-decode"),h=b.bufferToString;l.exports=function(){var t=n(regeneratorRuntime.mark((function t(l){var e,n,c,s,a,o,b,Z,m,y;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:l.pipe&&!l[Symbol.asyncIterator]&&(l=l.pipe(new r)),e=new u,e.on("error",(function(t){n=t})),c=[],e.on("opentag",(function(t){return c.push({eventType:"opentag",value:t})})),e.on("text",(function(t){return c.push({eventType:"text",value:t})})),e.on("closetag",(function(t){return c.push({eventType:"closetag",value:t})})),s=!0,a=!1,t.prev=9,b=d(l);case 11:return t.next=13,i(b.next());case 13:return Z=t.sent,s=Z.done,t.next=17,i(Z.value);case 17:if(m=t.sent,s){t.next=29;break}if(y=m,e.write(h(y)),!n){t.next=23;break}throw n;case 23:return t.next=25,c;case 25:c=[];case 26:s=!0,t.next=11;break;case 29:t.next=35;break;case 31:t.prev=31,t.t0=t["catch"](9),a=!0,o=t.t0;case 35:if(t.prev=35,t.prev=36,s||null==b.return){t.next=40;break}return t.next=40,i(b.return());case 40:if(t.prev=40,!a){t.next=43;break}throw o;case 43:return t.finish(40);case 44:return t.finish(35);case 45:case"end":return t.stop()}}),t,null,[[9,31,35,45],[36,,40,44]])})));return function(l){return t.apply(this,arguments)}}()},{"./browser-buffer-decode":16,"readable-stream":491,saxes:496}],22:[function(t,l,e){"use strict";var i=t("./col-cache"),n=/(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi,c=/^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i;function s(t,l,e){var s=i.decode(l),d=i.decode(e);return t.replace(n,(function(t,l,e,n,a){if(a)return t;var u=c.exec(n);if(u){var o=u[1],r=u[2].toUpperCase(),b=u[3],h=u[4];if(r.length>3||3===r.length&&r>"XFD")return t;var Z=i.l2n(r),m=parseInt(h,10);o||(Z+=d.col-s.col),b||(m+=d.row-s.row);var y=(l||"")+(o||"")+i.n2l(Z)+(b||"")+m;return y}return t}))}l.exports={slideFormula:s}},{"./col-cache":19}],23:[function(t,l,e){(function(e,i){"use strict";function n(t,l,e,i,n,c,s){try{var d=t[c](s),a=d.value}catch(u){return void e(u)}d.done?l(a):Promise.resolve(a).then(i,n)}function c(t){return function(){var l=this,e=arguments;return new Promise((function(i,c){var s=t.apply(l,e);function d(t){n(s,i,c,d,a,"next",t)}function a(t){n(s,i,c,d,a,"throw",t)}d(void 0)}))}}function s(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function d(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,l,e){return l&&d(t.prototype,l),e&&d(t,e),t}var u=t("readable-stream"),o=t("./utils"),r=t("./string-buf"),b=function(){function t(l,e){s(this,t),this._data=l,this._encoding=e}return a(t,[{key:"copy",value:function(t,l,e,i){return this.toBuffer().copy(t,l,e,i)}},{key:"toBuffer",value:function(){return this._buffer||(this._buffer=i.from(this._data,this._encoding)),this._buffer}},{key:"length",get:function(){return this.toBuffer().length}}]),t}(),h=function(){function t(l){s(this,t),this._data=l}return a(t,[{key:"copy",value:function(t,l,e,i){return this._data._buf.copy(t,l,e,i)}},{key:"toBuffer",value:function(){return this._data.toBuffer()}},{key:"length",get:function(){return this._data.length}}]),t}(),Z=function(){function t(l){s(this,t),this._data=l}return a(t,[{key:"copy",value:function(t,l,e,i){this._data.copy(t,l,e,i)}},{key:"toBuffer",value:function(){return this._data}},{key:"length",get:function(){return this._data.length}}]),t}(),m=function(){function t(l){s(this,t),this.size=l,this.buffer=i.alloc(l),this.iRead=0,this.iWrite=0}return a(t,[{key:"toBuffer",value:function(){if(0===this.iRead&&this.iWrite===this.size)return this.buffer;var t=i.alloc(this.iWrite-this.iRead);return this.buffer.copy(t,0,this.iRead,this.iWrite),t}},{key:"read",value:function(t){var l;return 0===t?null:void 0===t||t>=this.length?(l=this.toBuffer(),this.iRead=this.iWrite,l):(l=i.alloc(t),this.buffer.copy(l,0,this.iRead,t),this.iRead+=t,l)}},{key:"write",value:function(t,l,e){var i=Math.min(e,this.size-this.iWrite);return t.copy(this.buffer,this.iWrite,l,l+i),this.iWrite+=i,i}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),t}(),y=function(t){t=t||{},this.bufSize=t.bufSize||1048576,this.buffers=[],this.batch=t.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};o.inherits(y,u.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return i.concat(this.buffers.map((function(t){return t.toBuffer()})))}},_getWritableBuffer:function(){if(this.buffers.length){var t=this.buffers[this.buffers.length-1];if(!t.full)return t}var l=new m(this.bufSize);return this.buffers.push(l),l},_pipe:function(t){var l=this;return c(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=function(l){return new Promise((function(e){l.write(t.toBuffer(),(function(){e()}))}))},e.next=3,Promise.all(l.pipes.map(i));case 3:case"end":return e.stop()}}),e)})))()},_writeToBuffers:function(t){var l=0,e=t.length;while(l<e){var i=this._getWritableBuffer();l+=i.write(t,l,e-l)}},write:function(t,l,n){var s=this;return c(regeneratorRuntime.mark((function c(){var d;return regeneratorRuntime.wrap((function(c){while(1)switch(c.prev=c.next){case 0:if(l instanceof Function&&(n=l,l="utf8"),n=n||o.nop,!(t instanceof r)){c.next=6;break}d=new h(t),c.next=15;break;case 6:if(!(t instanceof i)){c.next=10;break}d=new Z(t),c.next=15;break;case 10:if(!("string"===typeof t||t instanceof String||t instanceof ArrayBuffer)){c.next=14;break}d=new b(t,l),c.next=15;break;case 14:throw new Error("Chunk must be one of type String, Buffer or StringBuf.");case 15:if(!s.pipes.length){c.next=31;break}if(!s.batch){c.next=21;break}s._writeToBuffers(d);while(!s.corked&&s.buffers.length>1)s._pipe(s.buffers.shift());c.next=29;break;case 21:if(s.corked){c.next=27;break}return c.next=24,s._pipe(d);case 24:n(),c.next=29;break;case 27:s._writeToBuffers(d),e.nextTick(n);case 29:c.next=34;break;case 31:s.paused||s.emit("data",d.toBuffer()),s._writeToBuffers(d),s.emit("readable");case 34:return c.abrupt("return",!0);case 35:case"end":return c.stop()}}),c)})))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)while(this.buffers.length)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(t,l,e){var i=this,n=function(t){t?e(t):(i._flush(),i.pipes.forEach((function(t){t.end()})),i.emit("finish"))};t?this.write(t,l,n):n()},read:function(t){var l;if(t){l=[];while(t&&this.buffers.length&&!this.buffers[0].eod){var e=this.buffers[0],n=e.read(t);t-=n.length,l.push(n),e.eod&&e.full&&this.buffers.shift()}return i.concat(l)}return l=this.buffers.map((function(t){return t.toBuffer()})).filter(Boolean),this.buffers=[],i.concat(l)},setEncoding:function(t){this.encoding=t},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(t){this.pipes.push(t),!this.paused&&this.buffers.length&&this.end()},unpipe:function(t){this.pipes=this.pipes.filter((function(l){return l!==t}))},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),l.exports=y}).call(this,t("_process"),t("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(t,l,e){(function(t){"use strict";function e(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function i(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function n(t,l,e){return l&&i(t.prototype,l),e&&i(t,e),t}var c=function(){function l(i){e(this,l),this._buf=t.alloc(i&&i.size||16384),this._encoding=i&&i.encoding||"utf8",this._inPos=0,this._buffer=void 0}return n(l,[{key:"toBuffer",value:function(){return this._buffer||(this._buffer=t.alloc(this.length),this._buf.copy(this._buffer,0,0,this.length)),this._buffer}},{key:"reset",value:function(t){t=t||0,this._buffer=void 0,this._inPos=t}},{key:"_grow",value:function(l){var e=2*this._buf.length;while(e<l)e*=2;var i=t.alloc(e);this._buf.copy(i,0),this._buf=i}},{key:"addText",value:function(t){this._buffer=void 0;var l=this._inPos+this._buf.write(t,this._inPos,this._encoding);while(l>=this._buf.length-4)this._grow(this._inPos+t.length),l=this._inPos+this._buf.write(t,this._inPos,this._encoding);this._inPos=l}},{key:"addStringBuf",value:function(t){t.length&&(this._buffer=void 0,this.length+t.length>this.capacity&&this._grow(this.length+t.length),t._buf.copy(this._buf,this._inPos,0,t.length),this._inPos+=t.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),l}();l.exports=c}).call(this,t("buffer").Buffer)},{buffer:216}],25:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=Object.prototype.toString,c=/["&<>]/,s={each:function(t,l){t&&(Array.isArray(t)?t.forEach(l):Object.keys(t).forEach((function(e){l(t[e],e)})))},some:function(t,l){return!!t&&(Array.isArray(t)?t.some(l):Object.keys(t).some((function(e){return l(t[e],e)})))},every:function(t,l){return!t||(Array.isArray(t)?t.every(l):Object.keys(t).every((function(e){return l(t[e],e)})))},map:function(t,l){return t?Array.isArray(t)?t.map(l):Object.keys(t).map((function(e){return l(t[e],e)})):[]},keyBy:function(t,l){return t.reduce((function(t,e){return t[e[l]]=e,t}),{})},isEqual:function(t,l){var e=i(t),n=i(l),c=Array.isArray(t),d=Array.isArray(l);if(e!==n)return!1;switch(i(t)){case"object":return c||d?!(!c||!d)&&t.length===l.length&&t.every((function(t,e){var i=l[e];return s.isEqual(t,i)})):s.every(t,(function(t,e){var i=l[e];return s.isEqual(t,i)}));default:return t===l}},escapeHtml:function(t){var l=c.exec(t);if(!l)return t;for(var e="",i="",n=0,s=l.index;s<t.length;s++){switch(t.charAt(s)){case'"':i="&quot;";break;case"&":i="&amp;";break;case"'":i="&apos;";break;case"<":i="&lt;";break;case">":i="&gt;";break;default:continue}n!==s&&(e+=t.substring(n,s)),n=s+1,e+=i}return n!==s?e+t.substring(n,s):e},strcmp:function(t,l){return t<l?-1:t>l?1:0},isUndefined:function(t){return"[object Undefined]"===n.call(t)},isObject:function(t){return"[object Object]"===n.call(t)},deepMerge:function(){var t,l,e,i=arguments[0]||{},n=arguments.length;function c(n,c){t=i[c],e=Array.isArray(n),s.isObject(n)||e?(e?(e=!1,l=t&&Array.isArray(t)?t:[]):l=t&&s.isObject(t)?t:{},i[c]=s.deepMerge(l,n)):s.isUndefined(n)||(i[c]=n)}for(var d=0;d<n;d++)s.each(arguments[d],c);return i}};l.exports=s},{}],26:[function(t,l,i){(function(e,i){"use strict";var n=t("fs"),c=function(t,l,e,i){t.super_=l,i||(i=e,e=null),e&&Object.keys(e).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}));var n={constructor:{value:t,enumerable:!1,writable:!1,configurable:!0}};i&&Object.keys(i).forEach((function(t){n[t]=Object.getOwnPropertyDescriptor(i,t)})),t.prototype=Object.create(l.prototype,n)},s=/[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,d={nop:function(){},promiseImmediate:function(t){return new Promise((function(l){e.setImmediate?i((function(){l(t)})):setTimeout((function(){l(t)}),1)}))},inherits:c,dateToExcel:function(t,l){return 25569+t.getTime()/864e5-(l?1462:0)},excelToDate:function(t,l){var e=Math.round(24*(t-25569+(l?1462:0))*3600*1e3);return new Date(e)},parsePath:function(t){var l=t.lastIndexOf("/");return{path:t.substring(0,l),name:t.substring(l+1)}},getRelsPath:function(t){var l=d.parsePath(t);return"".concat(l.path,"/_rels/").concat(l.name,".rels")},xmlEncode:function(t){var l=s.exec(t);if(!l)return t;for(var e="",i="",n=0,c=l.index;c<t.length;c++){var d=t.charCodeAt(c);switch(d){case 34:i="&quot;";break;case 38:i="&amp;";break;case 39:i="&apos;";break;case 60:i="&lt;";break;case 62:i="&gt;";break;case 127:i="";break;default:if(d<=31&&(d<=8||d>=11&&13!==d)){i="";break}continue}n!==c&&(e+=t.substring(n,c)),n=c+1,i&&(e+=i)}return n!==c?e+t.substring(n,c):e},xmlDecode:function(t){return t.replace(/&([a-z]*);/g,(function(t){switch(t){case"&lt;":return"<";case"&gt;":return">";case"&amp;":return"&";case"&apos;":return"'";case"&quot;":return'"';default:return t}}))},validInt:function(t){var l=parseInt(t,10);return Number.isNaN(l)?0:l},isDateFmt:function(t){if(!t)return!1;t=t.replace(/\[[^\]]*]/g,""),t=t.replace(/"[^"]*"/g,"");var l=null!==t.match(/[ymdhMsb]+/);return l},fs:{exists:function(t){return new Promise((function(l){n.access(t,n.constants.F_OK,(function(t){l(!t)}))}))}},toIsoDateString:function(t){return t.toIsoString().subsstr(0,10)}};l.exports=d}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},t("timers").setImmediate)},{fs:215,timers:521}],27:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("./under-dash"),d=t("./utils"),a="<",u=">",o="</",r="/>",b='="',h='"',Z=" ";function m(t,l,e){t.push(Z),t.push(l),t.push(b),t.push(d.xmlEncode(e.toString())),t.push(h)}function y(t,l){l&&s.each(l,(function(l,e){void 0!==l&&m(t,e,l)}))}var p=function(){function t(){i(this,t),this._xml=[],this._stack=[],this._rollbacks=[]}return c(t,[{key:"openXml",value:function(t){var l=this._xml;l.push("<?xml"),y(l,t),l.push("?>\n")}},{key:"openNode",value:function(t,l){var e=this.tos,i=this._xml;e&&this.open&&i.push(u),this._stack.push(t),i.push(a),i.push(t),y(i,l),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(t,l){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");void 0!==l&&m(this._xml,t,l)}},{key:"addAttributes",value:function(t){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");y(this._xml,t)}},{key:"writeText",value:function(t){var l=this._xml;this.open&&(l.push(u),this.open=!1),this.leaf=!1,l.push(d.xmlEncode(t.toString()))}},{key:"writeXml",value:function(t){this.open&&(this._xml.push(u),this.open=!1),this.leaf=!1,this._xml.push(t)}},{key:"closeNode",value:function(){var t=this._stack.pop(),l=this._xml;this.leaf?l.push(r):(l.push(o),l.push(t),l.push(u)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(t,l,e){this.openNode(t,l),void 0!==e&&this.writeText(e),this.closeNode()}},{key:"closeAll",value:function(){while(this._stack.length)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var t=this._rollbacks.pop();this._xml.length>t.xml&&this._xml.splice(t.xml,this._xml.length-t.xml),this._stack.length>t.stack&&this._stack.splice(t.stack,this._stack.length-t.stack),this.leaf=t.leaf,this.open=t.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),t}();p.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},l.exports=p},{"./under-dash":25,"./utils":26}],28:[function(t,l,e){(function(e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l,e,i,n,c,s){try{var d=t[c](s),a=d.value}catch(u){return void e(u)}d.done?l(a):Promise.resolve(a).then(i,n)}function c(t){return function(){var l=this,e=arguments;return new Promise((function(i,c){var s=t.apply(l,e);function d(t){n(s,i,c,d,a,"next",t)}function a(t){n(s,i,c,d,a,"throw",t)}d(void 0)}))}}function s(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function d(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,l,e){return l&&d(t.prototype,l),e&&d(t,e),t}function u(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&o(t,l)}function o(t,l){return o=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},o(t,l)}function r(t){var l=Z();return function(){var e,i=m(t);if(l){var n=m(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return b(this,e)}}function b(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?h(t):l}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Z(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function m(t){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},m(t)}var y=t("events"),p=t("jszip"),W=t("./stream-buf"),G=t("./browser-buffer-encode"),X=G.stringToBuffer,Y=function(t){u(i,t);var l=r(i);function i(t){var e;return s(this,i),e=l.call(this),e.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},t),e.zip=new p,e.stream=new W,e}return a(i,[{key:"append",value:function(t,l){l.hasOwnProperty("base64")&&l.base64?this.zip.file(l.name,t,{base64:!0}):(e.browser&&"string"===typeof t&&(t=X(t)),this.zip.file(l.name,t))}},{key:"finalize",value:function(){var t=c(regeneratorRuntime.mark((function t(){var l;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.zip.generateAsync(this.options);case 2:l=t.sent,this.stream.end(l),this.emit("finish");case 5:case"end":return t.stop()}}),t,this)})));function l(){return t.apply(this,arguments)}return l}()},{key:"read",value:function(t){return this.stream.read(t)}},{key:"setEncoding",value:function(t){return this.stream.setEncoding(t)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(t,l){return this.stream.pipe(t,l)}},{key:"unpipe",value:function(t){return this.stream.unpipe(t)}},{key:"unshift",value:function(t){return this.stream.unshift(t)}},{key:"wrap",value:function(t){return this.stream.wrap(t)}}]),i}(y.EventEmitter);l.exports={ZipWriter:Y}}).call(this,t("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(t,l,e){"use strict";l.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(t,l,e){"use strict";l.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(t,l,e){"use strict";function i(t,l){var e;if("undefined"===typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(e=n(t))||l&&t&&"number"===typeof t.length){e&&(t=e);var i=0,c=function(){};return{s:c,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,d=!0,a=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return d=t.done,t},e:function(t){a=!0,s=t},f:function(){try{d||null==e.return||e.return()}finally{if(a)throw s}}}}function n(t,l){if(t){if("string"===typeof t)return c(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(t,l):void 0}}function c(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function s(t,l,e,i,n,c,s){try{var d=t[c](s),a=d.value}catch(u){return void e(u)}d.done?l(a):Promise.resolve(a).then(i,n)}function d(t){return function(){var l=this,e=arguments;return new Promise((function(i,n){var c=t.apply(l,e);function d(t){s(c,i,n,d,a,"next",t)}function a(t){s(c,i,n,d,a,"throw",t)}d(void 0)}))}}function a(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function u(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function o(t,l,e){return l&&u(t.prototype,l),e&&u(t,e),t}function r(t){var l;if("undefined"!==typeof Symbol){if(Symbol.asyncIterator&&(l=t[Symbol.asyncIterator],null!=l))return l.call(t);if(Symbol.iterator&&(l=t[Symbol.iterator],null!=l))return l.call(t)}throw new TypeError("Object is not async iterable")}var b=t("../../utils/parse-sax"),h=t("../../utils/xml-stream"),Z=function(){function t(){a(this,t)}return o(t,[{key:"prepare",value:function(){}},{key:"render",value:function(){}},{key:"parseOpen",value:function(t){}},{key:"parseText",value:function(t){}},{key:"parseClose",value:function(t){}},{key:"reconcile",value:function(t,l){}},{key:"reset",value:function(){this.model=null,this.map&&Object.values(this.map).forEach((function(l){l instanceof t?l.reset():l.xform&&l.xform.reset()}))}},{key:"mergeModel",value:function(t){this.model=Object.assign(this.model||{},t)}},{key:"parse",value:function(){var t=d(regeneratorRuntime.mark((function t(l){var e,n,c,s,d,a,u,o,b,h,Z,m;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e=!0,n=!1,t.prev=2,s=r(l);case 4:return t.next=6,s.next();case 6:return d=t.sent,e=d.done,t.next=10,d.value;case 10:if(a=t.sent,e){t.next=42;break}u=a,o=i(u),t.prev=14,o.s();case 16:if((b=o.n()).done){t.next=31;break}if(h=b.value,Z=h.eventType,m=h.value,"opentag"!==Z){t.next=22;break}this.parseOpen(m),t.next=29;break;case 22:if("text"!==Z){t.next=26;break}this.parseText(m),t.next=29;break;case 26:if("closetag"!==Z){t.next=29;break}if(this.parseClose(m.name)){t.next=29;break}return t.abrupt("return",this.model);case 29:t.next=16;break;case 31:t.next=36;break;case 33:t.prev=33,t.t0=t["catch"](14),o.e(t.t0);case 36:return t.prev=36,o.f(),t.finish(36);case 39:e=!0,t.next=4;break;case 42:t.next=48;break;case 44:t.prev=44,t.t1=t["catch"](2),n=!0,c=t.t1;case 48:if(t.prev=48,t.prev=49,e||null==s.return){t.next=53;break}return t.next=53,s.return();case 53:if(t.prev=53,!n){t.next=56;break}throw c;case 56:return t.finish(53);case 57:return t.finish(48);case 58:return t.abrupt("return",this.model);case 59:case"end":return t.stop()}}),t,this,[[2,44,48,58],[14,33,36,39],[49,,53,57]])})));function l(l){return t.apply(this,arguments)}return l}()},{key:"parseStream",value:function(){var t=d(regeneratorRuntime.mark((function t(l){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.abrupt("return",this.parse(b(l)));case 1:case"end":return t.stop()}}),t,this)})));function l(l){return t.apply(this,arguments)}return l}()},{key:"toXml",value:function(t){var l=new h;return this.render(l,t),l.xml}},{key:"xml",get:function(){return this.toXml(this.model)}}],[{key:"toAttribute",value:function(t,l){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===t){if(e)return l}else if(e||t!==l)return t.toString()}},{key:"toStringAttribute",value:function(l,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t.toAttribute(l,e,i)}},{key:"toStringValue",value:function(t,l){return void 0===t?l:t}},{key:"toBoolAttribute",value:function(t,l){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===t){if(e)return l}else if(e||t!==l)return t?"1":"0"}},{key:"toBoolValue",value:function(t,l){return void 0===t?l:"1"===t}},{key:"toIntAttribute",value:function(l,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t.toAttribute(l,e,i)}},{key:"toIntValue",value:function(t,l){return void 0===t?l:parseInt(t,10)}},{key:"toFloatAttribute",value:function(l,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t.toAttribute(l,e,i)}},{key:"toFloatValue",value:function(t,l){return void 0===t?l:parseFloat(t)}}]),t}();l.exports=Z},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("../../../utils/col-cache"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.openNode("definedName",{name:l.name,localSheetId:l.localSheetId}),t.writeText(l.ranges.join(",")),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case"definedName":return this._parsedName=t.attributes.name,this._parsedLocalSheetId=t.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(t){this._parsedText.push(t)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:W(this._parsedText.join(""))},void 0!==this._parsedLocalSheetId&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),e}(Z);function p(t){try{return m.decodeEx(t),!0}catch(l){return!1}}function W(t){var l=[],e=!1,i="";return t.split(",").forEach((function(t){if(t){var n=(t.match(/'/g)||[]).length;if(n){var c=n%2===0;!e&&c&&p(t)?l.push(t):e&&!c?(e=!1,p(i+t)&&l.push(i+t),i=""):(e=!0,i+="".concat(t,","))}else e?i+="".concat(t,","):p(t)&&l.push(t)}})),l}l.exports=y},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/utils"),m=t("../base-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("sheet",{sheetId:l.id,name:l.name,state:l.state,"r:id":l.rId})}},{key:"parseOpen",value:function(t){return"sheet"===t.name&&(this.model={name:Z.xmlDecode(t.attributes.name),id:parseInt(t.attributes.sheetId,10),state:t.attributes.state,rId:t.attributes["r:id"]},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(m);l.exports=y},{"../../../utils/utils":26,"../base-xform":31}],34:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:l.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(t){return"calcPr"===t.name&&(this.model={},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],35:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("workbookPr",{date1904:l.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(t){return"workbookPr"===t.name&&(this.model={date1904:"1"===t.attributes.date1904},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],36:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){var e={xWindow:l.x||0,yWindow:l.y||0,windowWidth:l.width||12e3,windowHeight:l.height||24e3,firstSheet:l.firstSheet,activeTab:l.activeTab};l.visibility&&"visible"!==l.visibility&&(e.visibility=l.visibility),t.leafNode("workbookView",e)}},{key:"parseOpen",value:function(t){if("workbookView"===t.name){var l=this.model={},e=function(t,e,i){var n=void 0!==e?l[t]=e:i;void 0!==n&&(l[t]=n)},i=function(t,e,i){var n=void 0!==e?l[t]=parseInt(e,10):i;void 0!==n&&(l[t]=n)};return i("x",t.attributes.xWindow,0),i("y",t.attributes.yWindow,0),i("width",t.attributes.windowWidth,25e3),i("height",t.attributes.windowHeight,1e4),e("visibility",t.attributes.visibility,"visible"),i("activeTab",t.attributes.activeTab,void 0),i("firstSheet",t.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],37:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../../../utils/col-cache"),y=t("../../../utils/xml-stream"),p=t("../base-xform"),W=t("../static-xform"),G=t("../list-xform"),X=t("./defined-name-xform"),Y=t("./sheet-xform"),N=t("./workbook-view-xform"),V=t("./workbook-properties-xform"),M=t("./workbook-calc-properties-xform"),L=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={fileVersion:e.STATIC_XFORMS.fileVersion,workbookPr:new V,bookViews:new G({tag:"bookViews",count:!1,childXform:new N}),sheets:new G({tag:"sheets",count:!1,childXform:new Y}),definedNames:new G({tag:"definedNames",count:!1,childXform:new X}),calcPr:new M},t}return s(e,[{key:"prepare",value:function(t){t.sheets=t.worksheets;var l=[],e=0;t.sheets.forEach((function(t){if(t.pageSetup&&t.pageSetup.printArea&&t.pageSetup.printArea.split("&&").forEach((function(i){var n=i.split(":"),c={name:"_xlnm.Print_Area",ranges:["'".concat(t.name,"'!$").concat(n[0],":$").concat(n[1])],localSheetId:e};l.push(c)})),t.pageSetup&&(t.pageSetup.printTitlesRow||t.pageSetup.printTitlesColumn)){var i=[];if(t.pageSetup.printTitlesColumn){var n=t.pageSetup.printTitlesColumn.split(":");i.push("'".concat(t.name,"'!$").concat(n[0],":$").concat(n[1]))}if(t.pageSetup.printTitlesRow){var c=t.pageSetup.printTitlesRow.split(":");i.push("'".concat(t.name,"'!$").concat(c[0],":$").concat(c[1]))}var s={name:"_xlnm.Print_Titles",ranges:i,localSheetId:e};l.push(s)}e++})),l.length&&(t.definedNames=t.definedNames.concat(l)),(t.media||[]).forEach((function(t,l){t.name=t.type+(l+1)}))}},{key:"render",value:function(t,l){t.openXml(y.StdDocAttributes),t.openNode("workbook",e.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(t),this.map.workbookPr.render(t,l.properties),this.map.bookViews.render(t,l.views),this.map.sheets.render(t,l.sheets),this.map.definedNames.render(t,l.definedNames),this.map.calcPr.render(t,l.calcProperties),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"workbook":return!0;default:return this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t),!0}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case"workbook":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}},{key:"reconcile",value:function(t){var l,e=(t.workbookRels||[]).reduce((function(t,l){return t[l.Id]=l,t}),{}),i=[],n=0;(t.sheets||[]).forEach((function(c){var s=e[c.rId];s&&(l=t.worksheetHash["xl/".concat(s.Target.replace(/^(\s|\/xl\/)+/,""))],l&&(l.name=c.name,l.id=c.id,l.state=c.state,i[n++]=l))}));var c=[];Z.each(t.definedNames,(function(t){if("_xlnm.Print_Area"===t.name){if(l=i[t.localSheetId],l){l.pageSetup||(l.pageSetup={});var e=m.decodeEx(t.ranges[0]);l.pageSetup.printArea=l.pageSetup.printArea?"".concat(l.pageSetup.printArea,"&&").concat(e.dimensions):e.dimensions}}else if("_xlnm.Print_Titles"===t.name){if(l=i[t.localSheetId],l){l.pageSetup||(l.pageSetup={});var n=t.ranges.join(","),s=/\$/g,d=/\$\d+:\$\d+/,a=n.match(d);if(a&&a.length){var u=a[0];l.pageSetup.printTitlesRow=u.replace(s,"")}var o=/\$[A-Z]+:\$[A-Z]+/,r=n.match(o);if(r&&r.length){var b=r[0];l.pageSetup.printTitlesColumn=b.replace(s,"")}}}else c.push(t)})),t.definedNames=c,t.media.forEach((function(t,l){t.index=l}))}}]),e}(p);L.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},L.STATIC_XFORMS={fileVersion:new W({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},l.exports=L},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(t,l,e){"use strict";function i(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function n(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?i(Object(e),!0).forEach((function(l){c(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):i(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function c(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}var s=t("../strings/rich-text-xform"),d=t("../../../utils/utils"),a=t("../base-xform"),u=l.exports=function(t){this.model=t};d.inherits(u,a,{get tag(){return"r"},get richTextXform(){return this._richTextXform||(this._richTextXform=new s),this._richTextXform},render:function(t,l){var e=this;l=l||this.model,t.openNode("comment",{ref:l.ref,authorId:0}),t.openNode("text"),l&&l.note&&l.note.texts&&l.note.texts.forEach((function(l){e.richTextXform.render(t,l)})),t.closeNode(),t.closeNode()},parseOpen:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"comment":return this.model=n({type:"note",note:{texts:[]}},t.attributes),!0;case"r":return this.parser=this.richTextXform,this.parser.parseOpen(t),!0;default:return!1}},parseText:function(t){this.parser&&this.parser.parseText(t)},parseClose:function(t){switch(t){case"comment":return!1;case"r":return this.model.note.texts.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(t),!0}}})},{"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],39:[function(t,l,e){"use strict";var i=t("../../../utils/xml-stream"),n=t("../../../utils/utils"),c=t("../base-xform"),s=t("./comment-xform"),d=l.exports=function(){this.map={comment:new s}};n.inherits(d,c,{COMMENTS_ATTRIBUTES:{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main"}},{render:function(t,l){var e=this;l=l||this.model,t.openXml(i.StdDocAttributes),t.openNode("comments",d.COMMENTS_ATTRIBUTES),t.openNode("authors"),t.leafNode("author",null,"Author"),t.closeNode(),t.openNode("commentList"),l.comments.forEach((function(l){e.map.comment.render(t,l)})),t.closeNode(),t.closeNode()},parseOpen:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"commentList":return this.model={comments:[]},!0;case"comment":return this.parser=this.map.comment,this.parser.parseOpen(t),!0;default:return!1}},parseText:function(t){this.parser&&this.parser.parseText(t)},parseClose:function(t){switch(t){case"commentList":return!1;case"comment":return this.model.comments.push(this.parser.model),this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(t),!0}}})},{"../../../utils/utils":26,"../../../utils/xml-stream":27,"../base-xform":31,"./comment-xform":38}],40:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i._model=t,i}return s(e,[{key:"render",value:function(t,l,e){(l===e[2]||"x:SizeWithCells"===this.tag&&l===e[1])&&t.leafNode(this.tag)}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),e}(Z);l.exports=m},{"../../base-xform":31}],41:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i._model=t,i}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,null,l)}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(t){this.text=t}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),e}(Z);l.exports=m},{"../../base-xform":31}],42:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"getAnchorRect",value:function(t){var l=Math.floor(t.left),e=Math.floor(68*(t.left-l)),i=Math.floor(t.top),n=Math.floor(18*(t.top-i)),c=Math.floor(t.right),s=Math.floor(68*(t.right-c)),d=Math.floor(t.bottom),a=Math.floor(18*(t.bottom-d));return[l,e,i,n,c,s,d,a]}},{key:"getDefaultRect",value:function(t){var l=t.col,e=6,i=Math.max(t.row-2,0),n=14,c=l+2,s=2,d=i+4,a=16;return[l,e,i,n,c,s,d,a]}},{key:"render",value:function(t,l){var e=l.anchor?this.getAnchorRect(l.anchor):this.getDefaultRect(l.refAddress);t.leafNode("x:Anchor",null,e.join(", "))}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(t){this.text=t}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),e}(Z);l.exports=m},{"../base-xform":31}],43:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./vml-anchor-xform"),y=t("./style/vml-protection-xform"),p=t("./style/vml-position-xform"),W=["twoCells","oneCells","absolute"],G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"x:Anchor":new m,"x:Locked":new y({tag:"x:Locked"}),"x:LockText":new y({tag:"x:LockText"}),"x:SizeWithCells":new p({tag:"x:SizeWithCells"}),"x:MoveWithCells":new p({tag:"x:MoveWithCells"})},t}return s(e,[{key:"render",value:function(t,l){var e=l.note,i=e.protection,n=e.editAs;t.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(t,n,W),this.map["x:SizeWithCells"].render(t,n,W),this.map["x:Anchor"].render(t,l),this.map["x:Locked"].render(t,i.locked),t.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(t,i.lockText),t.leafNode("x:Row",null,l.refAddress.row-1),t.leafNode("x:Column",null,l.refAddress.col-1),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:""};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.normalizeModel(),!1;default:return!0}}},{key:"normalizeModel",value:function(){var t=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),l=Object.keys(t).length;this.model.editAs=W[l],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}},{key:"tag",get:function(){return"x:ClientData"}}]),e}(Z);l.exports=G},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=t("./vml-shape-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"v:shape":new y},t}return s(e,[{key:"render",value:function(t,l){var i=this;t.openXml(Z.StdDocAttributes),t.openNode(this.tag,e.DRAWING_ATTRIBUTES),t.openNode("o:shapelayout",{"v:ext":"edit"}),t.leafNode("o:idmap",{"v:ext":"edit",data:1}),t.closeNode(),t.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),t.leafNode("v:stroke",{joinstyle:"miter"}),t.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),t.closeNode(),l.comments.forEach((function(l,e){i.map["v:shape"].render(t,l,e)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(t){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(t,l){var e=this;t.anchors.forEach((function(t){t.br?e.map["xdr:twoCellAnchor"].reconcile(t,l):e.map["xdr:oneCellAnchor"].reconcile(t,l)}))}},{key:"tag",get:function(){return"xml"}}]),e}(m);p.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},l.exports=p},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./vml-textbox-xform"),y=t("./vml-client-data-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"v:textbox":new m,"x:ClientData":new y},t}return s(e,[{key:"render",value:function(t,l,i){t.openNode("v:shape",e.V_SHAPE_ATTRIBUTES(l,i)),t.leafNode("v:fill",{color2:"infoBackground [80]"}),t.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),t.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(t,l),this.map["x:ClientData"].render(t,l),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset(),this.model={margins:{insetmode:t.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1;default:return!0}}},{key:"tag",get:function(){return"v:shape"}}]),e}(Z);p.V_SHAPE_ATTRIBUTES=function(t,l){return{id:"_x0000_s".concat(1025+l),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":t.note.margins&&t.note.margins.insetmode}},l.exports=p},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"conversionUnit",value:function(t,l,e){return"".concat(parseFloat(t)*l.toFixed(2)).concat(e)}},{key:"reverseConversionUnit",value:function(t){var l=this;return(t||"").split(",").map((function(t){return Number(parseFloat(l.conversionUnit(parseFloat(t),.1,"")).toFixed(2))}))}},{key:"render",value:function(t,l){var e=this,i={style:"mso-direction-alt:auto"};if(l&&l.note){var n=l.note&&l.note.margins,c=n.inset;Array.isArray(c)&&(c=c.map((function(t){return e.conversionUnit(t,10,"mm")})).join(",")),c&&(i.inset=c)}t.openNode("v:textbox",i),t.leafNode("div",{style:"text-align:left"}),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={inset:this.reverseConversionUnit(t.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),e}(Z);l.exports=m},{"../base-xform":31}],47:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"createNewModel",value:function(t){return{}}},{key:"parseOpen",value:function(t){return this.parser=this.parser||this.map[t.name],this.parser?(this.parser.parseOpen(t),!0):t.name===this.tag&&(this.model=this.createNewModel(t),!0)}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"onParserClose",value:function(t,l){this.model[t]=l.model}},{key:"parseClose",value:function(t){return this.parser?(this.parser.parseClose(t)||(this.onParserClose(t,this.parser),this.parser=void 0),!0):t!==this.tag}}]),e}(Z);l.exports=m},{"./base-xform":31}],48:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.openNode("HeadingPairs"),t.openNode("vt:vector",{size:2,baseType:"variant"}),t.openNode("vt:variant"),t.leafNode("vt:lpstr",void 0,"Worksheets"),t.closeNode(),t.openNode("vt:variant"),t.leafNode("vt:i4",void 0,l.length),t.closeNode(),t.closeNode(),t.closeNode()}},{key:"parseOpen",value:function(t){return"HeadingPairs"===t.name}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){return"HeadingPairs"!==t}}]),e}(Z);l.exports=m},{"../base-xform":31}],49:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.openNode("TitlesOfParts"),t.openNode("vt:vector",{size:l.length,baseType:"lpstr"}),l.forEach((function(l){t.leafNode("vt:lpstr",void 0,l.name)})),t.closeNode(),t.closeNode()}},{key:"parseOpen",value:function(t){return"TitlesOfParts"===t.name}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){return"TitlesOfParts"!==t}}]),e}(Z);l.exports=m},{"../base-xform":31}],50:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=t("../simple/string-xform"),p=t("./app-heading-pairs-xform"),W=t("./app-titles-of-parts-xform"),G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={Company:new y({tag:"Company"}),Manager:new y({tag:"Manager"}),HeadingPairs:new p,TitleOfParts:new W},t}return s(e,[{key:"render",value:function(t,l){t.openXml(Z.StdDocAttributes),t.openNode("Properties",e.PROPERTY_ATTRIBUTES),t.leafNode("Application",void 0,"Microsoft Excel"),t.leafNode("DocSecurity",void 0,"0"),t.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(t,l.worksheets),this.map.TitleOfParts.render(t,l.worksheets),this.map.Company.render(t,l.company||""),this.map.Manager.render(t,l.manager),t.leafNode("LinksUpToDate",void 0,"false"),t.leafNode("SharedDoc",void 0,"false"),t.leafNode("HyperlinksChanged",void 0,"false"),t.leafNode("AppVersion",void 0,"16.0300"),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"Properties":return!0;default:return this.parser=this.map[t.name],!!this.parser&&(this.parser.parseOpen(t),!0)}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case"Properties":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}]),e}(m);G.DateFormat=function(t){return t.toISOString().replace(/[.]\d{3,6}/,"")},G.DateAttrs={"xsi:type":"dcterms:W3CDTF"},G.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},l.exports=G},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.openXml(Z.StdDocAttributes),t.openNode("Types",e.PROPERTY_ATTRIBUTES);var i={};(l.media||[]).forEach((function(l){if("image"===l.type){var e=l.extension;i[e]||(i[e]=!0,t.leafNode("Default",{Extension:e,ContentType:"image/".concat(e)}))}})),t.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),t.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),t.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),l.worksheets.forEach((function(l){var e="/xl/worksheets/sheet".concat(l.id,".xml");t.leafNode("Override",{PartName:e,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})})),t.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),t.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var n=l.sharedStrings&&l.sharedStrings.count;n&&t.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),l.tables&&l.tables.forEach((function(l){t.leafNode("Override",{PartName:"/xl/tables/".concat(l.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})})),l.drawings&&l.drawings.forEach((function(l){t.leafNode("Override",{PartName:"/xl/drawings/".concat(l.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})})),l.commentRefs&&(t.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),l.commentRefs.forEach((function(l){var e=l.commentName;t.leafNode("Override",{PartName:"/xl/".concat(e,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})}))),t.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),t.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),t.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(m);y.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},l.exports=y},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=t("../simple/date-xform"),p=t("../simple/string-xform"),W=t("../simple/integer-xform"),G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"dc:creator":new p({tag:"dc:creator"}),"dc:title":new p({tag:"dc:title"}),"dc:subject":new p({tag:"dc:subject"}),"dc:description":new p({tag:"dc:description"}),"dc:identifier":new p({tag:"dc:identifier"}),"dc:language":new p({tag:"dc:language"}),"cp:keywords":new p({tag:"cp:keywords"}),"cp:category":new p({tag:"cp:category"}),"cp:lastModifiedBy":new p({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new y({tag:"cp:lastPrinted",format:e.DateFormat}),"cp:revision":new W({tag:"cp:revision"}),"cp:version":new p({tag:"cp:version"}),"cp:contentStatus":new p({tag:"cp:contentStatus"}),"cp:contentType":new p({tag:"cp:contentType"}),"dcterms:created":new y({tag:"dcterms:created",attrs:e.DateAttrs,format:e.DateFormat}),"dcterms:modified":new y({tag:"dcterms:modified",attrs:e.DateAttrs,format:e.DateFormat})},t}return s(e,[{key:"render",value:function(t,l){t.openXml(Z.StdDocAttributes),t.openNode("cp:coreProperties",e.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(t,l.creator),this.map["dc:title"].render(t,l.title),this.map["dc:subject"].render(t,l.subject),this.map["dc:description"].render(t,l.description),this.map["dc:identifier"].render(t,l.identifier),this.map["dc:language"].render(t,l.language),this.map["cp:keywords"].render(t,l.keywords),this.map["cp:category"].render(t,l.category),this.map["cp:lastModifiedBy"].render(t,l.lastModifiedBy),this.map["cp:lastPrinted"].render(t,l.lastPrinted),this.map["cp:revision"].render(t,l.revision),this.map["cp:version"].render(t,l.version),this.map["cp:contentStatus"].render(t,l.contentStatus),this.map["cp:contentType"].render(t,l.contentType),this.map["dcterms:created"].render(t,l.created),this.map["dcterms:modified"].render(t,l.modified),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[t.name],this.parser)return this.parser.parseOpen(t),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(t)))}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(t))}}}]),e}(m);G.DateFormat=function(t){return t.toISOString().replace(/[.]\d{3}/,"")},G.DateAttrs={"xsi:type":"dcterms:W3CDTF"},G.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},l.exports=G},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("Relationship",l)}},{key:"parseOpen",value:function(t){switch(t.name){case"Relationship":return this.model=t.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],54:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=t("./relationship-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={Relationship:new y},t}return s(e,[{key:"render",value:function(t,l){var i=this;l=l||this._values,t.openXml(Z.StdDocAttributes),t.openNode("Relationships",e.RELATIONSHIPS_ATTRIBUTES),l.forEach((function(l){i.map.Relationship.render(t,l)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[t.name],this.parser)return this.parser.parseOpen(t),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(t)))}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(t){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(t))}}}]),e}(m);p.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},l.exports=p},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset(),this.model={range:{editAs:t.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"reconcilePicture",value:function(t,l){if(t&&t.rId){var e=l.rels[t.rId],i=e.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(i){var n=i[1],c=l.mediaIndex[n];return l.media[c]}}}}]),e}(Z);l.exports=m},{"../base-xform":31}],56:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./blip-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"a:blip":new m},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag),this.map["a:blip"].render(t,l),t.openNode("a:stretch"),t.leafNode("a:fillRect"),t.closeNode(),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset();break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),e}(Z);l.exports=y},{"../base-xform":31,"./blip-xform":57}],57:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":l.rId,cstate:"print"})}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={rId:t.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),e}(Z);l.exports=m},{"../base-xform":31}],58:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t){t.openNode(this.tag),t.leafNode("a:picLocks",{noChangeAspect:"1"}),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),e}(Z);l.exports=m},{"../base-xform":31}],59:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./hlink-click-xform"),y=t("./ext-lst-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"a:hlinkClick":new m,"a:extLst":new y},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag,{id:l.index,name:"Picture ".concat(l.index)}),this.map["a:hlinkClick"].render(t,l),this.map["a:extLst"].render(t,l),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset();break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),e}(Z);l.exports=p},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("../simple/integer-xform"),y=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.map={"xdr:col":new m({tag:"xdr:col",zero:!0}),"xdr:colOff":new m({tag:"xdr:colOff",zero:!0}),"xdr:row":new m({tag:"xdr:row",zero:!0}),"xdr:rowOff":new m({tag:"xdr:rowOff",zero:!0})},i}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag),this.map["xdr:col"].render(t,l.nativeCol),this.map["xdr:colOff"].render(t,l.nativeColOff),this.map["xdr:row"].render(t,l.nativeRow),this.map["xdr:rowOff"].render(t,l.nativeRowOff),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset();break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1;default:return!0}}}]),e}(Z);l.exports=y},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/col-cache"),m=t("../../../utils/xml-stream"),y=t("../base-xform"),p=t("./two-cell-anchor-xform"),W=t("./one-cell-anchor-xform");function G(t){var l="string"===typeof t.range?Z.decode(t.range):t.range;return l.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var X=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xdr:twoCellAnchor":new p,"xdr:oneCellAnchor":new W},t}return s(e,[{key:"prepare",value:function(t){var l=this;t.anchors.forEach((function(t,e){t.anchorType=G(t);var i=l.map[t.anchorType];i.prepare(t,{index:e})}))}},{key:"render",value:function(t,l){var i=this;t.openXml(m.StdDocAttributes),t.openNode(this.tag,e.DRAWING_ATTRIBUTES),l.anchors.forEach((function(l){var e=i.map[l.anchorType];e.render(t,l)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(t){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(t,l){var e=this;t.anchors.forEach((function(t){t.br?e.map["xdr:twoCellAnchor"].reconcile(t,l):e.map["xdr:oneCellAnchor"].reconcile(t,l)}))}},{key:"tag",get:function(){return"xdr:wsDr"}}]),e}(y);X.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},l.exports=X},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t){t.openNode(this.tag),t.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),t.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),t.closeNode(),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),e}(Z);l.exports=m},{"../base-xform":31}],63:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=9525,y=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.map={},i}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag);var e=Math.floor(l.width*m),i=Math.floor(l.height*m);t.addAttribute("cx",e),t.addAttribute("cy",i),t.closeNode()}},{key:"parseOpen",value:function(t){return t.name===this.tag&&(this.model={width:parseInt(t.attributes.cx||"0",10)/m,height:parseInt(t.attributes.cy||"0",10)/m},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=y},{"../base-xform":31}],64:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){l.hyperlinks&&l.hyperlinks.rId&&t.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":l.hyperlinks.rId,tooltip:l.hyperlinks.tooltip})}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={hyperlinks:{rId:t.attributes["r:id"],tooltip:t.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),e}(Z);l.exports=m},{"../base-xform":31}],65:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./c-nv-pr-xform"),y=t("./c-nv-pic-pr-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xdr:cNvPr":new m,"xdr:cNvPicPr":new y},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag),this.map["xdr:cNvPr"].render(t,l),this.map["xdr:cNvPicPr"].render(t,l),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset();break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),e}(Z);l.exports=p},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./base-cell-anchor-xform"),m=t("../static-xform"),y=t("./cell-position-xform"),p=t("./ext-xform"),W=t("./pic-xform"),G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xdr:from":new y({tag:"xdr:from"}),"xdr:ext":new p({tag:"xdr:ext"}),"xdr:pic":new W,"xdr:clientData":new m({tag:"xdr:clientData"})},t}return s(e,[{key:"prepare",value:function(t,l){this.map["xdr:pic"].prepare(t.picture,l)}},{key:"render",value:function(t,l){t.openNode(this.tag,{editAs:l.range.editAs||"oneCell"}),this.map["xdr:from"].render(t,l.range.tl),this.map["xdr:ext"].render(t,l.range.ext),this.map["xdr:pic"].render(t,l.picture),this.map["xdr:clientData"].render(t,{}),t.closeNode()}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(t,l){t.medium=this.reconcilePicture(t.picture,l)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),e}(Z);l.exports=G},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("../static-xform"),y=t("./blip-fill-xform"),p=t("./nv-pic-pr-xform"),W=t("./sp-pr"),G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xdr:nvPicPr":new p,"xdr:blipFill":new y,"xdr:spPr":new m(W)},t}return s(e,[{key:"prepare",value:function(t,l){t.index=l.index+1}},{key:"render",value:function(t,l){t.openNode(this.tag),this.map["xdr:nvPicPr"].render(t,l),this.map["xdr:blipFill"].render(t,l),this.map["xdr:spPr"].render(t,l),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:this.reset();break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:pic"}}]),e}(Z);l.exports=G},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(t,l,e){"use strict";l.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],69:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./base-cell-anchor-xform"),m=t("../static-xform"),y=t("./cell-position-xform"),p=t("./pic-xform"),W=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xdr:from":new y({tag:"xdr:from"}),"xdr:to":new y({tag:"xdr:to"}),"xdr:pic":new p,"xdr:clientData":new m({tag:"xdr:clientData"})},t}return s(e,[{key:"prepare",value:function(t,l){this.map["xdr:pic"].prepare(t.picture,l)}},{key:"render",value:function(t,l){t.openNode(this.tag,{editAs:l.range.editAs||"oneCell"}),this.map["xdr:from"].render(t,l.range.tl),this.map["xdr:to"].render(t,l.range.br),this.map["xdr:pic"].render(t,l.picture),this.map["xdr:clientData"].render(t,{}),t.closeNode()}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(t,l){t.medium=this.reconcilePicture(t.picture,l)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),e}(Z);l.exports=W},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.always=!!t.always,i.count=t.count,i.empty=t.empty,i.$count=t.$count||"count",i.$=t.$,i.childXform=t.childXform,i.maxItems=t.maxItems,i}return s(e,[{key:"prepare",value:function(t,l){var e=this.childXform;t&&t.forEach((function(t,i){l.index=i,e.prepare(t,l)}))}},{key:"render",value:function(t,l){if(this.always||l&&l.length){t.openNode(this.tag,this.$),this.count&&t.addAttribute(this.$count,l&&l.length||0);var e=this.childXform;(l||[]).forEach((function(l,i){e.render(t,l,i)})),t.closeNode()}else this.empty&&t.leafNode(this.tag)}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:return this.model=[],!0;default:return!!this.childXform.parseOpen(t)&&(this.parser=this.childXform,!0)}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser){if(!this.parser.parseClose(t)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error("Max ".concat(this.childXform.tag," count (").concat(this.maxItems,") exceeded"));return!0}return!1}},{key:"reconcile",value:function(t,l){if(t){var e=this.childXform;t.forEach((function(t){e.reconcile(t,l)}))}}}]),e}(Z);l.exports=m},{"./base-xform":31}],71:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/col-cache"),m=t("../base-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l)if("string"===typeof l)t.leafNode("autoFilter",{ref:l});else{var e=function(t){return"string"===typeof t?t:Z.getAddress(t.row,t.column).address},i=e(l.from),n=e(l.to);i&&n&&t.leafNode("autoFilter",{ref:"".concat(i,":").concat(n)})}}},{key:"parseOpen",value:function(t){"autoFilter"===t.name&&(this.model=t.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),e}(m);l.exports=y},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function c(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?n(Object(e),!0).forEach((function(l){s(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):n(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function s(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function d(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function a(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,l,e){return l&&a(t.prototype,l),e&&a(t,e),t}function o(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&r(t,l)}function r(t,l){return r=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},r(t,l)}function b(t){var l=m();return function(){var e,i=y(t);if(l){var n=y(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return h(this,e)}}function h(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?Z(t):l}function Z(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}var p=t("../../../utils/utils"),W=t("../base-xform"),G=t("../../../doc/range"),X=t("../../../doc/enums"),Y=t("../strings/rich-text-xform");function N(t){if(null===t||void 0===t)return X.ValueType.Null;if(t instanceof String||"string"===typeof t)return X.ValueType.String;if("number"===typeof t)return X.ValueType.Number;if("boolean"===typeof t)return X.ValueType.Boolean;if(t instanceof Date)return X.ValueType.Date;if(t.text&&t.hyperlink)return X.ValueType.Hyperlink;if(t.formula)return X.ValueType.Formula;if(t.error)return X.ValueType.Error;throw new Error("I could not understand type of value")}function V(t){switch(t.type){case X.ValueType.Formula:return N(t.result);default:return t.type}}var M=function(t){o(e,t);var l=b(e);function e(){var t;return d(this,e),t=l.call(this),t.richTextXForm=new Y,t}return u(e,[{key:"prepare",value:function(t,l){var e=l.styles.addStyleModel(t.style||{},V(t));switch(e&&(t.styleId=e),t.comment&&l.comments.push(c(c({},t.comment),{},{ref:t.address})),t.type){case X.ValueType.String:case X.ValueType.RichText:l.sharedStrings&&(t.ssId=l.sharedStrings.add(t.value));break;case X.ValueType.Date:l.date1904&&(t.date1904=!0);break;case X.ValueType.Hyperlink:l.sharedStrings&&void 0!==t.text&&null!==t.text&&(t.ssId=l.sharedStrings.add(t.text)),l.hyperlinks.push({address:t.address,target:t.hyperlink,tooltip:t.tooltip});break;case X.ValueType.Merge:l.merges.add(t);break;case X.ValueType.Formula:if(l.date1904&&(t.date1904=!0),"shared"===t.shareType&&(t.si=l.siFormulae++),t.formula)l.formulae[t.address]=t;else if(t.sharedFormula){var i=l.formulae[t.sharedFormula];if(!i)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(t.address));void 0===i.si?(i.shareType="shared",i.si=l.siFormulae++,i.range=new G(i.address,t.address)):i.range&&i.range.expandToAddress(t.address),t.si=i.si}break;default:break}}},{key:"renderFormula",value:function(t,l){var e=null;switch(l.shareType){case"shared":e={t:"shared",ref:l.ref||l.range.range,si:l.si};break;case"array":e={t:"array",ref:l.ref};break;default:void 0!==l.si&&(e={t:"shared",si:l.si});break}switch(N(l.result)){case X.ValueType.Null:t.leafNode("f",e,l.formula);break;case X.ValueType.String:t.addAttribute("t","str"),t.leafNode("f",e,l.formula),t.leafNode("v",null,l.result);break;case X.ValueType.Number:t.leafNode("f",e,l.formula),t.leafNode("v",null,l.result);break;case X.ValueType.Boolean:t.addAttribute("t","b"),t.leafNode("f",e,l.formula),t.leafNode("v",null,l.result?1:0);break;case X.ValueType.Error:t.addAttribute("t","e"),t.leafNode("f",e,l.formula),t.leafNode("v",null,l.result.error);break;case X.ValueType.Date:t.leafNode("f",e,l.formula),t.leafNode("v",null,p.dateToExcel(l.result,l.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(t,l){var e=this;if(l.type!==X.ValueType.Null||l.styleId){switch(t.openNode("c"),t.addAttribute("r",l.address),l.styleId&&t.addAttribute("s",l.styleId),l.type){case X.ValueType.Null:break;case X.ValueType.Number:t.leafNode("v",null,l.value);break;case X.ValueType.Boolean:t.addAttribute("t","b"),t.leafNode("v",null,l.value?"1":"0");break;case X.ValueType.Error:t.addAttribute("t","e"),t.leafNode("v",null,l.value.error);break;case X.ValueType.String:case X.ValueType.RichText:void 0!==l.ssId?(t.addAttribute("t","s"),t.leafNode("v",null,l.ssId)):l.value&&l.value.richText?(t.addAttribute("t","inlineStr"),t.openNode("is"),l.value.richText.forEach((function(l){e.richTextXForm.render(t,l)})),t.closeNode("is")):(t.addAttribute("t","str"),t.leafNode("v",null,l.value));break;case X.ValueType.Date:t.leafNode("v",null,p.dateToExcel(l.value,l.date1904));break;case X.ValueType.Hyperlink:void 0!==l.ssId?(t.addAttribute("t","s"),t.leafNode("v",null,l.ssId)):(t.addAttribute("t","str"),t.leafNode("v",null,l.text));break;case X.ValueType.Formula:this.renderFormula(t,l);break;case X.ValueType.Merge:break;default:break}t.closeNode()}}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"c":return this.model={address:t.attributes.r},this.t=t.attributes.t,t.attributes.s&&(this.model.styleId=parseInt(t.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=t.attributes.si,this.model.shareType=t.attributes.t,this.model.ref=t.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){if(this.parser)this.parser.parseText(t);else switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+t:t;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+t:t:this.model.value=this.model.value?this.model.value+t:t;break;default:break}}},{key:"parseClose",value:function(t){switch(t){case"c":var l=this.model;if(l.formula||l.shareType)l.type=X.ValueType.Formula,l.value&&("str"===this.t?l.result=p.xmlDecode(l.value):"b"===this.t?l.result=0!==parseInt(l.value,10):"e"===this.t?l.result={error:l.value}:l.result=parseFloat(l.value),l.value=void 0);else if(void 0!==l.value)switch(this.t){case"s":l.type=X.ValueType.String,l.value=parseInt(l.value,10);break;case"str":l.type=X.ValueType.String,l.value=p.xmlDecode(l.value);break;case"inlineStr":l.type=X.ValueType.String;break;case"b":l.type=X.ValueType.Boolean,l.value=0!==parseInt(l.value,10);break;case"e":l.type=X.ValueType.Error,l.value={error:l.value};break;default:l.type=X.ValueType.Number,l.value=parseFloat(l.value);break}else l.styleId?l.type=X.ValueType.Null:l.type=X.ValueType.Merge;return!1;case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(t),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return!!this.parser&&(this.parser.parseClose(t),!0)}}},{key:"reconcile",value:function(t,l){var e=t.styleId&&l.styles&&l.styles.getStyleModel(t.styleId);switch(e&&(t.style=e),void 0!==t.styleId&&(t.styleId=void 0),t.type){case X.ValueType.String:"number"===typeof t.value&&l.sharedStrings&&(t.value=l.sharedStrings.getString(t.value)),t.value.richText&&(t.type=X.ValueType.RichText);break;case X.ValueType.Number:e&&p.isDateFmt(e.numFmt)&&(t.type=X.ValueType.Date,t.value=p.excelToDate(t.value,l.date1904));break;case X.ValueType.Formula:void 0!==t.result&&e&&p.isDateFmt(e.numFmt)&&(t.result=p.excelToDate(t.result,l.date1904)),"shared"===t.shareType&&(t.ref?l.formulae[t.si]=t.address:(t.sharedFormula=l.formulae[t.si],delete t.shareType),delete t.si);break;default:break}var i=l.hyperlinkMap[t.address];i&&(t.type===X.ValueType.Formula?(t.text=t.result,t.result=void 0):(t.text=t.value,t.value=void 0),t.type=X.ValueType.Hyperlink,t.hyperlink=i);var n=l.commentsMap&&l.commentsMap[t.address];n&&(t.comment=n)}},{key:"tag",get:function(){return"c"}}]),e}(W);l.exports=M},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,{iconSet:l.iconSet,iconId:l.iconId})}},{key:"parseOpen",value:function(t){var l=t.attributes;this.model={iconSet:l.iconSet,iconId:Z.toIntValue(l.iconId)}}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),e}(Z);l.exports=m},{"../../base-xform":31}],74:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("uuid"),m=Z.v4,y=t("../../base-xform"),p=t("../../composite-xform"),W=t("./databar-ext-xform"),G=t("./icon-set-ext-xform"),X={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},Y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"x14:dataBar":t.databarXform=new W,"x14:iconSet":t.iconSetXform=new G},t}return s(e,[{key:"prepare",value:function(t){e.isExt(t)&&(t.x14Id="{".concat(m(),"}").toUpperCase())}},{key:"render",value:function(t,l){if(e.isExt(l))switch(l.type){case"dataBar":this.renderDataBar(t,l);break;case"iconSet":this.renderIconSet(t,l);break}}},{key:"renderDataBar",value:function(t,l){t.openNode(this.tag,{type:"dataBar",id:l.x14Id}),this.databarXform.render(t,l),t.closeNode()}},{key:"renderIconSet",value:function(t,l){t.openNode(this.tag,{type:"iconSet",priority:l.priority,id:l.x14Id||"{".concat(m(),"}")}),this.iconSetXform.render(t,l),t.closeNode()}},{key:"createNewModel",value:function(t){var l=t.attributes;return{type:l.type,x14Id:l.id,priority:y.toIntValue(l.priority)}}},{key:"onParserClose",value:function(t,l){Object.assign(this.model,l.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(t){return"dataBar"===t.type?W.isExt(t):!("iconSet"!==t.type||!t.custom&&!X[t.iconSet])}}]),e}(p);l.exports=Y},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("./f-ext-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xm:f":t.fExtXform=new m},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag,{type:l.type}),void 0!==l.value&&this.fExtXform.render(t,l.value),t.closeNode()}},{key:"createNewModel",value:function(t){return{type:t.attributes.type}}},{key:"onParserClose",value:function(t,l){switch(t){case"xm:f":this.model.value=l.model?parseFloat(l.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),e}(Z);l.exports=y},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("./sqref-ext-xform"),y=t("./cf-rule-ext-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"xm:sqref":t.sqRef=new m,"x14:cfRule":t.cfRule=new y},t}return s(e,[{key:"prepare",value:function(t,l){var e=this;t.rules.forEach((function(t){e.cfRule.prepare(t,l)}))}},{key:"render",value:function(t,l){var e=this;l.rules.some(y.isExt)&&(t.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),l.rules.filter(y.isExt).forEach((function(l){return e.cfRule.render(t,l)})),this.sqRef.render(t,l.ref),t.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(t,l){switch(t){case"xm:sqref":this.model.ref=l.model;break;case"x14:cfRule":this.model.rules.push(l.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),e}(Z);l.exports=p},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("./cf-rule-ext-xform"),y=t("./conditional-formatting-ext-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"x14:conditionalFormatting":t.cfXform=new y},t}return s(e,[{key:"hasContent",value:function(t){return void 0===t.hasExtContent&&(t.hasExtContent=t.some((function(t){return t.rules.some(m.isExt)}))),t.hasExtContent}},{key:"prepare",value:function(t,l){var e=this;t.forEach((function(t){e.cfXform.prepare(t,l)}))}},{key:"render",value:function(t,l){var e=this;this.hasContent(l)&&(t.openNode(this.tag),l.forEach((function(l){return e.cfXform.render(t,l)})),t.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(t,l){this.model.push(l.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),e}(Z);l.exports=p},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){return u(t)||a(t,l)||s(t,l)||c()}function c(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,l){if(t){if("string"===typeof t)return d(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?d(t,l):void 0}}function d(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function a(t,l){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var e=[],i=!0,n=!1,c=void 0;try{for(var s,d=t[Symbol.iterator]();!(i=(s=d.next()).done);i=!0)if(e.push(s.value),l&&e.length===l)break}catch(a){n=!0,c=a}finally{try{i||null==d["return"]||d["return"]()}finally{if(n)throw c}}return e}}function u(t){if(Array.isArray(t))return t}function o(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function r(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function b(t,l,e){return l&&r(t.prototype,l),e&&r(t,e),t}function h(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&Z(t,l)}function Z(t,l){return Z=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},Z(t,l)}function m(t){var l=W();return function(){var e,i=G(t);if(l){var n=G(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return y(this,e)}}function y(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?p(t):l}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function W(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function G(t){return G=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},G(t)}var X=t("../../base-xform"),Y=t("../../composite-xform"),N=t("../../style/color-xform"),V=t("./cfvo-ext-xform"),M=function(t){h(e,t);var l=m(e);function e(){var t;return o(this,e),t=l.call(this),t.map={"x14:cfvo":t.cfvoXform=new V,"x14:borderColor":t.borderColorXform=new N("x14:borderColor"),"x14:negativeBorderColor":t.negativeBorderColorXform=new N("x14:negativeBorderColor"),"x14:negativeFillColor":t.negativeFillColorXform=new N("x14:negativeFillColor"),"x14:axisColor":t.axisColorXform=new N("x14:axisColor")},t}return b(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag,{minLength:X.toIntAttribute(l.minLength,0,!0),maxLength:X.toIntAttribute(l.maxLength,100,!0),border:X.toBoolAttribute(l.border,!1),gradient:X.toBoolAttribute(l.gradient,!0),negativeBarColorSameAsPositive:X.toBoolAttribute(l.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:X.toBoolAttribute(l.negativeBarBorderColorSameAsPositive,!0),axisPosition:X.toAttribute(l.axisPosition,"auto"),direction:X.toAttribute(l.direction,"leftToRight")}),l.cfvo.forEach((function(l){e.cfvoXform.render(t,l)})),this.borderColorXform.render(t,l.borderColor),this.negativeBorderColorXform.render(t,l.negativeBorderColor),this.negativeFillColorXform.render(t,l.negativeFillColor),this.axisColorXform.render(t,l.axisColor),t.closeNode()}},{key:"createNewModel",value:function(t){var l=t.attributes;return{cfvo:[],minLength:X.toIntValue(l.minLength,0),maxLength:X.toIntValue(l.maxLength,100),border:X.toBoolValue(l.border,!1),gradient:X.toBoolValue(l.gradient,!0),negativeBarColorSameAsPositive:X.toBoolValue(l.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:X.toBoolValue(l.negativeBarBorderColorSameAsPositive,!0),axisPosition:X.toStringValue(l.axisPosition,"auto"),direction:X.toStringValue(l.direction,"leftToRight")}}},{key:"onParserClose",value:function(t,l){var e=t.split(":"),i=n(e,2),c=i[1];switch(c){case"cfvo":this.model.cfvo.push(l.model);break;default:this.model[c]=l.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(t){return!t.gradient}}]),e}(Y);l.exports=M},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,null,l)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(t){this.model+=t}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),e}(Z);l.exports=m},{"../../base-xform":31}],80:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){return u(t)||a(t,l)||s(t,l)||c()}function c(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,l){if(t){if("string"===typeof t)return d(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?d(t,l):void 0}}function d(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function a(t,l){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t)){var e=[],i=!0,n=!1,c=void 0;try{for(var s,d=t[Symbol.iterator]();!(i=(s=d.next()).done);i=!0)if(e.push(s.value),l&&e.length===l)break}catch(a){n=!0,c=a}finally{try{i||null==d["return"]||d["return"]()}finally{if(n)throw c}}return e}}function u(t){if(Array.isArray(t))return t}function o(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function r(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function b(t,l,e){return l&&r(t.prototype,l),e&&r(t,e),t}function h(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&Z(t,l)}function Z(t,l){return Z=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},Z(t,l)}function m(t){var l=W();return function(){var e,i=G(t);if(l){var n=G(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return y(this,e)}}function y(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?p(t):l}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function W(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function G(t){return G=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},G(t)}var X=t("../../base-xform"),Y=t("../../composite-xform"),N=t("./cfvo-ext-xform"),V=t("./cf-icon-ext-xform"),M=function(t){h(e,t);var l=m(e);function e(){var t;return o(this,e),t=l.call(this),t.map={"x14:cfvo":t.cfvoXform=new N,"x14:cfIcon":t.cfIconXform=new V},t}return b(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag,{iconSet:X.toStringAttribute(l.iconSet),reverse:X.toBoolAttribute(l.reverse,!1),showValue:X.toBoolAttribute(l.showValue,!0),custom:X.toBoolAttribute(l.icons,!1)}),l.cfvo.forEach((function(l){e.cfvoXform.render(t,l)})),l.icons&&l.icons.forEach((function(l,i){l.iconId=i,e.cfIconXform.render(t,l)})),t.closeNode()}},{key:"createNewModel",value:function(t){var l=t.attributes;return{cfvo:[],iconSet:X.toStringValue(l.iconSet,"3TrafficLights"),reverse:X.toBoolValue(l.reverse,!1),showValue:X.toBoolValue(l.showValue,!0)}}},{key:"onParserClose",value:function(t,l){var e=t.split(":"),i=n(e,2),c=i[1];switch(c){case"cfvo":this.model.cfvo.push(l.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(l.model);break;default:this.model[c]=l.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),e}(Y);l.exports=M},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,null,l)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(t){this.model+=t}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),e}(Z);l.exports=m},{"../../base-xform":31}],82:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function c(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?n(Object(e),!0).forEach((function(l){s(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):n(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function s(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function d(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function a(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,l,e){return l&&a(t.prototype,l),e&&a(t,e),t}function o(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&r(t,l)}function r(t,l){return r=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},r(t,l)}function b(t){var l=m();return function(){var e,i=y(t);if(l){var n=y(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return h(this,e)}}function h(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?Z(t):l}function Z(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}var p=t("../../base-xform"),W=t("../../composite-xform"),G=t("../../../../doc/range"),X=t("./databar-xform"),Y=t("./ext-lst-ref-xform"),N=t("./formula-xform"),V=t("./color-scale-xform"),M=t("./icon-set-xform"),L={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},I=function(t){if(t.formulae&&t.formulae[0])return t.formulae[0];var l=new G(t.ref),e=l.tl;switch(t.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(t.text,'",').concat(e,")))");case"containsBlanks":return"LEN(TRIM(".concat(e,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(e,"))>0");case"containsErrors":return"ISERROR(".concat(e,")");case"notContainsErrors":return"NOT(ISERROR(".concat(e,"))");default:return}},w=function(t){if(t.formulae&&t.formulae[0])return t.formulae[0];var l=new G(t.ref),e=l.tl;switch(t.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(e,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(e,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(e,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(e,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(e,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(e,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(e,",1)=TODAY()-1");case"today":return"FLOOR(".concat(e,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(e,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(e,",1)<=6,FLOOR(").concat(e,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(e,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(e,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(e,")=MONTH(TODAY()),YEAR(").concat(e,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(e,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(e,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},f=function(t){var l=t.type,e=t.operator;switch(l){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:l};default:return{type:l,operator:e}}},R=function(t){o(e,t);var l=b(e);function e(){var t;return d(this,e),t=l.call(this),t.map={dataBar:t.databarXform=new X,extLst:t.extLstRefXform=new Y,formula:t.formulaXform=new N,colorScale:t.colorScaleXform=new V,iconSet:t.iconSetXform=new M},t}return u(e,[{key:"render",value:function(t,l){switch(l.type){case"expression":this.renderExpression(t,l);break;case"cellIs":this.renderCellIs(t,l);break;case"top10":this.renderTop10(t,l);break;case"aboveAverage":this.renderAboveAverage(t,l);break;case"dataBar":this.renderDataBar(t,l);break;case"colorScale":this.renderColorScale(t,l);break;case"iconSet":this.renderIconSet(t,l);break;case"containsText":this.renderText(t,l);break;case"timePeriod":this.renderTimePeriod(t,l);break}}},{key:"renderExpression",value:function(t,l){t.openNode(this.tag,{type:"expression",dxfId:l.dxfId,priority:l.priority}),this.formulaXform.render(t,l.formulae[0]),t.closeNode()}},{key:"renderCellIs",value:function(t,l){var e=this;t.openNode(this.tag,{type:"cellIs",dxfId:l.dxfId,priority:l.priority,operator:l.operator}),l.formulae.forEach((function(l){e.formulaXform.render(t,l)})),t.closeNode()}},{key:"renderTop10",value:function(t,l){t.leafNode(this.tag,{type:"top10",dxfId:l.dxfId,priority:l.priority,percent:p.toBoolAttribute(l.percent,!1),bottom:p.toBoolAttribute(l.bottom,!1),rank:p.toIntValue(l.rank,10,!0)})}},{key:"renderAboveAverage",value:function(t,l){t.leafNode(this.tag,{type:"aboveAverage",dxfId:l.dxfId,priority:l.priority,aboveAverage:p.toBoolAttribute(l.aboveAverage,!0)})}},{key:"renderDataBar",value:function(t,l){t.openNode(this.tag,{type:"dataBar",priority:l.priority}),this.databarXform.render(t,l),this.extLstRefXform.render(t,l),t.closeNode()}},{key:"renderColorScale",value:function(t,l){t.openNode(this.tag,{type:"colorScale",priority:l.priority}),this.colorScaleXform.render(t,l),t.closeNode()}},{key:"renderIconSet",value:function(t,l){e.isPrimitive(l)&&(t.openNode(this.tag,{type:"iconSet",priority:l.priority}),this.iconSetXform.render(t,l),t.closeNode())}},{key:"renderText",value:function(t,l){t.openNode(this.tag,{type:l.operator,dxfId:l.dxfId,priority:l.priority,operator:p.toStringAttribute(l.operator,"containsText")});var e=I(l);e&&this.formulaXform.render(t,e),t.closeNode()}},{key:"renderTimePeriod",value:function(t,l){t.openNode(this.tag,{type:"timePeriod",dxfId:l.dxfId,priority:l.priority,timePeriod:l.timePeriod});var e=w(l);e&&this.formulaXform.render(t,e),t.closeNode()}},{key:"createNewModel",value:function(t){var l=t.attributes;return c(c({},f(l)),{},{dxfId:p.toIntValue(l.dxfId),priority:p.toIntValue(l.priority),timePeriod:l.timePeriod,percent:p.toBoolValue(l.percent),bottom:p.toBoolValue(l.bottom),rank:p.toIntValue(l.rank),aboveAverage:p.toBoolValue(l.aboveAverage)})}},{key:"onParserClose",value:function(t,l){switch(t){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,l.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(l.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(t){return"iconSet"!==t.type||!t.custom&&!L[t.iconSet]}}]),e}(W);l.exports=R},{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,{type:l.type,val:l.value})}},{key:"parseOpen",value:function(t){this.model={type:t.attributes.type,value:Z.toFloatValue(t.attributes.val)}}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),e}(Z);l.exports=m},{"../../base-xform":31}],84:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("../../style/color-xform"),y=t("./cfvo-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={cfvo:t.cfvoXform=new y,color:t.colorXform=new m},t}return s(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag),l.cfvo.forEach((function(l){e.cfvoXform.render(t,l)})),l.color.forEach((function(l){e.colorXform.render(t,l)})),t.closeNode()}},{key:"createNewModel",value:function(t){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(t,l){this.model[t].push(l.model)}},{key:"tag",get:function(){return"colorScale"}}]),e}(Z);l.exports=p},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("./cf-rule-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={cfRule:new m},t}return s(e,[{key:"render",value:function(t,l){var e=this;l.rules.some(m.isPrimitive)&&(t.openNode(this.tag,{sqref:l.ref}),l.rules.forEach((function(i){m.isPrimitive(i)&&(i.ref=l.ref,e.map.cfRule.render(t,i))})),t.closeNode())}},{key:"createNewModel",value:function(t){var l=t.attributes;return{ref:l.sqref,rules:[]}}},{key:"onParserClose",value:function(t,l){this.model.rules.push(l.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),e}(Z);l.exports=y},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t){return a(t)||d(t)||s(t)||c()}function c(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,l){if(t){if("string"===typeof t)return u(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?u(t,l):void 0}}function d(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function a(t){if(Array.isArray(t))return u(t)}function u(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}function o(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function r(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function b(t,l,e){return l&&r(t.prototype,l),e&&r(t,e),t}function h(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&Z(t,l)}function Z(t,l){return Z=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},Z(t,l)}function m(t){var l=W();return function(){var e,i=G(t);if(l){var n=G(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return y(this,e)}}function y(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?p(t):l}function p(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function W(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function G(t){return G=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},G(t)}var X=t("../../base-xform"),Y=t("./conditional-formatting-xform"),N=function(t){h(e,t);var l=m(e);function e(){var t;return o(this,e),t=l.call(this),t.cfXform=new Y,t}return b(e,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(t,l){var e=t.reduce((function(t,l){return Math.max.apply(Math,[t].concat(n(l.rules.map((function(t){return t.priority||0})))))}),1);t.forEach((function(t){t.rules.forEach((function(t){t.priority||(t.priority=e++),t.style&&(t.dxfId=l.styles.addDxfStyle(t.style))}))}))}},{key:"render",value:function(t,l){var e=this;l.forEach((function(l){e.cfXform.render(t,l)}))}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return!!this.parser&&(!!this.parser.parseClose(t)||(this.model.push(this.parser.model),this.parser=void 0,!1))}},{key:"reconcile",value:function(t,l){t.forEach((function(t){t.rules.forEach((function(t){void 0!==t.dxfId&&(t.style=l.styles.getDxfStyle(t.dxfId),delete t.dxfId)}))}))}},{key:"tag",get:function(){return"conditionalFormatting"}}]),e}(X);l.exports=N},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../composite-xform"),m=t("../../style/color-xform"),y=t("./cfvo-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={cfvo:t.cfvoXform=new y,color:t.colorXform=new m},t}return s(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag),l.cfvo.forEach((function(l){e.cfvoXform.render(t,l)})),this.colorXform.render(t,l.color),t.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(t,l){switch(t){case"cfvo":this.model.cfvo.push(l.model);break;case"color":this.model.color=l.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),e}(Z);l.exports=p},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=t("../../composite-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,null,l)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(t){this.model+=t}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),e}(Z),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"x14:id":t.idXform=new y},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(t,l.x14Id),t.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(t,l){this.model.x14Id=l.model}},{key:"tag",get:function(){return"ext"}}]),e}(m),W=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={ext:new p},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag),this.map.ext.render(t,l),t.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(t,l){Object.assign(this.model,l.model)}},{key:"tag",get:function(){return"extLst"}}]),e}(m);l.exports=W},{"../../base-xform":31,"../../composite-xform":47}],89:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode(this.tag,null,l)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(t){this.model+=t}},{key:"parseClose",value:function(t){return t!==this.tag}},{key:"tag",get:function(){return"formula"}}]),e}(Z);l.exports=m},{"../../base-xform":31}],90:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../base-xform"),m=t("../../composite-xform"),y=t("./cfvo-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={cfvo:t.cfvoXform=new y},t}return s(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag,{iconSet:Z.toStringAttribute(l.iconSet,"3TrafficLights"),reverse:Z.toBoolAttribute(l.reverse,!1),showValue:Z.toBoolAttribute(l.showValue,!0)}),l.cfvo.forEach((function(l){e.cfvoXform.render(t,l)})),t.closeNode()}},{key:"createNewModel",value:function(t){var l=t.attributes;return{iconSet:Z.toStringValue(l.iconSet,"3TrafficLights"),reverse:Z.toBoolValue(l.reverse),showValue:Z.toBoolValue(l.showValue),cfvo:[]}}},{key:"onParserClose",value:function(t,l){this.model[t].push(l.model)}},{key:"tag",get:function(){return"iconSet"}}]),e}(m);l.exports=p},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"prepare",value:function(t,l){var e=l.styles.addStyleModel(t.style||{});e&&(t.styleId=e)}},{key:"render",value:function(t,l){t.openNode("col"),t.addAttribute("min",l.min),t.addAttribute("max",l.max),l.width&&t.addAttribute("width",l.width),l.styleId&&t.addAttribute("style",l.styleId),l.hidden&&t.addAttribute("hidden","1"),l.bestFit&&t.addAttribute("bestFit","1"),l.outlineLevel&&t.addAttribute("outlineLevel",l.outlineLevel),l.collapsed&&t.addAttribute("collapsed","1"),t.addAttribute("customWidth","1"),t.closeNode()}},{key:"parseOpen",value:function(t){if("col"===t.name){var l=this.model={min:parseInt(t.attributes.min||"0",10),max:parseInt(t.attributes.max||"0",10),width:void 0===t.attributes.width?void 0:parseFloat(t.attributes.width||"0")};return t.attributes.style&&(l.styleId=parseInt(t.attributes.style,10)),!0!==t.attributes.hidden&&"true"!==t.attributes.hidden&&1!==t.attributes.hidden&&"1"!==t.attributes.hidden||(l.hidden=!0),t.attributes.bestFit&&(l.bestFit=!0),t.attributes.outlineLevel&&(l.outlineLevel=parseInt(t.attributes.outlineLevel,10)),t.attributes.collapsed&&(l.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(t,l){t.styleId&&(t.style=l.styles.getStyleModel(t.styleId))}},{key:"tag",get:function(){return"col"}}]),e}(Z);l.exports=m},{"../base-xform":31}],92:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}function Z(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function m(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?Z(Object(e),!0).forEach((function(l){y(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Z(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function y(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}var p=t("../../../utils/under-dash"),W=t("../../../utils/utils"),G=t("../../../utils/col-cache"),X=t("../base-xform"),Y=t("../../../doc/range");function N(t,l,e,i){var n=l[e];void 0!==n?t[e]=n:void 0!==i&&(t[e]=i)}function V(t){switch(t){case"1":case"true":return!0;default:return!1}}function M(t,l,e,i){var n=l[e];void 0!==n?t[e]=V(n):void 0!==i&&(t[e]=i)}function L(t){var l=p.map(t,(function(t,l){return{address:l,dataValidation:t,marked:!1}})).sort((function(t,l){return p.strcmp(t.address,l.address)})),e=p.keyBy(l,"address"),i=function(l,e,i){for(var n=0;n<e;n++){var c=G.encodeAddress(l.row+n,i);if(!t[c]||!p.isEqual(t[l.address],t[c]))return!1}return!0};return l.map((function(l){if(!l.marked){var n=G.decodeEx(l.address);if(n.dimensions)return e[n.dimensions].marked=!0,m(m({},l.dataValidation),{},{sqref:l.address});var c=1,s=G.encodeAddress(n.row+c,n.col);while(t[s]&&p.isEqual(l.dataValidation,t[s]))c++,s=G.encodeAddress(n.row+c,n.col);var d=1;while(i(n,c,n.col+d))d++;for(var a=0;a<c;a++)for(var u=0;u<d;u++)s=G.encodeAddress(n.row+a,n.col+u),e[s].marked=!0;if(c>1||d>1){var o=n.row+(c-1),r=n.col+(d-1);return m(m({},l.dataValidation),{},{sqref:"".concat(l.address,":").concat(G.encodeAddress(o,r))})}return m(m({},l.dataValidation),{},{sqref:l.address})}return null})).filter(Boolean)}var I=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){var e=L(l);e.length&&(t.openNode("dataValidations",{count:e.length}),e.forEach((function(l){t.openNode("dataValidation"),"any"!==l.type&&(t.addAttribute("type",l.type),l.operator&&"list"!==l.type&&"between"!==l.operator&&t.addAttribute("operator",l.operator),l.allowBlank&&t.addAttribute("allowBlank","1")),l.showInputMessage&&t.addAttribute("showInputMessage","1"),l.promptTitle&&t.addAttribute("promptTitle",l.promptTitle),l.prompt&&t.addAttribute("prompt",l.prompt),l.showErrorMessage&&t.addAttribute("showErrorMessage","1"),l.errorStyle&&t.addAttribute("errorStyle",l.errorStyle),l.errorTitle&&t.addAttribute("errorTitle",l.errorTitle),l.error&&t.addAttribute("error",l.error),t.addAttribute("sqref",l.sqref),(l.formulae||[]).forEach((function(e,i){t.openNode("formula".concat(i+1)),"date"===l.type?t.writeText(W.dateToExcel(new Date(e))):t.writeText(e),t.closeNode()})),t.closeNode()})),t.closeNode())}},{key:"parseOpen",value:function(t){switch(t.name){case"dataValidations":return this.model={},!0;case"dataValidation":this._address=t.attributes.sqref;var l={type:t.attributes.type||"any",formulae:[]};switch(t.attributes.type&&M(l,t.attributes,"allowBlank"),M(l,t.attributes,"showInputMessage"),M(l,t.attributes,"showErrorMessage"),l.type){case"any":case"list":case"custom":break;default:N(l,t.attributes,"operator","between");break}return N(l,t.attributes,"promptTitle"),N(l,t.attributes,"prompt"),N(l,t.attributes,"errorStyle"),N(l,t.attributes,"errorTitle"),N(l,t.attributes,"error"),this._dataValidation=l,!0;case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}},{key:"parseText",value:function(t){this._formula&&this._formula.push(t)}},{key:"parseClose",value:function(t){var l=this;switch(t){case"dataValidations":return!1;case"dataValidation":this._dataValidation.formulae&&this._dataValidation.formulae.length||(delete this._dataValidation.formulae,delete this._dataValidation.operator);var e=this._address.split(/\s+/g)||[];return e.forEach((function(t){if(t.includes(":")){var e=new Y(t);e.forEachAddress((function(t){l.model[t]=l._dataValidation}))}else l.model[t]=l._dataValidation})),!0;case"formula1":case"formula2":var i=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":i=parseInt(i,10);break;case"decimal":i=parseFloat(i);break;case"date":i=W.excelToDate(parseFloat(i));break;default:break}return this._dataValidation.formulae.push(i),this._formula=void 0,!0;default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),e}(X);l.exports=I},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){l&&t.leafNode("dimension",{ref:l})}},{key:"parseOpen",value:function(t){return"dimension"===t.name&&(this.model=t.attributes.ref,!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),e}(Z);l.exports=m},{"../base-xform":31}],94:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){l&&t.leafNode(this.tag,{"r:id":l.rId})}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={rId:t.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),e}(Z);l.exports=m},{"../base-xform":31}],95:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../composite-xform"),m=t("./cf-ext/conditional-formattings-ext-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={"x14:conditionalFormattings":t.conditionalFormattings=new m},t}return s(e,[{key:"hasContent",value:function(t){return this.conditionalFormattings.hasContent(t.conditionalFormattings)}},{key:"prepare",value:function(t,l){this.conditionalFormattings.prepare(t.conditionalFormattings,l)}},{key:"render",value:function(t,l){t.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(t,l.conditionalFormattings),t.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(t,l){this.model[t]=l.model}},{key:"tag",get:function(){return"ext"}}]),e}(Z),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={ext:t.ext=new y},t}return s(e,[{key:"prepare",value:function(t,l){this.ext.prepare(t,l)}},{key:"hasContent",value:function(t){return this.ext.hasContent(t)}},{key:"render",value:function(t,l){this.hasContent(l)&&(t.openNode("extLst"),this.ext.render(t,l),t.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(t,l){Object.assign(this.model,l.model)}},{key:"tag",get:function(){return"extLst"}}]),e}(Z);l.exports=p},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){t.addRollback();var e=!1;t.openNode("headerFooter"),l.differentFirst&&(t.addAttribute("differentFirst","1"),e=!0),l.differentOddEven&&(t.addAttribute("differentOddEven","1"),e=!0),l.oddHeader&&"string"===typeof l.oddHeader&&(t.leafNode("oddHeader",null,l.oddHeader),e=!0),l.oddFooter&&"string"===typeof l.oddFooter&&(t.leafNode("oddFooter",null,l.oddFooter),e=!0),l.evenHeader&&"string"===typeof l.evenHeader&&(t.leafNode("evenHeader",null,l.evenHeader),e=!0),l.evenFooter&&"string"===typeof l.evenFooter&&(t.leafNode("evenFooter",null,l.evenFooter),e=!0),l.firstHeader&&"string"===typeof l.firstHeader&&(t.leafNode("firstHeader",null,l.firstHeader),e=!0),l.firstFooter&&"string"===typeof l.firstFooter&&(t.leafNode("firstFooter",null,l.firstFooter),e=!0),e?(t.closeNode(),t.commit()):t.rollback()}}},{key:"parseOpen",value:function(t){switch(t.name){case"headerFooter":return this.model={},t.attributes.differentFirst&&(this.model.differentFirst=1===parseInt(t.attributes.differentFirst,0)),t.attributes.differentOddEven&&(this.model.differentOddEven=1===parseInt(t.attributes.differentOddEven,0)),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}},{key:"parseText",value:function(t){switch(this.currentNode){case"oddHeader":this.model.oddHeader=t;break;case"oddFooter":this.model.oddFooter=t;break;case"evenHeader":this.model.evenHeader=t;break;case"evenFooter":this.model.evenFooter=t;break;case"firstHeader":this.model.firstHeader=t;break;case"firstFooter":this.model.firstFooter=t;break;default:break}}},{key:"parseClose",value:function(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}},{key:"tag",get:function(){return"headerFooter"}}]),e}(Z);l.exports=m},{"../base-xform":31}],97:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("hyperlink",{ref:l.address,"r:id":l.rId,tooltip:l.tooltip})}},{key:"parseOpen",value:function(t){return"hyperlink"===t.name&&(this.model={address:t.attributes.ref,rId:t.attributes["r:id"],tooltip:t.attributes.tooltip},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),e}(Z);l.exports=m},{"../base-xform":31}],98:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("mergeCell",{ref:l})}},{key:"parseOpen",value:function(t){return"mergeCell"===t.name&&(this.model=t.attributes.ref,!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),e}(Z);l.exports=m},{"../base-xform":31}],99:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=t("../../../utils/under-dash"),d=t("../../../doc/range"),a=t("../../../utils/col-cache"),u=t("../../../doc/enums"),o=function(){function t(){i(this,t),this.merges={}}return c(t,[{key:"add",value:function(t){if(this.merges[t.master])this.merges[t.master].expandToAddress(t.address);else{var l="".concat(t.master,":").concat(t.address);this.merges[t.master]=new d(l)}}},{key:"reconcile",value:function(t,l){s.each(t,(function(t){for(var e=a.decode(t),i=e.top;i<=e.bottom;i++)for(var n=l[i-1],c=e.left;c<=e.right;c++){var s=n.cells[c-1];s?s.type===u.ValueType.Merge&&(s.master=e.tl):n.cells[c]={type:u.ValueType.Null,address:a.encodeAddress(i,c)}}}))}},{key:"getMasterAddress",value:function(t){var l=this.hash[t];return l&&l.tl}},{key:"mergeCells",get:function(){return s.map(this.merges,(function(t){return t.range}))}}]),t}();l.exports=o},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25}],100:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){return"undefined"!==typeof t},y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){return!(!l||!m(l.summaryBelow)&&!m(l.summaryRight))&&(t.leafNode(this.tag,{summaryBelow:m(l.summaryBelow)?Number(l.summaryBelow):void 0,summaryRight:m(l.summaryRight)?Number(l.summaryRight):void 0}),!0)}},{key:"parseOpen",value:function(t){return t.name===this.tag&&(this.model={summaryBelow:m(t.attributes.summaryBelow)?Boolean(Number(t.attributes.summaryBelow)):void 0,summaryRight:m(t.attributes.summaryRight)?Boolean(Number(t.attributes.summaryRight)):void 0},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),e}(Z);l.exports=y},{"../base-xform":31}],101:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.leafNode("brk",l)}},{key:"parseOpen",value:function(t){return"brk"===t.name&&(this.model=t.attributes.ref,!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),e}(Z);l.exports=m},{"../base-xform":31}],102:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../base-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){var e={left:l.left,right:l.right,top:l.top,bottom:l.bottom,header:l.header,footer:l.footer};Z.some(e,(function(t){return void 0!==t}))&&t.leafNode(this.tag,e)}}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={left:parseFloat(t.attributes.left||.7),right:parseFloat(t.attributes.right||.7),top:parseFloat(t.attributes.top||.75),bottom:parseFloat(t.attributes.bottom||.75),header:parseFloat(t.attributes.header||.3),footer:parseFloat(t.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),e}(m);l.exports=y},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){return!(!l||!l.fitToPage)&&(t.leafNode(this.tag,{fitToPage:l.fitToPage?"1":void 0}),!0)}},{key:"parseOpen",value:function(t){return t.name===this.tag&&(this.model={fitToPage:"1"===t.attributes.fitToPage},!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),e}(Z);l.exports=m},{"../base-xform":31}],104:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../base-xform");function y(t){return t?"1":void 0}function p(t){switch(t){case"overThenDown":return t;default:return}}function W(t){switch(t){case"atEnd":case"asDisplyed":return t;default:return}}function G(t){switch(t){case"dash":case"blank":case"NA":return t;default:return}}function X(t){return void 0!==t?parseInt(t,10):void 0}var Y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){var e={paperSize:l.paperSize,orientation:l.orientation,horizontalDpi:l.horizontalDpi,verticalDpi:l.verticalDpi,pageOrder:p(l.pageOrder),blackAndWhite:y(l.blackAndWhite),draft:y(l.draft),cellComments:W(l.cellComments),errors:G(l.errors),scale:l.scale,fitToWidth:l.fitToWidth,fitToHeight:l.fitToHeight,firstPageNumber:l.firstPageNumber,useFirstPageNumber:y(l.firstPageNumber),usePrinterDefaults:y(l.usePrinterDefaults),copies:l.copies};Z.some(e,(function(t){return void 0!==t}))&&t.leafNode(this.tag,e)}}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={paperSize:X(t.attributes.paperSize),orientation:t.attributes.orientation||"portrait",horizontalDpi:parseInt(t.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(t.attributes.verticalDpi||"4294967295",10),pageOrder:t.attributes.pageOrder||"downThenOver",blackAndWhite:"1"===t.attributes.blackAndWhite,draft:"1"===t.attributes.draft,cellComments:t.attributes.cellComments||"None",errors:t.attributes.errors||"displayed",scale:parseInt(t.attributes.scale||"100",10),fitToWidth:parseInt(t.attributes.fitToWidth||"1",10),fitToHeight:parseInt(t.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(t.attributes.firstPageNumber||"1",10),useFirstPageNumber:"1"===t.attributes.useFirstPageNumber,usePrinterDefaults:"1"===t.attributes.usePrinterDefaults,copies:parseInt(t.attributes.copies||"1",10)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetup"}}]),e}(m);l.exports=Y},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){l&&t.leafNode(this.tag,{"r:id":l.rId})}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={rId:t.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),e}(Z);l.exports=m},{"../base-xform":31}],106:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../base-xform");function y(t){return t?"1":void 0}var p=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){var e={headings:y(l.showRowColHeaders),gridLines:y(l.showGridLines),horizontalCentered:y(l.horizontalCentered),verticalCentered:y(l.verticalCentered)};Z.some(e,(function(t){return void 0!==t}))&&t.leafNode(this.tag,e)}}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={showRowColHeaders:"1"===t.attributes.headings,showGridLines:"1"===t.attributes.gridLines,horizontalCentered:"1"===t.attributes.horizontalCentered,verticalCentered:"1"===t.attributes.verticalCentered},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),e}(m);l.exports=p},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./page-breaks-xform"),m=t("../list-xform"),y=function(t){d(e,t);var l=u(e);function e(){n(this,e);var t={tag:"rowBreaks",count:!0,childXform:new Z};return l.call(this,t)}return s(e,[{key:"render",value:function(t,l){if(l&&l.length){t.openNode(this.tag,this.$),this.count&&(t.addAttribute(this.$count,l.length),t.addAttribute("manualBreakCount",l.length));var e=this.childXform;l.forEach((function(l){e.render(t,l)})),t.closeNode()}else this.empty&&t.leafNode(this.tag)}}]),e}(m);l.exports=y},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./cell-xform"),y=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.maxItems=t&&t.maxItems,i.map={c:new m},i}return s(e,[{key:"prepare",value:function(t,l){var e=l.styles.addStyleModel(t.style);e&&(t.styleId=e);var i=this.map.c;t.cells.forEach((function(t){i.prepare(t,l)}))}},{key:"render",value:function(t,l,e){t.openNode("row"),t.addAttribute("r",l.number),l.height&&(t.addAttribute("ht",l.height),t.addAttribute("customHeight","1")),l.hidden&&t.addAttribute("hidden","1"),l.min>0&&l.max>0&&l.min<=l.max&&t.addAttribute("spans","".concat(l.min,":").concat(l.max)),l.styleId&&(t.addAttribute("s",l.styleId),t.addAttribute("customFormat","1")),t.addAttribute("x14ac:dyDescent","0.25"),l.outlineLevel&&t.addAttribute("outlineLevel",l.outlineLevel),l.collapsed&&t.addAttribute("collapsed","1");var i=this.map.c;l.cells.forEach((function(l){i.render(t,l,e)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;if("row"===t.name){this.numRowsSeen+=1;var l=t.attributes.spans?t.attributes.spans.split(":").map((function(t){return parseInt(t,10)})):[void 0,void 0],e=this.model={number:parseInt(t.attributes.r,10),min:l[0],max:l[1],cells:[]};return t.attributes.s&&(e.styleId=parseInt(t.attributes.s,10)),!0!==t.attributes.hidden&&"true"!==t.attributes.hidden&&1!==t.attributes.hidden&&"1"!==t.attributes.hidden||(e.hidden=!0),t.attributes.bestFit&&(e.bestFit=!0),t.attributes.ht&&(e.height=parseFloat(t.attributes.ht)),t.attributes.outlineLevel&&(e.outlineLevel=parseInt(t.attributes.outlineLevel,10)),t.attributes.collapsed&&(e.collapsed=!0),!0}return this.parser=this.map[t.name],!!this.parser&&(this.parser.parseOpen(t),!0)}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser){if(!this.parser.parseClose(t)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error("Max column count (".concat(this.maxItems,") exceeded"));this.parser=void 0}return!0}return!1}},{key:"reconcile",value:function(t,l){t.style=t.styleId?l.styles.getStyleModel(t.styleId):{},void 0!==t.styleId&&(t.styleId=void 0);var e=this.map.c;t.cells.forEach((function(t){e.reconcile(t,l)}))}},{key:"tag",get:function(){return"row"}}]),e}(Z);l.exports=y},{"../base-xform":31,"./cell-xform":72}],109:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../base-xform"),y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){var e={defaultRowHeight:l.defaultRowHeight,outlineLevelRow:l.outlineLevelRow,outlineLevelCol:l.outlineLevelCol,"x14ac:dyDescent":l.dyDescent};l.defaultColWidth&&(e.defaultColWidth=l.defaultColWidth),l.defaultRowHeight&&15===l.defaultRowHeight||(e.customHeight="1"),Z.some(e,(function(t){return void 0!==t}))&&t.leafNode("sheetFormatPr",e)}}},{key:"parseOpen",value:function(t){return"sheetFormatPr"===t.name&&(this.model={defaultRowHeight:parseFloat(t.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(t.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(t.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(t.attributes.outlineLevelCol||"0",10)},t.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(t.attributes.defaultColWidth)),!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),e}(m);l.exports=y},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("../style/color-xform"),y=t("./page-setup-properties-xform"),p=t("./outline-properties-xform"),W=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={tabColor:new m("tabColor"),pageSetUpPr:new y,outlinePr:new p},t}return s(e,[{key:"render",value:function(t,l){if(l){t.addRollback(),t.openNode("sheetPr");var e=!1;e=this.map.tabColor.render(t,l.tabColor)||e,e=this.map.pageSetUpPr.render(t,l.pageSetup)||e,e=this.map.outlinePr.render(t,l.outlineProperties)||e,e?(t.closeNode(),t.commit()):t.rollback()}}},{key:"parseOpen",value:function(t){return this.parser?(this.parser.parseOpen(t),!0):t.name===this.tag?(this.reset(),!0):!!this.map[t.name]&&(this.parser=this.map[t.name],this.parser.parseOpen(t),!0)}},{key:"parseText",value:function(t){return!!this.parser&&(this.parser.parseText(t),!0)}},{key:"parseClose",value:function(t){return this.parser?(this.parser.parseClose(t)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}},{key:"tag",get:function(){return"sheetPr"}}]),e}(Z);l.exports=W},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../base-xform");function y(t,l){return t?l:void 0}function p(t,l){return t===l||void 0}var W=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){if(l){var e={sheet:y(l.sheet,"1"),selectLockedCells:!1===l.selectLockedCells?"1":void 0,selectUnlockedCells:!1===l.selectUnlockedCells?"1":void 0,formatCells:y(l.formatCells,"0"),formatColumns:y(l.formatColumns,"0"),formatRows:y(l.formatRows,"0"),insertColumns:y(l.insertColumns,"0"),insertRows:y(l.insertRows,"0"),insertHyperlinks:y(l.insertHyperlinks,"0"),deleteColumns:y(l.deleteColumns,"0"),deleteRows:y(l.deleteRows,"0"),sort:y(l.sort,"0"),autoFilter:y(l.autoFilter,"0"),pivotTables:y(l.pivotTables,"0")};l.sheet&&(e.algorithmName=l.algorithmName,e.hashValue=l.hashValue,e.saltValue=l.saltValue,e.spinCount=l.spinCount,e.objects=y(!1===l.objects,"1"),e.scenarios=y(!1===l.scenarios,"1")),Z.some(e,(function(t){return void 0!==t}))&&t.leafNode(this.tag,e)}}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={sheet:p(t.attributes.sheet,"1"),objects:"1"!==t.attributes.objects&&void 0,scenarios:"1"!==t.attributes.scenarios&&void 0,selectLockedCells:"1"!==t.attributes.selectLockedCells&&void 0,selectUnlockedCells:"1"!==t.attributes.selectUnlockedCells&&void 0,formatCells:p(t.attributes.formatCells,"0"),formatColumns:p(t.attributes.formatColumns,"0"),formatRows:p(t.attributes.formatRows,"0"),insertColumns:p(t.attributes.insertColumns,"0"),insertRows:p(t.attributes.insertRows,"0"),insertHyperlinks:p(t.attributes.insertHyperlinks,"0"),deleteColumns:p(t.attributes.deleteColumns,"0"),deleteRows:p(t.attributes.deleteRows,"0"),sort:p(t.attributes.sort,"0"),autoFilter:p(t.attributes.autoFilter,"0"),pivotTables:p(t.attributes.pivotTables,"0")},t.attributes.algorithmName&&(this.model.algorithmName=t.attributes.algorithmName,this.model.hashValue=t.attributes.hashValue,this.model.saltValue=t.attributes.saltValue,this.model.spinCount=parseInt(t.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),e}(m);l.exports=W},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/col-cache"),m=t("../base-xform"),y={frozen:"frozen",frozenSplit:"frozen",split:"split"},p=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"prepare",value:function(t){switch(t.state){case"frozen":case"split":break;default:t.state="normal";break}}},{key:"render",value:function(t,l){t.openNode("sheetView",{workbookViewId:l.workbookViewId||0});var e,i,n,c,s=function(l,e,i){i&&t.addAttribute(l,e)};switch(s("rightToLeft","1",!0===l.rightToLeft),s("tabSelected","1",l.tabSelected),s("showRuler","0",!1===l.showRuler),s("showRowColHeaders","0",!1===l.showRowColHeaders),s("showGridLines","0",!1===l.showGridLines),s("zoomScale",l.zoomScale,l.zoomScale),s("zoomScaleNormal",l.zoomScaleNormal,l.zoomScaleNormal),s("view",l.style,l.style),l.state){case"frozen":i=l.xSplit||0,n=l.ySplit||0,e=l.topLeftCell||Z.getAddress(n+1,i+1).address,c=(l.xSplit&&l.ySplit?"bottomRight":l.xSplit&&"topRight")||"bottomLeft",t.leafNode("pane",{xSplit:l.xSplit||void 0,ySplit:l.ySplit||void 0,topLeftCell:e,activePane:c,state:"frozen"}),t.leafNode("selection",{pane:c,activeCell:l.activeCell,sqref:l.activeCell});break;case"split":"topLeft"===l.activePane&&(l.activePane=void 0),t.leafNode("pane",{xSplit:l.xSplit||void 0,ySplit:l.ySplit||void 0,topLeftCell:l.topLeftCell,activePane:l.activePane}),t.leafNode("selection",{pane:l.activePane,activeCell:l.activeCell,sqref:l.activeCell});break;case"normal":l.activeCell&&t.leafNode("selection",{activeCell:l.activeCell,sqref:l.activeCell});break;default:break}t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(t.attributes.workbookViewId,10),rightToLeft:"1"===t.attributes.rightToLeft,tabSelected:"1"===t.attributes.tabSelected,showRuler:!("0"===t.attributes.showRuler),showRowColHeaders:!("0"===t.attributes.showRowColHeaders),showGridLines:!("0"===t.attributes.showGridLines),zoomScale:parseInt(t.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(t.attributes.zoomScaleNormal||"100",10),style:t.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(t.attributes.xSplit||"0",10),ySplit:parseInt(t.attributes.ySplit||"0",10),topLeftCell:t.attributes.topLeftCell,activePane:t.attributes.activePane||"topLeft",state:t.attributes.state},!0;case"selection":var l=t.attributes.pane||"topLeft";return this.selections[l]={pane:l,activeCell:t.attributes.activeCell},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){var l,e;switch(t){case"sheetView":return this.sheetView&&this.pane?(l=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:y[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},"split"===this.model.state&&(l.activePane=this.pane.activePane),e=this.selections[this.pane.activePane],e&&e.activeCell&&(l.activeCell=e.activeCell),this.sheetView.style&&(l.style=this.sheetView.style)):(l=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},e=this.selections.topLeft,e&&e.activeCell&&(l.activeCell=e.activeCell),this.sheetView.style&&(l.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),e}(m);l.exports=p},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){l&&t.leafNode(this.tag,{"r:id":l.rId})}},{key:"parseOpen",value:function(t){switch(t.name){case this.tag:return this.model={rId:t.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),e}(Z);l.exports=m},{"../base-xform":31}],114:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../../../utils/col-cache"),y=t("../../../utils/xml-stream"),p=t("../../rel-type"),W=t("./merges"),G=t("../base-xform"),X=t("../list-xform"),Y=t("./row-xform"),N=t("./col-xform"),V=t("./dimension-xform"),M=t("./hyperlink-xform"),L=t("./merge-cell-xform"),I=t("./data-validations-xform"),w=t("./sheet-properties-xform"),f=t("./sheet-format-properties-xform"),R=t("./sheet-view-xform"),T=t("./sheet-protection-xform"),z=t("./page-margins-xform"),x=t("./page-setup-xform"),S=t("./print-options-xform"),k=t("./auto-filter-xform"),C=t("./picture-xform"),J=t("./drawing-xform"),g=t("./table-part-xform"),F=t("./row-breaks-xform"),j=t("./header-footer-xform"),v=t("./cf/conditional-formattings-xform"),D=t("./ext-lst-xform"),U=function(t,l){Object.keys(l).forEach((function(e){var i=t[e],n=l[e];void 0===i&&void 0!==n&&(t[e]=n)}))},O=function(t,l){if(!l||!l.length)return t;if(!t||!t.length)return l;var e={},i={};return t.forEach((function(t){e[t.ref]=t,t.rules.forEach((function(t){var l=t.x14Id;l&&(i[l]=t)}))})),l.forEach((function(l){l.rules.forEach((function(n){var c=i[n.x14Id];c?U(c,n):e[l.ref]?e[l.ref].rules.push(n):t.push({ref:l.ref,rules:[n]})}))})),t},K=function(t){d(e,t);var l=u(e);function e(t){var i;n(this,e),i=l.call(this);var c=t||{},s=c.maxRows,d=c.maxCols;return i.map={sheetPr:new w,dimension:new V,sheetViews:new X({tag:"sheetViews",count:!1,childXform:new R}),sheetFormatPr:new f,cols:new X({tag:"cols",count:!1,childXform:new N}),sheetData:new X({tag:"sheetData",count:!1,empty:!0,childXform:new Y({maxItems:d}),maxItems:s}),autoFilter:new k,mergeCells:new X({tag:"mergeCells",count:!0,childXform:new L}),rowBreaks:new F,hyperlinks:new X({tag:"hyperlinks",count:!1,childXform:new M}),pageMargins:new z,dataValidations:new I,pageSetup:new x,headerFooter:new j,printOptions:new S,picture:new C,drawing:new J,sheetProtection:new T,tableParts:new X({tag:"tableParts",count:!0,childXform:new g}),conditionalFormatting:new v,extLst:new D},i}return s(e,[{key:"prepare",value:function(t,l){var e=this;l.merges=new W,t.hyperlinks=l.hyperlinks=[],t.comments=l.comments=[],l.formulae={},l.siFormulae=0,this.map.cols.prepare(t.cols,l),this.map.sheetData.prepare(t.rows,l),this.map.conditionalFormatting.prepare(t.conditionalFormattings,l),t.mergeCells=l.merges.mergeCells;var i=t.rels=[];function n(t){return"rId".concat(t.length+1)}if(t.hyperlinks.forEach((function(t){var l=n(i);t.rId=l,i.push({Id:l,Type:p.Hyperlink,Target:t.target,TargetMode:"External"})})),t.comments.length>0){var c={Id:n(i),Type:p.Comments,Target:"../comments".concat(t.id,".xml")};i.push(c);var s={Id:n(i),Type:p.VmlDrawing,Target:"../drawings/vmlDrawing".concat(t.id,".vml")};i.push(s),t.comments.forEach((function(t){t.refAddress=m.decodeAddress(t.ref)})),l.commentRefs.push({commentName:"comments".concat(t.id),vmlDrawing:"vmlDrawing".concat(t.id)})}var d,a=[];t.media.forEach((function(c){if("background"===c.type){var s=n(i);d=l.media[c.imageId],i.push({Id:s,Type:p.Image,Target:"../media/".concat(d.name,".").concat(d.extension)}),t.background={rId:s},t.image=l.media[c.imageId]}else if("image"===c.type){var u=t.drawing;d=l.media[c.imageId],u||(u=t.drawing={rId:n(i),name:"drawing".concat(++l.drawingsCount),anchors:[],rels:[]},l.drawings.push(u),i.push({Id:u.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(u.name,".xml")}));var o=e.preImageId===c.imageId?a[c.imageId]:a[u.rels.length];o||(o=n(u.rels),a[u.rels.length]=o,u.rels.push({Id:o,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(d.name,".").concat(d.extension)}));var r={picture:{rId:o},range:c.range};if(c.hyperlinks&&c.hyperlinks.hyperlink){var b=n(u.rels);a[u.rels.length]=b,r.picture.hyperlinks={tooltip:c.hyperlinks.tooltip,rId:b},u.rels.push({Id:b,Type:p.Hyperlink,Target:c.hyperlinks.hyperlink,TargetMode:"External"})}e.preImageId=c.imageId,u.anchors.push(r)}})),t.tables.forEach((function(t){var e=n(i);t.rId=e,i.push({Id:e,Type:p.Table,Target:"../tables/".concat(t.target)}),t.columns.forEach((function(t){var e=t.style;e&&(t.dxfId=l.styles.addDxfStyle(e))}))})),this.map.extLst.prepare(t,l)}},{key:"render",value:function(t,l){t.openXml(y.StdDocAttributes),t.openNode("worksheet",e.WORKSHEET_ATTRIBUTES);var i=l.properties?{defaultRowHeight:l.properties.defaultRowHeight,dyDescent:l.properties.dyDescent,outlineLevelCol:l.properties.outlineLevelCol,outlineLevelRow:l.properties.outlineLevelRow}:void 0;l.properties&&l.properties.defaultColWidth&&(i.defaultColWidth=l.properties.defaultColWidth);var n={outlineProperties:l.properties&&l.properties.outlineProperties,tabColor:l.properties&&l.properties.tabColor,pageSetup:l.pageSetup&&l.pageSetup.fitToPage?{fitToPage:l.pageSetup.fitToPage}:void 0},c=l.pageSetup&&l.pageSetup.margins,s={showRowColHeaders:l.pageSetup&&l.pageSetup.showRowColHeaders,showGridLines:l.pageSetup&&l.pageSetup.showGridLines,horizontalCentered:l.pageSetup&&l.pageSetup.horizontalCentered,verticalCentered:l.pageSetup&&l.pageSetup.verticalCentered},d=l.sheetProtection;this.map.sheetPr.render(t,n),this.map.dimension.render(t,l.dimensions),this.map.sheetViews.render(t,l.views),this.map.sheetFormatPr.render(t,i),this.map.cols.render(t,l.cols),this.map.sheetData.render(t,l.rows),this.map.sheetProtection.render(t,d),this.map.autoFilter.render(t,l.autoFilter),this.map.mergeCells.render(t,l.mergeCells),this.map.conditionalFormatting.render(t,l.conditionalFormattings),this.map.dataValidations.render(t,l.dataValidations),this.map.hyperlinks.render(t,l.hyperlinks),this.map.printOptions.render(t,s),this.map.pageMargins.render(t,c),this.map.pageSetup.render(t,l.pageSetup),this.map.headerFooter.render(t,l.headerFooter),this.map.rowBreaks.render(t,l.rowBreaks),this.map.drawing.render(t,l.drawing),this.map.picture.render(t,l.background),this.map.tableParts.render(t,l.tables),this.map.extLst.render(t,l),l.rels&&l.rels.forEach((function(l){l.Type===p.VmlDrawing&&t.leafNode("legacyDrawing",{"r:id":l.Id})})),t.closeNode()}},{key:"parseOpen",value:function(t){return this.parser?(this.parser.parseOpen(t),!0):"worksheet"===t.name?(Z.each(this.map,(function(t){t.reset()})),!0):(this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t),!0)}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case"worksheet":var l=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(l.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(l.outlineProperties=this.map.sheetPr.model.outlineProperties);var e={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},i=Object.assign(e,this.map.pageSetup.model,this.map.printOptions.model),n=O(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:l,views:this.map.sheetViews.model,pageSetup:i,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:n},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1;default:return!0}}},{key:"reconcile",value:function(t,l){var e=(t.relationships||[]).reduce((function(e,i){if(e[i.Id]=i,i.Type===p.Comments&&(t.comments=l.comments[i.Target].comments),i.Type===p.VmlDrawing&&t.comments&&t.comments.length){var n=l.vmlDrawings[i.Target].comments;t.comments.forEach((function(t,l){t.note=Object.assign({},t.note,n[l])}))}return e}),{});if(l.commentsMap=(t.comments||[]).reduce((function(t,l){return l.ref&&(t[l.ref]=l),t}),{}),l.hyperlinkMap=(t.hyperlinks||[]).reduce((function(t,l){return l.rId&&(t[l.address]=e[l.rId].Target),t}),{}),l.formulae={},t.rows=t.rows&&t.rows.filter(Boolean)||[],t.rows.forEach((function(t){t.cells=t.cells&&t.cells.filter(Boolean)||[]})),this.map.cols.reconcile(t.cols,l),this.map.sheetData.reconcile(t.rows,l),this.map.conditionalFormatting.reconcile(t.conditionalFormattings,l),t.media=[],t.drawing){var i=e[t.drawing.rId],n=i.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(n){var c=n[1],s=l.drawings[c];s.anchors.forEach((function(l){if(l.medium){var e={type:"image",imageId:l.medium.index,range:l.range,hyperlinks:l.picture.hyperlinks};t.media.push(e)}}))}}var d=t.background&&e[t.background.rId];if(d){var a=d.Target.split("/media/")[1],u=l.mediaIndex&&l.mediaIndex[a];void 0!==u&&t.media.push({type:"background",imageId:u})}t.tables=(t.tables||[]).map((function(t){var i=e[t.rId];return l.tables[i.Target]})),delete t.relationships,delete t.hyperlinks,delete t.comments}}]),e}(G);K.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},l.exports=K},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.attr=t.attr,i}return s(e,[{key:"render",value:function(t,l){l&&(t.openNode(this.tag),t.closeNode())}},{key:"parseOpen",value:function(t){t.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],116:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.attr=t.attr,i.attrs=t.attrs,i._format=t.format||function(t){try{return Number.isNaN(t.getTime())?"":t.toISOString()}catch(l){return""}},i._parse=t.parse||function(t){return new Date(t)},i}return s(e,[{key:"render",value:function(t,l){l&&(t.openNode(this.tag),this.attrs&&t.addAttributes(this.attrs),this.attr?t.addAttribute(this.attr,this._format(l)):t.writeText(this._format(l)),t.closeNode())}},{key:"parseOpen",value:function(t){t.name===this.tag&&(this.attr?this.model=this._parse(t.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(t){this.attr||this.text.push(t)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],117:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.attr=t.attr,i.attrs=t.attrs,i.zero=t.zero,i}return s(e,[{key:"render",value:function(t,l){(l||this.zero)&&(t.openNode(this.tag),this.attrs&&t.addAttributes(this.attrs),this.attr?t.addAttribute(this.attr,l):t.writeText(l),t.closeNode())}},{key:"parseOpen",value:function(t){return t.name===this.tag&&(this.attr?this.model=parseInt(t.attributes[this.attr],10):this.text=[],!0)}},{key:"parseText",value:function(t){this.attr||this.text.push(t)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],118:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.tag=t.tag,i.attr=t.attr,i.attrs=t.attrs,i}return s(e,[{key:"render",value:function(t,l){void 0!==l&&(t.openNode(this.tag),this.attrs&&t.addAttributes(this.attrs),this.attr?t.addAttribute(this.attr,l):t.writeText(l),t.closeNode())}},{key:"parseOpen",value:function(t){t.name===this.tag&&(this.attr?this.model=t.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(t){this.attr||this.text.push(t)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),e}(Z);l.exports=m},{"../base-xform":31}],119:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./base-xform"),m=t("../../utils/xml-stream");function y(t,l){t.openNode(l.tag,l.$),l.c&&l.c.forEach((function(l){y(t,l)})),l.t&&t.writeText(l.t),t.closeNode()}var p=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i._model=t,i}return s(e,[{key:"render",value:function(t){if(!this._xml){var l=new m;y(l,this._model),this._xml=l.xml}t.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){switch(t){case this._model.tag:return!1;default:return!0}}}]),e}(Z);l.exports=p},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./text-xform"),m=t("./rich-text-xform"),y=t("../base-xform"),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={r:new m,t:new Z},t}return s(e,[{key:"render",value:function(t,l){if(t.openNode(this.tag,{sb:l.sb||0,eb:l.eb||0}),l&&l.hasOwnProperty("richText")&&l.richText){var e=this.map.r;l.richText.forEach((function(l){e.render(t,l)}))}else l&&this.map.t.render(t,l.text);t.closeNode()}},{key:"parseOpen",value:function(t){var l=t.name;return this.parser?(this.parser.parseOpen(t),!0):l===this.tag?(this.model={sb:parseInt(t.attributes.sb,10),eb:parseInt(t.attributes.eb,10)},!0):(this.parser=this.map[l],!!this.parser&&(this.parser.parseOpen(t),!0))}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser){if(!this.parser.parseClose(t)){switch(t){case"r":var l=this.model.richText;l||(l=this.model.richText=[]),l.push(this.parser.model);break;case"t":this.model.text=this.parser.model;break;default:break}this.parser=void 0}return!0}switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),e}(y);l.exports=p},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./text-xform"),m=t("../style/font-xform"),y=t("../base-xform"),p=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.model=t,i}return s(e,[{key:"render",value:function(t,l){l=l||this.model,t.openNode("r"),l.font&&this.fontXform.render(t,l.font),this.textXform.render(t,l.text),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(t),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){switch(t){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(t),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new Z)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new m(e.FONT_OPTIONS))}}]),e}(y);p.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},l.exports=p},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./text-xform"),m=t("./rich-text-xform"),y=t("./phonetic-text-xform"),p=t("../base-xform"),W=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.model=t,i.map={r:new m,t:new Z,rPh:new y},i}return s(e,[{key:"render",value:function(t,l){var e=this;t.openNode(this.tag),l&&l.hasOwnProperty("richText")&&l.richText?l.richText.length?l.richText.forEach((function(l){e.map.r.render(t,l)})):this.map.t.render(t,""):void 0!==l&&null!==l&&this.map.t.render(t,l),t.closeNode()}},{key:"parseOpen",value:function(t){var l=t.name;return this.parser?(this.parser.parseOpen(t),!0):l===this.tag?(this.model={},!0):(this.parser=this.map[l],!!this.parser&&(this.parser.parseOpen(t),!0))}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser){if(!this.parser.parseClose(t)){switch(t){case"r":var l=this.model.richText;l||(l=this.model.richText=[]),l.push(this.parser.model);break;case"t":this.model=this.parser.model;break;default:break}this.parser=void 0}return!0}switch(t){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),e}(p);l.exports=W},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/xml-stream"),m=t("../base-xform"),y=t("./shared-string-xform"),p=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.model=t||{values:[],count:0},i.hash=Object.create(null),i.rich=Object.create(null),i}return s(e,[{key:"getString",value:function(t){return this.model.values[t]}},{key:"add",value:function(t){return t.richText?this.addRichText(t):this.addText(t)}},{key:"addText",value:function(t){var l=this.hash[t];return void 0===l&&(l=this.hash[t]=this.model.values.length,this.model.values.push(t)),this.model.count++,l}},{key:"addRichText",value:function(t){var l=this.sharedStringXform.toXml(t),e=this.rich[l];return void 0===e&&(e=this.rich[l]=this.model.values.length,this.model.values.push(t)),this.model.count++,e}},{key:"render",value:function(t,l){l=l||this._values,t.openXml(Z.StdDocAttributes),t.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:l.count,uniqueCount:l.values.length});var e=this.sharedStringXform;l.values.forEach((function(l){e.render(t,l)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(t),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(t)))}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(t){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(t))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new y)}},{key:"values",get:function(){return this.model.values}},{key:"uniqueCount",get:function(){return this.model.values.length}},{key:"count",get:function(){return this.model.count}}]),e}(m);l.exports=p},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.openNode("t"),/^\s|\n|\s$/.test(l)&&t.addAttribute("xml:space","preserve"),t.writeText(l),t.closeNode()}},{key:"parseOpen",value:function(t){switch(t.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(t){this._text.push(t)}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"t"}},{key:"model",get:function(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,(function(t,l){return String.fromCharCode(parseInt(l,16))}))}}]),e}(Z);l.exports=m},{"../base-xform":31}],125:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../doc/enums"),m=t("../../../utils/utils"),y=t("../base-xform"),p={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce((function(t,l){return t[l]=!0,t}),{}),horizontal:function(t){return this.horizontalValues[t]?t:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce((function(t,l){return t[l]=!0,t}),{}),vertical:function(t){return"middle"===t?"center":this.verticalValues[t]?t:void 0},wrapText:function(t){return!!t||void 0},shrinkToFit:function(t){return!!t||void 0},textRotation:function(t){switch(t){case"vertical":return t;default:return t=m.validInt(t),t>=-90&&t<=90?t:void 0}},indent:function(t){return t=m.validInt(t),Math.max(0,t)},readingOrder:function(t){switch(t){case"ltr":return Z.ReadingOrder.LeftToRight;case"rtl":return Z.ReadingOrder.RightToLeft;default:return}}},W={toXml:function(t){if(t=p.textRotation(t),t){if("vertical"===t)return 255;var l=Math.round(t);if(l>=0&&l<=90)return l;if(l<0&&l>=-90)return 90-l}},toModel:function(t){var l=m.validInt(t);if(void 0!==l){if(255===l)return"vertical";if(l>=0&&l<=90)return l;if(l>90&&l<=180)return 90-l}}},G=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.addRollback(),t.openNode("alignment");var e=!1;function i(l,i){i&&(t.addAttribute(l,i),e=!0)}i("horizontal",p.horizontal(l.horizontal)),i("vertical",p.vertical(l.vertical)),i("wrapText",!!p.wrapText(l.wrapText)&&"1"),i("shrinkToFit",!!p.shrinkToFit(l.shrinkToFit)&&"1"),i("indent",p.indent(l.indent)),i("textRotation",W.toXml(l.textRotation)),i("readingOrder",p.readingOrder(l.readingOrder)),t.closeNode(),e?t.commit():t.rollback()}},{key:"parseOpen",value:function(t){var l={},e=!1;function i(t,i,n){t&&(l[i]=n,e=!0)}i(t.attributes.horizontal,"horizontal",t.attributes.horizontal),i(t.attributes.vertical,"vertical","center"===t.attributes.vertical?"middle":t.attributes.vertical),i(t.attributes.wrapText,"wrapText",!!t.attributes.wrapText),i(t.attributes.shrinkToFit,"shrinkToFit",!!t.attributes.shrinkToFit),i(t.attributes.indent,"indent",parseInt(t.attributes.indent,10)),i(t.attributes.textRotation,"textRotation",W.toModel(t.attributes.textRotation)),i(t.attributes.readingOrder,"readingOrder","2"===t.attributes.readingOrder?"rtl":"ltr"),this.model=e?l:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),e}(y);l.exports=G},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(t,l,e){"use strict";function i(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function n(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?i(Object(e),!0).forEach((function(l){c(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):i(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function c(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function s(t){return s="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function d(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function a(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,l,e){return l&&a(t.prototype,l),e&&a(t,e),t}function o(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&r(t,l)}function r(t,l){return r=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},r(t,l)}function b(t){var l=m();return function(){var e,i=y(t);if(l){var n=y(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return h(this,e)}}function h(t,l){return!l||"object"!==s(l)&&"function"!==typeof l?Z(t):l}function Z(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}var p=t("../base-xform"),W=t("./color-xform"),G=function(t){o(e,t);var l=b(e);function e(t){var i;return d(this,e),i=l.call(this),i.name=t,i.map={color:new W},i}return u(e,[{key:"render",value:function(t,l,e){var i=l&&l.color||e||this.defaultColor;t.openNode(this.name),l&&l.style&&(t.addAttribute("style",l.style),i&&this.map.color.render(t,i)),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.name:var l=t.attributes.style;return this.model=l?{style:l}:void 0,!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return this.parser?(this.parser.parseClose(t)||(this.parser=void 0),!0):(t===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(t){return e.validStyleValues[t]}},{key:"tag",get:function(){return this.name}}]),e}(p);G.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce((function(t,l){return t[l]=!0,t}),{});var X=function(t){o(e,t);var l=b(e);function e(){var t;return d(this,e),t=l.call(this),t.map={top:new G("top"),left:new G("left"),bottom:new G("bottom"),right:new G("right"),diagonal:new G("diagonal")},t}return u(e,[{key:"render",value:function(t,l){var e=l.color;function i(i,c){i&&!i.color&&l.color&&(i=n(n({},i),{},{color:l.color})),c.render(t,i,e)}t.openNode("border"),l.diagonal&&l.diagonal.style&&(l.diagonal.up&&t.addAttribute("diagonalUp","1"),l.diagonal.down&&t.addAttribute("diagonalDown","1")),i(l.left,this.map.left),i(l.right,this.map.right),i(l.top,this.map.top),i(l.bottom,this.map.bottom),i(l.diagonal,this.map.diagonal),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"border":return this.reset(),this.diagonalUp=!!t.attributes.diagonalUp,this.diagonalDown=!!t.attributes.diagonalDown,!0;default:return this.parser=this.map[t.name],!!this.parser&&(this.parser.parseOpen(t),!0)}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;if("border"===t){var l=this.model={},e=function(t,e,i){e&&(i&&Object.assign(e,i),l[t]=e)};e("left",this.map.left.model),e("right",this.map.right.model),e("top",this.map.top.model),e("bottom",this.map.bottom.model),e("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),e}(p);l.exports=X},{"../base-xform":31,"./color-xform":127}],127:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.name=t||"color",i}return s(e,[{key:"render",value:function(t,l){return!!l&&(t.openNode(this.name),l.argb?t.addAttribute("rgb",l.argb):void 0!==l.theme?(t.addAttribute("theme",l.theme),void 0!==l.tint&&t.addAttribute("tint",l.tint)):void 0!==l.indexed?t.addAttribute("indexed",l.indexed):t.addAttribute("auto","1"),t.closeNode(),!0)}},{key:"parseOpen",value:function(t){return t.name===this.name&&(t.attributes.rgb?this.model={argb:t.attributes.rgb}:t.attributes.theme?(this.model={theme:parseInt(t.attributes.theme,10)},t.attributes.tint&&(this.model.tint=parseFloat(t.attributes.tint))):t.attributes.indexed?this.model={indexed:parseInt(t.attributes.indexed,10)}:this.model=void 0,!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this.name}}]),e}(Z);l.exports=m},{"../base-xform":31}],128:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./alignment-xform"),y=t("./border-xform"),p=t("./fill-xform"),W=t("./font-xform"),G=t("./numfmt-xform"),X=t("./protection-xform"),Y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={alignment:new m,border:new y,fill:new p,font:new W,numFmt:new G,protection:new X},t}return s(e,[{key:"render",value:function(t,l){t.openNode(this.tag),l.font&&this.map.font.render(t,l.font),l.numFmt&&this.map.numFmt.render(t,l.numFmt),l.fill&&this.map.fill.render(t,l.fill),l.alignment&&this.map.alignment.render(t,l.alignment),l.border&&this.map.border.render(t,l.border),l.protection&&this.map.protection.render(t,l.protection),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t),!0}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return this.parser?(this.parser.parseClose(t)||(this.parser=void 0),!0):t!==this.tag||(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1)}},{key:"tag",get:function(){return"dxf"}}]),e}(Z);l.exports=Y},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./color-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={color:new m},t}return s(e,[{key:"render",value:function(t,l){t.openNode("stop"),t.addAttribute("position",l.position),this.map.color.render(t,l.color),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"stop":return this.model={position:parseFloat(t.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(t){return!!this.parser&&(this.parser.parseClose(t)||(this.model.color=this.parser.model,this.parser=void 0),!0)}},{key:"tag",get:function(){return"stop"}}]),e}(Z),p=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={fgColor:new m("fgColor"),bgColor:new m("bgColor")},t}return s(e,[{key:"render",value:function(t,l){t.openNode("patternFill"),t.addAttribute("patternType",l.pattern),l.fgColor&&this.map.fgColor.render(t,l.fgColor),l.bgColor&&this.map.bgColor.render(t,l.bgColor),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"patternFill":return this.model={type:"pattern",pattern:t.attributes.patternType},!0;default:return this.parser=this.map[t.name],!!this.parser&&(this.parser.parseOpen(t),!0)}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return!!this.parser&&(this.parser.parseClose(t)||(this.parser.model&&(this.model[t]=this.parser.model),this.parser=void 0),!0)}},{key:"name",get:function(){return"pattern"}},{key:"tag",get:function(){return"patternFill"}}]),e}(Z),W=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={stop:new y},t}return s(e,[{key:"render",value:function(t,l){switch(t.openNode("gradientFill"),l.gradient){case"angle":t.addAttribute("degree",l.degree);break;case"path":t.addAttribute("type","path"),l.center.left&&(t.addAttribute("left",l.center.left),void 0===l.center.right&&t.addAttribute("right",l.center.left)),l.center.right&&t.addAttribute("right",l.center.right),l.center.top&&(t.addAttribute("top",l.center.top),void 0===l.center.bottom&&t.addAttribute("bottom",l.center.top)),l.center.bottom&&t.addAttribute("bottom",l.center.bottom);break;default:break}var e=this.map.stop;l.stops.forEach((function(l){e.render(t,l)})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"gradientFill":var l=this.model={stops:[]};return t.attributes.degree?(l.gradient="angle",l.degree=parseInt(t.attributes.degree,10)):"path"===t.attributes.type&&(l.gradient="path",l.center={left:t.attributes.left?parseFloat(t.attributes.left):0,top:t.attributes.top?parseFloat(t.attributes.top):0},t.attributes.right!==t.attributes.left&&(l.center.right=t.attributes.right?parseFloat(t.attributes.right):0),t.attributes.bottom!==t.attributes.top&&(l.center.bottom=t.attributes.bottom?parseFloat(t.attributes.bottom):0)),!0;case"stop":return this.parser=this.map.stop,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return!!this.parser&&(this.parser.parseClose(t)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0)}},{key:"name",get:function(){return"gradient"}},{key:"tag",get:function(){return"gradientFill"}}]),e}(Z),G=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={patternFill:new p,gradientFill:new W},t}return s(e,[{key:"render",value:function(t,l){switch(t.addRollback(),t.openNode("fill"),l.type){case"pattern":this.map.patternFill.render(t,l);break;case"gradient":this.map.gradientFill.render(t,l);break;default:return void t.rollback()}t.closeNode(),t.commit()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"fill":return this.model={},!0;default:return this.parser=this.map[t.name],!!this.parser&&(this.parser.parseOpen(t),!0)}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return!!this.parser&&(this.parser.parseClose(t)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0)}},{key:"validStyle",value:function(t){return e.validPatternValues[t]}},{key:"tag",get:function(){return"fill"}}]),e}(Z);G.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce((function(t,l){return t[l]=!0,t}),{}),G.StopXform=y,G.PatternFillXform=p,G.GradientFillXform=W,l.exports=G},{"../base-xform":31,"./color-xform":127}],130:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("./color-xform"),m=t("../simple/boolean-xform"),y=t("../simple/integer-xform"),p=t("../simple/string-xform"),W=t("./underline-xform"),G=t("../../../utils/under-dash"),X=t("../base-xform"),Y=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.options=t||e.OPTIONS,i.map={b:{prop:"bold",xform:new m({tag:"b",attr:"val"})},i:{prop:"italic",xform:new m({tag:"i",attr:"val"})},u:{prop:"underline",xform:new W},charset:{prop:"charset",xform:new y({tag:"charset",attr:"val"})},color:{prop:"color",xform:new Z},condense:{prop:"condense",xform:new m({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new m({tag:"extend",attr:"val"})},family:{prop:"family",xform:new y({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new m({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new p({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new p({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new m({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new m({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new y({tag:"sz",attr:"val"})}},i.map[i.options.fontNameTag]={prop:"name",xform:new p({tag:i.options.fontNameTag,attr:"val"})},i}return s(e,[{key:"render",value:function(t,l){var e=this.map;t.openNode(this.options.tagName),G.each(this.map,(function(i,n){e[n].xform.render(t,l[i.prop])})),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;if(this.map[t.name])return this.parser=this.map[t.name].xform,this.parser.parseOpen(t);switch(t.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser&&!this.parser.parseClose(t)){var l=this.map[t];return this.parser.model&&(this.model[l.prop]=this.parser.model),this.parser=void 0,!0}switch(t){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),e}(X);Y.OPTIONS={tagName:"font",fontNameTag:"name"},l.exports=Y},{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../utils/under-dash"),m=t("../../defaultnumformats"),y=t("../base-xform");function p(){var t={};return Z.each(m,(function(l,e){l.f&&(t[l.f]=parseInt(e,10))})),t}var W=p(),G=function(t){d(e,t);var l=u(e);function e(t,i){var c;return n(this,e),c=l.call(this),c.id=t,c.formatCode=i,c}return s(e,[{key:"render",value:function(t,l){t.leafNode("numFmt",{numFmtId:l.id,formatCode:l.formatCode})}},{key:"parseOpen",value:function(t){switch(t.name){case"numFmt":return this.model={id:parseInt(t.attributes.numFmtId,10),formatCode:t.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"numFmt"}}]),e}(y);G.getDefaultFmtId=function(t){return W[t]},G.getDefaultFmtCode=function(t){return m[t]&&m[t].f},l.exports=G},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m={boolean:function(t,l){return void 0===t?l:t}},y=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){t.addRollback(),t.openNode("protection");var e=!1;function i(l,i){void 0!==i&&(t.addAttribute(l,i),e=!0)}i("locked",m.boolean(l.locked,!0)?void 0:"0"),i("hidden",m.boolean(l.hidden,!1)?"1":void 0),t.closeNode(),e?t.commit():t.rollback()}},{key:"parseOpen",value:function(t){var l={locked:!("0"===t.attributes.locked),hidden:"1"===t.attributes.hidden},e=!l.locked||l.hidden;this.model=e?l:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),e}(Z);l.exports=y},{"../base-xform":31}],133:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./alignment-xform"),y=t("./protection-xform"),p=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.xfId=!(!t||!t.xfId),i.map={alignment:new m,protection:new y},i}return s(e,[{key:"render",value:function(t,l){t.openNode("xf",{numFmtId:l.numFmtId||0,fontId:l.fontId||0,fillId:l.fillId||0,borderId:l.borderId||0}),this.xfId&&t.addAttribute("xfId",l.xfId||0),l.numFmtId&&t.addAttribute("applyNumberFormat","1"),l.fontId&&t.addAttribute("applyFont","1"),l.fillId&&t.addAttribute("applyFill","1"),l.borderId&&t.addAttribute("applyBorder","1"),l.alignment&&t.addAttribute("applyAlignment","1"),l.protection&&t.addAttribute("applyProtection","1"),l.alignment&&this.map.alignment.render(t,l.alignment),l.protection&&this.map.protection.render(t,l.protection),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"xf":return this.model={numFmtId:parseInt(t.attributes.numFmtId,10),fontId:parseInt(t.attributes.fontId,10),fillId:parseInt(t.attributes.fillId,10),borderId:parseInt(t.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(t.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(t),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(t),!0;default:return!1}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){return this.parser?(this.parser.parseClose(t)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):"xf"!==t}},{key:"tag",get:function(){return"xf"}}]),e}(Z);l.exports=p},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../../../doc/enums"),m=t("../../../utils/xml-stream"),y=t("../base-xform"),p=t("../static-xform"),W=t("../list-xform"),G=t("./font-xform"),X=t("./fill-xform"),Y=t("./border-xform"),N=t("./numfmt-xform"),V=t("./style-xform"),M=t("./dxf-xform"),L=164,I=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.map={numFmts:new W({tag:"numFmts",count:!0,childXform:new N}),fonts:new W({tag:"fonts",count:!0,childXform:new G,$:{"x14ac:knownFonts":1}}),fills:new W({tag:"fills",count:!0,childXform:new X}),borders:new W({tag:"borders",count:!0,childXform:new Y}),cellStyleXfs:new W({tag:"cellStyleXfs",count:!0,childXform:new V}),cellXfs:new W({tag:"cellXfs",count:!0,childXform:new V({xfId:!0})}),dxfs:new W({tag:"dxfs",always:!0,count:!0,childXform:new M}),numFmt:new N,font:new G,fill:new X,border:new Y,style:new V({xfId:!0}),cellStyles:e.STATIC_XFORMS.cellStyles,tableStyles:e.STATIC_XFORMS.tableStyles,extLst:e.STATIC_XFORMS.extLst},t&&i.init(),i}return s(e,[{key:"initIndex",value:function(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}},{key:"init",value:function(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}},{key:"render",value:function(t,l){l=l||this.model,t.openXml(m.StdDocAttributes),t.openNode("styleSheet",e.STYLESHEET_ATTRIBUTES),this.index?(l.numFmts&&l.numFmts.length&&(t.openNode("numFmts",{count:l.numFmts.length}),l.numFmts.forEach((function(l){t.writeXml(l)})),t.closeNode()),l.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),t.openNode("fonts",{count:l.fonts.length,"x14ac:knownFonts":1}),l.fonts.forEach((function(l){t.writeXml(l)})),t.closeNode(),t.openNode("fills",{count:l.fills.length}),l.fills.forEach((function(l){t.writeXml(l)})),t.closeNode(),t.openNode("borders",{count:l.borders.length}),l.borders.forEach((function(l){t.writeXml(l)})),t.closeNode(),this.map.cellStyleXfs.render(t,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),t.openNode("cellXfs",{count:l.styles.length}),l.styles.forEach((function(l){t.writeXml(l)})),t.closeNode()):(this.map.numFmts.render(t,l.numFmts),this.map.fonts.render(t,l.fonts),this.map.fills.render(t,l.fills),this.map.borders.render(t,l.borders),this.map.cellStyleXfs.render(t,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(t,l.styles)),e.STATIC_XFORMS.cellStyles.render(t),this.map.dxfs.render(t,l.dxfs),e.STATIC_XFORMS.tableStyles.render(t),e.STATIC_XFORMS.extLst.render(t),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t),!0}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){var l=this;if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case"styleSheet":this.model={};var e=function(t,e){e.model&&e.model.length&&(l.model[t]=e.model)};if(e("numFmts",this.map.numFmts),e("fonts",this.map.fonts),e("fills",this.map.fills),e("borders",this.map.borders),e("styles",this.map.cellXfs),e("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var i=this.index.numFmt;this.model.numFmts.forEach((function(t){i[t.id]=t.formatCode}))}return!1;default:return!0}}},{key:"addStyleModel",value:function(t,l){if(!t)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(t))return this.weakMap.get(t);var e={};if(l=l||Z.ValueType.Number,t.numFmt)e.numFmtId=this._addNumFmtStr(t.numFmt);else switch(l){case Z.ValueType.Number:e.numFmtId=this._addNumFmtStr("General");break;case Z.ValueType.Date:e.numFmtId=this._addNumFmtStr("mm-dd-yy");break;default:break}t.font&&(e.fontId=this._addFont(t.font)),t.border&&(e.borderId=this._addBorder(t.border)),t.fill&&(e.fillId=this._addFill(t.fill)),t.alignment&&(e.alignment=t.alignment),t.protection&&(e.protection=t.protection);var i=this._addStyle(e);return this.weakMap&&this.weakMap.set(t,i),i}},{key:"getStyleModel",value:function(t){var l=this.model.styles[t];if(!l)return null;var e=this.index.model[t];if(e)return e;if(e=this.index.model[t]={},l.numFmtId){var i=this.index.numFmt[l.numFmtId]||N.getDefaultFmtCode(l.numFmtId);i&&(e.numFmt=i)}function n(t,l,i){if(i||0===i){var n=l[i];n&&(e[t]=n)}}return n("font",this.model.fonts,l.fontId),n("border",this.model.borders,l.borderId),n("fill",this.model.fills,l.fillId),l.alignment&&(e.alignment=l.alignment),l.protection&&(e.protection=l.protection),e}},{key:"addDxfStyle",value:function(t){return this.model.dxfs.push(t),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(t){return this.model.dxfs[t]}},{key:"_addStyle",value:function(t){var l=this.map.style.toXml(t),e=this.index.style[l];return void 0===e&&(e=this.index.style[l]=this.model.styles.length,this.model.styles.push(l)),e}},{key:"_addNumFmtStr",value:function(t){var l=N.getDefaultFmtId(t);if(void 0!==l)return l;if(l=this.index.numFmt[t],void 0!==l)return l;l=this.index.numFmt[t]=L+this.model.numFmts.length;var e=this.map.numFmt.toXml({id:l,formatCode:t});return this.model.numFmts.push(e),l}},{key:"_addFont",value:function(t){var l=this.map.font.toXml(t),e=this.index.font[l];return void 0===e&&(e=this.index.font[l]=this.model.fonts.length,this.model.fonts.push(l)),e}},{key:"_addBorder",value:function(t){var l=this.map.border.toXml(t),e=this.index.border[l];return void 0===e&&(e=this.index.border[l]=this.model.borders.length,this.model.borders.push(l)),e}},{key:"_addFill",value:function(t){var l=this.map.fill.toXml(t),e=this.index.fill[l];return void 0===e&&(e=this.index.fill[l]=this.model.fills.length,this.model.fills.push(l)),e}}]),e}(y);I.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},I.STATIC_XFORMS={cellStyles:new p({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new p({tag:"dxfs",$:{count:0}}),tableStyles:new p({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new p({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})};var w=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]},t}return s(e,[{key:"parseStream",value:function(t){return t.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(t,l){switch(l){case Z.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var t={numFmtId:N.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(t)}return this._dateStyleId}}]),e}(I);I.Mock=w,l.exports=I},{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(t){var i;return n(this,e),i=l.call(this),i.model=t,i}return s(e,[{key:"render",value:function(t,l){if(l=l||this.model,!0===l)t.leafNode("u");else{var i=e.Attributes[l];i&&t.leafNode("u",i)}}},{key:"parseOpen",value:function(t){"u"===t.name&&(this.model=t.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),e}(Z);m.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},l.exports=m},{"../base-xform":31}],136:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=t("./filter-column-xform"),y=function(t){d(e,t);var l=u(e);function e(){var t;return n(this,e),t=l.call(this),t.map={filterColumn:new m},t}return s(e,[{key:"prepare",value:function(t){var l=this;t.columns.forEach((function(t,e){l.map.filterColumn.prepare(t,{index:e})}))}},{key:"render",value:function(t,l){var e=this;return t.openNode(this.tag,{ref:l.autoFilterRef}),l.columns.forEach((function(l){e.map.filterColumn.render(t,l)})),t.closeNode(),!0}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;switch(t.name){case this.tag:return this.model={autoFilterRef:t.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[t.name],this.parser)return this.parseOpen(t),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(t)))}}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){if(this.parser)return this.parser.parseClose(t)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(t){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(t))}}},{key:"tag",get:function(){return"autoFilter"}}]),e}(Z);l.exports=y},{"../base-xform":31,"./filter-column-xform":137}],137:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"prepare",value:function(t,l){t.colId=l.index.toString()}},{key:"render",value:function(t,l){return t.leafNode(this.tag,{colId:l.colId,hiddenButton:l.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(t){if(t.name===this.tag){var l=t.attributes;return this.model={filterButton:"0"===l.hiddenButton},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),e}(Z);l.exports=m},{"../base-xform":31}],138:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"prepare",value:function(t,l){t.id=l.index+1}},{key:"render",value:function(t,l){return t.leafNode(this.tag,{id:l.id.toString(),name:l.name,totalsRowLabel:l.totalsRowLabel,totalsRowFunction:l.totalsRowFunction,dxfId:l.dxfId}),!0}},{key:"parseOpen",value:function(t){if(t.name===this.tag){var l=t.attributes;return this.model={name:l.name,totalsRowLabel:l.totalsRowLabel,totalsRowFunction:l.totalsRowFunction,dxfId:l.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),e}(Z);l.exports=m},{"../base-xform":31}],139:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}var Z=t("../base-xform"),m=function(t){d(e,t);var l=u(e);function e(){return n(this,e),l.apply(this,arguments)}return s(e,[{key:"render",value:function(t,l){return t.leafNode(this.tag,{name:l.theme?l.theme:void 0,showFirstColumn:l.showFirstColumn?"1":"0",showLastColumn:l.showLastColumn?"1":"0",showRowStripes:l.showRowStripes?"1":"0",showColumnStripes:l.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(t){if(t.name===this.tag){var l=t.attributes;return this.model={theme:l.name?l.name:null,showFirstColumn:"1"===l.showFirstColumn,showLastColumn:"1"===l.showLastColumn,showRowStripes:"1"===l.showRowStripes,showColumnStripes:"1"===l.showColumnStripes},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),e}(Z);l.exports=m},{"../base-xform":31}],140:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function c(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?n(Object(e),!0).forEach((function(l){s(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):n(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function s(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function d(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function a(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,l,e){return l&&a(t.prototype,l),e&&a(t,e),t}function o(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&r(t,l)}function r(t,l){return r=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},r(t,l)}function b(t){var l=m();return function(){var e,i=y(t);if(l){var n=y(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return h(this,e)}}function h(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?Z(t):l}function Z(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function m(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function y(t){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},y(t)}var p=t("../../../utils/xml-stream"),W=t("../base-xform"),G=t("../list-xform"),X=t("./auto-filter-xform"),Y=t("./table-column-xform"),N=t("./table-style-info-xform"),V=function(t){o(e,t);var l=b(e);function e(){var t;return d(this,e),t=l.call(this),t.map={autoFilter:new X,tableColumns:new G({tag:"tableColumns",count:!0,empty:!0,childXform:new Y}),tableStyleInfo:new N},t}return u(e,[{key:"prepare",value:function(t,l){this.map.autoFilter.prepare(t),this.map.tableColumns.prepare(t.columns,l)}},{key:"render",value:function(t,l){t.openXml(p.StdDocAttributes),t.openNode(this.tag,c(c({},e.TABLE_ATTRIBUTES),{},{id:l.id,name:l.name,displayName:l.displayName||l.name,ref:l.tableRef,totalsRowCount:l.totalsRow?"1":void 0,totalsRowShown:l.totalsRow?void 0:"1",headerRowCount:l.headerRow?"1":"0"})),this.map.autoFilter.render(t,l),this.map.tableColumns.render(t,l.columns),this.map.tableStyleInfo.render(t,l.style),t.closeNode()}},{key:"parseOpen",value:function(t){if(this.parser)return this.parser.parseOpen(t),!0;var l=t.name,e=t.attributes;switch(l){case this.tag:this.reset(),this.model={name:e.name,displayName:e.displayName||e.name,tableRef:e.ref,totalsRow:"1"===e.totalsRowCount,headerRow:"1"===e.headerRowCount};break;default:this.parser=this.map[t.name],this.parser&&this.parser.parseOpen(t);break}return!0}},{key:"parseText",value:function(t){this.parser&&this.parser.parseText(t)}},{key:"parseClose",value:function(t){var l=this;if(this.parser)return this.parser.parseClose(t)||(this.parser=void 0),!0;switch(t){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach((function(t,e){l.model.columns[e].filterButton=t.filterButton}))),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(t,l){t.columns.forEach((function(t){void 0!==t.dxfId&&(t.style=l.styles.getDxfStyle(t.dxfId))}))}},{key:"tag",get:function(){return"table"}}]),e}(W);V.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},l.exports=V},{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(t,l,e){(function(e,i){"use strict";function n(t,l,e,i,n,c,s){try{var d=t[c](s),a=d.value}catch(u){return void e(u)}d.done?l(a):Promise.resolve(a).then(i,n)}function c(t){return function(){var l=this,e=arguments;return new Promise((function(i,c){var s=t.apply(l,e);function d(t){n(s,i,c,d,a,"next",t)}function a(t){n(s,i,c,d,a,"throw",t)}d(void 0)}))}}function s(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function d(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,l,e){return l&&d(t.prototype,l),e&&d(t,e),t}function u(t){var l;if("undefined"!==typeof Symbol){if(Symbol.asyncIterator&&(l=t[Symbol.asyncIterator],null!=l))return l.call(t);if(Symbol.iterator&&(l=t[Symbol.iterator],null!=l))return l.call(t)}throw new TypeError("Object is not async iterable")}var o=t("fs"),r=t("jszip"),b=t("readable-stream"),h=b.PassThrough,Z=t("../utils/zip-stream"),m=t("../utils/stream-buf"),y=t("../utils/utils"),p=t("../utils/xml-stream"),W=t("../utils/browser-buffer-decode"),G=W.bufferToString,X=t("./xform/style/styles-xform"),Y=t("./xform/core/core-xform"),N=t("./xform/strings/shared-strings-xform"),V=t("./xform/core/relationships-xform"),M=t("./xform/core/content-types-xform"),L=t("./xform/core/app-xform"),I=t("./xform/book/workbook-xform"),w=t("./xform/sheet/worksheet-xform"),f=t("./xform/drawing/drawing-xform"),R=t("./xform/table/table-xform"),T=t("./xform/comment/comments-xform"),z=t("./xform/comment/vml-notes-xform"),x=t("./xml/theme1.js");function S(t,l){return new Promise((function(e,i){o.readFile(t,l,(function(t,l){t?i(t):e(l)}))}))}var k=function(){function t(l){s(this,t),this.workbook=l}return a(t,[{key:"readFile",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,y.fs.exists(l);case 2:if(t.sent){t.next=4;break}throw new Error("File not found: ".concat(l));case 4:return i=o.createReadStream(l),t.prev=5,t.next=8,this.read(i,e);case 8:return n=t.sent,i.close(),t.abrupt("return",n);case 13:throw t.prev=13,t.t0=t["catch"](5),i.close(),t.t0;case 17:case"end":return t.stop()}}),t,this,[[5,13]])})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"parseRels",value:function(t){var l=new V;return l.parseStream(t)}},{key:"parseWorkbook",value:function(t){var l=new I;return l.parseStream(t)}},{key:"parseSharedStrings",value:function(t){var l=new N;return l.parseStream(t)}},{key:"reconcile",value:function(t,l){var e=new I,i=new w(l),n=new f,c=new R;e.reconcile(t);var s={media:t.media,mediaIndex:t.mediaIndex};Object.keys(t.drawings).forEach((function(l){var e=t.drawings[l],i=t.drawingRels[l];i&&(s.rels=i.reduce((function(t,l){return t[l.Id]=l,t}),{}),(e.anchors||[]).forEach((function(t){var l=t.picture&&t.picture.hyperlinks;l&&s.rels[l.rId]&&(l.hyperlink=s.rels[l.rId].Target,delete l.rId)})),n.reconcile(e,s))}));var d={styles:t.styles};Object.values(t.tables).forEach((function(t){c.reconcile(t,d)}));var a={styles:t.styles,sharedStrings:t.sharedStrings,media:t.media,mediaIndex:t.mediaIndex,date1904:t.properties&&t.properties.date1904,drawings:t.drawings,comments:t.comments,tables:t.tables,vmlDrawings:t.vmlDrawings};t.worksheets.forEach((function(l){l.relationships=t.worksheetRels[l.sheetNo],i.reconcile(l,a)})),delete t.worksheetHash,delete t.worksheetRels,delete t.globalRels,delete t.sharedStrings,delete t.workbookRels,delete t.sheetDefs,delete t.styles,delete t.mediaIndex,delete t.drawings,delete t.drawingRels,delete t.vmlDrawings}},{key:"_processWorksheetEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i,n,c){var s,d;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return s=new w(n),t.next=3,s.parseStream(l);case 3:d=t.sent,d.sheetNo=i,e.worksheetHash[c]=d,e.worksheets.push(d);case 7:case"end":return t.stop()}}),t)})));function l(l,e,i,n,c){return t.apply(this,arguments)}return l}()},{key:"_processCommentEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new T,t.next=3,n.parseStream(l);case 3:c=t.sent,e.comments["../".concat(i,".xml")]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processTableEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new R,t.next=3,n.parseStream(l);case 3:c=t.sent,e.tables["../tables/".concat(i,".xml")]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processWorksheetRelsEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new V,t.next=3,n.parseStream(l);case 3:c=t.sent,e.worksheetRels[i]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processMediaEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=i.lastIndexOf("."),!(n>=1)){t.next=6;break}return c=i.substr(n+1),s=i.substr(0,n),t.next=6,new Promise((function(t,n){var d=new m;d.on("finish",(function(){e.mediaIndex[i]=e.media.length,e.mediaIndex[s]=e.media.length;var l={type:"image",name:s,extension:c,buffer:d.toBuffer()};e.media.push(l),t()})),l.on("error",(function(t){n(t)})),l.pipe(d)}));case 6:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processDrawingEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new f,t.next=3,n.parseStream(l);case 3:c=t.sent,e.drawings[i]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processDrawingRelsEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new V,t.next=3,n.parseStream(l);case 3:c=t.sent,e.drawingRels[i]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processVmlDrawingEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){var n,c;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=new z,t.next=3,n.parseStream(l);case 3:c=t.sent,e.vmlDrawings["../drawings/".concat(i,".vml")]=c;case 5:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"_processThemeEntry",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e,i){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,new Promise((function(t,n){var c=new m;l.on("error",n),c.on("error",n),c.on("finish",(function(){e.themes[i]=c.read().toString(),t()})),l.pipe(c)}));case 2:case"end":return t.stop()}}),t)})));function l(l,e,i){return t.apply(this,arguments)}return l}()},{key:"createInputStream",value:function(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"read",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var n,c,s,d,a,o,r,b;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:!l[Symbol.asyncIterator]&&l.pipe&&(l=l.pipe(new h)),n=[],c=!0,s=!1,t.prev=4,a=u(l);case 6:return t.next=8,a.next();case 8:return o=t.sent,c=o.done,t.next=12,o.value;case 12:if(r=t.sent,c){t.next=19;break}b=r,n.push(b);case 16:c=!0,t.next=6;break;case 19:t.next=25;break;case 21:t.prev=21,t.t0=t["catch"](4),s=!0,d=t.t0;case 25:if(t.prev=25,t.prev=26,c||null==a.return){t.next=30;break}return t.next=30,a.return();case 30:if(t.prev=30,!s){t.next=33;break}throw d;case 33:return t.finish(30);case 34:return t.finish(25);case 35:return t.abrupt("return",this.load(i.concat(n),e));case 36:case"end":return t.stop()}}),t,this,[[4,21,25,35],[26,,30,34]])})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"load",value:function(){var t=c(regeneratorRuntime.mark((function t(l,n){var c,s,d,a,u,o,b,Z,m,y,p,W,V,M,I,w,f;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return c=n&&n.base64?i.from(l.toString(),"base64"):l,s={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},t.next=4,r.loadAsync(c);case 4:d=t.sent,a=0,u=Object.values(d.files);case 6:if(!(a<u.length)){t.next=126;break}if(o=u[a],o.dir){t.next=123;break}if(b=o.name,"/"===b[0]&&(b=b.substr(1)),Z=void 0,!b.match(/xl\/media\//)&&!b.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/)){t.next=21;break}return Z=new h,t.t0=Z,t.next=17,o.async("nodebuffer");case 17:t.t1=t.sent,t.t0.write.call(t.t0,t.t1),t.next=36;break;case 21:if(Z=new h({writableObjectMode:!0,readableObjectMode:!0}),m=void 0,!e.browser){t.next=31;break}return t.t2=G,t.next=27,o.async("nodebuffer");case 27:t.t3=t.sent,m=(0,t.t2)(t.t3),t.next=34;break;case 31:return t.next=33,o.async("string");case 33:m=t.sent;case 34:for(y=16384,p=0;p<m.length;p+=y)Z.write(m.substring(p,p+y));case 36:Z.end(),t.t4=b,t.next="_rels/.rels"===t.t4?40:"xl/workbook.xml"===t.t4?44:"xl/_rels/workbook.xml.rels"===t.t4?53:"xl/sharedStrings.xml"===t.t4?57:"xl/styles.xml"===t.t4?61:"docProps/app.xml"===t.t4?65:"docProps/core.xml"===t.t4?72:78;break;case 40:return t.next=42,this.parseRels(Z);case 42:return s.globalRels=t.sent,t.abrupt("break",123);case 44:return t.next=46,this.parseWorkbook(Z);case 46:return W=t.sent,s.sheets=W.sheets,s.definedNames=W.definedNames,s.views=W.views,s.properties=W.properties,s.calcProperties=W.calcProperties,t.abrupt("break",123);case 53:return t.next=55,this.parseRels(Z);case 55:return s.workbookRels=t.sent,t.abrupt("break",123);case 57:return s.sharedStrings=new N,t.next=60,s.sharedStrings.parseStream(Z);case 60:return t.abrupt("break",123);case 61:return s.styles=new X,t.next=64,s.styles.parseStream(Z);case 64:return t.abrupt("break",123);case 65:return V=new L,t.next=68,V.parseStream(Z);case 68:return M=t.sent,s.company=M.company,s.manager=M.manager,t.abrupt("break",123);case 72:return I=new Y,t.next=75,I.parseStream(Z);case 75:return w=t.sent,Object.assign(s,w),t.abrupt("break",123);case 78:if(f=b.match(/xl\/worksheets\/sheet(\d+)[.]xml/),!f){t.next=83;break}return t.next=82,this._processWorksheetEntry(Z,s,f[1],n,b);case 82:return t.abrupt("break",123);case 83:if(f=b.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/),!f){t.next=88;break}return t.next=87,this._processWorksheetRelsEntry(Z,s,f[1]);case 87:return t.abrupt("break",123);case 88:if(f=b.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/),!f){t.next=93;break}return t.next=92,this._processThemeEntry(Z,s,f[1]);case 92:return t.abrupt("break",123);case 93:if(f=b.match(/xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/),!f){t.next=98;break}return t.next=97,this._processMediaEntry(Z,s,f[1]);case 97:return t.abrupt("break",123);case 98:if(f=b.match(/xl\/drawings\/([a-zA-Z0-9]+)[.]xml/),!f){t.next=103;break}return t.next=102,this._processDrawingEntry(Z,s,f[1]);case 102:return t.abrupt("break",123);case 103:if(f=b.match(/xl\/(comments\d+)[.]xml/),!f){t.next=108;break}return t.next=107,this._processCommentEntry(Z,s,f[1]);case 107:return t.abrupt("break",123);case 108:if(f=b.match(/xl\/tables\/(table\d+)[.]xml/),!f){t.next=113;break}return t.next=112,this._processTableEntry(Z,s,f[1]);case 112:return t.abrupt("break",123);case 113:if(f=b.match(/xl\/drawings\/_rels\/([a-zA-Z0-9]+)[.]xml[.]rels/),!f){t.next=118;break}return t.next=117,this._processDrawingRelsEntry(Z,s,f[1]);case 117:return t.abrupt("break",123);case 118:if(f=b.match(/xl\/drawings\/(vmlDrawing\d+)[.]vml/),!f){t.next=123;break}return t.next=122,this._processVmlDrawingEntry(Z,s,f[1]);case 122:return t.abrupt("break",123);case 123:a++,t.next=6;break;case 126:return this.reconcile(s,n),this.workbook.model=s,t.abrupt("return",this.workbook);case 129:case"end":return t.stop()}}),t,this)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addMedia",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Promise.all(e.media.map(function(){var t=c(regeneratorRuntime.mark((function t(e){var i,n,c,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if("image"!==e.type){t.next=13;break}if(i="xl/media/".concat(e.name,".").concat(e.extension),!e.filename){t.next=7;break}return t.next=5,S(e.filename);case 5:return n=t.sent,t.abrupt("return",l.append(n,{name:i}));case 7:if(!e.buffer){t.next=9;break}return t.abrupt("return",l.append(e.buffer,{name:i}));case 9:if(!e.base64){t.next=13;break}return c=e.base64,s=c.substring(c.indexOf(",")+1),t.abrupt("return",l.append(s,{name:i,base64:!0}));case 13:throw new Error("Unsupported media");case 14:case"end":return t.stop()}}),t)})));return function(l){return t.apply(this,arguments)}}()));case 2:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addDrawings",value:function(t,l){var e=new f,i=new V;l.worksheets.forEach((function(l){var n=l.drawing;if(n){e.prepare(n,{});var c=e.toXml(n);t.append(c,{name:"xl/drawings/".concat(n.name,".xml")}),c=i.toXml(n.rels),t.append(c,{name:"xl/drawings/_rels/".concat(n.name,".xml.rels")})}}))}},{key:"addTables",value:function(t,l){var e=new R;l.worksheets.forEach((function(l){var i=l.tables;i.forEach((function(l){e.prepare(l,{});var i=e.toXml(l);t.append(i,{name:"xl/tables/".concat(l.target)})}))}))}},{key:"addContentTypes",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=new M,n=i.toXml(e),l.append(n,{name:"[Content_Types].xml"});case 3:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addApp",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=new L,n=i.toXml(e),l.append(n,{name:"docProps/app.xml"});case 3:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addCore",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=new Y,l.append(i.toXml(e),{name:"docProps/core.xml"});case 2:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addThemes",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=e.themes||{theme1:x},Object.keys(i).forEach((function(t){var e=i[t],n="xl/theme/".concat(t,".xml");l.append(e,{name:n})}));case 2:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addOfficeRels",value:function(){var l=c(regeneratorRuntime.mark((function l(e){var i,n;return regeneratorRuntime.wrap((function(l){while(1)switch(l.prev=l.next){case 0:i=new V,n=i.toXml([{Id:"rId1",Type:t.RelType.OfficeDocument,Target:"xl/workbook.xml"},{Id:"rId2",Type:t.RelType.CoreProperties,Target:"docProps/core.xml"},{Id:"rId3",Type:t.RelType.ExtenderProperties,Target:"docProps/app.xml"}]),e.append(n,{name:"_rels/.rels"});case 3:case"end":return l.stop()}}),l)})));function e(t){return l.apply(this,arguments)}return e}()},{key:"addWorkbookRels",value:function(){var l=c(regeneratorRuntime.mark((function l(e,i){var n,c,s,d;return regeneratorRuntime.wrap((function(l){while(1)switch(l.prev=l.next){case 0:n=1,c=[{Id:"rId".concat(n++),Type:t.RelType.Styles,Target:"styles.xml"},{Id:"rId".concat(n++),Type:t.RelType.Theme,Target:"theme/theme1.xml"}],i.sharedStrings.count&&c.push({Id:"rId".concat(n++),Type:t.RelType.SharedStrings,Target:"sharedStrings.xml"}),i.worksheets.forEach((function(l){l.rId="rId".concat(n++),c.push({Id:l.rId,Type:t.RelType.Worksheet,Target:"worksheets/sheet".concat(l.id,".xml")})})),s=new V,d=s.toXml(c),e.append(d,{name:"xl/_rels/workbook.xml.rels"});case 7:case"end":return l.stop()}}),l)})));function e(t,e){return l.apply(this,arguments)}return e}()},{key:"addSharedStrings",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.sharedStrings&&e.sharedStrings.count&&l.append(e.sharedStrings.xml,{name:"xl/sharedStrings.xml"});case 1:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addStyles",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=e.styles.xml,i&&l.append(i,{name:"xl/styles.xml"});case 2:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addWorkbook",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=new I,l.append(i.toXml(e),{name:"xl/workbook.xml"});case 2:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"addWorksheets",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n,c,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:i=new w,n=new V,c=new T,s=new z,e.worksheets.forEach((function(t){var e=new p;i.render(e,t),l.append(e.xml,{name:"xl/worksheets/sheet".concat(t.id,".xml")}),t.rels&&t.rels.length&&(e=new p,n.render(e,t.rels),l.append(e.xml,{name:"xl/worksheets/_rels/sheet".concat(t.id,".xml.rels")})),t.comments.length>0&&(e=new p,c.render(e,t),l.append(e.xml,{name:"xl/comments".concat(t.id,".xml")}),e=new p,s.render(e,t),l.append(e.xml,{name:"xl/drawings/vmlDrawing".concat(t.id,".vml")}))}));case 5:case"end":return t.stop()}}),t)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"_finalize",value:function(t){var l=this;return new Promise((function(e,i){t.on("finish",(function(){e(l)})),t.on("error",i),t.finalize()}))}},{key:"prepareModel",value:function(t,l){t.creator=t.creator||"ExcelJS",t.lastModifiedBy=t.lastModifiedBy||"ExcelJS",t.created=t.created||new Date,t.modified=t.modified||new Date,t.useSharedStrings=void 0===l.useSharedStrings||l.useSharedStrings,t.useStyles=void 0===l.useStyles||l.useStyles,t.sharedStrings=new N,t.styles=t.useStyles?new X(!0):new X.Mock;var e=new I,i=new w;e.prepare(t);var n={sharedStrings:t.sharedStrings,styles:t.styles,date1904:t.properties.date1904,drawingsCount:0,media:t.media};n.drawings=t.drawings=[],n.commentRefs=t.commentRefs=[];var c=0;t.tables=[],t.worksheets.forEach((function(l){l.tables.forEach((function(l){c++,l.target="table".concat(c,".xml"),l.id=c,t.tables.push(l)})),i.prepare(l,n)}))}},{key:"write",value:function(){var t=c(regeneratorRuntime.mark((function t(l,e){var i,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e=e||{},i=this.workbook.model,n=new Z.ZipWriter(e.zip),n.pipe(l),this.prepareModel(i,e),t.next=7,this.addContentTypes(n,i);case 7:return t.next=9,this.addOfficeRels(n,i);case 9:return t.next=11,this.addWorkbookRels(n,i);case 11:return t.next=13,this.addWorksheets(n,i);case 13:return t.next=15,this.addSharedStrings(n,i);case 15:return t.next=17,this.addDrawings(n,i);case 17:return t.next=19,this.addTables(n,i);case 19:return t.next=21,Promise.all([this.addThemes(n,i),this.addStyles(n,i)]);case 21:return t.next=23,this.addMedia(n,i);case 23:return t.next=25,Promise.all([this.addApp(n,i),this.addCore(n,i)]);case 25:return t.next=27,this.addWorkbook(n,i);case 27:return t.abrupt("return",this._finalize(n));case 28:case"end":return t.stop()}}),t,this)})));function l(l,e){return t.apply(this,arguments)}return l}()},{key:"writeFile",value:function(t,l){var e=this,i=o.createWriteStream(t);return new Promise((function(t,n){i.on("finish",(function(){t()})),i.on("error",(function(t){n(t)})),e.write(i,l).then((function(){i.end()}))}))}},{key:"writeBuffer",value:function(){var t=c(regeneratorRuntime.mark((function t(l){var e;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e=new m,t.next=3,this.write(e,l);case 3:return t.abrupt("return",e.read());case 4:case"end":return t.stop()}}),t,this)})));function l(l){return t.apply(this,arguments)}return l}()}]),t}();k.RelType=t("./rel-type"),l.exports=k}).call(this,t("_process"),t("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,_process:467,buffer:216,fs:215,jszip:399,"readable-stream":491}],142:[function(t,l,e){"use strict";l.exports='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"> <a:themeElements> <a:clrScheme name="Office"> <a:dk1> <a:sysClr val="windowText" lastClr="000000"/> </a:dk1> <a:lt1> <a:sysClr val="window" lastClr="FFFFFF"/> </a:lt1> <a:dk2> <a:srgbClr val="1F497D"/> </a:dk2> <a:lt2> <a:srgbClr val="EEECE1"/> </a:lt2> <a:accent1> <a:srgbClr val="4F81BD"/> </a:accent1> <a:accent2> <a:srgbClr val="C0504D"/> </a:accent2> <a:accent3> <a:srgbClr val="9BBB59"/> </a:accent3> <a:accent4> <a:srgbClr val="8064A2"/> </a:accent4> <a:accent5> <a:srgbClr val="4BACC6"/> </a:accent5> <a:accent6> <a:srgbClr val="F79646"/> </a:accent6> <a:hlink> <a:srgbClr val="0000FF"/> </a:hlink> <a:folHlink> <a:srgbClr val="800080"/> </a:folHlink> </a:clrScheme> <a:fontScheme name="Office"> <a:majorFont> <a:latin typeface="Cambria"/> <a:ea typeface=""/> <a:cs typeface=""/> <a:font script="Jpan" typeface=" Pゴシック"/> <a:font script="Hang" typeface="맑은 고딕"/> <a:font script="Hans" typeface="宋体"/> <a:font script="Hant" typeface="新細明體"/> <a:font script="Arab" typeface="Times New Roman"/> <a:font script="Hebr" typeface="Times New Roman"/> <a:font script="Thai" typeface="Tahoma"/> <a:font script="Ethi" typeface="Nyala"/> <a:font script="Beng" typeface="Vrinda"/> <a:font script="Gujr" typeface="Shruti"/> <a:font script="Khmr" typeface="MoolBoran"/> <a:font script="Knda" typeface="Tunga"/> <a:font script="Guru" typeface="Raavi"/> <a:font script="Cans" typeface="Euphemia"/> <a:font script="Cher" typeface="Plantagenet Cherokee"/> <a:font script="Yiii" typeface="Microsoft Yi Baiti"/> <a:font script="Tibt" typeface="Microsoft Himalaya"/> <a:font script="Thaa" typeface="MV Boli"/> <a:font script="Deva" typeface="Mangal"/> <a:font script="Telu" typeface="Gautami"/> <a:font script="Taml" typeface="Latha"/> <a:font script="Syrc" typeface="Estrangelo Edessa"/> <a:font script="Orya" typeface="Kalinga"/> <a:font script="Mlym" typeface="Kartika"/> <a:font script="Laoo" typeface="DokChampa"/> <a:font script="Sinh" typeface="Iskoola Pota"/> <a:font script="Mong" typeface="Mongolian Baiti"/> <a:font script="Viet" typeface="Times New Roman"/> <a:font script="Uigh" typeface="Microsoft Uighur"/> <a:font script="Geor" typeface="Sylfaen"/> </a:majorFont> <a:minorFont> <a:latin typeface="Calibri"/> <a:ea typeface=""/> <a:cs typeface=""/> <a:font script="Jpan" typeface=" Pゴシック"/> <a:font script="Hang" typeface="맑은 고딕"/> <a:font script="Hans" typeface="宋体"/> <a:font script="Hant" typeface="新細明體"/> <a:font script="Arab" typeface="Arial"/> <a:font script="Hebr" typeface="Arial"/> <a:font script="Thai" typeface="Tahoma"/> <a:font script="Ethi" typeface="Nyala"/> <a:font script="Beng" typeface="Vrinda"/> <a:font script="Gujr" typeface="Shruti"/> <a:font script="Khmr" typeface="DaunPenh"/> <a:font script="Knda" typeface="Tunga"/> <a:font script="Guru" typeface="Raavi"/> <a:font script="Cans" typeface="Euphemia"/> <a:font script="Cher" typeface="Plantagenet Cherokee"/> <a:font script="Yiii" typeface="Microsoft Yi Baiti"/> <a:font script="Tibt" typeface="Microsoft Himalaya"/> <a:font script="Thaa" typeface="MV Boli"/> <a:font script="Deva" typeface="Mangal"/> <a:font script="Telu" typeface="Gautami"/> <a:font script="Taml" typeface="Latha"/> <a:font script="Syrc" typeface="Estrangelo Edessa"/> <a:font script="Orya" typeface="Kalinga"/> <a:font script="Mlym" typeface="Kartika"/> <a:font script="Laoo" typeface="DokChampa"/> <a:font script="Sinh" typeface="Iskoola Pota"/> <a:font script="Mong" typeface="Mongolian Baiti"/> <a:font script="Viet" typeface="Arial"/> <a:font script="Uigh" typeface="Microsoft Uighur"/> <a:font script="Geor" typeface="Sylfaen"/> </a:minorFont> </a:fontScheme> <a:fmtScheme name="Office"> <a:fillStyleLst> <a:solidFill> <a:schemeClr val="phClr"/> </a:solidFill> <a:gradFill rotWithShape="1"> <a:gsLst> <a:gs pos="0"> <a:schemeClr val="phClr"> <a:tint val="50000"/> <a:satMod val="300000"/> </a:schemeClr> </a:gs> <a:gs pos="35000"> <a:schemeClr val="phClr"> <a:tint val="37000"/> <a:satMod val="300000"/> </a:schemeClr> </a:gs> <a:gs pos="100000"> <a:schemeClr val="phClr"> <a:tint val="15000"/> <a:satMod val="350000"/> </a:schemeClr> </a:gs> </a:gsLst> <a:lin ang="16200000" scaled="1"/> </a:gradFill> <a:gradFill rotWithShape="1"> <a:gsLst> <a:gs pos="0"> <a:schemeClr val="phClr"> <a:tint val="100000"/> <a:shade val="100000"/> <a:satMod val="130000"/> </a:schemeClr> </a:gs> <a:gs pos="100000"> <a:schemeClr val="phClr"> <a:tint val="50000"/> <a:shade val="100000"/> <a:satMod val="350000"/> </a:schemeClr> </a:gs> </a:gsLst> <a:lin ang="16200000" scaled="0"/> </a:gradFill> </a:fillStyleLst> <a:lnStyleLst> <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"> <a:solidFill> <a:schemeClr val="phClr"> <a:shade val="95000"/> <a:satMod val="105000"/> </a:schemeClr> </a:solidFill> <a:prstDash val="solid"/> </a:ln> <a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"> <a:solidFill> <a:schemeClr val="phClr"/> </a:solidFill> <a:prstDash val="solid"/> </a:ln> <a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"> <a:solidFill> <a:schemeClr val="phClr"/> </a:solidFill> <a:prstDash val="solid"/> </a:ln> </a:lnStyleLst> <a:effectStyleLst> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"> <a:srgbClr val="000000"> <a:alpha val="38000"/> </a:srgbClr> </a:outerShdw> </a:effectLst> </a:effectStyle> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"> <a:srgbClr val="000000"> <a:alpha val="35000"/> </a:srgbClr> </a:outerShdw> </a:effectLst> </a:effectStyle> <a:effectStyle> <a:effectLst> <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"> <a:srgbClr val="000000"> <a:alpha val="35000"/> </a:srgbClr> </a:outerShdw> </a:effectLst> <a:scene3d> <a:camera prst="orthographicFront"> <a:rot lat="0" lon="0" rev="0"/> </a:camera> <a:lightRig rig="threePt" dir="t"> <a:rot lat="0" lon="0" rev="1200000"/> </a:lightRig> </a:scene3d> <a:sp3d> <a:bevelT w="63500" h="25400"/> </a:sp3d> </a:effectStyle> </a:effectStyleLst> <a:bgFillStyleLst> <a:solidFill> <a:schemeClr val="phClr"/> </a:solidFill> <a:gradFill rotWithShape="1"> <a:gsLst> <a:gs pos="0"> <a:schemeClr val="phClr"> <a:tint val="40000"/> <a:satMod val="350000"/> </a:schemeClr> </a:gs> <a:gs pos="40000"> <a:schemeClr val="phClr"> <a:tint val="45000"/> <a:shade val="99000"/> <a:satMod val="350000"/> </a:schemeClr> </a:gs> <a:gs pos="100000"> <a:schemeClr val="phClr"> <a:shade val="20000"/> <a:satMod val="255000"/> </a:schemeClr> </a:gs> </a:gsLst> <a:path path="circle"> <a:fillToRect l="50000" t="-80000" r="50000" b="180000"/> </a:path> </a:gradFill> <a:gradFill rotWithShape="1"> <a:gsLst> <a:gs pos="0"> <a:schemeClr val="phClr"> <a:tint val="80000"/> <a:satMod val="300000"/> </a:schemeClr> </a:gs> <a:gs pos="100000"> <a:schemeClr val="phClr"> <a:shade val="30000"/> <a:satMod val="200000"/> </a:schemeClr> </a:gs> </a:gsLst> <a:path path="circle"> <a:fillToRect l="50000" t="50000" r="50000" b="50000"/> </a:path> </a:gradFill> </a:bgFillStyleLst> </a:fmtScheme> </a:themeElements> <a:objectDefaults> <a:spDef> <a:spPr/> <a:bodyPr/> <a:lstStyle/> <a:style> <a:lnRef idx="1"> <a:schemeClr val="accent1"/> </a:lnRef> <a:fillRef idx="3"> <a:schemeClr val="accent1"/> </a:fillRef> <a:effectRef idx="2"> <a:schemeClr val="accent1"/> </a:effectRef> <a:fontRef idx="minor"> <a:schemeClr val="lt1"/> </a:fontRef> </a:style> </a:spDef> <a:lnDef> <a:spPr/> <a:bodyPr/> <a:lstStyle/> <a:style> <a:lnRef idx="2"> <a:schemeClr val="accent1"/> </a:lnRef> <a:fillRef idx="0"> <a:schemeClr val="accent1"/> </a:fillRef> <a:effectRef idx="1"> <a:schemeClr val="accent1"/> </a:effectRef> <a:fontRef idx="minor"> <a:schemeClr val="tx1"/> </a:fontRef> </a:style> </a:lnDef> </a:objectDefaults> <a:extraClrSchemeLst/> </a:theme>'},{}],143:[function(t,l,e){(function(l){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&a(t,l)}function a(t,l){return a=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},a(t,l)}function u(t){var l=b();return function(){var e,i=h(t);if(l){var n=h(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return o(this,e)}}function o(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?r(t):l}function r(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function b(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},h(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.CsvFormatterStream=void 0;var Z=t("stream"),m=t("./formatter"),y=function(t){d(i,t);var e=u(i);function i(t){var l;return n(this,i),l=e.call(this,{writableObjectMode:t.objectMode}),l.hasWrittenBOM=!1,l.formatterOptions=t,l.rowFormatter=new m.RowFormatter(t),l.hasWrittenBOM=!t.writeBOM,l}return s(i,[{key:"transform",value:function(t){return this.rowFormatter.rowTransform=t,this}},{key:"_transform",value:function(t,e,i){var n=this,c=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(t,(function(t,e){return t?(c=!0,i(t)):(e&&e.forEach((function(t){n.push(l.from(t,"utf8"))})),c=!0,i())}))}catch(s){if(c)throw s;i(s)}}},{key:"_flush",value:function(t){var e=this;this.rowFormatter.finish((function(i,n){return i?t(i):(n&&n.forEach((function(t){e.push(l.from(t,"utf8"))})),t())}))}}]),i}(Z.Transform);e.CsvFormatterStream=y}).call(this,t("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.FormatterOptions=void 0;var n=function t(){var l,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,t),this.objectMode=!0,this.delimiter=",",this.rowDelimiter="\n",this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\ufeff",this.alwaysWriteHeaders=!1,Object.assign(this,e||{}),"undefined"===typeof(null===e||void 0===e?void 0:e.quoteHeaders)&&(this.quoteHeaders=this.quoteColumns),!0===(null===e||void 0===e?void 0:e.quote)?this.quote='"':!1===(null===e||void 0===e?void 0:e.quote)&&(this.quote=""),"string"!==typeof(null===e||void 0===e?void 0:e.escape)&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&(null===(l=e.writeHeaders)||void 0===l||l),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};e.FormatterOptions=n},{}],145:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.FieldFormatter=void 0;var d=s(t("lodash.isboolean")),a=s(t("lodash.isnil")),u=s(t("lodash.escaperegexp")),o=function(){function t(l){i(this,t),this._headers=null,this.formatterOptions=l,null!==l.headers&&(this.headers=l.headers),this.REPLACE_REGEXP=new RegExp(l.quote,"g");var e="[".concat(l.delimiter).concat(u.default(l.rowDelimiter),"|\r|\n']");this.ESCAPE_REGEXP=new RegExp(e)}return c(t,[{key:"shouldQuote",value:function(t,l){var e=l?this.formatterOptions.quoteHeaders:this.formatterOptions.quoteColumns;return d.default(e)?e:Array.isArray(e)?e[t]:null!==this._headers&&e[this._headers[t]]}},{key:"format",value:function(t,l,e){var i="".concat(a.default(t)?"":t).replace(/\0/g,""),n=this.formatterOptions;if(""!==n.quote){var c=-1!==i.indexOf(n.quote);if(c)return this.quoteField(i.replace(this.REPLACE_REGEXP,n.escapedQuote))}var s=-1!==i.search(this.ESCAPE_REGEXP);return s||this.shouldQuote(l,e)?this.quoteField(i):i}},{key:"quoteField",value:function(t){var l=this.formatterOptions.quote;return"".concat(l).concat(t).concat(l)}},{key:"headers",set:function(t){this._headers=t}}]),t}();e.FieldFormatter=o},{"lodash.escaperegexp":426,"lodash.isboolean":428,"lodash.isnil":431}],146:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.RowFormatter=void 0;var d=s(t("lodash.isfunction")),a=s(t("lodash.isequal")),u=t("./FieldFormatter"),o=t("../types"),r=function(){function t(l){i(this,t),this.rowCount=0,this.formatterOptions=l,this.fieldFormatter=new u.FieldFormatter(l),this.headers=l.headers,this.shouldWriteHeaders=l.shouldWriteHeaders,this.hasWrittenHeaders=!1,null!==this.headers&&(this.fieldFormatter.headers=this.headers),l.transform&&(this.rowTransform=l.transform)}return c(t,[{key:"format",value:function(t,l){var e=this;this.callTransformer(t,(function(i,n){if(i)return l(i);if(!t)return l(null);var c=[];if(n){var s=e.checkHeaders(n),d=s.shouldFormatColumns,a=s.headers;if(e.shouldWriteHeaders&&a&&!e.hasWrittenHeaders&&(c.push(e.formatColumns(a,!0)),e.hasWrittenHeaders=!0),d){var u=e.gatherColumns(n);c.push(e.formatColumns(u,!1))}}return l(null,c)}))}},{key:"finish",value:function(t){var l=[];if(this.formatterOptions.alwaysWriteHeaders&&0===this.rowCount){if(!this.headers)return t(new Error("`alwaysWriteHeaders` option is set to true but `headers` option not provided."));l.push(this.formatColumns(this.headers,!0))}return this.formatterOptions.includeEndRowDelimiter&&l.push(this.formatterOptions.rowDelimiter),t(null,l)}},{key:"checkHeaders",value:function(l){if(this.headers)return{shouldFormatColumns:!0,headers:this.headers};var e=t.gatherHeaders(l);return this.headers=e,this.fieldFormatter.headers=e,this.shouldWriteHeaders?{shouldFormatColumns:!a.default(e,l),headers:e}:{shouldFormatColumns:!0,headers:null}}},{key:"gatherColumns",value:function(l){if(null===this.headers)throw new Error("Headers is currently null");return Array.isArray(l)?t.isHashArray(l)?this.headers.map((function(t,e){var i=l[e];return i?i[1]:""})):this.headers.map((function(t,e){return l[e]})):this.headers.map((function(t){return l[t]}))}},{key:"callTransformer",value:function(t,l){return this._rowTransform?this._rowTransform(t,l):l(null,t)}},{key:"formatColumns",value:function(t,l){var e=this,i=t.map((function(t,i){return e.fieldFormatter.format(t,i,l)})).join(this.formatterOptions.delimiter),n=this.rowCount;return this.rowCount+=1,n?[this.formatterOptions.rowDelimiter,i].join(""):i}},{key:"rowTransform",set:function(l){if(!d.default(l))throw new TypeError("The transform should be a function");this._rowTransform=t.createTransform(l)}}],[{key:"isHashArray",value:function(t){return!!Array.isArray(t)&&Array.isArray(t[0])&&2===t[0].length}},{key:"gatherHeaders",value:function(l){return t.isHashArray(l)?l.map((function(t){return t[0]})):Array.isArray(l)?l:Object.keys(l)}},{key:"createTransform",value:function(t){return o.isSyncTransform(t)?function(l,e){var i=null;try{i=t(l)}catch(n){return e(n)}return e(null,i)}:function(l,e){t(l,e)}}}]),t}();e.RowFormatter=r},{"../types":149,"./FieldFormatter":145,"lodash.isequal":429,"lodash.isfunction":430}],147:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t("./RowFormatter");Object.defineProperty(e,"RowFormatter",{enumerable:!0,get:function(){return i.RowFormatter}});var n=t("./FieldFormatter");Object.defineProperty(e,"FieldFormatter",{enumerable:!0,get:function(){return n.FieldFormatter}})},{"./FieldFormatter":145,"./RowFormatter":146}],148:[function(t,l,e){(function(l){"use strict";var i=Object.create?function(t,l,e,i){void 0===i&&(i=e),Object.defineProperty(t,i,{enumerable:!0,get:function(){return l[e]}})}:function(t,l,e,i){void 0===i&&(i=e),t[i]=l[e]},n=Object.create?function(t,l){Object.defineProperty(t,"default",{enumerable:!0,value:l})}:function(t,l){t["default"]=l},c=function(t){if(t&&t.__esModule)return t;var l={};if(null!=t)for(var e in t)"default"!==e&&Object.hasOwnProperty.call(t,e)&&i(l,t,e);return n(l,t),l},s=function(t,l){for(var e in t)"default"===e||l.hasOwnProperty(e)||i(l,t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.writeToPath=e.writeToString=e.writeToBuffer=e.writeToStream=e.write=e.format=void 0;var d=t("util"),a=t("stream"),u=c(t("fs")),o=t("./FormatterOptions"),r=t("./CsvFormatterStream");s(t("./types"),e);var b=t("./CsvFormatterStream");Object.defineProperty(e,"CsvFormatterStream",{enumerable:!0,get:function(){return b.CsvFormatterStream}});var h=t("./FormatterOptions");Object.defineProperty(e,"FormatterOptions",{enumerable:!0,get:function(){return h.FormatterOptions}}),e.format=function(t){return new r.CsvFormatterStream(new o.FormatterOptions(t))},e.write=function(t,l){var i=e.format(l),n=d.promisify((function(t,l){i.write(t,void 0,l)}));return t.reduce((function(t,l){return t.then((function(){return n(l)}))}),Promise.resolve()).then((function(){return i.end()})).catch((function(t){i.emit("error",t)})),i},e.writeToStream=function(t,l,i){return e.write(l,i).pipe(t)},e.writeToBuffer=function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],c=new a.Writable({write:function(t,l,e){n.push(t),e()}});return new Promise((function(s,d){c.on("error",d).on("finish",(function(){return s(l.concat(n))})),e.write(t,i).pipe(c)}))},e.writeToString=function(t,l){return e.writeToBuffer(t,l).then((function(t){return t.toString()}))},e.writeToPath=function(t,l,i){var n=u.createWriteStream(t,{encoding:"utf8"});return e.write(l,i).pipe(n)}}).call(this,t("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isSyncTransform=void 0,e.isSyncTransform=function(t){return 1===t.length}},{}],150:[function(t,l,e){(function(l){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function c(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,l,e){return l&&c(t.prototype,l),e&&c(t,e),t}function d(t,l,e){return d="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(t,l,e){var i=a(t,l);if(i){var n=Object.getOwnPropertyDescriptor(i,l);return n.get?n.get.call(e):n.value}},d(t,l,e||t)}function a(t,l){while(!Object.prototype.hasOwnProperty.call(t,l))if(t=m(t),null===t)break;return t}function u(t,l){if("function"!==typeof l&&null!==l)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(l&&l.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),l&&o(t,l)}function o(t,l){return o=Object.setPrototypeOf||function(t,l){return t.__proto__=l,t},o(t,l)}function r(t){var l=Z();return function(){var e,i=m(t);if(l){var n=m(this).constructor;e=Reflect.construct(i,arguments,n)}else e=i.apply(this,arguments);return b(this,e)}}function b(t,l){return!l||"object"!==i(l)&&"function"!==typeof l?h(t):l}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Z(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function m(t){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},m(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.CsvParserStream=void 0;var y=t("string_decoder"),p=t("stream"),W=t("./transforms"),G=t("./parser"),X=function(t){u(i,t);var e=r(i);function i(t){var l;return n(this,i),l=e.call(this,{objectMode:t.objectMode}),l.lines="",l.rowCount=0,l.parsedRowCount=0,l.parsedLineCount=0,l.endEmitted=!1,l.headersEmitted=!1,l.parserOptions=t,l.parser=new G.Parser(t),l.headerTransformer=new W.HeaderTransformer(t),l.decoder=new y.StringDecoder(t.encoding),l.rowTransformerValidator=new W.RowTransformerValidator,l}return s(i,[{key:"transform",value:function(t){return this.rowTransformerValidator.rowTransform=t,this}},{key:"validate",value:function(t){return this.rowTransformerValidator.rowValidator=t,this}},{key:"emit",value:function(t){var l;if("end"===t)return this.endEmitted||(this.endEmitted=!0,d(m(i.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var e=arguments.length,n=new Array(e>1?e-1:0),c=1;c<e;c++)n[c-1]=arguments[c];return(l=d(m(i.prototype),"emit",this)).call.apply(l,[this,t].concat(n))}},{key:"_transform",value:function(t,l,e){if(this.hasHitRowLimit)return e();try{var i=this.lines,n=i+this.decoder.write(t),c=this.parse(n,!0);return this.processRows(c,e)}catch(s){return e(s)}}},{key:"_flush",value:function(t){if(this.hasHitRowLimit)return t();try{var l=this.lines+this.decoder.end(),e=this.parse(l,!1);return this.processRows(e,t)}catch(i){return t(i)}}},{key:"parse",value:function(t,l){if(!t)return[];var e=this.parser.parse(t,l),i=e.line,n=e.rows;return this.lines=i,n}},{key:"processRows",value:function(t,e){var i=this,n=t.length,c=function c(s){var d=function(t){return t?e(t):s%100!==0?c(s+1):void l((function(){return c(s+1)}))};if(i.checkAndEmitHeaders(),s>=n||i.hasHitRowLimit)return e();if(i.parsedLineCount+=1,i.shouldSkipLine)return d();var a=t[s];i.rowCount+=1,i.parsedRowCount+=1;var u=i.rowCount;return i.transformRow(a,(function(t,l){if(t)return i.rowCount-=1,d(t);if(!l)return d(new Error("expected transform result"));if(l.isValid){if(l.row)return i.pushRow(l.row,d)}else i.emit("data-invalid",l.row,u,l.reason);return d()}))};c(0)}},{key:"transformRow",value:function(t,l){var e=this;try{this.headerTransformer.transform(t,(function(i,n){return i?l(i):n?n.isValid?n.row?e.shouldEmitRows?e.rowTransformerValidator.transformAndValidate(n.row,l):e.skipRow(l):(e.rowCount-=1,e.parsedRowCount-=1,l(null,{row:null,isValid:!0})):e.shouldEmitRows?l(null,{isValid:!1,row:t}):e.skipRow(l):l(new Error("Expected result from header transform"))}))}catch(i){l(i)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(t){return this.rowCount-=1,t(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(t,l){try{this.parserOptions.objectMode?this.push(t):this.push(JSON.stringify(t)),l()}catch(e){l(e)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),i}(p.Transform);e.CsvParserStream=X}).call(this,t("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}var n=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.ParserOptions=void 0;var c=n(t("lodash.escaperegexp")),s=n(t("lodash.isnil")),d=function t(l){var e;if(i(this,t),this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,l||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=c.default(this.delimiter),this.escapeChar=null!==(e=this.escape)&&void 0!==e?e:this.quote,this.supportsComments=!s.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};e.ParserOptions=d},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(t,l,e){"use strict";var i=Object.create?function(t,l,e,i){void 0===i&&(i=e),Object.defineProperty(t,i,{enumerable:!0,get:function(){return l[e]}})}:function(t,l,e,i){void 0===i&&(i=e),t[i]=l[e]},n=Object.create?function(t,l){Object.defineProperty(t,"default",{enumerable:!0,value:l})}:function(t,l){t["default"]=l},c=function(t){if(t&&t.__esModule)return t;var l={};if(null!=t)for(var e in t)"default"!==e&&Object.hasOwnProperty.call(t,e)&&i(l,t,e);return n(l,t),l},s=function(t,l){for(var e in t)"default"===e||l.hasOwnProperty(e)||i(l,t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.parseString=e.parseFile=e.parseStream=e.parse=void 0;var d=c(t("fs")),a=t("stream"),u=t("./ParserOptions"),o=t("./CsvParserStream");s(t("./types"),e);var r=t("./CsvParserStream");Object.defineProperty(e,"CsvParserStream",{enumerable:!0,get:function(){return r.CsvParserStream}});var b=t("./ParserOptions");Object.defineProperty(e,"ParserOptions",{enumerable:!0,get:function(){return b.ParserOptions}}),e.parse=function(t){return new o.CsvParserStream(new u.ParserOptions(t))},e.parseStream=function(t,l){return t.pipe(new o.CsvParserStream(new u.ParserOptions(l)))},e.parseFile=function(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return d.createReadStream(t).pipe(new o.CsvParserStream(new u.ParserOptions(l)))},e.parseString=function(t,l){var e=new a.Readable;return e.push(t),e.push(null),e.pipe(new o.CsvParserStream(new u.ParserOptions(l)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.Parser=void 0;var s=t("./Scanner"),d=t("./RowParser"),a=t("./Token"),u=/^\s*(?:''|"")?\s*(?:,\s*(?:''|"")?\s*)*$/,o=function(){function t(l){i(this,t),this.parserOptions=l,this.rowParser=new d.RowParser(this.parserOptions)}return c(t,[{key:"parse",value:function(l,e){var i=new s.Scanner({line:t.removeBOM(l),parserOptions:this.parserOptions,hasMoreData:e});return this.parserOptions.supportsComments?this.parseWithComments(i):this.parseWithoutComments(i)}},{key:"parseWithoutComments",value:function(t){var l=[],e=!0;while(e)e=this.parseRow(t,l);return{line:t.line,rows:l}}},{key:"parseWithComments",value:function(t){for(var l=this.parserOptions,e=[],i=t.nextCharacterToken;null!==i;i=t.nextCharacterToken)if(a.Token.isTokenComment(i,l)){var n=t.advancePastLine();if(null===n)return{line:t.lineFromCursor,rows:e};if(!t.hasMoreCharacters)return{line:t.lineFromCursor,rows:e};t.truncateToCursor()}else if(!this.parseRow(t,e))break;return{line:t.line,rows:e}}},{key:"parseRow",value:function(t,l){var e=t.nextNonSpaceToken;if(!e)return!1;var i=this.rowParser.parse(t);return null!==i&&(this.parserOptions.ignoreEmpty&&u.test(i.join(""))||l.push(i),!0)}}],[{key:"removeBOM",value:function(t){return t&&65279===t.charCodeAt(0)?t.slice(1):t}}]),t}();e.Parser=o},{"./RowParser":154,"./Scanner":155,"./Token":156}],154:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.RowParser=void 0;var s=t("./column"),d=t("./Token"),a=d.Token,u=a.isTokenRowDelimiter,o=a.isTokenCarriageReturn,r=a.isTokenDelimiter,b=function(){function t(l){i(this,t),this.parserOptions=l,this.columnParser=new s.ColumnParser(l)}return c(t,[{key:"parse",value:function(t){var l=this.parserOptions,e=t.hasMoreData,i=t,n=[],c=this.getStartToken(i,n);while(c){if(u(c))return i.advancePastToken(c),!i.hasMoreCharacters&&o(c,l)&&e?null:(i.truncateToCursor(),n);if(!this.shouldSkipColumnParse(i,c,n)){var s=this.columnParser.parse(i);if(null===s)return null;n.push(s)}c=i.nextNonSpaceToken}return e?null:(i.truncateToCursor(),n)}},{key:"getStartToken",value:function(t,l){var e=t.nextNonSpaceToken;return null!==e&&r(e,this.parserOptions)?(l.push(""),t.nextNonSpaceToken):e}},{key:"shouldSkipColumnParse",value:function(t,l,e){var i=this.parserOptions;if(r(l,i)){t.advancePastToken(l);var n=t.nextCharacterToken;if(!t.hasMoreCharacters||null!==n&&u(n))return e.push(""),!0;if(null!==n&&r(n,i))return e.push(""),!0}return!1}}]),t}();e.RowParser=b},{"./Token":156,"./column":161}],155:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.Scanner=void 0;var s=t("./Token"),d=/((?:\r\n)|\n|\r)/,a=function(){function t(l){i(this,t),this.cursor=0,this.line=l.line,this.lineLength=this.line.length,this.parserOptions=l.parserOptions,this.hasMoreData=l.hasMoreData,this.cursor=l.cursor||0}return c(t,[{key:"advancePastLine",value:function(){var t=d.exec(this.lineFromCursor);return t?(this.cursor+=(t.index||0)+t[0].length,this):this.hasMoreData?null:(this.cursor=this.lineLength,this)}},{key:"advanceTo",value:function(t){return this.cursor=t,this}},{key:"advanceToToken",value:function(t){return this.cursor=t.startCursor,this}},{key:"advancePastToken",value:function(t){return this.cursor=t.endCursor+1,this}},{key:"truncateToCursor",value:function(){return this.line=this.lineFromCursor,this.lineLength=this.line.length,this.cursor=0,this}},{key:"hasMoreCharacters",get:function(){return this.lineLength>this.cursor}},{key:"nextNonSpaceToken",get:function(){var t=this.lineFromCursor,l=this.parserOptions.NEXT_TOKEN_REGEXP;if(-1===t.search(l))return null;var e=l.exec(t);if(null==e)return null;var i=e[1],n=this.cursor+(e.index||0);return new s.Token({token:i,startCursor:n,endCursor:n+i.length-1})}},{key:"nextCharacterToken",get:function(){var t=this.cursor,l=this.lineLength;return l<=t?null:new s.Token({token:this.line[t],startCursor:t,endCursor:t})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),t}();e.Scanner=a},{"./Token":156}],156:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.Token=void 0;var s=function(){function t(l){i(this,t),this.token=l.token,this.startCursor=l.startCursor,this.endCursor=l.endCursor}return c(t,null,[{key:"isTokenRowDelimiter",value:function(t){var l=t.token;return"\r"===l||"\n"===l||"\r\n"===l}},{key:"isTokenCarriageReturn",value:function(t,l){return t.token===l.carriageReturn}},{key:"isTokenComment",value:function(t,l){return l.supportsComments&&!!t&&t.token===l.comment}},{key:"isTokenEscapeCharacter",value:function(t,l){return t.token===l.escapeChar}},{key:"isTokenQuote",value:function(t,l){return t.token===l.quote}},{key:"isTokenDelimiter",value:function(t,l){return t.token===l.delimiter}}]),t}();e.Token=s},{}],157:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.ColumnFormatter=void 0;var n=function t(l){i(this,t),l.trim?this.format=function(t){return t.trim()}:l.ltrim?this.format=function(t){return t.trimLeft()}:l.rtrim?this.format=function(t){return t.trimRight()}:this.format=function(t){return t}};e.ColumnFormatter=n},{}],158:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.ColumnParser=void 0;var s=t("./NonQuotedColumnParser"),d=t("./QuotedColumnParser"),a=t("../Token"),u=function(){function t(l){i(this,t),this.parserOptions=l,this.quotedColumnParser=new d.QuotedColumnParser(l),this.nonQuotedColumnParser=new s.NonQuotedColumnParser(l)}return c(t,[{key:"parse",value:function(t){var l=t.nextNonSpaceToken;return null!==l&&a.Token.isTokenQuote(l,this.parserOptions)?(t.advanceToToken(l),this.quotedColumnParser.parse(t)):this.nonQuotedColumnParser.parse(t)}}]),t}();e.ColumnParser=u},{"../Token":156,"./NonQuotedColumnParser":159,"./QuotedColumnParser":160}],159:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.NonQuotedColumnParser=void 0;var s=t("./ColumnFormatter"),d=t("../Token"),a=d.Token,u=a.isTokenDelimiter,o=a.isTokenRowDelimiter,r=function(){function t(l){i(this,t),this.parserOptions=l,this.columnFormatter=new s.ColumnFormatter(l)}return c(t,[{key:"parse",value:function(t){if(!t.hasMoreCharacters)return null;for(var l=this.parserOptions,e=[],i=t.nextCharacterToken;i;i=t.nextCharacterToken){if(u(i,l)||o(i))break;e.push(i.token),t.advancePastToken(i)}return this.columnFormatter.format(e.join(""))}}]),t}();e.NonQuotedColumnParser=r},{"../Token":156,"./ColumnFormatter":157}],160:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}Object.defineProperty(e,"__esModule",{value:!0}),e.QuotedColumnParser=void 0;var s=t("./ColumnFormatter"),d=t("../Token"),a=d.Token,u=a.isTokenDelimiter,o=a.isTokenRowDelimiter,r=a.isTokenEscapeCharacter,b=a.isTokenQuote,h=function(){function t(l){i(this,t),this.parserOptions=l,this.columnFormatter=new s.ColumnFormatter(l)}return c(t,[{key:"parse",value:function(t){if(!t.hasMoreCharacters)return null;var l=t.cursor,e=this.gatherDataBetweenQuotes(t),i=e.foundClosingQuote,n=e.col;if(!i){if(t.advanceTo(l),!t.hasMoreData)throw new Error("Parse Error: missing closing: '".concat(this.parserOptions.quote||"","' in line: at '").concat(t.lineFromCursor.replace(/[\r\n]/g,"\\n'"),"'"));return null}return this.checkForMalformedColumn(t),n}},{key:"gatherDataBetweenQuotes",value:function(t){for(var l=this.parserOptions,e=!1,i=!1,n=[],c=t.nextCharacterToken;!i&&null!==c;c=t.nextCharacterToken){var s=b(c,l);if(!e&&s)e=!0;else if(e)if(r(c,l)){t.advancePastToken(c);var d=t.nextCharacterToken;null!==d&&(b(d,l)||r(d,l))?(n.push(d.token),c=d):s?i=!0:n.push(c.token)}else s?i=!0:n.push(c.token);t.advancePastToken(c)}return{col:this.columnFormatter.format(n.join("")),foundClosingQuote:i}}},{key:"checkForMalformedColumn",value:function(t){var l=this.parserOptions,e=t.nextNonSpaceToken;if(e){var i=u(e,l),n=o(e);if(!i&&!n){var c=t.lineFromCursor.substr(0,10).replace(/[\r\n]/g,"\\n'");throw new Error("Parse Error: expected: '".concat(l.escapedDelimiter,"' OR new line got: '").concat(e.token,"'. at '").concat(c))}t.advanceToToken(e)}else t.hasMoreData||t.advancePastLine()}}]),t}();e.QuotedColumnParser=h},{"../Token":156,"./ColumnFormatter":157}],161:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t("./ColumnParser");Object.defineProperty(e,"ColumnParser",{enumerable:!0,get:function(){return i.ColumnParser}});var n=t("./NonQuotedColumnParser");Object.defineProperty(e,"NonQuotedColumnParser",{enumerable:!0,get:function(){return n.NonQuotedColumnParser}});var c=t("./QuotedColumnParser");Object.defineProperty(e,"QuotedColumnParser",{enumerable:!0,get:function(){return c.QuotedColumnParser}});var s=t("./ColumnFormatter");Object.defineProperty(e,"ColumnFormatter",{enumerable:!0,get:function(){return s.ColumnFormatter}})},{"./ColumnFormatter":157,"./ColumnParser":158,"./NonQuotedColumnParser":159,"./QuotedColumnParser":160}],162:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t("./Parser");Object.defineProperty(e,"Parser",{enumerable:!0,get:function(){return i.Parser}});var n=t("./RowParser");Object.defineProperty(e,"RowParser",{enumerable:!0,get:function(){return n.RowParser}});var c=t("./Scanner");Object.defineProperty(e,"Scanner",{enumerable:!0,get:function(){return c.Scanner}});var s=t("./Token");Object.defineProperty(e,"Token",{enumerable:!0,get:function(){return s.Token}});var d=t("./column");Object.defineProperty(e,"ColumnParser",{enumerable:!0,get:function(){return d.ColumnParser}}),Object.defineProperty(e,"NonQuotedColumnParser",{enumerable:!0,get:function(){return d.NonQuotedColumnParser}}),Object.defineProperty(e,"QuotedColumnParser",{enumerable:!0,get:function(){return d.QuotedColumnParser}})},{"./Parser":153,"./RowParser":154,"./Scanner":155,"./Token":156,"./column":161}],163:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderTransformer=void 0;var d=s(t("lodash.isundefined")),a=s(t("lodash.isfunction")),u=s(t("lodash.uniq")),o=s(t("lodash.groupby")),r=function(){function t(l){i(this,t),this.headers=null,this.receivedHeaders=!1,this.shouldUseFirstRow=!1,this.processedFirstRow=!1,this.headersLength=0,this.parserOptions=l,!0===l.headers?this.shouldUseFirstRow=!0:Array.isArray(l.headers)?this.setHeaders(l.headers):a.default(l.headers)&&(this.headersTransform=l.headers)}return c(t,[{key:"transform",value:function(t,l){return this.shouldMapRow(t)?l(null,this.processRow(t)):l(null,{row:null,isValid:!0})}},{key:"shouldMapRow",value:function(t){var l=this.parserOptions;if(!this.headersTransform&&l.renameHeaders&&!this.processedFirstRow){if(!this.receivedHeaders)throw new Error("Error renaming headers: new headers must be provided in an array");return this.processedFirstRow=!0,!1}if(!this.receivedHeaders&&Array.isArray(t)){if(this.headersTransform)this.setHeaders(this.headersTransform(t));else{if(!this.shouldUseFirstRow)return!0;this.setHeaders(t)}return!1}return!0}},{key:"processRow",value:function(t){if(!this.headers)return{row:t,isValid:!0};var l=this.parserOptions;if(!l.discardUnmappedColumns&&t.length>this.headersLength){if(!l.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(t.length));return{row:t,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(t.length)}}return l.strictColumnHandling&&t.length<this.headersLength?{row:t,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(t.length)}:{row:this.mapHeaders(t),isValid:!0}}},{key:"mapHeaders",value:function(t){for(var l={},e=this.headers,i=this.headersLength,n=0;n<i;n+=1){var c=e[n];if(!d.default(c)){var s=t[n];d.default(s)?l[c]="":l[c]=s}}return l}},{key:"setHeaders",value:function(t){var l,e=t.filter((function(t){return!!t}));if(u.default(e).length!==e.length){var i=o.default(e),n=Object.keys(i).filter((function(t){return i[t].length>1}));throw new Error("Duplicate headers found ".concat(JSON.stringify(n)))}this.headers=t,this.receivedHeaders=!0,this.headersLength=(null===(l=this.headers)||void 0===l?void 0:l.length)||0}}]),t}();e.HeaderTransformer=r},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function n(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,l,e){return l&&n(t.prototype,l),e&&n(t,e),t}var s=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.RowTransformerValidator=void 0;var d=s(t("lodash.isfunction")),a=t("../types"),u=function(){function t(){i(this,t),this._rowTransform=null,this._rowValidator=null}return c(t,[{key:"transformAndValidate",value:function(t,l){var e=this;return this.callTransformer(t,(function(t,i){return t?l(t):i?e.callValidator(i,(function(t,e){return t?l(t):e&&!e.isValid?l(null,{row:i,isValid:!1,reason:e.reason}):l(null,{row:i,isValid:!0})})):l(null,{row:null,isValid:!0})}))}},{key:"callTransformer",value:function(t,l){return this._rowTransform?this._rowTransform(t,l):l(null,t)}},{key:"callValidator",value:function(t,l){return this._rowValidator?this._rowValidator(t,l):l(null,{row:t,isValid:!0})}},{key:"rowTransform",set:function(l){if(!d.default(l))throw new TypeError("The transform should be a function");this._rowTransform=t.createTransform(l)}},{key:"rowValidator",set:function(l){if(!d.default(l))throw new TypeError("The validate should be a function");this._rowValidator=t.createValidator(l)}}],[{key:"createTransform",value:function(t){return a.isSyncTransform(t)?function(l,e){var i=null;try{i=t(l)}catch(n){return e(n)}return e(null,i)}:t}},{key:"createValidator",value:function(t){return a.isSyncValidate(t)?function(l,e){e(null,{row:l,isValid:t(l)})}:function(l,e){t(l,(function(t,i,n){return t?e(t):e(null,i?{row:l,isValid:i,reason:n}:{row:l,isValid:!1,reason:n})}))}}}]),t}();e.RowTransformerValidator=u},{"../types":166,"lodash.isfunction":430}],165:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t("./RowTransformerValidator");Object.defineProperty(e,"RowTransformerValidator",{enumerable:!0,get:function(){return i.RowTransformerValidator}});var n=t("./HeaderTransformer");Object.defineProperty(e,"HeaderTransformer",{enumerable:!0,get:function(){return n.HeaderTransformer}})},{"./HeaderTransformer":163,"./RowTransformerValidator":164}],166:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isSyncValidate=e.isSyncTransform=void 0,e.isSyncTransform=function(t){return 1===t.length},e.isSyncValidate=function(t){return 1===t.length}},{}],167:[function(t,l,e){"use strict";var i=e;i.bignum=t("bn.js"),i.define=t("./asn1/api").define,i.base=t("./asn1/base"),i.constants=t("./asn1/constants"),i.decoders=t("./asn1/decoders"),i.encoders=t("./asn1/encoders")},{"./asn1/api":168,"./asn1/base":170,"./asn1/constants":174,"./asn1/decoders":176,"./asn1/encoders":179,"bn.js":181}],168:[function(t,l,e){"use strict";var i=t("./encoders"),n=t("./decoders"),c=t("inherits"),s=e;function d(t,l){this.name=t,this.body=l,this.decoders={},this.encoders={}}s.define=function(t,l){return new d(t,l)},d.prototype._createNamed=function(t){var l=this.name;function e(t){this._initNamed(t,l)}return c(e,t),e.prototype._initNamed=function(l,e){t.call(this,l,e)},new e(this)},d.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},d.prototype.decode=function(t,l,e){return this._getDecoder(l).decode(t,e)},d.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i[t])),this.encoders[t]},d.prototype.encode=function(t,l,e){return this._getEncoder(l).encode(t,e)}},{"./decoders":176,"./encoders":179,inherits:387}],169:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("inherits"),c=t("../base/reporter").Reporter,s=t("safer-buffer").Buffer;function d(t,l){c.call(this,l),s.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function a(t,l){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return a.isEncoderBuffer(t)||(t=new a(t,l)),this.length+=t.length,t}),this);else if("number"===typeof t){if(!(0<=t&&t<=255))return l.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"===typeof t)this.value=t,this.length=s.byteLength(t);else{if(!s.isBuffer(t))return l.error("Unsupported type: "+i(t));this.value=t,this.length=t.length}}n(d,c),e.DecoderBuffer=d,d.isDecoderBuffer=function(t){if(t instanceof d)return!0;var l="object"===i(t)&&s.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"===typeof t.offset&&"number"===typeof t.length&&"function"===typeof t.save&&"function"===typeof t.restore&&"function"===typeof t.isEmpty&&"function"===typeof t.readUInt8&&"function"===typeof t.skip&&"function"===typeof t.raw;return l},d.prototype.save=function(){return{offset:this.offset,reporter:c.prototype.save.call(this)}},d.prototype.restore=function(t){var l=new d(this.base);return l.offset=t.offset,l.length=this.offset,this.offset=t.offset,c.prototype.restore.call(this,t.reporter),l},d.prototype.isEmpty=function(){return this.offset===this.length},d.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},d.prototype.skip=function(t,l){if(!(this.offset+t<=this.length))return this.error(l||"DecoderBuffer overrun");var e=new d(this.base);return e._reporterState=this._reporterState,e.offset=this.offset,e.length=this.offset+t,this.offset+=t,e},d.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=a,a.isEncoderBuffer=function(t){if(t instanceof a)return!0;var l="object"===i(t)&&"EncoderBuffer"===t.constructor.name&&"number"===typeof t.length&&"function"===typeof t.join;return l},a.prototype.join=function(t,l){return t||(t=s.alloc(this.length)),l||(l=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(e){e.join(t,l),l+=e.length})):("number"===typeof this.value?t[l]=this.value:"string"===typeof this.value?t.write(this.value,l):s.isBuffer(this.value)&&this.value.copy(t,l),l+=this.length)),t}},{"../base/reporter":172,inherits:387,"safer-buffer":495}],170:[function(t,l,e){"use strict";var i=e;i.Reporter=t("./reporter").Reporter,i.DecoderBuffer=t("./buffer").DecoderBuffer,i.EncoderBuffer=t("./buffer").EncoderBuffer,i.Node=t("./node")},{"./buffer":169,"./node":171,"./reporter":172}],171:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("../base/reporter").Reporter,c=t("../base/buffer").EncoderBuffer,s=t("../base/buffer").DecoderBuffer,d=t("minimalistic-assert"),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a),o=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function r(t,l,e){var i={};this._baseState=i,i.name=e,i.enc=t,i.parent=l||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i["default"]=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}l.exports=r;var b=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];r.prototype.clone=function(){var t=this._baseState,l={};b.forEach((function(e){l[e]=t[e]}));var e=new this.constructor(l.parent);return e._baseState=l,e},r.prototype._wrap=function(){var t=this._baseState;u.forEach((function(l){this[l]=function(){var e=new this.constructor(this);return t.children.push(e),e[l].apply(e,arguments)}}),this)},r.prototype._init=function(t){var l=this._baseState;d(null===l.parent),t.call(this),l.children=l.children.filter((function(t){return t._baseState.parent===this}),this),d.equal(l.children.length,1,"Root node can have only one child")},r.prototype._useArgs=function(t){var l=this._baseState,e=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==e.length&&(d(null===l.children),l.children=e,e.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(d(null===l.args),l.args=t,l.reverseArgs=t.map((function(t){if("object"!==i(t)||t.constructor!==Object)return t;var l={};return Object.keys(t).forEach((function(e){e==(0|e)&&(e|=0);var i=t[e];l[i]=e})),l})))},o.forEach((function(t){r.prototype[t]=function(){var l=this._baseState;throw new Error(t+" not implemented for encoding: "+l.enc)}})),a.forEach((function(t){r.prototype[t]=function(){var l=this._baseState,e=Array.prototype.slice.call(arguments);return d(null===l.tag),l.tag=t,this._useArgs(e),this}})),r.prototype.use=function(t){d(t);var l=this._baseState;return d(null===l.use),l.use=t,this},r.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},r.prototype.def=function(t){var l=this._baseState;return d(null===l["default"]),l["default"]=t,l.optional=!0,this},r.prototype.explicit=function(t){var l=this._baseState;return d(null===l.explicit&&null===l.implicit),l.explicit=t,this},r.prototype.implicit=function(t){var l=this._baseState;return d(null===l.explicit&&null===l.implicit),l.implicit=t,this},r.prototype.obj=function(){var t=this._baseState,l=Array.prototype.slice.call(arguments);return t.obj=!0,0!==l.length&&this._useArgs(l),this},r.prototype.key=function(t){var l=this._baseState;return d(null===l.key),l.key=t,this},r.prototype.any=function(){var t=this._baseState;return t.any=!0,this},r.prototype.choice=function(t){var l=this._baseState;return d(null===l.choice),l.choice=t,this._useArgs(Object.keys(t).map((function(l){return t[l]}))),this},r.prototype.contains=function(t){var l=this._baseState;return d(null===l.use),l.contains=t,this},r.prototype._decode=function(t,l){var e=this._baseState;if(null===e.parent)return t.wrapResult(e.children[0]._decode(t,l));var i,n=e["default"],c=!0,d=null;if(null!==e.key&&(d=t.enterKey(e.key)),e.optional){var a=null;if(null!==e.explicit?a=e.explicit:null!==e.implicit?a=e.implicit:null!==e.tag&&(a=e.tag),null!==a||e.any){if(c=this._peekTag(t,a,e.any),t.isError(c))return c}else{var u=t.save();try{null===e.choice?this._decodeGeneric(e.tag,t,l):this._decodeChoice(t,l),c=!0}catch(m){c=!1}t.restore(u)}}if(e.obj&&c&&(i=t.enterObject()),c){if(null!==e.explicit){var o=this._decodeTag(t,e.explicit);if(t.isError(o))return o;t=o}var r=t.offset;if(null===e.use&&null===e.choice){var b;e.any&&(b=t.save());var h=this._decodeTag(t,null!==e.implicit?e.implicit:e.tag,e.any);if(t.isError(h))return h;e.any?n=t.raw(b):t=h}if(l&&l.track&&null!==e.tag&&l.track(t.path(),r,t.length,"tagged"),l&&l.track&&null!==e.tag&&l.track(t.path(),t.offset,t.length,"content"),e.any||(n=null===e.choice?this._decodeGeneric(e.tag,t,l):this._decodeChoice(t,l)),t.isError(n))return n;if(e.any||null!==e.choice||null===e.children||e.children.forEach((function(e){e._decode(t,l)})),e.contains&&("octstr"===e.tag||"bitstr"===e.tag)){var Z=new s(n);n=this._getUse(e.contains,t._reporterState.obj)._decode(Z,l)}}return e.obj&&c&&(n=t.leaveObject(i)),null===e.key||null===n&&!0!==c?null!==d&&t.exitKey(d):t.leaveKey(d,e.key,n),n},r.prototype._decodeGeneric=function(t,l,e){var i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(l,t,i.args[0],e):/str$/.test(t)?this._decodeStr(l,t,e):"objid"===t&&i.args?this._decodeObjid(l,i.args[0],i.args[1],e):"objid"===t?this._decodeObjid(l,null,null,e):"gentime"===t||"utctime"===t?this._decodeTime(l,t,e):"null_"===t?this._decodeNull(l,e):"bool"===t?this._decodeBool(l,e):"objDesc"===t?this._decodeStr(l,t,e):"int"===t||"enum"===t?this._decodeInt(l,i.args&&i.args[0],e):null!==i.use?this._getUse(i.use,l._reporterState.obj)._decode(l,e):l.error("unknown tag: "+t)},r.prototype._getUse=function(t,l){var e=this._baseState;return e.useDecoder=this._use(t,l),d(null===e.useDecoder._baseState.parent),e.useDecoder=e.useDecoder._baseState.children[0],e.implicit!==e.useDecoder._baseState.implicit&&(e.useDecoder=e.useDecoder.clone(),e.useDecoder._baseState.implicit=e.implicit),e.useDecoder},r.prototype._decodeChoice=function(t,l){var e=this._baseState,i=null,n=!1;return Object.keys(e.choice).some((function(c){var s=t.save(),d=e.choice[c];try{var a=d._decode(t,l);if(t.isError(a))return!1;i={type:c,value:a},n=!0}catch(u){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},r.prototype._createEncoderBuffer=function(t){return new c(t,this.reporter)},r.prototype._encode=function(t,l,e){var i=this._baseState;if(null===i["default"]||i["default"]!==t){var n=this._encodeValue(t,l,e);if(void 0!==n&&!this._skipDefault(n,l,e))return n}},r.prototype._encodeValue=function(t,l,e){var c=this._baseState;if(null===c.parent)return c.children[0]._encode(t,l||new n);var s=null;if(this.reporter=l,c.optional&&void 0===t){if(null===c["default"])return;t=c["default"]}var d=null,a=!1;if(c.any)s=this._createEncoderBuffer(t);else if(c.choice)s=this._encodeChoice(t,l);else if(c.contains)d=this._getUse(c.contains,e)._encode(t,l),a=!0;else if(c.children)d=c.children.map((function(e){if("null_"===e._baseState.tag)return e._encode(null,l,t);if(null===e._baseState.key)return l.error("Child should have a key");var n=l.enterKey(e._baseState.key);if("object"!==i(t))return l.error("Child expected, but input is not object");var c=e._encode(t[e._baseState.key],l,t);return l.leaveKey(n),c}),this).filter((function(t){return t})),d=this._createEncoderBuffer(d);else if("seqof"===c.tag||"setof"===c.tag){if(!c.args||1!==c.args.length)return l.error("Too many args for : "+c.tag);if(!Array.isArray(t))return l.error("seqof/setof, but data is not Array");var u=this.clone();u._baseState.implicit=null,d=this._createEncoderBuffer(t.map((function(e){var i=this._baseState;return this._getUse(i.args[0],t)._encode(e,l)}),u))}else null!==c.use?s=this._getUse(c.use,e)._encode(t,l):(d=this._encodePrimitive(c.tag,t),a=!0);if(!c.any&&null===c.choice){var o=null!==c.implicit?c.implicit:c.tag,r=null===c.implicit?"universal":"context";null===o?null===c.use&&l.error("Tag could be omitted only for .use()"):null===c.use&&(s=this._encodeComposite(o,a,r,d))}return null!==c.explicit&&(s=this._encodeComposite(c.explicit,!1,"context",s)),s},r.prototype._encodeChoice=function(t,l){var e=this._baseState,i=e.choice[t.type];return i||d(!1,t.type+" not found in "+JSON.stringify(Object.keys(e.choice))),i._encode(t.value,l)},r.prototype._encodePrimitive=function(t,l){var e=this._baseState;if(/str$/.test(t))return this._encodeStr(l,t);if("objid"===t&&e.args)return this._encodeObjid(l,e.reverseArgs[0],e.args[1]);if("objid"===t)return this._encodeObjid(l,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(l,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(l,e.args&&e.reverseArgs[0]);if("bool"===t)return this._encodeBool(l);if("objDesc"===t)return this._encodeStr(l,t);throw new Error("Unsupported tag: "+t)},r.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},r.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},{"../base/buffer":169,"../base/reporter":172,"minimalistic-assert":437}],172:[function(t,l,e){"use strict";var i=t("inherits");function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function c(t,l){this.path=t,this.rethrow(l)}e.Reporter=n,n.prototype.isError=function(t){return t instanceof c},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var l=this._reporterState;l.obj=t.obj,l.path=l.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var l=this._reporterState;l.path=l.path.slice(0,t-1)},n.prototype.leaveKey=function(t,l,e){var i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[l]=e)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,l=t.obj;return t.obj={},l},n.prototype.leaveObject=function(t){var l=this._reporterState,e=l.obj;return l.obj=t,e},n.prototype.error=function(t){var l,e=this._reporterState,i=t instanceof c;if(l=i?t:new c(e.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!e.options.partial)throw l;return i||e.errors.push(l),l},n.prototype.wrapResult=function(t){var l=this._reporterState;return l.options.partial?{result:this.isError(t)?null:t,errors:l.errors}:t},i(c,Error),c.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,c),!this.stack)try{throw new Error(this.message)}catch(l){this.stack=l.stack}return this}},{inherits:387}],173:[function(t,l,e){"use strict";function i(t){var l={};return Object.keys(t).forEach((function(e){(0|e)==e&&(e|=0);var i=t[e];l[i]=e})),l}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=i(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=i(e.tag)},{}],174:[function(t,l,e){"use strict";var i=e;i._reverse=function(t){var l={};return Object.keys(t).forEach((function(e){(0|e)==e&&(e|=0);var i=t[e];l[i]=e})),l},i.der=t("./der")},{"./der":173}],175:[function(t,l,e){"use strict";var i=t("inherits"),n=t("bn.js"),c=t("../base/buffer").DecoderBuffer,s=t("../base/node"),d=t("../constants/der");function a(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){s.call(this,"der",t)}function o(t,l){var e=t.readUInt8(l);if(t.isError(e))return e;var i=d.tagClass[e>>6],n=0===(32&e);if(31===(31&e)){var c=e;e=0;while(128===(128&c)){if(c=t.readUInt8(l),t.isError(c))return c;e<<=7,e|=127&c}}else e&=31;var s=d.tag[e];return{cls:i,primitive:n,tag:e,tagStr:s}}function r(t,l,e){var i=t.readUInt8(e);if(t.isError(i))return i;if(!l&&128===i)return null;if(0===(128&i))return i;var n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(var c=0;c<n;c++){i<<=8;var s=t.readUInt8(e);if(t.isError(s))return s;i|=s}return i}l.exports=a,a.prototype.decode=function(t,l){return c.isDecoderBuffer(t)||(t=new c(t,l)),this.tree._decode(t,l)},i(u,s),u.prototype._peekTag=function(t,l,e){if(t.isEmpty())return!1;var i=t.save(),n=o(t,'Failed to peek tag: "'+l+'"');return t.isError(n)?n:(t.restore(i),n.tag===l||n.tagStr===l||n.tagStr+"of"===l||e)},u.prototype._decodeTag=function(t,l,e){var i=o(t,'Failed to decode tag of "'+l+'"');if(t.isError(i))return i;var n=r(t,i.primitive,'Failed to get length of "'+l+'"');if(t.isError(n))return n;if(!e&&i.tag!==l&&i.tagStr!==l&&i.tagStr+"of"!==l)return t.error('Failed to match tag: "'+l+'"');if(i.primitive||null!==n)return t.skip(n,'Failed to match body of: "'+l+'"');var c=t.save(),s=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(s)?s:(n=t.offset-c.offset,t.restore(c),t.skip(n,'Failed to match body of: "'+l+'"'))},u.prototype._skipUntilEnd=function(t,l){for(;;){var e=o(t,l);if(t.isError(e))return e;var i=r(t,e.primitive,l);if(t.isError(i))return i;var n=void 0;if(n=e.primitive||null!==i?t.skip(i):this._skipUntilEnd(t,l),t.isError(n))return n;if("end"===e.tagStr)break}},u.prototype._decodeList=function(t,l,e,i){var n=[];while(!t.isEmpty()){var c=this._peekTag(t,"end");if(t.isError(c))return c;var s=e.decode(t,"der",i);if(t.isError(s)&&c)break;n.push(s)}return n},u.prototype._decodeStr=function(t,l){if("bitstr"===l){var e=t.readUInt8();return t.isError(e)?e:{unused:e,data:t.raw()}}if("bmpstr"===l){var i=t.raw();if(i.length%2===1)return t.error("Decoding of string type: bmpstr length mismatch");for(var n="",c=0;c<i.length/2;c++)n+=String.fromCharCode(i.readUInt16BE(2*c));return n}if("numstr"===l){var s=t.raw().toString("ascii");return this._isNumstr(s)?s:t.error("Decoding of string type: numstr unsupported characters")}if("octstr"===l)return t.raw();if("objDesc"===l)return t.raw();if("printstr"===l){var d=t.raw().toString("ascii");return this._isPrintstr(d)?d:t.error("Decoding of string type: printstr unsupported characters")}return/str$/.test(l)?t.raw().toString():t.error("Decoding of string type: "+l+" unsupported")},u.prototype._decodeObjid=function(t,l,e){var i,n=[],c=0,s=0;while(!t.isEmpty())s=t.readUInt8(),c<<=7,c|=127&s,0===(128&s)&&(n.push(c),c=0);128&s&&n.push(c);var d=n[0]/40|0,a=n[0]%40;if(i=e?n:[d,a].concat(n.slice(1)),l){var u=l[i.join(" ")];void 0===u&&(u=l[i.join(".")]),void 0!==u&&(i=u)}return i},u.prototype._decodeTime=function(t,l){var e,i,n,c,s,d,a=t.raw().toString();if("gentime"===l)e=0|a.slice(0,4),i=0|a.slice(4,6),n=0|a.slice(6,8),c=0|a.slice(8,10),s=0|a.slice(10,12),d=0|a.slice(12,14);else{if("utctime"!==l)return t.error("Decoding "+l+" time is not supported yet");e=0|a.slice(0,2),i=0|a.slice(2,4),n=0|a.slice(4,6),c=0|a.slice(6,8),s=0|a.slice(8,10),d=0|a.slice(10,12),e=e<70?2e3+e:1900+e}return Date.UTC(e,i-1,n,c,s,d,0)},u.prototype._decodeNull=function(){return null},u.prototype._decodeBool=function(t){var l=t.readUInt8();return t.isError(l)?l:0!==l},u.prototype._decodeInt=function(t,l){var e=t.raw(),i=new n(e);return l&&(i=l[i.toString(10)]||i),i},u.prototype._use=function(t,l){return"function"===typeof t&&(t=t(l)),t._getDecoder("der").tree}},{"../base/buffer":169,"../base/node":171,"../constants/der":173,"bn.js":181,inherits:387}],176:[function(t,l,e){"use strict";var i=e;i.der=t("./der"),i.pem=t("./pem")},{"./der":175,"./pem":177}],177:[function(t,l,e){"use strict";var i=t("inherits"),n=t("safer-buffer").Buffer,c=t("./der");function s(t){c.call(this,t),this.enc="pem"}i(s,c),l.exports=s,s.prototype.decode=function(t,l){for(var e=t.toString().split(/[\r\n]+/g),i=l.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/,d=-1,a=-1,u=0;u<e.length;u++){var o=e[u].match(s);if(null!==o&&o[2]===i){if(-1!==d){if("END"!==o[1])break;a=u;break}if("BEGIN"!==o[1])break;d=u}}if(-1===d||-1===a)throw new Error("PEM section not found for: "+i);var r=e.slice(d+1,a).join("");r.replace(/[^a-z0-9+/=]+/gi,"");var b=n.from(r,"base64");return c.prototype.decode.call(this,b,l)}},{"./der":175,inherits:387,"safer-buffer":495}],178:[function(t,l,e){"use strict";var i=t("inherits"),n=t("safer-buffer").Buffer,c=t("../base/node"),s=t("../constants/der");function d(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new a,this.tree._init(t.body)}function a(t){c.call(this,"der",t)}function u(t){return t<10?"0"+t:t}function o(t,l,e,i){var n;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))n=s.tagByName[t];else{if("number"!==typeof t||(0|t)!==t)return i.error("Unknown tag: "+t);n=t}return n>=31?i.error("Multi-octet tag encoding unsupported"):(l||(n|=32),n|=s.tagClassByName[e||"universal"]<<6,n)}l.exports=d,d.prototype.encode=function(t,l){return this.tree._encode(t,l).join()},i(a,c),a.prototype._encodeComposite=function(t,l,e,i){var c=o(t,l,e,this.reporter);if(i.length<128){var s=n.alloc(2);return s[0]=c,s[1]=i.length,this._createEncoderBuffer([s,i])}for(var d=1,a=i.length;a>=256;a>>=8)d++;var u=n.alloc(2+d);u[0]=c,u[1]=128|d;for(var r=1+d,b=i.length;b>0;r--,b>>=8)u[r]=255&b;return this._createEncoderBuffer([u,i])},a.prototype._encodeStr=function(t,l){if("bitstr"===l)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===l){for(var e=n.alloc(2*t.length),i=0;i<t.length;i++)e.writeUInt16BE(t.charCodeAt(i),2*i);return this._createEncoderBuffer(e)}return"numstr"===l?this._isNumstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: numstr supports only digits and space"):"printstr"===l?this._isPrintstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(l)||"objDesc"===l?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: "+l+" unsupported")},a.prototype._encodeObjid=function(t,l,e){if("string"===typeof t){if(!l)return this.reporter.error("string objid given, but no values map found");if(!l.hasOwnProperty(t))return this.reporter.error("objid not found in values map");t=l[t].split(/[\s.]+/g);for(var i=0;i<t.length;i++)t[i]|=0}else if(Array.isArray(t)){t=t.slice();for(var c=0;c<t.length;c++)t[c]|=0}if(!Array.isArray(t))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(t));if(!e){if(t[1]>=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var s=0,d=0;d<t.length;d++){var a=t[d];for(s++;a>=128;a>>=7)s++}for(var u=n.alloc(s),o=u.length-1,r=t.length-1;r>=0;r--){var b=t[r];u[o--]=127&b;while((b>>=7)>0)u[o--]=128|127&b}return this._createEncoderBuffer(u)},a.prototype._encodeTime=function(t,l){var e,i=new Date(t);return"gentime"===l?e=[u(i.getUTCFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===l?e=[u(i.getUTCFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+l+" time is not supported yet"),this._encodeStr(e,"octstr")},a.prototype._encodeNull=function(){return this._createEncoderBuffer("")},a.prototype._encodeInt=function(t,l){if("string"===typeof t){if(!l)return this.reporter.error("String int or enum given, but no values map");if(!l.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=l[t]}if("number"!==typeof t&&!n.isBuffer(t)){var e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){var i=t.length;0===t.length&&i++;var c=n.alloc(i);return t.copy(c),0===t.length&&(c[0]=0),this._createEncoderBuffer(c)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var s=1,d=t;d>=256;d>>=8)s++;for(var a=new Array(s),u=a.length-1;u>=0;u--)a[u]=255&t,t>>=8;return 128&a[0]&&a.unshift(0),this._createEncoderBuffer(n.from(a))},a.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},a.prototype._use=function(t,l){return"function"===typeof t&&(t=t(l)),t._getEncoder("der").tree},a.prototype._skipDefault=function(t,l,e){var i,n=this._baseState;if(null===n["default"])return!1;var c=t.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n["default"],l,e).join()),c.length!==n.defaultBuffer.length)return!1;for(i=0;i<c.length;i++)if(c[i]!==n.defaultBuffer[i])return!1;return!0}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(t,l,e){"use strict";var i=e;i.der=t("./der"),i.pem=t("./pem")},{"./der":178,"./pem":180}],180:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./der");function c(t){n.call(this,t),this.enc="pem"}i(c,n),l.exports=c,c.prototype.encode=function(t,l){for(var e=n.prototype.encode.call(this,t),i=e.toString("base64"),c=["-----BEGIN "+l.label+"-----"],s=0;s<i.length;s+=64)c.push(i.slice(s,s+64));return c.push("-----END "+l.label+"-----"),c.join("\n")}},{"./der":178,inherits:387}],181:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}(function(l,e){function n(t,l){if(!t)throw new Error(l||"Assertion failed")}function c(t,l){t.super_=l;var e=function(){};e.prototype=l.prototype,t.prototype=new e,t.prototype.constructor=t}function s(t,l,e){if(s.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==l&&"be"!==l||(e=l,l=10),this._init(t||0,l||10,e||"be"))}var d;"object"===i(l)?l.exports=s:e.BN=s,s.BN=s,s.wordSize=26;try{d=t("buffer").Buffer}catch(w){}function a(t,l,e){for(var i=0,n=Math.min(t.length,e),c=l;c<n;c++){var s=t.charCodeAt(c)-48;i<<=4,i|=s>=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function u(t,l,e,i){for(var n=0,c=Math.min(t.length,e),s=l;s<c;s++){var d=t.charCodeAt(s)-48;n*=i,n+=d>=49?d-49+10:d>=17?d-17+10:d}return n}s.isBN=function(t){return t instanceof s||null!==t&&"object"===i(t)&&t.constructor.wordSize===s.wordSize&&Array.isArray(t.words)},s.max=function(t,l){return t.cmp(l)>0?t:l},s.min=function(t,l){return t.cmp(l)<0?t:l},s.prototype._init=function(t,l,e){if("number"===typeof t)return this._initNumber(t,l,e);if("object"===i(t))return this._initArray(t,l,e);"hex"===l&&(l=16),n(l===(0|l)&&l>=2&&l<=36),t=t.toString().replace(/\s+/g,"");var c=0;"-"===t[0]&&c++,16===l?this._parseHex(t,c):this._parseBase(t,l,c),"-"===t[0]&&(this.negative=1),this.strip(),"le"===e&&this._initArray(this.toArray(),l,e)},s.prototype._initNumber=function(t,l,e){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===e&&this._initArray(this.toArray(),l,e)},s.prototype._initArray=function(t,l,e){if(n("number"===typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var c,s,d=0;if("be"===e)for(i=t.length-1,c=0;i>=0;i-=3)s=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[c]|=s<<d&67108863,this.words[c+1]=s>>>26-d&67108863,d+=24,d>=26&&(d-=26,c++);else if("le"===e)for(i=0,c=0;i<t.length;i+=3)s=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[c]|=s<<d&67108863,this.words[c+1]=s>>>26-d&67108863,d+=24,d>=26&&(d-=26,c++);return this.strip()},s.prototype._parseHex=function(t,l){this.length=Math.ceil((t.length-l)/6),this.words=new Array(this.length);for(var e=0;e<this.length;e++)this.words[e]=0;var i,n,c=0;for(e=t.length-6,i=0;e>=l;e-=6)n=a(t,e,e+6),this.words[i]|=n<<c&67108863,this.words[i+1]|=n>>>26-c&4194303,c+=24,c>=26&&(c-=26,i++);e+6!==l&&(n=a(t,l,e+6),this.words[i]|=n<<c&67108863,this.words[i+1]|=n>>>26-c&4194303),this.strip()},s.prototype._parseBase=function(t,l,e){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=l)i++;i--,n=n/l|0;for(var c=t.length-e,s=c%i,d=Math.min(c,c-s)+e,a=0,o=e;o<d;o+=i)a=u(t,o,o+i,l),this.imuln(n),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a);if(0!==s){var r=1;for(a=u(t,o,t.length,l),o=0;o<s;o++)r*=l;this.imuln(r),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a)}},s.prototype.copy=function(t){t.words=new Array(this.length);for(var l=0;l<this.length;l++)t.words[l]=this.words[l];t.length=this.length,t.negative=this.negative,t.red=this.red},s.prototype.clone=function(){var t=new s(null);return this.copy(t),t},s.prototype._expand=function(t){while(this.length<t)this.words[this.length++]=0;return this},s.prototype.strip=function(){while(this.length>1&&0===this.words[this.length-1])this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},s.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var o=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],r=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],b=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(t){for(var l=new Array(t.bitLength()),e=0;e<l.length;e++){var i=e/26|0,n=e%26;l[e]=(t.words[i]&1<<n)>>>n}return l}function Z(t,l,e){e.negative=l.negative^t.negative;var i=t.length+l.length|0;e.length=i,i=i-1|0;var n=0|t.words[0],c=0|l.words[0],s=n*c,d=67108863&s,a=s/67108864|0;e.words[0]=d;for(var u=1;u<i;u++){for(var o=a>>>26,r=67108863&a,b=Math.min(u,l.length-1),h=Math.max(0,u-t.length+1);h<=b;h++){var Z=u-h|0;n=0|t.words[Z],c=0|l.words[h],s=n*c+r,o+=s/67108864|0,r=67108863&s}e.words[u]=0|r,a=0|o}return 0!==a?e.words[u]=0|a:e.length--,e.strip()}s.prototype.toString=function(t,l){var e;if(t=t||10,l=0|l||1,16===t||"hex"===t){e="";for(var i=0,c=0,s=0;s<this.length;s++){var d=this.words[s],a=(16777215&(d<<i|c)).toString(16);c=d>>>24-i&16777215,e=0!==c||s!==this.length-1?o[6-a.length]+a+e:a+e,i+=2,i>=26&&(i-=26,s--)}0!==c&&(e=c.toString(16)+e);while(e.length%l!==0)e="0"+e;return 0!==this.negative&&(e="-"+e),e}if(t===(0|t)&&t>=2&&t<=36){var u=r[t],h=b[t];e="";var Z=this.clone();Z.negative=0;while(!Z.isZero()){var m=Z.modn(h).toString(t);Z=Z.idivn(h),e=Z.isZero()?m+e:o[u-m.length]+m+e}this.isZero()&&(e="0"+e);while(e.length%l!==0)e="0"+e;return 0!==this.negative&&(e="-"+e),e}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},s.prototype.toJSON=function(){return this.toString(16)},s.prototype.toBuffer=function(t,l){return n("undefined"!==typeof d),this.toArrayLike(d,t,l)},s.prototype.toArray=function(t,l){return this.toArrayLike(Array,t,l)},s.prototype.toArrayLike=function(t,l,e){var i=this.byteLength(),c=e||Math.max(1,i);n(i<=c,"byte array longer than desired length"),n(c>0,"Requested array length <= 0"),this.strip();var s,d,a="le"===l,u=new t(c),o=this.clone();if(a){for(d=0;!o.isZero();d++)s=o.andln(255),o.iushrn(8),u[d]=s;for(;d<c;d++)u[d]=0}else{for(d=0;d<c-i;d++)u[d]=0;for(d=0;!o.isZero();d++)s=o.andln(255),o.iushrn(8),u[c-d-1]=s}return u},Math.clz32?s.prototype._countBits=function(t){return 32-Math.clz32(t)}:s.prototype._countBits=function(t){var l=t,e=0;return l>=4096&&(e+=13,l>>>=13),l>=64&&(e+=7,l>>>=7),l>=8&&(e+=4,l>>>=4),l>=2&&(e+=2,l>>>=2),e+l},s.prototype._zeroBits=function(t){if(0===t)return 26;var l=t,e=0;return 0===(8191&l)&&(e+=13,l>>>=13),0===(127&l)&&(e+=7,l>>>=7),0===(15&l)&&(e+=4,l>>>=4),0===(3&l)&&(e+=2,l>>>=2),0===(1&l)&&e++,e},s.prototype.bitLength=function(){var t=this.words[this.length-1],l=this._countBits(t);return 26*(this.length-1)+l},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,l=0;l<this.length;l++){var e=this._zeroBits(this.words[l]);if(t+=e,26!==e)break}return t},s.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},s.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},s.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},s.prototype.isNeg=function(){return 0!==this.negative},s.prototype.neg=function(){return this.clone().ineg()},s.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},s.prototype.iuor=function(t){while(this.length<t.length)this.words[this.length++]=0;for(var l=0;l<t.length;l++)this.words[l]=this.words[l]|t.words[l];return this.strip()},s.prototype.ior=function(t){return n(0===(this.negative|t.negative)),this.iuor(t)},s.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},s.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},s.prototype.iuand=function(t){var l;l=this.length>t.length?t:this;for(var e=0;e<l.length;e++)this.words[e]=this.words[e]&t.words[e];return this.length=l.length,this.strip()},s.prototype.iand=function(t){return n(0===(this.negative|t.negative)),this.iuand(t)},s.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},s.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},s.prototype.iuxor=function(t){var l,e;this.length>t.length?(l=this,e=t):(l=t,e=this);for(var i=0;i<e.length;i++)this.words[i]=l.words[i]^e.words[i];if(this!==l)for(;i<l.length;i++)this.words[i]=l.words[i];return this.length=l.length,this.strip()},s.prototype.ixor=function(t){return n(0===(this.negative|t.negative)),this.iuxor(t)},s.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},s.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},s.prototype.inotn=function(t){n("number"===typeof t&&t>=0);var l=0|Math.ceil(t/26),e=t%26;this._expand(l),e>0&&l--;for(var i=0;i<l;i++)this.words[i]=67108863&~this.words[i];return e>0&&(this.words[i]=~this.words[i]&67108863>>26-e),this.strip()},s.prototype.notn=function(t){return this.clone().inotn(t)},s.prototype.setn=function(t,l){n("number"===typeof t&&t>=0);var e=t/26|0,i=t%26;return this._expand(e+1),this.words[e]=l?this.words[e]|1<<i:this.words[e]&~(1<<i),this.strip()},s.prototype.iadd=function(t){var l,e,i;if(0!==this.negative&&0===t.negative)return this.negative=0,l=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,l=this.isub(t),t.negative=1,l._normSign();this.length>t.length?(e=this,i=t):(e=t,i=this);for(var n=0,c=0;c<i.length;c++)l=(0|e.words[c])+(0|i.words[c])+n,this.words[c]=67108863&l,n=l>>>26;for(;0!==n&&c<e.length;c++)l=(0|e.words[c])+n,this.words[c]=67108863&l,n=l>>>26;if(this.length=e.length,0!==n)this.words[this.length]=n,this.length++;else if(e!==this)for(;c<e.length;c++)this.words[c]=e.words[c];return this},s.prototype.add=function(t){var l;return 0!==t.negative&&0===this.negative?(t.negative=0,l=this.sub(t),t.negative^=1,l):0===t.negative&&0!==this.negative?(this.negative=0,l=t.sub(this),this.negative=1,l):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},s.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var l=this.iadd(t);return t.negative=1,l._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var e,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(e=this,i=t):(e=t,i=this);for(var c=0,s=0;s<i.length;s++)l=(0|e.words[s])-(0|i.words[s])+c,c=l>>26,this.words[s]=67108863&l;for(;0!==c&&s<e.length;s++)l=(0|e.words[s])+c,c=l>>26,this.words[s]=67108863&l;if(0===c&&s<e.length&&e!==this)for(;s<e.length;s++)this.words[s]=e.words[s];return this.length=Math.max(this.length,s),e!==this&&(this.negative=1),this.strip()},s.prototype.sub=function(t){return this.clone().isub(t)};var m=function(t,l,e){var i,n,c,s=t.words,d=l.words,a=e.words,u=0,o=0|s[0],r=8191&o,b=o>>>13,h=0|s[1],Z=8191&h,m=h>>>13,y=0|s[2],p=8191&y,W=y>>>13,G=0|s[3],X=8191&G,Y=G>>>13,N=0|s[4],V=8191&N,M=N>>>13,L=0|s[5],I=8191&L,w=L>>>13,f=0|s[6],R=8191&f,T=f>>>13,z=0|s[7],x=8191&z,S=z>>>13,k=0|s[8],C=8191&k,J=k>>>13,g=0|s[9],F=8191&g,j=g>>>13,v=0|d[0],D=8191&v,U=v>>>13,O=0|d[1],K=8191&O,E=O>>>13,H=0|d[2],Q=8191&H,B=H>>>13,P=0|d[3],A=8191&P,_=P>>>13,q=0|d[4],$=8191&q,tt=q>>>13,lt=0|d[5],et=8191&lt,it=lt>>>13,nt=0|d[6],ct=8191&nt,st=nt>>>13,dt=0|d[7],at=8191&dt,ut=dt>>>13,ot=0|d[8],rt=8191&ot,bt=ot>>>13,ht=0|d[9],Zt=8191&ht,mt=ht>>>13;e.negative=t.negative^l.negative,e.length=19,i=Math.imul(r,D),n=Math.imul(r,U),n=n+Math.imul(b,D)|0,c=Math.imul(b,U);var yt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Z,D),n=Math.imul(Z,U),n=n+Math.imul(m,D)|0,c=Math.imul(m,U),i=i+Math.imul(r,K)|0,n=n+Math.imul(r,E)|0,n=n+Math.imul(b,K)|0,c=c+Math.imul(b,E)|0;var pt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,D),n=Math.imul(p,U),n=n+Math.imul(W,D)|0,c=Math.imul(W,U),i=i+Math.imul(Z,K)|0,n=n+Math.imul(Z,E)|0,n=n+Math.imul(m,K)|0,c=c+Math.imul(m,E)|0,i=i+Math.imul(r,Q)|0,n=n+Math.imul(r,B)|0,n=n+Math.imul(b,Q)|0,c=c+Math.imul(b,B)|0;var Wt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,i=Math.imul(X,D),n=Math.imul(X,U),n=n+Math.imul(Y,D)|0,c=Math.imul(Y,U),i=i+Math.imul(p,K)|0,n=n+Math.imul(p,E)|0,n=n+Math.imul(W,K)|0,c=c+Math.imul(W,E)|0,i=i+Math.imul(Z,Q)|0,n=n+Math.imul(Z,B)|0,n=n+Math.imul(m,Q)|0,c=c+Math.imul(m,B)|0,i=i+Math.imul(r,A)|0,n=n+Math.imul(r,_)|0,n=n+Math.imul(b,A)|0,c=c+Math.imul(b,_)|0;var Gt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(V,D),n=Math.imul(V,U),n=n+Math.imul(M,D)|0,c=Math.imul(M,U),i=i+Math.imul(X,K)|0,n=n+Math.imul(X,E)|0,n=n+Math.imul(Y,K)|0,c=c+Math.imul(Y,E)|0,i=i+Math.imul(p,Q)|0,n=n+Math.imul(p,B)|0,n=n+Math.imul(W,Q)|0,c=c+Math.imul(W,B)|0,i=i+Math.imul(Z,A)|0,n=n+Math.imul(Z,_)|0,n=n+Math.imul(m,A)|0,c=c+Math.imul(m,_)|0,i=i+Math.imul(r,$)|0,n=n+Math.imul(r,tt)|0,n=n+Math.imul(b,$)|0,c=c+Math.imul(b,tt)|0;var Xt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,i=Math.imul(I,D),n=Math.imul(I,U),n=n+Math.imul(w,D)|0,c=Math.imul(w,U),i=i+Math.imul(V,K)|0,n=n+Math.imul(V,E)|0,n=n+Math.imul(M,K)|0,c=c+Math.imul(M,E)|0,i=i+Math.imul(X,Q)|0,n=n+Math.imul(X,B)|0,n=n+Math.imul(Y,Q)|0,c=c+Math.imul(Y,B)|0,i=i+Math.imul(p,A)|0,n=n+Math.imul(p,_)|0,n=n+Math.imul(W,A)|0,c=c+Math.imul(W,_)|0,i=i+Math.imul(Z,$)|0,n=n+Math.imul(Z,tt)|0,n=n+Math.imul(m,$)|0,c=c+Math.imul(m,tt)|0,i=i+Math.imul(r,et)|0,n=n+Math.imul(r,it)|0,n=n+Math.imul(b,et)|0,c=c+Math.imul(b,it)|0;var Yt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(R,D),n=Math.imul(R,U),n=n+Math.imul(T,D)|0,c=Math.imul(T,U),i=i+Math.imul(I,K)|0,n=n+Math.imul(I,E)|0,n=n+Math.imul(w,K)|0,c=c+Math.imul(w,E)|0,i=i+Math.imul(V,Q)|0,n=n+Math.imul(V,B)|0,n=n+Math.imul(M,Q)|0,c=c+Math.imul(M,B)|0,i=i+Math.imul(X,A)|0,n=n+Math.imul(X,_)|0,n=n+Math.imul(Y,A)|0,c=c+Math.imul(Y,_)|0,i=i+Math.imul(p,$)|0,n=n+Math.imul(p,tt)|0,n=n+Math.imul(W,$)|0,c=c+Math.imul(W,tt)|0,i=i+Math.imul(Z,et)|0,n=n+Math.imul(Z,it)|0,n=n+Math.imul(m,et)|0,c=c+Math.imul(m,it)|0,i=i+Math.imul(r,ct)|0,n=n+Math.imul(r,st)|0,n=n+Math.imul(b,ct)|0,c=c+Math.imul(b,st)|0;var Nt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(x,D),n=Math.imul(x,U),n=n+Math.imul(S,D)|0,c=Math.imul(S,U),i=i+Math.imul(R,K)|0,n=n+Math.imul(R,E)|0,n=n+Math.imul(T,K)|0,c=c+Math.imul(T,E)|0,i=i+Math.imul(I,Q)|0,n=n+Math.imul(I,B)|0,n=n+Math.imul(w,Q)|0,c=c+Math.imul(w,B)|0,i=i+Math.imul(V,A)|0,n=n+Math.imul(V,_)|0,n=n+Math.imul(M,A)|0,c=c+Math.imul(M,_)|0,i=i+Math.imul(X,$)|0,n=n+Math.imul(X,tt)|0,n=n+Math.imul(Y,$)|0,c=c+Math.imul(Y,tt)|0,i=i+Math.imul(p,et)|0,n=n+Math.imul(p,it)|0,n=n+Math.imul(W,et)|0,c=c+Math.imul(W,it)|0,i=i+Math.imul(Z,ct)|0,n=n+Math.imul(Z,st)|0,n=n+Math.imul(m,ct)|0,c=c+Math.imul(m,st)|0,i=i+Math.imul(r,at)|0,n=n+Math.imul(r,ut)|0,n=n+Math.imul(b,at)|0,c=c+Math.imul(b,ut)|0;var Vt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,i=Math.imul(C,D),n=Math.imul(C,U),n=n+Math.imul(J,D)|0,c=Math.imul(J,U),i=i+Math.imul(x,K)|0,n=n+Math.imul(x,E)|0,n=n+Math.imul(S,K)|0,c=c+Math.imul(S,E)|0,i=i+Math.imul(R,Q)|0,n=n+Math.imul(R,B)|0,n=n+Math.imul(T,Q)|0,c=c+Math.imul(T,B)|0,i=i+Math.imul(I,A)|0,n=n+Math.imul(I,_)|0,n=n+Math.imul(w,A)|0,c=c+Math.imul(w,_)|0,i=i+Math.imul(V,$)|0,n=n+Math.imul(V,tt)|0,n=n+Math.imul(M,$)|0,c=c+Math.imul(M,tt)|0,i=i+Math.imul(X,et)|0,n=n+Math.imul(X,it)|0,n=n+Math.imul(Y,et)|0,c=c+Math.imul(Y,it)|0,i=i+Math.imul(p,ct)|0,n=n+Math.imul(p,st)|0,n=n+Math.imul(W,ct)|0,c=c+Math.imul(W,st)|0,i=i+Math.imul(Z,at)|0,n=n+Math.imul(Z,ut)|0,n=n+Math.imul(m,at)|0,c=c+Math.imul(m,ut)|0,i=i+Math.imul(r,rt)|0,n=n+Math.imul(r,bt)|0,n=n+Math.imul(b,rt)|0,c=c+Math.imul(b,bt)|0;var Mt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(F,D),n=Math.imul(F,U),n=n+Math.imul(j,D)|0,c=Math.imul(j,U),i=i+Math.imul(C,K)|0,n=n+Math.imul(C,E)|0,n=n+Math.imul(J,K)|0,c=c+Math.imul(J,E)|0,i=i+Math.imul(x,Q)|0,n=n+Math.imul(x,B)|0,n=n+Math.imul(S,Q)|0,c=c+Math.imul(S,B)|0,i=i+Math.imul(R,A)|0,n=n+Math.imul(R,_)|0,n=n+Math.imul(T,A)|0,c=c+Math.imul(T,_)|0,i=i+Math.imul(I,$)|0,n=n+Math.imul(I,tt)|0,n=n+Math.imul(w,$)|0,c=c+Math.imul(w,tt)|0,i=i+Math.imul(V,et)|0,n=n+Math.imul(V,it)|0,n=n+Math.imul(M,et)|0,c=c+Math.imul(M,it)|0,i=i+Math.imul(X,ct)|0,n=n+Math.imul(X,st)|0,n=n+Math.imul(Y,ct)|0,c=c+Math.imul(Y,st)|0,i=i+Math.imul(p,at)|0,n=n+Math.imul(p,ut)|0,n=n+Math.imul(W,at)|0,c=c+Math.imul(W,ut)|0,i=i+Math.imul(Z,rt)|0,n=n+Math.imul(Z,bt)|0,n=n+Math.imul(m,rt)|0,c=c+Math.imul(m,bt)|0,i=i+Math.imul(r,Zt)|0,n=n+Math.imul(r,mt)|0,n=n+Math.imul(b,Zt)|0,c=c+Math.imul(b,mt)|0;var Lt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(F,K),n=Math.imul(F,E),n=n+Math.imul(j,K)|0,c=Math.imul(j,E),i=i+Math.imul(C,Q)|0,n=n+Math.imul(C,B)|0,n=n+Math.imul(J,Q)|0,c=c+Math.imul(J,B)|0,i=i+Math.imul(x,A)|0,n=n+Math.imul(x,_)|0,n=n+Math.imul(S,A)|0,c=c+Math.imul(S,_)|0,i=i+Math.imul(R,$)|0,n=n+Math.imul(R,tt)|0,n=n+Math.imul(T,$)|0,c=c+Math.imul(T,tt)|0,i=i+Math.imul(I,et)|0,n=n+Math.imul(I,it)|0,n=n+Math.imul(w,et)|0,c=c+Math.imul(w,it)|0,i=i+Math.imul(V,ct)|0,n=n+Math.imul(V,st)|0,n=n+Math.imul(M,ct)|0,c=c+Math.imul(M,st)|0,i=i+Math.imul(X,at)|0,n=n+Math.imul(X,ut)|0,n=n+Math.imul(Y,at)|0,c=c+Math.imul(Y,ut)|0,i=i+Math.imul(p,rt)|0,n=n+Math.imul(p,bt)|0,n=n+Math.imul(W,rt)|0,c=c+Math.imul(W,bt)|0,i=i+Math.imul(Z,Zt)|0,n=n+Math.imul(Z,mt)|0,n=n+Math.imul(m,Zt)|0,c=c+Math.imul(m,mt)|0;var It=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Q),n=Math.imul(F,B),n=n+Math.imul(j,Q)|0,c=Math.imul(j,B),i=i+Math.imul(C,A)|0,n=n+Math.imul(C,_)|0,n=n+Math.imul(J,A)|0,c=c+Math.imul(J,_)|0,i=i+Math.imul(x,$)|0,n=n+Math.imul(x,tt)|0,n=n+Math.imul(S,$)|0,c=c+Math.imul(S,tt)|0,i=i+Math.imul(R,et)|0,n=n+Math.imul(R,it)|0,n=n+Math.imul(T,et)|0,c=c+Math.imul(T,it)|0,i=i+Math.imul(I,ct)|0,n=n+Math.imul(I,st)|0,n=n+Math.imul(w,ct)|0,c=c+Math.imul(w,st)|0,i=i+Math.imul(V,at)|0,n=n+Math.imul(V,ut)|0,n=n+Math.imul(M,at)|0,c=c+Math.imul(M,ut)|0,i=i+Math.imul(X,rt)|0,n=n+Math.imul(X,bt)|0,n=n+Math.imul(Y,rt)|0,c=c+Math.imul(Y,bt)|0,i=i+Math.imul(p,Zt)|0,n=n+Math.imul(p,mt)|0,n=n+Math.imul(W,Zt)|0,c=c+Math.imul(W,mt)|0;var wt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(F,A),n=Math.imul(F,_),n=n+Math.imul(j,A)|0,c=Math.imul(j,_),i=i+Math.imul(C,$)|0,n=n+Math.imul(C,tt)|0,n=n+Math.imul(J,$)|0,c=c+Math.imul(J,tt)|0,i=i+Math.imul(x,et)|0,n=n+Math.imul(x,it)|0,n=n+Math.imul(S,et)|0,c=c+Math.imul(S,it)|0,i=i+Math.imul(R,ct)|0,n=n+Math.imul(R,st)|0,n=n+Math.imul(T,ct)|0,c=c+Math.imul(T,st)|0,i=i+Math.imul(I,at)|0,n=n+Math.imul(I,ut)|0,n=n+Math.imul(w,at)|0,c=c+Math.imul(w,ut)|0,i=i+Math.imul(V,rt)|0,n=n+Math.imul(V,bt)|0,n=n+Math.imul(M,rt)|0,c=c+Math.imul(M,bt)|0,i=i+Math.imul(X,Zt)|0,n=n+Math.imul(X,mt)|0,n=n+Math.imul(Y,Zt)|0,c=c+Math.imul(Y,mt)|0;var ft=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(ft>>>26)|0,ft&=67108863,i=Math.imul(F,$),n=Math.imul(F,tt),n=n+Math.imul(j,$)|0,c=Math.imul(j,tt),i=i+Math.imul(C,et)|0,n=n+Math.imul(C,it)|0,n=n+Math.imul(J,et)|0,c=c+Math.imul(J,it)|0,i=i+Math.imul(x,ct)|0,n=n+Math.imul(x,st)|0,n=n+Math.imul(S,ct)|0,c=c+Math.imul(S,st)|0,i=i+Math.imul(R,at)|0,n=n+Math.imul(R,ut)|0,n=n+Math.imul(T,at)|0,c=c+Math.imul(T,ut)|0,i=i+Math.imul(I,rt)|0,n=n+Math.imul(I,bt)|0,n=n+Math.imul(w,rt)|0,c=c+Math.imul(w,bt)|0,i=i+Math.imul(V,Zt)|0,n=n+Math.imul(V,mt)|0,n=n+Math.imul(M,Zt)|0,c=c+Math.imul(M,mt)|0;var Rt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,et),n=Math.imul(F,it),n=n+Math.imul(j,et)|0,c=Math.imul(j,it),i=i+Math.imul(C,ct)|0,n=n+Math.imul(C,st)|0,n=n+Math.imul(J,ct)|0,c=c+Math.imul(J,st)|0,i=i+Math.imul(x,at)|0,n=n+Math.imul(x,ut)|0,n=n+Math.imul(S,at)|0,c=c+Math.imul(S,ut)|0,i=i+Math.imul(R,rt)|0,n=n+Math.imul(R,bt)|0,n=n+Math.imul(T,rt)|0,c=c+Math.imul(T,bt)|0,i=i+Math.imul(I,Zt)|0,n=n+Math.imul(I,mt)|0,n=n+Math.imul(w,Zt)|0,c=c+Math.imul(w,mt)|0;var Tt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(F,ct),n=Math.imul(F,st),n=n+Math.imul(j,ct)|0,c=Math.imul(j,st),i=i+Math.imul(C,at)|0,n=n+Math.imul(C,ut)|0,n=n+Math.imul(J,at)|0,c=c+Math.imul(J,ut)|0,i=i+Math.imul(x,rt)|0,n=n+Math.imul(x,bt)|0,n=n+Math.imul(S,rt)|0,c=c+Math.imul(S,bt)|0,i=i+Math.imul(R,Zt)|0,n=n+Math.imul(R,mt)|0,n=n+Math.imul(T,Zt)|0,c=c+Math.imul(T,mt)|0;var zt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(zt>>>26)|0,zt&=67108863,i=Math.imul(F,at),n=Math.imul(F,ut),n=n+Math.imul(j,at)|0,c=Math.imul(j,ut),i=i+Math.imul(C,rt)|0,n=n+Math.imul(C,bt)|0,n=n+Math.imul(J,rt)|0,c=c+Math.imul(J,bt)|0,i=i+Math.imul(x,Zt)|0,n=n+Math.imul(x,mt)|0,n=n+Math.imul(S,Zt)|0,c=c+Math.imul(S,mt)|0;var xt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(F,rt),n=Math.imul(F,bt),n=n+Math.imul(j,rt)|0,c=Math.imul(j,bt),i=i+Math.imul(C,Zt)|0,n=n+Math.imul(C,mt)|0,n=n+Math.imul(J,Zt)|0,c=c+Math.imul(J,mt)|0;var St=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(F,Zt),n=Math.imul(F,mt),n=n+Math.imul(j,Zt)|0,c=Math.imul(j,mt);var kt=(u+i|0)+((8191&n)<<13)|0;return u=(c+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,a[0]=yt,a[1]=pt,a[2]=Wt,a[3]=Gt,a[4]=Xt,a[5]=Yt,a[6]=Nt,a[7]=Vt,a[8]=Mt,a[9]=Lt,a[10]=It,a[11]=wt,a[12]=ft,a[13]=Rt,a[14]=Tt,a[15]=zt,a[16]=xt,a[17]=St,a[18]=kt,0!==u&&(a[19]=u,e.length++),e};function y(t,l,e){e.negative=l.negative^t.negative,e.length=t.length+l.length;for(var i=0,n=0,c=0;c<e.length-1;c++){var s=n;n=0;for(var d=67108863&i,a=Math.min(c,l.length-1),u=Math.max(0,c-t.length+1);u<=a;u++){var o=c-u,r=0|t.words[o],b=0|l.words[u],h=r*b,Z=67108863&h;s=s+(h/67108864|0)|0,Z=Z+d|0,d=67108863&Z,s=s+(Z>>>26)|0,n+=s>>>26,s&=67108863}e.words[c]=d,i=s,s=n}return 0!==i?e.words[c]=i:e.length--,e.strip()}function p(t,l,e){var i=new W;return i.mulp(t,l,e)}function W(t,l){this.x=t,this.y=l}Math.imul||(m=Z),s.prototype.mulTo=function(t,l){var e,i=this.length+t.length;return e=10===this.length&&10===t.length?m(this,t,l):i<63?Z(this,t,l):i<1024?y(this,t,l):p(this,t,l),e},W.prototype.makeRBT=function(t){for(var l=new Array(t),e=s.prototype._countBits(t)-1,i=0;i<t;i++)l[i]=this.revBin(i,e,t);return l},W.prototype.revBin=function(t,l,e){if(0===t||t===e-1)return t;for(var i=0,n=0;n<l;n++)i|=(1&t)<<l-n-1,t>>=1;return i},W.prototype.permute=function(t,l,e,i,n,c){for(var s=0;s<c;s++)i[s]=l[t[s]],n[s]=e[t[s]]},W.prototype.transform=function(t,l,e,i,n,c){this.permute(c,t,l,e,i,n);for(var s=1;s<n;s<<=1)for(var d=s<<1,a=Math.cos(2*Math.PI/d),u=Math.sin(2*Math.PI/d),o=0;o<n;o+=d)for(var r=a,b=u,h=0;h<s;h++){var Z=e[o+h],m=i[o+h],y=e[o+h+s],p=i[o+h+s],W=r*y-b*p;p=r*p+b*y,y=W,e[o+h]=Z+y,i[o+h]=m+p,e[o+h+s]=Z-y,i[o+h+s]=m-p,h!==d&&(W=a*r-u*b,b=a*b+u*r,r=W)}},W.prototype.guessLen13b=function(t,l){var e=1|Math.max(l,t),i=1&e,n=0;for(e=e/2|0;e;e>>>=1)n++;return 1<<n+1+i},W.prototype.conjugate=function(t,l,e){if(!(e<=1))for(var i=0;i<e/2;i++){var n=t[i];t[i]=t[e-i-1],t[e-i-1]=n,n=l[i],l[i]=-l[e-i-1],l[e-i-1]=-n}},W.prototype.normalize13b=function(t,l){for(var e=0,i=0;i<l/2;i++){var n=8192*Math.round(t[2*i+1]/l)+Math.round(t[2*i]/l)+e;t[i]=67108863&n,e=n<67108864?0:n/67108864|0}return t},W.prototype.convert13b=function(t,l,e,i){for(var c=0,s=0;s<l;s++)c+=0|t[s],e[2*s]=8191&c,c>>>=13,e[2*s+1]=8191&c,c>>>=13;for(s=2*l;s<i;++s)e[s]=0;n(0===c),n(0===(-8192&c))},W.prototype.stub=function(t){for(var l=new Array(t),e=0;e<t;e++)l[e]=0;return l},W.prototype.mulp=function(t,l,e){var i=2*this.guessLen13b(t.length,l.length),n=this.makeRBT(i),c=this.stub(i),s=new Array(i),d=new Array(i),a=new Array(i),u=new Array(i),o=new Array(i),r=new Array(i),b=e.words;b.length=i,this.convert13b(t.words,t.length,s,i),this.convert13b(l.words,l.length,u,i),this.transform(s,c,d,a,i,n),this.transform(u,c,o,r,i,n);for(var h=0;h<i;h++){var Z=d[h]*o[h]-a[h]*r[h];a[h]=d[h]*r[h]+a[h]*o[h],d[h]=Z}return this.conjugate(d,a,i),this.transform(d,a,b,c,i,n),this.conjugate(b,c,i),this.normalize13b(b,i),e.negative=t.negative^l.negative,e.length=t.length+l.length,e.strip()},s.prototype.mul=function(t){var l=new s(null);return l.words=new Array(this.length+t.length),this.mulTo(t,l)},s.prototype.mulf=function(t){var l=new s(null);return l.words=new Array(this.length+t.length),p(this,t,l)},s.prototype.imul=function(t){return this.clone().mulTo(t,this)},s.prototype.imuln=function(t){n("number"===typeof t),n(t<67108864);for(var l=0,e=0;e<this.length;e++){var i=(0|this.words[e])*t,c=(67108863&i)+(67108863&l);l>>=26,l+=i/67108864|0,l+=c>>>26,this.words[e]=67108863&c}return 0!==l&&(this.words[e]=l,this.length++),this},s.prototype.muln=function(t){return this.clone().imuln(t)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(t){var l=h(t);if(0===l.length)return new s(1);for(var e=this,i=0;i<l.length;i++,e=e.sqr())if(0!==l[i])break;if(++i<l.length)for(var n=e.sqr();i<l.length;i++,n=n.sqr())0!==l[i]&&(e=e.mul(n));return e},s.prototype.iushln=function(t){n("number"===typeof t&&t>=0);var l,e=t%26,i=(t-e)/26,c=67108863>>>26-e<<26-e;if(0!==e){var s=0;for(l=0;l<this.length;l++){var d=this.words[l]&c,a=(0|this.words[l])-d<<e;this.words[l]=a|s,s=d>>>26-e}s&&(this.words[l]=s,this.length++)}if(0!==i){for(l=this.length-1;l>=0;l--)this.words[l+i]=this.words[l];for(l=0;l<i;l++)this.words[l]=0;this.length+=i}return this.strip()},s.prototype.ishln=function(t){return n(0===this.negative),this.iushln(t)},s.prototype.iushrn=function(t,l,e){var i;n("number"===typeof t&&t>=0),i=l?(l-l%26)/26:0;var c=t%26,s=Math.min((t-c)/26,this.length),d=67108863^67108863>>>c<<c,a=e;if(i-=s,i=Math.max(0,i),a){for(var u=0;u<s;u++)a.words[u]=this.words[u];a.length=s}if(0===s);else if(this.length>s)for(this.length-=s,u=0;u<this.length;u++)this.words[u]=this.words[u+s];else this.words[0]=0,this.length=1;var o=0;for(u=this.length-1;u>=0&&(0!==o||u>=i);u--){var r=0|this.words[u];this.words[u]=o<<26-c|r>>>c,o=r&d}return a&&0!==o&&(a.words[a.length++]=o),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},s.prototype.ishrn=function(t,l,e){return n(0===this.negative),this.iushrn(t,l,e)},s.prototype.shln=function(t){return this.clone().ishln(t)},s.prototype.ushln=function(t){return this.clone().iushln(t)},s.prototype.shrn=function(t){return this.clone().ishrn(t)},s.prototype.ushrn=function(t){return this.clone().iushrn(t)},s.prototype.testn=function(t){n("number"===typeof t&&t>=0);var l=t%26,e=(t-l)/26,i=1<<l;if(this.length<=e)return!1;var c=this.words[e];return!!(c&i)},s.prototype.imaskn=function(t){n("number"===typeof t&&t>=0);var l=t%26,e=(t-l)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=e)return this;if(0!==l&&e++,this.length=Math.min(e,this.length),0!==l){var i=67108863^67108863>>>l<<l;this.words[this.length-1]&=i}return this.strip()},s.prototype.maskn=function(t){return this.clone().imaskn(t)},s.prototype.iaddn=function(t){return n("number"===typeof t),n(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},s.prototype._iaddn=function(t){this.words[0]+=t;for(var l=0;l<this.length&&this.words[l]>=67108864;l++)this.words[l]-=67108864,l===this.length-1?this.words[l+1]=1:this.words[l+1]++;return this.length=Math.max(this.length,l+1),this},s.prototype.isubn=function(t){if(n("number"===typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var l=0;l<this.length&&this.words[l]<0;l++)this.words[l]+=67108864,this.words[l+1]-=1;return this.strip()},s.prototype.addn=function(t){return this.clone().iaddn(t)},s.prototype.subn=function(t){return this.clone().isubn(t)},s.prototype.iabs=function(){return this.negative=0,this},s.prototype.abs=function(){return this.clone().iabs()},s.prototype._ishlnsubmul=function(t,l,e){var i,c,s=t.length+e;this._expand(s);var d=0;for(i=0;i<t.length;i++){c=(0|this.words[i+e])+d;var a=(0|t.words[i])*l;c-=67108863&a,d=(c>>26)-(a/67108864|0),this.words[i+e]=67108863&c}for(;i<this.length-e;i++)c=(0|this.words[i+e])+d,d=c>>26,this.words[i+e]=67108863&c;if(0===d)return this.strip();for(n(-1===d),d=0,i=0;i<this.length;i++)c=-(0|this.words[i])+d,d=c>>26,this.words[i]=67108863&c;return this.negative=1,this.strip()},s.prototype._wordDiv=function(t,l){var e=this.length-t.length,i=this.clone(),n=t,c=0|n.words[n.length-1],d=this._countBits(c);e=26-d,0!==e&&(n=n.ushln(e),i.iushln(e),c=0|n.words[n.length-1]);var a,u=i.length-n.length;if("mod"!==l){a=new s(null),a.length=u+1,a.words=new Array(a.length);for(var o=0;o<a.length;o++)a.words[o]=0}var r=i.clone()._ishlnsubmul(n,1,u);0===r.negative&&(i=r,a&&(a.words[u]=1));for(var b=u-1;b>=0;b--){var h=67108864*(0|i.words[n.length+b])+(0|i.words[n.length+b-1]);h=Math.min(h/c|0,67108863),i._ishlnsubmul(n,h,b);while(0!==i.negative)h--,i.negative=0,i._ishlnsubmul(n,1,b),i.isZero()||(i.negative^=1);a&&(a.words[b]=h)}return a&&a.strip(),i.strip(),"div"!==l&&0!==e&&i.iushrn(e),{div:a||null,mod:i}},s.prototype.divmod=function(t,l,e){return n(!t.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===t.negative?(d=this.neg().divmod(t,l),"mod"!==l&&(i=d.div.neg()),"div"!==l&&(c=d.mod.neg(),e&&0!==c.negative&&c.iadd(t)),{div:i,mod:c}):0===this.negative&&0!==t.negative?(d=this.divmod(t.neg(),l),"mod"!==l&&(i=d.div.neg()),{div:i,mod:d.mod}):0!==(this.negative&t.negative)?(d=this.neg().divmod(t.neg(),l),"div"!==l&&(c=d.mod.neg(),e&&0!==c.negative&&c.isub(t)),{div:d.div,mod:c}):t.length>this.length||this.cmp(t)<0?{div:new s(0),mod:this}:1===t.length?"div"===l?{div:this.divn(t.words[0]),mod:null}:"mod"===l?{div:null,mod:new s(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new s(this.modn(t.words[0]))}:this._wordDiv(t,l);var i,c,d},s.prototype.div=function(t){return this.divmod(t,"div",!1).div},s.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},s.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},s.prototype.divRound=function(t){var l=this.divmod(t);if(l.mod.isZero())return l.div;var e=0!==l.div.negative?l.mod.isub(t):l.mod,i=t.ushrn(1),n=t.andln(1),c=e.cmp(i);return c<0||1===n&&0===c?l.div:0!==l.div.negative?l.div.isubn(1):l.div.iaddn(1)},s.prototype.modn=function(t){n(t<=67108863);for(var l=(1<<26)%t,e=0,i=this.length-1;i>=0;i--)e=(l*e+(0|this.words[i]))%t;return e},s.prototype.idivn=function(t){n(t<=67108863);for(var l=0,e=this.length-1;e>=0;e--){var i=(0|this.words[e])+67108864*l;this.words[e]=i/t|0,l=i%t}return this.strip()},s.prototype.divn=function(t){return this.clone().idivn(t)},s.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var l=this,e=t.clone();l=0!==l.negative?l.umod(t):l.clone();var i=new s(1),c=new s(0),d=new s(0),a=new s(1),u=0;while(l.isEven()&&e.isEven())l.iushrn(1),e.iushrn(1),++u;var o=e.clone(),r=l.clone();while(!l.isZero()){for(var b=0,h=1;0===(l.words[0]&h)&&b<26;++b,h<<=1);if(b>0){l.iushrn(b);while(b-- >0)(i.isOdd()||c.isOdd())&&(i.iadd(o),c.isub(r)),i.iushrn(1),c.iushrn(1)}for(var Z=0,m=1;0===(e.words[0]&m)&&Z<26;++Z,m<<=1);if(Z>0){e.iushrn(Z);while(Z-- >0)(d.isOdd()||a.isOdd())&&(d.iadd(o),a.isub(r)),d.iushrn(1),a.iushrn(1)}l.cmp(e)>=0?(l.isub(e),i.isub(d),c.isub(a)):(e.isub(l),d.isub(i),a.isub(c))}return{a:d,b:a,gcd:e.iushln(u)}},s.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var l=this,e=t.clone();l=0!==l.negative?l.umod(t):l.clone();var i,c=new s(1),d=new s(0),a=e.clone();while(l.cmpn(1)>0&&e.cmpn(1)>0){for(var u=0,o=1;0===(l.words[0]&o)&&u<26;++u,o<<=1);if(u>0){l.iushrn(u);while(u-- >0)c.isOdd()&&c.iadd(a),c.iushrn(1)}for(var r=0,b=1;0===(e.words[0]&b)&&r<26;++r,b<<=1);if(r>0){e.iushrn(r);while(r-- >0)d.isOdd()&&d.iadd(a),d.iushrn(1)}l.cmp(e)>=0?(l.isub(e),c.isub(d)):(e.isub(l),d.isub(c))}return i=0===l.cmpn(1)?c:d,i.cmpn(0)<0&&i.iadd(t),i},s.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var l=this.clone(),e=t.clone();l.negative=0,e.negative=0;for(var i=0;l.isEven()&&e.isEven();i++)l.iushrn(1),e.iushrn(1);do{while(l.isEven())l.iushrn(1);while(e.isEven())e.iushrn(1);var n=l.cmp(e);if(n<0){var c=l;l=e,e=c}else if(0===n||0===e.cmpn(1))break;l.isub(e)}while(1);return e.iushln(i)},s.prototype.invm=function(t){return this.egcd(t).a.umod(t)},s.prototype.isEven=function(){return 0===(1&this.words[0])},s.prototype.isOdd=function(){return 1===(1&this.words[0])},s.prototype.andln=function(t){return this.words[0]&t},s.prototype.bincn=function(t){n("number"===typeof t);var l=t%26,e=(t-l)/26,i=1<<l;if(this.length<=e)return this._expand(e+1),this.words[e]|=i,this;for(var c=i,s=e;0!==c&&s<this.length;s++){var d=0|this.words[s];d+=c,c=d>>>26,d&=67108863,this.words[s]=d}return 0!==c&&(this.words[s]=c,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(t){var l,e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;if(this.strip(),this.length>1)l=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];l=i===t?0:i<t?-1:1}return 0!==this.negative?0|-l:l},s.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var l=this.ucmp(t);return 0!==this.negative?0|-l:l},s.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var l=0,e=this.length-1;e>=0;e--){var i=0|this.words[e],n=0|t.words[e];if(i!==n){i<n?l=-1:i>n&&(l=1);break}}return l},s.prototype.gtn=function(t){return 1===this.cmpn(t)},s.prototype.gt=function(t){return 1===this.cmp(t)},s.prototype.gten=function(t){return this.cmpn(t)>=0},s.prototype.gte=function(t){return this.cmp(t)>=0},s.prototype.ltn=function(t){return-1===this.cmpn(t)},s.prototype.lt=function(t){return-1===this.cmp(t)},s.prototype.lten=function(t){return this.cmpn(t)<=0},s.prototype.lte=function(t){return this.cmp(t)<=0},s.prototype.eqn=function(t){return 0===this.cmpn(t)},s.prototype.eq=function(t){return 0===this.cmp(t)},s.red=function(t){return new L(t)},s.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(t){return this.red=t,this},s.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},s.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},s.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},s.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},s.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},s.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},s.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},s.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var G={k256:null,p224:null,p192:null,p25519:null};function X(t,l){this.name=t,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function Y(){X.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function N(){X.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function V(){X.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){X.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function L(t){if("string"===typeof t){var l=s._prime(t);this.m=l.p,this.prime=l}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){L.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}X.prototype._tmp=function(){var t=new s(null);return t.words=new Array(Math.ceil(this.n/13)),t},X.prototype.ireduce=function(t){var l,e=t;do{this.split(e,this.tmp),e=this.imulK(e),e=e.iadd(this.tmp),l=e.bitLength()}while(l>this.n);var i=l<this.n?-1:e.ucmp(this.p);return 0===i?(e.words[0]=0,e.length=1):i>0?e.isub(this.p):void 0!==e.strip?e.strip():e._strip(),e},X.prototype.split=function(t,l){t.iushrn(this.n,0,l)},X.prototype.imulK=function(t){return t.imul(this.k)},c(Y,X),Y.prototype.split=function(t,l){for(var e=4194303,i=Math.min(t.length,9),n=0;n<i;n++)l.words[n]=t.words[n];if(l.length=i,t.length<=9)return t.words[0]=0,void(t.length=1);var c=t.words[9];for(l.words[l.length++]=c&e,n=10;n<t.length;n++){var s=0|t.words[n];t.words[n-10]=(s&e)<<4|c>>>22,c=s}c>>>=22,t.words[n-10]=c,0===c&&t.length>10?t.length-=10:t.length-=9},Y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var l=0,e=0;e<t.length;e++){var i=0|t.words[e];l+=977*i,t.words[e]=67108863&l,l=64*i+(l/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},c(N,X),c(V,X),c(M,X),M.prototype.imulK=function(t){for(var l=0,e=0;e<t.length;e++){var i=19*(0|t.words[e])+l,n=67108863&i;i>>>=26,t.words[e]=n,l=i}return 0!==l&&(t.words[t.length++]=l),t},s._prime=function(t){if(G[t])return G[t];var l;if("k256"===t)l=new Y;else if("p224"===t)l=new N;else if("p192"===t)l=new V;else{if("p25519"!==t)throw new Error("Unknown prime "+t);l=new M}return G[t]=l,l},L.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},L.prototype._verify2=function(t,l){n(0===(t.negative|l.negative),"red works only with positives"),n(t.red&&t.red===l.red,"red works only with red numbers")},L.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},L.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},L.prototype.add=function(t,l){this._verify2(t,l);var e=t.add(l);return e.cmp(this.m)>=0&&e.isub(this.m),e._forceRed(this)},L.prototype.iadd=function(t,l){this._verify2(t,l);var e=t.iadd(l);return e.cmp(this.m)>=0&&e.isub(this.m),e},L.prototype.sub=function(t,l){this._verify2(t,l);var e=t.sub(l);return e.cmpn(0)<0&&e.iadd(this.m),e._forceRed(this)},L.prototype.isub=function(t,l){this._verify2(t,l);var e=t.isub(l);return e.cmpn(0)<0&&e.iadd(this.m),e},L.prototype.shl=function(t,l){return this._verify1(t),this.imod(t.ushln(l))},L.prototype.imul=function(t,l){return this._verify2(t,l),this.imod(t.imul(l))},L.prototype.mul=function(t,l){return this._verify2(t,l),this.imod(t.mul(l))},L.prototype.isqr=function(t){return this.imul(t,t.clone())},L.prototype.sqr=function(t){return this.mul(t,t)},L.prototype.sqrt=function(t){if(t.isZero())return t.clone();var l=this.m.andln(3);if(n(l%2===1),3===l){var e=this.m.add(new s(1)).iushrn(2);return this.pow(t,e)}var i=this.m.subn(1),c=0;while(!i.isZero()&&0===i.andln(1))c++,i.iushrn(1);n(!i.isZero());var d=new s(1).toRed(this),a=d.redNeg(),u=this.m.subn(1).iushrn(1),o=this.m.bitLength();o=new s(2*o*o).toRed(this);while(0!==this.pow(o,u).cmp(a))o.redIAdd(a);var r=this.pow(o,i),b=this.pow(t,i.addn(1).iushrn(1)),h=this.pow(t,i),Z=c;while(0!==h.cmp(d)){for(var m=h,y=0;0!==m.cmp(d);y++)m=m.redSqr();n(y<Z);var p=this.pow(r,new s(1).iushln(Z-y-1));b=b.redMul(p),r=p.redSqr(),h=h.redMul(r),Z=y}return b},L.prototype.invm=function(t){var l=t._invmp(this.m);return 0!==l.negative?(l.negative=0,this.imod(l).redNeg()):this.imod(l)},L.prototype.pow=function(t,l){if(l.isZero())return new s(1).toRed(this);if(0===l.cmpn(1))return t.clone();var e=4,i=new Array(1<<e);i[0]=new s(1).toRed(this),i[1]=t;for(var n=2;n<i.length;n++)i[n]=this.mul(i[n-1],t);var c=i[0],d=0,a=0,u=l.bitLength()%26;for(0===u&&(u=26),n=l.length-1;n>=0;n--){for(var o=l.words[n],r=u-1;r>=0;r--){var b=o>>r&1;c!==i[0]&&(c=this.sqr(c)),0!==b||0!==d?(d<<=1,d|=b,a++,(a===e||0===n&&0===r)&&(c=this.mul(c,i[d]),a=0,d=0)):a=0}u=26}return c},L.prototype.convertTo=function(t){var l=t.umod(this.m);return l===t?l.clone():l},L.prototype.convertFrom=function(t){var l=t.clone();return l.red=null,l},s.mont=function(t){return new I(t)},c(I,L),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var l=this.imod(t.mul(this.rinv));return l.red=null,l},I.prototype.imul=function(t,l){if(t.isZero()||l.isZero())return t.words[0]=0,t.length=1,t;var e=t.imul(l),i=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=e.isub(i).iushrn(this.shift),c=n;return n.cmp(this.m)>=0?c=n.isub(this.m):n.cmpn(0)<0&&(c=n.iadd(this.m)),c._forceRed(this)},I.prototype.mul=function(t,l){if(t.isZero()||l.isZero())return new s(0)._forceRed(this);var e=t.mul(l),i=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=e.isub(i).iushrn(this.shift),c=n;return n.cmp(this.m)>=0?c=n.isub(this.m):n.cmpn(0)<0&&(c=n.iadd(this.m)),c._forceRed(this)},I.prototype.invm=function(t){var l=this.imod(t._invmp(this.m).mul(this.r2));return l._forceRed(this)}})("undefined"===typeof l||l,void 0)},{buffer:185}],182:[function(t,l,e){"use strict";e.byteLength=o,e.toByteArray=b,e.fromByteArray=m;for(var i=[],n=[],c="undefined"!==typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,a=s.length;d<a;++d)i[d]=s[d],n[s.charCodeAt(d)]=d;function u(t){var l=t.length;if(l%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=t.indexOf("=");-1===e&&(e=l);var i=e===l?0:4-e%4;return[e,i]}function o(t){var l=u(t),e=l[0],i=l[1];return 3*(e+i)/4-i}function r(t,l,e){return 3*(l+e)/4-e}function b(t){var l,e,i=u(t),s=i[0],d=i[1],a=new c(r(t,s,d)),o=0,b=d>0?s-4:s;for(e=0;e<b;e+=4)l=n[t.charCodeAt(e)]<<18|n[t.charCodeAt(e+1)]<<12|n[t.charCodeAt(e+2)]<<6|n[t.charCodeAt(e+3)],a[o++]=l>>16&255,a[o++]=l>>8&255,a[o++]=255&l;return 2===d&&(l=n[t.charCodeAt(e)]<<2|n[t.charCodeAt(e+1)]>>4,a[o++]=255&l),1===d&&(l=n[t.charCodeAt(e)]<<10|n[t.charCodeAt(e+1)]<<4|n[t.charCodeAt(e+2)]>>2,a[o++]=l>>8&255,a[o++]=255&l),a}function h(t){return i[t>>18&63]+i[t>>12&63]+i[t>>6&63]+i[63&t]}function Z(t,l,e){for(var i,n=[],c=l;c<e;c+=3)i=(t[c]<<16&16711680)+(t[c+1]<<8&65280)+(255&t[c+2]),n.push(h(i));return n.join("")}function m(t){for(var l,e=t.length,n=e%3,c=[],s=16383,d=0,a=e-n;d<a;d+=s)c.push(Z(t,d,d+s>a?a:d+s));return 1===n?(l=t[e-1],c.push(i[l>>2]+i[l<<4&63]+"==")):2===n&&(l=(t[e-2]<<8)+t[e-1],c.push(i[l>>10]+i[l>>4&63]+i[l<<2&63]+"=")),c.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},{}],183:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}(function(l,e){function n(t,l){if(!t)throw new Error(l||"Assertion failed")}function c(t,l){t.super_=l;var e=function(){};e.prototype=l.prototype,t.prototype=new e,t.prototype.constructor=t}function s(t,l,e){if(s.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==l&&"be"!==l||(e=l,l=10),this._init(t||0,l||10,e||"be"))}var d;"object"===i(l)?l.exports=s:e.BN=s,s.BN=s,s.wordSize=26;try{d=t("buffer").Buffer}catch(T){}function a(t,l,e){for(var i=0,c=Math.min(t.length,e),s=0,d=l;d<c;d++){var a,u=t.charCodeAt(d)-48;i<<=4,a=u>=49&&u<=54?u-49+10:u>=17&&u<=22?u-17+10:u,i|=a,s|=a}return n(!(240&s),"Invalid character in "+t),i}function u(t,l,e,i){for(var c=0,s=0,d=Math.min(t.length,e),a=l;a<d;a++){var u=t.charCodeAt(a)-48;c*=i,s=u>=49?u-49+10:u>=17?u-17+10:u,n(u>=0&&s<i,"Invalid character"),c+=s}return c}function o(t,l){t.words=l.words,t.length=l.length,t.negative=l.negative,t.red=l.red}if(s.isBN=function(t){return t instanceof s||null!==t&&"object"===i(t)&&t.constructor.wordSize===s.wordSize&&Array.isArray(t.words)},s.max=function(t,l){return t.cmp(l)>0?t:l},s.min=function(t,l){return t.cmp(l)<0?t:l},s.prototype._init=function(t,l,e){if("number"===typeof t)return this._initNumber(t,l,e);if("object"===i(t))return this._initArray(t,l,e);"hex"===l&&(l=16),n(l===(0|l)&&l>=2&&l<=36),t=t.toString().replace(/\s+/g,"");var c=0;"-"===t[0]&&c++,16===l?this._parseHex(t,c):this._parseBase(t,l,c),"-"===t[0]&&(this.negative=1),this._strip(),"le"===e&&this._initArray(this.toArray(),l,e)},s.prototype._initNumber=function(t,l,e){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===e&&this._initArray(this.toArray(),l,e)},s.prototype._initArray=function(t,l,e){if(n("number"===typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var c,s,d=0;if("be"===e)for(i=t.length-1,c=0;i>=0;i-=3)s=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[c]|=s<<d&67108863,this.words[c+1]=s>>>26-d&67108863,d+=24,d>=26&&(d-=26,c++);else if("le"===e)for(i=0,c=0;i<t.length;i+=3)s=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[c]|=s<<d&67108863,this.words[c+1]=s>>>26-d&67108863,d+=24,d>=26&&(d-=26,c++);return this._strip()},s.prototype._parseHex=function(t,l){this.length=Math.ceil((t.length-l)/6),this.words=new Array(this.length);for(var e=0;e<this.length;e++)this.words[e]=0;var i,n,c=0;for(e=t.length-6,i=0;e>=l;e-=6)n=a(t,e,e+6),this.words[i]|=n<<c&67108863,this.words[i+1]|=n>>>26-c&4194303,c+=24,c>=26&&(c-=26,i++);e+6!==l&&(n=a(t,l,e+6),this.words[i]|=n<<c&67108863,this.words[i+1]|=n>>>26-c&4194303),this._strip()},s.prototype._parseBase=function(t,l,e){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=l)i++;i--,n=n/l|0;for(var c=t.length-e,s=c%i,d=Math.min(c,c-s)+e,a=0,o=e;o<d;o+=i)a=u(t,o,o+i,l),this.imuln(n),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a);if(0!==s){var r=1;for(a=u(t,o,t.length,l),o=0;o<s;o++)r*=l;this.imuln(r),this.words[0]+a<67108864?this.words[0]+=a:this._iaddn(a)}},s.prototype.copy=function(t){t.words=new Array(this.length);for(var l=0;l<this.length;l++)t.words[l]=this.words[l];t.length=this.length,t.negative=this.negative,t.red=this.red},s.prototype._move=function(t){o(t,this)},s.prototype.clone=function(){var t=new s(null);return this.copy(t),t},s.prototype._expand=function(t){while(this.length<t)this.words[this.length++]=0;return this},s.prototype._strip=function(){while(this.length>1&&0===this.words[this.length-1])this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!==typeof Symbol&&"function"===typeof Symbol.for)try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=r}catch(T){s.prototype.inspect=r}else s.prototype.inspect=r;function r(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],Z=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(t,l){var e;if(t=t||10,l=0|l||1,16===t||"hex"===t){e="";for(var i=0,c=0,s=0;s<this.length;s++){var d=this.words[s],a=(16777215&(d<<i|c)).toString(16);c=d>>>24-i&16777215,e=0!==c||s!==this.length-1?b[6-a.length]+a+e:a+e,i+=2,i>=26&&(i-=26,s--)}0!==c&&(e=c.toString(16)+e);while(e.length%l!==0)e="0"+e;return 0!==this.negative&&(e="-"+e),e}if(t===(0|t)&&t>=2&&t<=36){var u=h[t],o=Z[t];e="";var r=this.clone();r.negative=0;while(!r.isZero()){var m=r.modrn(o).toString(t);r=r.idivn(o),e=r.isZero()?m+e:b[u-m.length]+m+e}this.isZero()&&(e="0"+e);while(e.length%l!==0)e="0"+e;return 0!==this.negative&&(e="-"+e),e}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},s.prototype.toJSON=function(){return this.toString(16,2)},d&&(s.prototype.toBuffer=function(t,l){return this.toArrayLike(d,t,l)}),s.prototype.toArray=function(t,l){return this.toArrayLike(Array,t,l)};var m=function(t,l){return t.allocUnsafe?t.allocUnsafe(l):new t(l)};function y(t){for(var l=new Array(t.bitLength()),e=0;e<l.length;e++){var i=e/26|0,n=e%26;l[e]=t.words[i]>>>n&1}return l}function p(t,l,e){e.negative=l.negative^t.negative;var i=t.length+l.length|0;e.length=i,i=i-1|0;var n=0|t.words[0],c=0|l.words[0],s=n*c,d=67108863&s,a=s/67108864|0;e.words[0]=d;for(var u=1;u<i;u++){for(var o=a>>>26,r=67108863&a,b=Math.min(u,l.length-1),h=Math.max(0,u-t.length+1);h<=b;h++){var Z=u-h|0;n=0|t.words[Z],c=0|l.words[h],s=n*c+r,o+=s/67108864|0,r=67108863&s}e.words[u]=0|r,a=0|o}return 0!==a?e.words[u]=0|a:e.length--,e._strip()}s.prototype.toArrayLike=function(t,l,e){this._strip();var i=this.byteLength(),c=e||Math.max(1,i);n(i<=c,"byte array longer than desired length"),n(c>0,"Requested array length <= 0");var s=m(t,c),d="le"===l?"LE":"BE";return this["_toArrayLike"+d](s,i),s},s.prototype._toArrayLikeLE=function(t,l){for(var e=0,i=0,n=0,c=0;n<this.length;n++){var s=this.words[n]<<c|i;t[e++]=255&s,e<t.length&&(t[e++]=s>>8&255),e<t.length&&(t[e++]=s>>16&255),6===c?(e<t.length&&(t[e++]=s>>24&255),i=0,c=0):(i=s>>>24,c+=2)}if(e<t.length){t[e++]=i;while(e<t.length)t[e++]=0}},s.prototype._toArrayLikeBE=function(t,l){for(var e=t.length-1,i=0,n=0,c=0;n<this.length;n++){var s=this.words[n]<<c|i;t[e--]=255&s,e>=0&&(t[e--]=s>>8&255),e>=0&&(t[e--]=s>>16&255),6===c?(e>=0&&(t[e--]=s>>24&255),i=0,c=0):(i=s>>>24,c+=2)}if(e>=0){t[e--]=i;while(e>=0)t[e--]=0}},Math.clz32?s.prototype._countBits=function(t){return 32-Math.clz32(t)}:s.prototype._countBits=function(t){var l=t,e=0;return l>=4096&&(e+=13,l>>>=13),l>=64&&(e+=7,l>>>=7),l>=8&&(e+=4,l>>>=4),l>=2&&(e+=2,l>>>=2),e+l},s.prototype._zeroBits=function(t){if(0===t)return 26;var l=t,e=0;return 0===(8191&l)&&(e+=13,l>>>=13),0===(127&l)&&(e+=7,l>>>=7),0===(15&l)&&(e+=4,l>>>=4),0===(3&l)&&(e+=2,l>>>=2),0===(1&l)&&e++,e},s.prototype.bitLength=function(){var t=this.words[this.length-1],l=this._countBits(t);return 26*(this.length-1)+l},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,l=0;l<this.length;l++){var e=this._zeroBits(this.words[l]);if(t+=e,26!==e)break}return t},s.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},s.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},s.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},s.prototype.isNeg=function(){return 0!==this.negative},s.prototype.neg=function(){return this.clone().ineg()},s.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},s.prototype.iuor=function(t){while(this.length<t.length)this.words[this.length++]=0;for(var l=0;l<t.length;l++)this.words[l]=this.words[l]|t.words[l];return this._strip()},s.prototype.ior=function(t){return n(0===(this.negative|t.negative)),this.iuor(t)},s.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},s.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},s.prototype.iuand=function(t){var l;l=this.length>t.length?t:this;for(var e=0;e<l.length;e++)this.words[e]=this.words[e]&t.words[e];return this.length=l.length,this._strip()},s.prototype.iand=function(t){return n(0===(this.negative|t.negative)),this.iuand(t)},s.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},s.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},s.prototype.iuxor=function(t){var l,e;this.length>t.length?(l=this,e=t):(l=t,e=this);for(var i=0;i<e.length;i++)this.words[i]=l.words[i]^e.words[i];if(this!==l)for(;i<l.length;i++)this.words[i]=l.words[i];return this.length=l.length,this._strip()},s.prototype.ixor=function(t){return n(0===(this.negative|t.negative)),this.iuxor(t)},s.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},s.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},s.prototype.inotn=function(t){n("number"===typeof t&&t>=0);var l=0|Math.ceil(t/26),e=t%26;this._expand(l),e>0&&l--;for(var i=0;i<l;i++)this.words[i]=67108863&~this.words[i];return e>0&&(this.words[i]=~this.words[i]&67108863>>26-e),this._strip()},s.prototype.notn=function(t){return this.clone().inotn(t)},s.prototype.setn=function(t,l){n("number"===typeof t&&t>=0);var e=t/26|0,i=t%26;return this._expand(e+1),this.words[e]=l?this.words[e]|1<<i:this.words[e]&~(1<<i),this._strip()},s.prototype.iadd=function(t){var l,e,i;if(0!==this.negative&&0===t.negative)return this.negative=0,l=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,l=this.isub(t),t.negative=1,l._normSign();this.length>t.length?(e=this,i=t):(e=t,i=this);for(var n=0,c=0;c<i.length;c++)l=(0|e.words[c])+(0|i.words[c])+n,this.words[c]=67108863&l,n=l>>>26;for(;0!==n&&c<e.length;c++)l=(0|e.words[c])+n,this.words[c]=67108863&l,n=l>>>26;if(this.length=e.length,0!==n)this.words[this.length]=n,this.length++;else if(e!==this)for(;c<e.length;c++)this.words[c]=e.words[c];return this},s.prototype.add=function(t){var l;return 0!==t.negative&&0===this.negative?(t.negative=0,l=this.sub(t),t.negative^=1,l):0===t.negative&&0!==this.negative?(this.negative=0,l=t.sub(this),this.negative=1,l):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},s.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var l=this.iadd(t);return t.negative=1,l._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var e,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(e=this,i=t):(e=t,i=this);for(var c=0,s=0;s<i.length;s++)l=(0|e.words[s])-(0|i.words[s])+c,c=l>>26,this.words[s]=67108863&l;for(;0!==c&&s<e.length;s++)l=(0|e.words[s])+c,c=l>>26,this.words[s]=67108863&l;if(0===c&&s<e.length&&e!==this)for(;s<e.length;s++)this.words[s]=e.words[s];return this.length=Math.max(this.length,s),e!==this&&(this.negative=1),this._strip()},s.prototype.sub=function(t){return this.clone().isub(t)};var W=function(t,l,e){var i,n,c,s=t.words,d=l.words,a=e.words,u=0,o=0|s[0],r=8191&o,b=o>>>13,h=0|s[1],Z=8191&h,m=h>>>13,y=0|s[2],p=8191&y,W=y>>>13,G=0|s[3],X=8191&G,Y=G>>>13,N=0|s[4],V=8191&N,M=N>>>13,L=0|s[5],I=8191&L,w=L>>>13,f=0|s[6],R=8191&f,T=f>>>13,z=0|s[7],x=8191&z,S=z>>>13,k=0|s[8],C=8191&k,J=k>>>13,g=0|s[9],F=8191&g,j=g>>>13,v=0|d[0],D=8191&v,U=v>>>13,O=0|d[1],K=8191&O,E=O>>>13,H=0|d[2],Q=8191&H,B=H>>>13,P=0|d[3],A=8191&P,_=P>>>13,q=0|d[4],$=8191&q,tt=q>>>13,lt=0|d[5],et=8191&lt,it=lt>>>13,nt=0|d[6],ct=8191&nt,st=nt>>>13,dt=0|d[7],at=8191&dt,ut=dt>>>13,ot=0|d[8],rt=8191&ot,bt=ot>>>13,ht=0|d[9],Zt=8191&ht,mt=ht>>>13;e.negative=t.negative^l.negative,e.length=19,i=Math.imul(r,D),n=Math.imul(r,U),n=n+Math.imul(b,D)|0,c=Math.imul(b,U);var yt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Z,D),n=Math.imul(Z,U),n=n+Math.imul(m,D)|0,c=Math.imul(m,U),i=i+Math.imul(r,K)|0,n=n+Math.imul(r,E)|0,n=n+Math.imul(b,K)|0,c=c+Math.imul(b,E)|0;var pt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,D),n=Math.imul(p,U),n=n+Math.imul(W,D)|0,c=Math.imul(W,U),i=i+Math.imul(Z,K)|0,n=n+Math.imul(Z,E)|0,n=n+Math.imul(m,K)|0,c=c+Math.imul(m,E)|0,i=i+Math.imul(r,Q)|0,n=n+Math.imul(r,B)|0,n=n+Math.imul(b,Q)|0,c=c+Math.imul(b,B)|0;var Wt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,i=Math.imul(X,D),n=Math.imul(X,U),n=n+Math.imul(Y,D)|0,c=Math.imul(Y,U),i=i+Math.imul(p,K)|0,n=n+Math.imul(p,E)|0,n=n+Math.imul(W,K)|0,c=c+Math.imul(W,E)|0,i=i+Math.imul(Z,Q)|0,n=n+Math.imul(Z,B)|0,n=n+Math.imul(m,Q)|0,c=c+Math.imul(m,B)|0,i=i+Math.imul(r,A)|0,n=n+Math.imul(r,_)|0,n=n+Math.imul(b,A)|0,c=c+Math.imul(b,_)|0;var Gt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(V,D),n=Math.imul(V,U),n=n+Math.imul(M,D)|0,c=Math.imul(M,U),i=i+Math.imul(X,K)|0,n=n+Math.imul(X,E)|0,n=n+Math.imul(Y,K)|0,c=c+Math.imul(Y,E)|0,i=i+Math.imul(p,Q)|0,n=n+Math.imul(p,B)|0,n=n+Math.imul(W,Q)|0,c=c+Math.imul(W,B)|0,i=i+Math.imul(Z,A)|0,n=n+Math.imul(Z,_)|0,n=n+Math.imul(m,A)|0,c=c+Math.imul(m,_)|0,i=i+Math.imul(r,$)|0,n=n+Math.imul(r,tt)|0,n=n+Math.imul(b,$)|0,c=c+Math.imul(b,tt)|0;var Xt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,i=Math.imul(I,D),n=Math.imul(I,U),n=n+Math.imul(w,D)|0,c=Math.imul(w,U),i=i+Math.imul(V,K)|0,n=n+Math.imul(V,E)|0,n=n+Math.imul(M,K)|0,c=c+Math.imul(M,E)|0,i=i+Math.imul(X,Q)|0,n=n+Math.imul(X,B)|0,n=n+Math.imul(Y,Q)|0,c=c+Math.imul(Y,B)|0,i=i+Math.imul(p,A)|0,n=n+Math.imul(p,_)|0,n=n+Math.imul(W,A)|0,c=c+Math.imul(W,_)|0,i=i+Math.imul(Z,$)|0,n=n+Math.imul(Z,tt)|0,n=n+Math.imul(m,$)|0,c=c+Math.imul(m,tt)|0,i=i+Math.imul(r,et)|0,n=n+Math.imul(r,it)|0,n=n+Math.imul(b,et)|0,c=c+Math.imul(b,it)|0;var Yt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(R,D),n=Math.imul(R,U),n=n+Math.imul(T,D)|0,c=Math.imul(T,U),i=i+Math.imul(I,K)|0,n=n+Math.imul(I,E)|0,n=n+Math.imul(w,K)|0,c=c+Math.imul(w,E)|0,i=i+Math.imul(V,Q)|0,n=n+Math.imul(V,B)|0,n=n+Math.imul(M,Q)|0,c=c+Math.imul(M,B)|0,i=i+Math.imul(X,A)|0,n=n+Math.imul(X,_)|0,n=n+Math.imul(Y,A)|0,c=c+Math.imul(Y,_)|0,i=i+Math.imul(p,$)|0,n=n+Math.imul(p,tt)|0,n=n+Math.imul(W,$)|0,c=c+Math.imul(W,tt)|0,i=i+Math.imul(Z,et)|0,n=n+Math.imul(Z,it)|0,n=n+Math.imul(m,et)|0,c=c+Math.imul(m,it)|0,i=i+Math.imul(r,ct)|0,n=n+Math.imul(r,st)|0,n=n+Math.imul(b,ct)|0,c=c+Math.imul(b,st)|0;var Nt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(x,D),n=Math.imul(x,U),n=n+Math.imul(S,D)|0,c=Math.imul(S,U),i=i+Math.imul(R,K)|0,n=n+Math.imul(R,E)|0,n=n+Math.imul(T,K)|0,c=c+Math.imul(T,E)|0,i=i+Math.imul(I,Q)|0,n=n+Math.imul(I,B)|0,n=n+Math.imul(w,Q)|0,c=c+Math.imul(w,B)|0,i=i+Math.imul(V,A)|0,n=n+Math.imul(V,_)|0,n=n+Math.imul(M,A)|0,c=c+Math.imul(M,_)|0,i=i+Math.imul(X,$)|0,n=n+Math.imul(X,tt)|0,n=n+Math.imul(Y,$)|0,c=c+Math.imul(Y,tt)|0,i=i+Math.imul(p,et)|0,n=n+Math.imul(p,it)|0,n=n+Math.imul(W,et)|0,c=c+Math.imul(W,it)|0,i=i+Math.imul(Z,ct)|0,n=n+Math.imul(Z,st)|0,n=n+Math.imul(m,ct)|0,c=c+Math.imul(m,st)|0,i=i+Math.imul(r,at)|0,n=n+Math.imul(r,ut)|0,n=n+Math.imul(b,at)|0,c=c+Math.imul(b,ut)|0;var Vt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,i=Math.imul(C,D),n=Math.imul(C,U),n=n+Math.imul(J,D)|0,c=Math.imul(J,U),i=i+Math.imul(x,K)|0,n=n+Math.imul(x,E)|0,n=n+Math.imul(S,K)|0,c=c+Math.imul(S,E)|0,i=i+Math.imul(R,Q)|0,n=n+Math.imul(R,B)|0,n=n+Math.imul(T,Q)|0,c=c+Math.imul(T,B)|0,i=i+Math.imul(I,A)|0,n=n+Math.imul(I,_)|0,n=n+Math.imul(w,A)|0,c=c+Math.imul(w,_)|0,i=i+Math.imul(V,$)|0,n=n+Math.imul(V,tt)|0,n=n+Math.imul(M,$)|0,c=c+Math.imul(M,tt)|0,i=i+Math.imul(X,et)|0,n=n+Math.imul(X,it)|0,n=n+Math.imul(Y,et)|0,c=c+Math.imul(Y,it)|0,i=i+Math.imul(p,ct)|0,n=n+Math.imul(p,st)|0,n=n+Math.imul(W,ct)|0,c=c+Math.imul(W,st)|0,i=i+Math.imul(Z,at)|0,n=n+Math.imul(Z,ut)|0,n=n+Math.imul(m,at)|0,c=c+Math.imul(m,ut)|0,i=i+Math.imul(r,rt)|0,n=n+Math.imul(r,bt)|0,n=n+Math.imul(b,rt)|0,c=c+Math.imul(b,bt)|0;var Mt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(F,D),n=Math.imul(F,U),n=n+Math.imul(j,D)|0,c=Math.imul(j,U),i=i+Math.imul(C,K)|0,n=n+Math.imul(C,E)|0,n=n+Math.imul(J,K)|0,c=c+Math.imul(J,E)|0,i=i+Math.imul(x,Q)|0,n=n+Math.imul(x,B)|0,n=n+Math.imul(S,Q)|0,c=c+Math.imul(S,B)|0,i=i+Math.imul(R,A)|0,n=n+Math.imul(R,_)|0,n=n+Math.imul(T,A)|0,c=c+Math.imul(T,_)|0,i=i+Math.imul(I,$)|0,n=n+Math.imul(I,tt)|0,n=n+Math.imul(w,$)|0,c=c+Math.imul(w,tt)|0,i=i+Math.imul(V,et)|0,n=n+Math.imul(V,it)|0,n=n+Math.imul(M,et)|0,c=c+Math.imul(M,it)|0,i=i+Math.imul(X,ct)|0,n=n+Math.imul(X,st)|0,n=n+Math.imul(Y,ct)|0,c=c+Math.imul(Y,st)|0,i=i+Math.imul(p,at)|0,n=n+Math.imul(p,ut)|0,n=n+Math.imul(W,at)|0,c=c+Math.imul(W,ut)|0,i=i+Math.imul(Z,rt)|0,n=n+Math.imul(Z,bt)|0,n=n+Math.imul(m,rt)|0,c=c+Math.imul(m,bt)|0,i=i+Math.imul(r,Zt)|0,n=n+Math.imul(r,mt)|0,n=n+Math.imul(b,Zt)|0,c=c+Math.imul(b,mt)|0;var Lt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(F,K),n=Math.imul(F,E),n=n+Math.imul(j,K)|0,c=Math.imul(j,E),i=i+Math.imul(C,Q)|0,n=n+Math.imul(C,B)|0,n=n+Math.imul(J,Q)|0,c=c+Math.imul(J,B)|0,i=i+Math.imul(x,A)|0,n=n+Math.imul(x,_)|0,n=n+Math.imul(S,A)|0,c=c+Math.imul(S,_)|0,i=i+Math.imul(R,$)|0,n=n+Math.imul(R,tt)|0,n=n+Math.imul(T,$)|0,c=c+Math.imul(T,tt)|0,i=i+Math.imul(I,et)|0,n=n+Math.imul(I,it)|0,n=n+Math.imul(w,et)|0,c=c+Math.imul(w,it)|0,i=i+Math.imul(V,ct)|0,n=n+Math.imul(V,st)|0,n=n+Math.imul(M,ct)|0,c=c+Math.imul(M,st)|0,i=i+Math.imul(X,at)|0,n=n+Math.imul(X,ut)|0,n=n+Math.imul(Y,at)|0,c=c+Math.imul(Y,ut)|0,i=i+Math.imul(p,rt)|0,n=n+Math.imul(p,bt)|0,n=n+Math.imul(W,rt)|0,c=c+Math.imul(W,bt)|0,i=i+Math.imul(Z,Zt)|0,n=n+Math.imul(Z,mt)|0,n=n+Math.imul(m,Zt)|0,c=c+Math.imul(m,mt)|0;var It=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Q),n=Math.imul(F,B),n=n+Math.imul(j,Q)|0,c=Math.imul(j,B),i=i+Math.imul(C,A)|0,n=n+Math.imul(C,_)|0,n=n+Math.imul(J,A)|0,c=c+Math.imul(J,_)|0,i=i+Math.imul(x,$)|0,n=n+Math.imul(x,tt)|0,n=n+Math.imul(S,$)|0,c=c+Math.imul(S,tt)|0,i=i+Math.imul(R,et)|0,n=n+Math.imul(R,it)|0,n=n+Math.imul(T,et)|0,c=c+Math.imul(T,it)|0,i=i+Math.imul(I,ct)|0,n=n+Math.imul(I,st)|0,n=n+Math.imul(w,ct)|0,c=c+Math.imul(w,st)|0,i=i+Math.imul(V,at)|0,n=n+Math.imul(V,ut)|0,n=n+Math.imul(M,at)|0,c=c+Math.imul(M,ut)|0,i=i+Math.imul(X,rt)|0,n=n+Math.imul(X,bt)|0,n=n+Math.imul(Y,rt)|0,c=c+Math.imul(Y,bt)|0,i=i+Math.imul(p,Zt)|0,n=n+Math.imul(p,mt)|0,n=n+Math.imul(W,Zt)|0,c=c+Math.imul(W,mt)|0;var wt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(F,A),n=Math.imul(F,_),n=n+Math.imul(j,A)|0,c=Math.imul(j,_),i=i+Math.imul(C,$)|0,n=n+Math.imul(C,tt)|0,n=n+Math.imul(J,$)|0,c=c+Math.imul(J,tt)|0,i=i+Math.imul(x,et)|0,n=n+Math.imul(x,it)|0,n=n+Math.imul(S,et)|0,c=c+Math.imul(S,it)|0,i=i+Math.imul(R,ct)|0,n=n+Math.imul(R,st)|0,n=n+Math.imul(T,ct)|0,c=c+Math.imul(T,st)|0,i=i+Math.imul(I,at)|0,n=n+Math.imul(I,ut)|0,n=n+Math.imul(w,at)|0,c=c+Math.imul(w,ut)|0,i=i+Math.imul(V,rt)|0,n=n+Math.imul(V,bt)|0,n=n+Math.imul(M,rt)|0,c=c+Math.imul(M,bt)|0,i=i+Math.imul(X,Zt)|0,n=n+Math.imul(X,mt)|0,n=n+Math.imul(Y,Zt)|0,c=c+Math.imul(Y,mt)|0;var ft=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(ft>>>26)|0,ft&=67108863,i=Math.imul(F,$),n=Math.imul(F,tt),n=n+Math.imul(j,$)|0,c=Math.imul(j,tt),i=i+Math.imul(C,et)|0,n=n+Math.imul(C,it)|0,n=n+Math.imul(J,et)|0,c=c+Math.imul(J,it)|0,i=i+Math.imul(x,ct)|0,n=n+Math.imul(x,st)|0,n=n+Math.imul(S,ct)|0,c=c+Math.imul(S,st)|0,i=i+Math.imul(R,at)|0,n=n+Math.imul(R,ut)|0,n=n+Math.imul(T,at)|0,c=c+Math.imul(T,ut)|0,i=i+Math.imul(I,rt)|0,n=n+Math.imul(I,bt)|0,n=n+Math.imul(w,rt)|0,c=c+Math.imul(w,bt)|0,i=i+Math.imul(V,Zt)|0,n=n+Math.imul(V,mt)|0,n=n+Math.imul(M,Zt)|0,c=c+Math.imul(M,mt)|0;var Rt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,et),n=Math.imul(F,it),n=n+Math.imul(j,et)|0,c=Math.imul(j,it),i=i+Math.imul(C,ct)|0,n=n+Math.imul(C,st)|0,n=n+Math.imul(J,ct)|0,c=c+Math.imul(J,st)|0,i=i+Math.imul(x,at)|0,n=n+Math.imul(x,ut)|0,n=n+Math.imul(S,at)|0,c=c+Math.imul(S,ut)|0,i=i+Math.imul(R,rt)|0,n=n+Math.imul(R,bt)|0,n=n+Math.imul(T,rt)|0,c=c+Math.imul(T,bt)|0,i=i+Math.imul(I,Zt)|0,n=n+Math.imul(I,mt)|0,n=n+Math.imul(w,Zt)|0,c=c+Math.imul(w,mt)|0;var Tt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(F,ct),n=Math.imul(F,st),n=n+Math.imul(j,ct)|0,c=Math.imul(j,st),i=i+Math.imul(C,at)|0,n=n+Math.imul(C,ut)|0,n=n+Math.imul(J,at)|0,c=c+Math.imul(J,ut)|0,i=i+Math.imul(x,rt)|0,n=n+Math.imul(x,bt)|0,n=n+Math.imul(S,rt)|0,c=c+Math.imul(S,bt)|0,i=i+Math.imul(R,Zt)|0,n=n+Math.imul(R,mt)|0,n=n+Math.imul(T,Zt)|0,c=c+Math.imul(T,mt)|0;var zt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(zt>>>26)|0,zt&=67108863,i=Math.imul(F,at),n=Math.imul(F,ut),n=n+Math.imul(j,at)|0,c=Math.imul(j,ut),i=i+Math.imul(C,rt)|0,n=n+Math.imul(C,bt)|0,n=n+Math.imul(J,rt)|0,c=c+Math.imul(J,bt)|0,i=i+Math.imul(x,Zt)|0,n=n+Math.imul(x,mt)|0,n=n+Math.imul(S,Zt)|0,c=c+Math.imul(S,mt)|0;var xt=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(F,rt),n=Math.imul(F,bt),n=n+Math.imul(j,rt)|0,c=Math.imul(j,bt),i=i+Math.imul(C,Zt)|0,n=n+Math.imul(C,mt)|0,n=n+Math.imul(J,Zt)|0,c=c+Math.imul(J,mt)|0;var St=(u+i|0)+((8191&n)<<13)|0;u=(c+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(F,Zt),n=Math.imul(F,mt),n=n+Math.imul(j,Zt)|0,c=Math.imul(j,mt);var kt=(u+i|0)+((8191&n)<<13)|0;return u=(c+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,a[0]=yt,a[1]=pt,a[2]=Wt,a[3]=Gt,a[4]=Xt,a[5]=Yt,a[6]=Nt,a[7]=Vt,a[8]=Mt,a[9]=Lt,a[10]=It,a[11]=wt,a[12]=ft,a[13]=Rt,a[14]=Tt,a[15]=zt,a[16]=xt,a[17]=St,a[18]=kt,0!==u&&(a[19]=u,e.length++),e};function G(t,l,e){e.negative=l.negative^t.negative,e.length=t.length+l.length;for(var i=0,n=0,c=0;c<e.length-1;c++){var s=n;n=0;for(var d=67108863&i,a=Math.min(c,l.length-1),u=Math.max(0,c-t.length+1);u<=a;u++){var o=c-u,r=0|t.words[o],b=0|l.words[u],h=r*b,Z=67108863&h;s=s+(h/67108864|0)|0,Z=Z+d|0,d=67108863&Z,s=s+(Z>>>26)|0,n+=s>>>26,s&=67108863}e.words[c]=d,i=s,s=n}return 0!==i?e.words[c]=i:e.length--,e._strip()}function X(t,l,e){return G(t,l,e)}function Y(t,l){this.x=t,this.y=l}Math.imul||(W=p),s.prototype.mulTo=function(t,l){var e,i=this.length+t.length;return e=10===this.length&&10===t.length?W(this,t,l):i<63?p(this,t,l):i<1024?G(this,t,l):X(this,t,l),e},Y.prototype.makeRBT=function(t){for(var l=new Array(t),e=s.prototype._countBits(t)-1,i=0;i<t;i++)l[i]=this.revBin(i,e,t);return l},Y.prototype.revBin=function(t,l,e){if(0===t||t===e-1)return t;for(var i=0,n=0;n<l;n++)i|=(1&t)<<l-n-1,t>>=1;return i},Y.prototype.permute=function(t,l,e,i,n,c){for(var s=0;s<c;s++)i[s]=l[t[s]],n[s]=e[t[s]]},Y.prototype.transform=function(t,l,e,i,n,c){this.permute(c,t,l,e,i,n);for(var s=1;s<n;s<<=1)for(var d=s<<1,a=Math.cos(2*Math.PI/d),u=Math.sin(2*Math.PI/d),o=0;o<n;o+=d)for(var r=a,b=u,h=0;h<s;h++){var Z=e[o+h],m=i[o+h],y=e[o+h+s],p=i[o+h+s],W=r*y-b*p;p=r*p+b*y,y=W,e[o+h]=Z+y,i[o+h]=m+p,e[o+h+s]=Z-y,i[o+h+s]=m-p,h!==d&&(W=a*r-u*b,b=a*b+u*r,r=W)}},Y.prototype.guessLen13b=function(t,l){var e=1|Math.max(l,t),i=1&e,n=0;for(e=e/2|0;e;e>>>=1)n++;return 1<<n+1+i},Y.prototype.conjugate=function(t,l,e){if(!(e<=1))for(var i=0;i<e/2;i++){var n=t[i];t[i]=t[e-i-1],t[e-i-1]=n,n=l[i],l[i]=-l[e-i-1],l[e-i-1]=-n}},Y.prototype.normalize13b=function(t,l){for(var e=0,i=0;i<l/2;i++){var n=8192*Math.round(t[2*i+1]/l)+Math.round(t[2*i]/l)+e;t[i]=67108863&n,e=n<67108864?0:n/67108864|0}return t},Y.prototype.convert13b=function(t,l,e,i){for(var c=0,s=0;s<l;s++)c+=0|t[s],e[2*s]=8191&c,c>>>=13,e[2*s+1]=8191&c,c>>>=13;for(s=2*l;s<i;++s)e[s]=0;n(0===c),n(0===(-8192&c))},Y.prototype.stub=function(t){for(var l=new Array(t),e=0;e<t;e++)l[e]=0;return l},Y.prototype.mulp=function(t,l,e){var i=2*this.guessLen13b(t.length,l.length),n=this.makeRBT(i),c=this.stub(i),s=new Array(i),d=new Array(i),a=new Array(i),u=new Array(i),o=new Array(i),r=new Array(i),b=e.words;b.length=i,this.convert13b(t.words,t.length,s,i),this.convert13b(l.words,l.length,u,i),this.transform(s,c,d,a,i,n),this.transform(u,c,o,r,i,n);for(var h=0;h<i;h++){var Z=d[h]*o[h]-a[h]*r[h];a[h]=d[h]*r[h]+a[h]*o[h],d[h]=Z}return this.conjugate(d,a,i),this.transform(d,a,b,c,i,n),this.conjugate(b,c,i),this.normalize13b(b,i),e.negative=t.negative^l.negative,e.length=t.length+l.length,e._strip()},s.prototype.mul=function(t){var l=new s(null);return l.words=new Array(this.length+t.length),this.mulTo(t,l)},s.prototype.mulf=function(t){var l=new s(null);return l.words=new Array(this.length+t.length),X(this,t,l)},s.prototype.imul=function(t){return this.clone().mulTo(t,this)},s.prototype.imuln=function(t){var l=t<0;l&&(t=-t),n("number"===typeof t),n(t<67108864);for(var e=0,i=0;i<this.length;i++){var c=(0|this.words[i])*t,s=(67108863&c)+(67108863&e);e>>=26,e+=c/67108864|0,e+=s>>>26,this.words[i]=67108863&s}return 0!==e&&(this.words[i]=e,this.length++),l?this.ineg():this},s.prototype.muln=function(t){return this.clone().imuln(t)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(t){var l=y(t);if(0===l.length)return new s(1);for(var e=this,i=0;i<l.length;i++,e=e.sqr())if(0!==l[i])break;if(++i<l.length)for(var n=e.sqr();i<l.length;i++,n=n.sqr())0!==l[i]&&(e=e.mul(n));return e},s.prototype.iushln=function(t){n("number"===typeof t&&t>=0);var l,e=t%26,i=(t-e)/26,c=67108863>>>26-e<<26-e;if(0!==e){var s=0;for(l=0;l<this.length;l++){var d=this.words[l]&c,a=(0|this.words[l])-d<<e;this.words[l]=a|s,s=d>>>26-e}s&&(this.words[l]=s,this.length++)}if(0!==i){for(l=this.length-1;l>=0;l--)this.words[l+i]=this.words[l];for(l=0;l<i;l++)this.words[l]=0;this.length+=i}return this._strip()},s.prototype.ishln=function(t){return n(0===this.negative),this.iushln(t)},s.prototype.iushrn=function(t,l,e){var i;n("number"===typeof t&&t>=0),i=l?(l-l%26)/26:0;var c=t%26,s=Math.min((t-c)/26,this.length),d=67108863^67108863>>>c<<c,a=e;if(i-=s,i=Math.max(0,i),a){for(var u=0;u<s;u++)a.words[u]=this.words[u];a.length=s}if(0===s);else if(this.length>s)for(this.length-=s,u=0;u<this.length;u++)this.words[u]=this.words[u+s];else this.words[0]=0,this.length=1;var o=0;for(u=this.length-1;u>=0&&(0!==o||u>=i);u--){var r=0|this.words[u];this.words[u]=o<<26-c|r>>>c,o=r&d}return a&&0!==o&&(a.words[a.length++]=o),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(t,l,e){return n(0===this.negative),this.iushrn(t,l,e)},s.prototype.shln=function(t){return this.clone().ishln(t)},s.prototype.ushln=function(t){return this.clone().iushln(t)},s.prototype.shrn=function(t){return this.clone().ishrn(t)},s.prototype.ushrn=function(t){return this.clone().iushrn(t)},s.prototype.testn=function(t){n("number"===typeof t&&t>=0);var l=t%26,e=(t-l)/26,i=1<<l;if(this.length<=e)return!1;var c=this.words[e];return!!(c&i)},s.prototype.imaskn=function(t){n("number"===typeof t&&t>=0);var l=t%26,e=(t-l)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=e)return this;if(0!==l&&e++,this.length=Math.min(e,this.length),0!==l){var i=67108863^67108863>>>l<<l;this.words[this.length-1]&=i}return this._strip()},s.prototype.maskn=function(t){return this.clone().imaskn(t)},s.prototype.iaddn=function(t){return n("number"===typeof t),n(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<=t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},s.prototype._iaddn=function(t){this.words[0]+=t;for(var l=0;l<this.length&&this.words[l]>=67108864;l++)this.words[l]-=67108864,l===this.length-1?this.words[l+1]=1:this.words[l+1]++;return this.length=Math.max(this.length,l+1),this},s.prototype.isubn=function(t){if(n("number"===typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var l=0;l<this.length&&this.words[l]<0;l++)this.words[l]+=67108864,this.words[l+1]-=1;return this._strip()},s.prototype.addn=function(t){return this.clone().iaddn(t)},s.prototype.subn=function(t){return this.clone().isubn(t)},s.prototype.iabs=function(){return this.negative=0,this},s.prototype.abs=function(){return this.clone().iabs()},s.prototype._ishlnsubmul=function(t,l,e){var i,c,s=t.length+e;this._expand(s);var d=0;for(i=0;i<t.length;i++){c=(0|this.words[i+e])+d;var a=(0|t.words[i])*l;c-=67108863&a,d=(c>>26)-(a/67108864|0),this.words[i+e]=67108863&c}for(;i<this.length-e;i++)c=(0|this.words[i+e])+d,d=c>>26,this.words[i+e]=67108863&c;if(0===d)return this._strip();for(n(-1===d),d=0,i=0;i<this.length;i++)c=-(0|this.words[i])+d,d=c>>26,this.words[i]=67108863&c;return this.negative=1,this._strip()},s.prototype._wordDiv=function(t,l){var e=this.length-t.length,i=this.clone(),n=t,c=0|n.words[n.length-1],d=this._countBits(c);e=26-d,0!==e&&(n=n.ushln(e),i.iushln(e),c=0|n.words[n.length-1]);var a,u=i.length-n.length;if("mod"!==l){a=new s(null),a.length=u+1,a.words=new Array(a.length);for(var o=0;o<a.length;o++)a.words[o]=0}var r=i.clone()._ishlnsubmul(n,1,u);0===r.negative&&(i=r,a&&(a.words[u]=1));for(var b=u-1;b>=0;b--){var h=67108864*(0|i.words[n.length+b])+(0|i.words[n.length+b-1]);h=Math.min(h/c|0,67108863),i._ishlnsubmul(n,h,b);while(0!==i.negative)h--,i.negative=0,i._ishlnsubmul(n,1,b),i.isZero()||(i.negative^=1);a&&(a.words[b]=h)}return a&&a._strip(),i._strip(),"div"!==l&&0!==e&&i.iushrn(e),{div:a||null,mod:i}},s.prototype.divmod=function(t,l,e){return n(!t.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===t.negative?(d=this.neg().divmod(t,l),"mod"!==l&&(i=d.div.neg()),"div"!==l&&(c=d.mod.neg(),e&&0!==c.negative&&c.iadd(t)),{div:i,mod:c}):0===this.negative&&0!==t.negative?(d=this.divmod(t.neg(),l),"mod"!==l&&(i=d.div.neg()),{div:i,mod:d.mod}):0!==(this.negative&t.negative)?(d=this.neg().divmod(t.neg(),l),"div"!==l&&(c=d.mod.neg(),e&&0!==c.negative&&c.isub(t)),{div:d.div,mod:c}):t.length>this.length||this.cmp(t)<0?{div:new s(0),mod:this}:1===t.length?"div"===l?{div:this.divn(t.words[0]),mod:null}:"mod"===l?{div:null,mod:new s(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new s(this.modrn(t.words[0]))}:this._wordDiv(t,l);var i,c,d},s.prototype.div=function(t){return this.divmod(t,"div",!1).div},s.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},s.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},s.prototype.divRound=function(t){var l=this.divmod(t);if(l.mod.isZero())return l.div;var e=0!==l.div.negative?l.mod.isub(t):l.mod,i=t.ushrn(1),n=t.andln(1),c=e.cmp(i);return c<0||1===n&&0===c?l.div:0!==l.div.negative?l.div.isubn(1):l.div.iaddn(1)},s.prototype.modrn=function(t){var l=t<0;l&&(t=-t),n(t<=67108863);for(var e=(1<<26)%t,i=0,c=this.length-1;c>=0;c--)i=(e*i+(0|this.words[c]))%t;return l?-i:i},s.prototype.modn=function(t){return this.modrn(t)},s.prototype.idivn=function(t){var l=t<0;l&&(t=-t),n(t<=67108863);for(var e=0,i=this.length-1;i>=0;i--){var c=(0|this.words[i])+67108864*e;this.words[i]=c/t|0,e=c%t}return this._strip(),l?this.ineg():this},s.prototype.divn=function(t){return this.clone().idivn(t)},s.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var l=this,e=t.clone();l=0!==l.negative?l.umod(t):l.clone();var i=new s(1),c=new s(0),d=new s(0),a=new s(1),u=0;while(l.isEven()&&e.isEven())l.iushrn(1),e.iushrn(1),++u;var o=e.clone(),r=l.clone();while(!l.isZero()){for(var b=0,h=1;0===(l.words[0]&h)&&b<26;++b,h<<=1);if(b>0){l.iushrn(b);while(b-- >0)(i.isOdd()||c.isOdd())&&(i.iadd(o),c.isub(r)),i.iushrn(1),c.iushrn(1)}for(var Z=0,m=1;0===(e.words[0]&m)&&Z<26;++Z,m<<=1);if(Z>0){e.iushrn(Z);while(Z-- >0)(d.isOdd()||a.isOdd())&&(d.iadd(o),a.isub(r)),d.iushrn(1),a.iushrn(1)}l.cmp(e)>=0?(l.isub(e),i.isub(d),c.isub(a)):(e.isub(l),d.isub(i),a.isub(c))}return{a:d,b:a,gcd:e.iushln(u)}},s.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var l=this,e=t.clone();l=0!==l.negative?l.umod(t):l.clone();var i,c=new s(1),d=new s(0),a=e.clone();while(l.cmpn(1)>0&&e.cmpn(1)>0){for(var u=0,o=1;0===(l.words[0]&o)&&u<26;++u,o<<=1);if(u>0){l.iushrn(u);while(u-- >0)c.isOdd()&&c.iadd(a),c.iushrn(1)}for(var r=0,b=1;0===(e.words[0]&b)&&r<26;++r,b<<=1);if(r>0){e.iushrn(r);while(r-- >0)d.isOdd()&&d.iadd(a),d.iushrn(1)}l.cmp(e)>=0?(l.isub(e),c.isub(d)):(e.isub(l),d.isub(c))}return i=0===l.cmpn(1)?c:d,i.cmpn(0)<0&&i.iadd(t),i},s.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var l=this.clone(),e=t.clone();l.negative=0,e.negative=0;for(var i=0;l.isEven()&&e.isEven();i++)l.iushrn(1),e.iushrn(1);do{while(l.isEven())l.iushrn(1);while(e.isEven())e.iushrn(1);var n=l.cmp(e);if(n<0){var c=l;l=e,e=c}else if(0===n||0===e.cmpn(1))break;l.isub(e)}while(1);return e.iushln(i)},s.prototype.invm=function(t){return this.egcd(t).a.umod(t)},s.prototype.isEven=function(){return 0===(1&this.words[0])},s.prototype.isOdd=function(){return 1===(1&this.words[0])},s.prototype.andln=function(t){return this.words[0]&t},s.prototype.bincn=function(t){n("number"===typeof t);var l=t%26,e=(t-l)/26,i=1<<l;if(this.length<=e)return this._expand(e+1),this.words[e]|=i,this;for(var c=i,s=e;0!==c&&s<this.length;s++){var d=0|this.words[s];d+=c,c=d>>>26,d&=67108863,this.words[s]=d}return 0!==c&&(this.words[s]=c,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(t){var l,e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;if(this._strip(),this.length>1)l=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];l=i===t?0:i<t?-1:1}return 0!==this.negative?0|-l:l},s.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var l=this.ucmp(t);return 0!==this.negative?0|-l:l},s.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var l=0,e=this.length-1;e>=0;e--){var i=0|this.words[e],n=0|t.words[e];if(i!==n){i<n?l=-1:i>n&&(l=1);break}}return l},s.prototype.gtn=function(t){return 1===this.cmpn(t)},s.prototype.gt=function(t){return 1===this.cmp(t)},s.prototype.gten=function(t){return this.cmpn(t)>=0},s.prototype.gte=function(t){return this.cmp(t)>=0},s.prototype.ltn=function(t){return-1===this.cmpn(t)},s.prototype.lt=function(t){return-1===this.cmp(t)},s.prototype.lten=function(t){return this.cmpn(t)<=0},s.prototype.lte=function(t){return this.cmp(t)<=0},s.prototype.eqn=function(t){return 0===this.cmpn(t)},s.prototype.eq=function(t){return 0===this.cmp(t)},s.red=function(t){return new f(t)},s.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(t){return this.red=t,this},s.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},s.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},s.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},s.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},s.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},s.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},s.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},s.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var N={k256:null,p224:null,p192:null,p25519:null};function V(t,l){this.name=t,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function M(){V.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function L(){V.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function I(){V.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){V.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function f(t){if("string"===typeof t){var l=s._prime(t);this.m=l.p,this.prime=l}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function R(t){f.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}V.prototype._tmp=function(){var t=new s(null);return t.words=new Array(Math.ceil(this.n/13)),t},V.prototype.ireduce=function(t){var l,e=t;do{this.split(e,this.tmp),e=this.imulK(e),e=e.iadd(this.tmp),l=e.bitLength()}while(l>this.n);var i=l<this.n?-1:e.ucmp(this.p);return 0===i?(e.words[0]=0,e.length=1):i>0?e.isub(this.p):void 0!==e.strip?e.strip():e._strip(),e},V.prototype.split=function(t,l){t.iushrn(this.n,0,l)},V.prototype.imulK=function(t){return t.imul(this.k)},c(M,V),M.prototype.split=function(t,l){for(var e=4194303,i=Math.min(t.length,9),n=0;n<i;n++)l.words[n]=t.words[n];if(l.length=i,t.length<=9)return t.words[0]=0,void(t.length=1);var c=t.words[9];for(l.words[l.length++]=c&e,n=10;n<t.length;n++){var s=0|t.words[n];t.words[n-10]=(s&e)<<4|c>>>22,c=s}c>>>=22,t.words[n-10]=c,0===c&&t.length>10?t.length-=10:t.length-=9},M.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var l=0,e=0;e<t.length;e++){var i=0|t.words[e];l+=977*i,t.words[e]=67108863&l,l=64*i+(l/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},c(L,V),c(I,V),c(w,V),w.prototype.imulK=function(t){for(var l=0,e=0;e<t.length;e++){var i=19*(0|t.words[e])+l,n=67108863&i;i>>>=26,t.words[e]=n,l=i}return 0!==l&&(t.words[t.length++]=l),t},s._prime=function(t){if(N[t])return N[t];var l;if("k256"===t)l=new M;else if("p224"===t)l=new L;else if("p192"===t)l=new I;else{if("p25519"!==t)throw new Error("Unknown prime "+t);l=new w}return N[t]=l,l},f.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},f.prototype._verify2=function(t,l){n(0===(t.negative|l.negative),"red works only with positives"),n(t.red&&t.red===l.red,"red works only with red numbers")},f.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(o(t,t.umod(this.m)._forceRed(this)),t)},f.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},f.prototype.add=function(t,l){this._verify2(t,l);var e=t.add(l);return e.cmp(this.m)>=0&&e.isub(this.m),e._forceRed(this)},f.prototype.iadd=function(t,l){this._verify2(t,l);var e=t.iadd(l);return e.cmp(this.m)>=0&&e.isub(this.m),e},f.prototype.sub=function(t,l){this._verify2(t,l);var e=t.sub(l);return e.cmpn(0)<0&&e.iadd(this.m),e._forceRed(this)},f.prototype.isub=function(t,l){this._verify2(t,l);var e=t.isub(l);return e.cmpn(0)<0&&e.iadd(this.m),e},f.prototype.shl=function(t,l){return this._verify1(t),this.imod(t.ushln(l))},f.prototype.imul=function(t,l){return this._verify2(t,l),this.imod(t.imul(l))},f.prototype.mul=function(t,l){return this._verify2(t,l),this.imod(t.mul(l))},f.prototype.isqr=function(t){return this.imul(t,t.clone())},f.prototype.sqr=function(t){return this.mul(t,t)},f.prototype.sqrt=function(t){if(t.isZero())return t.clone();var l=this.m.andln(3);if(n(l%2===1),3===l){var e=this.m.add(new s(1)).iushrn(2);return this.pow(t,e)}var i=this.m.subn(1),c=0;while(!i.isZero()&&0===i.andln(1))c++,i.iushrn(1);n(!i.isZero());var d=new s(1).toRed(this),a=d.redNeg(),u=this.m.subn(1).iushrn(1),o=this.m.bitLength();o=new s(2*o*o).toRed(this);while(0!==this.pow(o,u).cmp(a))o.redIAdd(a);var r=this.pow(o,i),b=this.pow(t,i.addn(1).iushrn(1)),h=this.pow(t,i),Z=c;while(0!==h.cmp(d)){for(var m=h,y=0;0!==m.cmp(d);y++)m=m.redSqr();n(y<Z);var p=this.pow(r,new s(1).iushln(Z-y-1));b=b.redMul(p),r=p.redSqr(),h=h.redMul(r),Z=y}return b},f.prototype.invm=function(t){var l=t._invmp(this.m);return 0!==l.negative?(l.negative=0,this.imod(l).redNeg()):this.imod(l)},f.prototype.pow=function(t,l){if(l.isZero())return new s(1).toRed(this);if(0===l.cmpn(1))return t.clone();var e=4,i=new Array(1<<e);i[0]=new s(1).toRed(this),i[1]=t;for(var n=2;n<i.length;n++)i[n]=this.mul(i[n-1],t);var c=i[0],d=0,a=0,u=l.bitLength()%26;for(0===u&&(u=26),n=l.length-1;n>=0;n--){for(var o=l.words[n],r=u-1;r>=0;r--){var b=o>>r&1;c!==i[0]&&(c=this.sqr(c)),0!==b||0!==d?(d<<=1,d|=b,a++,(a===e||0===n&&0===r)&&(c=this.mul(c,i[d]),a=0,d=0)):a=0}u=26}return c},f.prototype.convertTo=function(t){var l=t.umod(this.m);return l===t?l.clone():l},f.prototype.convertFrom=function(t){var l=t.clone();return l.red=null,l},s.mont=function(t){return new R(t)},c(R,f),R.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},R.prototype.convertFrom=function(t){var l=this.imod(t.mul(this.rinv));return l.red=null,l},R.prototype.imul=function(t,l){if(t.isZero()||l.isZero())return t.words[0]=0,t.length=1,t;var e=t.imul(l),i=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=e.isub(i).iushrn(this.shift),c=n;return n.cmp(this.m)>=0?c=n.isub(this.m):n.cmpn(0)<0&&(c=n.iadd(this.m)),c._forceRed(this)},R.prototype.mul=function(t,l){if(t.isZero()||l.isZero())return new s(0)._forceRed(this);var e=t.mul(l),i=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=e.isub(i).iushrn(this.shift),c=n;return n.cmp(this.m)>=0?c=n.isub(this.m):n.cmpn(0)<0&&(c=n.iadd(this.m)),c._forceRed(this)},R.prototype.invm=function(t){var l=this.imod(t._invmp(this.m).mul(this.r2));return l._forceRed(this)}})("undefined"===typeof l||l,void 0)},{buffer:185}],184:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n;function c(t){this.rand=t}if(l.exports=function(t){return n||(n=new c(null)),n.generate(t)},l.exports.Rand=c,c.prototype.generate=function(t){return this._rand(t)},c.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var l=new Uint8Array(t),e=0;e<l.length;e++)l[e]=this.rand.getByte();return l},"object"===("undefined"===typeof self?"undefined":i(self)))self.crypto&&self.crypto.getRandomValues?c.prototype._rand=function(t){var l=new Uint8Array(t);return self.crypto.getRandomValues(l),l}:self.msCrypto&&self.msCrypto.getRandomValues?c.prototype._rand=function(t){var l=new Uint8Array(t);return self.msCrypto.getRandomValues(l),l}:"object"===("undefined"===typeof window?"undefined":i(window))&&(c.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var s=t("crypto");if("function"!==typeof s.randomBytes)throw new Error("Not supported");c.prototype._rand=function(t){return s.randomBytes(t)}}catch(d){}},{crypto:185}],185:[function(t,l,e){},{}],186:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer;function n(t){i.isBuffer(t)||(t=i.from(t));for(var l=t.length/4|0,e=new Array(l),n=0;n<l;n++)e[n]=t.readUInt32BE(4*n);return e}function c(t){for(var l=0;l<t.length;t++)t[l]=0}function s(t,l,e,i,n){for(var c,s,d,a,u=e[0],o=e[1],r=e[2],b=e[3],h=t[0]^l[0],Z=t[1]^l[1],m=t[2]^l[2],y=t[3]^l[3],p=4,W=1;W<n;W++)c=u[h>>>24]^o[Z>>>16&255]^r[m>>>8&255]^b[255&y]^l[p++],s=u[Z>>>24]^o[m>>>16&255]^r[y>>>8&255]^b[255&h]^l[p++],d=u[m>>>24]^o[y>>>16&255]^r[h>>>8&255]^b[255&Z]^l[p++],a=u[y>>>24]^o[h>>>16&255]^r[Z>>>8&255]^b[255&m]^l[p++],h=c,Z=s,m=d,y=a;return c=(i[h>>>24]<<24|i[Z>>>16&255]<<16|i[m>>>8&255]<<8|i[255&y])^l[p++],s=(i[Z>>>24]<<24|i[m>>>16&255]<<16|i[y>>>8&255]<<8|i[255&h])^l[p++],d=(i[m>>>24]<<24|i[y>>>16&255]<<16|i[h>>>8&255]<<8|i[255&Z])^l[p++],a=(i[y>>>24]<<24|i[h>>>16&255]<<16|i[Z>>>8&255]<<8|i[255&m])^l[p++],c>>>=0,s>>>=0,d>>>=0,a>>>=0,[c,s,d,a]}var d=[0,1,2,4,8,16,32,64,128,27,54],a=function(){for(var t=new Array(256),l=0;l<256;l++)t[l]=l<128?l<<1:l<<1^283;for(var e=[],i=[],n=[[],[],[],[]],c=[[],[],[],[]],s=0,d=0,a=0;a<256;++a){var u=d^d<<1^d<<2^d<<3^d<<4;u=u>>>8^255&u^99,e[s]=u,i[u]=s;var o=t[s],r=t[o],b=t[r],h=257*t[u]^16843008*u;n[0][s]=h<<24|h>>>8,n[1][s]=h<<16|h>>>16,n[2][s]=h<<8|h>>>24,n[3][s]=h,h=16843009*b^65537*r^257*o^16843008*s,c[0][u]=h<<24|h>>>8,c[1][u]=h<<16|h>>>16,c[2][u]=h<<8|h>>>24,c[3][u]=h,0===s?s=d=1:(s=o^t[t[t[b^o]]],d^=t[t[d]])}return{SBOX:e,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:c}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,l=t.length,e=l+6,i=4*(e+1),n=[],c=0;c<l;c++)n[c]=t[c];for(c=l;c<i;c++){var s=n[c-1];c%l===0?(s=s<<8|s>>>24,s=a.SBOX[s>>>24]<<24|a.SBOX[s>>>16&255]<<16|a.SBOX[s>>>8&255]<<8|a.SBOX[255&s],s^=d[c/l|0]<<24):l>6&&c%l===4&&(s=a.SBOX[s>>>24]<<24|a.SBOX[s>>>16&255]<<16|a.SBOX[s>>>8&255]<<8|a.SBOX[255&s]),n[c]=n[c-l]^s}for(var u=[],o=0;o<i;o++){var r=i-o,b=n[r-(o%4?0:4)];u[o]=o<4||r<=4?b:a.INV_SUB_MIX[0][a.SBOX[b>>>24]]^a.INV_SUB_MIX[1][a.SBOX[b>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[b>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[255&b]]}this._nRounds=e,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return t=n(t),s(t,this._keySchedule,a.SUB_MIX,a.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var l=this.encryptBlockRaw(t),e=i.allocUnsafe(16);return e.writeUInt32BE(l[0],0),e.writeUInt32BE(l[1],4),e.writeUInt32BE(l[2],8),e.writeUInt32BE(l[3],12),e},u.prototype.decryptBlock=function(t){t=n(t);var l=t[1];t[1]=t[3],t[3]=l;var e=s(t,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX,this._nRounds),c=i.allocUnsafe(16);return c.writeUInt32BE(e[0],0),c.writeUInt32BE(e[3],4),c.writeUInt32BE(e[2],8),c.writeUInt32BE(e[1],12),c},u.prototype.scrub=function(){c(this._keySchedule),c(this._invKeySchedule),c(this._key)},l.exports.AES=u},{"safe-buffer":494}],187:[function(t,l,e){"use strict";var i=t("./aes"),n=t("safe-buffer").Buffer,c=t("cipher-base"),s=t("inherits"),d=t("./ghash"),a=t("buffer-xor"),u=t("./incr32");function o(t,l){var e=0;t.length!==l.length&&e++;for(var i=Math.min(t.length,l.length),n=0;n<i;++n)e+=t[n]^l[n];return e}function r(t,l,e){if(12===l.length)return t._finID=n.concat([l,n.from([0,0,0,1])]),n.concat([l,n.from([0,0,0,2])]);var i=new d(e),c=l.length,s=c%16;i.update(l),s&&(s=16-s,i.update(n.alloc(s,0))),i.update(n.alloc(8,0));var a=8*c,o=n.alloc(8);o.writeUIntBE(a,0,8),i.update(o),t._finID=i.state;var r=n.from(t._finID);return u(r),r}function b(t,l,e,s){c.call(this);var a=n.alloc(4,0);this._cipher=new i.AES(l);var u=this._cipher.encryptBlock(a);this._ghash=new d(u),e=r(this,e,u),this._prev=n.from(e),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}s(b,c),b.prototype._update=function(t){if(!this._called&&this._alen){var l=16-this._alen%16;l<16&&(l=n.alloc(l,0),this._ghash.update(l))}this._called=!0;var e=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(e),this._len+=t.length,e},b.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=a(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&o(t,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=t,this._cipher.scrub()},b.prototype.getAuthTag=function(){if(this._decrypt||!n.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag},b.prototype.setAuthTag=function(t){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=t},b.prototype.setAAD=function(t){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(t),this._alen+=t.length},l.exports=b},{"./aes":186,"./ghash":191,"./incr32":192,"buffer-xor":217,"cipher-base":218,inherits:387,"safe-buffer":494}],188:[function(t,l,e){"use strict";var i=t("./encrypter"),n=t("./decrypter"),c=t("./modes/list.json");function s(){return Object.keys(c)}e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=s},{"./decrypter":189,"./encrypter":190,"./modes/list.json":200}],189:[function(t,l,e){"use strict";var i=t("./authCipher"),n=t("safe-buffer").Buffer,c=t("./modes"),s=t("./streamCipher"),d=t("cipher-base"),a=t("./aes"),u=t("evp_bytestokey"),o=t("inherits");function r(t,l,e){d.call(this),this._cache=new b,this._last=void 0,this._cipher=new a.AES(l),this._prev=n.from(e),this._mode=t,this._autopadding=!0}function b(){this.cache=n.allocUnsafe(0)}function h(t){var l=t[15];if(l<1||l>16)throw new Error("unable to decrypt data");var e=-1;while(++e<l)if(t[e+(16-l)]!==l)throw new Error("unable to decrypt data");if(16!==l)return t.slice(0,16-l)}function Z(t,l,e){var d=c[t.toLowerCase()];if(!d)throw new TypeError("invalid suite type");if("string"===typeof e&&(e=n.from(e)),"GCM"!==d.mode&&e.length!==d.iv)throw new TypeError("invalid iv length "+e.length);if("string"===typeof l&&(l=n.from(l)),l.length!==d.key/8)throw new TypeError("invalid key length "+l.length);return"stream"===d.type?new s(d.module,l,e,!0):"auth"===d.type?new i(d.module,l,e,!0):new r(d.module,l,e)}function m(t,l){var e=c[t.toLowerCase()];if(!e)throw new TypeError("invalid suite type");var i=u(l,!1,e.key,e.iv);return Z(t,i.key,i.iv)}o(r,d),r.prototype._update=function(t){var l,e;this._cache.add(t);var i=[];while(l=this._cache.get(this._autopadding))e=this._mode.decrypt(this,l),i.push(e);return n.concat(i)},r.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return h(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")},r.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},b.prototype.add=function(t){this.cache=n.concat([this.cache,t])},b.prototype.get=function(t){var l;if(t){if(this.cache.length>16)return l=this.cache.slice(0,16),this.cache=this.cache.slice(16),l}else if(this.cache.length>=16)return l=this.cache.slice(0,16),this.cache=this.cache.slice(16),l;return null},b.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=m,e.createDecipheriv=Z},{"./aes":186,"./authCipher":187,"./modes":199,"./streamCipher":202,"cipher-base":218,evp_bytestokey:368,inherits:387,"safe-buffer":494}],190:[function(t,l,e){"use strict";var i=t("./modes"),n=t("./authCipher"),c=t("safe-buffer").Buffer,s=t("./streamCipher"),d=t("cipher-base"),a=t("./aes"),u=t("evp_bytestokey"),o=t("inherits");function r(t,l,e){d.call(this),this._cache=new h,this._cipher=new a.AES(l),this._prev=c.from(e),this._mode=t,this._autopadding=!0}o(r,d),r.prototype._update=function(t){var l,e;this._cache.add(t);var i=[];while(l=this._cache.get())e=this._mode.encrypt(this,l),i.push(e);return c.concat(i)};var b=c.alloc(16,16);function h(){this.cache=c.allocUnsafe(0)}function Z(t,l,e){var d=i[t.toLowerCase()];if(!d)throw new TypeError("invalid suite type");if("string"===typeof l&&(l=c.from(l)),l.length!==d.key/8)throw new TypeError("invalid key length "+l.length);if("string"===typeof e&&(e=c.from(e)),"GCM"!==d.mode&&e.length!==d.iv)throw new TypeError("invalid iv length "+e.length);return"stream"===d.type?new s(d.module,l,e):"auth"===d.type?new n(d.module,l,e):new r(d.module,l,e)}function m(t,l){var e=i[t.toLowerCase()];if(!e)throw new TypeError("invalid suite type");var n=u(l,!1,e.key,e.iv);return Z(t,n.key,n.iv)}r.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(b))throw this._cipher.scrub(),new Error("data not multiple of block length")},r.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},h.prototype.add=function(t){this.cache=c.concat([this.cache,t])},h.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},h.prototype.flush=function(){var t=16-this.cache.length,l=c.allocUnsafe(t),e=-1;while(++e<t)l.writeUInt8(t,e);return c.concat([this.cache,l])},e.createCipheriv=Z,e.createCipher=m},{"./aes":186,"./authCipher":187,"./modes":199,"./streamCipher":202,"cipher-base":218,evp_bytestokey:368,inherits:387,"safe-buffer":494}],191:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=i.alloc(16,0);function c(t){return[t.readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)]}function s(t){var l=i.allocUnsafe(16);return l.writeUInt32BE(t[0]>>>0,0),l.writeUInt32BE(t[1]>>>0,4),l.writeUInt32BE(t[2]>>>0,8),l.writeUInt32BE(t[3]>>>0,12),l}function d(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}d.prototype.ghash=function(t){var l=-1;while(++l<t.length)this.state[l]^=t[l];this._multiply()},d.prototype._multiply=function(){var t,l,e,i=c(this.h),n=[0,0,0,0],d=-1;while(++d<128){for(l=0!==(this.state[~~(d/8)]&1<<7-d%8),l&&(n[0]^=i[0],n[1]^=i[1],n[2]^=i[2],n[3]^=i[3]),e=0!==(1&i[3]),t=3;t>0;t--)i[t]=i[t]>>>1|(1&i[t-1])<<31;i[0]=i[0]>>>1,e&&(i[0]=i[0]^225<<24)}this.state=s(n)},d.prototype.update=function(t){var l;this.cache=i.concat([this.cache,t]);while(this.cache.length>=16)l=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(l)},d.prototype.final=function(t,l){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(s([0,t,0,l])),this.state},l.exports=d},{"safe-buffer":494}],192:[function(t,l,e){"use strict";function i(t){var l,e=t.length;while(e--){if(l=t.readUInt8(e),255!==l){l++,t.writeUInt8(l,e);break}t.writeUInt8(0,e)}}l.exports=i},{}],193:[function(t,l,e){"use strict";var i=t("buffer-xor");e.encrypt=function(t,l){var e=i(l,t._prev);return t._prev=t._cipher.encryptBlock(e),t._prev},e.decrypt=function(t,l){var e=t._prev;t._prev=l;var n=t._cipher.decryptBlock(l);return i(n,e)}},{"buffer-xor":217}],194:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("buffer-xor");function c(t,l,e){var c=l.length,s=n(l,t._cache);return t._cache=t._cache.slice(c),t._prev=i.concat([t._prev,e?l:s]),s}e.encrypt=function(t,l,e){var n,s=i.allocUnsafe(0);while(l.length){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=i.allocUnsafe(0)),!(t._cache.length<=l.length)){s=i.concat([s,c(t,l,e)]);break}n=t._cache.length,s=i.concat([s,c(t,l.slice(0,n),e)]),l=l.slice(n)}return s}},{"buffer-xor":217,"safe-buffer":494}],195:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer;function n(t,l,e){var i,n,s,d=-1,a=8,u=0;while(++d<a)i=t._cipher.encryptBlock(t._prev),n=l&1<<7-d?128:0,s=i[0]^n,u+=(128&s)>>d%8,t._prev=c(t._prev,e?n:s);return u}function c(t,l){var e=t.length,n=-1,c=i.allocUnsafe(t.length);t=i.concat([t,i.from([l])]);while(++n<e)c[n]=t[n]<<1|t[n+1]>>7;return c}e.encrypt=function(t,l,e){var c=l.length,s=i.allocUnsafe(c),d=-1;while(++d<c)s[d]=n(t,l[d],e);return s}},{"safe-buffer":494}],196:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer;function n(t,l,e){var n=t._cipher.encryptBlock(t._prev),c=n[0]^l;return t._prev=i.concat([t._prev.slice(1),i.from([e?l:c])]),c}e.encrypt=function(t,l,e){var c=l.length,s=i.allocUnsafe(c),d=-1;while(++d<c)s[d]=n(t,l[d],e);return s}},{"safe-buffer":494}],197:[function(t,l,e){"use strict";var i=t("buffer-xor"),n=t("safe-buffer").Buffer,c=t("../incr32");function s(t){var l=t._cipher.encryptBlockRaw(t._prev);return c(t._prev),l}var d=16;e.encrypt=function(t,l){var e=Math.ceil(l.length/d),c=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(e*d)]);for(var a=0;a<e;a++){var u=s(t),o=c+a*d;t._cache.writeUInt32BE(u[0],o+0),t._cache.writeUInt32BE(u[1],o+4),t._cache.writeUInt32BE(u[2],o+8),t._cache.writeUInt32BE(u[3],o+12)}var r=t._cache.slice(0,l.length);return t._cache=t._cache.slice(l.length),i(l,r)}},{"../incr32":192,"buffer-xor":217,"safe-buffer":494}],198:[function(t,l,e){"use strict";e.encrypt=function(t,l){return t._cipher.encryptBlock(l)},e.decrypt=function(t,l){return t._cipher.decryptBlock(l)}},{}],199:[function(t,l,e){"use strict";var i={ECB:t("./ecb"),CBC:t("./cbc"),CFB:t("./cfb"),CFB8:t("./cfb8"),CFB1:t("./cfb1"),OFB:t("./ofb"),CTR:t("./ctr"),GCM:t("./ctr")},n=t("./list.json");for(var c in n)n[c].module=i[n[c].mode];l.exports=n},{"./cbc":193,"./cfb":194,"./cfb1":195,"./cfb8":196,"./ctr":197,"./ecb":198,"./list.json":200,"./ofb":201}],200:[function(t,l,e){l.exports={"aes-128-ecb":{cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},"aes-192-ecb":{cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},"aes-256-ecb":{cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},"aes-128-cbc":{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},"aes-192-cbc":{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},"aes-256-cbc":{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},aes128:{cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},aes192:{cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},aes256:{cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},"aes-128-cfb":{cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},"aes-192-cfb":{cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},"aes-256-cfb":{cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},"aes-128-cfb8":{cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},"aes-192-cfb8":{cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},"aes-256-cfb8":{cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},"aes-128-cfb1":{cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},"aes-192-cfb1":{cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},"aes-256-cfb1":{cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},"aes-128-ofb":{cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},"aes-192-ofb":{cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},"aes-256-ofb":{cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},"aes-128-ctr":{cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},"aes-192-ctr":{cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},"aes-256-ctr":{cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},"aes-128-gcm":{cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},"aes-192-gcm":{cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},"aes-256-gcm":{cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}}},{}],201:[function(t,l,e){(function(l){"use strict";var i=t("buffer-xor");function n(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(t,e){while(t._cache.length<e.length)t._cache=l.concat([t._cache,n(t)]);var c=t._cache.slice(0,e.length);return t._cache=t._cache.slice(e.length),i(e,c)}}).call(this,t("buffer").Buffer)},{buffer:216,"buffer-xor":217}],202:[function(t,l,e){"use strict";var i=t("./aes"),n=t("safe-buffer").Buffer,c=t("cipher-base"),s=t("inherits");function d(t,l,e,s){c.call(this),this._cipher=new i.AES(l),this._prev=n.from(e),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._mode=t}s(d,c),d.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},d.prototype._final=function(){this._cipher.scrub()},l.exports=d},{"./aes":186,"cipher-base":218,inherits:387,"safe-buffer":494}],203:[function(t,l,e){"use strict";var i=t("browserify-des"),n=t("browserify-aes/browser"),c=t("browserify-aes/modes"),s=t("browserify-des/modes"),d=t("evp_bytestokey");function a(t,l){var e,i;if(t=t.toLowerCase(),c[t])e=c[t].key,i=c[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");e=8*s[t].key,i=s[t].iv}var n=d(l,!1,e,i);return o(t,n.key,n.iv)}function u(t,l){var e,i;if(t=t.toLowerCase(),c[t])e=c[t].key,i=c[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");e=8*s[t].key,i=s[t].iv}var n=d(l,!1,e,i);return r(t,n.key,n.iv)}function o(t,l,e){if(t=t.toLowerCase(),c[t])return n.createCipheriv(t,l,e);if(s[t])return new i({key:l,iv:e,mode:t});throw new TypeError("invalid suite type")}function r(t,l,e){if(t=t.toLowerCase(),c[t])return n.createDecipheriv(t,l,e);if(s[t])return new i({key:l,iv:e,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function b(){return Object.keys(s).concat(n.getCiphers())}e.createCipher=e.Cipher=a,e.createCipheriv=e.Cipheriv=o,e.createDecipher=e.Decipher=u,e.createDecipheriv=e.Decipheriv=r,e.listCiphers=e.getCiphers=b},{"browserify-aes/browser":188,"browserify-aes/modes":199,"browserify-des":204,"browserify-des/modes":205,evp_bytestokey:368}],204:[function(t,l,e){"use strict";var i=t("cipher-base"),n=t("des.js"),c=t("inherits"),s=t("safe-buffer").Buffer,d={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function a(t){i.call(this);var l,e=t.mode.toLowerCase(),n=d[e];l=t.decrypt?"decrypt":"encrypt";var c=t.key;s.isBuffer(c)||(c=s.from(c)),"des-ede"!==e&&"des-ede-cbc"!==e||(c=s.concat([c,c.slice(0,8)]));var a=t.iv;s.isBuffer(a)||(a=s.from(a)),this._des=n.create({key:c,iv:a,type:l})}d.des=d["des-cbc"],d.des3=d["des-ede3-cbc"],l.exports=a,c(a,i),a.prototype._update=function(t){return s.from(this._des.update(t))},a.prototype._final=function(){return s.from(this._des.final())}},{"cipher-base":218,"des.js":339,inherits:387,"safe-buffer":494}],205:[function(t,l,e){"use strict";e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},{}],206:[function(t,l,e){(function(e){"use strict";var i=t("bn.js"),n=t("randombytes");function c(t){var l=d(t),e=l.toRed(i.mont(t.modulus)).redPow(new i(t.publicExponent)).fromRed();return{blinder:e,unblinder:l.invm(t.modulus)}}function s(t,l){var n=c(l),s=l.modulus.byteLength(),d=(i.mont(l.modulus),new i(t).mul(n.blinder).umod(l.modulus)),a=d.toRed(i.mont(l.prime1)),u=d.toRed(i.mont(l.prime2)),o=l.coefficient,r=l.prime1,b=l.prime2,h=a.redPow(l.exponent1),Z=u.redPow(l.exponent2);h=h.fromRed(),Z=Z.fromRed();var m=h.isub(Z).imul(o).umod(r);return m.imul(b),Z.iadd(m),new e(Z.imul(n.unblinder).umod(l.modulus).toArray(!1,s))}function d(t){var l=t.modulus.byteLength(),e=new i(n(l));while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2))e=new i(n(l));return e}l.exports=s,s.getr=d}).call(this,t("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],208:[function(t,l,e){"use strict";l.exports=t("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(t,l,e){l.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(t,l,e){l.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("create-hash"),c=t("readable-stream"),s=t("inherits"),d=t("./sign"),a=t("./verify"),u=t("./algorithms.json");function o(t){c.Writable.call(this);var l=u[t];if(!l)throw new Error("Unknown message digest");this._hashType=l.hash,this._hash=n(l.hash),this._tag=l.id,this._signType=l.sign}function r(t){c.Writable.call(this);var l=u[t];if(!l)throw new Error("Unknown message digest");this._hash=n(l.hash),this._tag=l.id,this._signType=l.sign}function b(t){return new o(t)}function h(t){return new r(t)}Object.keys(u).forEach((function(t){u[t].id=i.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),s(o,c.Writable),o.prototype._write=function(t,l,e){this._hash.update(t),e()},o.prototype.update=function(t,l){return"string"===typeof t&&(t=i.from(t,l)),this._hash.update(t),this},o.prototype.sign=function(t,l){this.end();var e=this._hash.digest(),i=d(e,t,this._hashType,this._signType,this._tag);return l?i.toString(l):i},s(r,c.Writable),r.prototype._write=function(t,l,e){this._hash.update(t),e()},r.prototype.update=function(t,l){return"string"===typeof t&&(t=i.from(t,l)),this._hash.update(t),this},r.prototype.verify=function(t,l,e){"string"===typeof l&&(l=i.from(l,e)),this.end();var n=this._hash.digest();return a(l,n,t,this._signType,this._tag)},l.exports={Sign:b,Verify:h,createSign:b,createVerify:h}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("create-hmac"),c=t("browserify-rsa"),s=t("elliptic").ec,d=t("bn.js"),a=t("parse-asn1"),u=t("./curves.json");function o(t,l,e,n,s){var d=a(l);if(d.curve){if("ecdsa"!==n&&"ecdsa/rsa"!==n)throw new Error("wrong private key type");return r(t,d)}if("dsa"===d.type){if("dsa"!==n)throw new Error("wrong private key type");return b(t,d,e)}if("rsa"!==n&&"ecdsa/rsa"!==n)throw new Error("wrong private key type");t=i.concat([s,t]);var u=d.modulus.byteLength(),o=[0,1];while(t.length+o.length+1<u)o.push(255);o.push(0);var h=-1;while(++h<t.length)o.push(t[h]);var Z=c(o,d);return Z}function r(t,l){var e=u[l.curve.join(".")];if(!e)throw new Error("unknown curve "+l.curve.join("."));var n=new s(e),c=n.keyFromPrivate(l.privateKey),d=c.sign(t);return i.from(d.toDER())}function b(t,l,e){var i,n=l.params.priv_key,c=l.params.p,s=l.params.q,a=l.params.g,u=new d(0),o=m(t,s).mod(s),r=!1,b=Z(n,s,t,e);while(!1===r)i=p(s,b,e),u=W(a,i,c,s),r=i.invm(s).imul(o.add(n.mul(u))).mod(s),0===r.cmpn(0)&&(r=!1,u=new d(0));return h(u,r)}function h(t,l){t=t.toArray(),l=l.toArray(),128&t[0]&&(t=[0].concat(t)),128&l[0]&&(l=[0].concat(l));var e=t.length+l.length+4,n=[48,e,2,t.length];return n=n.concat(t,[2,l.length],l),i.from(n)}function Z(t,l,e,c){if(t=i.from(t.toArray()),t.length<l.byteLength()){var s=i.alloc(l.byteLength()-t.length);t=i.concat([s,t])}var d=e.length,a=y(e,l),u=i.alloc(d);u.fill(1);var o=i.alloc(d);return o=n(c,o).update(u).update(i.from([0])).update(t).update(a).digest(),u=n(c,o).update(u).digest(),o=n(c,o).update(u).update(i.from([1])).update(t).update(a).digest(),u=n(c,o).update(u).digest(),{k:o,v:u}}function m(t,l){var e=new d(t),i=(t.length<<3)-l.bitLength();return i>0&&e.ishrn(i),e}function y(t,l){t=m(t,l),t=t.mod(l);var e=i.from(t.toArray());if(e.length<l.byteLength()){var n=i.alloc(l.byteLength()-e.length);e=i.concat([n,e])}return e}function p(t,l,e){var c,s;do{c=i.alloc(0);while(8*c.length<t.bitLength())l.v=n(e,l.k).update(l.v).digest(),c=i.concat([c,l.v]);s=m(c,t),l.k=n(e,l.k).update(l.v).update(i.from([0])).digest(),l.v=n(e,l.k).update(l.v).digest()}while(-1!==s.cmp(t));return s}function W(t,l,e,i){return t.toRed(d.mont(e)).redPow(l).fromRed().mod(i)}l.exports=o,l.exports.getKey=Z,l.exports.makeKey=p},{"./curves.json":210,"bn.js":183,"browserify-rsa":206,"create-hmac":333,elliptic:350,"parse-asn1":459,"safe-buffer":214}],213:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("bn.js"),c=t("elliptic").ec,s=t("parse-asn1"),d=t("./curves.json");function a(t,l,e,c,d){var a=s(e);if("ec"===a.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return u(t,l,a)}if("dsa"===a.type){if("dsa"!==c)throw new Error("wrong public key type");return o(t,l,a)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");l=i.concat([d,l]);var r=a.modulus.byteLength(),b=[1],h=0;while(l.length+b.length+2<r)b.push(255),h++;b.push(0);var Z=-1;while(++Z<l.length)b.push(l[Z]);b=i.from(b);var m=n.mont(a.modulus);t=new n(t).toRed(m),t=t.redPow(new n(a.publicExponent)),t=i.from(t.fromRed().toArray());var y=h<8?1:0;r=Math.min(t.length,b.length),t.length!==b.length&&(y=1),Z=-1;while(++Z<r)y|=t[Z]^b[Z];return 0===y}function u(t,l,e){var i=d[e.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+e.data.algorithm.curve.join("."));var n=new c(i),s=e.data.subjectPrivateKey.data;return n.verify(l,t,s)}function o(t,l,e){var i=e.data.p,c=e.data.q,d=e.data.g,a=e.data.pub_key,u=s.signature.decode(t,"der"),o=u.s,b=u.r;r(o,c),r(b,c);var h=n.mont(i),Z=o.invm(c),m=d.toRed(h).redPow(new n(l).mul(Z).mod(c)).fromRed().mul(a.toRed(h).redPow(b.mul(Z).mod(c)).fromRed()).mod(i).mod(c);return 0===m.cmp(b)}function r(t,l){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(l)>=l)throw new Error("invalid sig")}l.exports=a},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(t,l,e){"use strict";
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var i=t("buffer"),n=i.Buffer;function c(t,l){for(var e in t)l[e]=t[e]}function s(t,l,e){return n(t,l,e)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?l.exports=i:(c(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),c(n,s),s.from=function(t,l,e){if("number"===typeof t)throw new TypeError("Argument must not be a number");return n(t,l,e)},s.alloc=function(t,l,e){if("number"!==typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==l?"string"===typeof e?i.fill(l,e):i.fill(l):i.fill(0),i},s.allocUnsafe=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},{buffer:216}],215:[function(t,l,e){arguments[4][185][0].apply(e,arguments)},{dup:185}],216:[function(t,l,e){(function(l){
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("base64-js"),c=t("ieee754");e.Buffer=l,e.SlowBuffer=W,e.INSPECT_MAX_BYTES=50;var s=2147483647;function d(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(l){return!1}}function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return e.__proto__=l.prototype,e}function l(t,l,e){if("number"===typeof t){if("string"===typeof l)throw new TypeError('The "string" argument must be of type string. Received type number');return b(t)}return u(t,l,e)}function u(t,e,n){if("string"===typeof t)return h(t,e);if(ArrayBuffer.isView(t))return Z(t);if(null==t)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+i(t));if(_(t,ArrayBuffer)||t&&_(t.buffer,ArrayBuffer))return m(t,e,n);if("number"===typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var c=t.valueOf&&t.valueOf();if(null!=c&&c!==t)return l.from(c,e,n);var s=y(t);if(s)return s;if("undefined"!==typeof Symbol&&null!=Symbol.toPrimitive&&"function"===typeof t[Symbol.toPrimitive])return l.from(t[Symbol.toPrimitive]("string"),e,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+i(t))}function o(t){if("number"!==typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function r(t,l,e){return o(t),t<=0?a(t):void 0!==l?"string"===typeof e?a(t).fill(l,e):a(t).fill(l):a(t)}function b(t){return o(t),a(t<0?0:0|p(t))}function h(t,e){if("string"===typeof e&&""!==e||(e="utf8"),!l.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var i=0|G(t,e),n=a(i),c=n.write(t,e);return c!==i&&(n=n.slice(0,c)),n}function Z(t){for(var l=t.length<0?0:0|p(t.length),e=a(l),i=0;i<l;i+=1)e[i]=255&t[i];return e}function m(t,e,i){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(i||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===e&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,e):new Uint8Array(t,e,i),n.__proto__=l.prototype,n}function y(t){if(l.isBuffer(t)){var e=0|p(t.length),i=a(e);return 0===i.length||t.copy(i,0,0,e),i}return void 0!==t.length?"number"!==typeof t.length||q(t.length)?a(0):Z(t):"Buffer"===t.type&&Array.isArray(t.data)?Z(t.data):void 0}function p(t){if(t>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function W(t){return+t!=t&&(t=0),l.alloc(+t)}function G(t,e){if(l.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||_(t,ArrayBuffer))return t.byteLength;if("string"!==typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+i(t));var n=t.length,c=arguments.length>2&&!0===arguments[2];if(!c&&0===n)return 0;for(var s=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return H(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return P(t).length;default:if(s)return c?-1:H(t).length;e=(""+e).toLowerCase(),s=!0}}function X(t,l,e){var i=!1;if((void 0===l||l<0)&&(l=0),l>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if(e>>>=0,l>>>=0,e<=l)return"";t||(t="utf8");while(1)switch(t){case"hex":return J(this,l,e);case"utf8":case"utf-8":return z(this,l,e);case"ascii":return k(this,l,e);case"latin1":case"binary":return C(this,l,e);case"base64":return T(this,l,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g(this,l,e);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function Y(t,l,e){var i=t[l];t[l]=t[e],t[e]=i}function N(t,e,i,n,c){if(0===t.length)return-1;if("string"===typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,q(i)&&(i=c?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(c)return-1;i=t.length-1}else if(i<0){if(!c)return-1;i=0}if("string"===typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:V(t,e,i,n,c);if("number"===typeof e)return e&=255,"function"===typeof Uint8Array.prototype.indexOf?c?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):V(t,[e],i,n,c);throw new TypeError("val must be string, number or Buffer")}function V(t,l,e,i,n){var c,s=1,d=t.length,a=l.length;if(void 0!==i&&(i=String(i).toLowerCase(),"ucs2"===i||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||l.length<2)return-1;s=2,d/=2,a/=2,e/=2}function u(t,l){return 1===s?t[l]:t.readUInt16BE(l*s)}if(n){var o=-1;for(c=e;c<d;c++)if(u(t,c)===u(l,-1===o?0:c-o)){if(-1===o&&(o=c),c-o+1===a)return o*s}else-1!==o&&(c-=c-o),o=-1}else for(e+a>d&&(e=d-a),c=e;c>=0;c--){for(var r=!0,b=0;b<a;b++)if(u(t,c+b)!==u(l,b)){r=!1;break}if(r)return c}return-1}function M(t,l,e,i){e=Number(e)||0;var n=t.length-e;i?(i=Number(i),i>n&&(i=n)):i=n;var c=l.length;i>c/2&&(i=c/2);for(var s=0;s<i;++s){var d=parseInt(l.substr(2*s,2),16);if(q(d))return s;t[e+s]=d}return s}function L(t,l,e,i){return A(H(l,t.length-e),t,e,i)}function I(t,l,e,i){return A(Q(l),t,e,i)}function w(t,l,e,i){return I(t,l,e,i)}function f(t,l,e,i){return A(P(l),t,e,i)}function R(t,l,e,i){return A(B(l,t.length-e),t,e,i)}function T(t,l,e){return 0===l&&e===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(l,e))}function z(t,l,e){e=Math.min(t.length,e);var i=[],n=l;while(n<e){var c,s,d,a,u=t[n],o=null,r=u>239?4:u>223?3:u>191?2:1;if(n+r<=e)switch(r){case 1:u<128&&(o=u);break;case 2:c=t[n+1],128===(192&c)&&(a=(31&u)<<6|63&c,a>127&&(o=a));break;case 3:c=t[n+1],s=t[n+2],128===(192&c)&&128===(192&s)&&(a=(15&u)<<12|(63&c)<<6|63&s,a>2047&&(a<55296||a>57343)&&(o=a));break;case 4:c=t[n+1],s=t[n+2],d=t[n+3],128===(192&c)&&128===(192&s)&&128===(192&d)&&(a=(15&u)<<18|(63&c)<<12|(63&s)<<6|63&d,a>65535&&a<1114112&&(o=a))}null===o?(o=65533,r=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=r}return S(i)}e.kMaxLength=s,l.TYPED_ARRAY_SUPPORT=d(),l.TYPED_ARRAY_SUPPORT||"undefined"===typeof console||"function"!==typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(l.prototype,"parent",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.buffer}}),Object.defineProperty(l.prototype,"offset",{enumerable:!0,get:function(){if(l.isBuffer(this))return this.byteOffset}}),"undefined"!==typeof Symbol&&null!=Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),l.poolSize=8192,l.from=function(t,l,e){return u(t,l,e)},l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,l.alloc=function(t,l,e){return r(t,l,e)},l.allocUnsafe=function(t){return b(t)},l.allocUnsafeSlow=function(t){return b(t)},l.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==l.prototype},l.compare=function(t,e){if(_(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),_(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(t)||!l.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var i=t.length,n=e.length,c=0,s=Math.min(i,n);c<s;++c)if(t[c]!==e[c]){i=t[c],n=e[c];break}return i<n?-1:n<i?1:0},l.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},l.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return l.alloc(0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var n=l.allocUnsafe(e),c=0;for(i=0;i<t.length;++i){var s=t[i];if(_(s,Uint8Array)&&(s=l.from(s)),!l.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,c),c+=s.length}return n},l.byteLength=G,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var l=0;l<t;l+=2)Y(this,l,l+1);return this},l.prototype.swap32=function(){var t=this.length;if(t%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var l=0;l<t;l+=4)Y(this,l,l+3),Y(this,l+1,l+2);return this},l.prototype.swap64=function(){var t=this.length;if(t%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var l=0;l<t;l+=8)Y(this,l,l+7),Y(this,l+1,l+6),Y(this,l+2,l+5),Y(this,l+3,l+4);return this},l.prototype.toString=function(){var t=this.length;return 0===t?"":0===arguments.length?z(this,0,t):X.apply(this,arguments)},l.prototype.toLocaleString=l.prototype.toString,l.prototype.equals=function(t){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===l.compare(this,t)},l.prototype.inspect=function(){var t="",l=e.INSPECT_MAX_BYTES;return t=this.toString("hex",0,l).replace(/(.{2})/g,"$1 ").trim(),this.length>l&&(t+=" ... "),"<Buffer "+t+">"},l.prototype.compare=function(t,e,n,c,s){if(_(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+i(t));if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===c&&(c=0),void 0===s&&(s=this.length),e<0||n>t.length||c<0||s>this.length)throw new RangeError("out of range index");if(c>=s&&e>=n)return 0;if(c>=s)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,c>>>=0,s>>>=0,this===t)return 0;for(var d=s-c,a=n-e,u=Math.min(d,a),o=this.slice(c,s),r=t.slice(e,n),b=0;b<u;++b)if(o[b]!==r[b]){d=o[b],a=r[b];break}return d<a?-1:a<d?1:0},l.prototype.includes=function(t,l,e){return-1!==this.indexOf(t,l,e)},l.prototype.indexOf=function(t,l,e){return N(this,t,l,e,!0)},l.prototype.lastIndexOf=function(t,l,e){return N(this,t,l,e,!1)},l.prototype.write=function(t,l,e,i){if(void 0===l)i="utf8",e=this.length,l=0;else if(void 0===e&&"string"===typeof l)i=l,e=this.length,l=0;else{if(!isFinite(l))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");l>>>=0,isFinite(e)?(e>>>=0,void 0===i&&(i="utf8")):(i=e,e=void 0)}var n=this.length-l;if((void 0===e||e>n)&&(e=n),t.length>0&&(e<0||l<0)||l>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var c=!1;;)switch(i){case"hex":return M(this,t,l,e);case"utf8":case"utf-8":return L(this,t,l,e);case"ascii":return I(this,t,l,e);case"latin1":case"binary":return w(this,t,l,e);case"base64":return f(this,t,l,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,l,e);default:if(c)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),c=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var x=4096;function S(t){var l=t.length;if(l<=x)return String.fromCharCode.apply(String,t);var e="",i=0;while(i<l)e+=String.fromCharCode.apply(String,t.slice(i,i+=x));return e}function k(t,l,e){var i="";e=Math.min(t.length,e);for(var n=l;n<e;++n)i+=String.fromCharCode(127&t[n]);return i}function C(t,l,e){var i="";e=Math.min(t.length,e);for(var n=l;n<e;++n)i+=String.fromCharCode(t[n]);return i}function J(t,l,e){var i=t.length;(!l||l<0)&&(l=0),(!e||e<0||e>i)&&(e=i);for(var n="",c=l;c<e;++c)n+=E(t[c]);return n}function g(t,l,e){for(var i=t.slice(l,e),n="",c=0;c<i.length;c+=2)n+=String.fromCharCode(i[c]+256*i[c+1]);return n}function F(t,l,e){if(t%1!==0||t<0)throw new RangeError("offset is not uint");if(t+l>e)throw new RangeError("Trying to access beyond buffer length")}function j(t,e,i,n,c,s){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>c||e<s)throw new RangeError('"value" argument is out of bounds');if(i+n>t.length)throw new RangeError("Index out of range")}function v(t,l,e,i,n,c){if(e+i>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function D(t,l,e,i,n){return l=+l,e>>>=0,n||v(t,l,e,4,34028234663852886e22,-34028234663852886e22),c.write(t,l,e,i,23,4),e+4}function U(t,l,e,i,n){return l=+l,e>>>=0,n||v(t,l,e,8,17976931348623157e292,-17976931348623157e292),c.write(t,l,e,i,52,8),e+8}l.prototype.slice=function(t,e){var i=this.length;t=~~t,e=void 0===e?i:~~e,t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),e<t&&(e=t);var n=this.subarray(t,e);return n.__proto__=l.prototype,n},l.prototype.readUIntLE=function(t,l,e){t>>>=0,l>>>=0,e||F(t,l,this.length);var i=this[t],n=1,c=0;while(++c<l&&(n*=256))i+=this[t+c]*n;return i},l.prototype.readUIntBE=function(t,l,e){t>>>=0,l>>>=0,e||F(t,l,this.length);var i=this[t+--l],n=1;while(l>0&&(n*=256))i+=this[t+--l]*n;return i},l.prototype.readUInt8=function(t,l){return t>>>=0,l||F(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,l){return t>>>=0,l||F(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,l){return t>>>=0,l||F(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,l){return t>>>=0,l||F(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,l){return t>>>=0,l||F(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,l,e){t>>>=0,l>>>=0,e||F(t,l,this.length);var i=this[t],n=1,c=0;while(++c<l&&(n*=256))i+=this[t+c]*n;return n*=128,i>=n&&(i-=Math.pow(2,8*l)),i},l.prototype.readIntBE=function(t,l,e){t>>>=0,l>>>=0,e||F(t,l,this.length);var i=l,n=1,c=this[t+--i];while(i>0&&(n*=256))c+=this[t+--i]*n;return n*=128,c>=n&&(c-=Math.pow(2,8*l)),c},l.prototype.readInt8=function(t,l){return t>>>=0,l||F(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,l){t>>>=0,l||F(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},l.prototype.readInt16BE=function(t,l){t>>>=0,l||F(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},l.prototype.readInt32LE=function(t,l){return t>>>=0,l||F(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,l){return t>>>=0,l||F(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,l){return t>>>=0,l||F(t,4,this.length),c.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,l){return t>>>=0,l||F(t,4,this.length),c.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,l){return t>>>=0,l||F(t,8,this.length),c.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,l){return t>>>=0,l||F(t,8,this.length),c.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,l,e,i){if(t=+t,l>>>=0,e>>>=0,!i){var n=Math.pow(2,8*e)-1;j(this,t,l,e,n,0)}var c=1,s=0;this[l]=255&t;while(++s<e&&(c*=256))this[l+s]=t/c&255;return l+e},l.prototype.writeUIntBE=function(t,l,e,i){if(t=+t,l>>>=0,e>>>=0,!i){var n=Math.pow(2,8*e)-1;j(this,t,l,e,n,0)}var c=e-1,s=1;this[l+c]=255&t;while(--c>=0&&(s*=256))this[l+c]=t/s&255;return l+e},l.prototype.writeUInt8=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,1,255,0),this[l]=255&t,l+1},l.prototype.writeUInt16LE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,2,65535,0),this[l]=255&t,this[l+1]=t>>>8,l+2},l.prototype.writeUInt16BE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,2,65535,0),this[l]=t>>>8,this[l+1]=255&t,l+2},l.prototype.writeUInt32LE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,4,4294967295,0),this[l+3]=t>>>24,this[l+2]=t>>>16,this[l+1]=t>>>8,this[l]=255&t,l+4},l.prototype.writeUInt32BE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,4,4294967295,0),this[l]=t>>>24,this[l+1]=t>>>16,this[l+2]=t>>>8,this[l+3]=255&t,l+4},l.prototype.writeIntLE=function(t,l,e,i){if(t=+t,l>>>=0,!i){var n=Math.pow(2,8*e-1);j(this,t,l,e,n-1,-n)}var c=0,s=1,d=0;this[l]=255&t;while(++c<e&&(s*=256))t<0&&0===d&&0!==this[l+c-1]&&(d=1),this[l+c]=(t/s>>0)-d&255;return l+e},l.prototype.writeIntBE=function(t,l,e,i){if(t=+t,l>>>=0,!i){var n=Math.pow(2,8*e-1);j(this,t,l,e,n-1,-n)}var c=e-1,s=1,d=0;this[l+c]=255&t;while(--c>=0&&(s*=256))t<0&&0===d&&0!==this[l+c+1]&&(d=1),this[l+c]=(t/s>>0)-d&255;return l+e},l.prototype.writeInt8=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,1,127,-128),t<0&&(t=255+t+1),this[l]=255&t,l+1},l.prototype.writeInt16LE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,2,32767,-32768),this[l]=255&t,this[l+1]=t>>>8,l+2},l.prototype.writeInt16BE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,2,32767,-32768),this[l]=t>>>8,this[l+1]=255&t,l+2},l.prototype.writeInt32LE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,4,2147483647,-2147483648),this[l]=255&t,this[l+1]=t>>>8,this[l+2]=t>>>16,this[l+3]=t>>>24,l+4},l.prototype.writeInt32BE=function(t,l,e){return t=+t,l>>>=0,e||j(this,t,l,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[l]=t>>>24,this[l+1]=t>>>16,this[l+2]=t>>>8,this[l+3]=255&t,l+4},l.prototype.writeFloatLE=function(t,l,e){return D(this,t,l,!0,e)},l.prototype.writeFloatBE=function(t,l,e){return D(this,t,l,!1,e)},l.prototype.writeDoubleLE=function(t,l,e){return U(this,t,l,!0,e)},l.prototype.writeDoubleBE=function(t,l,e){return U(this,t,l,!1,e)},l.prototype.copy=function(t,e,i,n){if(!l.isBuffer(t))throw new TypeError("argument should be a Buffer");if(i||(i=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<i&&(n=i),n===i)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-i&&(n=t.length-e+i);var c=n-i;if(this===t&&"function"===typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,i,n);else if(this===t&&i<e&&e<n)for(var s=c-1;s>=0;--s)t[s+e]=this[s+i];else Uint8Array.prototype.set.call(t,this.subarray(i,n),e);return c},l.prototype.fill=function(t,e,i,n){if("string"===typeof t){if("string"===typeof e?(n=e,e=0,i=this.length):"string"===typeof i&&(n=i,i=this.length),void 0!==n&&"string"!==typeof n)throw new TypeError("encoding must be a string");if("string"===typeof n&&!l.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var c=t.charCodeAt(0);("utf8"===n&&c<128||"latin1"===n)&&(t=c)}}else"number"===typeof t&&(t&=255);if(e<0||this.length<e||this.length<i)throw new RangeError("Out of range index");if(i<=e)return this;var s;if(e>>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"===typeof t)for(s=e;s<i;++s)this[s]=t;else{var d=l.isBuffer(t)?t:l.from(t,n),a=d.length;if(0===a)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(s=0;s<i-e;++s)this[s+e]=d[s%a]}return this};var O=/[^+/0-9A-Za-z-_]/g;function K(t){if(t=t.split("=")[0],t=t.trim().replace(O,""),t.length<2)return"";while(t.length%4!==0)t+="=";return t}function E(t){return t<16?"0"+t.toString(16):t.toString(16)}function H(t,l){var e;l=l||1/0;for(var i=t.length,n=null,c=[],s=0;s<i;++s){if(e=t.charCodeAt(s),e>55295&&e<57344){if(!n){if(e>56319){(l-=3)>-1&&c.push(239,191,189);continue}if(s+1===i){(l-=3)>-1&&c.push(239,191,189);continue}n=e;continue}if(e<56320){(l-=3)>-1&&c.push(239,191,189),n=e;continue}e=65536+(n-55296<<10|e-56320)}else n&&(l-=3)>-1&&c.push(239,191,189);if(n=null,e<128){if((l-=1)<0)break;c.push(e)}else if(e<2048){if((l-=2)<0)break;c.push(e>>6|192,63&e|128)}else if(e<65536){if((l-=3)<0)break;c.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((l-=4)<0)break;c.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return c}function Q(t){for(var l=[],e=0;e<t.length;++e)l.push(255&t.charCodeAt(e));return l}function B(t,l){for(var e,i,n,c=[],s=0;s<t.length;++s){if((l-=2)<0)break;e=t.charCodeAt(s),i=e>>8,n=e%256,c.push(n),c.push(i)}return c}function P(t){return n.toByteArray(K(t))}function A(t,l,e,i){for(var n=0;n<i;++n){if(n+e>=l.length||n>=t.length)break;l[n+e]=t[n]}return n}function _(t,l){return t instanceof l||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===l.name}function q(t){return t!==t}}).call(this,t("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(t,l,e){(function(t){"use strict";l.exports=function(l,e){for(var i=Math.min(l.length,e.length),n=new t(i),c=0;c<i;++c)n[c]=l[c]^e[c];return n}}).call(this,t("buffer").Buffer)},{buffer:216}],218:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("stream").Transform,c=t("string_decoder").StringDecoder,s=t("inherits");function d(t){n.call(this),this.hashMode="string"===typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}s(d,n),d.prototype.update=function(t,l,e){"string"===typeof t&&(t=i.from(t,l));var n=this._update(t);return this.hashMode?this:(e&&(n=this._toString(n,e)),n)},d.prototype.setAutoPadding=function(){},d.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},d.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},d.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},d.prototype._transform=function(t,l,e){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(n){i=n}finally{e(i)}},d.prototype._flush=function(t){var l;try{this.push(this.__final())}catch(e){l=e}t(l)},d.prototype._finalOrDigest=function(t){var l=this.__final()||i.alloc(0);return t&&(l=this._toString(l,t,!0)),l},d.prototype._toString=function(t,l,e){if(this._decoder||(this._decoder=new c(l),this._encoding=l),this._encoding!==l)throw new Error("can't switch encodings");var i=this._decoder.write(t);return e&&(i+=this._decoder.end()),i},l.exports=d},{inherits:387,"safe-buffer":494,stream:506,string_decoder:520}],219:[function(t,l,e){l.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},{}],220:[function(t,l,e){var i=t("../internals/is-object");l.exports=function(t){if(!i(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},{"../internals/is-object":263}],221:[function(t,l,e){var i=t("../internals/well-known-symbol"),n=t("../internals/object-create"),c=t("../internals/object-define-property"),s=i("unscopables"),d=Array.prototype;void 0==d[s]&&c.f(d,s,{configurable:!0,value:n(null)}),l.exports=function(t){d[s][t]=!0}},{"../internals/object-create":276,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],222:[function(t,l,e){l.exports=function(t,l,e){if(!(t instanceof l))throw TypeError("Incorrect "+(e?e+" ":"")+"invocation");return t}},{}],223:[function(t,l,e){var i=t("../internals/is-object");l.exports=function(t){if(!i(t))throw TypeError(String(t)+" is not an object");return t}},{"../internals/is-object":263}],224:[function(t,l,e){var i=t("../internals/to-indexed-object"),n=t("../internals/to-length"),c=t("../internals/to-absolute-index"),s=function(t){return function(l,e,s){var d,a=i(l),u=n(a.length),o=c(s,u);if(t&&e!=e){while(u>o)if(d=a[o++],d!=d)return!0}else for(;u>o;o++)if((t||o in a)&&a[o]===e)return t||o||0;return!t&&-1}};l.exports={includes:s(!0),indexOf:s(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(t,l,e){var i=t("../internals/function-bind-context"),n=t("../internals/indexed-object"),c=t("../internals/to-object"),s=t("../internals/to-length"),d=t("../internals/array-species-create"),a=[].push,u=function(t){var l=1==t,e=2==t,u=3==t,o=4==t,r=6==t,b=5==t||r;return function(h,Z,m,y){for(var p,W,G=c(h),X=n(G),Y=i(Z,m,3),N=s(X.length),V=0,M=y||d,L=l?M(h,N):e?M(h,0):void 0;N>V;V++)if((b||V in X)&&(p=X[V],W=Y(p,V,G),t))if(l)L[V]=W;else if(W)switch(t){case 3:return!0;case 5:return p;case 6:return V;case 2:a.call(L,p)}else if(o)return!1;return r?-1:u||o?o:L}};l.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/fails"),c=t("../internals/has"),s=Object.defineProperty,d={},a=function(t){throw t};l.exports=function(t,l){if(c(d,t))return d[t];l||(l={});var e=[][t],u=!!c(l,"ACCESSORS")&&l.ACCESSORS,o=c(l,0)?l[0]:a,r=c(l,1)?l[1]:void 0;return d[t]=!!e&&!n((function(){if(u&&!i)return!0;var t={length:-1};u?s(t,1,{enumerable:!0,get:a}):t[1]=1,e.call(t,o,r)}))}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(t,l,e){var i=t("../internals/is-object"),n=t("../internals/is-array"),c=t("../internals/well-known-symbol"),s=c("species");l.exports=function(t,l){var e;return n(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!n(e.prototype)?i(e)&&(e=e[s],null===e&&(e=void 0)):e=void 0),new(void 0===e?Array:e)(0===l?0:l)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(t,l,e){var i=t("../internals/an-object");l.exports=function(t,l,e,n){try{return n?l(i(e)[0],e[1]):l(e)}catch(s){var c=t["return"];throw void 0!==c&&i(c.call(t)),s}}},{"../internals/an-object":223}],229:[function(t,l,e){var i=t("../internals/well-known-symbol"),n=i("iterator"),c=!1;try{var s=0,d={next:function(){return{done:!!s++}},return:function(){c=!0}};d[n]=function(){return this},Array.from(d,(function(){throw 2}))}catch(a){}l.exports=function(t,l){if(!l&&!c)return!1;var e=!1;try{var i={};i[n]=function(){return{next:function(){return{done:e=!0}}}},t(i)}catch(a){}return e}},{"../internals/well-known-symbol":314}],230:[function(t,l,e){var i={}.toString;l.exports=function(t){return i.call(t).slice(8,-1)}},{}],231:[function(t,l,e){var i=t("../internals/to-string-tag-support"),n=t("../internals/classof-raw"),c=t("../internals/well-known-symbol"),s=c("toStringTag"),d="Arguments"==n(function(){return arguments}()),a=function(t,l){try{return t[l]}catch(e){}};l.exports=i?n:function(t){var l,e,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=a(l=Object(t),s))?e:d?n(l):"Object"==(i=n(l))&&"function"==typeof l.callee?"Arguments":i}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(t,l,e){var i=t("../internals/has"),n=t("../internals/own-keys"),c=t("../internals/object-get-own-property-descriptor"),s=t("../internals/object-define-property");l.exports=function(t,l){for(var e=n(l),d=s.f,a=c.f,u=0;u<e.length;u++){var o=e[u];i(t,o)||d(t,o,a(l,o))}}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/own-keys":289}],233:[function(t,l,e){var i=t("../internals/well-known-symbol"),n=i("match");l.exports=function(t){var l=/./;try{"/./"[t](l)}catch(e){try{return l[n]=!1,"/./"[t](l)}catch(i){}}return!1}},{"../internals/well-known-symbol":314}],234:[function(t,l,e){var i=t("../internals/fails");l.exports=!i((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},{"../internals/fails":247}],235:[function(t,l,e){"use strict";var i=t("../internals/iterators-core").IteratorPrototype,n=t("../internals/object-create"),c=t("../internals/create-property-descriptor"),s=t("../internals/set-to-string-tag"),d=t("../internals/iterators"),a=function(){return this};l.exports=function(t,l,e){var u=l+" Iterator";return t.prototype=n(i,{next:c(1,e)}),s(t,u,!1,!0),d[u]=a,t}},{"../internals/create-property-descriptor":237,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-create":276,"../internals/set-to-string-tag":298}],236:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/object-define-property"),c=t("../internals/create-property-descriptor");l.exports=i?function(t,l,e){return n.f(t,l,c(1,e))}:function(t,l,e){return t[l]=e,t}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/object-define-property":278}],237:[function(t,l,e){l.exports=function(t,l){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:l}}},{}],238:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/create-iterator-constructor"),c=t("../internals/object-get-prototype-of"),s=t("../internals/object-set-prototype-of"),d=t("../internals/set-to-string-tag"),a=t("../internals/create-non-enumerable-property"),u=t("../internals/redefine"),o=t("../internals/well-known-symbol"),r=t("../internals/is-pure"),b=t("../internals/iterators"),h=t("../internals/iterators-core"),Z=h.IteratorPrototype,m=h.BUGGY_SAFARI_ITERATORS,y=o("iterator"),p="keys",W="values",G="entries",X=function(){return this};l.exports=function(t,l,e,o,h,Y,N){n(e,l,o);var V,M,L,I=function(t){if(t===h&&z)return z;if(!m&&t in R)return R[t];switch(t){case p:return function(){return new e(this,t)};case W:return function(){return new e(this,t)};case G:return function(){return new e(this,t)}}return function(){return new e(this)}},w=l+" Iterator",f=!1,R=t.prototype,T=R[y]||R["@@iterator"]||h&&R[h],z=!m&&T||I(h),x="Array"==l&&R.entries||T;if(x&&(V=c(x.call(new t)),Z!==Object.prototype&&V.next&&(r||c(V)===Z||(s?s(V,Z):"function"!=typeof V[y]&&a(V,y,X)),d(V,w,!0,!0),r&&(b[w]=X))),h==W&&T&&T.name!==W&&(f=!0,z=function(){return T.call(this)}),r&&!N||R[y]===z||a(R,y,z),b[l]=z,h)if(M={values:I(W),keys:Y?z:I(p),entries:I(G)},N)for(L in M)(m||f||!(L in R))&&u(R,L,M[L]);else i({target:l,proto:!0,forced:m||f},M);return M}},{"../internals/create-iterator-constructor":235,"../internals/create-non-enumerable-property":236,"../internals/export":246,"../internals/is-pure":264,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-get-prototype-of":283,"../internals/object-set-prototype-of":287,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/well-known-symbol":314}],239:[function(t,l,e){var i=t("../internals/path"),n=t("../internals/has"),c=t("../internals/well-known-symbol-wrapped"),s=t("../internals/object-define-property").f;l.exports=function(t){var l=i.Symbol||(i.Symbol={});n(l,t)||s(l,t,{value:c.f(t)})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/path":290,"../internals/well-known-symbol-wrapped":313}],240:[function(t,l,e){var i=t("../internals/fails");l.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},{"../internals/fails":247}],241:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/is-object"),c=i.document,s=n(c)&&n(c.createElement);l.exports=function(t){return s?c.createElement(t):{}}},{"../internals/global":251,"../internals/is-object":263}],242:[function(t,l,e){var i=t("../internals/engine-user-agent");l.exports=/(iphone|ipod|ipad).*applewebkit/i.test(i)},{"../internals/engine-user-agent":243}],243:[function(t,l,e){var i=t("../internals/get-built-in");l.exports=i("navigator","userAgent")||""},{"../internals/get-built-in":249}],244:[function(t,l,e){var i,n,c=t("../internals/global"),s=t("../internals/engine-user-agent"),d=c.process,a=d&&d.versions,u=a&&a.v8;u?(i=u.split("."),n=i[0]+i[1]):s&&(i=s.match(/Edge\/(\d+)/),(!i||i[1]>=74)&&(i=s.match(/Chrome\/(\d+)/),i&&(n=i[1]))),l.exports=n&&+n},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(t,l,e){l.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/object-get-own-property-descriptor").f,c=t("../internals/create-non-enumerable-property"),s=t("../internals/redefine"),d=t("../internals/set-global"),a=t("../internals/copy-constructor-properties"),u=t("../internals/is-forced");l.exports=function(t,l){var e,o,r,b,h,Z,m=t.target,y=t.global,p=t.stat;if(o=y?i:p?i[m]||d(m,{}):(i[m]||{}).prototype,o)for(r in l){if(h=l[r],t.noTargetGet?(Z=n(o,r),b=Z&&Z.value):b=o[r],e=u(y?r:m+(p?".":"#")+r,t.forced),!e&&void 0!==b){if(typeof h===typeof b)continue;a(h,b)}(t.sham||b&&b.sham)&&c(h,"sham",!0),s(o,r,h,t)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(t,l,e){l.exports=function(t){try{return!!t()}catch(l){return!0}}},{}],248:[function(t,l,e){var i=t("../internals/a-function");l.exports=function(t,l,e){if(i(t),void 0===l)return t;switch(e){case 0:return function(){return t.call(l)};case 1:return function(e){return t.call(l,e)};case 2:return function(e,i){return t.call(l,e,i)};case 3:return function(e,i,n){return t.call(l,e,i,n)}}return function(){return t.apply(l,arguments)}}},{"../internals/a-function":219}],249:[function(t,l,e){var i=t("../internals/path"),n=t("../internals/global"),c=function(t){return"function"==typeof t?t:void 0};l.exports=function(t,l){return arguments.length<2?c(i[t])||c(n[t]):i[t]&&i[t][l]||n[t]&&n[t][l]}},{"../internals/global":251,"../internals/path":290}],250:[function(t,l,e){var i=t("../internals/classof"),n=t("../internals/iterators"),c=t("../internals/well-known-symbol"),s=c("iterator");l.exports=function(t){if(void 0!=t)return t[s]||t["@@iterator"]||n[i(t)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(t,l,i){(function(t){var e=function(t){return t&&t.Math==Math&&t};l.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||Function("return this")()}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],252:[function(t,l,e){var i={}.hasOwnProperty;l.exports=function(t,l){return i.call(t,l)}},{}],253:[function(t,l,e){l.exports={}},{}],254:[function(t,l,e){var i=t("../internals/global");l.exports=function(t,l){var e=i.console;e&&e.error&&(1===arguments.length?e.error(t):e.error(t,l))}},{"../internals/global":251}],255:[function(t,l,e){var i=t("../internals/get-built-in");l.exports=i("document","documentElement")},{"../internals/get-built-in":249}],256:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/fails"),c=t("../internals/document-create-element");l.exports=!i&&!n((function(){return 7!=Object.defineProperty(c("div"),"a",{get:function(){return 7}}).a}))},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(t,l,e){var i=t("../internals/fails"),n=t("../internals/classof-raw"),c="".split;l.exports=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==n(t)?c.call(t,""):Object(t)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(t,l,e){var i=t("../internals/shared-store"),n=Function.toString;"function"!=typeof i.inspectSource&&(i.inspectSource=function(t){return n.call(t)}),l.exports=i.inspectSource},{"../internals/shared-store":300}],259:[function(t,l,e){var i,n,c,s=t("../internals/native-weak-map"),d=t("../internals/global"),a=t("../internals/is-object"),u=t("../internals/create-non-enumerable-property"),o=t("../internals/has"),r=t("../internals/shared-key"),b=t("../internals/hidden-keys"),h=d.WeakMap,Z=function(t){return c(t)?n(t):i(t,{})},m=function(t){return function(l){var e;if(!a(l)||(e=n(l)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}};if(s){var y=new h,p=y.get,W=y.has,G=y.set;i=function(t,l){return G.call(y,t,l),l},n=function(t){return p.call(y,t)||{}},c=function(t){return W.call(y,t)}}else{var X=r("state");b[X]=!0,i=function(t,l){return u(t,X,l),l},n=function(t){return o(t,X)?t[X]:{}},c=function(t){return o(t,X)}}l.exports={set:i,get:n,has:c,enforce:Z,getterFor:m}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(t,l,e){var i=t("../internals/well-known-symbol"),n=t("../internals/iterators"),c=i("iterator"),s=Array.prototype;l.exports=function(t){return void 0!==t&&(n.Array===t||s[c]===t)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(t,l,e){var i=t("../internals/classof-raw");l.exports=Array.isArray||function(t){return"Array"==i(t)}},{"../internals/classof-raw":230}],262:[function(t,l,e){var i=t("../internals/fails"),n=/#|\.prototype\./,c=function(t,l){var e=d[s(t)];return e==u||e!=a&&("function"==typeof l?i(l):!!l)},s=c.normalize=function(t){return String(t).replace(n,".").toLowerCase()},d=c.data={},a=c.NATIVE="N",u=c.POLYFILL="P";l.exports=c},{"../internals/fails":247}],263:[function(t,l,e){l.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},{}],264:[function(t,l,e){l.exports=!1},{}],265:[function(t,l,e){var i=t("../internals/is-object"),n=t("../internals/classof-raw"),c=t("../internals/well-known-symbol"),s=c("match");l.exports=function(t){var l;return i(t)&&(void 0!==(l=t[s])?!!l:"RegExp"==n(t))}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(t,l,e){var i=t("../internals/an-object"),n=t("../internals/is-array-iterator-method"),c=t("../internals/to-length"),s=t("../internals/function-bind-context"),d=t("../internals/get-iterator-method"),a=t("../internals/call-with-safe-iteration-closing"),u=function(t,l){this.stopped=t,this.result=l},o=l.exports=function(t,l,e,o,r){var b,h,Z,m,y,p,W,G=s(l,e,o?2:1);if(r)b=t;else{if(h=d(t),"function"!=typeof h)throw TypeError("Target is not iterable");if(n(h)){for(Z=0,m=c(t.length);m>Z;Z++)if(y=o?G(i(W=t[Z])[0],W[1]):G(t[Z]),y&&y instanceof u)return y;return new u(!1)}b=h.call(t)}p=b.next;while(!(W=p.call(b)).done)if(y=a(b,G,W.value,o),"object"==typeof y&&y&&y instanceof u)return y;return new u(!1)};o.stop=function(t){return new u(!0,t)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(t,l,e){"use strict";var i,n,c,s=t("../internals/object-get-prototype-of"),d=t("../internals/create-non-enumerable-property"),a=t("../internals/has"),u=t("../internals/well-known-symbol"),o=t("../internals/is-pure"),r=u("iterator"),b=!1,h=function(){return this};[].keys&&(c=[].keys(),"next"in c?(n=s(s(c)),n!==Object.prototype&&(i=n)):b=!0),void 0==i&&(i={}),o||a(i,r)||d(i,r,h),l.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:b}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(t,l,e){arguments[4][253][0].apply(e,arguments)},{dup:253}],269:[function(t,l,e){var i,n,c,s,d,a,u,o,r=t("../internals/global"),b=t("../internals/object-get-own-property-descriptor").f,h=t("../internals/classof-raw"),Z=t("../internals/task").set,m=t("../internals/engine-is-ios"),y=r.MutationObserver||r.WebKitMutationObserver,p=r.process,W=r.Promise,G="process"==h(p),X=b(r,"queueMicrotask"),Y=X&&X.value;Y||(i=function(){var t,l;G&&(t=p.domain)&&t.exit();while(n){l=n.fn,n=n.next;try{l()}catch(e){throw n?s():c=void 0,e}}c=void 0,t&&t.enter()},G?s=function(){p.nextTick(i)}:y&&!m?(d=!0,a=document.createTextNode(""),new y(i).observe(a,{characterData:!0}),s=function(){a.data=d=!d}):W&&W.resolve?(u=W.resolve(void 0),o=u.then,s=function(){o.call(u,i)}):s=function(){Z.call(r,i)}),l.exports=Y||function(t){var l={fn:t,next:void 0};c&&(c.next=l),n||(n=l,s()),c=l}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(t,l,e){var i=t("../internals/global");l.exports=i.Promise},{"../internals/global":251}],271:[function(t,l,e){var i=t("../internals/fails");l.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!String(Symbol())}))},{"../internals/fails":247}],272:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/inspect-source"),c=i.WeakMap;l.exports="function"===typeof c&&/native code/.test(n(c))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(t,l,e){"use strict";var i=t("../internals/a-function"),n=function(t){var l,e;this.promise=new t((function(t,i){if(void 0!==l||void 0!==e)throw TypeError("Bad Promise constructor");l=t,e=i})),this.resolve=i(l),this.reject=i(e)};l.exports.f=function(t){return new n(t)}},{"../internals/a-function":219}],274:[function(t,l,e){var i=t("../internals/is-regexp");l.exports=function(t){if(i(t))throw TypeError("The method doesn't accept regular expressions");return t}},{"../internals/is-regexp":265}],275:[function(t,l,e){"use strict";var i=t("../internals/descriptors"),n=t("../internals/fails"),c=t("../internals/object-keys"),s=t("../internals/object-get-own-property-symbols"),d=t("../internals/object-property-is-enumerable"),a=t("../internals/to-object"),u=t("../internals/indexed-object"),o=Object.assign,r=Object.defineProperty;l.exports=!o||n((function(){if(i&&1!==o({b:1},o(r({},"a",{enumerable:!0,get:function(){r(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},l={},e=Symbol(),n="abcdefghijklmnopqrst";return t[e]=7,n.split("").forEach((function(t){l[t]=t})),7!=o({},t)[e]||c(o({},l)).join("")!=n}))?function(t,l){var e=a(t),n=arguments.length,o=1,r=s.f,b=d.f;while(n>o){var h,Z=u(arguments[o++]),m=r?c(Z).concat(r(Z)):c(Z),y=m.length,p=0;while(y>p)h=m[p++],i&&!b.call(Z,h)||(e[h]=Z[h])}return e}:o},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(t,l,e){var i,n=t("../internals/an-object"),c=t("../internals/object-define-properties"),s=t("../internals/enum-bug-keys"),d=t("../internals/hidden-keys"),a=t("../internals/html"),u=t("../internals/document-create-element"),o=t("../internals/shared-key"),r=">",b="<",h="prototype",Z="script",m=o("IE_PROTO"),y=function(){},p=function(t){return b+Z+r+t+b+"/"+Z+r},W=function(t){t.write(p("")),t.close();var l=t.parentWindow.Object;return t=null,l},G=function(){var t,l=u("iframe"),e="java"+Z+":";return l.style.display="none",a.appendChild(l),l.src=String(e),t=l.contentWindow.document,t.open(),t.write(p("document.F=Object")),t.close(),t.F},X=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch(l){}X=i?W(i):G();var t=s.length;while(t--)delete X[h][s[t]];return X()};d[m]=!0,l.exports=Object.create||function(t,l){var e;return null!==t?(y[h]=n(t),e=new y,y[h]=null,e[m]=t):e=X(),void 0===l?e:c(e,l)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/object-define-property"),c=t("../internals/an-object"),s=t("../internals/object-keys");l.exports=i?Object.defineProperties:function(t,l){c(t);var e,i=s(l),d=i.length,a=0;while(d>a)n.f(t,e=i[a++],l[e]);return t}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/ie8-dom-define"),c=t("../internals/an-object"),s=t("../internals/to-primitive"),d=Object.defineProperty;e.f=i?d:function(t,l,e){if(c(t),l=s(l,!0),c(e),n)try{return d(t,l,e)}catch(i){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[l]=e.value),t}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/object-property-is-enumerable"),c=t("../internals/create-property-descriptor"),s=t("../internals/to-indexed-object"),d=t("../internals/to-primitive"),a=t("../internals/has"),u=t("../internals/ie8-dom-define"),o=Object.getOwnPropertyDescriptor;e.f=i?o:function(t,l){if(t=s(t),l=d(l,!0),u)try{return o(t,l)}catch(e){}if(a(t,l))return c(!n.f.call(t,l),t[l])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(t,l,e){var i=t("../internals/to-indexed-object"),n=t("../internals/object-get-own-property-names").f,c={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],d=function(t){try{return n(t)}catch(l){return s.slice()}};l.exports.f=function(t){return s&&"[object Window]"==c.call(t)?d(t):n(i(t))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(t,l,e){var i=t("../internals/object-keys-internal"),n=t("../internals/enum-bug-keys"),c=n.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,c)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(t,l,e){e.f=Object.getOwnPropertySymbols},{}],283:[function(t,l,e){var i=t("../internals/has"),n=t("../internals/to-object"),c=t("../internals/shared-key"),s=t("../internals/correct-prototype-getter"),d=c("IE_PROTO"),a=Object.prototype;l.exports=s?Object.getPrototypeOf:function(t){return t=n(t),i(t,d)?t[d]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(t,l,e){var i=t("../internals/has"),n=t("../internals/to-indexed-object"),c=t("../internals/array-includes").indexOf,s=t("../internals/hidden-keys");l.exports=function(t,l){var e,d=n(t),a=0,u=[];for(e in d)!i(s,e)&&i(d,e)&&u.push(e);while(l.length>a)i(d,e=l[a++])&&(~c(u,e)||u.push(e));return u}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(t,l,e){var i=t("../internals/object-keys-internal"),n=t("../internals/enum-bug-keys");l.exports=Object.keys||function(t){return i(t,n)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(t,l,e){"use strict";var i={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,c=n&&!i.call({1:2},1);e.f=c?function(t){var l=n(this,t);return!!l&&l.enumerable}:i},{}],287:[function(t,l,e){var i=t("../internals/an-object"),n=t("../internals/a-possible-prototype");l.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,l=!1,e={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(e,[]),l=e instanceof Array}catch(c){}return function(e,c){return i(e),n(c),l?t.call(e,c):e.__proto__=c,e}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(t,l,e){var i=t("../internals/descriptors"),n=t("../internals/object-keys"),c=t("../internals/to-indexed-object"),s=t("../internals/object-property-is-enumerable").f,d=function(t){return function(l){var e,d=c(l),a=n(d),u=a.length,o=0,r=[];while(u>o)e=a[o++],i&&!s.call(d,e)||r.push(t?[e,d[e]]:d[e]);return r}};l.exports={entries:d(!0),values:d(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(t,l,e){var i=t("../internals/get-built-in"),n=t("../internals/object-get-own-property-names"),c=t("../internals/object-get-own-property-symbols"),s=t("../internals/an-object");l.exports=i("Reflect","ownKeys")||function(t){var l=n.f(s(t)),e=c.f;return e?l.concat(e(t)):l}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(t,l,e){var i=t("../internals/global");l.exports=i},{"../internals/global":251}],291:[function(t,l,e){l.exports=function(t){try{return{error:!1,value:t()}}catch(l){return{error:!0,value:l}}}},{}],292:[function(t,l,e){var i=t("../internals/an-object"),n=t("../internals/is-object"),c=t("../internals/new-promise-capability");l.exports=function(t,l){if(i(t),n(l)&&l.constructor===t)return l;var e=c.f(t),s=e.resolve;return s(l),e.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(t,l,e){var i=t("../internals/redefine");l.exports=function(t,l,e){for(var n in l)i(t,n,l[n],e);return t}},{"../internals/redefine":294}],294:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/create-non-enumerable-property"),c=t("../internals/has"),s=t("../internals/set-global"),d=t("../internals/inspect-source"),a=t("../internals/internal-state"),u=a.get,o=a.enforce,r=String(String).split("String");(l.exports=function(t,l,e,d){var a=!!d&&!!d.unsafe,u=!!d&&!!d.enumerable,b=!!d&&!!d.noTargetGet;"function"==typeof e&&("string"!=typeof l||c(e,"name")||n(e,"name",l),o(e).source=r.join("string"==typeof l?l:"")),t!==i?(a?!b&&t[l]&&(u=!0):delete t[l],u?t[l]=e:n(t,l,e)):u?t[l]=e:s(l,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||d(this)}))},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(t,l,e){l.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],296:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/create-non-enumerable-property");l.exports=function(t,l){try{n(i,t,l)}catch(e){i[t]=l}return l}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(t,l,e){"use strict";var i=t("../internals/get-built-in"),n=t("../internals/object-define-property"),c=t("../internals/well-known-symbol"),s=t("../internals/descriptors"),d=c("species");l.exports=function(t){var l=i(t),e=n.f;s&&l&&!l[d]&&e(l,d,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(t,l,e){var i=t("../internals/object-define-property").f,n=t("../internals/has"),c=t("../internals/well-known-symbol"),s=c("toStringTag");l.exports=function(t,l,e){t&&!n(t=e?t:t.prototype,s)&&i(t,s,{configurable:!0,value:l})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(t,l,e){var i=t("../internals/shared"),n=t("../internals/uid"),c=i("keys");l.exports=function(t){return c[t]||(c[t]=n(t))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/set-global"),c="__core-js_shared__",s=i[c]||n(c,{});l.exports=s},{"../internals/global":251,"../internals/set-global":296}],301:[function(t,l,e){var i=t("../internals/is-pure"),n=t("../internals/shared-store");(l.exports=function(t,l){return n[t]||(n[t]=void 0!==l?l:{})})("versions",[]).push({version:"3.6.5",mode:i?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(t,l,e){var i=t("../internals/an-object"),n=t("../internals/a-function"),c=t("../internals/well-known-symbol"),s=c("species");l.exports=function(t,l){var e,c=i(t).constructor;return void 0===c||void 0==(e=i(c)[s])?l:n(e)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(t,l,e){var i,n,c,s=t("../internals/global"),d=t("../internals/fails"),a=t("../internals/classof-raw"),u=t("../internals/function-bind-context"),o=t("../internals/html"),r=t("../internals/document-create-element"),b=t("../internals/engine-is-ios"),h=s.location,Z=s.setImmediate,m=s.clearImmediate,y=s.process,p=s.MessageChannel,W=s.Dispatch,G=0,X={},Y="onreadystatechange",N=function(t){if(X.hasOwnProperty(t)){var l=X[t];delete X[t],l()}},V=function(t){return function(){N(t)}},M=function(t){N(t.data)},L=function(t){s.postMessage(t+"",h.protocol+"//"+h.host)};Z&&m||(Z=function(t){var l=[],e=1;while(arguments.length>e)l.push(arguments[e++]);return X[++G]=function(){("function"==typeof t?t:Function(t)).apply(void 0,l)},i(G),G},m=function(t){delete X[t]},"process"==a(y)?i=function(t){y.nextTick(V(t))}:W&&W.now?i=function(t){W.now(V(t))}:p&&!b?(n=new p,c=n.port2,n.port1.onmessage=M,i=u(c.postMessage,c,1)):!s.addEventListener||"function"!=typeof postMessage||s.importScripts||d(L)||"file:"===h.protocol?i=Y in r("script")?function(t){o.appendChild(r("script"))[Y]=function(){o.removeChild(this),N(t)}}:function(t){setTimeout(V(t),0)}:(i=L,s.addEventListener("message",M,!1))),l.exports={set:Z,clear:m}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(t,l,e){var i=t("../internals/to-integer"),n=Math.max,c=Math.min;l.exports=function(t,l){var e=i(t);return e<0?n(e+l,0):c(e,l)}},{"../internals/to-integer":306}],305:[function(t,l,e){var i=t("../internals/indexed-object"),n=t("../internals/require-object-coercible");l.exports=function(t){return i(n(t))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(t,l,e){var i=Math.ceil,n=Math.floor;l.exports=function(t){return isNaN(t=+t)?0:(t>0?n:i)(t)}},{}],307:[function(t,l,e){var i=t("../internals/to-integer"),n=Math.min;l.exports=function(t){return t>0?n(i(t),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(t,l,e){var i=t("../internals/require-object-coercible");l.exports=function(t){return Object(i(t))}},{"../internals/require-object-coercible":295}],309:[function(t,l,e){var i=t("../internals/is-object");l.exports=function(t,l){if(!i(t))return t;var e,n;if(l&&"function"==typeof(e=t.toString)&&!i(n=e.call(t)))return n;if("function"==typeof(e=t.valueOf)&&!i(n=e.call(t)))return n;if(!l&&"function"==typeof(e=t.toString)&&!i(n=e.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(t,l,e){var i=t("../internals/well-known-symbol"),n=i("toStringTag"),c={};c[n]="z",l.exports="[object z]"===String(c)},{"../internals/well-known-symbol":314}],311:[function(t,l,e){var i=0,n=Math.random();l.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++i+n).toString(36)}},{}],312:[function(t,l,e){var i=t("../internals/native-symbol");l.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},{"../internals/native-symbol":271}],313:[function(t,l,e){var i=t("../internals/well-known-symbol");e.f=i},{"../internals/well-known-symbol":314}],314:[function(t,l,e){var i=t("../internals/global"),n=t("../internals/shared"),c=t("../internals/has"),s=t("../internals/uid"),d=t("../internals/native-symbol"),a=t("../internals/use-symbol-as-uid"),u=n("wks"),o=i.Symbol,r=a?o:o&&o.withoutSetter||s;l.exports=function(t){return c(u,t)||(d&&c(o,t)?u[t]=o[t]:u[t]=r("Symbol."+t)),u[t]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/array-iteration").findIndex,c=t("../internals/add-to-unscopables"),s=t("../internals/array-method-uses-to-length"),d="findIndex",a=!0,u=s(d);d in[]&&Array(1)[d]((function(){a=!1})),i({target:"Array",proto:!0,forced:a||!u},{findIndex:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}}),c(d)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/array-iteration").find,c=t("../internals/add-to-unscopables"),s=t("../internals/array-method-uses-to-length"),d="find",a=!0,u=s(d);d in[]&&Array(1)[d]((function(){a=!1})),i({target:"Array",proto:!0,forced:a||!u},{find:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}}),c(d)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/array-includes").includes,c=t("../internals/add-to-unscopables"),s=t("../internals/array-method-uses-to-length"),d=s("indexOf",{ACCESSORS:!0,1:0});i({target:"Array",proto:!0,forced:!d},{includes:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}}),c("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(t,l,e){"use strict";var i=t("../internals/to-indexed-object"),n=t("../internals/add-to-unscopables"),c=t("../internals/iterators"),s=t("../internals/internal-state"),d=t("../internals/define-iterator"),a="Array Iterator",u=s.set,o=s.getterFor(a);l.exports=d(Array,"Array",(function(t,l){u(this,{type:a,target:i(t),index:0,kind:l})}),(function(){var t=o(this),l=t.target,e=t.kind,i=t.index++;return!l||i>=l.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==e?{value:i,done:!1}:"values"==e?{value:l[i],done:!1}:{value:[i,l[i]],done:!1}}),"values"),c.Arguments=c.Array,n("keys"),n("values"),n("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(t,l,e){var i=t("../internals/export");i({target:"Number",stat:!0},{isNaN:function(t){return t!=t}})},{"../internals/export":246}],320:[function(t,l,e){var i=t("../internals/export"),n=t("../internals/object-assign");i({target:"Object",stat:!0,forced:Object.assign!==n},{assign:n})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(t,l,e){var i=t("../internals/export"),n=t("../internals/to-object"),c=t("../internals/object-keys"),s=t("../internals/fails"),d=s((function(){c(1)}));i({target:"Object",stat:!0,forced:d},{keys:function(t){return c(n(t))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(t,l,e){var i=t("../internals/export"),n=t("../internals/object-to-array").values;i({target:"Object",stat:!0},{values:function(t){return n(t)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(t,l,e){"use strict";var i,n,c,s,d=t("../internals/export"),a=t("../internals/is-pure"),u=t("../internals/global"),o=t("../internals/get-built-in"),r=t("../internals/native-promise-constructor"),b=t("../internals/redefine"),h=t("../internals/redefine-all"),Z=t("../internals/set-to-string-tag"),m=t("../internals/set-species"),y=t("../internals/is-object"),p=t("../internals/a-function"),W=t("../internals/an-instance"),G=t("../internals/classof-raw"),X=t("../internals/inspect-source"),Y=t("../internals/iterate"),N=t("../internals/check-correctness-of-iteration"),V=t("../internals/species-constructor"),M=t("../internals/task").set,L=t("../internals/microtask"),I=t("../internals/promise-resolve"),w=t("../internals/host-report-errors"),f=t("../internals/new-promise-capability"),R=t("../internals/perform"),T=t("../internals/internal-state"),z=t("../internals/is-forced"),x=t("../internals/well-known-symbol"),S=t("../internals/engine-v8-version"),k=x("species"),C="Promise",J=T.get,g=T.set,F=T.getterFor(C),j=r,v=u.TypeError,D=u.document,U=u.process,O=o("fetch"),K=f.f,E=K,H="process"==G(U),Q=!!(D&&D.createEvent&&u.dispatchEvent),B="unhandledrejection",P="rejectionhandled",A=0,_=1,q=2,$=1,tt=2,lt=z(C,(function(){var t=X(j)!==String(j);if(!t){if(66===S)return!0;if(!H&&"function"!=typeof PromiseRejectionEvent)return!0}if(a&&!j.prototype["finally"])return!0;if(S>=51&&/native code/.test(j))return!1;var l=j.resolve(1),e=function(t){t((function(){}),(function(){}))},i=l.constructor={};return i[k]=e,!(l.then((function(){}))instanceof e)})),et=lt||!N((function(t){j.all(t)["catch"]((function(){}))})),it=function(t){var l;return!(!y(t)||"function"!=typeof(l=t.then))&&l},nt=function(t,l,e){if(!l.notified){l.notified=!0;var i=l.reactions;L((function(){var n=l.value,c=l.state==_,s=0;while(i.length>s){var d,a,u,o=i[s++],r=c?o.ok:o.fail,b=o.resolve,h=o.reject,Z=o.domain;try{r?(c||(l.rejection===tt&&at(t,l),l.rejection=$),!0===r?d=n:(Z&&Z.enter(),d=r(n),Z&&(Z.exit(),u=!0)),d===o.promise?h(v("Promise-chain cycle")):(a=it(d))?a.call(d,b,h):b(d)):h(n)}catch(m){Z&&!u&&Z.exit(),h(m)}}l.reactions=[],l.notified=!1,e&&!l.rejection&&st(t,l)}))}},ct=function(t,l,e){var i,n;Q?(i=D.createEvent("Event"),i.promise=l,i.reason=e,i.initEvent(t,!1,!0),u.dispatchEvent(i)):i={promise:l,reason:e},(n=u["on"+t])?n(i):t===B&&w("Unhandled promise rejection",e)},st=function(t,l){M.call(u,(function(){var e,i=l.value,n=dt(l);if(n&&(e=R((function(){H?U.emit("unhandledRejection",i,t):ct(B,t,i)})),l.rejection=H||dt(l)?tt:$,e.error))throw e.value}))},dt=function(t){return t.rejection!==$&&!t.parent},at=function(t,l){M.call(u,(function(){H?U.emit("rejectionHandled",t):ct(P,t,l.value)}))},ut=function(t,l,e,i){return function(n){t(l,e,n,i)}},ot=function(t,l,e,i){l.done||(l.done=!0,i&&(l=i),l.value=e,l.state=q,nt(t,l,!0))},rt=function(t,l,e,i){if(!l.done){l.done=!0,i&&(l=i);try{if(t===e)throw v("Promise can't be resolved itself");var n=it(e);n?L((function(){var i={done:!1};try{n.call(e,ut(rt,t,i,l),ut(ot,t,i,l))}catch(c){ot(t,i,c,l)}})):(l.value=e,l.state=_,nt(t,l,!1))}catch(c){ot(t,{done:!1},c,l)}}};lt&&(j=function(t){W(this,j,C),p(t),i.call(this);var l=J(this);try{t(ut(rt,this,l),ut(ot,this,l))}catch(e){ot(this,l,e)}},i=function(t){g(this,{type:C,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:A,value:void 0})},i.prototype=h(j.prototype,{then:function(t,l){var e=F(this),i=K(V(this,j));return i.ok="function"!=typeof t||t,i.fail="function"==typeof l&&l,i.domain=H?U.domain:void 0,e.parent=!0,e.reactions.push(i),e.state!=A&&nt(this,e,!1),i.promise},catch:function(t){return this.then(void 0,t)}}),n=function(){var t=new i,l=J(t);this.promise=t,this.resolve=ut(rt,t,l),this.reject=ut(ot,t,l)},f.f=K=function(t){return t===j||t===c?new n(t):E(t)},a||"function"!=typeof r||(s=r.prototype.then,b(r.prototype,"then",(function(t,l){var e=this;return new j((function(t,l){s.call(e,t,l)})).then(t,l)}),{unsafe:!0}),"function"==typeof O&&d({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return I(j,O.apply(u,arguments))}}))),d({global:!0,wrap:!0,forced:lt},{Promise:j}),Z(j,C,!1,!0),m(C),c=o(C),d({target:C,stat:!0,forced:lt},{reject:function(t){var l=K(this);return l.reject.call(void 0,t),l.promise}}),d({target:C,stat:!0,forced:a||lt},{resolve:function(t){return I(a&&this===c?j:this,t)}}),d({target:C,stat:!0,forced:et},{all:function(t){var l=this,e=K(l),i=e.resolve,n=e.reject,c=R((function(){var e=p(l.resolve),c=[],s=0,d=1;Y(t,(function(t){var a=s++,u=!1;c.push(void 0),d++,e.call(l,t).then((function(t){u||(u=!0,c[a]=t,--d||i(c))}),n)})),--d||i(c)}));return c.error&&n(c.value),e.promise},race:function(t){var l=this,e=K(l),i=e.reject,n=R((function(){var n=p(l.resolve);Y(t,(function(t){n.call(l,t).then(e.resolve,i)}))}));return n.error&&i(n.value),e.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(t,l,e){var i=t("../internals/export"),n=t("../internals/to-absolute-index"),c=String.fromCharCode,s=String.fromCodePoint,d=!!s&&1!=s.length;i({target:"String",stat:!0,forced:d},{fromCodePoint:function(t){var l,e=[],i=arguments.length,s=0;while(i>s){if(l=+arguments[s++],n(l,1114111)!==l)throw RangeError(l+" is not a valid code point");e.push(l<65536?c(l):c(55296+((l-=65536)>>10),l%1024+56320))}return e.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/not-a-regexp"),c=t("../internals/require-object-coercible"),s=t("../internals/correct-is-regexp-logic");i({target:"String",proto:!0,forced:!s("includes")},{includes:function(t){return!!~String(c(this)).indexOf(n(t),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(t,l,e){var i=t("../internals/define-well-known-symbol");i("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(t,l,e){"use strict";var i=t("../internals/export"),n=t("../internals/global"),c=t("../internals/get-built-in"),s=t("../internals/is-pure"),d=t("../internals/descriptors"),a=t("../internals/native-symbol"),u=t("../internals/use-symbol-as-uid"),o=t("../internals/fails"),r=t("../internals/has"),b=t("../internals/is-array"),h=t("../internals/is-object"),Z=t("../internals/an-object"),m=t("../internals/to-object"),y=t("../internals/to-indexed-object"),p=t("../internals/to-primitive"),W=t("../internals/create-property-descriptor"),G=t("../internals/object-create"),X=t("../internals/object-keys"),Y=t("../internals/object-get-own-property-names"),N=t("../internals/object-get-own-property-names-external"),V=t("../internals/object-get-own-property-symbols"),M=t("../internals/object-get-own-property-descriptor"),L=t("../internals/object-define-property"),I=t("../internals/object-property-is-enumerable"),w=t("../internals/create-non-enumerable-property"),f=t("../internals/redefine"),R=t("../internals/shared"),T=t("../internals/shared-key"),z=t("../internals/hidden-keys"),x=t("../internals/uid"),S=t("../internals/well-known-symbol"),k=t("../internals/well-known-symbol-wrapped"),C=t("../internals/define-well-known-symbol"),J=t("../internals/set-to-string-tag"),g=t("../internals/internal-state"),F=t("../internals/array-iteration").forEach,j=T("hidden"),v="Symbol",D="prototype",U=S("toPrimitive"),O=g.set,K=g.getterFor(v),E=Object[D],H=n.Symbol,Q=c("JSON","stringify"),B=M.f,P=L.f,A=N.f,_=I.f,q=R("symbols"),$=R("op-symbols"),tt=R("string-to-symbol-registry"),lt=R("symbol-to-string-registry"),et=R("wks"),it=n.QObject,nt=!it||!it[D]||!it[D].findChild,ct=d&&o((function(){return 7!=G(P({},"a",{get:function(){return P(this,"a",{value:7}).a}})).a}))?function(t,l,e){var i=B(E,l);i&&delete E[l],P(t,l,e),i&&t!==E&&P(E,l,i)}:P,st=function(t,l){var e=q[t]=G(H[D]);return O(e,{type:v,tag:t,description:l}),d||(e.description=l),e},dt=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof H},at=function(t,l,e){t===E&&at($,l,e),Z(t);var i=p(l,!0);return Z(e),r(q,i)?(e.enumerable?(r(t,j)&&t[j][i]&&(t[j][i]=!1),e=G(e,{enumerable:W(0,!1)})):(r(t,j)||P(t,j,W(1,{})),t[j][i]=!0),ct(t,i,e)):P(t,i,e)},ut=function(t,l){Z(t);var e=y(l),i=X(e).concat(Zt(e));return F(i,(function(l){d&&!rt.call(e,l)||at(t,l,e[l])})),t},ot=function(t,l){return void 0===l?G(t):ut(G(t),l)},rt=function(t){var l=p(t,!0),e=_.call(this,l);return!(this===E&&r(q,l)&&!r($,l))&&(!(e||!r(this,l)||!r(q,l)||r(this,j)&&this[j][l])||e)},bt=function(t,l){var e=y(t),i=p(l,!0);if(e!==E||!r(q,i)||r($,i)){var n=B(e,i);return!n||!r(q,i)||r(e,j)&&e[j][i]||(n.enumerable=!0),n}},ht=function(t){var l=A(y(t)),e=[];return F(l,(function(t){r(q,t)||r(z,t)||e.push(t)})),e},Zt=function(t){var l=t===E,e=A(l?$:y(t)),i=[];return F(e,(function(t){!r(q,t)||l&&!r(E,t)||i.push(q[t])})),i};if(a||(H=function(){if(this instanceof H)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,l=x(t),e=function(t){this===E&&e.call($,t),r(this,j)&&r(this[j],l)&&(this[j][l]=!1),ct(this,l,W(1,t))};return d&&nt&&ct(E,l,{configurable:!0,set:e}),st(l,t)},f(H[D],"toString",(function(){return K(this).tag})),f(H,"withoutSetter",(function(t){return st(x(t),t)})),I.f=rt,L.f=at,M.f=bt,Y.f=N.f=ht,V.f=Zt,k.f=function(t){return st(S(t),t)},d&&(P(H[D],"description",{configurable:!0,get:function(){return K(this).description}}),s||f(E,"propertyIsEnumerable",rt,{unsafe:!0}))),i({global:!0,wrap:!0,forced:!a,sham:!a},{Symbol:H}),F(X(et),(function(t){C(t)})),i({target:v,stat:!0,forced:!a},{for:function(t){var l=String(t);if(r(tt,l))return tt[l];var e=H(l);return tt[l]=e,lt[e]=l,e},keyFor:function(t){if(!dt(t))throw TypeError(t+" is not a symbol");if(r(lt,t))return lt[t]},useSetter:function(){nt=!0},useSimple:function(){nt=!1}}),i({target:"Object",stat:!0,forced:!a,sham:!d},{create:ot,defineProperty:at,defineProperties:ut,getOwnPropertyDescriptor:bt}),i({target:"Object",stat:!0,forced:!a},{getOwnPropertyNames:ht,getOwnPropertySymbols:Zt}),i({target:"Object",stat:!0,forced:o((function(){V.f(1)}))},{getOwnPropertySymbols:function(t){return V.f(m(t))}}),Q){var mt=!a||o((function(){var t=H();return"[null]"!=Q([t])||"{}"!=Q({a:t})||"{}"!=Q(Object(t))}));i({target:"JSON",stat:!0,forced:mt},{stringify:function(t,l,e){var i,n=[t],c=1;while(arguments.length>c)n.push(arguments[c++]);if(i=l,(h(l)||void 0!==t)&&!dt(t))return b(l)||(l=function(t,l){if("function"==typeof i&&(l=i.call(this,t,l)),!dt(l))return l}),n[1]=l,Q.apply(null,n)}})}H[D][U]||w(H[D],U,H[D].valueOf),J(H,v),z[j]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(t,l,e){(function(t){"use strict";function l(t){return l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function i(t){return Array.isArray?Array.isArray(t):"[object Array]"===p(t)}function n(t){return"boolean"===typeof t}function c(t){return null===t}function s(t){return null==t}function d(t){return"number"===typeof t}function a(t){return"string"===typeof t}function u(t){return"symbol"===l(t)}function o(t){return void 0===t}function r(t){return"[object RegExp]"===p(t)}function b(t){return"object"===l(t)&&null!==t}function h(t){return"[object Date]"===p(t)}function Z(t){return"[object Error]"===p(t)||t instanceof Error}function m(t){return"function"===typeof t}function y(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===l(t)||"undefined"===typeof t}function p(t){return Object.prototype.toString.call(t)}e.isArray=i,e.isBoolean=n,e.isNull=c,e.isNullOrUndefined=s,e.isNumber=d,e.isString=a,e.isSymbol=u,e.isUndefined=o,e.isRegExp=r,e.isObject=b,e.isDate=h,e.isError=Z,e.isFunction=m,e.isPrimitive=y,e.isBuffer=t.isBuffer}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(t,l,e){(function(e){"use strict";var i=t("elliptic"),n=t("bn.js");l.exports=function(t){return new s(t)};var c={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function s(t){this.curveType=c[t],this.curveType||(this.curveType={name:t}),this.curve=new i.ec(this.curveType.name),this.keys=void 0}function d(t,l,i){Array.isArray(t)||(t=t.toArray());var n=new e(t);if(i&&n.length<i){var c=new e(i-n.length);c.fill(0),n=e.concat([c,n])}return l?n.toString(l):n}c.p224=c.secp224r1,c.p256=c.secp256r1=c.prime256v1,c.p192=c.secp192r1=c.prime192v1,c.p384=c.secp384r1,c.p521=c.secp521r1,s.prototype.generateKeys=function(t,l){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,l)},s.prototype.computeSecret=function(t,l,i){l=l||"utf8",e.isBuffer(t)||(t=new e(t,l));var n=this.curve.keyFromPublic(t).getPublic(),c=n.mul(this.keys.getPrivate()).getX();return d(c,i,this.curveType.byteLength)},s.prototype.getPublicKey=function(t,l){var e=this.keys.getPublic("compressed"===l,!0);return"hybrid"===l&&(e[e.length-1]%2?e[0]=7:e[0]=6),d(e,t)},s.prototype.getPrivateKey=function(t){return d(this.keys.getPrivate(),t)},s.prototype.setPublicKey=function(t,l){return l=l||"utf8",e.isBuffer(t)||(t=new e(t,l)),this.keys._importPublic(t),this},s.prototype.setPrivateKey=function(t,l){l=l||"utf8",e.isBuffer(t)||(t=new e(t,l));var i=new n(t);return i=i.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(i),this}}).call(this,t("buffer").Buffer)},{"bn.js":330,buffer:216,elliptic:350}],330:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],331:[function(t,l,e){"use strict";var i=t("inherits"),n=t("md5.js"),c=t("ripemd160"),s=t("sha.js"),d=t("cipher-base");function a(t){d.call(this,"digest"),this._hash=t}i(a,d),a.prototype._update=function(t){this._hash.update(t)},a.prototype._final=function(){return this._hash.digest()},l.exports=function(t){return t=t.toLowerCase(),"md5"===t?new n:"rmd160"===t||"ripemd160"===t?new c:new a(s(t))}},{"cipher-base":218,inherits:387,"md5.js":434,ripemd160:493,"sha.js":499}],332:[function(t,l,e){"use strict";var i=t("md5.js");l.exports=function(t){return(new i).update(t).digest()}},{"md5.js":434}],333:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./legacy"),c=t("cipher-base"),s=t("safe-buffer").Buffer,d=t("create-hash/md5"),a=t("ripemd160"),u=t("sha.js"),o=s.alloc(128);function r(t,l){c.call(this,"digest"),"string"===typeof l&&(l=s.from(l));var e="sha512"===t||"sha384"===t?128:64;if(this._alg=t,this._key=l,l.length>e){var i="rmd160"===t?new a:u(t);l=i.update(l).digest()}else l.length<e&&(l=s.concat([l,o],e));for(var n=this._ipad=s.allocUnsafe(e),d=this._opad=s.allocUnsafe(e),r=0;r<e;r++)n[r]=54^l[r],d[r]=92^l[r];this._hash="rmd160"===t?new a:u(t),this._hash.update(n)}i(r,c),r.prototype._update=function(t){this._hash.update(t)},r.prototype._final=function(){var t=this._hash.digest(),l="rmd160"===this._alg?new a:u(this._alg);return l.update(this._opad).update(t).digest()},l.exports=function(t,l){return t=t.toLowerCase(),"rmd160"===t||"ripemd160"===t?new r("rmd160",l):"md5"===t?new n(d,l):new r(t,l)}},{"./legacy":334,"cipher-base":218,"create-hash/md5":332,inherits:387,ripemd160:493,"safe-buffer":494,"sha.js":499}],334:[function(t,l,e){"use strict";var i=t("inherits"),n=t("safe-buffer").Buffer,c=t("cipher-base"),s=n.alloc(128),d=64;function a(t,l){c.call(this,"digest"),"string"===typeof l&&(l=n.from(l)),this._alg=t,this._key=l,l.length>d?l=t(l):l.length<d&&(l=n.concat([l,s],d));for(var e=this._ipad=n.allocUnsafe(d),i=this._opad=n.allocUnsafe(d),a=0;a<d;a++)e[a]=54^l[a],i[a]=92^l[a];this._hash=[e]}i(a,c),a.prototype._update=function(t){this._hash.push(t)},a.prototype._final=function(){var t=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,t]))},l.exports=a},{"cipher-base":218,inherits:387,"safe-buffer":494}],335:[function(t,l,e){"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=t("randombytes"),e.createHash=e.Hash=t("create-hash"),e.createHmac=e.Hmac=t("create-hmac");var i=t("browserify-sign/algos"),n=Object.keys(i),c=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return c};var s=t("pbkdf2");e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var d=t("browserify-cipher");e.Cipher=d.Cipher,e.createCipher=d.createCipher,e.Cipheriv=d.Cipheriv,e.createCipheriv=d.createCipheriv,e.Decipher=d.Decipher,e.createDecipher=d.createDecipher,e.Decipheriv=d.Decipheriv,e.createDecipheriv=d.createDecipheriv,e.getCiphers=d.getCiphers,e.listCiphers=d.listCiphers;var a=t("diffie-hellman");e.DiffieHellmanGroup=a.DiffieHellmanGroup,e.createDiffieHellmanGroup=a.createDiffieHellmanGroup,e.getDiffieHellman=a.getDiffieHellman,e.createDiffieHellman=a.createDiffieHellman,e.DiffieHellman=a.DiffieHellman;var u=t("browserify-sign");e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=t("create-ecdh");var o=t("public-encrypt");e.publicEncrypt=o.publicEncrypt,e.privateEncrypt=o.privateEncrypt,e.publicDecrypt=o.publicDecrypt,e.privateDecrypt=o.privateDecrypt;var r=t("randomfill");e.randomFill=r.randomFill,e.randomFillSync=r.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},{"browserify-cipher":203,"browserify-sign":211,"browserify-sign/algos":208,"create-ecdh":329,"create-hash":331,"create-hmac":333,"diffie-hellman":345,pbkdf2:460,"public-encrypt":468,randombytes:475,randomfill:476}],336:[function(l,e,i){"use strict";function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}!function(l,c){"object"==("undefined"===typeof i?"undefined":n(i))&&"undefined"!=typeof e?e.exports=c():"function"==typeof t&&t.amd?t(c):l.dayjs=c()}(void 0,(function(){var t="millisecond",l="second",e="minute",i="hour",c="day",s="week",d="month",a="quarter",u="year",o="date",r=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,b=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h=function(t,l,e){var i=String(t);return!i||i.length>=l?t:""+Array(l+1-i.length).join(e)+t},Z={s:h,z:function(t){var l=-t.utcOffset(),e=Math.abs(l),i=Math.floor(e/60),n=e%60;return(l<=0?"+":"-")+h(i,2,"0")+":"+h(n,2,"0")},m:function t(l,e){if(l.date()<e.date())return-t(e,l);var i=12*(e.year()-l.year())+(e.month()-l.month()),n=l.add(i,d),c=e-n<0,s=l.add(i+(c?-1:1),d);return+(-(i+(e-n)/(c?n-s:s-n))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(n){return{M:d,y:u,w:s,d:c,D:o,h:i,m:e,s:l,ms:t,Q:a}[n]||String(n||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},y="en",p={};p[y]=m;var W=function(t){return t instanceof N},G=function(t,l,e){var i;if(!t)return y;if("string"==typeof t)p[t]&&(i=t),l&&(p[t]=l,i=t);else{var n=t.name;p[n]=t,i=n}return!e&&i&&(y=i),i||!e&&y},X=function(t,l){if(W(t))return t.clone();var e="object"==n(l)?l:{};return e.date=t,e.args=arguments,new N(e)},Y=Z;Y.l=G,Y.i=W,Y.w=function(t,l){return X(t,{locale:l.$L,utc:l.$u,$offset:l.$offset})};var N=function(){function n(t){this.$L=this.$L||G(t.locale,null,!0),this.parse(t)}var h=n.prototype;return h.parse=function(t){this.$d=function(t){var l=t.date,e=t.utc;if(null===l)return new Date(NaN);if(Y.u(l))return new Date;if(l instanceof Date)return new Date(l);if("string"==typeof l&&!/Z$/i.test(l)){var i=l.match(r);if(i){var n=i[2]-1||0,c=(i[7]||"0").substring(0,3);return e?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,c)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,c)}}return new Date(l)}(t),this.init()},h.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},h.$utils=function(){return Y},h.isValid=function(){return!("Invalid Date"===this.$d.toString())},h.isSame=function(t,l){var e=X(t);return this.startOf(l)<=e&&e<=this.endOf(l)},h.isAfter=function(t,l){return X(t)<this.startOf(l)},h.isBefore=function(t,l){return this.endOf(l)<X(t)},h.$g=function(t,l,e){return Y.u(t)?this[l]:this.set(e,t)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(t,n){var a=this,r=!!Y.u(n)||n,b=Y.p(t),h=function(t,l){var e=Y.w(a.$u?Date.UTC(a.$y,l,t):new Date(a.$y,l,t),a);return r?e:e.endOf(c)},Z=function(t,l){return Y.w(a.toDate()[t].apply(a.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(l)),a)},m=this.$W,y=this.$M,p=this.$D,W="set"+(this.$u?"UTC":"");switch(b){case u:return r?h(1,0):h(31,11);case d:return r?h(1,y):h(0,y+1);case s:var G=this.$locale().weekStart||0,X=(m<G?m+7:m)-G;return h(r?p-X:p+(6-X),y);case c:case o:return Z(W+"Hours",0);case i:return Z(W+"Minutes",1);case e:return Z(W+"Seconds",2);case l:return Z(W+"Milliseconds",3);default:return this.clone()}},h.endOf=function(t){return this.startOf(t,!1)},h.$set=function(n,s){var a,r=Y.p(n),b="set"+(this.$u?"UTC":""),h=(a={},a[c]=b+"Date",a[o]=b+"Date",a[d]=b+"Month",a[u]=b+"FullYear",a[i]=b+"Hours",a[e]=b+"Minutes",a[l]=b+"Seconds",a[t]=b+"Milliseconds",a)[r],Z=r===c?this.$D+(s-this.$W):s;if(r===d||r===u){var m=this.clone().set(o,1);m.$d[h](Z),m.init(),this.$d=m.set(o,Math.min(this.$D,m.daysInMonth())).$d}else h&&this.$d[h](Z);return this.init(),this},h.set=function(t,l){return this.clone().$set(t,l)},h.get=function(t){return this[Y.p(t)]()},h.add=function(t,n){var a,o=this;t=Number(t);var r=Y.p(n),b=function(l){var e=X(o);return Y.w(e.date(e.date()+Math.round(l*t)),o)};if(r===d)return this.set(d,this.$M+t);if(r===u)return this.set(u,this.$y+t);if(r===c)return b(1);if(r===s)return b(7);var h=(a={},a[e]=6e4,a[i]=36e5,a[l]=1e3,a)[r]||1,Z=this.$d.getTime()+t*h;return Y.w(Z,this)},h.subtract=function(t,l){return this.add(-1*t,l)},h.format=function(t){var l=this;if(!this.isValid())return"Invalid Date";var e=t||"YYYY-MM-DDTHH:mm:ssZ",i=Y.z(this),n=this.$locale(),c=this.$H,s=this.$m,d=this.$M,a=n.weekdays,u=n.months,o=function(t,i,n,c){return t&&(t[i]||t(l,e))||n[i].substr(0,c)},r=function(t){return Y.s(c%12||12,t,"0")},h=n.meridiem||function(t,l,e){var i=t<12?"AM":"PM";return e?i.toLowerCase():i},Z={YY:String(this.$y).slice(-2),YYYY:this.$y,M:d+1,MM:Y.s(d+1,2,"0"),MMM:o(n.monthsShort,d,u,3),MMMM:o(u,d),D:this.$D,DD:Y.s(this.$D,2,"0"),d:String(this.$W),dd:o(n.weekdaysMin,this.$W,a,2),ddd:o(n.weekdaysShort,this.$W,a,3),dddd:a[this.$W],H:String(c),HH:Y.s(c,2,"0"),h:r(1),hh:r(2),a:h(c,s,!0),A:h(c,s,!1),m:String(s),mm:Y.s(s,2,"0"),s:String(this.$s),ss:Y.s(this.$s,2,"0"),SSS:Y.s(this.$ms,3,"0"),Z:i};return e.replace(b,(function(t,l){return l||Z[t]||i.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(t,n,o){var r,b=Y.p(n),h=X(t),Z=6e4*(h.utcOffset()-this.utcOffset()),m=this-h,y=Y.m(this,h);return y=(r={},r[u]=y/12,r[d]=y,r[a]=y/3,r[s]=(m-Z)/6048e5,r[c]=(m-Z)/864e5,r[i]=m/36e5,r[e]=m/6e4,r[l]=m/1e3,r)[b]||m,o?y:Y.a(y)},h.daysInMonth=function(){return this.endOf(d).$D},h.$locale=function(){return p[this.$L]},h.locale=function(t,l){if(!t)return this.$L;var e=this.clone(),i=G(t,l,!0);return i&&(e.$L=i),e},h.clone=function(){return Y.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},n}(),V=N.prototype;return X.prototype=V,[["$ms",t],["$s",l],["$m",e],["$H",i],["$W",c],["$M",d],["$y",u],["$D",o]].forEach((function(t){V[t[1]]=function(l){return this.$g(l,t[0],t[1])}})),X.extend=function(t,l){return t(l,N,X),X},X.locale=G,X.isDayjs=W,X.unix=function(t){return X(1e3*t)},X.en=p[y],X.Ls=p,X}))},{}],337:[function(l,e,i){"use strict";function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}!function(l,c){"object"==("undefined"===typeof i?"undefined":n(i))&&"undefined"!=typeof e?e.exports=c():"function"==typeof t&&t.amd?t(c):l.dayjs_plugin_customParseFormat=c()}(void 0,(function(){var t,l=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,e=/\d\d/,i=/\d\d?/,n=/\d*[^\s\d-:/()]+/,c=function(t){return function(l){this[t]=+l}},s=[/[+-]\d\d:?\d\d/,function(t){var l,e;(this.zone||(this.zone={})).offset=(l=t.match(/([+-]|\d\d)/g),0===(e=60*l[1]+ +l[2])?0:"+"===l[0]?-e:e)}],d=function(l){var e=t[l];return e&&(e.indexOf?e:e.s.concat(e.f))},a={A:[/[AP]M/,function(t){this.afternoon="PM"===t}],a:[/[ap]m/,function(t){this.afternoon="pm"===t}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[e,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,c("seconds")],ss:[i,c("seconds")],m:[i,c("minutes")],mm:[i,c("minutes")],H:[i,c("hours")],h:[i,c("hours")],HH:[i,c("hours")],hh:[i,c("hours")],D:[i,c("day")],DD:[e,c("day")],Do:[n,function(l){var e=t.ordinal,i=l.match(/\d+/);if(this.day=i[0],e)for(var n=1;n<=31;n+=1)e(n).replace(/\[|\]/g,"")===l&&(this.day=n)}],M:[i,c("month")],MM:[e,c("month")],MMM:[n,function(t){var l=d("months"),e=(d("monthsShort")||l.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],MMMM:[n,function(t){var l=d("months").indexOf(t)+1;if(l<1)throw new Error;this.month=l%12||l}],Y:[/[+-]?\d+/,c("year")],YY:[e,function(t){t=+t,this.year=t+(t>68?1900:2e3)}],YYYY:[/\d{4}/,c("year")],Z:s,ZZ:s},u=function(t,e,i){try{var n=function(t){for(var e=t.match(l),i=e.length,n=0;n<i;n+=1){var c=e[n],s=a[c],d=s&&s[0],u=s&&s[1];e[n]=u?{regex:d,parser:u}:c.replace(/^\[|\]$/g,"")}return function(t){for(var l={},n=0,c=0;n<i;n+=1){var s=e[n];if("string"==typeof s)c+=s.length;else{var d=s.regex,a=s.parser,u=t.substr(c),o=d.exec(u)[0];a.call(l,o),t=t.replace(o,"")}}return function(t){var l=t.afternoon;if(void 0!==l){var e=t.hours;l?e<12&&(t.hours+=12):12===e&&(t.hours=0),delete t.afternoon}}(l),l}}(e)(t),c=n.year,s=n.month,d=n.day,u=n.hours,o=n.minutes,r=n.seconds,b=n.milliseconds,h=n.zone,Z=new Date,m=d||(c||s?1:Z.getDate()),y=c||Z.getFullYear(),p=0;c&&!s||(p=s>0?s-1:Z.getMonth());var W=u||0,G=o||0,X=r||0,Y=b||0;return h?new Date(Date.UTC(y,p,m,W,G,X,Y+60*h.offset*1e3)):i?new Date(Date.UTC(y,p,m,W,G,X,Y)):new Date(y,p,m,W,G,X,Y)}catch(t){return new Date("")}};return function(l,e,i){var n=e.prototype,c=n.parse;n.parse=function(l){var e=l.date,n=l.utc,s=l.args;this.$u=n;var d=s[1];if("string"==typeof d){var a=!0===s[2],o=!0===s[3],r=a||o,b=s[2];o&&(b=s[2]),a||(t=b?i.Ls[b]:this.$locale()),this.$d=u(e,d,n),this.init(),b&&!0!==b&&(this.$L=this.locale(b).$L),r&&e!==this.format(d)&&(this.$d=new Date(""))}else if(d instanceof Array)for(var h=d.length,Z=1;Z<=h;Z+=1){s[1]=d[Z-1];var m=i.apply(this,s);if(m.isValid()){this.$d=m.$d,this.$L=m.$L,this.init();break}Z===h&&(this.$d=new Date(""))}else c.call(this,l)}}}))},{}],338:[function(l,e,i){"use strict";function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}!function(l,c){"object"==("undefined"===typeof i?"undefined":n(i))&&"undefined"!=typeof e?e.exports=c():"function"==typeof t&&t.amd?t(c):l.dayjs_plugin_utc=c()}(void 0,(function(){return function(t,l,e){var i=(new Date).getTimezoneOffset(),n=l.prototype;e.utc=function(t){return new l({date:t,utc:!0,args:arguments})},n.utc=function(){return e(this.toDate(),{locale:this.$L,utc:!0})},n.local=function(){return e(this.toDate(),{locale:this.$L,utc:!1})};var c=n.parse;n.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),c.call(this,t)};var s=n.init;n.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else s.call(this)};var d=n.utcOffset;n.utcOffset=function(t,l){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?d.call(this):this.$offset;var n=Math.abs(t)<=16?60*t:t,c=this;return l?(c.$offset=n,c.$u=0===t,c):(0!==t?(c=this.local().add(n+i,"minute")).$offset=n:c=this.utc(),c)};var a=n.format;n.format=function(t){var l=t||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return a.call(this,l)},n.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+i;return this.$d.valueOf()-6e4*t},n.isUTC=function(){return!!this.$u},n.toISOString=function(){return this.toDate().toISOString()},n.toString=function(){return this.toDate().toUTCString()};var u=n.toDate;n.toDate=function(t){return"s"===t&&this.$offset?e(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():u.call(this)};var o=n.diff;n.diff=function(t,l,i){var n=this.local(),c=e(t).local();return o.call(n,c,l,i)}}}))},{}],339:[function(t,l,e){"use strict";e.utils=t("./des/utils"),e.Cipher=t("./des/cipher"),e.DES=t("./des/des"),e.CBC=t("./des/cbc"),e.EDE=t("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(t,l,e){"use strict";var i=t("minimalistic-assert"),n=t("inherits"),c={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var l=0;l<this.iv.length;l++)this.iv[l]=t[l]}function d(t){function l(l){t.call(this,l),this._cbcInit()}n(l,t);for(var e=Object.keys(c),i=0;i<e.length;i++){var s=e[i];l.prototype[s]=c[s]}return l.create=function(t){return new l(t)},l}e.instantiate=d,c._cbcInit=function(){var t=new s(this.options.iv);this._cbcState=t},c._update=function(t,l,e,i){var n=this._cbcState,c=this.constructor.super_.prototype,s=n.iv;if("encrypt"===this.type){for(var d=0;d<this.blockSize;d++)s[d]^=t[l+d];for(c._update.call(this,s,0,e,i),d=0;d<this.blockSize;d++)s[d]=e[i+d]}else{for(c._update.call(this,t,l,e,i),d=0;d<this.blockSize;d++)e[i+d]^=s[d];for(d=0;d<this.blockSize;d++)s[d]=t[l+d]}}},{inherits:387,"minimalistic-assert":437}],341:[function(t,l,e){"use strict";var i=t("minimalistic-assert");function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}l.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,l){for(var e=Math.min(this.buffer.length-this.bufferOff,t.length-l),i=0;i<e;i++)this.buffer[this.bufferOff+i]=t[l+i];return this.bufferOff+=e,e},n.prototype._flushBuffer=function(t,l){return this._update(this.buffer,0,t,l),this.bufferOff=0,this.blockSize},n.prototype._updateEncrypt=function(t){var l=0,e=0,i=(this.bufferOff+t.length)/this.blockSize|0,n=new Array(i*this.blockSize);0!==this.bufferOff&&(l+=this._buffer(t,l),this.bufferOff===this.buffer.length&&(e+=this._flushBuffer(n,e)));for(var c=t.length-(t.length-l)%this.blockSize;l<c;l+=this.blockSize)this._update(t,l,n,e),e+=this.blockSize;for(;l<t.length;l++,this.bufferOff++)this.buffer[this.bufferOff]=t[l];return n},n.prototype._updateDecrypt=function(t){for(var l=0,e=0,i=Math.ceil((this.bufferOff+t.length)/this.blockSize)-1,n=new Array(i*this.blockSize);i>0;i--)l+=this._buffer(t,l),e+=this._flushBuffer(n,e);return l+=this._buffer(t,l),n},n.prototype.final=function(t){var l,e;return t&&(l=this.update(t)),e="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),l?l.concat(e):e},n.prototype._pad=function(t,l){if(0===l)return!1;while(l<t.length)t[l++]=0;return!0},n.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var t=new Array(this.blockSize);return this._update(this.buffer,0,t,0),t},n.prototype._unpad=function(t){return t},n.prototype._finalDecrypt=function(){i.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var t=new Array(this.blockSize);return this._flushBuffer(t,0),this._unpad(t)}},{"minimalistic-assert":437}],342:[function(t,l,e){"use strict";var i=t("minimalistic-assert"),n=t("inherits"),c=t("./utils"),s=t("./cipher");function d(){this.tmp=new Array(2),this.keys=null}function a(t){s.call(this,t);var l=new d;this._desState=l,this.deriveKeys(l,t.key)}n(a,s),l.exports=a,a.create=function(t){return new a(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];a.prototype.deriveKeys=function(t,l){t.keys=new Array(32),i.equal(l.length,this.blockSize,"Invalid key length");var e=c.readUInt32BE(l,0),n=c.readUInt32BE(l,4);c.pc1(e,n,t.tmp,0),e=t.tmp[0],n=t.tmp[1];for(var s=0;s<t.keys.length;s+=2){var d=u[s>>>1];e=c.r28shl(e,d),n=c.r28shl(n,d),c.pc2(e,n,t.keys,s)}},a.prototype._update=function(t,l,e,i){var n=this._desState,s=c.readUInt32BE(t,l),d=c.readUInt32BE(t,l+4);c.ip(s,d,n.tmp,0),s=n.tmp[0],d=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,d,n.tmp,0):this._decrypt(n,s,d,n.tmp,0),s=n.tmp[0],d=n.tmp[1],c.writeUInt32BE(e,s,i),c.writeUInt32BE(e,d,i+4)},a.prototype._pad=function(t,l){for(var e=t.length-l,i=l;i<t.length;i++)t[i]=e;return!0},a.prototype._unpad=function(t){for(var l=t[t.length-1],e=t.length-l;e<t.length;e++)i.equal(t[e],l);return t.slice(0,t.length-l)},a.prototype._encrypt=function(t,l,e,i,n){for(var s=l,d=e,a=0;a<t.keys.length;a+=2){var u=t.keys[a],o=t.keys[a+1];c.expand(d,t.tmp,0),u^=t.tmp[0],o^=t.tmp[1];var r=c.substitute(u,o),b=c.permute(r),h=d;d=(s^b)>>>0,s=h}c.rip(d,s,i,n)},a.prototype._decrypt=function(t,l,e,i,n){for(var s=e,d=l,a=t.keys.length-2;a>=0;a-=2){var u=t.keys[a],o=t.keys[a+1];c.expand(s,t.tmp,0),u^=t.tmp[0],o^=t.tmp[1];var r=c.substitute(u,o),b=c.permute(r),h=s;s=(d^b)>>>0,d=h}c.rip(s,d,i,n)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(t,l,e){"use strict";var i=t("minimalistic-assert"),n=t("inherits"),c=t("./cipher"),s=t("./des");function d(t,l){i.equal(l.length,24,"Invalid key length");var e=l.slice(0,8),n=l.slice(8,16),c=l.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:e}),s.create({type:"decrypt",key:n}),s.create({type:"encrypt",key:c})]:[s.create({type:"decrypt",key:c}),s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:e})]}function a(t){c.call(this,t);var l=new d(this.type,this.options.key);this._edeState=l}n(a,c),l.exports=a,a.create=function(t){return new a(t)},a.prototype._update=function(t,l,e,i){var n=this._edeState;n.ciphers[0]._update(t,l,e,i),n.ciphers[1]._update(e,i,e,i),n.ciphers[2]._update(e,i,e,i)},a.prototype._pad=s.prototype._pad,a.prototype._unpad=s.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(t,l,e){"use strict";e.readUInt32BE=function(t,l){var e=t[0+l]<<24|t[1+l]<<16|t[2+l]<<8|t[3+l];return e>>>0},e.writeUInt32BE=function(t,l,e){t[0+e]=l>>>24,t[1+e]=l>>>16&255,t[2+e]=l>>>8&255,t[3+e]=255&l},e.ip=function(t,l,e,i){for(var n=0,c=0,s=6;s>=0;s-=2){for(var d=0;d<=24;d+=8)n<<=1,n|=l>>>d+s&1;for(d=0;d<=24;d+=8)n<<=1,n|=t>>>d+s&1}for(s=6;s>=0;s-=2){for(d=1;d<=25;d+=8)c<<=1,c|=l>>>d+s&1;for(d=1;d<=25;d+=8)c<<=1,c|=t>>>d+s&1}e[i+0]=n>>>0,e[i+1]=c>>>0},e.rip=function(t,l,e,i){for(var n=0,c=0,s=0;s<4;s++)for(var d=24;d>=0;d-=8)n<<=1,n|=l>>>d+s&1,n<<=1,n|=t>>>d+s&1;for(s=4;s<8;s++)for(d=24;d>=0;d-=8)c<<=1,c|=l>>>d+s&1,c<<=1,c|=t>>>d+s&1;e[i+0]=n>>>0,e[i+1]=c>>>0},e.pc1=function(t,l,e,i){for(var n=0,c=0,s=7;s>=5;s--){for(var d=0;d<=24;d+=8)n<<=1,n|=l>>d+s&1;for(d=0;d<=24;d+=8)n<<=1,n|=t>>d+s&1}for(d=0;d<=24;d+=8)n<<=1,n|=l>>d+s&1;for(s=1;s<=3;s++){for(d=0;d<=24;d+=8)c<<=1,c|=l>>d+s&1;for(d=0;d<=24;d+=8)c<<=1,c|=t>>d+s&1}for(d=0;d<=24;d+=8)c<<=1,c|=t>>d+s&1;e[i+0]=n>>>0,e[i+1]=c>>>0},e.r28shl=function(t,l){return t<<l&268435455|t>>>28-l};var i=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,l,e,n){for(var c=0,s=0,d=i.length>>>1,a=0;a<d;a++)c<<=1,c|=t>>>i[a]&1;for(a=d;a<i.length;a++)s<<=1,s|=l>>>i[a]&1;e[n+0]=c>>>0,e[n+1]=s>>>0},e.expand=function(t,l,e){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var c=23;c>=15;c-=4)i<<=6,i|=t>>>c&63;for(c=11;c>=3;c-=4)n|=t>>>c&63,n<<=6;n|=(31&t)<<1|t>>>31,l[e+0]=i>>>0,l[e+1]=n>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,l){for(var e=0,i=0;i<4;i++){var c=t>>>18-6*i&63,s=n[64*i+c];e<<=4,e|=s}for(i=0;i<4;i++)c=l>>>18-6*i&63,s=n[256+64*i+c],e<<=4,e|=s;return e>>>0};var c=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var l=0,e=0;e<c.length;e++)l<<=1,l|=t>>>c[e]&1;return l>>>0},e.padSplit=function(t,l,e){var i=t.toString(2);while(i.length<l)i="0"+i;for(var n=[],c=0;c<l;c+=e)n.push(i.slice(c,c+e));return n.join(" ")}},{}],345:[function(t,l,e){(function(l){"use strict";var i=t("./lib/generatePrime"),n=t("./lib/primes.json"),c=t("./lib/dh");function s(t){var e=new l(n[t].prime,"hex"),i=new l(n[t].gen,"hex");return new c(e,i)}var d={binary:!0,hex:!0,base64:!0};function a(t,e,n,s){return l.isBuffer(e)||void 0===d[e]?a(t,"binary",e,n):(e=e||"binary",s=s||"binary",n=n||new l([2]),l.isBuffer(n)||(n=new l(n,s)),"number"===typeof t?new c(i(t,n),n,!0):(l.isBuffer(t)||(t=new l(t,e)),new c(t,n,!0)))}e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=s,e.createDiffieHellman=e.DiffieHellman=a}).call(this,t("buffer").Buffer)},{"./lib/dh":346,"./lib/generatePrime":347,"./lib/primes.json":348,buffer:216}],346:[function(t,l,e){(function(e){"use strict";var i=t("bn.js"),n=t("miller-rabin"),c=new n,s=new i(24),d=new i(11),a=new i(10),u=new i(3),o=new i(7),r=t("./generatePrime"),b=t("randombytes");function h(t,l){return l=l||"utf8",e.isBuffer(t)||(t=new e(t,l)),this._pub=new i(t),this}function Z(t,l){return l=l||"utf8",e.isBuffer(t)||(t=new e(t,l)),this._priv=new i(t),this}l.exports=p;var m={};function y(t,l){var e=l.toString("hex"),i=[e,t.toString(16)].join("_");if(i in m)return m[i];var n,b=0;if(t.isEven()||!r.simpleSieve||!r.fermatTest(t)||!c.test(t))return b+=1,b+="02"===e||"05"===e?8:4,m[i]=b,b;switch(c.test(t.shrn(1))||(b+=2),e){case"02":t.mod(s).cmp(d)&&(b+=8);break;case"05":n=t.mod(a),n.cmp(u)&&n.cmp(o)&&(b+=8);break;default:b+=4}return m[i]=b,b}function p(t,l,e){this.setGenerator(l),this.__prime=new i(t),this._prime=i.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,e?(this.setPublicKey=h,this.setPrivateKey=Z):this._primeCode=8}function W(t,l){var i=new e(t.toArray());return l?i.toString(l):i}Object.defineProperty(p.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!==typeof this._primeCode&&(this._primeCode=y(this.__prime,this.__gen)),this._primeCode}}),p.prototype.generateKeys=function(){return this._priv||(this._priv=new i(b(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},p.prototype.computeSecret=function(t){t=new i(t),t=t.toRed(this._prime);var l=t.redPow(this._priv).fromRed(),n=new e(l.toArray()),c=this.getPrime();if(n.length<c.length){var s=new e(c.length-n.length);s.fill(0),n=e.concat([s,n])}return n},p.prototype.getPublicKey=function(t){return W(this._pub,t)},p.prototype.getPrivateKey=function(t){return W(this._priv,t)},p.prototype.getPrime=function(t){return W(this.__prime,t)},p.prototype.getGenerator=function(t){return W(this._gen,t)},p.prototype.setGenerator=function(t,l){return l=l||"utf8",e.isBuffer(t)||(t=new e(t,l)),this.__gen=t,this._gen=new i(t),this}}).call(this,t("buffer").Buffer)},{"./generatePrime":347,"bn.js":349,buffer:216,"miller-rabin":435,randombytes:475}],347:[function(t,l,e){"use strict";var i=t("randombytes");l.exports=G,G.simpleSieve=p,G.fermatTest=W;var n=t("bn.js"),c=new n(24),s=t("miller-rabin"),d=new s,a=new n(1),u=new n(2),o=new n(5),r=(new n(16),new n(8),new n(10)),b=new n(3),h=(new n(7),new n(11)),Z=new n(4),m=(new n(12),null);function y(){if(null!==m)return m;var t=1048576,l=[];l[0]=2;for(var e=1,i=3;i<t;i+=2){for(var n=Math.ceil(Math.sqrt(i)),c=0;c<e&&l[c]<=n;c++)if(i%l[c]===0)break;e!==c&&l[c]<=n||(l[e++]=i)}return m=l,l}function p(t){for(var l=y(),e=0;e<l.length;e++)if(0===t.modn(l[e]))return 0===t.cmpn(l[e]);return!0}function W(t){var l=n.mont(t);return 0===u.toRed(l).redPow(t.subn(1)).fromRed().cmpn(1)}function G(t,l){if(t<16)return new n(2===l||5===l?[140,123]:[140,39]);var e,s;l=new n(l);while(1){e=new n(i(Math.ceil(t/8)));while(e.bitLength()>t)e.ishrn(1);if(e.isEven()&&e.iadd(a),e.testn(1)||e.iadd(u),l.cmp(u)){if(!l.cmp(o))while(e.mod(r).cmp(b))e.iadd(Z)}else while(e.mod(c).cmp(h))e.iadd(Z);if(s=e.shrn(1),p(s)&&p(e)&&W(s)&&W(e)&&d.test(s)&&d.test(e))return e}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(t,l,e){l.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],350:[function(t,l,e){"use strict";var i=e;i.version=t("../package.json").version,i.utils=t("./elliptic/utils"),i.rand=t("brorand"),i.curve=t("./elliptic/curve"),i.curves=t("./elliptic/curves"),i.ec=t("./elliptic/ec"),i.eddsa=t("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("../utils"),c=n.getNAF,s=n.getJSF,d=n.assert;function a(t,l){this.type=t,this.p=new i(l.p,16),this.red=l.prime?i.red(l.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=l.n&&new i(l.n,16),this.g=l.g&&this.pointFromJSON(l.g,l.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var e=this.n&&this.p.div(this.n);!e||e.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,l){this.curve=t,this.type=l,this.precomputed=null}l.exports=a,a.prototype.point=function(){throw new Error("Not implemented")},a.prototype.validate=function(){throw new Error("Not implemented")},a.prototype._fixedNafMul=function(t,l){d(t.precomputed);var e=t._getDoubles(),i=c(l,1,this._bitLength),n=(1<<e.step+1)-(e.step%2===0?2:1);n/=3;for(var s=[],a=0;a<i.length;a+=e.step){var u=0;for(l=a+e.step-1;l>=a;l--)u=(u<<1)+i[l];s.push(u)}for(var o=this.jpoint(null,null,null),r=this.jpoint(null,null,null),b=n;b>0;b--){for(a=0;a<s.length;a++)u=s[a],u===b?r=r.mixedAdd(e.points[a]):u===-b&&(r=r.mixedAdd(e.points[a].neg()));o=o.add(r)}return o.toP()},a.prototype._wnafMul=function(t,l){var e=4,i=t._getNAFPoints(e);e=i.wnd;for(var n=i.points,s=c(l,e,this._bitLength),a=this.jpoint(null,null,null),u=s.length-1;u>=0;u--){for(l=0;u>=0&&0===s[u];u--)l++;if(u>=0&&l++,a=a.dblp(l),u<0)break;var o=s[u];d(0!==o),a="affine"===t.type?o>0?a.mixedAdd(n[o-1>>1]):a.mixedAdd(n[-o-1>>1].neg()):o>0?a.add(n[o-1>>1]):a.add(n[-o-1>>1].neg())}return"affine"===t.type?a.toP():a},a.prototype._wnafMulAdd=function(t,l,e,i,n){for(var d=this._wnafT1,a=this._wnafT2,u=this._wnafT3,o=0,r=0;r<i;r++){var b=l[r],h=b._getNAFPoints(t);d[r]=h.wnd,a[r]=h.points}for(r=i-1;r>=1;r-=2){var Z=r-1,m=r;if(1===d[Z]&&1===d[m]){var y=[l[Z],null,null,l[m]];0===l[Z].y.cmp(l[m].y)?(y[1]=l[Z].add(l[m]),y[2]=l[Z].toJ().mixedAdd(l[m].neg())):0===l[Z].y.cmp(l[m].y.redNeg())?(y[1]=l[Z].toJ().mixedAdd(l[m]),y[2]=l[Z].add(l[m].neg())):(y[1]=l[Z].toJ().mixedAdd(l[m]),y[2]=l[Z].toJ().mixedAdd(l[m].neg()));var p=[-3,-1,-5,-7,0,7,5,1,3],W=s(e[Z],e[m]);o=Math.max(W[0].length,o),u[Z]=new Array(o),u[m]=new Array(o);for(var G=0;G<o;G++){var X=0|W[0][G],Y=0|W[1][G];u[Z][G]=p[3*(X+1)+(Y+1)],u[m][G]=0,a[Z]=y}}else u[Z]=c(e[Z],d[Z],this._bitLength),u[m]=c(e[m],d[m],this._bitLength),o=Math.max(u[Z].length,o),o=Math.max(u[m].length,o)}var N=this.jpoint(null,null,null),V=this._wnafT4;for(r=o;r>=0;r--){var M=0;while(r>=0){var L=!0;for(G=0;G<i;G++)V[G]=0|u[G][r],0!==V[G]&&(L=!1);if(!L)break;M++,r--}if(r>=0&&M++,N=N.dblp(M),r<0)break;for(G=0;G<i;G++){var I=V[G];0!==I&&(I>0?b=a[G][I-1>>1]:I<0&&(b=a[G][-I-1>>1].neg()),N="affine"===b.type?N.mixedAdd(b):N.add(b))}}for(r=0;r<i;r++)a[r]=null;return n?N:N.toP()},a.BasePoint=u,u.prototype.eq=function(){throw new Error("Not implemented")},u.prototype.validate=function(){return this.curve.validate(this)},a.prototype.decodePoint=function(t,l){t=n.toArray(t,l);var e=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1===2*e){6===t[0]?d(t[t.length-1]%2===0):7===t[0]&&d(t[t.length-1]%2===1);var i=this.point(t.slice(1,1+e),t.slice(1+e,1+2*e));return i}if((2===t[0]||3===t[0])&&t.length-1===e)return this.pointFromX(t.slice(1,1+e),3===t[0]);throw new Error("Unknown point format")},u.prototype.encodeCompressed=function(t){return this.encode(t,!0)},u.prototype._encode=function(t){var l=this.curve.p.byteLength(),e=this.getX().toArray("be",l);return t?[this.getY().isEven()?2:3].concat(e):[4].concat(e,this.getY().toArray("be",l))},u.prototype.encode=function(t,l){return n.encode(this._encode(l),t)},u.prototype.precompute=function(t){if(this.precomputed)return this;var l={doubles:null,naf:null,beta:null};return l.naf=this._getNAFPoints(8),l.doubles=this._getDoubles(4,t),l.beta=this._getBeta(),this.precomputed=l,this},u.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var l=this.precomputed.doubles;return!!l&&l.points.length>=Math.ceil((t.bitLength()+1)/l.step)},u.prototype._getDoubles=function(t,l){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var e=[this],i=this,n=0;n<l;n+=t){for(var c=0;c<t;c++)i=i.dbl();e.push(i)}return{step:t,points:e}},u.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var l=[this],e=(1<<t)-1,i=1===e?null:this.dbl(),n=1;n<e;n++)l[n]=l[n-1].add(i);return{wnd:t,points:l}},u.prototype._getBeta=function(){return null},u.prototype.dblp=function(t){for(var l=this,e=0;e<t;e++)l=l.dbl();return l}},{"../utils":364,"bn.js":365}],352:[function(t,l,e){"use strict";var i=t("../utils"),n=t("bn.js"),c=t("inherits"),s=t("./base"),d=i.assert;function a(t){this.twisted=1!==(0|t.a),this.mOneA=this.twisted&&-1===(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),d(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1===(0|t.c)}function u(t,l,e,i,c){s.BasePoint.call(this,t,"projective"),null===l&&null===e&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(l,16),this.y=new n(e,16),this.z=i?new n(i,16):this.curve.one,this.t=c&&new n(c,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}c(a,s),l.exports=a,a.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},a.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},a.prototype.jpoint=function(t,l,e,i){return this.point(t,l,e,i)},a.prototype.pointFromX=function(t,l){t=new n(t,16),t.red||(t=t.toRed(this.red));var e=t.redSqr(),i=this.c2.redSub(this.a.redMul(e)),c=this.one.redSub(this.c2.redMul(this.d).redMul(e)),s=i.redMul(c.redInvm()),d=s.redSqrt();if(0!==d.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var a=d.fromRed().isOdd();return(l&&!a||!l&&a)&&(d=d.redNeg()),this.point(t,d)},a.prototype.pointFromY=function(t,l){t=new n(t,16),t.red||(t=t.toRed(this.red));var e=t.redSqr(),i=e.redSub(this.c2),c=e.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(c.redInvm());if(0===s.cmp(this.zero)){if(l)throw new Error("invalid point");return this.point(this.zero,t)}var d=s.redSqrt();if(0!==d.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return d.fromRed().isOdd()!==l&&(d=d.redNeg()),this.point(d,t)},a.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var l=t.x.redSqr(),e=t.y.redSqr(),i=l.redMul(this.a).redAdd(e),n=this.c2.redMul(this.one.redAdd(this.d.redMul(l).redMul(e)));return 0===i.cmp(n)},c(u,s.BasePoint),a.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},a.prototype.point=function(t,l,e,i){return new u(this,t,l,e,i)},u.fromJSON=function(t,l){return new u(t,l[0],l[1],l[2])},u.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),l=this.y.redSqr(),e=this.z.redSqr();e=e.redIAdd(e);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(l),c=i.redAdd(l),s=c.redSub(e),d=i.redSub(l),a=n.redMul(s),u=c.redMul(d),o=n.redMul(d),r=s.redMul(c);return this.curve.point(a,u,r,o)},u.prototype._projDbl=function(){var t,l,e,i=this.x.redAdd(this.y).redSqr(),n=this.x.redSqr(),c=this.y.redSqr();if(this.curve.twisted){var s=this.curve._mulA(n),d=s.redAdd(c);if(this.zOne)t=i.redSub(n).redSub(c).redMul(d.redSub(this.curve.two)),l=d.redMul(s.redSub(c)),e=d.redSqr().redSub(d).redSub(d);else{var a=this.z.redSqr(),u=d.redSub(a).redISub(a);t=i.redSub(n).redISub(c).redMul(u),l=d.redMul(s.redSub(c)),e=d.redMul(u)}}else s=n.redAdd(c),a=this.curve._mulC(this.z).redSqr(),u=s.redSub(a).redSub(a),t=this.curve._mulC(i.redISub(s)).redMul(u),l=this.curve._mulC(s).redMul(n.redISub(c)),e=s.redMul(u);return this.curve.point(t,l,e)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var l=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),e=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),c=e.redSub(l),s=n.redSub(i),d=n.redAdd(i),a=e.redAdd(l),u=c.redMul(s),o=d.redMul(a),r=c.redMul(a),b=s.redMul(d);return this.curve.point(u,o,b,r)},u.prototype._projAdd=function(t){var l,e,i=this.z.redMul(t.z),n=i.redSqr(),c=this.x.redMul(t.x),s=this.y.redMul(t.y),d=this.curve.d.redMul(c).redMul(s),a=n.redSub(d),u=n.redAdd(d),o=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(c).redISub(s),r=i.redMul(a).redMul(o);return this.curve.twisted?(l=i.redMul(u).redMul(s.redSub(this.curve._mulA(c))),e=a.redMul(u)):(l=i.redMul(u).redMul(s.redSub(c)),e=this.curve._mulC(a).redMul(u)),this.curve.point(r,l,e)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,l,e){return this.curve._wnafMulAdd(1,[this,l],[t,e],2,!1)},u.prototype.jmulAdd=function(t,l,e){return this.curve._wnafMulAdd(1,[this,l],[t,e],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var l=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(l))return!0;for(var e=t.clone(),i=this.curve.redN.redMul(this.z);;){if(e.iadd(this.curve.n),e.cmp(this.curve.p)>=0)return!1;if(l.redIAdd(i),0===this.x.cmp(l))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(t,l,e){"use strict";var i=e;i.base=t("./base"),i.short=t("./short"),i.mont=t("./mont"),i.edwards=t("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("inherits"),c=t("./base"),s=t("../utils");function d(t){c.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function a(t,l,e){c.BasePoint.call(this,t,"projective"),null===l&&null===e?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(l,16),this.z=new i(e,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(d,c),l.exports=d,d.prototype.validate=function(t){var l=t.normalize().x,e=l.redSqr(),i=e.redMul(l).redAdd(e.redMul(this.a)).redAdd(l),n=i.redSqrt();return 0===n.redSqr().cmp(i)},n(a,c.BasePoint),d.prototype.decodePoint=function(t,l){return this.point(s.toArray(t,l),1)},d.prototype.point=function(t,l){return new a(this,t,l)},d.prototype.pointFromJSON=function(t){return a.fromJSON(this,t)},a.prototype.precompute=function(){},a.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},a.fromJSON=function(t,l){return new a(t,l[0],l[1]||t.one)},a.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},a.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},a.prototype.dbl=function(){var t=this.x.redAdd(this.z),l=t.redSqr(),e=this.x.redSub(this.z),i=e.redSqr(),n=l.redSub(i),c=l.redMul(i),s=n.redMul(i.redAdd(this.curve.a24.redMul(n)));return this.curve.point(c,s)},a.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},a.prototype.diffAdd=function(t,l){var e=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),c=t.x.redSub(t.z),s=c.redMul(e),d=n.redMul(i),a=l.z.redMul(s.redAdd(d).redSqr()),u=l.x.redMul(s.redISub(d).redSqr());return this.curve.point(a,u)},a.prototype.mul=function(t){for(var l=t.clone(),e=this,i=this.curve.point(null,null),n=this,c=[];0!==l.cmpn(0);l.iushrn(1))c.push(l.andln(1));for(var s=c.length-1;s>=0;s--)0===c[s]?(e=e.diffAdd(i,n),i=i.dbl()):(i=e.diffAdd(i,n),e=e.dbl());return i},a.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},a.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},a.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},a.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},a.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(t,l,e){"use strict";var i=t("../utils"),n=t("bn.js"),c=t("inherits"),s=t("./base"),d=i.assert;function a(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,l,e,i){s.BasePoint.call(this,t,"affine"),null===l&&null===e?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(l,16),this.y=new n(e,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,l,e,i){s.BasePoint.call(this,t,"jacobian"),null===l&&null===e&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(l,16),this.y=new n(e,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}c(a,s),l.exports=a,a.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var l,e,i;if(t.beta)l=new n(t.beta,16).toRed(this.red);else{var c=this._getEndoRoots(this.p);l=c[0].cmp(c[1])<0?c[0]:c[1],l=l.toRed(this.red)}if(t.lambda)e=new n(t.lambda,16);else{var s=this._getEndoRoots(this.n);0===this.g.mul(s[0]).x.cmp(this.g.x.redMul(l))?e=s[0]:(e=s[1],d(0===this.g.mul(e).x.cmp(this.g.x.redMul(l))))}return i=t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(e),{beta:l,lambda:e,basis:i}}},a.prototype._getEndoRoots=function(t){var l=t===this.p?this.red:n.mont(t),e=new n(2).toRed(l).redInvm(),i=e.redNeg(),c=new n(3).toRed(l).redNeg().redSqrt().redMul(e),s=i.redAdd(c).fromRed(),d=i.redSub(c).fromRed();return[s,d]},a.prototype._getEndoBasis=function(t){var l,e,i,c,s,d,a,u,o,r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),b=t,h=this.n.clone(),Z=new n(1),m=new n(0),y=new n(0),p=new n(1),W=0;while(0!==b.cmpn(0)){var G=h.div(b);u=h.sub(G.mul(b)),o=y.sub(G.mul(Z));var X=p.sub(G.mul(m));if(!i&&u.cmp(r)<0)l=a.neg(),e=Z,i=u.neg(),c=o;else if(i&&2===++W)break;a=u,h=b,b=u,y=Z,Z=o,p=m,m=X}s=u.neg(),d=o;var Y=i.sqr().add(c.sqr()),N=s.sqr().add(d.sqr());return N.cmp(Y)>=0&&(s=l,d=e),i.negative&&(i=i.neg(),c=c.neg()),s.negative&&(s=s.neg(),d=d.neg()),[{a:i,b:c},{a:s,b:d}]},a.prototype._endoSplit=function(t){var l=this.endo.basis,e=l[0],i=l[1],n=i.b.mul(t).divRound(this.n),c=e.b.neg().mul(t).divRound(this.n),s=n.mul(e.a),d=c.mul(i.a),a=n.mul(e.b),u=c.mul(i.b),o=t.sub(s).sub(d),r=a.add(u).neg();return{k1:o,k2:r}},a.prototype.pointFromX=function(t,l){t=new n(t,16),t.red||(t=t.toRed(this.red));var e=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=e.redSqrt();if(0!==i.redSqr().redSub(e).cmp(this.zero))throw new Error("invalid point");var c=i.fromRed().isOdd();return(l&&!c||!l&&c)&&(i=i.redNeg()),this.point(t,i)},a.prototype.validate=function(t){if(t.inf)return!0;var l=t.x,e=t.y,i=this.a.redMul(l),n=l.redSqr().redMul(l).redIAdd(i).redIAdd(this.b);return 0===e.redSqr().redISub(n).cmpn(0)},a.prototype._endoWnafMulAdd=function(t,l,e){for(var i=this._endoWnafT1,n=this._endoWnafT2,c=0;c<t.length;c++){var s=this._endoSplit(l[c]),d=t[c],a=d._getBeta();s.k1.negative&&(s.k1.ineg(),d=d.neg(!0)),s.k2.negative&&(s.k2.ineg(),a=a.neg(!0)),i[2*c]=d,i[2*c+1]=a,n[2*c]=s.k1,n[2*c+1]=s.k2}for(var u=this._wnafMulAdd(1,i,n,2*c,e),o=0;o<2*c;o++)i[o]=null,n[o]=null;return u},c(u,s.BasePoint),a.prototype.point=function(t,l,e){return new u(this,t,l,e)},a.prototype.pointFromJSON=function(t,l){return u.fromJSON(this,t,l)},u.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var l=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var e=this.curve,i=function(t){return e.point(t.x.redMul(e.endo.beta),t.y)};t.beta=l,l.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(i)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(i)}}}return l}},u.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},u.fromJSON=function(t,l,e){"string"===typeof l&&(l=JSON.parse(l));var i=t.point(l[0],l[1],e);if(!l[2])return i;function n(l){return t.point(l[0],l[1],e)}var c=l[2];return i.precomputed={beta:null,doubles:c.doubles&&{step:c.doubles.step,points:[i].concat(c.doubles.points.map(n))},naf:c.naf&&{wnd:c.naf.wnd,points:[i].concat(c.naf.points.map(n))}},i},u.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var l=this.y.redSub(t.y);0!==l.cmpn(0)&&(l=l.redMul(this.x.redSub(t.x).redInvm()));var e=l.redSqr().redISub(this.x).redISub(t.x),i=l.redMul(this.x.redSub(e)).redISub(this.y);return this.curve.point(e,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var l=this.curve.a,e=this.x.redSqr(),i=t.redInvm(),n=e.redAdd(e).redIAdd(e).redIAdd(l).redMul(i),c=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(c)).redISub(this.y);return this.curve.point(c,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,l,e){var i=[this,l],n=[t,e];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,l,e){var i=[this,l],n=[t,e];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var l=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var e=this.precomputed,i=function(t){return t.neg()};l.precomputed={naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(i)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(i)}}}return l},u.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},c(o,s.BasePoint),a.prototype.jpoint=function(t,l,e){return new o(this,t,l,e)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),l=t.redSqr(),e=this.x.redMul(l),i=this.y.redMul(l).redMul(t);return this.curve.point(e,i)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var l=t.z.redSqr(),e=this.z.redSqr(),i=this.x.redMul(l),n=t.x.redMul(e),c=this.y.redMul(l.redMul(t.z)),s=t.y.redMul(e.redMul(this.z)),d=i.redSub(n),a=c.redSub(s);if(0===d.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=d.redSqr(),o=u.redMul(d),r=i.redMul(u),b=a.redSqr().redIAdd(o).redISub(r).redISub(r),h=a.redMul(r.redISub(b)).redISub(c.redMul(o)),Z=this.z.redMul(t.z).redMul(d);return this.curve.jpoint(b,h,Z)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var l=this.z.redSqr(),e=this.x,i=t.x.redMul(l),n=this.y,c=t.y.redMul(l).redMul(this.z),s=e.redSub(i),d=n.redSub(c);if(0===s.cmpn(0))return 0!==d.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=s.redSqr(),u=a.redMul(s),o=e.redMul(a),r=d.redSqr().redIAdd(u).redISub(o).redISub(o),b=d.redMul(o.redISub(r)).redISub(n.redMul(u)),h=this.z.redMul(s);return this.curve.jpoint(r,b,h)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var l=this,e=0;e<t;e++)l=l.dbl();return l}var i=this.curve.a,n=this.curve.tinv,c=this.x,s=this.y,d=this.z,a=d.redSqr().redSqr(),u=s.redAdd(s);for(e=0;e<t;e++){var o=c.redSqr(),r=u.redSqr(),b=r.redSqr(),h=o.redAdd(o).redIAdd(o).redIAdd(i.redMul(a)),Z=c.redMul(r),m=h.redSqr().redISub(Z.redAdd(Z)),y=Z.redISub(m),p=h.redMul(y);p=p.redIAdd(p).redISub(b);var W=u.redMul(d);e+1<t&&(a=a.redMul(b)),c=m,d=W,u=p}return this.curve.jpoint(c,u.redMul(n),d)},o.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},o.prototype._zeroDbl=function(){var t,l,e;if(this.zOne){var i=this.x.redSqr(),n=this.y.redSqr(),c=n.redSqr(),s=this.x.redAdd(n).redSqr().redISub(i).redISub(c);s=s.redIAdd(s);var d=i.redAdd(i).redIAdd(i),a=d.redSqr().redISub(s).redISub(s),u=c.redIAdd(c);u=u.redIAdd(u),u=u.redIAdd(u),t=a,l=d.redMul(s.redISub(a)).redISub(u),e=this.y.redAdd(this.y)}else{var o=this.x.redSqr(),r=this.y.redSqr(),b=r.redSqr(),h=this.x.redAdd(r).redSqr().redISub(o).redISub(b);h=h.redIAdd(h);var Z=o.redAdd(o).redIAdd(o),m=Z.redSqr(),y=b.redIAdd(b);y=y.redIAdd(y),y=y.redIAdd(y),t=m.redISub(h).redISub(h),l=Z.redMul(h.redISub(t)).redISub(y),e=this.y.redMul(this.z),e=e.redIAdd(e)}return this.curve.jpoint(t,l,e)},o.prototype._threeDbl=function(){var t,l,e;if(this.zOne){var i=this.x.redSqr(),n=this.y.redSqr(),c=n.redSqr(),s=this.x.redAdd(n).redSqr().redISub(i).redISub(c);s=s.redIAdd(s);var d=i.redAdd(i).redIAdd(i).redIAdd(this.curve.a),a=d.redSqr().redISub(s).redISub(s);t=a;var u=c.redIAdd(c);u=u.redIAdd(u),u=u.redIAdd(u),l=d.redMul(s.redISub(a)).redISub(u),e=this.y.redAdd(this.y)}else{var o=this.z.redSqr(),r=this.y.redSqr(),b=this.x.redMul(r),h=this.x.redSub(o).redMul(this.x.redAdd(o));h=h.redAdd(h).redIAdd(h);var Z=b.redIAdd(b);Z=Z.redIAdd(Z);var m=Z.redAdd(Z);t=h.redSqr().redISub(m),e=this.y.redAdd(this.z).redSqr().redISub(r).redISub(o);var y=r.redSqr();y=y.redIAdd(y),y=y.redIAdd(y),y=y.redIAdd(y),l=h.redMul(Z.redISub(t)).redISub(y)}return this.curve.jpoint(t,l,e)},o.prototype._dbl=function(){var t=this.curve.a,l=this.x,e=this.y,i=this.z,n=i.redSqr().redSqr(),c=l.redSqr(),s=e.redSqr(),d=c.redAdd(c).redIAdd(c).redIAdd(t.redMul(n)),a=l.redAdd(l);a=a.redIAdd(a);var u=a.redMul(s),o=d.redSqr().redISub(u.redAdd(u)),r=u.redISub(o),b=s.redSqr();b=b.redIAdd(b),b=b.redIAdd(b),b=b.redIAdd(b);var h=d.redMul(r).redISub(b),Z=e.redAdd(e).redMul(i);return this.curve.jpoint(o,h,Z)},o.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),l=this.y.redSqr(),e=this.z.redSqr(),i=l.redSqr(),n=t.redAdd(t).redIAdd(t),c=n.redSqr(),s=this.x.redAdd(l).redSqr().redISub(t).redISub(i);s=s.redIAdd(s),s=s.redAdd(s).redIAdd(s),s=s.redISub(c);var d=s.redSqr(),a=i.redIAdd(i);a=a.redIAdd(a),a=a.redIAdd(a),a=a.redIAdd(a);var u=n.redIAdd(s).redSqr().redISub(c).redISub(d).redISub(a),o=l.redMul(u);o=o.redIAdd(o),o=o.redIAdd(o);var r=this.x.redMul(d).redISub(o);r=r.redIAdd(r),r=r.redIAdd(r);var b=this.y.redMul(u.redMul(a.redISub(u)).redISub(s.redMul(d)));b=b.redIAdd(b),b=b.redIAdd(b),b=b.redIAdd(b);var h=this.z.redAdd(s).redSqr().redISub(e).redISub(d);return this.curve.jpoint(r,b,h)},o.prototype.mul=function(t,l){return t=new n(t,l),this.curve._wnafMul(this,t)},o.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var l=this.z.redSqr(),e=t.z.redSqr();if(0!==this.x.redMul(e).redISub(t.x.redMul(l)).cmpn(0))return!1;var i=l.redMul(this.z),n=e.redMul(t.z);return 0===this.y.redMul(n).redISub(t.y.redMul(i)).cmpn(0)},o.prototype.eqXToP=function(t){var l=this.z.redSqr(),e=t.toRed(this.curve.red).redMul(l);if(0===this.x.cmp(e))return!0;for(var i=t.clone(),n=this.curve.redN.redMul(l);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}},o.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(t,l,e){"use strict";var i,n=e,c=t("hash.js"),s=t("./curve"),d=t("./utils"),a=d.assert;function u(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function o(t,l){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var e=new u(l);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:e}),e}})}n.PresetCurve=u,o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:c.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:c.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:c.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:c.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:c.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:c.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:c.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=t("./precomputed/secp256k1")}catch(r){i=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:c.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("bn.js"),c=t("hmac-drbg"),s=t("../utils"),d=t("../curves"),a=t("brorand"),u=s.assert,o=t("./key"),r=t("./signature");function b(t){if(!(this instanceof b))return new b(t);"string"===typeof t&&(u(d.hasOwnProperty(t),"Unknown curve "+t),t=d[t]),t instanceof d.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}l.exports=b,b.prototype.keyPair=function(t){return new o(this,t)},b.prototype.keyFromPrivate=function(t,l){return o.fromPrivate(this,t,l)},b.prototype.keyFromPublic=function(t,l){return o.fromPublic(this,t,l)},b.prototype.genKeyPair=function(t){t||(t={});var l=new c({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||a(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),e=this.n.byteLength(),i=this.n.sub(new n(2));do{var s=new n(l.generate(e));if(!(s.cmp(i)>0))return s.iaddn(1),this.keyFromPrivate(s)}while(1)},b.prototype._truncateToN=function(t,l){var e=8*t.byteLength()-this.n.bitLength();return e>0&&(t=t.ushrn(e)),!l&&t.cmp(this.n)>=0?t.sub(this.n):t},b.prototype.sign=function(t,l,e,s){"object"===i(e)&&(s=e,e=null),s||(s={}),l=this.keyFromPrivate(l,e),t=this._truncateToN(new n(t,16));for(var d=this.n.byteLength(),a=l.getPrivate().toArray("be",d),u=t.toArray("be",d),o=new c({hash:this.hash,entropy:a,nonce:u,pers:s.pers,persEnc:s.persEnc||"utf8"}),b=this.n.sub(new n(1)),h=0;1;h++){var Z=s.k?s.k(h):new n(o.generate(this.n.byteLength()));if(Z=this._truncateToN(Z,!0),!(Z.cmpn(1)<=0||Z.cmp(b)>=0)){var m=this.g.mul(Z);if(!m.isInfinity()){var y=m.getX(),p=y.umod(this.n);if(0!==p.cmpn(0)){var W=Z.invm(this.n).mul(p.mul(l.getPrivate()).iadd(t));if(W=W.umod(this.n),0!==W.cmpn(0)){var G=(m.getY().isOdd()?1:0)|(0!==y.cmp(p)?2:0);return s.canonical&&W.cmp(this.nh)>0&&(W=this.n.sub(W),G^=1),new r({r:p,s:W,recoveryParam:G})}}}}}},b.prototype.verify=function(t,l,e,i){t=this._truncateToN(new n(t,16)),e=this.keyFromPublic(e,i),l=new r(l,"hex");var c=l.r,s=l.s;if(c.cmpn(1)<0||c.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var d=s.invm(this.n),a=d.mul(t).umod(this.n),u=d.mul(c).umod(this.n);if(!this.curve._maxwellTrick){var o=this.g.mulAdd(a,e.getPublic(),u);return!o.isInfinity()&&0===o.getX().umod(this.n).cmp(c)}return o=this.g.jmulAdd(a,e.getPublic(),u),!o.isInfinity()&&o.eqXToP(c)},b.prototype.recoverPubKey=function(t,l,e,i){u((3&e)===e,"The recovery param is more than two bits"),l=new r(l,i);var c=this.n,s=new n(t),d=l.r,a=l.s,o=1&e,b=e>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&b)throw new Error("Unable to find sencond key candinate");d=b?this.curve.pointFromX(d.add(this.curve.n),o):this.curve.pointFromX(d,o);var h=l.r.invm(c),Z=c.sub(s).mul(h).umod(c),m=a.mul(h).umod(c);return this.g.mulAdd(Z,d,m)},b.prototype.getKeyRecoveryParam=function(t,l,e,i){if(l=new r(l,i),null!==l.recoveryParam)return l.recoveryParam;for(var n=0;n<4;n++){var c;try{c=this.recoverPubKey(t,l,n)}catch(t){continue}if(c.eq(e))return n}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("../utils"),c=n.assert;function s(t,l){this.ec=t,this.priv=null,this.pub=null,l.priv&&this._importPrivate(l.priv,l.privEnc),l.pub&&this._importPublic(l.pub,l.pubEnc)}l.exports=s,s.fromPublic=function(t,l,e){return l instanceof s?l:new s(t,{pub:l,pubEnc:e})},s.fromPrivate=function(t,l,e){return l instanceof s?l:new s(t,{priv:l,privEnc:e})},s.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},s.prototype.getPublic=function(t,l){return"string"===typeof t&&(l=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),l?this.pub.encode(l,t):this.pub},s.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},s.prototype._importPrivate=function(t,l){this.priv=new i(t,l||16),this.priv=this.priv.umod(this.ec.curve.n)},s.prototype._importPublic=function(t,l){if(t.x||t.y)return"mont"===this.ec.curve.type?c(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||c(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,l)},s.prototype.derive=function(t){return t.mul(this.priv).getX()},s.prototype.sign=function(t,l,e){return this.ec.sign(t,this,l,e)},s.prototype.verify=function(t,l){return this.ec.verify(t,l,this)},s.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},{"../utils":364,"bn.js":365}],359:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("../utils"),c=n.assert;function s(t,l){if(t instanceof s)return t;this._importDER(t,l)||(c(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function d(){this.place=0}function a(t,l){var e=t[l.place++];if(!(128&e))return e;var i=15&e;if(0===i||i>4)return!1;for(var n=0,c=0,s=l.place;c<i;c++,s++)n<<=8,n|=t[s],n>>>=0;return!(n<=127)&&(l.place=s,n)}function u(t){var l=0,e=t.length-1;while(!t[l]&&!(128&t[l+1])&&l<e)l++;return 0===l?t:t.slice(l)}function o(t,l){if(l<128)t.push(l);else{var e=1+(Math.log(l)/Math.LN2>>>3);t.push(128|e);while(--e)t.push(l>>>(e<<3)&255);t.push(l)}}l.exports=s,s.prototype._importDER=function(t,l){t=n.toArray(t,l);var e=new d;if(48!==t[e.place++])return!1;var c=a(t,e);if(!1===c)return!1;if(c+e.place!==t.length)return!1;if(2!==t[e.place++])return!1;var s=a(t,e);if(!1===s)return!1;var u=t.slice(e.place,s+e.place);if(e.place+=s,2!==t[e.place++])return!1;var o=a(t,e);if(!1===o)return!1;if(t.length!==o+e.place)return!1;var r=t.slice(e.place,o+e.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===r[0]){if(!(128&r[1]))return!1;r=r.slice(1)}return this.r=new i(u),this.s=new i(r),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var l=this.r.toArray(),e=this.s.toArray();128&l[0]&&(l=[0].concat(l)),128&e[0]&&(e=[0].concat(e)),l=u(l),e=u(e);while(!e[0]&&!(128&e[1]))e=e.slice(1);var i=[2];o(i,l.length),i=i.concat(l),i.push(2),o(i,e.length);var c=i.concat(e),s=[48];return o(s,c.length),s=s.concat(c),n.encode(s,t)}},{"../utils":364,"bn.js":365}],360:[function(t,l,e){"use strict";var i=t("hash.js"),n=t("../curves"),c=t("../utils"),s=c.assert,d=c.parseBytes,a=t("./key"),u=t("./signature");function o(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof o))return new o(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}l.exports=o,o.prototype.sign=function(t,l){t=d(t);var e=this.keyFromSecret(l),i=this.hashInt(e.messagePrefix(),t),n=this.g.mul(i),c=this.encodePoint(n),s=this.hashInt(c,e.pubBytes(),t).mul(e.priv()),a=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:a,Rencoded:c})},o.prototype.verify=function(t,l,e){t=d(t),l=this.makeSignature(l);var i=this.keyFromPublic(e),n=this.hashInt(l.Rencoded(),i.pubBytes(),t),c=this.g.mul(l.S()),s=l.R().add(i.pub().mul(n));return s.eq(c)},o.prototype.hashInt=function(){for(var t=this.hash(),l=0;l<arguments.length;l++)t.update(arguments[l]);return c.intFromLE(t.digest()).umod(this.curve.n)},o.prototype.keyFromPublic=function(t){return a.fromPublic(this,t)},o.prototype.keyFromSecret=function(t){return a.fromSecret(this,t)},o.prototype.makeSignature=function(t){return t instanceof u?t:new u(this,t)},o.prototype.encodePoint=function(t){var l=t.getY().toArray("le",this.encodingLength);return l[this.encodingLength-1]|=t.getX().isOdd()?128:0,l},o.prototype.decodePoint=function(t){t=c.parseBytes(t);var l=t.length-1,e=t.slice(0,l).concat(-129&t[l]),i=0!==(128&t[l]),n=c.intFromLE(e);return this.curve.pointFromY(n,i)},o.prototype.encodeInt=function(t){return t.toArray("le",this.encodingLength)},o.prototype.decodeInt=function(t){return c.intFromLE(t)},o.prototype.isPoint=function(t){return t instanceof this.pointClass}},{"../curves":356,"../utils":364,"./key":361,"./signature":362,"hash.js":372}],361:[function(t,l,e){"use strict";var i=t("../utils"),n=i.assert,c=i.parseBytes,s=i.cachedProperty;function d(t,l){this.eddsa=t,this._secret=c(l.secret),t.isPoint(l.pub)?this._pub=l.pub:this._pubBytes=c(l.pub)}d.fromPublic=function(t,l){return l instanceof d?l:new d(t,{pub:l})},d.fromSecret=function(t,l){return l instanceof d?l:new d(t,{secret:l})},d.prototype.secret=function(){return this._secret},s(d,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(d,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(d,"privBytes",(function(){var t=this.eddsa,l=this.hash(),e=t.encodingLength-1,i=l.slice(0,t.encodingLength);return i[0]&=248,i[e]&=127,i[e]|=64,i})),s(d,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(d,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(d,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),d.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},d.prototype.verify=function(t,l){return this.eddsa.verify(t,l,this)},d.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},d.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},l.exports=d},{"../utils":364}],362:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("bn.js"),c=t("../utils"),s=c.assert,d=c.cachedProperty,a=c.parseBytes;function u(t,l){this.eddsa=t,"object"!==i(l)&&(l=a(l)),Array.isArray(l)&&(l={R:l.slice(0,t.encodingLength),S:l.slice(t.encodingLength)}),s(l.R&&l.S,"Signature without R or S"),t.isPoint(l.R)&&(this._R=l.R),l.S instanceof n&&(this._S=l.S),this._Rencoded=Array.isArray(l.R)?l.R:l.Rencoded,this._Sencoded=Array.isArray(l.S)?l.S:l.Sencoded}d(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),d(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),d(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),d(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return c.encode(this.toBytes(),"hex").toUpperCase()},l.exports=u},{"../utils":364,"bn.js":365}],363:[function(t,l,e){"use strict";l.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},{}],364:[function(t,l,e){"use strict";var i=e,n=t("bn.js"),c=t("minimalistic-assert"),s=t("minimalistic-crypto-utils");function d(t,l,e){var i=new Array(Math.max(t.bitLength(),e)+1);i.fill(0);for(var n=1<<l+1,c=t.clone(),s=0;s<i.length;s++){var d,a=c.andln(n-1);c.isOdd()?(d=a>(n>>1)-1?(n>>1)-a:a,c.isubn(d)):d=0,i[s]=d,c.iushrn(1)}return i}function a(t,l){var e=[[],[]];t=t.clone(),l=l.clone();var i=0,n=0;while(t.cmpn(-i)>0||l.cmpn(-n)>0){var c,s,d=t.andln(3)+i&3,a=l.andln(3)+n&3;if(3===d&&(d=-1),3===a&&(a=-1),0===(1&d))c=0;else{var u=t.andln(7)+i&7;c=3!==u&&5!==u||2!==a?d:-d}e[0].push(c),0===(1&a)?s=0:(u=l.andln(7)+n&7,s=3!==u&&5!==u||2!==d?a:-a),e[1].push(s),2*i===c+1&&(i=1-i),2*n===s+1&&(n=1-n),t.iushrn(1),l.iushrn(1)}return e}function u(t,l,e){var i="_"+l;t.prototype[l]=function(){return void 0!==this[i]?this[i]:this[i]=e.call(this)}}function o(t){return"string"===typeof t?i.toArray(t,"hex"):t}function r(t){return new n(t,"hex","le")}i.assert=c,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=d,i.getJSF=a,i.cachedProperty=u,i.parseBytes=o,i.intFromLE=r},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],366:[function(t,l,e){l.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=Object.create||L,c=Object.keys||I,s=Function.prototype.bind||w;function d(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}l.exports=d,d.EventEmitter=d,d.prototype._events=void 0,d.prototype._maxListeners=void 0;var a,u=10;try{var o={};Object.defineProperty&&Object.defineProperty(o,"x",{value:0}),a=0===o.x}catch(f){a=!1}function r(t){return void 0===t._maxListeners?d.defaultMaxListeners:t._maxListeners}function b(t,l,e){if(l)t.call(e);else for(var i=t.length,n=V(t,i),c=0;c<i;++c)n[c].call(e)}function h(t,l,e,i){if(l)t.call(e,i);else for(var n=t.length,c=V(t,n),s=0;s<n;++s)c[s].call(e,i)}function Z(t,l,e,i,n){if(l)t.call(e,i,n);else for(var c=t.length,s=V(t,c),d=0;d<c;++d)s[d].call(e,i,n)}function m(t,l,e,i,n,c){if(l)t.call(e,i,n,c);else for(var s=t.length,d=V(t,s),a=0;a<s;++a)d[a].call(e,i,n,c)}function y(t,l,e,i){if(l)t.apply(e,i);else for(var n=t.length,c=V(t,n),s=0;s<n;++s)c[s].apply(e,i)}function p(t,l,e,c){var s,d,a;if("function"!==typeof e)throw new TypeError('"listener" argument must be a function');if(d=t._events,d?(d.newListener&&(t.emit("newListener",l,e.listener?e.listener:e),d=t._events),a=d[l]):(d=t._events=n(null),t._eventsCount=0),a){if("function"===typeof a?a=d[l]=c?[e,a]:[a,e]:c?a.unshift(e):a.push(e),!a.warned&&(s=r(t),s&&s>0&&a.length>s)){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(l)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name="MaxListenersExceededWarning",u.emitter=t,u.type=l,u.count=a.length,"object"===("undefined"===typeof console?"undefined":i(console))&&console.warn&&console.warn("%s: %s",u.name,u.message)}}else a=d[l]=e,++t._eventsCount;return t}function W(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var t=new Array(arguments.length),l=0;l<t.length;++l)t[l]=arguments[l];this.listener.apply(this.target,t)}}function G(t,l,e){var i={fired:!1,wrapFn:void 0,target:t,type:l,listener:e},n=s.call(W,i);return n.listener=e,i.wrapFn=n,n}function X(t,l,e){var i=t._events;if(!i)return[];var n=i[l];return n?"function"===typeof n?e?[n.listener||n]:[n]:e?M(n):V(n,n.length):[]}function Y(t){var l=this._events;if(l){var e=l[t];if("function"===typeof e)return 1;if(e)return e.length}return 0}function N(t,l){for(var e=l,i=e+1,n=t.length;i<n;e+=1,i+=1)t[e]=t[i];t.pop()}function V(t,l){for(var e=new Array(l),i=0;i<l;++i)e[i]=t[i];return e}function M(t){for(var l=new Array(t.length),e=0;e<l.length;++e)l[e]=t[e].listener||t[e];return l}function L(t){var l=function(){};return l.prototype=t,new l}function I(t){var l=[];for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&l.push(e);return e}function w(t){var l=this;return function(){return l.apply(t,arguments)}}a?Object.defineProperty(d,"defaultMaxListeners",{enumerable:!0,get:function(){return u},set:function(t){if("number"!==typeof t||t<0||t!==t)throw new TypeError('"defaultMaxListeners" must be a positive number');u=t}}):d.defaultMaxListeners=u,d.prototype.setMaxListeners=function(t){if("number"!==typeof t||t<0||isNaN(t))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=t,this},d.prototype.getMaxListeners=function(){return r(this)},d.prototype.emit=function(t){var l,e,i,n,c,s,d="error"===t;if(s=this._events,s)d=d&&null==s.error;else if(!d)return!1;if(d){if(arguments.length>1&&(l=arguments[1]),l instanceof Error)throw l;var a=new Error('Unhandled "error" event. ('+l+")");throw a.context=l,a}if(e=s[t],!e)return!1;var u="function"===typeof e;switch(i=arguments.length,i){case 1:b(e,u,this);break;case 2:h(e,u,this,arguments[1]);break;case 3:Z(e,u,this,arguments[1],arguments[2]);break;case 4:m(e,u,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=new Array(i-1),c=1;c<i;c++)n[c-1]=arguments[c];y(e,u,this,n)}return!0},d.prototype.addListener=function(t,l){return p(this,t,l,!1)},d.prototype.on=d.prototype.addListener,d.prototype.prependListener=function(t,l){return p(this,t,l,!0)},d.prototype.once=function(t,l){if("function"!==typeof l)throw new TypeError('"listener" argument must be a function');return this.on(t,G(this,t,l)),this},d.prototype.prependOnceListener=function(t,l){if("function"!==typeof l)throw new TypeError('"listener" argument must be a function');return this.prependListener(t,G(this,t,l)),this},d.prototype.removeListener=function(t,l){var e,i,c,s,d;if("function"!==typeof l)throw new TypeError('"listener" argument must be a function');if(i=this._events,!i)return this;if(e=i[t],!e)return this;if(e===l||e.listener===l)0===--this._eventsCount?this._events=n(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,e.listener||l));else if("function"!==typeof e){for(c=-1,s=e.length-1;s>=0;s--)if(e[s]===l||e[s].listener===l){d=e[s].listener,c=s;break}if(c<0)return this;0===c?e.shift():N(e,c),1===e.length&&(i[t]=e[0]),i.removeListener&&this.emit("removeListener",t,d||l)}return this},d.prototype.removeAllListeners=function(t){var l,e,i;if(e=this._events,!e)return this;if(!e.removeListener)return 0===arguments.length?(this._events=n(null),this._eventsCount=0):e[t]&&(0===--this._eventsCount?this._events=n(null):delete e[t]),this;if(0===arguments.length){var s,d=c(e);for(i=0;i<d.length;++i)s=d[i],"removeListener"!==s&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=n(null),this._eventsCount=0,this}if(l=e[t],"function"===typeof l)this.removeListener(t,l);else if(l)for(i=l.length-1;i>=0;i--)this.removeListener(t,l[i]);return this},d.prototype.listeners=function(t){return X(this,t,!0)},d.prototype.rawListeners=function(t){return X(this,t,!1)},d.listenerCount=function(t,l){return"function"===typeof t.listenerCount?t.listenerCount(l):Y.call(t,l)},d.prototype.listenerCount=Y,d.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],368:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("md5.js");function c(t,l,e,c){if(i.isBuffer(t)||(t=i.from(t,"binary")),l&&(i.isBuffer(l)||(l=i.from(l,"binary")),8!==l.length))throw new RangeError("salt should be Buffer with 8 byte length");var s=e/8,d=i.alloc(s),a=i.alloc(c||0),u=i.alloc(0);while(s>0||c>0){var o=new n;o.update(u),o.update(t),l&&o.update(l),u=o.digest();var r=0;if(s>0){var b=d.length-s;r=Math.min(s,u.length),u.copy(d,b,0,r),s-=r}if(r<u.length&&c>0){var h=a.length-c,Z=Math.min(c,u.length-r);u.copy(a,h,r,r+Z),c-=Z}}return u.fill(0),{key:d,iv:a}}l.exports=c},{"md5.js":434,"safe-buffer":494}],369:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t("@fast-csv/format");Object.defineProperty(e,"format",{enumerable:!0,get:function(){return i.format}}),Object.defineProperty(e,"write",{enumerable:!0,get:function(){return i.write}}),Object.defineProperty(e,"writeToStream",{enumerable:!0,get:function(){return i.writeToStream}}),Object.defineProperty(e,"writeToBuffer",{enumerable:!0,get:function(){return i.writeToBuffer}}),Object.defineProperty(e,"writeToString",{enumerable:!0,get:function(){return i.writeToString}}),Object.defineProperty(e,"writeToPath",{enumerable:!0,get:function(){return i.writeToPath}}),Object.defineProperty(e,"CsvFormatterStream",{enumerable:!0,get:function(){return i.CsvFormatterStream}}),Object.defineProperty(e,"FormatterOptions",{enumerable:!0,get:function(){return i.FormatterOptions}});var n=t("@fast-csv/parse");Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return n.parse}}),Object.defineProperty(e,"parseString",{enumerable:!0,get:function(){return n.parseString}}),Object.defineProperty(e,"parseStream",{enumerable:!0,get:function(){return n.parseStream}}),Object.defineProperty(e,"parseFile",{enumerable:!0,get:function(){return n.parseFile}}),Object.defineProperty(e,"ParserOptions",{enumerable:!0,get:function(){return n.ParserOptions}}),Object.defineProperty(e,"CsvParserStream",{enumerable:!0,get:function(){return n.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=t("readable-stream").Transform,c=t("inherits");function s(t,l){if(!i.isBuffer(t)&&"string"!==typeof t)throw new TypeError(l+" must be a string or a buffer")}function d(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}c(d,n),d.prototype._transform=function(t,l,e){var i=null;try{this.update(t,l)}catch(n){i=n}e(i)},d.prototype._flush=function(t){var l=null;try{this.push(this.digest())}catch(e){l=e}t(l)},d.prototype.update=function(t,l){if(s(t,"Data"),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,l));var e=this._block,n=0;while(this._blockOffset+t.length-n>=this._blockSize){for(var c=this._blockOffset;c<this._blockSize;)e[c++]=t[n++];this._update(),this._blockOffset=0}while(n<t.length)e[this._blockOffset++]=t[n++];for(var d=0,a=8*t.length;a>0;++d)this._length[d]+=a,a=this._length[d]/4294967296|0,a>0&&(this._length[d]-=4294967296*a);return this},d.prototype._update=function(){throw new Error("_update is not implemented")},d.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var l=this._digest();void 0!==t&&(l=l.toString(t)),this._block.fill(0),this._blockOffset=0;for(var e=0;e<4;++e)this._length[e]=0;return l},d.prototype._digest=function(){throw new Error("_digest is not implemented")},l.exports=d},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(t,l,e){arguments[4][214][0].apply(e,arguments)},{buffer:216,dup:214}],372:[function(t,l,e){"use strict";var i=e;i.utils=t("./hash/utils"),i.common=t("./hash/common"),i.sha=t("./hash/sha"),i.ripemd=t("./hash/ripemd"),i.hmac=t("./hash/hmac"),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(t,l,e){"use strict";var i=t("./utils"),n=t("minimalistic-assert");function c(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=c,c.prototype.update=function(t,l){if(t=i.toArray(t,l),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var e=t.length%this._delta8;this.pending=t.slice(t.length-e,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-e,this.endian);for(var n=0;n<t.length;n+=this._delta32)this._update(t,n,n+this._delta32)}return this},c.prototype.digest=function(t){return this.update(this._pad()),n(null===this.pending),this._digest(t)},c.prototype._pad=function(){var t=this.pendingTotal,l=this._delta8,e=l-(t+this.padLength)%l,i=new Array(e+this.padLength);i[0]=128;for(var n=1;n<e;n++)i[n]=0;if(t<<=3,"big"===this.endian){for(var c=8;c<this.padLength;c++)i[n++]=0;i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=t>>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,c=8;c<this.padLength;c++)i[n++]=0;return i}},{"./utils":383,"minimalistic-assert":437}],374:[function(t,l,e){"use strict";var i=t("./utils"),n=t("minimalistic-assert");function c(t,l,e){if(!(this instanceof c))return new c(t,l,e);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(l,e))}l.exports=c,c.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var l=t.length;l<this.blockSize;l++)t.push(0);for(l=0;l<t.length;l++)t[l]^=54;for(this.inner=(new this.Hash).update(t),l=0;l<t.length;l++)t[l]^=106;this.outer=(new this.Hash).update(t)},c.prototype.update=function(t,l){return this.inner.update(t,l),this},c.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)}},{"./utils":383,"minimalistic-assert":437}],375:[function(t,l,e){"use strict";var i=t("./utils"),n=t("./common"),c=i.rotl32,s=i.sum32,d=i.sum32_3,a=i.sum32_4,u=n.BlockHash;function o(){if(!(this instanceof o))return new o;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function r(t,l,e,i){return t<=15?l^e^i:t<=31?l&e|~l&i:t<=47?(l|~e)^i:t<=63?l&i|e&~i:l^(e|~i)}function b(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function h(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(o,u),e.ripemd160=o,o.blockSize=512,o.outSize=160,o.hmacStrength=192,o.padLength=64,o.prototype._update=function(t,l){for(var e=this.h[0],i=this.h[1],n=this.h[2],u=this.h[3],o=this.h[4],W=e,G=i,X=n,Y=u,N=o,V=0;V<80;V++){var M=s(c(a(e,r(V,i,n,u),t[Z[V]+l],b(V)),y[V]),o);e=o,o=u,u=c(n,10),n=i,i=M,M=s(c(a(W,r(79-V,G,X,Y),t[m[V]+l],h(V)),p[V]),N),W=N,N=Y,Y=c(X,10),X=G,G=M}M=d(this.h[1],n,Y),this.h[1]=d(this.h[2],u,N),this.h[2]=d(this.h[3],o,W),this.h[3]=d(this.h[4],e,G),this.h[4]=d(this.h[0],i,X),this.h[0]=M},o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var Z=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],y=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},{"./common":373,"./utils":383}],376:[function(t,l,e){"use strict";e.sha1=t("./sha/1"),e.sha224=t("./sha/224"),e.sha256=t("./sha/256"),e.sha384=t("./sha/384"),e.sha512=t("./sha/512")},{"./sha/1":377,"./sha/224":378,"./sha/256":379,"./sha/384":380,"./sha/512":381}],377:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../common"),c=t("./common"),s=i.rotl32,d=i.sum32,a=i.sum32_5,u=c.ft_1,o=n.BlockHash,r=[1518500249,1859775393,2400959708,3395469782];function b(){if(!(this instanceof b))return new b;o.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(b,o),l.exports=b,b.blockSize=512,b.outSize=160,b.hmacStrength=80,b.padLength=64,b.prototype._update=function(t,l){for(var e=this.W,i=0;i<16;i++)e[i]=t[l+i];for(;i<e.length;i++)e[i]=s(e[i-3]^e[i-8]^e[i-14]^e[i-16],1);var n=this.h[0],c=this.h[1],o=this.h[2],b=this.h[3],h=this.h[4];for(i=0;i<e.length;i++){var Z=~~(i/20),m=a(s(n,5),u(Z,c,o,b),h,e[i],r[Z]);h=b,b=o,o=s(c,30),c=n,n=m}this.h[0]=d(this.h[0],n),this.h[1]=d(this.h[1],c),this.h[2]=d(this.h[2],o),this.h[3]=d(this.h[3],b),this.h[4]=d(this.h[4],h)},b.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"big"):i.split32(this.h,"big")}},{"../common":373,"../utils":383,"./common":382}],378:[function(t,l,e){"use strict";var i=t("../utils"),n=t("./256");function c(){if(!(this instanceof c))return new c;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(c,n),l.exports=c,c.blockSize=512,c.outSize=224,c.hmacStrength=192,c.padLength=64,c.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},{"../utils":383,"./256":379}],379:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../common"),c=t("./common"),s=t("minimalistic-assert"),d=i.sum32,a=i.sum32_4,u=i.sum32_5,o=c.ch32,r=c.maj32,b=c.s0_256,h=c.s1_256,Z=c.g0_256,m=c.g1_256,y=n.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function W(){if(!(this instanceof W))return new W;y.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}i.inherits(W,y),l.exports=W,W.blockSize=512,W.outSize=256,W.hmacStrength=192,W.padLength=64,W.prototype._update=function(t,l){for(var e=this.W,i=0;i<16;i++)e[i]=t[l+i];for(;i<e.length;i++)e[i]=a(m(e[i-2]),e[i-7],Z(e[i-15]),e[i-16]);var n=this.h[0],c=this.h[1],y=this.h[2],p=this.h[3],W=this.h[4],G=this.h[5],X=this.h[6],Y=this.h[7];for(s(this.k.length===e.length),i=0;i<e.length;i++){var N=u(Y,h(W),o(W,G,X),this.k[i],e[i]),V=d(b(n),r(n,c,y));Y=X,X=G,G=W,W=d(p,N),p=y,y=c,c=n,n=d(N,V)}this.h[0]=d(this.h[0],n),this.h[1]=d(this.h[1],c),this.h[2]=d(this.h[2],y),this.h[3]=d(this.h[3],p),this.h[4]=d(this.h[4],W),this.h[5]=d(this.h[5],G),this.h[6]=d(this.h[6],X),this.h[7]=d(this.h[7],Y)},W.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"big"):i.split32(this.h,"big")}},{"../common":373,"../utils":383,"./common":382,"minimalistic-assert":437}],380:[function(t,l,e){"use strict";var i=t("../utils"),n=t("./512");function c(){if(!(this instanceof c))return new c;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(c,n),l.exports=c,c.blockSize=1024,c.outSize=384,c.hmacStrength=192,c.padLength=128,c.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},{"../utils":383,"./512":381}],381:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../common"),c=t("minimalistic-assert"),s=i.rotr64_hi,d=i.rotr64_lo,a=i.shr64_hi,u=i.shr64_lo,o=i.sum64,r=i.sum64_hi,b=i.sum64_lo,h=i.sum64_4_hi,Z=i.sum64_4_lo,m=i.sum64_5_hi,y=i.sum64_5_lo,p=n.BlockHash,W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function G(){if(!(this instanceof G))return new G;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=W,this.W=new Array(160)}function X(t,l,e,i,n){var c=t&e^~t&n;return c<0&&(c+=4294967296),c}function Y(t,l,e,i,n,c){var s=l&i^~l&c;return s<0&&(s+=4294967296),s}function N(t,l,e,i,n){var c=t&e^t&n^e&n;return c<0&&(c+=4294967296),c}function V(t,l,e,i,n,c){var s=l&i^l&c^i&c;return s<0&&(s+=4294967296),s}function M(t,l){var e=s(t,l,28),i=s(l,t,2),n=s(l,t,7),c=e^i^n;return c<0&&(c+=4294967296),c}function L(t,l){var e=d(t,l,28),i=d(l,t,2),n=d(l,t,7),c=e^i^n;return c<0&&(c+=4294967296),c}function I(t,l){var e=s(t,l,14),i=s(t,l,18),n=s(l,t,9),c=e^i^n;return c<0&&(c+=4294967296),c}function w(t,l){var e=d(t,l,14),i=d(t,l,18),n=d(l,t,9),c=e^i^n;return c<0&&(c+=4294967296),c}function f(t,l){var e=s(t,l,1),i=s(t,l,8),n=a(t,l,7),c=e^i^n;return c<0&&(c+=4294967296),c}function R(t,l){var e=d(t,l,1),i=d(t,l,8),n=u(t,l,7),c=e^i^n;return c<0&&(c+=4294967296),c}function T(t,l){var e=s(t,l,19),i=s(l,t,29),n=a(t,l,6),c=e^i^n;return c<0&&(c+=4294967296),c}function z(t,l){var e=d(t,l,19),i=d(l,t,29),n=u(t,l,6),c=e^i^n;return c<0&&(c+=4294967296),c}i.inherits(G,p),l.exports=G,G.blockSize=1024,G.outSize=512,G.hmacStrength=192,G.padLength=128,G.prototype._prepareBlock=function(t,l){for(var e=this.W,i=0;i<32;i++)e[i]=t[l+i];for(;i<e.length;i+=2){var n=T(e[i-4],e[i-3]),c=z(e[i-4],e[i-3]),s=e[i-14],d=e[i-13],a=f(e[i-30],e[i-29]),u=R(e[i-30],e[i-29]),o=e[i-32],r=e[i-31];e[i]=h(n,c,s,d,a,u,o,r),e[i+1]=Z(n,c,s,d,a,u,o,r)}},G.prototype._update=function(t,l){this._prepareBlock(t,l);var e=this.W,i=this.h[0],n=this.h[1],s=this.h[2],d=this.h[3],a=this.h[4],u=this.h[5],h=this.h[6],Z=this.h[7],p=this.h[8],W=this.h[9],G=this.h[10],f=this.h[11],R=this.h[12],T=this.h[13],z=this.h[14],x=this.h[15];c(this.k.length===e.length);for(var S=0;S<e.length;S+=2){var k=z,C=x,J=I(p,W),g=w(p,W),F=X(p,W,G,f,R,T),j=Y(p,W,G,f,R,T),v=this.k[S],D=this.k[S+1],U=e[S],O=e[S+1],K=m(k,C,J,g,F,j,v,D,U,O),E=y(k,C,J,g,F,j,v,D,U,O);k=M(i,n),C=L(i,n),J=N(i,n,s,d,a,u),g=V(i,n,s,d,a,u);var H=r(k,C,J,g),Q=b(k,C,J,g);z=R,x=T,R=G,T=f,G=p,f=W,p=r(h,Z,K,E),W=b(Z,Z,K,E),h=a,Z=u,a=s,u=d,s=i,d=n,i=r(K,E,H,Q),n=b(K,E,H,Q)}o(this.h,0,i,n),o(this.h,2,s,d),o(this.h,4,a,u),o(this.h,6,h,Z),o(this.h,8,p,W),o(this.h,10,G,f),o(this.h,12,R,T),o(this.h,14,z,x)},G.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"big"):i.split32(this.h,"big")}},{"../common":373,"../utils":383,"minimalistic-assert":437}],382:[function(t,l,e){"use strict";var i=t("../utils"),n=i.rotr32;function c(t,l,e,i){return 0===t?s(l,e,i):1===t||3===t?a(l,e,i):2===t?d(l,e,i):void 0}function s(t,l,e){return t&l^~t&e}function d(t,l,e){return t&l^t&e^l&e}function a(t,l,e){return t^l^e}function u(t){return n(t,2)^n(t,13)^n(t,22)}function o(t){return n(t,6)^n(t,11)^n(t,25)}function r(t){return n(t,7)^n(t,18)^t>>>3}function b(t){return n(t,17)^n(t,19)^t>>>10}e.ft_1=c,e.ch32=s,e.maj32=d,e.p32=a,e.s0_256=u,e.s1_256=o,e.g0_256=r,e.g1_256=b},{"../utils":383}],383:[function(t,l,e){"use strict";var i=t("minimalistic-assert"),n=t("inherits");function c(t,l){return 55296===(64512&t.charCodeAt(l))&&!(l<0||l+1>=t.length)&&56320===(64512&t.charCodeAt(l+1))}function s(t,l){if(Array.isArray(t))return t.slice();if(!t)return[];var e=[];if("string"===typeof t)if(l){if("hex"===l)for(t=t.replace(/[^a-z0-9]+/gi,""),t.length%2!==0&&(t="0"+t),n=0;n<t.length;n+=2)e.push(parseInt(t[n]+t[n+1],16))}else for(var i=0,n=0;n<t.length;n++){var s=t.charCodeAt(n);s<128?e[i++]=s:s<2048?(e[i++]=s>>6|192,e[i++]=63&s|128):c(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),e[i++]=s>>18|240,e[i++]=s>>12&63|128,e[i++]=s>>6&63|128,e[i++]=63&s|128):(e[i++]=s>>12|224,e[i++]=s>>6&63|128,e[i++]=63&s|128)}else for(n=0;n<t.length;n++)e[n]=0|t[n];return e}function d(t){for(var l="",e=0;e<t.length;e++)l+=o(t[e].toString(16));return l}function a(t){var l=t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return l>>>0}function u(t,l){for(var e="",i=0;i<t.length;i++){var n=t[i];"little"===l&&(n=a(n)),e+=r(n.toString(16))}return e}function o(t){return 1===t.length?"0"+t:t}function r(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}function b(t,l,e,n){var c=e-l;i(c%4===0);for(var s=new Array(c/4),d=0,a=l;d<s.length;d++,a+=4){var u;u="big"===n?t[a]<<24|t[a+1]<<16|t[a+2]<<8|t[a+3]:t[a+3]<<24|t[a+2]<<16|t[a+1]<<8|t[a],s[d]=u>>>0}return s}function h(t,l){for(var e=new Array(4*t.length),i=0,n=0;i<t.length;i++,n+=4){var c=t[i];"big"===l?(e[n]=c>>>24,e[n+1]=c>>>16&255,e[n+2]=c>>>8&255,e[n+3]=255&c):(e[n+3]=c>>>24,e[n+2]=c>>>16&255,e[n+1]=c>>>8&255,e[n]=255&c)}return e}function Z(t,l){return t>>>l|t<<32-l}function m(t,l){return t<<l|t>>>32-l}function y(t,l){return t+l>>>0}function p(t,l,e){return t+l+e>>>0}function W(t,l,e,i){return t+l+e+i>>>0}function G(t,l,e,i,n){return t+l+e+i+n>>>0}function X(t,l,e,i){var n=t[l],c=t[l+1],s=i+c>>>0,d=(s<i?1:0)+e+n;t[l]=d>>>0,t[l+1]=s}function Y(t,l,e,i){var n=l+i>>>0,c=(n<l?1:0)+t+e;return c>>>0}function N(t,l,e,i){var n=l+i;return n>>>0}function V(t,l,e,i,n,c,s,d){var a=0,u=l;u=u+i>>>0,a+=u<l?1:0,u=u+c>>>0,a+=u<c?1:0,u=u+d>>>0,a+=u<d?1:0;var o=t+e+n+s+a;return o>>>0}function M(t,l,e,i,n,c,s,d){var a=l+i+c+d;return a>>>0}function L(t,l,e,i,n,c,s,d,a,u){var o=0,r=l;r=r+i>>>0,o+=r<l?1:0,r=r+c>>>0,o+=r<c?1:0,r=r+d>>>0,o+=r<d?1:0,r=r+u>>>0,o+=r<u?1:0;var b=t+e+n+s+a+o;return b>>>0}function I(t,l,e,i,n,c,s,d,a,u){var o=l+i+c+d+u;return o>>>0}function w(t,l,e){var i=l<<32-e|t>>>e;return i>>>0}function f(t,l,e){var i=t<<32-e|l>>>e;return i>>>0}function R(t,l,e){return t>>>e}function T(t,l,e){var i=t<<32-e|l>>>e;return i>>>0}e.inherits=n,e.toArray=s,e.toHex=d,e.htonl=a,e.toHex32=u,e.zero2=o,e.zero8=r,e.join32=b,e.split32=h,e.rotr32=Z,e.rotl32=m,e.sum32=y,e.sum32_3=p,e.sum32_4=W,e.sum32_5=G,e.sum64=X,e.sum64_hi=Y,e.sum64_lo=N,e.sum64_4_hi=V,e.sum64_4_lo=M,e.sum64_5_hi=L,e.sum64_5_lo=I,e.rotr64_hi=w,e.rotr64_lo=f,e.shr64_hi=R,e.shr64_lo=T},{inherits:387,"minimalistic-assert":437}],384:[function(t,l,e){"use strict";var i=t("hash.js"),n=t("minimalistic-crypto-utils"),c=t("minimalistic-assert");function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var l=n.toArray(t.entropy,t.entropyEnc||"hex"),e=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");c(l.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(l,e,i)}l.exports=s,s.prototype._init=function(t,l,e){var i=t.concat(l).concat(e);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n<this.V.length;n++)this.K[n]=0,this.V[n]=1;this._update(i),this._reseed=1,this.reseedInterval=281474976710656},s.prototype._hmac=function(){return new i.hmac(this.hash,this.K)},s.prototype._update=function(t){var l=this._hmac().update(this.V).update([0]);t&&(l=l.update(t)),this.K=l.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},s.prototype.reseed=function(t,l,e,i){"string"!==typeof l&&(i=e,e=l,l=null),t=n.toArray(t,l),e=n.toArray(e,i),c(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(e||[])),this._reseed=1},s.prototype.generate=function(t,l,e,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!==typeof l&&(i=e,e=l,l=null),e&&(e=n.toArray(e,i||"hex"),this._update(e));var c=[];while(c.length<t)this.V=this._hmac().update(this.V).digest(),c=c.concat(this.V);var s=c.slice(0,t);return this._update(e),this._reseed++,n.encode(s,l)}},{"hash.js":372,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],385:[function(t,l,e){"use strict";e.read=function(t,l,e,i,n){var c,s,d=8*n-i-1,a=(1<<d)-1,u=a>>1,o=-7,r=e?n-1:0,b=e?-1:1,h=t[l+r];for(r+=b,c=h&(1<<-o)-1,h>>=-o,o+=d;o>0;c=256*c+t[l+r],r+=b,o-=8);for(s=c&(1<<-o)-1,c>>=-o,o+=i;o>0;s=256*s+t[l+r],r+=b,o-=8);if(0===c)c=1-u;else{if(c===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,i),c-=u}return(h?-1:1)*s*Math.pow(2,c-i)},e.write=function(t,l,e,i,n,c){var s,d,a,u=8*c-n-1,o=(1<<u)-1,r=o>>1,b=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:c-1,Z=i?1:-1,m=l<0||0===l&&1/l<0?1:0;for(l=Math.abs(l),isNaN(l)||l===1/0?(d=isNaN(l)?1:0,s=o):(s=Math.floor(Math.log(l)/Math.LN2),l*(a=Math.pow(2,-s))<1&&(s--,a*=2),l+=s+r>=1?b/a:b*Math.pow(2,1-r),l*a>=2&&(s++,a/=2),s+r>=o?(d=0,s=o):s+r>=1?(d=(l*a-1)*Math.pow(2,n),s+=r):(d=l*Math.pow(2,r-1)*Math.pow(2,n),s=0));n>=8;t[e+h]=255&d,h+=Z,d/=256,n-=8);for(s=s<<n|d,u+=n;u>0;t[e+h]=255&s,h+=Z,s/=256,u-=8);t[e+h-Z]|=128*m}},{}],386:[function(t,l,i){(function(t){"use strict";var e,i,n=t.MutationObserver||t.WebKitMutationObserver;if(n){var c=0,s=new n(o),d=t.document.createTextNode("");s.observe(d,{characterData:!0}),e=function(){d.data=c=++c%2}}else if(t.setImmediate||"undefined"===typeof t.MessageChannel)e="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var l=t.document.createElement("script");l.onreadystatechange=function(){o(),l.onreadystatechange=null,l.parentNode.removeChild(l),l=null},t.document.documentElement.appendChild(l)}:function(){setTimeout(o,0)};else{var a=new t.MessageChannel;a.port1.onmessage=o,e=function(){a.port2.postMessage(0)}}var u=[];function o(){var t,l;i=!0;var e=u.length;while(e){l=u,u=[],t=-1;while(++t<e)l[t]();e=u.length}i=!1}function r(t){1!==u.push(t)||i||e()}l.exports=r}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],387:[function(t,l,e){"use strict";"function"===typeof Object.create?l.exports=function(t,l){l&&(t.super_=l,t.prototype=Object.create(l.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:l.exports=function(t,l){if(l){t.super_=l;var e=function(){};e.prototype=l.prototype,t.prototype=new e,t.prototype.constructor=t}}},{}],388:[function(t,l,e){"use strict";
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/function i(t){return!!t.constructor&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function n(t){return"function"===typeof t.readFloatLE&&"function"===typeof t.slice&&i(t.slice(0,0))}l.exports=function(t){return null!=t&&(i(t)||n(t)||!!t._isBuffer)}},{}],389:[function(t,l,e){"use strict";var i={}.toString;l.exports=Array.isArray||function(t){return"[object Array]"==i.call(t)}},{}],390:[function(t,l,e){"use strict";var i=t("./utils"),n=t("./support"),c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.encode=function(t){var l,e,n,s,d,a,u,o=[],r=0,b=t.length,h=b,Z="string"!==i.getTypeOf(t);while(r<t.length)h=b-r,Z?(l=t[r++],e=r<b?t[r++]:0,n=r<b?t[r++]:0):(l=t.charCodeAt(r++),e=r<b?t.charCodeAt(r++):0,n=r<b?t.charCodeAt(r++):0),s=l>>2,d=(3&l)<<4|e>>4,a=h>1?(15&e)<<2|n>>6:64,u=h>2?63&n:64,o.push(c.charAt(s)+c.charAt(d)+c.charAt(a)+c.charAt(u));return o.join("")},e.decode=function(t){var l,e,i,s,d,a,u,o=0,r=0,b="data:";if(t.substr(0,b.length)===b)throw new Error("Invalid base64 input, it looks like a data url.");t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");var h,Z=3*t.length/4;if(t.charAt(t.length-1)===c.charAt(64)&&Z--,t.charAt(t.length-2)===c.charAt(64)&&Z--,Z%1!==0)throw new Error("Invalid base64 input, bad content length.");h=n.uint8array?new Uint8Array(0|Z):new Array(0|Z);while(o<t.length)s=c.indexOf(t.charAt(o++)),d=c.indexOf(t.charAt(o++)),a=c.indexOf(t.charAt(o++)),u=c.indexOf(t.charAt(o++)),l=s<<2|d>>4,e=(15&d)<<4|a>>2,i=(3&a)<<6|u,h[r++]=l,64!==a&&(h[r++]=e),64!==u&&(h[r++]=i);return h}},{"./support":419,"./utils":421}],391:[function(t,l,e){"use strict";var i=t("./external"),n=t("./stream/DataWorker"),c=t("./stream/DataLengthProbe"),s=t("./stream/Crc32Probe");function d(t,l,e,i,n){this.compressedSize=t,this.uncompressedSize=l,this.crc32=e,this.compression=i,this.compressedContent=n}c=t("./stream/DataLengthProbe"),d.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new c("data_length")),l=this;return t.on("end",(function(){if(this.streamInfo["data_length"]!==l.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")})),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},d.createWorkerFrom=function(t,l,e){return t.pipe(new s).pipe(new c("uncompressedSize")).pipe(l.compressWorker(e)).pipe(new c("compressedSize")).withStreamInfo("compression",l)},l.exports=d},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(t,l,e){"use strict";var i=t("./stream/GenericWorker");e.STORE={magic:"\0\0",compressWorker:function(t){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},e.DEFLATE=t("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(t,l,e){"use strict";var i=t("./utils");function n(){for(var t,l=[],e=0;e<256;e++){t=e;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;l[e]=t}return l}var c=n();function s(t,l,e,i){var n=c,s=i+e;t^=-1;for(var d=i;d<s;d++)t=t>>>8^n[255&(t^l[d])];return-1^t}function d(t,l,e,i){var n=c,s=i+e;t^=-1;for(var d=i;d<s;d++)t=t>>>8^n[255&(t^l.charCodeAt(d))];return-1^t}l.exports=function(t,l){if("undefined"===typeof t||!t.length)return 0;var e="string"!==i.getTypeOf(t);return e?s(0|l,t,t.length,0):d(0|l,t,t.length,0)}},{"./utils":421}],394:[function(t,l,e){"use strict";e.base64=!1,e.binary=!1,e.dir=!1,e.createFolders=!0,e.date=null,e.compression=null,e.compressionOptions=null,e.comment=null,e.unixPermissions=null,e.dosPermissions=null},{}],395:[function(t,l,e){"use strict";var i=null;i="undefined"!==typeof Promise?Promise:t("lie"),l.exports={Promise:i}},{lie:425}],396:[function(t,l,e){"use strict";var i="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array,n=t("pako"),c=t("./utils"),s=t("./stream/GenericWorker"),d=i?"uint8array":"array";function a(t,l){s.call(this,"FlateWorker/"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=l,this.meta={}}e.magic="\b\0",c.inherits(a,s),a.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(c.transformTo(d,t.data),!1)},a.prototype.flush=function(){s.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},a.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this._pako=null},a.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(l){t.push({data:l,meta:t.meta})}},e.compressWorker=function(t){return new a("Deflate",t)},e.uncompressWorker=function(){return new a("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../stream/GenericWorker"),c=t("../utf8"),s=t("../crc32"),d=t("../signature"),a=function(t,l){var e,i="";for(e=0;e<l;e++)i+=String.fromCharCode(255&t),t>>>=8;return i},u=function(t,l){var e=t;return t||(e=l?16893:33204),(65535&e)<<16},o=function(t,l){return 63&(t||0)},r=function(t,l,e,n,r,b){var h,Z,m=t["file"],y=t["compression"],p=b!==c.utf8encode,W=i.transformTo("string",b(m.name)),G=i.transformTo("string",c.utf8encode(m.name)),X=m.comment,Y=i.transformTo("string",b(X)),N=i.transformTo("string",c.utf8encode(X)),V=G.length!==m.name.length,M=N.length!==X.length,L="",I="",w="",f=m.dir,R=m.date,T={crc32:0,compressedSize:0,uncompressedSize:0};l&&!e||(T.crc32=t["crc32"],T.compressedSize=t["compressedSize"],T.uncompressedSize=t["uncompressedSize"]);var z=0;l&&(z|=8),p||!V&&!M||(z|=2048);var x=0,S=0;f&&(x|=16),"UNIX"===r?(S=798,x|=u(m.unixPermissions,f)):(S=20,x|=o(m.dosPermissions,f)),h=R.getUTCHours(),h<<=6,h|=R.getUTCMinutes(),h<<=5,h|=R.getUTCSeconds()/2,Z=R.getUTCFullYear()-1980,Z<<=4,Z|=R.getUTCMonth()+1,Z<<=5,Z|=R.getUTCDate(),V&&(I=a(1,1)+a(s(W),4)+G,L+="up"+a(I.length,2)+I),M&&(w=a(1,1)+a(s(Y),4)+N,L+="uc"+a(w.length,2)+w);var k="";k+="\n\0",k+=a(z,2),k+=y.magic,k+=a(h,2),k+=a(Z,2),k+=a(T.crc32,4),k+=a(T.compressedSize,4),k+=a(T.uncompressedSize,4),k+=a(W.length,2),k+=a(L.length,2);var C=d.LOCAL_FILE_HEADER+k+W+L,J=d.CENTRAL_FILE_HEADER+a(S,2)+k+a(Y.length,2)+"\0\0\0\0"+a(x,4)+a(n,4)+W+L+Y;return{fileRecord:C,dirRecord:J}},b=function(t,l,e,n,c){var s="",u=i.transformTo("string",c(n));return s=d.CENTRAL_DIRECTORY_END+"\0\0\0\0"+a(t,2)+a(t,2)+a(l,4)+a(e,4)+a(u.length,2)+u,s},h=function(t){var l="";return l=d.DATA_DESCRIPTOR+a(t["crc32"],4)+a(t["compressedSize"],4)+a(t["uncompressedSize"],4),l};function Z(t,l,e,i){n.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=l,this.zipPlatform=e,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}i.inherits(Z,n),Z.prototype.push=function(t){var l=t.meta.percent||0,e=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:e?(l+100*(e-i-1))/e:100}}))},Z.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t["file"].name;var l=this.streamFiles&&!t["file"].dir;if(l){var e=r(t,l,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:e.fileRecord,meta:{percent:0}})}else this.accumulate=!0},Z.prototype.closedSource=function(t){this.accumulate=!1;var l=this.streamFiles&&!t["file"].dir,e=r(t,l,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(e.dirRecord),l)this.push({data:h(t),meta:{percent:100}});else{this.push({data:e.fileRecord,meta:{percent:0}});while(this.contentBuffer.length)this.push(this.contentBuffer.shift())}this.currentFile=null},Z.prototype.flush=function(){for(var t=this.bytesWritten,l=0;l<this.dirRecords.length;l++)this.push({data:this.dirRecords[l],meta:{percent:100}});var e=this.bytesWritten-t,i=b(this.dirRecords.length,e,t,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},Z.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},Z.prototype.registerPrevious=function(t){this._sources.push(t);var l=this;return t.on("data",(function(t){l.processChunk(t)})),t.on("end",(function(){l.closedSource(l.previous.streamInfo),l._sources.length?l.prepareNextSource():l.end()})),t.on("error",(function(t){l.error(t)})),this},Z.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},Z.prototype.error=function(t){var l=this._sources;if(!n.prototype.error.call(this,t))return!1;for(var e=0;e<l.length;e++)try{l[e].error(t)}catch(t){}return!0},Z.prototype.lock=function(){n.prototype.lock.call(this);for(var t=this._sources,l=0;l<t.length;l++)t[l].lock()},l.exports=Z},{"../crc32":393,"../signature":412,"../stream/GenericWorker":417,"../utf8":420,"../utils":421}],398:[function(t,l,e){"use strict";var i=t("../compressions"),n=t("./ZipFileWorker"),c=function(t,l){var e=t||l,n=i[e];if(!n)throw new Error(e+" is not a valid compression method !");return n};e.generateWorker=function(t,l,e){var i=new n(l.streamFiles,e,l.platform,l.encodeFileName),s=0;try{t.forEach((function(t,e){s++;var n=c(e.options.compression,l.compression),d=e.options.compressionOptions||l.compressionOptions||{},a=e.dir,u=e.date;e._compressWorker(n,d).withStreamInfo("file",{name:t,dir:a,date:u,comment:e.comment||"",unixPermissions:e.unixPermissions,dosPermissions:e.dosPermissions}).pipe(i)})),i.entriesCount=s}catch(d){i.error(d)}return i}},{"../compressions":392,"./ZipFileWorker":397}],399:[function(t,l,e){"use strict";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var t=new i;for(var l in this)"function"!==typeof this[l]&&(t[l]=this[l]);return t}}i.prototype=t("./object"),i.prototype.loadAsync=t("./load"),i.support=t("./support"),i.defaults=t("./defaults"),i.version="3.5.0",i.loadAsync=function(t,l){return(new i).loadAsync(t,l)},i.external=t("./external"),l.exports=i},{"./defaults":394,"./external":395,"./load":400,"./object":404,"./support":419}],400:[function(t,l,e){"use strict";var i=t("./utils"),n=t("./external"),c=t("./utf8"),s=(i=t("./utils"),t("./zipEntries")),d=t("./stream/Crc32Probe"),a=t("./nodejsUtils");function u(t){return new n.Promise((function(l,e){var i=t.decompressed.getContentWorker().pipe(new d);i.on("error",(function(t){e(t)})).on("end",(function(){i.streamInfo.crc32!==t.decompressed.crc32?e(new Error("Corrupted zip : CRC32 mismatch")):l()})).resume()}))}l.exports=function(t,l){var e=this;return l=i.extend(l||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:c.utf8decode}),a.isNode&&a.isStream(t)?n.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",t,!0,l.optimizedBinaryString,l.base64).then((function(t){var e=new s(l);return e.load(t),e})).then((function(t){var e=[n.Promise.resolve(t)],i=t.files;if(l.checkCRC32)for(var c=0;c<i.length;c++)e.push(u(i[c]));return n.Promise.all(e)})).then((function(t){for(var i=t.shift(),n=i.files,c=0;c<n.length;c++){var s=n[c];e.file(s.fileNameStr,s.decompressed,{binary:!0,optimizedBinaryString:!0,date:s.date,dir:s.dir,comment:s.fileCommentStr.length?s.fileCommentStr:null,unixPermissions:s.unixPermissions,dosPermissions:s.dosPermissions,createFolders:l.createFolders})}return i.zipComment.length&&(e.comment=i.zipComment),e}))}},{"./external":395,"./nodejsUtils":403,"./stream/Crc32Probe":414,"./utf8":420,"./utils":421,"./zipEntries":422}],401:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../stream/GenericWorker");function c(t,l){n.call(this,"Nodejs stream input adapter for "+t),this._upstreamEnded=!1,this._bindStream(l)}i.inherits(c,n),c.prototype._bindStream=function(t){var l=this;this._stream=t,t.pause(),t.on("data",(function(t){l.push({data:t,meta:{percent:0}})})).on("error",(function(t){l.isPaused?this.generatedError=t:l.error(t)})).on("end",(function(){l.isPaused?l._upstreamEnded=!0:l.end()}))},c.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},c.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},l.exports=c},{"../stream/GenericWorker":417,"../utils":421}],402:[function(t,l,e){"use strict";var i=t("readable-stream").Readable,n=t("../utils");function c(t,l,e){i.call(this,l),this._helper=t;var n=this;t.on("data",(function(t,l){n.push(t)||n._helper.pause(),e&&e(l)})).on("error",(function(t){n.emit("error",t)})).on("end",(function(){n.push(null)}))}n.inherits(c,i),c.prototype._read=function(){this._helper.resume()},l.exports=c},{"../utils":421,"readable-stream":405}],403:[function(t,l,e){(function(t){"use strict";l.exports={isNode:"undefined"!==typeof t,newBufferFrom:function(l,e){if(t.from&&t.from!==Uint8Array.from)return t.from(l,e);if("number"===typeof l)throw new Error('The "data" argument must not be a number');return new t(l,e)},allocBuffer:function(l){if(t.alloc)return t.alloc(l);var e=new t(l);return e.fill(0),e},isBuffer:function(l){return t.isBuffer(l)},isStream:function(t){return t&&"function"===typeof t.on&&"function"===typeof t.pause&&"function"===typeof t.resume}}}).call(this,t("buffer").Buffer)},{buffer:216}],404:[function(t,l,e){"use strict";var i=t("./utf8"),n=t("./utils"),c=t("./stream/GenericWorker"),s=t("./stream/StreamHelper"),d=t("./defaults"),a=t("./compressedObject"),u=t("./zipObject"),o=t("./generate"),r=t("./nodejsUtils"),b=t("./nodejs/NodejsStreamInputAdapter"),h=function(t,l,e){var i,s=n.getTypeOf(l),o=n.extend(e||{},d);o.date=o.date||new Date,null!==o.compression&&(o.compression=o.compression.toUpperCase()),"string"===typeof o.unixPermissions&&(o.unixPermissions=parseInt(o.unixPermissions,8)),o.unixPermissions&&16384&o.unixPermissions&&(o.dir=!0),o.dosPermissions&&16&o.dosPermissions&&(o.dir=!0),o.dir&&(t=m(t)),o.createFolders&&(i=Z(t))&&y.call(this,i,!0);var h="string"===s&&!1===o.binary&&!1===o.base64;e&&"undefined"!==typeof e.binary||(o.binary=!h);var p=l instanceof a&&0===l.uncompressedSize;(p||o.dir||!l||0===l.length)&&(o.base64=!1,o.binary=!0,l="",o.compression="STORE",s="string");var W=null;W=l instanceof a||l instanceof c?l:r.isNode&&r.isStream(l)?new b(t,l):n.prepareContent(t,l,o.binary,o.optimizedBinaryString,o.base64);var G=new u(t,W,o);this.files[t]=G},Z=function(t){"/"===t.slice(-1)&&(t=t.substring(0,t.length-1));var l=t.lastIndexOf("/");return l>0?t.substring(0,l):""},m=function(t){return"/"!==t.slice(-1)&&(t+="/"),t},y=function(t,l){return l="undefined"!==typeof l?l:d.createFolders,t=m(t),this.files[t]||h.call(this,t,null,{dir:!0,createFolders:l}),this.files[t]};function p(t){return"[object RegExp]"===Object.prototype.toString.call(t)}var W={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(t){var l,e,i;for(l in this.files)this.files.hasOwnProperty(l)&&(i=this.files[l],e=l.slice(this.root.length,l.length),e&&l.slice(0,this.root.length)===this.root&&t(e,i))},filter:function(t){var l=[];return this.forEach((function(e,i){t(e,i)&&l.push(i)})),l},file:function(t,l,e){if(1===arguments.length){if(p(t)){var i=t;return this.filter((function(t,l){return!l.dir&&i.test(t)}))}var n=this.files[this.root+t];return n&&!n.dir?n:null}return t=this.root+t,h.call(this,t,l,e),this},folder:function(t){if(!t)return this;if(p(t))return this.filter((function(l,e){return e.dir&&t.test(l)}));var l=this.root+t,e=y.call(this,l),i=this.clone();return i.root=e.name,i},remove:function(t){t=this.root+t;var l=this.files[t];if(l||("/"!==t.slice(-1)&&(t+="/"),l=this.files[t]),l&&!l.dir)delete this.files[t];else for(var e=this.filter((function(l,e){return e.name.slice(0,t.length)===t})),i=0;i<e.length;i++)delete this.files[e[i].name];return this},generate:function(t){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(t){var l,e={};try{if(e=n.extend(t||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode}),e.type=e.type.toLowerCase(),e.compression=e.compression.toUpperCase(),"binarystring"===e.type&&(e.type="string"),!e.type)throw new Error("No output type specified.");n.checkSupport(e.type),"darwin"!==e.platform&&"freebsd"!==e.platform&&"linux"!==e.platform&&"sunos"!==e.platform||(e.platform="UNIX"),"win32"===e.platform&&(e.platform="DOS");var d=e.comment||this.comment||"";l=o.generateWorker(this,e,d)}catch(a){l=new c("error"),l.error(a)}return new s(l,e.type||"string",e.mimeType)},generateAsync:function(t,l){return this.generateInternalStream(t).accumulate(l)},generateNodeStream:function(t,l){return t=t||{},t.type||(t.type="nodebuffer"),this.generateInternalStream(t).toNodejsStream(l)}};l.exports=W},{"./compressedObject":391,"./defaults":394,"./generate":398,"./nodejs/NodejsStreamInputAdapter":401,"./nodejsUtils":403,"./stream/GenericWorker":417,"./stream/StreamHelper":418,"./utf8":420,"./utils":421,"./zipObject":424}],405:[function(t,l,e){"use strict";l.exports=t("stream")},{stream:506}],406:[function(t,l,e){"use strict";var i=t("./DataReader"),n=t("../utils");function c(t){i.call(this,t);for(var l=0;l<this.data.length;l++)t[l]=255&t[l]}n.inherits(c,i),c.prototype.byteAt=function(t){return this.data[this.zero+t]},c.prototype.lastIndexOfSignature=function(t){for(var l=t.charCodeAt(0),e=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),c=this.length-4;c>=0;--c)if(this.data[c]===l&&this.data[c+1]===e&&this.data[c+2]===i&&this.data[c+3]===n)return c-this.zero;return-1},c.prototype.readAndCheckSignature=function(t){var l=t.charCodeAt(0),e=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),c=this.readData(4);return l===c[0]&&e===c[1]&&i===c[2]&&n===c[3]},c.prototype.readData=function(t){if(this.checkOffset(t),0===t)return[];var l=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,l},l.exports=c},{"../utils":421,"./DataReader":407}],407:[function(t,l,e){"use strict";var i=t("../utils");function n(t){this.data=t,this.length=t.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(t){this.checkIndex(this.index+t)},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+t+"). Corrupted zip ?")},setIndex:function(t){this.checkIndex(t),this.index=t},skip:function(t){this.setIndex(this.index+t)},byteAt:function(t){},readInt:function(t){var l,e=0;for(this.checkOffset(t),l=this.index+t-1;l>=this.index;l--)e=(e<<8)+this.byteAt(l);return this.index+=t,e},readString:function(t){return i.transformTo("string",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},l.exports=n},{"../utils":421}],408:[function(t,l,e){"use strict";var i=t("./Uint8ArrayReader"),n=t("../utils");function c(t){i.call(this,t)}n.inherits(c,i),c.prototype.readData=function(t){this.checkOffset(t);var l=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,l},l.exports=c},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(t,l,e){"use strict";var i=t("./DataReader"),n=t("../utils");function c(t){i.call(this,t)}n.inherits(c,i),c.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},c.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},c.prototype.readAndCheckSignature=function(t){var l=this.readData(4);return t===l},c.prototype.readData=function(t){this.checkOffset(t);var l=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,l},l.exports=c},{"../utils":421,"./DataReader":407}],410:[function(t,l,e){"use strict";var i=t("./ArrayReader"),n=t("../utils");function c(t){i.call(this,t)}n.inherits(c,i),c.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var l=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,l},l.exports=c},{"../utils":421,"./ArrayReader":406}],411:[function(t,l,e){"use strict";var i=t("../utils"),n=t("../support"),c=t("./ArrayReader"),s=t("./StringReader"),d=t("./NodeBufferReader"),a=t("./Uint8ArrayReader");l.exports=function(t){var l=i.getTypeOf(t);return i.checkSupport(l),"string"!==l||n.uint8array?"nodebuffer"===l?new d(t):n.uint8array?new a(i.transformTo("uint8array",t)):new c(i.transformTo("array",t)):new s(t)}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(t,l,e){"use strict";e.LOCAL_FILE_HEADER="PK",e.CENTRAL_FILE_HEADER="PK",e.CENTRAL_DIRECTORY_END="PK",e.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",e.ZIP64_CENTRAL_DIRECTORY_END="PK",e.DATA_DESCRIPTOR="PK\b"},{}],413:[function(t,l,e){"use strict";var i=t("./GenericWorker"),n=t("../utils");function c(t){i.call(this,"ConvertWorker to "+t),this.destType=t}n.inherits(c,i),c.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},l.exports=c},{"../utils":421,"./GenericWorker":417}],414:[function(t,l,e){"use strict";var i=t("./GenericWorker"),n=t("../crc32"),c=t("../utils");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}c.inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},l.exports=s},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(t,l,e){"use strict";var i=t("../utils"),n=t("./GenericWorker");function c(t){n.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(c,n),c.prototype.processChunk=function(t){if(t){var l=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=l+t.data.length}n.prototype.processChunk.call(this,t)},l.exports=c},{"../utils":421,"./GenericWorker":417}],416:[function(t,l,e){"use strict";var i=t("../utils"),n=t("./GenericWorker"),c=16384;function s(t){n.call(this,"DataWorker");var l=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then((function(t){l.dataIsReady=!0,l.data=t,l.max=t&&t.length||0,l.type=i.getTypeOf(t),l.isPaused||l._tickAndRepeat()}),(function(t){l.error(t)}))}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=c,l=null,e=Math.min(this.max,this.index+t);if(this.index>=this.max)return this.end();switch(this.type){case"string":l=this.data.substring(this.index,e);break;case"uint8array":l=this.data.subarray(this.index,e);break;case"array":case"nodebuffer":l=this.data.slice(this.index,e);break}return this.index=e,this.push({data:l,meta:{percent:this.max?this.index/this.max*100:0}})},l.exports=s},{"../utils":421,"./GenericWorker":417}],417:[function(t,l,e){"use strict";function i(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(t){this.emit("data",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit("error",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,l){return this._listeners[t].push(l),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,l){if(this._listeners[t])for(var e=0;e<this._listeners[t].length;e++)this._listeners[t][e].call(this,l)},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var l=this;return t.on("data",(function(t){l.processChunk(t)})),t.on("end",(function(){l.end()})),t.on("error",(function(t){l.error(t)})),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;this.isPaused=!1;var t=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t)},withStreamInfo:function(t,l){return this.extraStreamInfo[t]=l,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var t="Worker "+this.name;return this.previous?this.previous+" -> "+t:t}},l.exports=i},{}],418:[function(t,l,e){(function(e){"use strict";var i=t("../utils"),n=t("./ConvertWorker"),c=t("./GenericWorker"),s=t("../base64"),d=t("../support"),a=t("../external"),u=null;if(d.nodestream)try{u=t("../nodejs/NodejsStreamOutputAdapter")}catch(Z){}function o(t,l,e){switch(t){case"blob":return i.newBlob(i.transformTo("arraybuffer",l),e);case"base64":return s.encode(l);default:return i.transformTo(t,l)}}function r(t,l){var i,n=0,c=null,s=0;for(i=0;i<l.length;i++)s+=l[i].length;switch(t){case"string":return l.join("");case"array":return Array.prototype.concat.apply([],l);case"uint8array":for(c=new Uint8Array(s),i=0;i<l.length;i++)c.set(l[i],n),n+=l[i].length;return c;case"nodebuffer":return e.concat(l);default:throw new Error("concat : unsupported type '"+t+"'")}}function b(t,l){return new a.Promise((function(e,i){var n=[],c=t._internalType,s=t._outputType,d=t._mimeType;t.on("data",(function(t,e){n.push(t),l&&l(e)})).on("error",(function(t){n=[],i(t)})).on("end",(function(){try{var t=o(s,r(c,n),d);e(t)}catch(Z){i(Z)}n=[]})).resume()}))}function h(t,l,e){var s=l;switch(l){case"blob":case"arraybuffer":s="uint8array";break;case"base64":s="string";break}try{this._internalType=s,this._outputType=l,this._mimeType=e,i.checkSupport(s),this._worker=t.pipe(new n(s)),t.lock()}catch(Z){this._worker=new c("error"),this._worker.error(Z)}}h.prototype={accumulate:function(t){return b(this,t)},on:function(t,l){var e=this;return"data"===t?this._worker.on(t,(function(t){l.call(e,t.data,t.meta)})):this._worker.on(t,(function(){i.delay(l,arguments,e)})),this},resume:function(){return i.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(i.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new u(this,{objectMode:"nodebuffer"!==this._outputType},t)}},l.exports=h}).call(this,t("buffer").Buffer)},{"../base64":390,"../external":395,"../nodejs/NodejsStreamOutputAdapter":402,"../support":419,"../utils":421,"./ConvertWorker":413,"./GenericWorker":417,buffer:216}],419:[function(t,l,e){(function(l){"use strict";if(e.base64=!0,e.array=!0,e.string=!0,e.arraybuffer="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof Uint8Array,e.nodebuffer="undefined"!==typeof l,e.uint8array="undefined"!==typeof Uint8Array,"undefined"===typeof ArrayBuffer)e.blob=!1;else{var i=new ArrayBuffer(0);try{e.blob=0===new Blob([i],{type:"application/zip"}).size}catch(s){try{var n=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,c=new n;c.append(i),e.blob=0===c.getBlob("application/zip").size}catch(s){e.blob=!1}}}try{e.nodestream=!!t("readable-stream").Readable}catch(s){e.nodestream=!1}}).call(this,t("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(t,l,e){"use strict";for(var i=t("./utils"),n=t("./support"),c=t("./nodejsUtils"),s=t("./stream/GenericWorker"),d=new Array(256),a=0;a<256;a++)d[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;d[254]=d[254]=1;var u=function(t){var l,e,i,c,s,d=t.length,a=0;for(c=0;c<d;c++)e=t.charCodeAt(c),55296===(64512&e)&&c+1<d&&(i=t.charCodeAt(c+1),56320===(64512&i)&&(e=65536+(e-55296<<10)+(i-56320),c++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(l=n.uint8array?new Uint8Array(a):new Array(a),s=0,c=0;s<a;c++)e=t.charCodeAt(c),55296===(64512&e)&&c+1<d&&(i=t.charCodeAt(c+1),56320===(64512&i)&&(e=65536+(e-55296<<10)+(i-56320),c++)),e<128?l[s++]=e:e<2048?(l[s++]=192|e>>>6,l[s++]=128|63&e):e<65536?(l[s++]=224|e>>>12,l[s++]=128|e>>>6&63,l[s++]=128|63&e):(l[s++]=240|e>>>18,l[s++]=128|e>>>12&63,l[s++]=128|e>>>6&63,l[s++]=128|63&e);return l},o=function(t,l){var e;l=l||t.length,l>t.length&&(l=t.length),e=l-1;while(e>=0&&128===(192&t[e]))e--;return e<0||0===e?l:e+d[t[e]]>l?e:l},r=function(t){var l,e,n,c,s=t.length,a=new Array(2*s);for(e=0,l=0;l<s;)if(n=t[l++],n<128)a[e++]=n;else if(c=d[n],c>4)a[e++]=65533,l+=c-1;else{n&=2===c?31:3===c?15:7;while(c>1&&l<s)n=n<<6|63&t[l++],c--;c>1?a[e++]=65533:n<65536?a[e++]=n:(n-=65536,a[e++]=55296|n>>10&1023,a[e++]=56320|1023&n)}return a.length!==e&&(a.subarray?a=a.subarray(0,e):a.length=e),i.applyFromCharCode(a)};function b(){s.call(this,"utf-8 decode"),this.leftOver=null}function h(){s.call(this,"utf-8 encode")}e.utf8encode=function(t){return n.nodebuffer?c.newBufferFrom(t,"utf-8"):u(t)},e.utf8decode=function(t){return n.nodebuffer?i.transformTo("nodebuffer",t).toString("utf-8"):(t=i.transformTo(n.uint8array?"uint8array":"array",t),r(t))},i.inherits(b,s),b.prototype.processChunk=function(t){var l=i.transformTo(n.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var c=l;l=new Uint8Array(c.length+this.leftOver.length),l.set(this.leftOver,0),l.set(c,this.leftOver.length)}else l=this.leftOver.concat(l);this.leftOver=null}var s=o(l),d=l;s!==l.length&&(n.uint8array?(d=l.subarray(0,s),this.leftOver=l.subarray(s,l.length)):(d=l.slice(0,s),this.leftOver=l.slice(s,l.length))),this.push({data:e.utf8decode(d),meta:t.meta})},b.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:e.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},e.Utf8DecodeWorker=b,i.inherits(h,s),h.prototype.processChunk=function(t){this.push({data:e.utf8encode(t.data),meta:t.meta})},e.Utf8EncodeWorker=h},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(t,l,e){"use strict";var i=t("./support"),n=t("./base64"),c=t("./nodejsUtils"),s=t("set-immediate-shim"),d=t("./external");function a(t){var l=null;return l=i.uint8array?new Uint8Array(t.length):new Array(t.length),o(t,l)}function u(t){return t}function o(t,l){for(var e=0;e<t.length;++e)l[e]=255&t.charCodeAt(e);return l}e.newBlob=function(t,l){e.checkSupport("blob");try{return new Blob([t],{type:l})}catch(c){try{var i=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,n=new i;return n.append(t),n.getBlob(l)}catch(c){throw new Error("Bug : can't construct the Blob.")}}};var r={stringifyByChunk:function(t,l,e){var i=[],n=0,c=t.length;if(c<=e)return String.fromCharCode.apply(null,t);while(n<c)"array"===l||"nodebuffer"===l?i.push(String.fromCharCode.apply(null,t.slice(n,Math.min(n+e,c)))):i.push(String.fromCharCode.apply(null,t.subarray(n,Math.min(n+e,c)))),n+=e;return i.join("")},stringifyByChar:function(t){for(var l="",e=0;e<t.length;e++)l+=String.fromCharCode(t[e]);return l},applyCanBeUsed:{uint8array:function(){try{return i.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return!1}}(),nodebuffer:function(){try{return i.nodebuffer&&1===String.fromCharCode.apply(null,c.allocBuffer(1)).length}catch(t){return!1}}()}};function b(t){var l=65536,i=e.getTypeOf(t),n=!0;if("uint8array"===i?n=r.applyCanBeUsed.uint8array:"nodebuffer"===i&&(n=r.applyCanBeUsed.nodebuffer),n)while(l>1)try{return r.stringifyByChunk(t,i,l)}catch(c){l=Math.floor(l/2)}return r.stringifyByChar(t)}function h(t,l){for(var e=0;e<t.length;e++)l[e]=t[e];return l}e.applyFromCharCode=b;var Z={};Z["string"]={string:u,array:function(t){return o(t,new Array(t.length))},arraybuffer:function(t){return Z["string"]["uint8array"](t).buffer},uint8array:function(t){return o(t,new Uint8Array(t.length))},nodebuffer:function(t){return o(t,c.allocBuffer(t.length))}},Z["array"]={string:b,array:u,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return c.newBufferFrom(t)}},Z["arraybuffer"]={string:function(t){return b(new Uint8Array(t))},array:function(t){return h(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:u,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return c.newBufferFrom(new Uint8Array(t))}},Z["uint8array"]={string:b,array:function(t){return h(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:u,nodebuffer:function(t){return c.newBufferFrom(t)}},Z["nodebuffer"]={string:b,array:function(t){return h(t,new Array(t.length))},arraybuffer:function(t){return Z["nodebuffer"]["uint8array"](t).buffer},uint8array:function(t){return h(t,new Uint8Array(t.length))},nodebuffer:u},e.transformTo=function(t,l){if(l||(l=""),!t)return l;e.checkSupport(t);var i=e.getTypeOf(l),n=Z[i][t](l);return n},e.getTypeOf=function(t){return"string"===typeof t?"string":"[object Array]"===Object.prototype.toString.call(t)?"array":i.nodebuffer&&c.isBuffer(t)?"nodebuffer":i.uint8array&&t instanceof Uint8Array?"uint8array":i.arraybuffer&&t instanceof ArrayBuffer?"arraybuffer":void 0},e.checkSupport=function(t){var l=i[t.toLowerCase()];if(!l)throw new Error(t+" is not supported by this platform")},e.MAX_VALUE_16BITS=65535,e.MAX_VALUE_32BITS=-1,e.pretty=function(t){var l,e,i="";for(e=0;e<(t||"").length;e++)l=t.charCodeAt(e),i+="\\x"+(l<16?"0":"")+l.toString(16).toUpperCase();return i},e.delay=function(t,l,e){s((function(){t.apply(e||null,l||[])}))},e.inherits=function(t,l){var e=function(){};e.prototype=l.prototype,t.prototype=new e},e.extend=function(){var t,l,e={};for(t=0;t<arguments.length;t++)for(l in arguments[t])arguments[t].hasOwnProperty(l)&&"undefined"===typeof e[l]&&(e[l]=arguments[t][l]);return e},e.prepareContent=function(t,l,c,s,u){var o=d.Promise.resolve(l).then((function(t){var l=i.blob&&(t instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(t)));return l&&"undefined"!==typeof FileReader?new d.Promise((function(l,e){var i=new FileReader;i.onload=function(t){l(t.target.result)},i.onerror=function(t){e(t.target.error)},i.readAsArrayBuffer(t)})):t}));return o.then((function(l){var i=e.getTypeOf(l);return i?("arraybuffer"===i?l=e.transformTo("uint8array",l):"string"===i&&(u?l=n.decode(l):c&&!0!==s&&(l=a(l))),l):d.Promise.reject(new Error("Can't read the data of '"+t+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))}))}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(t,l,e){"use strict";var i=t("./reader/readerFor"),n=t("./utils"),c=t("./signature"),s=t("./zipEntry"),d=(t("./utf8"),t("./support"));function a(t){this.files=[],this.loadOptions=t}a.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var l=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+n.pretty(l)+", expected "+n.pretty(t)+")")}},isSignature:function(t,l){var e=this.reader.index;this.reader.setIndex(t);var i=this.reader.readString(4),n=i===l;return this.reader.setIndex(e),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),l=d.uint8array?"uint8array":"array",e=n.transformTo(l,t);this.zipComment=this.loadOptions.decodeFileName(e)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};var t,l,e,i=this.zip64EndOfCentralSize-44,n=0;while(n<i)t=this.reader.readInt(2),l=this.reader.readInt(4),e=this.reader.readData(l),this.zip64ExtensibleData[t]={id:t,length:l,value:e}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var t,l;for(t=0;t<this.files.length;t++)l=this.files[t],this.reader.setIndex(l.localHeaderOffset),this.checkSignature(c.LOCAL_FILE_HEADER),l.readLocalPart(this.reader),l.handleUTF8(),l.processAttributes()},readCentralDir:function(){var t;this.reader.setIndex(this.centralDirOffset);while(this.reader.readAndCheckSignature(c.CENTRAL_FILE_HEADER))t=new s({zip64:this.zip64},this.loadOptions),t.readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(c.CENTRAL_DIRECTORY_END);if(t<0){var l=!this.isSignature(0,c.LOCAL_FILE_HEADER);throw l?new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip: can't find end of central directory")}this.reader.setIndex(t);var e=t;if(this.checkSignature(c.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,t=this.reader.lastIndexOfSignature(c.ZIP64_CENTRAL_DIRECTORY_LOCATOR),t<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(t),this.checkSignature(c.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,c.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(c.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(c.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var i=this.centralDirOffset+this.centralDirSize;this.zip64&&(i+=20,i+=12+this.zip64EndOfCentralSize);var s=e-i;if(s>0)this.isSignature(e,c.CENTRAL_FILE_HEADER)||(this.reader.zero=s);else if(s<0)throw new Error("Corrupted zip: missing "+Math.abs(s)+" bytes.")},prepareReader:function(t){this.reader=i(t)},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},l.exports=a},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(t,l,e){"use strict";var i=t("./reader/readerFor"),n=t("./utils"),c=t("./compressedObject"),s=t("./crc32"),d=t("./utf8"),a=t("./compressions"),u=t("./support"),o=0,r=3,b=function(t){for(var l in a)if(a.hasOwnProperty(l)&&a[l].magic===t)return a[l];return null};function h(t,l){this.options=t,this.loadOptions=l}h.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},readLocalPart:function(t){var l,e;if(t.skip(22),this.fileNameLength=t.readInt(2),e=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(e),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(l=b(this.compressionMethod),null===l)throw new Error("Corrupted zip : compression "+n.pretty(this.compressionMethod)+" unknown (inner file : "+n.transformTo("string",this.fileName)+")");this.decompressed=new c(this.compressedSize,this.uncompressedSize,this.crc32,l,t.readData(this.compressedSize))},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var l=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");t.skip(l),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),t===o&&(this.dosPermissions=63&this.externalFileAttributes),t===r&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var l=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=l.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=l.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=l.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=l.readInt(4))}},readExtraFields:function(t){var l,e,i,n=t.index+this.extraFieldsLength;this.extraFields||(this.extraFields={});while(t.index+4<n)l=t.readInt(2),e=t.readInt(2),i=t.readData(e),this.extraFields[l]={id:l,length:e,value:i};t.setIndex(n)},handleUTF8:function(){var t=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=d.utf8decode(this.fileName),this.fileCommentStr=d.utf8decode(this.fileComment);else{var l=this.findExtraFieldUnicodePath();if(null!==l)this.fileNameStr=l;else{var e=n.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(e)}var i=this.findExtraFieldUnicodeComment();if(null!==i)this.fileCommentStr=i;else{var c=n.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(c)}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var l=i(t.value);return 1!==l.readInt(1)||s(this.fileName)!==l.readInt(4)?null:d.utf8decode(l.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var l=i(t.value);return 1!==l.readInt(1)||s(this.fileComment)!==l.readInt(4)?null:d.utf8decode(l.readData(t.length-5))}return null}},l.exports=h},{"./compressedObject":391,"./compressions":392,"./crc32":393,"./reader/readerFor":411,"./support":419,"./utf8":420,"./utils":421}],424:[function(t,l,e){"use strict";var i=t("./stream/StreamHelper"),n=t("./stream/DataWorker"),c=t("./utf8"),s=t("./compressedObject"),d=t("./stream/GenericWorker"),a=function(t,l,e){this.name=t,this.dir=e.dir,this.date=e.date,this.comment=e.comment,this.unixPermissions=e.unixPermissions,this.dosPermissions=e.dosPermissions,this._data=l,this._dataBinary=e.binary,this.options={compression:e.compression,compressionOptions:e.compressionOptions}};a.prototype={internalStream:function(t){var l=null,e="string";try{if(!t)throw new Error("No output type specified.");e=t.toLowerCase();var n="string"===e||"text"===e;"binarystring"!==e&&"text"!==e||(e="string"),l=this._decompressWorker();var s=!this._dataBinary;s&&!n&&(l=l.pipe(new c.Utf8EncodeWorker)),!s&&n&&(l=l.pipe(new c.Utf8DecodeWorker))}catch(a){l=new d("error"),l.error(a)}return new i(l,e,"")},async:function(t,l){return this.internalStream(t).accumulate(l)},nodeStream:function(t,l){return this.internalStream(t||"nodebuffer").toNodejsStream(l)},_compressWorker:function(t,l){if(this._data instanceof s&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var e=this._decompressWorker();return this._dataBinary||(e=e.pipe(new c.Utf8EncodeWorker)),s.createWorkerFrom(e,t,l)},_decompressWorker:function(){return this._data instanceof s?this._data.getContentWorker():this._data instanceof d?this._data:new n(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],o=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},r=0;r<u.length;r++)a.prototype[u[r]]=o;l.exports=a},{"./compressedObject":391,"./stream/DataWorker":416,"./stream/GenericWorker":417,"./stream/StreamHelper":418,"./utf8":420}],425:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("immediate");function c(){}var s={},d=["REJECTED"],a=["FULFILLED"],u=["PENDING"];function o(t){if("function"!==typeof t)throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,t!==c&&Z(this,t)}function r(t,l,e){this.promise=t,"function"===typeof l&&(this.onFulfilled=l,this.callFulfilled=this.otherCallFulfilled),"function"===typeof e&&(this.onRejected=e,this.callRejected=this.otherCallRejected)}function b(t,l,e){n((function(){var i;try{i=l(e)}catch(n){return s.reject(t,n)}i===t?s.reject(t,new TypeError("Cannot resolve promise with itself")):s.resolve(t,i)}))}function h(t){var l=t&&t.then;if(t&&("object"===i(t)||"function"===typeof t)&&"function"===typeof l)return function(){l.apply(t,arguments)}}function Z(t,l){var e=!1;function i(l){e||(e=!0,s.reject(t,l))}function n(l){e||(e=!0,s.resolve(t,l))}function c(){l(n,i)}var d=m(c);"error"===d.status&&i(d.value)}function m(t,l){var e={};try{e.value=t(l),e.status="success"}catch(i){e.status="error",e.value=i}return e}function y(t){return t instanceof this?t:s.resolve(new this(c),t)}function p(t){var l=new this(c);return s.reject(l,t)}function W(t){var l=this;if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var e=t.length,i=!1;if(!e)return this.resolve([]);var n=new Array(e),d=0,a=-1,u=new this(c);while(++a<e)o(t[a],a);return u;function o(t,c){function a(t){n[c]=t,++d!==e||i||(i=!0,s.resolve(u,n))}l.resolve(t).then(a,(function(t){i||(i=!0,s.reject(u,t))}))}}function G(t){var l=this;if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var e=t.length,i=!1;if(!e)return this.resolve([]);var n=-1,d=new this(c);while(++n<e)a(t[n]);return d;function a(t){l.resolve(t).then((function(t){i||(i=!0,s.resolve(d,t))}),(function(t){i||(i=!0,s.reject(d,t))}))}}l.exports=o,o.prototype["finally"]=function(t){if("function"!==typeof t)return this;var l=this.constructor;return this.then(e,i);function e(e){function i(){return e}return l.resolve(t()).then(i)}function i(e){function i(){throw e}return l.resolve(t()).then(i)}},o.prototype["catch"]=function(t){return this.then(null,t)},o.prototype.then=function(t,l){if("function"!==typeof t&&this.state===a||"function"!==typeof l&&this.state===d)return this;var e=new this.constructor(c);if(this.state!==u){var i=this.state===a?t:l;b(e,i,this.outcome)}else this.queue.push(new r(e,t,l));return e},r.prototype.callFulfilled=function(t){s.resolve(this.promise,t)},r.prototype.otherCallFulfilled=function(t){b(this.promise,this.onFulfilled,t)},r.prototype.callRejected=function(t){s.reject(this.promise,t)},r.prototype.otherCallRejected=function(t){b(this.promise,this.onRejected,t)},s.resolve=function(t,l){var e=m(h,l);if("error"===e.status)return s.reject(t,e.value);var i=e.value;if(i)Z(t,i);else{t.state=a,t.outcome=l;var n=-1,c=t.queue.length;while(++n<c)t.queue[n].callFulfilled(l)}return t},s.reject=function(t,l){t.state=d,t.outcome=l;var e=-1,i=t.queue.length;while(++e<i)t.queue[e].callRejected(l);return t},o.resolve=y,o.reject=p,o.all=W,o.race=G},{immediate:386}],426:[function(t,l,i){(function(t){"use strict";function e(t){return e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var i=1/0,n="[object Symbol]",c=/[\\^$.*+?()[\]{}|]/g,s=RegExp(c.source),d="object"==("undefined"===typeof t?"undefined":e(t))&&t&&t.Object===Object&&t,a="object"==("undefined"===typeof self?"undefined":e(self))&&self&&self.Object===Object&&self,u=d||a||Function("return this")(),o=Object.prototype,r=o.toString,b=u.Symbol,h=b?b.prototype:void 0,Z=h?h.toString:void 0;function m(t){if("string"==typeof t)return t;if(p(t))return Z?Z.call(t):"";var l=t+"";return"0"==l&&1/t==-i?"-0":l}function y(t){return!!t&&"object"==e(t)}function p(t){return"symbol"==e(t)||y(t)&&r.call(t)==n}function W(t){return null==t?"":m(t)}function G(t){return t=W(t),t&&s.test(t)?t.replace(c,"\\$&"):t}l.exports=G}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],427:[function(t,l,i){(function(t){"use strict";function e(t){return e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var n=200,c="Expected a function",s="__lodash_hash_undefined__",d=1,a=2,u=1/0,o=9007199254740991,r="[object Arguments]",b="[object Array]",h="[object Boolean]",Z="[object Date]",m="[object Error]",y="[object Function]",p="[object GeneratorFunction]",W="[object Map]",G="[object Number]",X="[object Object]",Y="[object Promise]",N="[object RegExp]",V="[object Set]",M="[object String]",L="[object Symbol]",I="[object WeakMap]",w="[object ArrayBuffer]",f="[object DataView]",R="[object Float32Array]",T="[object Float64Array]",z="[object Int8Array]",x="[object Int16Array]",S="[object Int32Array]",k="[object Uint8Array]",C="[object Uint8ClampedArray]",J="[object Uint16Array]",g="[object Uint32Array]",F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,j=/^\w*$/,v=/^\./,D=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,U=/[\\^$.*+?()[\]{}|]/g,O=/\\(\\)?/g,K=/^\[object .+?Constructor\]$/,E=/^(?:0|[1-9]\d*)$/,H={};H[R]=H[T]=H[z]=H[x]=H[S]=H[k]=H[C]=H[J]=H[g]=!0,H[r]=H[b]=H[w]=H[h]=H[f]=H[Z]=H[m]=H[y]=H[W]=H[G]=H[X]=H[N]=H[V]=H[M]=H[I]=!1;var Q="object"==("undefined"===typeof t?"undefined":e(t))&&t&&t.Object===Object&&t,B="object"==("undefined"===typeof self?"undefined":e(self))&&self&&self.Object===Object&&self,P=Q||B||Function("return this")(),A="object"==("undefined"===typeof i?"undefined":e(i))&&i&&!i.nodeType&&i,_=A&&"object"==("undefined"===typeof l?"undefined":e(l))&&l&&!l.nodeType&&l,q=_&&_.exports===A,$=q&&Q.process,tt=function(){try{return $&&$.binding("util")}catch(t){}}(),lt=tt&&tt.isTypedArray;function et(t,l,e,i){var n=-1,c=t?t.length:0;while(++n<c){var s=t[n];l(i,s,e(s),t)}return i}function it(t,l){var e=-1,i=t?t.length:0;while(++e<i)if(l(t[e],e,t))return!0;return!1}function nt(t){return function(l){return null==l?void 0:l[t]}}function ct(t,l){var e=-1,i=Array(t);while(++e<t)i[e]=l(e);return i}function st(t){return function(l){return t(l)}}function dt(t,l){return null==t?void 0:t[l]}function at(t){var l=!1;if(null!=t&&"function"!=typeof t.toString)try{l=!!(t+"")}catch(e){}return l}function ut(t){var l=-1,e=Array(t.size);return t.forEach((function(t,i){e[++l]=[i,t]})),e}function ot(t,l){return function(e){return t(l(e))}}function rt(t){var l=-1,e=Array(t.size);return t.forEach((function(t){e[++l]=t})),e}var bt=Array.prototype,ht=Function.prototype,Zt=Object.prototype,mt=P["__core-js_shared__"],yt=function(){var t=/[^.]+$/.exec(mt&&mt.keys&&mt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),pt=ht.toString,Wt=Zt.hasOwnProperty,Gt=Zt.toString,Xt=RegExp("^"+pt.call(Wt).replace(U,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Yt=P.Symbol,Nt=P.Uint8Array,Vt=Zt.propertyIsEnumerable,Mt=bt.splice,Lt=ot(Object.keys,Object),It=Ul(P,"DataView"),wt=Ul(P,"Map"),ft=Ul(P,"Promise"),Rt=Ul(P,"Set"),Tt=Ul(P,"WeakMap"),zt=Ul(Object,"create"),xt=te(It),St=te(wt),kt=te(ft),Ct=te(Rt),Jt=te(Tt),gt=Yt?Yt.prototype:void 0,Ft=gt?gt.valueOf:void 0,jt=gt?gt.toString:void 0;function vt(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function Dt(){this.__data__=zt?zt(null):{}}function Ut(t){return this.has(t)&&delete this.__data__[t]}function Ot(t){var l=this.__data__;if(zt){var e=l[t];return e===s?void 0:e}return Wt.call(l,t)?l[t]:void 0}function Kt(t){var l=this.__data__;return zt?void 0!==l[t]:Wt.call(l,t)}function Et(t,l){var e=this.__data__;return e[t]=zt&&void 0===l?s:l,this}function Ht(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function Qt(){this.__data__=[]}function Bt(t){var l=this.__data__,e=Zl(l,t);if(e<0)return!1;var i=l.length-1;return e==i?l.pop():Mt.call(l,e,1),!0}function Pt(t){var l=this.__data__,e=Zl(l,t);return e<0?void 0:l[e][1]}function At(t){return Zl(this.__data__,t)>-1}function _t(t,l){var e=this.__data__,i=Zl(e,t);return i<0?e.push([t,l]):e[i][1]=l,this}function qt(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function $t(){this.__data__={hash:new vt,map:new(wt||Ht),string:new vt}}function tl(t){return vl(this,t)["delete"](t)}function ll(t){return vl(this,t).get(t)}function el(t){return vl(this,t).has(t)}function il(t,l){return vl(this,t).set(t,l),this}function nl(t){var l=-1,e=t?t.length:0;this.__data__=new qt;while(++l<e)this.add(t[l])}function cl(t){return this.__data__.set(t,s),this}function sl(t){return this.__data__.has(t)}function dl(t){this.__data__=new Ht(t)}function al(){this.__data__=new Ht}function ul(t){return this.__data__["delete"](t)}function ol(t){return this.__data__.get(t)}function rl(t){return this.__data__.has(t)}function bl(t,l){var e=this.__data__;if(e instanceof Ht){var i=e.__data__;if(!wt||i.length<n-1)return i.push([t,l]),this;e=this.__data__=new qt(i)}return e.set(t,l),this}function hl(t,l){var e=ce(t)||ne(t)?ct(t.length,String):[],i=e.length,n=!!i;for(var c in t)!l&&!Wt.call(t,c)||n&&("length"==c||El(c,i))||e.push(c);return e}function Zl(t,l){var e=t.length;while(e--)if(ie(t[e][0],l))return e;return-1}function ml(t,l,e,i){return yl(t,(function(t,n,c){l(i,t,e(t),c)})),i}vt.prototype.clear=Dt,vt.prototype["delete"]=Ut,vt.prototype.get=Ot,vt.prototype.has=Kt,vt.prototype.set=Et,Ht.prototype.clear=Qt,Ht.prototype["delete"]=Bt,Ht.prototype.get=Pt,Ht.prototype.has=At,Ht.prototype.set=_t,qt.prototype.clear=$t,qt.prototype["delete"]=tl,qt.prototype.get=ll,qt.prototype.has=el,qt.prototype.set=il,nl.prototype.add=nl.prototype.push=cl,nl.prototype.has=sl,dl.prototype.clear=al,dl.prototype["delete"]=ul,dl.prototype.get=ol,dl.prototype.has=rl,dl.prototype.set=bl;var yl=Cl(Wl),pl=Jl();function Wl(t,l){return t&&pl(t,l,pe)}function Gl(t,l){l=Hl(l,t)?[l]:Sl(l);var e=0,i=l.length;while(null!=t&&e<i)t=t[$l(l[e++])];return e&&e==i?t:void 0}function Xl(t){return Gt.call(t)}function Yl(t,l){return null!=t&&l in Object(t)}function Nl(t,l,e,i,n){return t===l||(null==t||null==l||!oe(t)&&!re(l)?t!==t&&l!==l:Vl(t,l,Nl,e,i,n))}function Vl(t,l,e,i,n,c){var s=ce(t),d=ce(l),u=b,o=b;s||(u=Ol(t),u=u==r?X:u),d||(o=Ol(l),o=o==r?X:o);var h=u==X&&!at(t),Z=o==X&&!at(l),m=u==o;if(m&&!h)return c||(c=new dl),s||he(t)?gl(t,l,e,i,n,c):Fl(t,l,u,e,i,n,c);if(!(n&a)){var y=h&&Wt.call(t,"__wrapped__"),p=Z&&Wt.call(l,"__wrapped__");if(y||p){var W=y?t.value():t,G=p?l.value():l;return c||(c=new dl),e(W,G,i,n,c)}}return!!m&&(c||(c=new dl),jl(t,l,e,i,n,c))}function Ml(t,l,e,i){var n=e.length,c=n,s=!i;if(null==t)return!c;t=Object(t);while(n--){var u=e[n];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}while(++n<c){u=e[n];var o=u[0],r=t[o],b=u[1];if(s&&u[2]){if(void 0===r&&!(o in t))return!1}else{var h=new dl;if(i)var Z=i(r,b,o,t,l,h);if(!(void 0===Z?Nl(b,r,i,d|a,h):Z))return!1}}return!0}function Ll(t){if(!oe(t)||Bl(t))return!1;var l=ae(t)||at(t)?Xt:K;return l.test(te(t))}function Il(t){return re(t)&&ue(t.length)&&!!H[Gt.call(t)]}function wl(t){return"function"==typeof t?t:null==t?We:"object"==e(t)?ce(t)?Tl(t[0],t[1]):Rl(t):Ge(t)}function fl(t){if(!Pl(t))return Lt(t);var l=[];for(var e in Object(t))Wt.call(t,e)&&"constructor"!=e&&l.push(e);return l}function Rl(t){var l=Dl(t);return 1==l.length&&l[0][2]?_l(l[0][0],l[0][1]):function(e){return e===t||Ml(e,t,l)}}function Tl(t,l){return Hl(t)&&Al(l)?_l($l(t),l):function(e){var i=me(e,t);return void 0===i&&i===l?ye(e,t):Nl(l,i,void 0,d|a)}}function zl(t){return function(l){return Gl(l,t)}}function xl(t){if("string"==typeof t)return t;if(be(t))return jt?jt.call(t):"";var l=t+"";return"0"==l&&1/t==-u?"-0":l}function Sl(t){return ce(t)?t:ql(t)}function kl(t,l){return function(e,i){var n=ce(e)?et:ml,c=l?l():{};return n(e,t,wl(i,2),c)}}function Cl(t,l){return function(e,i){if(null==e)return e;if(!se(e))return t(e,i);var n=e.length,c=l?n:-1,s=Object(e);while(l?c--:++c<n)if(!1===i(s[c],c,s))break;return e}}function Jl(t){return function(l,e,i){var n=-1,c=Object(l),s=i(l),d=s.length;while(d--){var a=s[t?d:++n];if(!1===e(c[a],a,c))break}return l}}function gl(t,l,e,i,n,c){var s=n&a,u=t.length,o=l.length;if(u!=o&&!(s&&o>u))return!1;var r=c.get(t);if(r&&c.get(l))return r==l;var b=-1,h=!0,Z=n&d?new nl:void 0;c.set(t,l),c.set(l,t);while(++b<u){var m=t[b],y=l[b];if(i)var p=s?i(y,m,b,l,t,c):i(m,y,b,t,l,c);if(void 0!==p){if(p)continue;h=!1;break}if(Z){if(!it(l,(function(t,l){if(!Z.has(l)&&(m===t||e(m,t,i,n,c)))return Z.add(l)}))){h=!1;break}}else if(m!==y&&!e(m,y,i,n,c)){h=!1;break}}return c["delete"](t),c["delete"](l),h}function Fl(t,l,e,i,n,c,s){switch(e){case f:if(t.byteLength!=l.byteLength||t.byteOffset!=l.byteOffset)return!1;t=t.buffer,l=l.buffer;case w:return!(t.byteLength!=l.byteLength||!i(new Nt(t),new Nt(l)));case h:case Z:case G:return ie(+t,+l);case m:return t.name==l.name&&t.message==l.message;case N:case M:return t==l+"";case W:var u=ut;case V:var o=c&a;if(u||(u=rt),t.size!=l.size&&!o)return!1;var r=s.get(t);if(r)return r==l;c|=d,s.set(t,l);var b=gl(u(t),u(l),i,n,c,s);return s["delete"](t),b;case L:if(Ft)return Ft.call(t)==Ft.call(l)}return!1}function jl(t,l,e,i,n,c){var s=n&a,d=pe(t),u=d.length,o=pe(l),r=o.length;if(u!=r&&!s)return!1;var b=u;while(b--){var h=d[b];if(!(s?h in l:Wt.call(l,h)))return!1}var Z=c.get(t);if(Z&&c.get(l))return Z==l;var m=!0;c.set(t,l),c.set(l,t);var y=s;while(++b<u){h=d[b];var p=t[h],W=l[h];if(i)var G=s?i(W,p,h,l,t,c):i(p,W,h,t,l,c);if(!(void 0===G?p===W||e(p,W,i,n,c):G)){m=!1;break}y||(y="constructor"==h)}if(m&&!y){var X=t.constructor,Y=l.constructor;X==Y||!("constructor"in t)||!("constructor"in l)||"function"==typeof X&&X instanceof X&&"function"==typeof Y&&Y instanceof Y||(m=!1)}return c["delete"](t),c["delete"](l),m}function vl(t,l){var e=t.__data__;return Ql(l)?e["string"==typeof l?"string":"hash"]:e.map}function Dl(t){var l=pe(t),e=l.length;while(e--){var i=l[e],n=t[i];l[e]=[i,n,Al(n)]}return l}function Ul(t,l){var e=dt(t,l);return Ll(e)?e:void 0}var Ol=Xl;function Kl(t,l,e){l=Hl(l,t)?[l]:Sl(l);var i,n=-1,c=l.length;while(++n<c){var s=$l(l[n]);if(!(i=null!=t&&e(t,s)))break;t=t[s]}return i||(c=t?t.length:0,!!c&&ue(c)&&El(s,c)&&(ce(t)||ne(t)))}function El(t,l){return l=null==l?o:l,!!l&&("number"==typeof t||E.test(t))&&t>-1&&t%1==0&&t<l}function Hl(t,l){if(ce(t))return!1;var i=e(t);return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=t&&!be(t))||j.test(t)||!F.test(t)||null!=l&&t in Object(l)}function Ql(t){var l=e(t);return"string"==l||"number"==l||"symbol"==l||"boolean"==l?"__proto__"!==t:null===t}function Bl(t){return!!yt&&yt in t}function Pl(t){var l=t&&t.constructor,e="function"==typeof l&&l.prototype||Zt;return t===e}function Al(t){return t===t&&!oe(t)}function _l(t,l){return function(e){return null!=e&&e[t]===l&&(void 0!==l||t in Object(e))}}(It&&Ol(new It(new ArrayBuffer(1)))!=f||wt&&Ol(new wt)!=W||ft&&Ol(ft.resolve())!=Y||Rt&&Ol(new Rt)!=V||Tt&&Ol(new Tt)!=I)&&(Ol=function(t){var l=Gt.call(t),e=l==X?t.constructor:void 0,i=e?te(e):void 0;if(i)switch(i){case xt:return f;case St:return W;case kt:return Y;case Ct:return V;case Jt:return I}return l});var ql=ee((function(t){t=Ze(t);var l=[];return v.test(t)&&l.push(""),t.replace(D,(function(t,e,i,n){l.push(i?n.replace(O,"$1"):e||t)})),l}));function $l(t){if("string"==typeof t||be(t))return t;var l=t+"";return"0"==l&&1/t==-u?"-0":l}function te(t){if(null!=t){try{return pt.call(t)}catch(l){}try{return t+""}catch(l){}}return""}var le=kl((function(t,l,e){Wt.call(t,e)?t[e].push(l):t[e]=[l]}));function ee(t,l){if("function"!=typeof t||l&&"function"!=typeof l)throw new TypeError(c);var e=function e(){var i=arguments,n=l?l.apply(this,i):i[0],c=e.cache;if(c.has(n))return c.get(n);var s=t.apply(this,i);return e.cache=c.set(n,s),s};return e.cache=new(ee.Cache||qt),e}function ie(t,l){return t===l||t!==t&&l!==l}function ne(t){return de(t)&&Wt.call(t,"callee")&&(!Vt.call(t,"callee")||Gt.call(t)==r)}ee.Cache=qt;var ce=Array.isArray;function se(t){return null!=t&&ue(t.length)&&!ae(t)}function de(t){return re(t)&&se(t)}function ae(t){var l=oe(t)?Gt.call(t):"";return l==y||l==p}function ue(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=o}function oe(t){var l=e(t);return!!t&&("object"==l||"function"==l)}function re(t){return!!t&&"object"==e(t)}function be(t){return"symbol"==e(t)||re(t)&&Gt.call(t)==L}var he=lt?st(lt):Il;function Ze(t){return null==t?"":xl(t)}function me(t,l,e){var i=null==t?void 0:Gl(t,l);return void 0===i?e:i}function ye(t,l){return null!=t&&Kl(t,l,Yl)}function pe(t){return se(t)?hl(t):fl(t)}function We(t){return t}function Ge(t){return Hl(t)?nt($l(t)):zl(t)}l.exports=le}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],428:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n="[object Boolean]",c=Object.prototype,s=c.toString;function d(t){return!0===t||!1===t||a(t)&&s.call(t)==n}function a(t){return!!t&&"object"==i(t)}l.exports=d},{}],429:[function(t,l,i){(function(t){"use strict";function e(t){return e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var n=200,c="__lodash_hash_undefined__",s=1,d=2,a=9007199254740991,u="[object Arguments]",o="[object Array]",r="[object AsyncFunction]",b="[object Boolean]",h="[object Date]",Z="[object Error]",m="[object Function]",y="[object GeneratorFunction]",p="[object Map]",W="[object Number]",G="[object Null]",X="[object Object]",Y="[object Promise]",N="[object Proxy]",V="[object RegExp]",M="[object Set]",L="[object String]",I="[object Symbol]",w="[object Undefined]",f="[object WeakMap]",R="[object ArrayBuffer]",T="[object DataView]",z="[object Float32Array]",x="[object Float64Array]",S="[object Int8Array]",k="[object Int16Array]",C="[object Int32Array]",J="[object Uint8Array]",g="[object Uint8ClampedArray]",F="[object Uint16Array]",j="[object Uint32Array]",v=/[\\^$.*+?()[\]{}|]/g,D=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,O={};O[z]=O[x]=O[S]=O[k]=O[C]=O[J]=O[g]=O[F]=O[j]=!0,O[u]=O[o]=O[R]=O[b]=O[T]=O[h]=O[Z]=O[m]=O[p]=O[W]=O[X]=O[V]=O[M]=O[L]=O[f]=!1;var K="object"==("undefined"===typeof t?"undefined":e(t))&&t&&t.Object===Object&&t,E="object"==("undefined"===typeof self?"undefined":e(self))&&self&&self.Object===Object&&self,H=K||E||Function("return this")(),Q="object"==("undefined"===typeof i?"undefined":e(i))&&i&&!i.nodeType&&i,B=Q&&"object"==("undefined"===typeof l?"undefined":e(l))&&l&&!l.nodeType&&l,P=B&&B.exports===Q,A=P&&K.process,_=function(){try{return A&&A.binding&&A.binding("util")}catch(t){}}(),q=_&&_.isTypedArray;function $(t,l){var e=-1,i=null==t?0:t.length,n=0,c=[];while(++e<i){var s=t[e];l(s,e,t)&&(c[n++]=s)}return c}function tt(t,l){var e=-1,i=l.length,n=t.length;while(++e<i)t[n+e]=l[e];return t}function lt(t,l){var e=-1,i=null==t?0:t.length;while(++e<i)if(l(t[e],e,t))return!0;return!1}function et(t,l){var e=-1,i=Array(t);while(++e<t)i[e]=l(e);return i}function it(t){return function(l){return t(l)}}function nt(t,l){return t.has(l)}function ct(t,l){return null==t?void 0:t[l]}function st(t){var l=-1,e=Array(t.size);return t.forEach((function(t,i){e[++l]=[i,t]})),e}function dt(t,l){return function(e){return t(l(e))}}function at(t){var l=-1,e=Array(t.size);return t.forEach((function(t){e[++l]=t})),e}var ut=Array.prototype,ot=Function.prototype,rt=Object.prototype,bt=H["__core-js_shared__"],ht=ot.toString,Zt=rt.hasOwnProperty,mt=function(){var t=/[^.]+$/.exec(bt&&bt.keys&&bt.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),yt=rt.toString,pt=RegExp("^"+ht.call(Zt).replace(v,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Wt=P?H.Buffer:void 0,Gt=H.Symbol,Xt=H.Uint8Array,Yt=rt.propertyIsEnumerable,Nt=ut.splice,Vt=Gt?Gt.toStringTag:void 0,Mt=Object.getOwnPropertySymbols,Lt=Wt?Wt.isBuffer:void 0,It=dt(Object.keys,Object),wt=fl(H,"DataView"),ft=fl(H,"Map"),Rt=fl(H,"Promise"),Tt=fl(H,"Set"),zt=fl(H,"WeakMap"),xt=fl(Object,"create"),St=gl(wt),kt=gl(ft),Ct=gl(Rt),Jt=gl(Tt),gt=gl(zt),Ft=Gt?Gt.prototype:void 0,jt=Ft?Ft.valueOf:void 0;function vt(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function Dt(){this.__data__=xt?xt(null):{},this.size=0}function Ut(t){var l=this.has(t)&&delete this.__data__[t];return this.size-=l?1:0,l}function Ot(t){var l=this.__data__;if(xt){var e=l[t];return e===c?void 0:e}return Zt.call(l,t)?l[t]:void 0}function Kt(t){var l=this.__data__;return xt?void 0!==l[t]:Zt.call(l,t)}function Et(t,l){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=xt&&void 0===l?c:l,this}function Ht(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function Qt(){this.__data__=[],this.size=0}function Bt(t){var l=this.__data__,e=Zl(l,t);if(e<0)return!1;var i=l.length-1;return e==i?l.pop():Nt.call(l,e,1),--this.size,!0}function Pt(t){var l=this.__data__,e=Zl(l,t);return e<0?void 0:l[e][1]}function At(t){return Zl(this.__data__,t)>-1}function _t(t,l){var e=this.__data__,i=Zl(e,t);return i<0?(++this.size,e.push([t,l])):e[i][1]=l,this}function qt(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function $t(){this.size=0,this.__data__={hash:new vt,map:new(ft||Ht),string:new vt}}function tl(t){var l=wl(this,t)["delete"](t);return this.size-=l?1:0,l}function ll(t){return wl(this,t).get(t)}function el(t){return wl(this,t).has(t)}function il(t,l){var e=wl(this,t),i=e.size;return e.set(t,l),this.size+=e.size==i?0:1,this}function nl(t){var l=-1,e=null==t?0:t.length;this.__data__=new qt;while(++l<e)this.add(t[l])}function cl(t){return this.__data__.set(t,c),this}function sl(t){return this.__data__.has(t)}function dl(t){var l=this.__data__=new Ht(t);this.size=l.size}function al(){this.__data__=new Ht,this.size=0}function ul(t){var l=this.__data__,e=l["delete"](t);return this.size=l.size,e}function ol(t){return this.__data__.get(t)}function rl(t){return this.__data__.has(t)}function bl(t,l){var e=this.__data__;if(e instanceof Ht){var i=e.__data__;if(!ft||i.length<n-1)return i.push([t,l]),this.size=++e.size,this;e=this.__data__=new qt(i)}return e.set(t,l),this.size=e.size,this}function hl(t,l){var e=vl(t),i=!e&&jl(t),n=!e&&!i&&Ul(t),c=!e&&!i&&!n&&Bl(t),s=e||i||n||c,d=s?et(t.length,String):[],a=d.length;for(var u in t)!l&&!Zt.call(t,u)||s&&("length"==u||n&&("offset"==u||"parent"==u)||c&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||xl(u,a))||d.push(u);return d}function Zl(t,l){var e=t.length;while(e--)if(Fl(t[e][0],l))return e;return-1}function ml(t,l,e){var i=l(t);return vl(t)?i:tt(i,e(t))}function yl(t){return null==t?void 0===t?w:G:Vt&&Vt in Object(t)?Rl(t):Jl(t)}function pl(t){return Ql(t)&&yl(t)==u}function Wl(t,l,e,i,n){return t===l||(null==t||null==l||!Ql(t)&&!Ql(l)?t!==t&&l!==l:Gl(t,l,e,i,Wl,n))}function Gl(t,l,e,i,n,c){var d=vl(t),a=vl(l),r=d?o:zl(t),b=a?o:zl(l);r=r==u?X:r,b=b==u?X:b;var h=r==X,Z=b==X,m=r==b;if(m&&Ul(t)){if(!Ul(l))return!1;d=!0,h=!1}if(m&&!h)return c||(c=new dl),d||Bl(t)?Vl(t,l,e,i,n,c):Ml(t,l,r,e,i,n,c);if(!(e&s)){var y=h&&Zt.call(t,"__wrapped__"),p=Z&&Zt.call(l,"__wrapped__");if(y||p){var W=y?t.value():t,G=p?l.value():l;return c||(c=new dl),n(W,G,e,i,c)}}return!!m&&(c||(c=new dl),Ll(t,l,e,i,n,c))}function Xl(t){if(!Hl(t)||kl(t))return!1;var l=Kl(t)?pt:D;return l.test(gl(t))}function Yl(t){return Ql(t)&&El(t.length)&&!!O[yl(t)]}function Nl(t){if(!Cl(t))return It(t);var l=[];for(var e in Object(t))Zt.call(t,e)&&"constructor"!=e&&l.push(e);return l}function Vl(t,l,e,i,n,c){var a=e&s,u=t.length,o=l.length;if(u!=o&&!(a&&o>u))return!1;var r=c.get(t);if(r&&c.get(l))return r==l;var b=-1,h=!0,Z=e&d?new nl:void 0;c.set(t,l),c.set(l,t);while(++b<u){var m=t[b],y=l[b];if(i)var p=a?i(y,m,b,l,t,c):i(m,y,b,t,l,c);if(void 0!==p){if(p)continue;h=!1;break}if(Z){if(!lt(l,(function(t,l){if(!nt(Z,l)&&(m===t||n(m,t,e,i,c)))return Z.push(l)}))){h=!1;break}}else if(m!==y&&!n(m,y,e,i,c)){h=!1;break}}return c["delete"](t),c["delete"](l),h}function Ml(t,l,e,i,n,c,a){switch(e){case T:if(t.byteLength!=l.byteLength||t.byteOffset!=l.byteOffset)return!1;t=t.buffer,l=l.buffer;case R:return!(t.byteLength!=l.byteLength||!c(new Xt(t),new Xt(l)));case b:case h:case W:return Fl(+t,+l);case Z:return t.name==l.name&&t.message==l.message;case V:case L:return t==l+"";case p:var u=st;case M:var o=i&s;if(u||(u=at),t.size!=l.size&&!o)return!1;var r=a.get(t);if(r)return r==l;i|=d,a.set(t,l);var m=Vl(u(t),u(l),i,n,c,a);return a["delete"](t),m;case I:if(jt)return jt.call(t)==jt.call(l)}return!1}function Ll(t,l,e,i,n,c){var d=e&s,a=Il(t),u=a.length,o=Il(l),r=o.length;if(u!=r&&!d)return!1;var b=u;while(b--){var h=a[b];if(!(d?h in l:Zt.call(l,h)))return!1}var Z=c.get(t);if(Z&&c.get(l))return Z==l;var m=!0;c.set(t,l),c.set(l,t);var y=d;while(++b<u){h=a[b];var p=t[h],W=l[h];if(i)var G=d?i(W,p,h,l,t,c):i(p,W,h,t,l,c);if(!(void 0===G?p===W||n(p,W,e,i,c):G)){m=!1;break}y||(y="constructor"==h)}if(m&&!y){var X=t.constructor,Y=l.constructor;X==Y||!("constructor"in t)||!("constructor"in l)||"function"==typeof X&&X instanceof X&&"function"==typeof Y&&Y instanceof Y||(m=!1)}return c["delete"](t),c["delete"](l),m}function Il(t){return ml(t,Pl,Tl)}function wl(t,l){var e=t.__data__;return Sl(l)?e["string"==typeof l?"string":"hash"]:e.map}function fl(t,l){var e=ct(t,l);return Xl(e)?e:void 0}function Rl(t){var l=Zt.call(t,Vt),e=t[Vt];try{t[Vt]=void 0;var i=!0}catch(c){}var n=yt.call(t);return i&&(l?t[Vt]=e:delete t[Vt]),n}vt.prototype.clear=Dt,vt.prototype["delete"]=Ut,vt.prototype.get=Ot,vt.prototype.has=Kt,vt.prototype.set=Et,Ht.prototype.clear=Qt,Ht.prototype["delete"]=Bt,Ht.prototype.get=Pt,Ht.prototype.has=At,Ht.prototype.set=_t,qt.prototype.clear=$t,qt.prototype["delete"]=tl,qt.prototype.get=ll,qt.prototype.has=el,qt.prototype.set=il,nl.prototype.add=nl.prototype.push=cl,nl.prototype.has=sl,dl.prototype.clear=al,dl.prototype["delete"]=ul,dl.prototype.get=ol,dl.prototype.has=rl,dl.prototype.set=bl;var Tl=Mt?function(t){return null==t?[]:(t=Object(t),$(Mt(t),(function(l){return Yt.call(t,l)})))}:Al,zl=yl;function xl(t,l){return l=null==l?a:l,!!l&&("number"==typeof t||U.test(t))&&t>-1&&t%1==0&&t<l}function Sl(t){var l=e(t);return"string"==l||"number"==l||"symbol"==l||"boolean"==l?"__proto__"!==t:null===t}function kl(t){return!!mt&&mt in t}function Cl(t){var l=t&&t.constructor,e="function"==typeof l&&l.prototype||rt;return t===e}function Jl(t){return yt.call(t)}function gl(t){if(null!=t){try{return ht.call(t)}catch(l){}try{return t+""}catch(l){}}return""}function Fl(t,l){return t===l||t!==t&&l!==l}(wt&&zl(new wt(new ArrayBuffer(1)))!=T||ft&&zl(new ft)!=p||Rt&&zl(Rt.resolve())!=Y||Tt&&zl(new Tt)!=M||zt&&zl(new zt)!=f)&&(zl=function(t){var l=yl(t),e=l==X?t.constructor:void 0,i=e?gl(e):"";if(i)switch(i){case St:return T;case kt:return p;case Ct:return Y;case Jt:return M;case gt:return f}return l});var jl=pl(function(){return arguments}())?pl:function(t){return Ql(t)&&Zt.call(t,"callee")&&!Yt.call(t,"callee")},vl=Array.isArray;function Dl(t){return null!=t&&El(t.length)&&!Kl(t)}var Ul=Lt||_l;function Ol(t,l){return Wl(t,l)}function Kl(t){if(!Hl(t))return!1;var l=yl(t);return l==m||l==y||l==r||l==N}function El(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function Hl(t){var l=e(t);return null!=t&&("object"==l||"function"==l)}function Ql(t){return null!=t&&"object"==e(t)}var Bl=q?it(q):Yl;function Pl(t){return Dl(t)?hl(t):Nl(t)}function Al(){return[]}function _l(){return!1}l.exports=Ol}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],430:[function(t,l,i){(function(t){"use strict";function e(t){return e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var i="[object AsyncFunction]",n="[object Function]",c="[object GeneratorFunction]",s="[object Null]",d="[object Proxy]",a="[object Undefined]",u="object"==("undefined"===typeof t?"undefined":e(t))&&t&&t.Object===Object&&t,o="object"==("undefined"===typeof self?"undefined":e(self))&&self&&self.Object===Object&&self,r=u||o||Function("return this")(),b=Object.prototype,h=b.hasOwnProperty,Z=b.toString,m=r.Symbol,y=m?m.toStringTag:void 0;function p(t){return null==t?void 0===t?a:s:y&&y in Object(t)?W(t):G(t)}function W(t){var l=h.call(t,y),e=t[y];try{t[y]=void 0;var i=!0}catch(c){}var n=Z.call(t);return i&&(l?t[y]=e:delete t[y]),n}function G(t){return Z.call(t)}function X(t){if(!Y(t))return!1;var l=p(t);return l==n||l==c||l==i||l==d}function Y(t){var l=e(t);return null!=t&&("object"==l||"function"==l)}l.exports=X}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],431:[function(t,l,e){"use strict";function i(t){return null==t}l.exports=i},{}],432:[function(t,l,e){"use strict";function i(t){return void 0===t}l.exports=i},{}],433:[function(t,l,i){(function(t){"use strict";function e(t){return e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}var i=200,n="__lodash_hash_undefined__",c=1/0,s="[object Function]",d="[object GeneratorFunction]",a=/[\\^$.*+?()[\]{}|]/g,u=/^\[object .+?Constructor\]$/,o="object"==("undefined"===typeof t?"undefined":e(t))&&t&&t.Object===Object&&t,r="object"==("undefined"===typeof self?"undefined":e(self))&&self&&self.Object===Object&&self,b=o||r||Function("return this")();function h(t,l){var e=t?t.length:0;return!!e&&y(t,l,0)>-1}function Z(t,l,e){var i=-1,n=t?t.length:0;while(++i<n)if(e(l,t[i]))return!0;return!1}function m(t,l,e,i){var n=t.length,c=e+(i?1:-1);while(i?c--:++c<n)if(l(t[c],c,t))return c;return-1}function y(t,l,e){if(l!==l)return m(t,p,e);var i=e-1,n=t.length;while(++i<n)if(t[i]===l)return i;return-1}function p(t){return t!==t}function W(t,l){return t.has(l)}function G(t,l){return null==t?void 0:t[l]}function X(t){var l=!1;if(null!=t&&"function"!=typeof t.toString)try{l=!!(t+"")}catch(e){}return l}function Y(t){var l=-1,e=Array(t.size);return t.forEach((function(t){e[++l]=t})),e}var N=Array.prototype,V=Function.prototype,M=Object.prototype,L=b["__core-js_shared__"],I=function(){var t=/[^.]+$/.exec(L&&L.keys&&L.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),w=V.toString,f=M.hasOwnProperty,R=M.toString,T=RegExp("^"+w.call(f).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),z=N.splice,x=dt(b,"Map"),S=dt(b,"Set"),k=dt(Object,"create");function C(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function J(){this.__data__=k?k(null):{}}function g(t){return this.has(t)&&delete this.__data__[t]}function F(t){var l=this.__data__;if(k){var e=l[t];return e===n?void 0:e}return f.call(l,t)?l[t]:void 0}function j(t){var l=this.__data__;return k?void 0!==l[t]:f.call(l,t)}function v(t,l){var e=this.__data__;return e[t]=k&&void 0===l?n:l,this}function D(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function U(){this.__data__=[]}function O(t){var l=this.__data__,e=et(l,t);if(e<0)return!1;var i=l.length-1;return e==i?l.pop():z.call(l,e,1),!0}function K(t){var l=this.__data__,e=et(l,t);return e<0?void 0:l[e][1]}function E(t){return et(this.__data__,t)>-1}function H(t,l){var e=this.__data__,i=et(e,t);return i<0?e.push([t,l]):e[i][1]=l,this}function Q(t){var l=-1,e=t?t.length:0;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function B(){this.__data__={hash:new C,map:new(x||D),string:new C}}function P(t){return st(this,t)["delete"](t)}function A(t){return st(this,t).get(t)}function _(t){return st(this,t).has(t)}function q(t,l){return st(this,t).set(t,l),this}function $(t){var l=-1,e=t?t.length:0;this.__data__=new Q;while(++l<e)this.add(t[l])}function tt(t){return this.__data__.set(t,n),this}function lt(t){return this.__data__.has(t)}function et(t,l){var e=t.length;while(e--)if(bt(t[e][0],l))return e;return-1}function it(t){if(!Zt(t)||ut(t))return!1;var l=ht(t)||X(t)?T:u;return l.test(ot(t))}function nt(t,l,e){var n=-1,c=h,s=t.length,d=!0,a=[],u=a;if(e)d=!1,c=Z;else if(s>=i){var o=l?null:ct(t);if(o)return Y(o);d=!1,c=W,u=new $}else u=l?[]:a;t:while(++n<s){var r=t[n],b=l?l(r):r;if(r=e||0!==r?r:0,d&&b===b){var m=u.length;while(m--)if(u[m]===b)continue t;l&&u.push(b),a.push(r)}else c(u,b,e)||(u!==a&&u.push(b),a.push(r))}return a}C.prototype.clear=J,C.prototype["delete"]=g,C.prototype.get=F,C.prototype.has=j,C.prototype.set=v,D.prototype.clear=U,D.prototype["delete"]=O,D.prototype.get=K,D.prototype.has=E,D.prototype.set=H,Q.prototype.clear=B,Q.prototype["delete"]=P,Q.prototype.get=A,Q.prototype.has=_,Q.prototype.set=q,$.prototype.add=$.prototype.push=tt,$.prototype.has=lt;var ct=S&&1/Y(new S([,-0]))[1]==c?function(t){return new S(t)}:mt;function st(t,l){var e=t.__data__;return at(l)?e["string"==typeof l?"string":"hash"]:e.map}function dt(t,l){var e=G(t,l);return it(e)?e:void 0}function at(t){var l=e(t);return"string"==l||"number"==l||"symbol"==l||"boolean"==l?"__proto__"!==t:null===t}function ut(t){return!!I&&I in t}function ot(t){if(null!=t){try{return w.call(t)}catch(l){}try{return t+""}catch(l){}}return""}function rt(t){return t&&t.length?nt(t):[]}function bt(t,l){return t===l||t!==t&&l!==l}function ht(t){var l=Zt(t)?R.call(t):"";return l==s||l==d}function Zt(t){var l=e(t);return!!t&&("object"==l||"function"==l)}function mt(){}l.exports=rt}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],434:[function(t,l,e){"use strict";var i=t("inherits"),n=t("hash-base"),c=t("safe-buffer").Buffer,s=new Array(16);function d(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function a(t,l){return t<<l|t>>>32-l}function u(t,l,e,i,n,c,s){return a(t+(l&e|~l&i)+n+c|0,s)+l|0}function o(t,l,e,i,n,c,s){return a(t+(l&i|e&~i)+n+c|0,s)+l|0}function r(t,l,e,i,n,c,s){return a(t+(l^e^i)+n+c|0,s)+l|0}function b(t,l,e,i,n,c,s){return a(t+(e^(l|~i))+n+c|0,s)+l|0}i(d,n),d.prototype._update=function(){for(var t=s,l=0;l<16;++l)t[l]=this._block.readInt32LE(4*l);var e=this._a,i=this._b,n=this._c,c=this._d;e=u(e,i,n,c,t[0],3614090360,7),c=u(c,e,i,n,t[1],3905402710,12),n=u(n,c,e,i,t[2],606105819,17),i=u(i,n,c,e,t[3],3250441966,22),e=u(e,i,n,c,t[4],4118548399,7),c=u(c,e,i,n,t[5],1200080426,12),n=u(n,c,e,i,t[6],2821735955,17),i=u(i,n,c,e,t[7],4249261313,22),e=u(e,i,n,c,t[8],1770035416,7),c=u(c,e,i,n,t[9],2336552879,12),n=u(n,c,e,i,t[10],4294925233,17),i=u(i,n,c,e,t[11],2304563134,22),e=u(e,i,n,c,t[12],1804603682,7),c=u(c,e,i,n,t[13],4254626195,12),n=u(n,c,e,i,t[14],2792965006,17),i=u(i,n,c,e,t[15],1236535329,22),e=o(e,i,n,c,t[1],4129170786,5),c=o(c,e,i,n,t[6],3225465664,9),n=o(n,c,e,i,t[11],643717713,14),i=o(i,n,c,e,t[0],3921069994,20),e=o(e,i,n,c,t[5],3593408605,5),c=o(c,e,i,n,t[10],38016083,9),n=o(n,c,e,i,t[15],3634488961,14),i=o(i,n,c,e,t[4],3889429448,20),e=o(e,i,n,c,t[9],568446438,5),c=o(c,e,i,n,t[14],3275163606,9),n=o(n,c,e,i,t[3],4107603335,14),i=o(i,n,c,e,t[8],1163531501,20),e=o(e,i,n,c,t[13],2850285829,5),c=o(c,e,i,n,t[2],4243563512,9),n=o(n,c,e,i,t[7],1735328473,14),i=o(i,n,c,e,t[12],2368359562,20),e=r(e,i,n,c,t[5],4294588738,4),c=r(c,e,i,n,t[8],2272392833,11),n=r(n,c,e,i,t[11],1839030562,16),i=r(i,n,c,e,t[14],4259657740,23),e=r(e,i,n,c,t[1],2763975236,4),c=r(c,e,i,n,t[4],1272893353,11),n=r(n,c,e,i,t[7],4139469664,16),i=r(i,n,c,e,t[10],3200236656,23),e=r(e,i,n,c,t[13],681279174,4),c=r(c,e,i,n,t[0],3936430074,11),n=r(n,c,e,i,t[3],3572445317,16),i=r(i,n,c,e,t[6],76029189,23),e=r(e,i,n,c,t[9],3654602809,4),c=r(c,e,i,n,t[12],3873151461,11),n=r(n,c,e,i,t[15],530742520,16),i=r(i,n,c,e,t[2],3299628645,23),e=b(e,i,n,c,t[0],4096336452,6),c=b(c,e,i,n,t[7],1126891415,10),n=b(n,c,e,i,t[14],2878612391,15),i=b(i,n,c,e,t[5],4237533241,21),e=b(e,i,n,c,t[12],1700485571,6),c=b(c,e,i,n,t[3],2399980690,10),n=b(n,c,e,i,t[10],4293915773,15),i=b(i,n,c,e,t[1],2240044497,21),e=b(e,i,n,c,t[8],1873313359,6),c=b(c,e,i,n,t[15],4264355552,10),n=b(n,c,e,i,t[6],2734768916,15),i=b(i,n,c,e,t[13],1309151649,21),e=b(e,i,n,c,t[4],4149444226,6),c=b(c,e,i,n,t[11],3174756917,10),n=b(n,c,e,i,t[2],718787259,15),i=b(i,n,c,e,t[9],3951481745,21),this._a=this._a+e|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+c|0},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=c.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},l.exports=d},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("brorand");function c(t){this.rand=t||new n.Rand}l.exports=c,c.create=function(t){return new c(t)},c.prototype._randbelow=function(t){var l=t.bitLength(),e=Math.ceil(l/8);do{var n=new i(this.rand.generate(e))}while(n.cmp(t)>=0);return n},c.prototype._randrange=function(t,l){var e=l.sub(t);return t.add(this._randbelow(e))},c.prototype.test=function(t,l,e){var n=t.bitLength(),c=i.mont(t),s=new i(1).toRed(c);l||(l=Math.max(1,n/48|0));for(var d=t.subn(1),a=0;!d.testn(a);a++);for(var u=t.shrn(a),o=d.toRed(c),r=!0;l>0;l--){var b=this._randrange(new i(2),d);e&&e(b);var h=b.toRed(c).redPow(u);if(0!==h.cmp(s)&&0!==h.cmp(o)){for(var Z=1;Z<a;Z++){if(h=h.redSqr(),0===h.cmp(s))return!1;if(0===h.cmp(o))break}if(Z===a)return!1}}return r},c.prototype.getDivisor=function(t,l){var e=t.bitLength(),n=i.mont(t),c=new i(1).toRed(n);l||(l=Math.max(1,e/48|0));for(var s=t.subn(1),d=0;!s.testn(d);d++);for(var a=t.shrn(d),u=s.toRed(n);l>0;l--){var o=this._randrange(new i(2),s),r=t.gcd(o);if(0!==r.cmpn(1))return r;var b=o.toRed(n).redPow(a);if(0!==b.cmp(c)&&0!==b.cmp(u)){for(var h=1;h<d;h++){if(b=b.redSqr(),0===b.cmp(c))return b.fromRed().subn(1).gcd(t);if(0===b.cmp(u))break}if(h===d)return b=b.redSqr(),b.fromRed().subn(1).gcd(t)}}return!1}},{"bn.js":436,brorand:184}],436:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],437:[function(t,l,e){"use strict";function i(t,l){if(!t)throw new Error(l||"Assertion failed")}l.exports=i,i.equal=function(t,l,e){if(t!=l)throw new Error(e||"Assertion failed: "+t+" != "+l)}},{}],438:[function(t,l,e){"use strict";var i=e;function n(t,l){if(Array.isArray(t))return t.slice();if(!t)return[];var e=[];if("string"!==typeof t){for(var i=0;i<t.length;i++)e[i]=0|t[i];return e}if("hex"===l)for(t=t.replace(/[^a-z0-9]+/gi,""),t.length%2!==0&&(t="0"+t),i=0;i<t.length;i+=2)e.push(parseInt(t[i]+t[i+1],16));else for(i=0;i<t.length;i++){var n=t.charCodeAt(i),c=n>>8,s=255&n;c?e.push(c,s):e.push(s)}return e}function c(t){return 1===t.length?"0"+t:t}function s(t){for(var l="",e=0;e<t.length;e++)l+=c(t[e].toString(16));return l}i.toArray=n,i.zero2=c,i.toHex=s,i.encode=function(t,l){return"hex"===l?s(t):t}},{}],439:[function(t,l,e){"use strict";var i=t("./lib/utils/common").assign,n=t("./lib/deflate"),c=t("./lib/inflate"),s=t("./lib/zlib/constants"),d={};i(d,n,c,s),l.exports=d},{"./lib/deflate":440,"./lib/inflate":441,"./lib/utils/common":442,"./lib/zlib/constants":445}],440:[function(t,l,e){"use strict";var i=t("./zlib/deflate"),n=t("./utils/common"),c=t("./utils/strings"),s=t("./zlib/messages"),d=t("./zlib/zstream"),a=Object.prototype.toString,u=0,o=4,r=0,b=1,h=2,Z=-1,m=0,y=8;function p(t){if(!(this instanceof p))return new p(t);this.options=n.assign({level:Z,method:y,chunkSize:16384,windowBits:15,memLevel:8,strategy:m,to:""},t||{});var l=this.options;l.raw&&l.windowBits>0?l.windowBits=-l.windowBits:l.gzip&&l.windowBits>0&&l.windowBits<16&&(l.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var e=i.deflateInit2(this.strm,l.level,l.method,l.windowBits,l.memLevel,l.strategy);if(e!==r)throw new Error(s[e]);if(l.header&&i.deflateSetHeader(this.strm,l.header),l.dictionary){var u;if(u="string"===typeof l.dictionary?c.string2buf(l.dictionary):"[object ArrayBuffer]"===a.call(l.dictionary)?new Uint8Array(l.dictionary):l.dictionary,e=i.deflateSetDictionary(this.strm,u),e!==r)throw new Error(s[e]);this._dict_set=!0}}function W(t,l){var e=new p(l);if(e.push(t,!0),e.err)throw e.msg||s[e.err];return e.result}function G(t,l){return l=l||{},l.raw=!0,W(t,l)}function X(t,l){return l=l||{},l.gzip=!0,W(t,l)}p.prototype.push=function(t,l){var e,s,d=this.strm,Z=this.options.chunkSize;if(this.ended)return!1;s=l===~~l?l:!0===l?o:u,"string"===typeof t?d.input=c.string2buf(t):"[object ArrayBuffer]"===a.call(t)?d.input=new Uint8Array(t):d.input=t,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new n.Buf8(Z),d.next_out=0,d.avail_out=Z),e=i.deflate(d,s),e!==b&&e!==r)return this.onEnd(e),this.ended=!0,!1;0!==d.avail_out&&(0!==d.avail_in||s!==o&&s!==h)||("string"===this.options.to?this.onData(c.buf2binstring(n.shrinkBuf(d.output,d.next_out))):this.onData(n.shrinkBuf(d.output,d.next_out)))}while((d.avail_in>0||0===d.avail_out)&&e!==b);return s===o?(e=i.deflateEnd(this.strm),this.onEnd(e),this.ended=!0,e===r):s!==h||(this.onEnd(r),d.avail_out=0,!0)},p.prototype.onData=function(t){this.chunks.push(t)},p.prototype.onEnd=function(t){t===r&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=p,e.deflate=W,e.deflateRaw=G,e.gzip=X},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(t,l,e){"use strict";var i=t("./zlib/inflate"),n=t("./utils/common"),c=t("./utils/strings"),s=t("./zlib/constants"),d=t("./zlib/messages"),a=t("./zlib/zstream"),u=t("./zlib/gzheader"),o=Object.prototype.toString;function r(t){if(!(this instanceof r))return new r(t);this.options=n.assign({chunkSize:16384,windowBits:0,to:""},t||{});var l=this.options;l.raw&&l.windowBits>=0&&l.windowBits<16&&(l.windowBits=-l.windowBits,0===l.windowBits&&(l.windowBits=-15)),!(l.windowBits>=0&&l.windowBits<16)||t&&t.windowBits||(l.windowBits+=32),l.windowBits>15&&l.windowBits<48&&0===(15&l.windowBits)&&(l.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var e=i.inflateInit2(this.strm,l.windowBits);if(e!==s.Z_OK)throw new Error(d[e]);if(this.header=new u,i.inflateGetHeader(this.strm,this.header),l.dictionary&&("string"===typeof l.dictionary?l.dictionary=c.string2buf(l.dictionary):"[object ArrayBuffer]"===o.call(l.dictionary)&&(l.dictionary=new Uint8Array(l.dictionary)),l.raw&&(e=i.inflateSetDictionary(this.strm,l.dictionary),e!==s.Z_OK)))throw new Error(d[e])}function b(t,l){var e=new r(l);if(e.push(t,!0),e.err)throw e.msg||d[e.err];return e.result}function h(t,l){return l=l||{},l.raw=!0,b(t,l)}r.prototype.push=function(t,l){var e,d,a,u,r,b=this.strm,h=this.options.chunkSize,Z=this.options.dictionary,m=!1;if(this.ended)return!1;d=l===~~l?l:!0===l?s.Z_FINISH:s.Z_NO_FLUSH,"string"===typeof t?b.input=c.binstring2buf(t):"[object ArrayBuffer]"===o.call(t)?b.input=new Uint8Array(t):b.input=t,b.next_in=0,b.avail_in=b.input.length;do{if(0===b.avail_out&&(b.output=new n.Buf8(h),b.next_out=0,b.avail_out=h),e=i.inflate(b,s.Z_NO_FLUSH),e===s.Z_NEED_DICT&&Z&&(e=i.inflateSetDictionary(this.strm,Z)),e===s.Z_BUF_ERROR&&!0===m&&(e=s.Z_OK,m=!1),e!==s.Z_STREAM_END&&e!==s.Z_OK)return this.onEnd(e),this.ended=!0,!1;b.next_out&&(0!==b.avail_out&&e!==s.Z_STREAM_END&&(0!==b.avail_in||d!==s.Z_FINISH&&d!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(a=c.utf8border(b.output,b.next_out),u=b.next_out-a,r=c.buf2string(b.output,a),b.next_out=u,b.avail_out=h-u,u&&n.arraySet(b.output,b.output,a,u,0),this.onData(r)):this.onData(n.shrinkBuf(b.output,b.next_out)))),0===b.avail_in&&0===b.avail_out&&(m=!0)}while((b.avail_in>0||0===b.avail_out)&&e!==s.Z_STREAM_END);return e===s.Z_STREAM_END&&(d=s.Z_FINISH),d===s.Z_FINISH?(e=i.inflateEnd(this.strm),this.onEnd(e),this.ended=!0,e===s.Z_OK):d!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),b.avail_out=0,!0)},r.prototype.onData=function(t){this.chunks.push(t)},r.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=r,e.inflate=b,e.inflateRaw=h,e.ungzip=b},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;function c(t,l){return Object.prototype.hasOwnProperty.call(t,l)}e.assign=function(t){var l=Array.prototype.slice.call(arguments,1);while(l.length){var e=l.shift();if(e){if("object"!==i(e))throw new TypeError(e+"must be non-object");for(var n in e)c(e,n)&&(t[n]=e[n])}}return t},e.shrinkBuf=function(t,l){return t.length===l?t:t.subarray?t.subarray(0,l):(t.length=l,t)};var s={arraySet:function(t,l,e,i,n){if(l.subarray&&t.subarray)t.set(l.subarray(e,e+i),n);else for(var c=0;c<i;c++)t[n+c]=l[e+c]},flattenChunks:function(t){var l,e,i,n,c,s;for(i=0,l=0,e=t.length;l<e;l++)i+=t[l].length;for(s=new Uint8Array(i),n=0,l=0,e=t.length;l<e;l++)c=t[l],s.set(c,n),n+=c.length;return s}},d={arraySet:function(t,l,e,i,n){for(var c=0;c<i;c++)t[n+c]=l[e+c]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,s)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,d))},e.setTyped(n)},{}],443:[function(t,l,e){"use strict";var i=t("./common"),n=!0,c=!0;try{String.fromCharCode.apply(null,[0])}catch(u){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(u){c=!1}for(var s=new i.Buf8(256),d=0;d<256;d++)s[d]=d>=252?6:d>=248?5:d>=240?4:d>=224?3:d>=192?2:1;function a(t,l){if(l<65534&&(t.subarray&&c||!t.subarray&&n))return String.fromCharCode.apply(null,i.shrinkBuf(t,l));for(var e="",s=0;s<l;s++)e+=String.fromCharCode(t[s]);return e}s[254]=s[254]=1,e.string2buf=function(t){var l,e,n,c,s,d=t.length,a=0;for(c=0;c<d;c++)e=t.charCodeAt(c),55296===(64512&e)&&c+1<d&&(n=t.charCodeAt(c+1),56320===(64512&n)&&(e=65536+(e-55296<<10)+(n-56320),c++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(l=new i.Buf8(a),s=0,c=0;s<a;c++)e=t.charCodeAt(c),55296===(64512&e)&&c+1<d&&(n=t.charCodeAt(c+1),56320===(64512&n)&&(e=65536+(e-55296<<10)+(n-56320),c++)),e<128?l[s++]=e:e<2048?(l[s++]=192|e>>>6,l[s++]=128|63&e):e<65536?(l[s++]=224|e>>>12,l[s++]=128|e>>>6&63,l[s++]=128|63&e):(l[s++]=240|e>>>18,l[s++]=128|e>>>12&63,l[s++]=128|e>>>6&63,l[s++]=128|63&e);return l},e.buf2binstring=function(t){return a(t,t.length)},e.binstring2buf=function(t){for(var l=new i.Buf8(t.length),e=0,n=l.length;e<n;e++)l[e]=t.charCodeAt(e);return l},e.buf2string=function(t,l){var e,i,n,c,d=l||t.length,u=new Array(2*d);for(i=0,e=0;e<d;)if(n=t[e++],n<128)u[i++]=n;else if(c=s[n],c>4)u[i++]=65533,e+=c-1;else{n&=2===c?31:3===c?15:7;while(c>1&&e<d)n=n<<6|63&t[e++],c--;c>1?u[i++]=65533:n<65536?u[i++]=n:(n-=65536,u[i++]=55296|n>>10&1023,u[i++]=56320|1023&n)}return a(u,i)},e.utf8border=function(t,l){var e;l=l||t.length,l>t.length&&(l=t.length),e=l-1;while(e>=0&&128===(192&t[e]))e--;return e<0||0===e?l:e+s[t[e]]>l?e:l}},{"./common":442}],444:[function(t,l,e){"use strict";function i(t,l,e,i){var n=65535&t|0,c=t>>>16&65535|0,s=0;while(0!==e){s=e>2e3?2e3:e,e-=s;do{n=n+l[i++]|0,c=c+n|0}while(--s);n%=65521,c%=65521}return n|c<<16|0}l.exports=i},{}],445:[function(t,l,e){"use strict";l.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(t,l,e){"use strict";function i(){for(var t,l=[],e=0;e<256;e++){t=e;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;l[e]=t}return l}var n=i();function c(t,l,e,i){var c=n,s=i+e;t^=-1;for(var d=i;d<s;d++)t=t>>>8^c[255&(t^l[d])];return-1^t}l.exports=c},{}],447:[function(t,l,e){"use strict";var i,n=t("../utils/common"),c=t("./trees"),s=t("./adler32"),d=t("./crc32"),a=t("./messages"),u=0,o=1,r=3,b=4,h=5,Z=0,m=1,y=-2,p=-3,W=-5,G=-1,X=1,Y=2,N=3,V=4,M=0,L=2,I=8,w=9,f=15,R=8,T=29,z=256,x=z+1+T,S=30,k=19,C=2*x+1,J=15,g=3,F=258,j=F+g+1,v=32,D=42,U=69,O=73,K=91,E=103,H=113,Q=666,B=1,P=2,A=3,_=4,q=3;function $(t,l){return t.msg=a[l],l}function tt(t){return(t<<1)-(t>4?9:0)}function lt(t){var l=t.length;while(--l>=0)t[l]=0}function et(t){var l=t.state,e=l.pending;e>t.avail_out&&(e=t.avail_out),0!==e&&(n.arraySet(t.output,l.pending_buf,l.pending_out,e,t.next_out),t.next_out+=e,l.pending_out+=e,t.total_out+=e,t.avail_out-=e,l.pending-=e,0===l.pending&&(l.pending_out=0))}function it(t,l){c._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,l),t.block_start=t.strstart,et(t.strm)}function nt(t,l){t.pending_buf[t.pending++]=l}function ct(t,l){t.pending_buf[t.pending++]=l>>>8&255,t.pending_buf[t.pending++]=255&l}function st(t,l,e,i){var c=t.avail_in;return c>i&&(c=i),0===c?0:(t.avail_in-=c,n.arraySet(l,t.input,t.next_in,c,e),1===t.state.wrap?t.adler=s(t.adler,l,c,e):2===t.state.wrap&&(t.adler=d(t.adler,l,c,e)),t.next_in+=c,t.total_in+=c,c)}function dt(t,l){var e,i,n=t.max_chain_length,c=t.strstart,s=t.prev_length,d=t.nice_match,a=t.strstart>t.w_size-j?t.strstart-(t.w_size-j):0,u=t.window,o=t.w_mask,r=t.prev,b=t.strstart+F,h=u[c+s-1],Z=u[c+s];t.prev_length>=t.good_match&&(n>>=2),d>t.lookahead&&(d=t.lookahead);do{if(e=l,u[e+s]===Z&&u[e+s-1]===h&&u[e]===u[c]&&u[++e]===u[c+1]){c+=2,e++;do{}while(u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&u[++c]===u[++e]&&c<b);if(i=F-(b-c),c=b-F,i>s){if(t.match_start=l,s=i,i>=d)break;h=u[c+s-1],Z=u[c+s]}}}while((l=r[l&o])>a&&0!==--n);return s<=t.lookahead?s:t.lookahead}function at(t){var l,e,i,c,s,d=t.w_size;do{if(c=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-j)){n.arraySet(t.window,t.window,d,d,0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=t.hash_size,l=e;do{i=t.head[--l],t.head[l]=i>=d?i-d:0}while(--e);e=d,l=e;do{i=t.prev[--l],t.prev[l]=i>=d?i-d:0}while(--e);c+=d}if(0===t.strm.avail_in)break;if(e=st(t.strm,t.window,t.strstart+t.lookahead,c),t.lookahead+=e,t.lookahead+t.insert>=g){s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;while(t.insert)if(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+g-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,t.lookahead+t.insert<g)break}}while(t.lookahead<j&&0!==t.strm.avail_in)}function ut(t,l){var e=65535;for(e>t.pending_buf_size-5&&(e=t.pending_buf_size-5);;){if(t.lookahead<=1){if(at(t),0===t.lookahead&&l===u)return B;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+e;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,it(t,!1),0===t.strm.avail_out))return B;if(t.strstart-t.block_start>=t.w_size-j&&(it(t,!1),0===t.strm.avail_out))return B}return t.insert=0,l===b?(it(t,!0),0===t.strm.avail_out?A:_):(t.strstart>t.block_start&&(it(t,!1),t.strm.avail_out),B)}function ot(t,l){for(var e,i;;){if(t.lookahead<j){if(at(t),t.lookahead<j&&l===u)return B;if(0===t.lookahead)break}if(e=0,t.lookahead>=g&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+g-1])&t.hash_mask,e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==e&&t.strstart-e<=t.w_size-j&&(t.match_length=dt(t,e)),t.match_length>=g)if(i=c._tr_tally(t,t.strstart-t.match_start,t.match_length-g),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=g){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+g-1])&t.hash_mask,e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=c._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(it(t,!1),0===t.strm.avail_out))return B}return t.insert=t.strstart<g-1?t.strstart:g-1,l===b?(it(t,!0),0===t.strm.avail_out?A:_):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?B:P}function rt(t,l){for(var e,i,n;;){if(t.lookahead<j){if(at(t),t.lookahead<j&&l===u)return B;if(0===t.lookahead)break}if(e=0,t.lookahead>=g&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+g-1])&t.hash_mask,e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=g-1,0!==e&&t.prev_length<t.max_lazy_match&&t.strstart-e<=t.w_size-j&&(t.match_length=dt(t,e),t.match_length<=5&&(t.strategy===X||t.match_length===g&&t.strstart-t.match_start>4096)&&(t.match_length=g-1)),t.prev_length>=g&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-g,i=c._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-g),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+g-1])&t.hash_mask,e=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=g-1,t.strstart++,i&&(it(t,!1),0===t.strm.avail_out))return B}else if(t.match_available){if(i=c._tr_tally(t,0,t.window[t.strstart-1]),i&&it(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return B}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=c._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<g-1?t.strstart:g-1,l===b?(it(t,!0),0===t.strm.avail_out?A:_):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?B:P}function bt(t,l){for(var e,i,n,s,d=t.window;;){if(t.lookahead<=F){if(at(t),t.lookahead<=F&&l===u)return B;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=g&&t.strstart>0&&(n=t.strstart-1,i=d[n],i===d[++n]&&i===d[++n]&&i===d[++n])){s=t.strstart+F;do{}while(i===d[++n]&&i===d[++n]&&i===d[++n]&&i===d[++n]&&i===d[++n]&&i===d[++n]&&i===d[++n]&&i===d[++n]&&n<s);t.match_length=F-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=g?(e=c._tr_tally(t,1,t.match_length-g),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(e=c._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),e&&(it(t,!1),0===t.strm.avail_out))return B}return t.insert=0,l===b?(it(t,!0),0===t.strm.avail_out?A:_):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?B:P}function ht(t,l){for(var e;;){if(0===t.lookahead&&(at(t),0===t.lookahead)){if(l===u)return B;break}if(t.match_length=0,e=c._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,e&&(it(t,!1),0===t.strm.avail_out))return B}return t.insert=0,l===b?(it(t,!0),0===t.strm.avail_out?A:_):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?B:P}function Zt(t,l,e,i,n){this.good_length=t,this.max_lazy=l,this.nice_length=e,this.max_chain=i,this.func=n}function mt(t){t.window_size=2*t.w_size,lt(t.head),t.max_lazy_match=i[t.level].max_lazy,t.good_match=i[t.level].good_length,t.nice_match=i[t.level].nice_length,t.max_chain_length=i[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=g-1,t.match_available=0,t.ins_h=0}function yt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=I,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(2*C),this.dyn_dtree=new n.Buf16(2*(2*S+1)),this.bl_tree=new n.Buf16(2*(2*k+1)),lt(this.dyn_ltree),lt(this.dyn_dtree),lt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(J+1),this.heap=new n.Buf16(2*x+1),lt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(2*x+1),lt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function pt(t){var l;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=L,l=t.state,l.pending=0,l.pending_out=0,l.wrap<0&&(l.wrap=-l.wrap),l.status=l.wrap?D:H,t.adler=2===l.wrap?0:1,l.last_flush=u,c._tr_init(l),Z):$(t,y)}function Wt(t){var l=pt(t);return l===Z&&mt(t.state),l}function Gt(t,l){return t&&t.state?2!==t.state.wrap?y:(t.state.gzhead=l,Z):y}function Xt(t,l,e,i,c,s){if(!t)return y;var d=1;if(l===G&&(l=6),i<0?(d=0,i=-i):i>15&&(d=2,i-=16),c<1||c>w||e!==I||i<8||i>15||l<0||l>9||s<0||s>V)return $(t,y);8===i&&(i=9);var a=new yt;return t.state=a,a.strm=t,a.wrap=d,a.gzhead=null,a.w_bits=i,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=c+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+g-1)/g),a.window=new n.Buf8(2*a.w_size),a.head=new n.Buf16(a.hash_size),a.prev=new n.Buf16(a.w_size),a.lit_bufsize=1<<c+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new n.Buf8(a.pending_buf_size),a.d_buf=1*a.lit_bufsize,a.l_buf=3*a.lit_bufsize,a.level=l,a.strategy=s,a.method=e,Wt(t)}function Yt(t,l){return Xt(t,l,I,f,R,M)}function Nt(t,l){var e,n,s,a;if(!t||!t.state||l>h||l<0)return t?$(t,y):y;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===Q&&l!==b)return $(t,0===t.avail_out?W:y);if(n.strm=t,e=n.last_flush,n.last_flush=l,n.status===D)if(2===n.wrap)t.adler=0,nt(n,31),nt(n,139),nt(n,8),n.gzhead?(nt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),nt(n,255&n.gzhead.time),nt(n,n.gzhead.time>>8&255),nt(n,n.gzhead.time>>16&255),nt(n,n.gzhead.time>>24&255),nt(n,9===n.level?2:n.strategy>=Y||n.level<2?4:0),nt(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(nt(n,255&n.gzhead.extra.length),nt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=d(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=U):(nt(n,0),nt(n,0),nt(n,0),nt(n,0),nt(n,0),nt(n,9===n.level?2:n.strategy>=Y||n.level<2?4:0),nt(n,q),n.status=H);else{var p=I+(n.w_bits-8<<4)<<8,G=-1;G=n.strategy>=Y||n.level<2?0:n.level<6?1:6===n.level?2:3,p|=G<<6,0!==n.strstart&&(p|=v),p+=31-p%31,n.status=H,ct(n,p),0!==n.strstart&&(ct(n,t.adler>>>16),ct(n,65535&t.adler)),t.adler=1}if(n.status===U)if(n.gzhead.extra){s=n.pending;while(n.gzindex<(65535&n.gzhead.extra.length)){if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),et(t),s=n.pending,n.pending===n.pending_buf_size))break;nt(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++}n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=O)}else n.status=O;if(n.status===O)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),et(t),s=n.pending,n.pending===n.pending_buf_size)){a=1;break}a=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,nt(n,a)}while(0!==a);n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),0===a&&(n.gzindex=0,n.status=K)}else n.status=K;if(n.status===K)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),et(t),s=n.pending,n.pending===n.pending_buf_size)){a=1;break}a=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,nt(n,a)}while(0!==a);n.gzhead.hcrc&&n.pending>s&&(t.adler=d(t.adler,n.pending_buf,n.pending-s,s)),0===a&&(n.status=E)}else n.status=E;if(n.status===E&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&et(t),n.pending+2<=n.pending_buf_size&&(nt(n,255&t.adler),nt(n,t.adler>>8&255),t.adler=0,n.status=H)):n.status=H),0!==n.pending){if(et(t),0===t.avail_out)return n.last_flush=-1,Z}else if(0===t.avail_in&&tt(l)<=tt(e)&&l!==b)return $(t,W);if(n.status===Q&&0!==t.avail_in)return $(t,W);if(0!==t.avail_in||0!==n.lookahead||l!==u&&n.status!==Q){var X=n.strategy===Y?ht(n,l):n.strategy===N?bt(n,l):i[n.level].func(n,l);if(X!==A&&X!==_||(n.status=Q),X===B||X===A)return 0===t.avail_out&&(n.last_flush=-1),Z;if(X===P&&(l===o?c._tr_align(n):l!==h&&(c._tr_stored_block(n,0,0,!1),l===r&&(lt(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),et(t),0===t.avail_out))return n.last_flush=-1,Z}return l!==b?Z:n.wrap<=0?m:(2===n.wrap?(nt(n,255&t.adler),nt(n,t.adler>>8&255),nt(n,t.adler>>16&255),nt(n,t.adler>>24&255),nt(n,255&t.total_in),nt(n,t.total_in>>8&255),nt(n,t.total_in>>16&255),nt(n,t.total_in>>24&255)):(ct(n,t.adler>>>16),ct(n,65535&t.adler)),et(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?Z:m)}function Vt(t){var l;return t&&t.state?(l=t.state.status,l!==D&&l!==U&&l!==O&&l!==K&&l!==E&&l!==H&&l!==Q?$(t,y):(t.state=null,l===H?$(t,p):Z)):y}function Mt(t,l){var e,i,c,d,a,u,o,r,b=l.length;if(!t||!t.state)return y;if(e=t.state,d=e.wrap,2===d||1===d&&e.status!==D||e.lookahead)return y;1===d&&(t.adler=s(t.adler,l,b,0)),e.wrap=0,b>=e.w_size&&(0===d&&(lt(e.head),e.strstart=0,e.block_start=0,e.insert=0),r=new n.Buf8(e.w_size),n.arraySet(r,l,b-e.w_size,e.w_size,0),l=r,b=e.w_size),a=t.avail_in,u=t.next_in,o=t.input,t.avail_in=b,t.next_in=0,t.input=l,at(e);while(e.lookahead>=g){i=e.strstart,c=e.lookahead-(g-1);do{e.ins_h=(e.ins_h<<e.hash_shift^e.window[i+g-1])&e.hash_mask,e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++}while(--c);e.strstart=i,e.lookahead=g-1,at(e)}return e.strstart+=e.lookahead,e.block_start=e.strstart,e.insert=e.lookahead,e.lookahead=0,e.match_length=e.prev_length=g-1,e.match_available=0,t.next_in=u,t.input=o,t.avail_in=a,e.wrap=d,Z}i=[new Zt(0,0,0,0,ut),new Zt(4,4,8,4,ot),new Zt(4,5,16,8,ot),new Zt(4,6,32,32,ot),new Zt(4,4,16,16,rt),new Zt(8,16,32,32,rt),new Zt(8,16,128,128,rt),new Zt(8,32,128,256,rt),new Zt(32,128,258,1024,rt),new Zt(32,258,258,4096,rt)],e.deflateInit=Yt,e.deflateInit2=Xt,e.deflateReset=Wt,e.deflateResetKeep=pt,e.deflateSetHeader=Gt,e.deflate=Nt,e.deflateEnd=Vt,e.deflateSetDictionary=Mt,e.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":442,"./adler32":444,"./crc32":446,"./messages":452,"./trees":453}],448:[function(t,l,e){"use strict";function i(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}l.exports=i},{}],449:[function(t,l,e){"use strict";var i=30,n=12;l.exports=function(t,l){var e,c,s,d,a,u,o,r,b,h,Z,m,y,p,W,G,X,Y,N,V,M,L,I,w,f;e=t.state,c=t.next_in,w=t.input,s=c+(t.avail_in-5),d=t.next_out,f=t.output,a=d-(l-t.avail_out),u=d+(t.avail_out-257),o=e.dmax,r=e.wsize,b=e.whave,h=e.wnext,Z=e.window,m=e.hold,y=e.bits,p=e.lencode,W=e.distcode,G=(1<<e.lenbits)-1,X=(1<<e.distbits)-1;t:do{y<15&&(m+=w[c++]<<y,y+=8,m+=w[c++]<<y,y+=8),Y=p[m&G];l:for(;;){if(N=Y>>>24,m>>>=N,y-=N,N=Y>>>16&255,0===N)f[d++]=65535&Y;else{if(!(16&N)){if(0===(64&N)){Y=p[(65535&Y)+(m&(1<<N)-1)];continue l}if(32&N){e.mode=n;break t}t.msg="invalid literal/length code",e.mode=i;break t}V=65535&Y,N&=15,N&&(y<N&&(m+=w[c++]<<y,y+=8),V+=m&(1<<N)-1,m>>>=N,y-=N),y<15&&(m+=w[c++]<<y,y+=8,m+=w[c++]<<y,y+=8),Y=W[m&X];e:for(;;){if(N=Y>>>24,m>>>=N,y-=N,N=Y>>>16&255,!(16&N)){if(0===(64&N)){Y=W[(65535&Y)+(m&(1<<N)-1)];continue e}t.msg="invalid distance code",e.mode=i;break t}if(M=65535&Y,N&=15,y<N&&(m+=w[c++]<<y,y+=8,y<N&&(m+=w[c++]<<y,y+=8)),M+=m&(1<<N)-1,M>o){t.msg="invalid distance too far back",e.mode=i;break t}if(m>>>=N,y-=N,N=d-a,M>N){if(N=M-N,N>b&&e.sane){t.msg="invalid distance too far back",e.mode=i;break t}if(L=0,I=Z,0===h){if(L+=r-N,N<V){V-=N;do{f[d++]=Z[L++]}while(--N);L=d-M,I=f}}else if(h<N){if(L+=r+h-N,N-=h,N<V){V-=N;do{f[d++]=Z[L++]}while(--N);if(L=0,h<V){N=h,V-=N;do{f[d++]=Z[L++]}while(--N);L=d-M,I=f}}}else if(L+=h-N,N<V){V-=N;do{f[d++]=Z[L++]}while(--N);L=d-M,I=f}while(V>2)f[d++]=I[L++],f[d++]=I[L++],f[d++]=I[L++],V-=3;V&&(f[d++]=I[L++],V>1&&(f[d++]=I[L++]))}else{L=d-M;do{f[d++]=f[L++],f[d++]=f[L++],f[d++]=f[L++],V-=3}while(V>2);V&&(f[d++]=f[L++],V>1&&(f[d++]=f[L++]))}break}}break}}while(c<s&&d<u);V=y>>3,c-=V,y-=V<<3,m&=(1<<y)-1,t.next_in=c,t.next_out=d,t.avail_in=c<s?s-c+5:5-(c-s),t.avail_out=d<u?u-d+257:257-(d-u),e.hold=m,e.bits=y}},{}],450:[function(t,l,e){"use strict";var i=t("../utils/common"),n=t("./adler32"),c=t("./crc32"),s=t("./inffast"),d=t("./inftrees"),a=0,u=1,o=2,r=4,b=5,h=6,Z=0,m=1,y=2,p=-2,W=-3,G=-4,X=-5,Y=8,N=1,V=2,M=3,L=4,I=5,w=6,f=7,R=8,T=9,z=10,x=11,S=12,k=13,C=14,J=15,g=16,F=17,j=18,v=19,D=20,U=21,O=22,K=23,E=24,H=25,Q=26,B=27,P=28,A=29,_=30,q=31,$=32,tt=852,lt=592,et=15,it=et;function nt(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function ct(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function st(t){var l;return t&&t.state?(l=t.state,t.total_in=t.total_out=l.total=0,t.msg="",l.wrap&&(t.adler=1&l.wrap),l.mode=N,l.last=0,l.havedict=0,l.dmax=32768,l.head=null,l.hold=0,l.bits=0,l.lencode=l.lendyn=new i.Buf32(tt),l.distcode=l.distdyn=new i.Buf32(lt),l.sane=1,l.back=-1,Z):p}function dt(t){var l;return t&&t.state?(l=t.state,l.wsize=0,l.whave=0,l.wnext=0,st(t)):p}function at(t,l){var e,i;return t&&t.state?(i=t.state,l<0?(e=0,l=-l):(e=1+(l>>4),l<48&&(l&=15)),l&&(l<8||l>15)?p:(null!==i.window&&i.wbits!==l&&(i.window=null),i.wrap=e,i.wbits=l,dt(t))):p}function ut(t,l){var e,i;return t?(i=new ct,t.state=i,i.window=null,e=at(t,l),e!==Z&&(t.state=null),e):p}function ot(t){return ut(t,it)}var rt,bt,ht=!0;function Zt(t){if(ht){var l;rt=new i.Buf32(512),bt=new i.Buf32(32),l=0;while(l<144)t.lens[l++]=8;while(l<256)t.lens[l++]=9;while(l<280)t.lens[l++]=7;while(l<288)t.lens[l++]=8;d(u,t.lens,0,288,rt,0,t.work,{bits:9}),l=0;while(l<32)t.lens[l++]=5;d(o,t.lens,0,32,bt,0,t.work,{bits:5}),ht=!1}t.lencode=rt,t.lenbits=9,t.distcode=bt,t.distbits=5}function mt(t,l,e,n){var c,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new i.Buf8(s.wsize)),n>=s.wsize?(i.arraySet(s.window,l,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(c=s.wsize-s.wnext,c>n&&(c=n),i.arraySet(s.window,l,e-n,c,s.wnext),n-=c,n?(i.arraySet(s.window,l,e-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=c,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=c))),0}function yt(t,l){var e,tt,lt,et,it,ct,st,dt,at,ut,ot,rt,bt,ht,yt,pt,Wt,Gt,Xt,Yt,Nt,Vt,Mt,Lt,It=0,wt=new i.Buf8(4),ft=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return p;e=t.state,e.mode===S&&(e.mode=k),it=t.next_out,lt=t.output,st=t.avail_out,et=t.next_in,tt=t.input,ct=t.avail_in,dt=e.hold,at=e.bits,ut=ct,ot=st,Vt=Z;t:for(;;)switch(e.mode){case N:if(0===e.wrap){e.mode=k;break}while(at<16){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(2&e.wrap&&35615===dt){e.check=0,wt[0]=255&dt,wt[1]=dt>>>8&255,e.check=c(e.check,wt,2,0),dt=0,at=0,e.mode=V;break}if(e.flags=0,e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&dt)<<8)+(dt>>8))%31){t.msg="incorrect header check",e.mode=_;break}if((15&dt)!==Y){t.msg="unknown compression method",e.mode=_;break}if(dt>>>=4,at-=4,Nt=8+(15&dt),0===e.wbits)e.wbits=Nt;else if(Nt>e.wbits){t.msg="invalid window size",e.mode=_;break}e.dmax=1<<Nt,t.adler=e.check=1,e.mode=512&dt?z:S,dt=0,at=0;break;case V:while(at<16){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(e.flags=dt,(255&e.flags)!==Y){t.msg="unknown compression method",e.mode=_;break}if(57344&e.flags){t.msg="unknown header flags set",e.mode=_;break}e.head&&(e.head.text=dt>>8&1),512&e.flags&&(wt[0]=255&dt,wt[1]=dt>>>8&255,e.check=c(e.check,wt,2,0)),dt=0,at=0,e.mode=M;case M:while(at<32){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.head&&(e.head.time=dt),512&e.flags&&(wt[0]=255&dt,wt[1]=dt>>>8&255,wt[2]=dt>>>16&255,wt[3]=dt>>>24&255,e.check=c(e.check,wt,4,0)),dt=0,at=0,e.mode=L;case L:while(at<16){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.head&&(e.head.xflags=255&dt,e.head.os=dt>>8),512&e.flags&&(wt[0]=255&dt,wt[1]=dt>>>8&255,e.check=c(e.check,wt,2,0)),dt=0,at=0,e.mode=I;case I:if(1024&e.flags){while(at<16){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.length=dt,e.head&&(e.head.extra_len=dt),512&e.flags&&(wt[0]=255&dt,wt[1]=dt>>>8&255,e.check=c(e.check,wt,2,0)),dt=0,at=0}else e.head&&(e.head.extra=null);e.mode=w;case w:if(1024&e.flags&&(rt=e.length,rt>ct&&(rt=ct),rt&&(e.head&&(Nt=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),i.arraySet(e.head.extra,tt,et,rt,Nt)),512&e.flags&&(e.check=c(e.check,tt,rt,et)),ct-=rt,et+=rt,e.length-=rt),e.length))break t;e.length=0,e.mode=f;case f:if(2048&e.flags){if(0===ct)break t;rt=0;do{Nt=tt[et+rt++],e.head&&Nt&&e.length<65536&&(e.head.name+=String.fromCharCode(Nt))}while(Nt&&rt<ct);if(512&e.flags&&(e.check=c(e.check,tt,rt,et)),ct-=rt,et+=rt,Nt)break t}else e.head&&(e.head.name=null);e.length=0,e.mode=R;case R:if(4096&e.flags){if(0===ct)break t;rt=0;do{Nt=tt[et+rt++],e.head&&Nt&&e.length<65536&&(e.head.comment+=String.fromCharCode(Nt))}while(Nt&&rt<ct);if(512&e.flags&&(e.check=c(e.check,tt,rt,et)),ct-=rt,et+=rt,Nt)break t}else e.head&&(e.head.comment=null);e.mode=T;case T:if(512&e.flags){while(at<16){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(dt!==(65535&e.check)){t.msg="header crc mismatch",e.mode=_;break}dt=0,at=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),t.adler=e.check=0,e.mode=S;break;case z:while(at<32){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}t.adler=e.check=nt(dt),dt=0,at=0,e.mode=x;case x:if(0===e.havedict)return t.next_out=it,t.avail_out=st,t.next_in=et,t.avail_in=ct,e.hold=dt,e.bits=at,y;t.adler=e.check=1,e.mode=S;case S:if(l===b||l===h)break t;case k:if(e.last){dt>>>=7&at,at-=7&at,e.mode=B;break}while(at<3){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}switch(e.last=1&dt,dt>>>=1,at-=1,3&dt){case 0:e.mode=C;break;case 1:if(Zt(e),e.mode=D,l===h){dt>>>=2,at-=2;break t}break;case 2:e.mode=F;break;case 3:t.msg="invalid block type",e.mode=_}dt>>>=2,at-=2;break;case C:dt>>>=7&at,at-=7&at;while(at<32){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if((65535&dt)!==(dt>>>16^65535)){t.msg="invalid stored block lengths",e.mode=_;break}if(e.length=65535&dt,dt=0,at=0,e.mode=J,l===h)break t;case J:e.mode=g;case g:if(rt=e.length,rt){if(rt>ct&&(rt=ct),rt>st&&(rt=st),0===rt)break t;i.arraySet(lt,tt,et,rt,it),ct-=rt,et+=rt,st-=rt,it+=rt,e.length-=rt;break}e.mode=S;break;case F:while(at<14){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(e.nlen=257+(31&dt),dt>>>=5,at-=5,e.ndist=1+(31&dt),dt>>>=5,at-=5,e.ncode=4+(15&dt),dt>>>=4,at-=4,e.nlen>286||e.ndist>30){t.msg="too many length or distance symbols",e.mode=_;break}e.have=0,e.mode=j;case j:while(e.have<e.ncode){while(at<3){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.lens[ft[e.have++]]=7&dt,dt>>>=3,at-=3}while(e.have<19)e.lens[ft[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,Mt={bits:e.lenbits},Vt=d(a,e.lens,0,19,e.lencode,0,e.work,Mt),e.lenbits=Mt.bits,Vt){t.msg="invalid code lengths set",e.mode=_;break}e.have=0,e.mode=v;case v:while(e.have<e.nlen+e.ndist){for(;;){if(It=e.lencode[dt&(1<<e.lenbits)-1],yt=It>>>24,pt=It>>>16&255,Wt=65535&It,yt<=at)break;if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(Wt<16)dt>>>=yt,at-=yt,e.lens[e.have++]=Wt;else{if(16===Wt){Lt=yt+2;while(at<Lt){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(dt>>>=yt,at-=yt,0===e.have){t.msg="invalid bit length repeat",e.mode=_;break}Nt=e.lens[e.have-1],rt=3+(3&dt),dt>>>=2,at-=2}else if(17===Wt){Lt=yt+3;while(at<Lt){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}dt>>>=yt,at-=yt,Nt=0,rt=3+(7&dt),dt>>>=3,at-=3}else{Lt=yt+7;while(at<Lt){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}dt>>>=yt,at-=yt,Nt=0,rt=11+(127&dt),dt>>>=7,at-=7}if(e.have+rt>e.nlen+e.ndist){t.msg="invalid bit length repeat",e.mode=_;break}while(rt--)e.lens[e.have++]=Nt}}if(e.mode===_)break;if(0===e.lens[256]){t.msg="invalid code -- missing end-of-block",e.mode=_;break}if(e.lenbits=9,Mt={bits:e.lenbits},Vt=d(u,e.lens,0,e.nlen,e.lencode,0,e.work,Mt),e.lenbits=Mt.bits,Vt){t.msg="invalid literal/lengths set",e.mode=_;break}if(e.distbits=6,e.distcode=e.distdyn,Mt={bits:e.distbits},Vt=d(o,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,Mt),e.distbits=Mt.bits,Vt){t.msg="invalid distances set",e.mode=_;break}if(e.mode=D,l===h)break t;case D:e.mode=U;case U:if(ct>=6&&st>=258){t.next_out=it,t.avail_out=st,t.next_in=et,t.avail_in=ct,e.hold=dt,e.bits=at,s(t,ot),it=t.next_out,lt=t.output,st=t.avail_out,et=t.next_in,tt=t.input,ct=t.avail_in,dt=e.hold,at=e.bits,e.mode===S&&(e.back=-1);break}for(e.back=0;;){if(It=e.lencode[dt&(1<<e.lenbits)-1],yt=It>>>24,pt=It>>>16&255,Wt=65535&It,yt<=at)break;if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(pt&&0===(240&pt)){for(Gt=yt,Xt=pt,Yt=Wt;;){if(It=e.lencode[Yt+((dt&(1<<Gt+Xt)-1)>>Gt)],yt=It>>>24,pt=It>>>16&255,Wt=65535&It,Gt+yt<=at)break;if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}dt>>>=Gt,at-=Gt,e.back+=Gt}if(dt>>>=yt,at-=yt,e.back+=yt,e.length=Wt,0===pt){e.mode=Q;break}if(32&pt){e.back=-1,e.mode=S;break}if(64&pt){t.msg="invalid literal/length code",e.mode=_;break}e.extra=15&pt,e.mode=O;case O:if(e.extra){Lt=e.extra;while(at<Lt){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.length+=dt&(1<<e.extra)-1,dt>>>=e.extra,at-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=K;case K:for(;;){if(It=e.distcode[dt&(1<<e.distbits)-1],yt=It>>>24,pt=It>>>16&255,Wt=65535&It,yt<=at)break;if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(0===(240&pt)){for(Gt=yt,Xt=pt,Yt=Wt;;){if(It=e.distcode[Yt+((dt&(1<<Gt+Xt)-1)>>Gt)],yt=It>>>24,pt=It>>>16&255,Wt=65535&It,Gt+yt<=at)break;if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}dt>>>=Gt,at-=Gt,e.back+=Gt}if(dt>>>=yt,at-=yt,e.back+=yt,64&pt){t.msg="invalid distance code",e.mode=_;break}e.offset=Wt,e.extra=15&pt,e.mode=E;case E:if(e.extra){Lt=e.extra;while(at<Lt){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}e.offset+=dt&(1<<e.extra)-1,dt>>>=e.extra,at-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){t.msg="invalid distance too far back",e.mode=_;break}e.mode=H;case H:if(0===st)break t;if(rt=ot-st,e.offset>rt){if(rt=e.offset-rt,rt>e.whave&&e.sane){t.msg="invalid distance too far back",e.mode=_;break}rt>e.wnext?(rt-=e.wnext,bt=e.wsize-rt):bt=e.wnext-rt,rt>e.length&&(rt=e.length),ht=e.window}else ht=lt,bt=it-e.offset,rt=e.length;rt>st&&(rt=st),st-=rt,e.length-=rt;do{lt[it++]=ht[bt++]}while(--rt);0===e.length&&(e.mode=U);break;case Q:if(0===st)break t;lt[it++]=e.length,st--,e.mode=U;break;case B:if(e.wrap){while(at<32){if(0===ct)break t;ct--,dt|=tt[et++]<<at,at+=8}if(ot-=st,t.total_out+=ot,e.total+=ot,ot&&(t.adler=e.check=e.flags?c(e.check,lt,ot,it-ot):n(e.check,lt,ot,it-ot)),ot=st,(e.flags?dt:nt(dt))!==e.check){t.msg="incorrect data check",e.mode=_;break}dt=0,at=0}e.mode=P;case P:if(e.wrap&&e.flags){while(at<32){if(0===ct)break t;ct--,dt+=tt[et++]<<at,at+=8}if(dt!==(4294967295&e.total)){t.msg="incorrect length check",e.mode=_;break}dt=0,at=0}e.mode=A;case A:Vt=m;break t;case _:Vt=W;break t;case q:return G;case $:default:return p}return t.next_out=it,t.avail_out=st,t.next_in=et,t.avail_in=ct,e.hold=dt,e.bits=at,(e.wsize||ot!==t.avail_out&&e.mode<_&&(e.mode<B||l!==r))&&mt(t,t.output,t.next_out,ot-t.avail_out)?(e.mode=q,G):(ut-=t.avail_in,ot-=t.avail_out,t.total_in+=ut,t.total_out+=ot,e.total+=ot,e.wrap&&ot&&(t.adler=e.check=e.flags?c(e.check,lt,ot,t.next_out-ot):n(e.check,lt,ot,t.next_out-ot)),t.data_type=e.bits+(e.last?64:0)+(e.mode===S?128:0)+(e.mode===D||e.mode===J?256:0),(0===ut&&0===ot||l===r)&&Vt===Z&&(Vt=X),Vt)}function pt(t){if(!t||!t.state)return p;var l=t.state;return l.window&&(l.window=null),t.state=null,Z}function Wt(t,l){var e;return t&&t.state?(e=t.state,0===(2&e.wrap)?p:(e.head=l,l.done=!1,Z)):p}function Gt(t,l){var e,i,c,s=l.length;return t&&t.state?(e=t.state,0!==e.wrap&&e.mode!==x?p:e.mode===x&&(i=1,i=n(i,l,s,0),i!==e.check)?W:(c=mt(t,l,s,s),c?(e.mode=q,G):(e.havedict=1,Z))):p}e.inflateReset=dt,e.inflateReset2=at,e.inflateResetKeep=st,e.inflateInit=ot,e.inflateInit2=ut,e.inflate=yt,e.inflateEnd=pt,e.inflateGetHeader=Wt,e.inflateSetDictionary=Gt,e.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":442,"./adler32":444,"./crc32":446,"./inffast":449,"./inftrees":451}],451:[function(t,l,e){"use strict";var i=t("../utils/common"),n=15,c=852,s=592,d=0,a=1,u=2,o=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],b=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],h=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];l.exports=function(t,l,e,Z,m,y,p,W){var G,X,Y,N,V,M,L,I,w,f=W.bits,R=0,T=0,z=0,x=0,S=0,k=0,C=0,J=0,g=0,F=0,j=null,v=0,D=new i.Buf16(n+1),U=new i.Buf16(n+1),O=null,K=0;for(R=0;R<=n;R++)D[R]=0;for(T=0;T<Z;T++)D[l[e+T]]++;for(S=f,x=n;x>=1;x--)if(0!==D[x])break;if(S>x&&(S=x),0===x)return m[y++]=20971520,m[y++]=20971520,W.bits=1,0;for(z=1;z<x;z++)if(0!==D[z])break;for(S<z&&(S=z),J=1,R=1;R<=n;R++)if(J<<=1,J-=D[R],J<0)return-1;if(J>0&&(t===d||1!==x))return-1;for(U[1]=0,R=1;R<n;R++)U[R+1]=U[R]+D[R];for(T=0;T<Z;T++)0!==l[e+T]&&(p[U[l[e+T]]++]=T);if(t===d?(j=O=p,M=19):t===a?(j=o,v-=257,O=r,K-=257,M=256):(j=b,O=h,M=-1),F=0,T=0,R=z,V=y,k=S,C=0,Y=-1,g=1<<S,N=g-1,t===a&&g>c||t===u&&g>s)return 1;for(;;){L=R-C,p[T]<M?(I=0,w=p[T]):p[T]>M?(I=O[K+p[T]],w=j[v+p[T]]):(I=96,w=0),G=1<<R-C,X=1<<k,z=X;do{X-=G,m[V+(F>>C)+X]=L<<24|I<<16|w|0}while(0!==X);G=1<<R-1;while(F&G)G>>=1;if(0!==G?(F&=G-1,F+=G):F=0,T++,0===--D[R]){if(R===x)break;R=l[e+p[T]]}if(R>S&&(F&N)!==Y){0===C&&(C=S),V+=z,k=R-C,J=1<<k;while(k+C<x){if(J-=D[k+C],J<=0)break;k++,J<<=1}if(g+=1<<k,t===a&&g>c||t===u&&g>s)return 1;Y=F&N,m[Y]=S<<24|k<<16|V-y|0}}return 0!==F&&(m[V+F]=R-C<<24|64<<16|0),W.bits=S,0}},{"../utils/common":442}],452:[function(t,l,e){"use strict";l.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(t,l,e){"use strict";var i=t("../utils/common"),n=4,c=0,s=1,d=2;function a(t){var l=t.length;while(--l>=0)t[l]=0}var u=0,o=1,r=2,b=3,h=258,Z=29,m=256,y=m+1+Z,p=30,W=19,G=2*y+1,X=15,Y=16,N=7,V=256,M=16,L=17,I=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],f=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],R=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=512,x=new Array(2*(y+2));a(x);var S=new Array(2*p);a(S);var k=new Array(z);a(k);var C=new Array(h-b+1);a(C);var J=new Array(Z);a(J);var g,F,j,v=new Array(p);function D(t,l,e,i,n){this.static_tree=t,this.extra_bits=l,this.extra_base=e,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function U(t,l){this.dyn_tree=t,this.max_code=0,this.stat_desc=l}function O(t){return t<256?k[t]:k[256+(t>>>7)]}function K(t,l){t.pending_buf[t.pending++]=255&l,t.pending_buf[t.pending++]=l>>>8&255}function E(t,l,e){t.bi_valid>Y-e?(t.bi_buf|=l<<t.bi_valid&65535,K(t,t.bi_buf),t.bi_buf=l>>Y-t.bi_valid,t.bi_valid+=e-Y):(t.bi_buf|=l<<t.bi_valid&65535,t.bi_valid+=e)}function H(t,l,e){E(t,e[2*l],e[2*l+1])}function Q(t,l){var e=0;do{e|=1&t,t>>>=1,e<<=1}while(--l>0);return e>>>1}function B(t){16===t.bi_valid?(K(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function P(t,l){var e,i,n,c,s,d,a=l.dyn_tree,u=l.max_code,o=l.stat_desc.static_tree,r=l.stat_desc.has_stree,b=l.stat_desc.extra_bits,h=l.stat_desc.extra_base,Z=l.stat_desc.max_length,m=0;for(c=0;c<=X;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,e=t.heap_max+1;e<G;e++)i=t.heap[e],c=a[2*a[2*i+1]+1]+1,c>Z&&(c=Z,m++),a[2*i+1]=c,i>u||(t.bl_count[c]++,s=0,i>=h&&(s=b[i-h]),d=a[2*i],t.opt_len+=d*(c+s),r&&(t.static_len+=d*(o[2*i+1]+s)));if(0!==m){do{c=Z-1;while(0===t.bl_count[c])c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[Z]--,m-=2}while(m>0);for(c=Z;0!==c;c--){i=t.bl_count[c];while(0!==i)n=t.heap[--e],n>u||(a[2*n+1]!==c&&(t.opt_len+=(c-a[2*n+1])*a[2*n],a[2*n+1]=c),i--)}}}function A(t,l,e){var i,n,c=new Array(X+1),s=0;for(i=1;i<=X;i++)c[i]=s=s+e[i-1]<<1;for(n=0;n<=l;n++){var d=t[2*n+1];0!==d&&(t[2*n]=Q(c[d]++,d))}}function _(){var t,l,e,i,n,c=new Array(X+1);for(e=0,i=0;i<Z-1;i++)for(J[i]=e,t=0;t<1<<w[i];t++)C[e++]=i;for(C[e-1]=i,n=0,i=0;i<16;i++)for(v[i]=n,t=0;t<1<<f[i];t++)k[n++]=i;for(n>>=7;i<p;i++)for(v[i]=n<<7,t=0;t<1<<f[i]-7;t++)k[256+n++]=i;for(l=0;l<=X;l++)c[l]=0;t=0;while(t<=143)x[2*t+1]=8,t++,c[8]++;while(t<=255)x[2*t+1]=9,t++,c[9]++;while(t<=279)x[2*t+1]=7,t++,c[7]++;while(t<=287)x[2*t+1]=8,t++,c[8]++;for(A(x,y+1,c),t=0;t<p;t++)S[2*t+1]=5,S[2*t]=Q(t,5);g=new D(x,w,m+1,y,X),F=new D(S,f,0,p,X),j=new D(new Array(0),R,0,W,N)}function q(t){var l;for(l=0;l<y;l++)t.dyn_ltree[2*l]=0;for(l=0;l<p;l++)t.dyn_dtree[2*l]=0;for(l=0;l<W;l++)t.bl_tree[2*l]=0;t.dyn_ltree[2*V]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function $(t){t.bi_valid>8?K(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function tt(t,l,e,n){$(t),n&&(K(t,e),K(t,~e)),i.arraySet(t.pending_buf,t.window,l,e,t.pending),t.pending+=e}function lt(t,l,e,i){var n=2*l,c=2*e;return t[n]<t[c]||t[n]===t[c]&&i[l]<=i[e]}function et(t,l,e){var i=t.heap[e],n=e<<1;while(n<=t.heap_len){if(n<t.heap_len&&lt(l,t.heap[n+1],t.heap[n],t.depth)&&n++,lt(l,i,t.heap[n],t.depth))break;t.heap[e]=t.heap[n],e=n,n<<=1}t.heap[e]=i}function it(t,l,e){var i,n,c,s,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],n=t.pending_buf[t.l_buf+d],d++,0===i?H(t,n,l):(c=C[n],H(t,c+m+1,l),s=w[c],0!==s&&(n-=J[c],E(t,n,s)),i--,c=O(i),H(t,c,e),s=f[c],0!==s&&(i-=v[c],E(t,i,s)))}while(d<t.last_lit);H(t,V,l)}function nt(t,l){var e,i,n,c=l.dyn_tree,s=l.stat_desc.static_tree,d=l.stat_desc.has_stree,a=l.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=G,e=0;e<a;e++)0!==c[2*e]?(t.heap[++t.heap_len]=u=e,t.depth[e]=0):c[2*e+1]=0;while(t.heap_len<2)n=t.heap[++t.heap_len]=u<2?++u:0,c[2*n]=1,t.depth[n]=0,t.opt_len--,d&&(t.static_len-=s[2*n+1]);for(l.max_code=u,e=t.heap_len>>1;e>=1;e--)et(t,c,e);n=a;do{e=t.heap[1],t.heap[1]=t.heap[t.heap_len--],et(t,c,1),i=t.heap[1],t.heap[--t.heap_max]=e,t.heap[--t.heap_max]=i,c[2*n]=c[2*e]+c[2*i],t.depth[n]=(t.depth[e]>=t.depth[i]?t.depth[e]:t.depth[i])+1,c[2*e+1]=c[2*i+1]=n,t.heap[1]=n++,et(t,c,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],P(t,l),A(c,u,t.bl_count)}function ct(t,l,e){var i,n,c=-1,s=l[1],d=0,a=7,u=4;for(0===s&&(a=138,u=3),l[2*(e+1)+1]=65535,i=0;i<=e;i++)n=s,s=l[2*(i+1)+1],++d<a&&n===s||(d<u?t.bl_tree[2*n]+=d:0!==n?(n!==c&&t.bl_tree[2*n]++,t.bl_tree[2*M]++):d<=10?t.bl_tree[2*L]++:t.bl_tree[2*I]++,d=0,c=n,0===s?(a=138,u=3):n===s?(a=6,u=3):(a=7,u=4))}function st(t,l,e){var i,n,c=-1,s=l[1],d=0,a=7,u=4;for(0===s&&(a=138,u=3),i=0;i<=e;i++)if(n=s,s=l[2*(i+1)+1],!(++d<a&&n===s)){if(d<u)do{H(t,n,t.bl_tree)}while(0!==--d);else 0!==n?(n!==c&&(H(t,n,t.bl_tree),d--),H(t,M,t.bl_tree),E(t,d-3,2)):d<=10?(H(t,L,t.bl_tree),E(t,d-3,3)):(H(t,I,t.bl_tree),E(t,d-11,7));d=0,c=n,0===s?(a=138,u=3):n===s?(a=6,u=3):(a=7,u=4)}}function dt(t){var l;for(ct(t,t.dyn_ltree,t.l_desc.max_code),ct(t,t.dyn_dtree,t.d_desc.max_code),nt(t,t.bl_desc),l=W-1;l>=3;l--)if(0!==t.bl_tree[2*T[l]+1])break;return t.opt_len+=3*(l+1)+5+5+4,l}function at(t,l,e,i){var n;for(E(t,l-257,5),E(t,e-1,5),E(t,i-4,4),n=0;n<i;n++)E(t,t.bl_tree[2*T[n]+1],3);st(t,t.dyn_ltree,l-1),st(t,t.dyn_dtree,e-1)}function ut(t){var l,e=4093624447;for(l=0;l<=31;l++,e>>>=1)if(1&e&&0!==t.dyn_ltree[2*l])return c;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return s;for(l=32;l<m;l++)if(0!==t.dyn_ltree[2*l])return s;return c}a(v);var ot=!1;function rt(t){ot||(_(),ot=!0),t.l_desc=new U(t.dyn_ltree,g),t.d_desc=new U(t.dyn_dtree,F),t.bl_desc=new U(t.bl_tree,j),t.bi_buf=0,t.bi_valid=0,q(t)}function bt(t,l,e,i){E(t,(u<<1)+(i?1:0),3),tt(t,l,e,!0)}function ht(t){E(t,o<<1,3),H(t,V,x),B(t)}function Zt(t,l,e,i){var c,s,a=0;t.level>0?(t.strm.data_type===d&&(t.strm.data_type=ut(t)),nt(t,t.l_desc),nt(t,t.d_desc),a=dt(t),c=t.opt_len+3+7>>>3,s=t.static_len+3+7>>>3,s<=c&&(c=s)):c=s=e+5,e+4<=c&&-1!==l?bt(t,l,e,i):t.strategy===n||s===c?(E(t,(o<<1)+(i?1:0),3),it(t,x,S)):(E(t,(r<<1)+(i?1:0),3),at(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),it(t,t.dyn_ltree,t.dyn_dtree)),q(t),i&&$(t)}function mt(t,l,e){return t.pending_buf[t.d_buf+2*t.last_lit]=l>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&l,t.pending_buf[t.l_buf+t.last_lit]=255&e,t.last_lit++,0===l?t.dyn_ltree[2*e]++:(t.matches++,l--,t.dyn_ltree[2*(C[e]+m+1)]++,t.dyn_dtree[2*O(l)]++),t.last_lit===t.lit_bufsize-1}e._tr_init=rt,e._tr_stored_block=bt,e._tr_flush_block=Zt,e._tr_tally=mt,e._tr_align=ht},{"../utils/common":442}],454:[function(t,l,e){"use strict";function i(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}l.exports=i},{}],455:[function(t,l,e){l.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(t,l,e){"use strict";var i=t("asn1.js");e.certificate=t("./certificate");var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var c=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=c;var s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(d),this.key("subjectPublicKey").bitstr())}));e.PublicKey=s;var d=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),a=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(d),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=a;var u=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var o=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=o,e.DSAparam=i.define("DSAparam",(function(){this.int()}));var r=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(b),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=r;var b=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},{"./certificate":457,"asn1.js":167}],457:[function(t,l,e){"use strict";var i=t("asn1.js"),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),c=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),d=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),a=i.define("RelativeDistinguishedName",(function(){this.setof(c)})),u=i.define("RDNSequence",(function(){this.seqof(a)})),o=i.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),r=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),b=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),h=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(o),this.key("validity").use(r),this.key("subject").use(o),this.key("subjectPublicKeyInfo").use(d),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(b).optional())})),Z=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(h),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));l.exports=Z},{"asn1.js":167}],458:[function(t,l,e){"use strict";var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,c=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=t("evp_bytestokey"),d=t("browserify-aes"),a=t("safe-buffer").Buffer;l.exports=function(t,l){var e,u=t.toString(),o=u.match(i);if(o){var r="aes"+o[1],b=a.from(o[2],"hex"),h=a.from(o[3].replace(/[\r\n]/g,""),"base64"),Z=s(l,b.slice(0,8),parseInt(o[1],10)).key,m=[],y=d.createDecipheriv(r,Z,b);m.push(y.update(h)),m.push(y.final()),e=a.concat(m)}else{var p=u.match(c);e=a.from(p[2].replace(/[\r\n]/g,""),"base64")}var W=u.match(n)[1];return{tag:W,data:e}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=t("./asn1"),c=t("./aesid.json"),s=t("./fixProc"),d=t("browserify-aes"),a=t("pbkdf2"),u=t("safe-buffer").Buffer;function o(t){var l;"object"!==i(t)||u.isBuffer(t)||(l=t.passphrase,t=t.key),"string"===typeof t&&(t=u.from(t));var e,c,d=s(t,l),a=d.tag,o=d.data;switch(a){case"CERTIFICATE":c=n.certificate.decode(o,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=n.PublicKey.decode(o,"der")),e=c.algorithm.algorithm.join("."),e){case"1.2.840.113549.1.1.1":return n.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=n.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+e)}case"ENCRYPTED PRIVATE KEY":o=n.EncryptedPrivateKey.decode(o,"der"),o=r(o,l);case"PRIVATE KEY":switch(c=n.PrivateKey.decode(o,"der"),e=c.algorithm.algorithm.join("."),e){case"1.2.840.113549.1.1.1":return n.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:n.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=n.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+e)}case"RSA PUBLIC KEY":return n.RSAPublicKey.decode(o,"der");case"RSA PRIVATE KEY":return n.RSAPrivateKey.decode(o,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:n.DSAPrivateKey.decode(o,"der")};case"EC PRIVATE KEY":return o=n.ECPrivateKey.decode(o,"der"),{curve:o.parameters.value,privateKey:o.privateKey};default:throw new Error("unknown key type "+a)}}function r(t,l){var e=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),n=c[t.algorithm.decrypt.cipher.algo.join(".")],s=t.algorithm.decrypt.cipher.iv,o=t.subjectPrivateKey,r=parseInt(n.split("-")[1],10)/8,b=a.pbkdf2Sync(l,e,i,r,"sha1"),h=d.createDecipheriv(n,b,s),Z=[];return Z.push(h.update(o)),Z.push(h.final()),u.concat(Z)}l.exports=o,o.signature=n.signature},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(t,l,e){"use strict";e.pbkdf2=t("./lib/async"),e.pbkdf2Sync=t("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(t,l,i){(function(e,i){"use strict";var n,c=t("safe-buffer").Buffer,s=t("./precondition"),d=t("./default-encoding"),a=t("./sync"),u=t("./to-buffer"),o=i.crypto&&i.crypto.subtle,r={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},b=[];function h(t){if(i.process&&!i.process.browser)return Promise.resolve(!1);if(!o||!o.importKey||!o.deriveBits)return Promise.resolve(!1);if(void 0!==b[t])return b[t];n=n||c.alloc(8);var l=Z(n,n,10,128,t).then((function(){return!0})).catch((function(){return!1}));return b[t]=l,l}function Z(t,l,e,i,n){return o.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return o.deriveBits({name:"PBKDF2",salt:l,iterations:e,hash:{name:n}},t,i<<3)})).then((function(t){return c.from(t)}))}function m(t,l){t.then((function(t){e.nextTick((function(){l(null,t)}))}),(function(t){e.nextTick((function(){l(t)}))}))}l.exports=function(t,l,n,c,o,b){"function"===typeof o&&(b=o,o=void 0),o=o||"sha1";var y=r[o.toLowerCase()];if(!y||"function"!==typeof i.Promise)return e.nextTick((function(){var e;try{e=a(t,l,n,c,o)}catch(i){return b(i)}b(null,e)}));if(s(n,c),t=u(t,d,"Password"),l=u(l,d,"Salt"),"function"!==typeof b)throw new Error("No callback provided to pbkdf2");m(h(y).then((function(e){return e?Z(t,l,n,c,y):a(t,l,n,c,o)})),b)}}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(t,l,e){(function(t){"use strict";var e;if(t.browser)e="utf-8";else if(t.version){var i=parseInt(t.version.split(".")[0].slice(1),10);e=i>=6?"utf-8":"binary"}else e="utf-8";l.exports=e}).call(this,t("_process"))},{_process:467}],463:[function(t,l,e){"use strict";var i=Math.pow(2,30)-1;l.exports=function(t,l){if("number"!==typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!==typeof l)throw new TypeError("Key length not a number");if(l<0||l>i||l!==l)throw new TypeError("Bad key length")}},{}],464:[function(t,l,e){"use strict";var i=t("create-hash/md5"),n=t("ripemd160"),c=t("sha.js"),s=t("safe-buffer").Buffer,d=t("./precondition"),a=t("./default-encoding"),u=t("./to-buffer"),o=s.alloc(128),r={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function b(t,l,e){var i=h(t),n="sha512"===t||"sha384"===t?128:64;l.length>n?l=i(l):l.length<n&&(l=s.concat([l,o],n));for(var c=s.allocUnsafe(n+r[t]),d=s.allocUnsafe(n+r[t]),a=0;a<n;a++)c[a]=54^l[a],d[a]=92^l[a];var u=s.allocUnsafe(n+e+4);c.copy(u,0,0,n),this.ipad1=u,this.ipad2=c,this.opad=d,this.alg=t,this.blocksize=n,this.hash=i,this.size=r[t]}function h(t){function l(l){return c(t).update(l).digest()}function e(t){return(new n).update(t).digest()}return"rmd160"===t||"ripemd160"===t?e:"md5"===t?i:l}function Z(t,l,e,i,n){d(e,i),t=u(t,a,"Password"),l=u(l,a,"Salt"),n=n||"sha1";var c=new b(n,t,l.length),o=s.allocUnsafe(i),h=s.allocUnsafe(l.length+4);l.copy(h,0,0,l.length);for(var Z=0,m=r[n],y=Math.ceil(i/m),p=1;p<=y;p++){h.writeUInt32BE(p,l.length);for(var W=c.run(h,c.ipad1),G=W,X=1;X<e;X++){G=c.run(G,c.ipad2);for(var Y=0;Y<m;Y++)W[Y]^=G[Y]}W.copy(o,Z),Z+=m}return o}b.prototype.run=function(t,l){t.copy(l,this.blocksize);var e=this.hash(l);return e.copy(this.opad,this.blocksize),this.hash(this.opad)},l.exports=Z},{"./default-encoding":462,"./precondition":463,"./to-buffer":465,"create-hash/md5":332,ripemd160:493,"safe-buffer":494,"sha.js":499}],465:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer;l.exports=function(t,l,e){if(i.isBuffer(t))return t;if("string"===typeof t)return i.from(t,l);if(ArrayBuffer.isView(t))return i.from(t.buffer);throw new TypeError(e+" must be a string, a Buffer, a typed array or a DataView")}},{"safe-buffer":494}],466:[function(t,l,e){(function(t){"use strict";function e(l,e,i,n){if("function"!==typeof l)throw new TypeError('"callback" argument must be a function');var c,s,d=arguments.length;switch(d){case 0:case 1:return t.nextTick(l);case 2:return t.nextTick((function(){l.call(null,e)}));case 3:return t.nextTick((function(){l.call(null,e,i)}));case 4:return t.nextTick((function(){l.call(null,e,i,n)}));default:c=new Array(d-1),s=0;while(s<c.length)c[s++]=arguments[s];return t.nextTick((function(){l.apply(null,c)}))}}"undefined"===typeof t||!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?l.exports={nextTick:e}:l.exports=t}).call(this,t("_process"))},{_process:467}],467:[function(t,l,e){"use strict";var i,n,c=l.exports={};function s(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function a(t){if(i===setTimeout)return setTimeout(t,0);if((i===s||!i)&&setTimeout)return i=setTimeout,setTimeout(t,0);try{return i(t,0)}catch(l){try{return i.call(null,t,0)}catch(l){return i.call(this,t,0)}}}function u(t){if(n===clearTimeout)return clearTimeout(t);if((n===d||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{return n(t)}catch(l){try{return n.call(null,t)}catch(l){return n.call(this,t)}}}(function(){try{i="function"===typeof setTimeout?setTimeout:s}catch(t){i=s}try{n="function"===typeof clearTimeout?clearTimeout:d}catch(t){n=d}})();var o,r=[],b=!1,h=-1;function Z(){b&&o&&(b=!1,o.length?r=o.concat(r):h=-1,r.length&&m())}function m(){if(!b){var t=a(Z);b=!0;var l=r.length;while(l){o=r,r=[];while(++h<l)o&&o[h].run();h=-1,l=r.length}o=null,b=!1,u(t)}}function y(t,l){this.fun=t,this.array=l}function p(){}c.nextTick=function(t){var l=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)l[e-1]=arguments[e];r.push(new y(t,l)),1!==r.length||b||a(m)},y.prototype.run=function(){this.fun.apply(null,this.array)},c.title="browser",c.browser=!0,c.env={},c.argv=[],c.version="",c.versions={},c.on=p,c.addListener=p,c.once=p,c.off=p,c.removeListener=p,c.removeAllListeners=p,c.emit=p,c.prependListener=p,c.prependOnceListener=p,c.listeners=function(t){return[]},c.binding=function(t){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(t){throw new Error("process.chdir is not supported")},c.umask=function(){return 0}},{}],468:[function(t,l,e){"use strict";e.publicEncrypt=t("./publicEncrypt"),e.privateDecrypt=t("./privateDecrypt"),e.privateEncrypt=function(t,l){return e.publicEncrypt(t,l,!0)},e.publicDecrypt=function(t,l){return e.privateDecrypt(t,l,!0)}},{"./privateDecrypt":471,"./publicEncrypt":472}],469:[function(t,l,e){"use strict";var i=t("create-hash"),n=t("safe-buffer").Buffer;function c(t){var l=n.allocUnsafe(4);return l.writeUInt32BE(t,0),l}l.exports=function(t,l){var e,s=n.alloc(0),d=0;while(s.length<l)e=c(d++),s=n.concat([s,i("sha1").update(t).update(e).digest()]);return s.slice(0,l)}},{"create-hash":331,"safe-buffer":494}],470:[function(t,l,e){arguments[4][181][0].apply(e,arguments)},{buffer:185,dup:181}],471:[function(t,l,e){"use strict";var i=t("parse-asn1"),n=t("./mgf"),c=t("./xor"),s=t("bn.js"),d=t("browserify-rsa"),a=t("create-hash"),u=t("./withPublic"),o=t("safe-buffer").Buffer;function r(t,l){var e=t.modulus.byteLength(),i=a("sha1").update(o.alloc(0)).digest(),s=i.length;if(0!==l[0])throw new Error("decryption error");var d=l.slice(1,s+1),u=l.slice(s+1),r=c(d,n(u,s)),b=c(u,n(r,e-s-1));if(h(i,b.slice(0,s)))throw new Error("decryption error");var Z=s;while(0===b[Z])Z++;if(1!==b[Z++])throw new Error("decryption error");return b.slice(Z)}function b(t,l,e){var i=l.slice(0,2),n=2,c=0;while(0!==l[n++])if(n>=l.length){c++;break}var s=l.slice(2,n-1);if(("0002"!==i.toString("hex")&&!e||"0001"!==i.toString("hex")&&e)&&c++,s.length<8&&c++,c)throw new Error("decryption error");return l.slice(n)}function h(t,l){t=o.from(t),l=o.from(l);var e=0,i=t.length;t.length!==l.length&&(e++,i=Math.min(t.length,l.length));var n=-1;while(++n<i)e+=t[n]^l[n];return e}l.exports=function(t,l,e){var n;n=t.padding?t.padding:e?1:4;var c,a=i(t),h=a.modulus.byteLength();if(l.length>h||new s(l).cmp(a.modulus)>=0)throw new Error("decryption error");c=e?u(new s(l),a):d(l,a);var Z=o.alloc(h-c.length);if(c=o.concat([Z,c],h),4===n)return r(a,c);if(1===n)return b(a,c,e);if(3===n)return c;throw new Error("unknown padding")}},{"./mgf":469,"./withPublic":473,"./xor":474,"bn.js":470,"browserify-rsa":206,"create-hash":331,"parse-asn1":459,"safe-buffer":494}],472:[function(t,l,e){"use strict";var i=t("parse-asn1"),n=t("randombytes"),c=t("create-hash"),s=t("./mgf"),d=t("./xor"),a=t("bn.js"),u=t("./withPublic"),o=t("browserify-rsa"),r=t("safe-buffer").Buffer;function b(t,l){var e=t.modulus.byteLength(),i=l.length,u=c("sha1").update(r.alloc(0)).digest(),o=u.length,b=2*o;if(i>e-b-2)throw new Error("message too long");var h=r.alloc(e-i-b-2),Z=e-o-1,m=n(o),y=d(r.concat([u,h,r.alloc(1,1),l],Z),s(m,Z)),p=d(m,s(y,o));return new a(r.concat([r.alloc(1),p,y],e))}function h(t,l,e){var i,n=l.length,c=t.modulus.byteLength();if(n>c-11)throw new Error("message too long");return i=e?r.alloc(c-n-3,255):Z(c-n-3),new a(r.concat([r.from([0,e?1:2]),i,r.alloc(1),l],c))}function Z(t){var l,e=r.allocUnsafe(t),i=0,c=n(2*t),s=0;while(i<t)s===c.length&&(c=n(2*t),s=0),l=c[s++],l&&(e[i++]=l);return e}l.exports=function(t,l,e){var n;n=t.padding?t.padding:e?1:4;var c,s=i(t);if(4===n)c=b(s,l);else if(1===n)c=h(s,l,e);else{if(3!==n)throw new Error("unknown padding");if(c=new a(l),c.cmp(s.modulus)>=0)throw new Error("data too long for modulus")}return e?o(c,s):u(c,s)}},{"./mgf":469,"./withPublic":473,"./xor":474,"bn.js":470,"browserify-rsa":206,"create-hash":331,"parse-asn1":459,randombytes:475,"safe-buffer":494}],473:[function(t,l,e){"use strict";var i=t("bn.js"),n=t("safe-buffer").Buffer;function c(t,l){return n.from(t.toRed(i.mont(l.modulus)).redPow(new i(l.publicExponent)).fromRed().toArray())}l.exports=c},{"bn.js":470,"safe-buffer":494}],474:[function(t,l,e){"use strict";l.exports=function(t,l){var e=t.length,i=-1;while(++i<e)t[i]^=l[i];return t}},{}],475:[function(t,l,i){(function(e,i){"use strict";var n=65536,c=4294967295;function s(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}var d=t("safe-buffer").Buffer,a=i.crypto||i.msCrypto;function u(t,l){if(t>c)throw new RangeError("requested too many random bytes");var i=d.allocUnsafe(t);if(t>0)if(t>n)for(var s=0;s<t;s+=n)a.getRandomValues(i.slice(s,s+n));else a.getRandomValues(i);return"function"===typeof l?e.nextTick((function(){l(null,i)})):i}a&&a.getRandomValues?l.exports=u:l.exports=s}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{_process:467,"safe-buffer":494}],476:[function(t,l,i){(function(l,e){"use strict";function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var c=t("safe-buffer"),s=t("randombytes"),d=c.Buffer,a=c.kMaxLength,u=e.crypto||e.msCrypto,o=Math.pow(2,32)-1;function r(t,l){if("number"!==typeof t||t!==t)throw new TypeError("offset must be a number");if(t>o||t<0)throw new TypeError("offset must be a uint32");if(t>a||t>l)throw new RangeError("offset out of range")}function b(t,l,e){if("number"!==typeof t||t!==t)throw new TypeError("size must be a number");if(t>o||t<0)throw new TypeError("size must be a uint32");if(t+l>e||t>a)throw new RangeError("buffer too small")}function h(t,l,i,n){if(!d.isBuffer(t)&&!(t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"===typeof l)n=l,l=0,i=t.length;else if("function"===typeof i)n=i,i=t.length-l;else if("function"!==typeof n)throw new TypeError('"cb" argument must be a function');return r(l,t.length),b(i,l,t.length),Z(t,l,i,n)}function Z(t,e,i,n){if(l.browser){var c=t.buffer,d=new Uint8Array(c,e,i);return u.getRandomValues(d),n?void l.nextTick((function(){n(null,t)})):t}if(!n){var a=s(i);return a.copy(t,e),t}s(i,(function(l,i){if(l)return n(l);i.copy(t,e),n(null,t)}))}function m(t,l,i){if("undefined"===typeof l&&(l=0),!d.isBuffer(t)&&!(t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return r(l,t.length),void 0===i&&(i=t.length-l),b(i,l,t.length),Z(t,l,i)}u&&u.getRandomValues||!l.browser?(i.randomFill=h,i.randomFillSync=m):(i.randomFill=n,i.randomFillSync=n)}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,l){t.prototype=Object.create(l.prototype),t.prototype.constructor=t,t.__proto__=l}var c={};function s(t,l,e){function i(t,e,i){return"string"===typeof l?l:l(t,e,i)}e||(e=Error);var s=function(t){function l(l,e,n){return t.call(this,i(l,e,n))||this}return n(l,t),l}(e);s.prototype.name=e.name,s.prototype.code=t,c[t]=s}function d(t,l){if(Array.isArray(t)){var e=t.length;return t=t.map((function(t){return String(t)})),e>2?"one of ".concat(l," ").concat(t.slice(0,e-1).join(", "),", or ")+t[e-1]:2===e?"one of ".concat(l," ").concat(t[0]," or ").concat(t[1]):"of ".concat(l," ").concat(t[0])}return"of ".concat(l," ").concat(String(t))}function a(t,l,e){return t.substr(!e||e<0?0:+e,l.length)===l}function u(t,l,e){return(void 0===e||e>t.length)&&(e=t.length),t.substring(e-l.length,e)===l}function o(t,l,e){return"number"!==typeof e&&(e=0),!(e+l.length>t.length)&&-1!==t.indexOf(l,e)}s("ERR_INVALID_OPT_VALUE",(function(t,l){return'The value "'+l+'" is invalid for option "'+t+'"'}),TypeError),s("ERR_INVALID_ARG_TYPE",(function(t,l,e){var n,c;if("string"===typeof l&&a(l,"not ")?(n="must not be",l=l.replace(/^not /,"")):n="must be",u(t," argument"))c="The ".concat(t," ").concat(n," ").concat(d(l,"type"));else{var s=o(t,".")?"property":"argument";c='The "'.concat(t,'" ').concat(s," ").concat(n," ").concat(d(l,"type"))}return c+=". Received type ".concat(i(e)),c}),TypeError),s("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),s("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),s("ERR_STREAM_PREMATURE_CLOSE","Premature close"),s("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),s("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),s("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),s("ERR_STREAM_WRITE_AFTER_END","write after end"),s("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),s("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),s("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),l.exports.codes=c},{}],478:[function(t,l,e){(function(e){"use strict";var i=Object.keys||function(t){var l=[];for(var e in t)l.push(e);return l};l.exports=u;var n=t("./_stream_readable"),c=t("./_stream_writable");t("inherits")(u,n);for(var s=i(c.prototype),d=0;d<s.length;d++){var a=s[d];u.prototype[a]||(u.prototype[a]=c.prototype[a])}function u(t){if(!(this instanceof u))return new u(t);n.call(this,t),c.call(this,t),this.allowHalfOpen=!0,t&&(!1===t.readable&&(this.readable=!1),!1===t.writable&&(this.writable=!1),!1===t.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",o)))}function o(){this._writableState.ended||e.nextTick(r,this)}function r(t){t.end()}Object.defineProperty(u.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(u.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(u.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(u.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}})}).call(this,t("_process"))},{"./_stream_readable":480,"./_stream_writable":482,_process:467,inherits:387}],479:[function(t,l,e){"use strict";l.exports=n;var i=t("./_stream_transform");function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}t("inherits")(n,i),n.prototype._transform=function(t,l,e){e(null,t)}},{"./_stream_transform":481,inherits:387}],480:[function(t,l,i){(function(e,i){"use strict";var n;l.exports=R,R.ReadableState=f,t("events").EventEmitter;var c=function(t,l){return t.listeners(l).length},s=t("./internal/streams/stream"),d=t("buffer").Buffer,a=i.Uint8Array||function(){};function u(t){return d.from(t)}function o(t){return d.isBuffer(t)||t instanceof a}var r,b=t("util");r=b&&b.debuglog?b.debuglog("stream"):function(){};var h,Z,m,y=t("./internal/streams/buffer_list"),p=t("./internal/streams/destroy"),W=t("./internal/streams/state"),G=W.getHighWaterMark,X=t("../errors").codes,Y=X.ERR_INVALID_ARG_TYPE,N=X.ERR_STREAM_PUSH_AFTER_EOF,V=X.ERR_METHOD_NOT_IMPLEMENTED,M=X.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;t("inherits")(R,s);var L=p.errorOrDestroy,I=["error","close","destroy","pause","resume"];function w(t,l,e){if("function"===typeof t.prependListener)return t.prependListener(l,e);t._events&&t._events[l]?Array.isArray(t._events[l])?t._events[l].unshift(e):t._events[l]=[e,t._events[l]]:t.on(l,e)}function f(l,e,i){n=n||t("./_stream_duplex"),l=l||{},"boolean"!==typeof i&&(i=e instanceof n),this.objectMode=!!l.objectMode,i&&(this.objectMode=this.objectMode||!!l.readableObjectMode),this.highWaterMark=G(this,l,"readableHighWaterMark",i),this.buffer=new y,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==l.emitClose,this.autoDestroy=!!l.autoDestroy,this.destroyed=!1,this.defaultEncoding=l.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,l.encoding&&(h||(h=t("string_decoder/").StringDecoder),this.decoder=new h(l.encoding),this.encoding=l.encoding)}function R(l){if(n=n||t("./_stream_duplex"),!(this instanceof R))return new R(l);var e=this instanceof n;this._readableState=new f(l,this,e),this.readable=!0,l&&("function"===typeof l.read&&(this._read=l.read),"function"===typeof l.destroy&&(this._destroy=l.destroy)),s.call(this)}function T(t,l,e,i,n){r("readableAddChunk",l);var c,s=t._readableState;if(null===l)s.reading=!1,J(t,s);else if(n||(c=x(s,l)),c)L(t,c);else if(s.objectMode||l&&l.length>0)if("string"===typeof l||s.objectMode||Object.getPrototypeOf(l)===d.prototype||(l=u(l)),i)s.endEmitted?L(t,new M):z(t,s,l,!0);else if(s.ended)L(t,new N);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!e?(l=s.decoder.write(l),s.objectMode||0!==l.length?z(t,s,l,!1):j(t,s)):z(t,s,l,!1)}else i||(s.reading=!1,j(t,s));return!s.ended&&(s.length<s.highWaterMark||0===s.length)}function z(t,l,e,i){l.flowing&&0===l.length&&!l.sync?(l.awaitDrain=0,t.emit("data",e)):(l.length+=l.objectMode?1:e.length,i?l.buffer.unshift(e):l.buffer.push(e),l.needReadable&&g(t)),j(t,l)}function x(t,l){var e;return o(l)||"string"===typeof l||void 0===l||t.objectMode||(e=new Y("chunk",["string","Buffer","Uint8Array"],l)),e}Object.defineProperty(R.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),R.prototype.destroy=p.destroy,R.prototype._undestroy=p.undestroy,R.prototype._destroy=function(t,l){l(t)},R.prototype.push=function(t,l){var e,i=this._readableState;return i.objectMode?e=!0:"string"===typeof t&&(l=l||i.defaultEncoding,l!==i.encoding&&(t=d.from(t,l),l=""),e=!0),T(this,t,l,!1,e)},R.prototype.unshift=function(t){return T(this,t,null,!0,!1)},R.prototype.isPaused=function(){return!1===this._readableState.flowing},R.prototype.setEncoding=function(l){h||(h=t("string_decoder/").StringDecoder);var e=new h(l);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;var i=this._readableState.buffer.head,n="";while(null!==i)n+=e.write(i.data),i=i.next;return this._readableState.buffer.clear(),""!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var S=1073741824;function k(t){return t>=S?t=S:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function C(t,l){return t<=0||0===l.length&&l.ended?0:l.objectMode?1:t!==t?l.flowing&&l.length?l.buffer.head.data.length:l.length:(t>l.highWaterMark&&(l.highWaterMark=k(t)),t<=l.length?t:l.ended?l.length:(l.needReadable=!0,0))}function J(t,l){if(r("onEofChunk"),!l.ended){if(l.decoder){var e=l.decoder.end();e&&e.length&&(l.buffer.push(e),l.length+=l.objectMode?1:e.length)}l.ended=!0,l.sync?g(t):(l.needReadable=!1,l.emittedReadable||(l.emittedReadable=!0,F(t)))}}function g(t){var l=t._readableState;r("emitReadable",l.needReadable,l.emittedReadable),l.needReadable=!1,l.emittedReadable||(r("emitReadable",l.flowing),l.emittedReadable=!0,e.nextTick(F,t))}function F(t){var l=t._readableState;r("emitReadable_",l.destroyed,l.length,l.ended),l.destroyed||!l.length&&!l.ended||(t.emit("readable"),l.emittedReadable=!1),l.needReadable=!l.flowing&&!l.ended&&l.length<=l.highWaterMark,H(t)}function j(t,l){l.readingMore||(l.readingMore=!0,e.nextTick(v,t,l))}function v(t,l){while(!l.reading&&!l.ended&&(l.length<l.highWaterMark||l.flowing&&0===l.length)){var e=l.length;if(r("maybeReadMore read 0"),t.read(0),e===l.length)break}l.readingMore=!1}function D(t){return function(){var l=t._readableState;r("pipeOnDrain",l.awaitDrain),l.awaitDrain&&l.awaitDrain--,0===l.awaitDrain&&c(t,"data")&&(l.flowing=!0,H(t))}}function U(t){var l=t._readableState;l.readableListening=t.listenerCount("readable")>0,l.resumeScheduled&&!l.paused?l.flowing=!0:t.listenerCount("data")>0&&t.resume()}function O(t){r("readable nexttick read 0"),t.read(0)}function K(t,l){l.resumeScheduled||(l.resumeScheduled=!0,e.nextTick(E,t,l))}function E(t,l){r("resume",l.reading),l.reading||t.read(0),l.resumeScheduled=!1,t.emit("resume"),H(t),l.flowing&&!l.reading&&t.read(0)}function H(t){var l=t._readableState;r("flow",l.flowing);while(l.flowing&&null!==t.read());}function Q(t,l){return 0===l.length?null:(l.objectMode?e=l.buffer.shift():!t||t>=l.length?(e=l.decoder?l.buffer.join(""):1===l.buffer.length?l.buffer.first():l.buffer.concat(l.length),l.buffer.clear()):e=l.buffer.consume(t,l.decoder),e);var e}function B(t){var l=t._readableState;r("endReadable",l.endEmitted),l.endEmitted||(l.ended=!0,e.nextTick(P,l,t))}function P(t,l){if(r("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,l.readable=!1,l.emit("end"),t.autoDestroy)){var e=l._writableState;(!e||e.autoDestroy&&e.finished)&&l.destroy()}}function A(t,l){for(var e=0,i=t.length;e<i;e++)if(t[e]===l)return e;return-1}R.prototype.read=function(t){r("read",t),t=parseInt(t,10);var l=this._readableState,e=t;if(0!==t&&(l.emittedReadable=!1),0===t&&l.needReadable&&((0!==l.highWaterMark?l.length>=l.highWaterMark:l.length>0)||l.ended))return r("read: emitReadable",l.length,l.ended),0===l.length&&l.ended?B(this):g(this),null;if(t=C(t,l),0===t&&l.ended)return 0===l.length&&B(this),null;var i,n=l.needReadable;return r("need readable",n),(0===l.length||l.length-t<l.highWaterMark)&&(n=!0,r("length less than watermark",n)),l.ended||l.reading?(n=!1,r("reading or ended",n)):n&&(r("do read"),l.reading=!0,l.sync=!0,0===l.length&&(l.needReadable=!0),this._read(l.highWaterMark),l.sync=!1,l.reading||(t=C(e,l))),i=t>0?Q(t,l):null,null===i?(l.needReadable=l.length<=l.highWaterMark,t=0):(l.length-=t,l.awaitDrain=0),0===l.length&&(l.ended||(l.needReadable=!0),e!==t&&l.ended&&B(this)),null!==i&&this.emit("data",i),i},R.prototype._read=function(t){L(this,new V("_read()"))},R.prototype.pipe=function(t,l){var i=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t);break}n.pipesCount+=1,r("pipe count=%d opts=%j",n.pipesCount,l);var s=(!l||!1!==l.end)&&t!==e.stdout&&t!==e.stderr,d=s?u:W;function a(t,l){r("onunpipe"),t===i&&l&&!1===l.hasUnpiped&&(l.hasUnpiped=!0,h())}function u(){r("onend"),t.end()}n.endEmitted?e.nextTick(d):i.once("end",d),t.on("unpipe",a);var o=D(i);t.on("drain",o);var b=!1;function h(){r("cleanup"),t.removeListener("close",y),t.removeListener("finish",p),t.removeListener("drain",o),t.removeListener("error",m),t.removeListener("unpipe",a),i.removeListener("end",u),i.removeListener("end",W),i.removeListener("data",Z),b=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||o()}function Z(l){r("ondata");var e=t.write(l);r("dest.write",e),!1===e&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==A(n.pipes,t))&&!b&&(r("false write response, pause",n.awaitDrain),n.awaitDrain++),i.pause())}function m(l){r("onerror",l),W(),t.removeListener("error",m),0===c(t,"error")&&L(t,l)}function y(){t.removeListener("finish",p),W()}function p(){r("onfinish"),t.removeListener("close",y),W()}function W(){r("unpipe"),i.unpipe(t)}return i.on("data",Z),w(t,"error",m),t.once("close",y),t.once("finish",p),t.emit("pipe",i),n.flowing||(r("pipe resume"),i.resume()),t},R.prototype.unpipe=function(t){var l=this._readableState,e={hasUnpiped:!1};if(0===l.pipesCount)return this;if(1===l.pipesCount)return t&&t!==l.pipes||(t||(t=l.pipes),l.pipes=null,l.pipesCount=0,l.flowing=!1,t&&t.emit("unpipe",this,e)),this;if(!t){var i=l.pipes,n=l.pipesCount;l.pipes=null,l.pipesCount=0,l.flowing=!1;for(var c=0;c<n;c++)i[c].emit("unpipe",this,{hasUnpiped:!1});return this}var s=A(l.pipes,t);return-1===s||(l.pipes.splice(s,1),l.pipesCount-=1,1===l.pipesCount&&(l.pipes=l.pipes[0]),t.emit("unpipe",this,e)),this},R.prototype.on=function(t,l){var i=s.prototype.on.call(this,t,l),n=this._readableState;return"data"===t?(n.readableListening=this.listenerCount("readable")>0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,r("on readable",n.length,n.reading),n.length?g(this):n.reading||e.nextTick(O,this))),i},R.prototype.addListener=R.prototype.on,R.prototype.removeListener=function(t,l){var i=s.prototype.removeListener.call(this,t,l);return"readable"===t&&e.nextTick(U,this),i},R.prototype.removeAllListeners=function(t){var l=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||e.nextTick(U,this),l},R.prototype.resume=function(){var t=this._readableState;return t.flowing||(r("resume"),t.flowing=!t.readableListening,K(this,t)),t.paused=!1,this},R.prototype.pause=function(){return r("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(r("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},R.prototype.wrap=function(t){var l=this,e=this._readableState,i=!1;for(var n in t.on("end",(function(){if(r("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&l.push(t)}l.push(null)})),t.on("data",(function(n){if(r("wrapped data"),e.decoder&&(n=e.decoder.write(n)),(!e.objectMode||null!==n&&void 0!==n)&&(e.objectMode||n&&n.length)){var c=l.push(n);c||(i=!0,t.pause())}})),t)void 0===this[n]&&"function"===typeof t[n]&&(this[n]=function(l){return function(){return t[l].apply(t,arguments)}}(n));for(var c=0;c<I.length;c++)t.on(I[c],this.emit.bind(this,I[c]));return this._read=function(l){r("wrapped _read",l),i&&(i=!1,t.resume())},this},"function"===typeof Symbol&&(R.prototype[Symbol.asyncIterator]=function(){return void 0===Z&&(Z=t("./internal/streams/async_iterator")),Z(this)}),Object.defineProperty(R.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(R.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(R.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),R._fromList=Q,Object.defineProperty(R.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"===typeof Symbol&&(R.from=function(l,e){return void 0===m&&(m=t("./internal/streams/from")),m(R,l,e)})}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"../errors":477,"./_stream_duplex":478,"./internal/streams/async_iterator":483,"./internal/streams/buffer_list":484,"./internal/streams/destroy":485,"./internal/streams/from":487,"./internal/streams/state":489,"./internal/streams/stream":490,_process:467,buffer:216,events:367,inherits:387,"string_decoder/":520,util:185}],481:[function(t,l,e){"use strict";l.exports=o;var i=t("../errors").codes,n=i.ERR_METHOD_NOT_IMPLEMENTED,c=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,d=i.ERR_TRANSFORM_WITH_LENGTH_0,a=t("./_stream_duplex");function u(t,l){var e=this._transformState;e.transforming=!1;var i=e.writecb;if(null===i)return this.emit("error",new c);e.writechunk=null,e.writecb=null,null!=l&&this.push(l),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);a.call(this,t),this._transformState={afterTransform:u.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"===typeof t.transform&&(this._transform=t.transform),"function"===typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",r)}function r(){var t=this;"function"!==typeof this._flush||this._readableState.destroyed?b(this,null,null):this._flush((function(l,e){b(t,l,e)}))}function b(t,l,e){if(l)return t.emit("error",l);if(null!=e&&t.push(e),t._writableState.length)throw new d;if(t._transformState.transforming)throw new s;return t.push(null)}t("inherits")(o,a),o.prototype.push=function(t,l){return this._transformState.needTransform=!1,a.prototype.push.call(this,t,l)},o.prototype._transform=function(t,l,e){e(new n("_transform()"))},o.prototype._write=function(t,l,e){var i=this._transformState;if(i.writecb=e,i.writechunk=t,i.writeencoding=l,!i.transforming){var n=this._readableState;(i.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},o.prototype._read=function(t){var l=this._transformState;null===l.writechunk||l.transforming?l.needTransform=!0:(l.transforming=!0,this._transform(l.writechunk,l.writeencoding,l.afterTransform))},o.prototype._destroy=function(t,l){a.prototype._destroy.call(this,t,(function(t){l(t)}))}},{"../errors":477,"./_stream_duplex":478,inherits:387}],482:[function(t,l,i){(function(e,i){"use strict";function n(t){var l=this;this.next=null,this.entry=null,this.finish=function(){E(l,t)}}var c;l.exports=f,f.WritableState=w;var s={deprecate:t("util-deprecate")},d=t("./internal/streams/stream"),a=t("buffer").Buffer,u=i.Uint8Array||function(){};function o(t){return a.from(t)}function r(t){return a.isBuffer(t)||t instanceof u}var b,h=t("./internal/streams/destroy"),Z=t("./internal/streams/state"),m=Z.getHighWaterMark,y=t("../errors").codes,p=y.ERR_INVALID_ARG_TYPE,W=y.ERR_METHOD_NOT_IMPLEMENTED,G=y.ERR_MULTIPLE_CALLBACK,X=y.ERR_STREAM_CANNOT_PIPE,Y=y.ERR_STREAM_DESTROYED,N=y.ERR_STREAM_NULL_VALUES,V=y.ERR_STREAM_WRITE_AFTER_END,M=y.ERR_UNKNOWN_ENCODING,L=h.errorOrDestroy;function I(){}function w(l,e,i){c=c||t("./_stream_duplex"),l=l||{},"boolean"!==typeof i&&(i=e instanceof c),this.objectMode=!!l.objectMode,i&&(this.objectMode=this.objectMode||!!l.writableObjectMode),this.highWaterMark=m(this,l,"writableHighWaterMark",i),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===l.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=l.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){J(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==l.emitClose,this.autoDestroy=!!l.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new n(this)}function f(l){c=c||t("./_stream_duplex");var e=this instanceof c;if(!e&&!b.call(f,this))return new f(l);this._writableState=new w(l,this,e),this.writable=!0,l&&("function"===typeof l.write&&(this._write=l.write),"function"===typeof l.writev&&(this._writev=l.writev),"function"===typeof l.destroy&&(this._destroy=l.destroy),"function"===typeof l.final&&(this._final=l.final)),d.call(this)}function R(t,l){var i=new V;L(t,i),e.nextTick(l,i)}function T(t,l,i,n){var c;return null===i?c=new N:"string"===typeof i||l.objectMode||(c=new p("chunk",["string","Buffer"],i)),!c||(L(t,c),e.nextTick(n,c),!1)}function z(t,l,e){return t.objectMode||!1===t.decodeStrings||"string"!==typeof l||(l=a.from(l,e)),l}function x(t,l,e,i,n,c){if(!e){var s=z(l,i,n);i!==s&&(e=!0,n="buffer",i=s)}var d=l.objectMode?1:i.length;l.length+=d;var a=l.length<l.highWaterMark;if(a||(l.needDrain=!0),l.writing||l.corked){var u=l.lastBufferedRequest;l.lastBufferedRequest={chunk:i,encoding:n,isBuf:e,callback:c,next:null},u?u.next=l.lastBufferedRequest:l.bufferedRequest=l.lastBufferedRequest,l.bufferedRequestCount+=1}else S(t,l,!1,d,i,n,c);return a}function S(t,l,e,i,n,c,s){l.writelen=i,l.writecb=s,l.writing=!0,l.sync=!0,l.destroyed?l.onwrite(new Y("write")):e?t._writev(n,l.onwrite):t._write(n,c,l.onwrite),l.sync=!1}function k(t,l,i,n,c){--l.pendingcb,i?(e.nextTick(c,n),e.nextTick(O,t,l),t._writableState.errorEmitted=!0,L(t,n)):(c(n),t._writableState.errorEmitted=!0,L(t,n),O(t,l))}function C(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function J(t,l){var i=t._writableState,n=i.sync,c=i.writecb;if("function"!==typeof c)throw new G;if(C(i),l)k(t,i,n,l,c);else{var s=v(i)||t.destroyed;s||i.corked||i.bufferProcessing||!i.bufferedRequest||j(t,i),n?e.nextTick(g,t,i,s,c):g(t,i,s,c)}}function g(t,l,e,i){e||F(t,l),l.pendingcb--,i(),O(t,l)}function F(t,l){0===l.length&&l.needDrain&&(l.needDrain=!1,t.emit("drain"))}function j(t,l){l.bufferProcessing=!0;var e=l.bufferedRequest;if(t._writev&&e&&e.next){var i=l.bufferedRequestCount,c=new Array(i),s=l.corkedRequestsFree;s.entry=e;var d=0,a=!0;while(e)c[d]=e,e.isBuf||(a=!1),e=e.next,d+=1;c.allBuffers=a,S(t,l,!0,l.length,c,"",s.finish),l.pendingcb++,l.lastBufferedRequest=null,s.next?(l.corkedRequestsFree=s.next,s.next=null):l.corkedRequestsFree=new n(l),l.bufferedRequestCount=0}else{while(e){var u=e.chunk,o=e.encoding,r=e.callback,b=l.objectMode?1:u.length;if(S(t,l,!1,b,u,o,r),e=e.next,l.bufferedRequestCount--,l.writing)break}null===e&&(l.lastBufferedRequest=null)}l.bufferedRequest=e,l.bufferProcessing=!1}function v(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function D(t,l){t._final((function(e){l.pendingcb--,e&&L(t,e),l.prefinished=!0,t.emit("prefinish"),O(t,l)}))}function U(t,l){l.prefinished||l.finalCalled||("function"!==typeof t._final||l.destroyed?(l.prefinished=!0,t.emit("prefinish")):(l.pendingcb++,l.finalCalled=!0,e.nextTick(D,t,l)))}function O(t,l){var e=v(l);if(e&&(U(t,l),0===l.pendingcb&&(l.finished=!0,t.emit("finish"),l.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return e}function K(t,l,i){l.ending=!0,O(t,l),i&&(l.finished?e.nextTick(i):t.once("finish",i)),l.ended=!0,t.writable=!1}function E(t,l,e){var i=t.entry;t.entry=null;while(i){var n=i.callback;l.pendingcb--,n(e),i=i.next}l.corkedRequestsFree.next=t}t("inherits")(f,d),w.prototype.getBuffer=function(){var t=this.bufferedRequest,l=[];while(t)l.push(t),t=t.next;return l},function(){try{Object.defineProperty(w.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"===typeof Symbol&&Symbol.hasInstance&&"function"===typeof Function.prototype[Symbol.hasInstance]?(b=Function.prototype[Symbol.hasInstance],Object.defineProperty(f,Symbol.hasInstance,{value:function(t){return!!b.call(this,t)||this===f&&t&&t._writableState instanceof w}})):b=function(t){return t instanceof this},f.prototype.pipe=function(){L(this,new X)},f.prototype.write=function(t,l,e){var i=this._writableState,n=!1,c=!i.objectMode&&r(t);return c&&!a.isBuffer(t)&&(t=o(t)),"function"===typeof l&&(e=l,l=null),c?l="buffer":l||(l=i.defaultEncoding),"function"!==typeof e&&(e=I),i.ending?R(this,e):(c||T(this,i,t,e))&&(i.pendingcb++,n=x(this,i,c,t,l,e)),n},f.prototype.cork=function(){this._writableState.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.bufferProcessing||!t.bufferedRequest||j(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"===typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new M(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(f.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),f.prototype._write=function(t,l,e){e(new W("_write()"))},f.prototype._writev=null,f.prototype.end=function(t,l,e){var i=this._writableState;return"function"===typeof t?(e=t,t=null,l=null):"function"===typeof l&&(e=l,l=null),null!==t&&void 0!==t&&this.write(t,l),i.corked&&(i.corked=1,this.uncork()),i.ending||K(this,i,e),this},Object.defineProperty(f.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(f.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),f.prototype.destroy=h.destroy,f.prototype._undestroy=h.undestroy,f.prototype._destroy=function(t,l){l(t)}}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"../errors":477,"./_stream_duplex":478,"./internal/streams/destroy":485,"./internal/streams/state":489,"./internal/streams/stream":490,_process:467,buffer:216,inherits:387,"util-deprecate":522}],483:[function(t,l,e){(function(e){"use strict";var i;function n(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}var c=t("./end-of-stream"),s=Symbol("lastResolve"),d=Symbol("lastReject"),a=Symbol("error"),u=Symbol("ended"),o=Symbol("lastPromise"),r=Symbol("handlePromise"),b=Symbol("stream");function h(t,l){return{value:t,done:l}}function Z(t){var l=t[s];if(null!==l){var e=t[b].read();null!==e&&(t[o]=null,t[s]=null,t[d]=null,l(h(e,!1)))}}function m(t){e.nextTick(Z,t)}function y(t,l){return function(e,i){t.then((function(){l[u]?e(h(void 0,!0)):l[r](e,i)}),i)}}var p=Object.getPrototypeOf((function(){})),W=Object.setPrototypeOf((i={get stream(){return this[b]},next:function(){var t=this,l=this[a];if(null!==l)return Promise.reject(l);if(this[u])return Promise.resolve(h(void 0,!0));if(this[b].destroyed)return new Promise((function(l,i){e.nextTick((function(){t[a]?i(t[a]):l(h(void 0,!0))}))}));var i,n=this[o];if(n)i=new Promise(y(n,this));else{var c=this[b].read();if(null!==c)return Promise.resolve(h(c,!1));i=new Promise(this[r])}return this[o]=i,i}},n(i,Symbol.asyncIterator,(function(){return this})),n(i,"return",(function(){var t=this;return new Promise((function(l,e){t[b].destroy(null,(function(t){t?e(t):l(h(void 0,!0))}))}))})),i),p),G=function(t){var l,e=Object.create(W,(l={},n(l,b,{value:t,writable:!0}),n(l,s,{value:null,writable:!0}),n(l,d,{value:null,writable:!0}),n(l,a,{value:null,writable:!0}),n(l,u,{value:t._readableState.endEmitted,writable:!0}),n(l,r,{value:function(t,l){var i=e[b].read();i?(e[o]=null,e[s]=null,e[d]=null,t(h(i,!1))):(e[s]=t,e[d]=l)},writable:!0}),l));return e[o]=null,c(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var l=e[d];return null!==l&&(e[o]=null,e[s]=null,e[d]=null,l(t)),void(e[a]=t)}var i=e[s];null!==i&&(e[o]=null,e[s]=null,e[d]=null,i(h(void 0,!0))),e[u]=!0})),t.on("readable",m.bind(null,e)),e};l.exports=G}).call(this,t("_process"))},{"./end-of-stream":486,_process:467}],484:[function(t,l,e){"use strict";function i(t,l){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);l&&(i=i.filter((function(l){return Object.getOwnPropertyDescriptor(t,l).enumerable}))),e.push.apply(e,i)}return e}function n(t){for(var l=1;l<arguments.length;l++){var e=null!=arguments[l]?arguments[l]:{};l%2?i(Object(e),!0).forEach((function(l){c(t,l,e[l])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):i(Object(e)).forEach((function(l){Object.defineProperty(t,l,Object.getOwnPropertyDescriptor(e,l))}))}return t}function c(t,l,e){return l in t?Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[l]=e,t}function s(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function d(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function a(t,l,e){return l&&d(t.prototype,l),e&&d(t,e),t}var u=t("buffer"),o=u.Buffer,r=t("util"),b=r.inspect,h=b&&b.custom||"inspect";function Z(t,l,e){o.prototype.copy.call(t,l,e)}l.exports=function(){function t(){s(this,t),this.head=null,this.tail=null,this.length=0}return a(t,[{key:"push",value:function(t){var l={data:t,next:null};this.length>0?this.tail.next=l:this.head=l,this.tail=l,++this.length}},{key:"unshift",value:function(t){var l={data:t,next:this.head};0===this.length&&(this.tail=l),this.head=l,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";var l=this.head,e=""+l.data;while(l=l.next)e+=t+l.data;return e}},{key:"concat",value:function(t){if(0===this.length)return o.alloc(0);var l=o.allocUnsafe(t>>>0),e=this.head,i=0;while(e)Z(e.data,l,i),i+=e.data.length,e=e.next;return l}},{key:"consume",value:function(t,l){var e;return t<this.head.data.length?(e=this.head.data.slice(0,t),this.head.data=this.head.data.slice(t)):e=t===this.head.data.length?this.shift():l?this._getString(t):this._getBuffer(t),e}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(t){var l=this.head,e=1,i=l.data;t-=i.length;while(l=l.next){var n=l.data,c=t>n.length?n.length:t;if(c===n.length?i+=n:i+=n.slice(0,t),t-=c,0===t){c===n.length?(++e,l.next?this.head=l.next:this.head=this.tail=null):(this.head=l,l.data=n.slice(c));break}++e}return this.length-=e,i}},{key:"_getBuffer",value:function(t){var l=o.allocUnsafe(t),e=this.head,i=1;e.data.copy(l),t-=e.data.length;while(e=e.next){var n=e.data,c=t>n.length?n.length:t;if(n.copy(l,l.length-t,0,c),t-=c,0===t){c===n.length?(++i,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(c));break}++i}return this.length-=i,l}},{key:h,value:function(t,l){return b(this,n({},l,{depth:0,customInspect:!1}))}}]),t}()},{buffer:216,util:185}],485:[function(t,l,e){(function(t){"use strict";function e(l,e){var c=this,d=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return d||a?(e?e(l):l&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,t.nextTick(s,this,l)):t.nextTick(s,this,l)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(l||null,(function(l){!e&&l?c._writableState?c._writableState.errorEmitted?t.nextTick(n,c):(c._writableState.errorEmitted=!0,t.nextTick(i,c,l)):t.nextTick(i,c,l):e?(t.nextTick(n,c),e(l)):t.nextTick(n,c)})),this)}function i(t,l){s(t,l),n(t)}function n(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function c(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function s(t,l){t.emit("error",l)}function d(t,l){var e=t._readableState,i=t._writableState;e&&e.autoDestroy||i&&i.autoDestroy?t.destroy(l):t.emit("error",l)}l.exports={destroy:e,undestroy:c,errorOrDestroy:d}}).call(this,t("_process"))},{_process:467}],486:[function(t,l,e){"use strict";var i=t("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function n(t){var l=!1;return function(){if(!l){l=!0;for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];t.apply(this,i)}}}function c(){}function s(t){return t.setHeader&&"function"===typeof t.abort}function d(t,l,e){if("function"===typeof l)return d(t,null,l);l||(l={}),e=n(e||c);var a=l.readable||!1!==l.readable&&t.readable,u=l.writable||!1!==l.writable&&t.writable,o=function(){t.writable||b()},r=t._writableState&&t._writableState.finished,b=function(){u=!1,r=!0,a||e.call(t)},h=t._readableState&&t._readableState.endEmitted,Z=function(){a=!1,h=!0,u||e.call(t)},m=function(l){e.call(t,l)},y=function(){var l;return a&&!h?(t._readableState&&t._readableState.ended||(l=new i),e.call(t,l)):u&&!r?(t._writableState&&t._writableState.ended||(l=new i),e.call(t,l)):void 0},p=function(){t.req.on("finish",b)};return s(t)?(t.on("complete",b),t.on("abort",y),t.req?p():t.on("request",p)):u&&!t._writableState&&(t.on("end",o),t.on("close",o)),t.on("end",Z),t.on("finish",b),!1!==l.error&&t.on("error",m),t.on("close",y),function(){t.removeListener("complete",b),t.removeListener("abort",y),t.removeListener("request",p),t.req&&t.req.removeListener("finish",b),t.removeListener("end",o),t.removeListener("close",o),t.removeListener("finish",b),t.removeListener("end",Z),t.removeListener("error",m),t.removeListener("close",y)}}l.exports=d},{"../../../errors":477}],487:[function(t,l,e){"use strict";l.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],488:[function(t,l,e){"use strict";var i;function n(t){var l=!1;return function(){l||(l=!0,t.apply(void 0,arguments))}}var c=t("../../../errors").codes,s=c.ERR_MISSING_ARGS,d=c.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function u(t){return t.setHeader&&"function"===typeof t.abort}function o(l,e,c,s){s=n(s);var a=!1;l.on("close",(function(){a=!0})),void 0===i&&(i=t("./end-of-stream")),i(l,{readable:e,writable:c},(function(t){if(t)return s(t);a=!0,s()}));var o=!1;return function(t){if(!a&&!o)return o=!0,u(l)?l.abort():"function"===typeof l.destroy?l.destroy():void s(t||new d("pipe"))}}function r(t){t()}function b(t,l){return t.pipe(l)}function h(t){return t.length?"function"!==typeof t[t.length-1]?a:t.pop():a}function Z(){for(var t=arguments.length,l=new Array(t),e=0;e<t;e++)l[e]=arguments[e];var i,n=h(l);if(Array.isArray(l[0])&&(l=l[0]),l.length<2)throw new s("streams");var c=l.map((function(t,e){var s=e<l.length-1,d=e>0;return o(t,s,d,(function(t){i||(i=t),t&&c.forEach(r),s||(c.forEach(r),n(i))}))}));return l.reduce(b)}l.exports=Z},{"../../../errors":477,"./end-of-stream":486}],489:[function(t,l,e){"use strict";var i=t("../../../errors").codes.ERR_INVALID_OPT_VALUE;function n(t,l,e){return null!=t.highWaterMark?t.highWaterMark:l?t[e]:null}function c(t,l,e,c){var s=n(l,c,e);if(null!=s){if(!isFinite(s)||Math.floor(s)!==s||s<0){var d=c?e:"highWaterMark";throw new i(d,s)}return Math.floor(s)}return t.objectMode?16:16384}l.exports={getHighWaterMark:c}},{"../../../errors":477}],490:[function(t,l,e){"use strict";l.exports=t("events").EventEmitter},{events:367}],491:[function(t,l,e){"use strict";e=l.exports=t("./lib/_stream_readable.js"),e.Stream=e,e.Readable=e,e.Writable=t("./lib/_stream_writable.js"),e.Duplex=t("./lib/_stream_duplex.js"),e.Transform=t("./lib/_stream_transform.js"),e.PassThrough=t("./lib/_stream_passthrough.js"),e.finished=t("./lib/internal/streams/end-of-stream.js"),e.pipeline=t("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n=function(t){var l,e=Object.prototype,n=e.hasOwnProperty,c="function"===typeof Symbol?Symbol:{},s=c.iterator||"@@iterator",d=c.asyncIterator||"@@asyncIterator",a=c.toStringTag||"@@toStringTag";function u(t,l,e){return Object.defineProperty(t,l,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[l]}try{u({},"")}catch(S){u=function(t,l,e){return t[l]=e}}function o(t,l,e,i){var n=l&&l.prototype instanceof p?l:p,c=Object.create(n.prototype),s=new T(i||[]);return c._invoke=I(t,e,s),c}function r(t,l,e){try{return{type:"normal",arg:t.call(l,e)}}catch(S){return{type:"throw",arg:S}}}t.wrap=o;var b="suspendedStart",h="suspendedYield",Z="executing",m="completed",y={};function p(){}function W(){}function G(){}var X={};X[s]=function(){return this};var Y=Object.getPrototypeOf,N=Y&&Y(Y(z([])));N&&N!==e&&n.call(N,s)&&(X=N);var V=G.prototype=p.prototype=Object.create(X);function M(t){["next","throw","return"].forEach((function(l){u(t,l,(function(t){return this._invoke(l,t)}))}))}function L(t,l){function e(c,s,d,a){var u=r(t[c],t,s);if("throw"!==u.type){var o=u.arg,b=o.value;return b&&"object"===i(b)&&n.call(b,"__await")?l.resolve(b.__await).then((function(t){e("next",t,d,a)}),(function(t){e("throw",t,d,a)})):l.resolve(b).then((function(t){o.value=t,d(o)}),(function(t){return e("throw",t,d,a)}))}a(u.arg)}var c;function s(t,i){function n(){return new l((function(l,n){e(t,i,l,n)}))}return c=c?c.then(n,n):n()}this._invoke=s}function I(t,l,e){var i=b;return function(n,c){if(i===Z)throw new Error("Generator is already running");if(i===m){if("throw"===n)throw c;return x()}e.method=n,e.arg=c;while(1){var s=e.delegate;if(s){var d=w(s,e);if(d){if(d===y)continue;return d}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(i===b)throw i=m,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);i=Z;var a=r(t,l,e);if("normal"===a.type){if(i=e.done?m:h,a.arg===y)continue;return{value:a.arg,done:e.done}}"throw"===a.type&&(i=m,e.method="throw",e.arg=a.arg)}}}function w(t,e){var i=t.iterator[e.method];if(i===l){if(e.delegate=null,"throw"===e.method){if(t.iterator["return"]&&(e.method="return",e.arg=l,w(t,e),"throw"===e.method))return y;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var n=r(i,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,y;var c=n.arg;return c?c.done?(e[t.resultName]=c.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=l),e.delegate=null,y):c:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,y)}function f(t){var l={tryLoc:t[0]};1 in t&&(l.catchLoc=t[1]),2 in t&&(l.finallyLoc=t[2],l.afterLoc=t[3]),this.tryEntries.push(l)}function R(t){var l=t.completion||{};l.type="normal",delete l.arg,t.completion=l}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function z(t){if(t){var e=t[s];if(e)return e.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var i=-1,c=function e(){while(++i<t.length)if(n.call(t,i))return e.value=t[i],e.done=!1,e;return e.value=l,e.done=!0,e};return c.next=c}}return{next:x}}function x(){return{value:l,done:!0}}return W.prototype=V.constructor=G,G.constructor=W,W.displayName=u(G,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var l="function"===typeof t&&t.constructor;return!!l&&(l===W||"GeneratorFunction"===(l.displayName||l.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,G):(t.__proto__=G,u(t,a,"GeneratorFunction")),t.prototype=Object.create(V),t},t.awrap=function(t){return{__await:t}},M(L.prototype),L.prototype[d]=function(){return this},t.AsyncIterator=L,t.async=function(l,e,i,n,c){void 0===c&&(c=Promise);var s=new L(o(l,e,i,n),c);return t.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},M(V),u(V,a,"Generator"),V[s]=function(){return this},V.toString=function(){return"[object Generator]"},t.keys=function(t){var l=[];for(var e in t)l.push(e);return l.reverse(),function e(){while(l.length){var i=l.pop();if(i in t)return e.value=i,e.done=!1,e}return e.done=!0,e}},t.values=z,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(R),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=l)},stop:function(){this.done=!0;var t=this.tryEntries[0],l=t.completion;if("throw"===l.type)throw l.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,n){return d.type="throw",d.arg=t,e.next=i,n&&(e.method="next",e.arg=l),!!n}for(var c=this.tryEntries.length-1;c>=0;--c){var s=this.tryEntries[c],d=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var a=n.call(s,"catchLoc"),u=n.call(s,"finallyLoc");if(a&&u){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(a){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,l){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var c=i;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=l&&l<=c.finallyLoc&&(c=null);var s=c?c.completion:{};return s.type=t,s.arg=l,c?(this.method="next",this.next=c.finallyLoc,y):this.complete(s)},complete:function(t,l){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&l&&(this.next=l),y},finish:function(t){for(var l=this.tryEntries.length-1;l>=0;--l){var e=this.tryEntries[l];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),R(e),y}},catch:function(t){for(var l=this.tryEntries.length-1;l>=0;--l){var e=this.tryEntries[l];if(e.tryLoc===t){var i=e.completion;if("throw"===i.type){var n=i.arg;R(e)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:z(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=l),y}},t}("object"===("undefined"===typeof l?"undefined":i(l))?l.exports:{});try{regeneratorRuntime=n}catch(c){Function("r","regeneratorRuntime = r")(n)}},{}],493:[function(t,l,e){"use strict";var i=t("buffer").Buffer,n=t("inherits"),c=t("hash-base"),s=new Array(16),d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],a=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],o=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],r=[0,1518500249,1859775393,2400959708,2840853838],b=[1352829926,1548603684,1836072691,2053994217,0];function h(){c.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function Z(t,l){return t<<l|t>>>32-l}function m(t,l,e,i,n,c,s,d){return Z(t+(l^e^i)+c+s|0,d)+n|0}function y(t,l,e,i,n,c,s,d){return Z(t+(l&e|~l&i)+c+s|0,d)+n|0}function p(t,l,e,i,n,c,s,d){return Z(t+((l|~e)^i)+c+s|0,d)+n|0}function W(t,l,e,i,n,c,s,d){return Z(t+(l&i|e&~i)+c+s|0,d)+n|0}function G(t,l,e,i,n,c,s,d){return Z(t+(l^(e|~i))+c+s|0,d)+n|0}n(h,c),h.prototype._update=function(){for(var t=s,l=0;l<16;++l)t[l]=this._block.readInt32LE(4*l);for(var e=0|this._a,i=0|this._b,n=0|this._c,c=0|this._d,h=0|this._e,X=0|this._a,Y=0|this._b,N=0|this._c,V=0|this._d,M=0|this._e,L=0;L<80;L+=1){var I,w;L<16?(I=m(e,i,n,c,h,t[d[L]],r[0],u[L]),w=G(X,Y,N,V,M,t[a[L]],b[0],o[L])):L<32?(I=y(e,i,n,c,h,t[d[L]],r[1],u[L]),w=W(X,Y,N,V,M,t[a[L]],b[1],o[L])):L<48?(I=p(e,i,n,c,h,t[d[L]],r[2],u[L]),w=p(X,Y,N,V,M,t[a[L]],b[2],o[L])):L<64?(I=W(e,i,n,c,h,t[d[L]],r[3],u[L]),w=y(X,Y,N,V,M,t[a[L]],b[3],o[L])):(I=G(e,i,n,c,h,t[d[L]],r[4],u[L]),w=m(X,Y,N,V,M,t[a[L]],b[4],o[L])),e=h,h=c,c=Z(n,10),n=i,i=I,X=M,M=V,V=Z(N,10),N=Y,Y=w}var f=this._b+n+V|0;this._b=this._c+c+M|0,this._c=this._d+h+X|0,this._d=this._e+e+Y|0,this._e=this._a+i+N|0,this._a=f},h.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},l.exports=h},{buffer:216,"hash-base":370,inherits:387}],494:[function(t,l,e){"use strict";var i=t("buffer"),n=i.Buffer;function c(t,l){for(var e in t)l[e]=t[e]}function s(t,l,e){return n(t,l,e)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?l.exports=i:(c(i,e),e.Buffer=s),c(n,s),s.from=function(t,l,e){if("number"===typeof t)throw new TypeError("Argument must not be a number");return n(t,l,e)},s.alloc=function(t,l,e){if("number"!==typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==l?"string"===typeof e?i.fill(l,e):i.fill(l):i.fill(0),i},s.allocUnsafe=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},{buffer:216}],495:[function(t,l,e){(function(e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var n,c=t("buffer"),s=c.Buffer,d={};for(n in c)c.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(d[n]=c[n]);var a=d.Buffer={};for(n in s)s.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(a[n]=s[n]);if(d.Buffer.prototype=s.prototype,a.from&&a.from!==Uint8Array.from||(a.from=function(t,l,e){if("number"===typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+i(t));if(t&&"undefined"===typeof t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+i(t));return s(t,l,e)}),a.alloc||(a.alloc=function(t,l,e){if("number"!==typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+i(t));if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=s(t);return l&&0!==l.length?"string"===typeof e?n.fill(l,e):n.fill(l):n.fill(0),n}),!d.kStringMaxLength)try{d.kStringMaxLength=e.binding("buffer").kStringMaxLength}catch(u){}d.constants||(d.constants={MAX_LENGTH:d.kMaxLength},d.kStringMaxLength&&(d.constants.MAX_STRING_LENGTH=d.kStringMaxLength)),l.exports=d}).call(this,t("_process"))},{_process:467,buffer:216}],496:[function(t,l,e){"use strict";function i(t,l){var e;if("undefined"===typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(e=o(t))||l&&t&&"number"===typeof t.length){e&&(t=e);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,s=!0,d=!1;return{s:function(){e=t[Symbol.iterator]()},n:function(){var t=e.next();return s=t.done,t},e:function(t){d=!0,c=t},f:function(){try{s||null==e.return||e.return()}finally{if(d)throw c}}}}function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function c(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}function s(t,l){for(var e=0;e<l.length;e++){var i=l[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,l,e){return l&&s(t.prototype,l),e&&s(t,e),t}function a(t){return b(t)||r(t)||o(t)||u()}function u(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(t,l){if(t){if("string"===typeof t)return h(t,l);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?h(t,l):void 0}}function r(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function b(t){if(Array.isArray(t))return h(t)}function h(t,l){(null==l||l>t.length)&&(l=t.length);for(var e=0,i=new Array(l);e<l;e++)i[e]=t[e];return i}Object.defineProperty(e,"__esModule",{value:!0});var Z=t("xmlchars/xml/1.0/ed5"),m=t("xmlchars/xml/1.1/ed2"),y=t("xmlchars/xmlns/1.0/ed3"),p=Z.isS,W=Z.isChar,G=Z.isNameStartChar,X=Z.isNameChar,Y=Z.S_LIST,N=Z.NAME_RE,V=m.isChar,M=y.isNCNameStartChar,L=y.isNCNameChar,I=y.NC_NAME_RE,w="http://www.w3.org/XML/1998/namespace",f="http://www.w3.org/2000/xmlns/",R={__proto__:null,xml:w,xmlns:f},T={__proto__:null,amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},z=-1,x=-2,S=0,k=1,C=2,J=3,g=4,F=5,j=6,v=7,D=8,U=9,O=10,K=11,E=12,H=13,Q=14,B=15,P=16,A=17,_=18,q=19,$=20,tt=21,lt=22,et=23,it=24,nt=25,ct=26,st=27,dt=28,at=29,ut=30,ot=31,rt=32,bt=33,ht=34,Zt=35,mt=36,yt=37,pt=38,Wt=39,Gt=40,Xt=41,Yt=42,Nt=43,Vt=44,Mt=9,Lt=10,It=13,wt=32,ft=33,Rt=34,Tt=38,zt=39,xt=45,St=47,kt=59,Ct=60,Jt=61,gt=62,Ft=63,jt=91,vt=93,Dt=133,Ut=8232,Ot=function(t){return t===Rt||t===zt},Kt=[Rt,zt],Et=[].concat(Kt,[jt,gt]),Ht=[].concat(Kt,[Ct,vt]),Qt=[Jt,Ft].concat(a(Y)),Bt=[].concat(a(Y),[gt,Tt,Ct]);function Pt(t,l,e){switch(l){case"xml":e!==w&&t.fail("xml prefix must be bound to ".concat(w,"."));break;case"xmlns":e!==f&&t.fail("xmlns prefix must be bound to ".concat(f,"."));break;default:}switch(e){case f:t.fail(""===l?"the default namespace may not be set to ".concat(e,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(f,"."));break;case w:switch(l){case"xml":break;case"":t.fail("the default namespace may not be set to ".concat(e,"."));break;default:t.fail("may not assign the xml namespace to another prefix.")}break;default:}}function At(t,l){for(var e=0,i=Object.keys(l);e<i.length;e++){var n=i[e];Pt(t,n,l[n])}}var _t=function(t){return I.test(t)},qt=function(t){return N.test(t)},$t=0,tl=1,ll=2;e.EVENTS=["xmldecl","text","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","error","end","ready"];var el={xmldecl:"xmldeclHandler",text:"textHandler",processinginstruction:"piHandler",doctype:"doctypeHandler",comment:"commentHandler",opentagstart:"openTagStartHandler",attribute:"attributeHandler",opentag:"openTagHandler",closetag:"closeTagHandler",cdata:"cdataHandler",error:"errorHandler",end:"endHandler",ready:"readyHandler"},il=function(){function t(l){c(this,t),this.opt=null!==l&&void 0!==l?l:{},this.fragmentOpt=!!this.opt.fragment;var e=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=!1!==this.opt.position,this.fileName=this.opt.fileName,e){this.nameStartCheck=M,this.nameCheck=L,this.isName=_t,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},R);var i=this.opt.additionalNamespaces;null!=i&&(At(this,i),Object.assign(this.ns,i))}else this.nameStartCheck=G,this.nameCheck=X,this.isName=qt,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}return d(t,[{key:"_init",value:function(){var t;this.openWakaBang="",this.text="",this.name="",this.piTarget="",this.entity="",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk="",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=$t,this.attribList=[];var l=this.fragmentOpt;this.state=l?H:S,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=l,this.xmlDeclPossible=!l,this.xmlDeclExpects=["version"],this.entityReturnState=void 0;var e=this.opt.defaultXMLVersion;if(void 0===e){if(!0===this.opt.forceXMLVersion)throw new Error("forceXMLVersion set but defaultXMLVersion is not set");e="1.0"}this.setXMLVersion(e),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(T),null===(t=this.readyHandler)||void 0===t||t.call(this)}},{key:"on",value:function(t,l){this[el[t]]=l}},{key:"off",value:function(t){this[el[t]]=void 0}},{key:"makeError",value:function(t){var l,e=null!==(l=this.fileName)&&void 0!==l?l:"";return this.trackPosition&&(e.length>0&&(e+=":"),e+="".concat(this.line,":").concat(this.column)),e.length>0&&(e+=": "),new Error(e+t)}},{key:"fail",value:function(t){var l=this.makeError(t),e=this.errorHandler;if(void 0===e)throw l;return e(l),this}},{key:"write",value:function(t){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var l=!1;null===t?(l=!0,t=""):"object"===n(t)&&(t=t.toString()),void 0!==this.carriedFromPrevious&&(t="".concat(this.carriedFromPrevious).concat(t),this.carriedFromPrevious=void 0);var e=t.length,i=t.charCodeAt(e-1);!l&&(i===It||i>=55296&&i<=56319)&&(this.carriedFromPrevious=t[e-1],e--,t=t.slice(0,e));var c=this.stateTable;this.chunk=t,this.i=0;while(this.i<e)c[this.state].call(this);return this.chunkPosition+=e,l?this.end():this}},{key:"close",value:function(){return this.write(null)}},{key:"getCode10",value:function(){var t=this.chunk,l=this.i;if(this.prevI=l,this.i=l+1,l>=t.length)return z;var e=t.charCodeAt(l);if(this.column++,e<55296){if(e>=wt||e===Mt)return e;switch(e){case Lt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Lt;case It:return t.charCodeAt(l+1)===Lt&&(this.i=l+2),this.line++,this.column=0,this.positionAtNewLine=this.position,x;default:return this.fail("disallowed character."),e}}if(e>56319)return e>=57344&&e<=65533||this.fail("disallowed character."),e;var i=65536+1024*(e-55296)+(t.charCodeAt(l+1)-56320);return this.i=l+2,i>1114111&&this.fail("disallowed character."),i}},{key:"getCode11",value:function(){var t=this.chunk,l=this.i;if(this.prevI=l,this.i=l+1,l>=t.length)return z;var e=t.charCodeAt(l);if(this.column++,e<55296){if(e>31&&e<127||e>159&&e!==Ut||e===Mt)return e;switch(e){case Lt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Lt;case It:var i=t.charCodeAt(l+1);i!==Lt&&i!==Dt||(this.i=l+2);case Dt:case Ut:return this.line++,this.column=0,this.positionAtNewLine=this.position,x;default:return this.fail("disallowed character."),e}}if(e>56319)return e>=57344&&e<=65533||this.fail("disallowed character."),e;var n=65536+1024*(e-55296)+(t.charCodeAt(l+1)-56320);return this.i=l+2,n>1114111&&this.fail("disallowed character."),n}},{key:"getCodeNorm",value:function(){var t=this.getCode();return t===x?Lt:t}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(t){var l=this.i,e=this.chunk;while(1){var i=this.getCode(),n=i===x,c=n?Lt:i;if(c===z||t.includes(c))return this.text+=e.slice(l,this.prevI),c;n&&(this.text+="".concat(e.slice(l,this.prevI),"\n"),l=this.i)}}},{key:"captureToChar",value:function(t){var l=this.i,e=this.chunk;while(1){var i=this.getCode();switch(i){case x:this.text+="".concat(e.slice(l,this.prevI),"\n"),l=this.i,i=Lt;break;case z:return this.text+=e.slice(l),!1;default:}if(i===t)return this.text+=e.slice(l,this.prevI),!0}}},{key:"captureNameChars",value:function(){var t=this.chunk,l=this.i;while(1){var e=this.getCode();if(e===z)return this.name+=t.slice(l),z;if(!X(e))return this.name+=t.slice(l,this.prevI),e===x?Lt:e}}},{key:"skipSpaces",value:function(){while(1){var t=this.getCodeNorm();if(t===z||!p(t))return t}}},{key:"setXMLVersion",value:function(t){this.currentXMLVersion=t,"1.0"===t?(this.isChar=W,this.getCode=this.getCode10):(this.isChar=V,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){65279===this.chunk.charCodeAt(0)&&(this.i++,this.column++),this.state=k}},{key:"sBeginWhitespace",value:function(){var t=this.i,l=this.skipSpaces();switch(this.prevI!==t&&(this.xmlDeclPossible=!1),l){case Ct:if(this.state=B,0!==this.text.length)throw new Error("no-empty text at start");break;case z:break;default:this.unget(),this.state=H,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var t,l=this.captureTo(Et);switch(l){case gt:null===(t=this.doctypeHandler)||void 0===t||t.call(this,this.text),this.text="",this.state=H,this.doctype=!0;break;case z:break;default:this.text+=String.fromCodePoint(l),l===jt?this.state=g:Ot(l)&&(this.state=J,this.q=l)}}},{key:"sDoctypeQuote",value:function(){var t=this.q;this.captureToChar(t)&&(this.text+=String.fromCodePoint(t),this.q=null,this.state=C)}},{key:"sDTD",value:function(){var t=this.captureTo(Ht);t!==z&&(this.text+=String.fromCodePoint(t),t===vt?this.state=C:t===Ct?this.state=j:Ot(t)&&(this.state=F,this.q=t))}},{key:"sDTDQuoted",value:function(){var t=this.q;this.captureToChar(t)&&(this.text+=String.fromCodePoint(t),this.state=g,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var t=this.getCodeNorm();switch(this.text+=String.fromCodePoint(t),t){case ft:this.state=v,this.openWakaBang="";break;case Ft:this.state=K;break;default:this.state=g}}},{key:"sDTDOpenWakaBang",value:function(){var t=String.fromCodePoint(this.getCodeNorm()),l=this.openWakaBang+=t;this.text+=t,"-"!==l&&(this.state="--"===l?D:g,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(xt)&&(this.text+="-",this.state=U)}},{key:"sDTDCommentEnding",value:function(){var t=this.getCodeNorm();this.text+=String.fromCodePoint(t),this.state=t===xt?O:D}},{key:"sDTDCommentEnded",value:function(){var t=this.getCodeNorm();this.text+=String.fromCodePoint(t),t===gt?this.state=g:(this.fail("malformed comment."),this.state=D)}},{key:"sDTDPI",value:function(){this.captureToChar(Ft)&&(this.text+="?",this.state=E)}},{key:"sDTDPIEnding",value:function(){var t=this.getCodeNorm();this.text+=String.fromCodePoint(t),t===gt&&(this.state=g)}},{key:"sText",value:function(){0!==this.tags.length?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var t=this.i,l=this.chunk;t:while(1)switch(this.getCode()){case x:this.entity+="".concat(l.slice(t,this.prevI),"\n"),t=this.i;break;case kt:var e=this.entityReturnState,i=this.entity+l.slice(t,this.prevI);this.state=e;var n=void 0;""===i?(this.fail("empty entity name."),n="&;"):(n=this.parseEntity(i),this.entity=""),e===H&&void 0===this.textHandler||(this.text+=n);break t;case z:this.entity+=l.slice(t);break t;default:}}},{key:"sOpenWaka",value:function(){var t=this.getCode();if(G(t))this.state=ht,this.unget(),this.xmlDeclPossible=!1;else switch(t){case St:this.state=Nt,this.xmlDeclPossible=!1;break;case ft:this.state=P,this.openWakaBang="",this.xmlDeclPossible=!1;break;case Ft:this.state=et;break;default:this.fail("disallowed character in tag name"),this.state=H,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=$,this.openWakaBang="";break;case"--":this.state=A,this.openWakaBang="";break;case"DOCTYPE":this.state=C,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(xt)&&(this.state=_)}},{key:"sCommentEnding",value:function(){var t,l=this.getCodeNorm();l===xt?(this.state=q,null===(t=this.commentHandler)||void 0===t||t.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(l)),this.state=A)}},{key:"sCommentEnded",value:function(){var t=this.getCodeNorm();t!==gt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(t)),this.state=A):this.state=H}},{key:"sCData",value:function(){this.captureToChar(vt)&&(this.state=tt)}},{key:"sCDataEnding",value:function(){var t=this.getCodeNorm();t===vt?this.state=lt:(this.text+="]".concat(String.fromCodePoint(t)),this.state=$)}},{key:"sCDataEnding2",value:function(){var t,l=this.getCodeNorm();switch(l){case gt:null===(t=this.cdataHandler)||void 0===t||t.call(this,this.text),this.text="",this.state=H;break;case vt:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(l)),this.state=$}}},{key:"sPIFirstChar",value:function(){var t=this.getCodeNorm();this.nameStartCheck(t)?(this.piTarget+=String.fromCodePoint(t),this.state=it):t===Ft||p(t)?(this.fail("processing instruction without a target."),this.state=t===Ft?ct:nt):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(t),this.state=it)}},{key:"sPIRest",value:function(){var t=this.chunk,l=this.i;while(1){var e=this.getCodeNorm();if(e===z)return void(this.piTarget+=t.slice(l));if(!this.nameCheck(e)){this.piTarget+=t.slice(l,this.prevI);var i=e===Ft;i||p(e)?"xml"===this.piTarget?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=i?bt:st):this.state=i?ct:nt:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(e));break}}}},{key:"sPIBody",value:function(){if(0===this.text.length){var t=this.getCodeNorm();t===Ft?this.state=ct:p(t)||(this.text=String.fromCodePoint(t))}else this.captureToChar(Ft)&&(this.state=ct)}},{key:"sPIEnding",value:function(){var t,l=this.getCodeNorm();if(l===gt){var e=this.piTarget;"xml"===e.toLowerCase()&&this.fail("the XML declaration must appear at the start of the document."),null===(t=this.piHandler)||void 0===t||t.call(this,{target:e,body:this.text}),this.piTarget=this.text="",this.state=H}else l===Ft?this.text+="?":(this.text+="?".concat(String.fromCodePoint(l)),this.state=nt);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var t=this.skipSpaces();t!==Ft?t!==z&&(this.state=dt,this.name=String.fromCodePoint(t)):this.state=bt}},{key:"sXMLDeclName",value:function(){var t=this.captureTo(Qt);if(t===Ft)return this.state=bt,this.name+=this.text,this.text="",void this.fail("XML declaration is incomplete.");if(p(t)||t===Jt){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=t===Jt?ut:at}}},{key:"sXMLDeclEq",value:function(){var t=this.getCodeNorm();if(t===Ft)return this.state=bt,void this.fail("XML declaration is incomplete.");p(t)||(t!==Jt&&this.fail("value required."),this.state=ut)}},{key:"sXMLDeclValueStart",value:function(){var t=this.getCodeNorm();if(t===Ft)return this.state=bt,void this.fail("XML declaration is incomplete.");p(t)||(Ot(t)?this.q=t:(this.fail("value must be quoted."),this.q=wt),this.state=ot)}},{key:"sXMLDeclValue",value:function(){var t=this.captureTo([this.q,Ft]);if(t===Ft)return this.state=bt,this.text="",void this.fail("XML declaration is incomplete.");if(t!==z){var l=this.text;switch(this.text="",this.name){case"version":this.xmlDeclExpects=["encoding","standalone"];var e=l;this.xmlDecl.version=e,/^1\.[0-9]+$/.test(e)?this.opt.forceXMLVersion||this.setXMLVersion(e):this.fail("version number must match /^1\\.[0-9]+$/.");break;case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(l)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=l;break;case"standalone":"yes"!==l&&"no"!==l&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=l;break;default:}this.name="",this.state=rt}}},{key:"sXMLDeclSeparator",value:function(){var t=this.getCodeNorm();t!==Ft?(p(t)||(this.fail("whitespace required."),this.unget()),this.state=st):this.state=bt}},{key:"sXMLDeclEnding",value:function(){var t,l=this.getCodeNorm();l===gt?("xml"!==this.piTarget?this.fail("processing instructions are not allowed before root."):"version"!==this.name&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),null===(t=this.xmldeclHandler)||void 0===t||t.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=H):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var t,l=this.captureNameChars();if(l!==z){var e=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=e.ns=Object.create(null)),null===(t=this.openTagStartHandler)||void 0===t||t.call(this,e),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),l){case gt:this.openTag();break;case St:this.state=Zt;break;default:p(l)||this.fail("disallowed character in tag name."),this.state=mt}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===gt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=mt)}},{key:"sAttrib",value:function(){var t=this.skipSpaces();t!==z&&(G(t)?(this.unget(),this.state=yt):t===gt?this.openTag():t===St?this.state=Zt:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var t=this.captureNameChars();t===Jt?this.state=Wt:p(t)?this.state=pt:t===gt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):t!==z&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var t=this.skipSpaces();switch(t){case z:return;case Jt:this.state=Wt;break;default:this.fail("attribute without value."),this.text="",this.name="",t===gt?this.openTag():G(t)?(this.unget(),this.state=yt):(this.fail("disallowed character in attribute name."),this.state=mt)}}},{key:"sAttribValue",value:function(){var t=this.getCodeNorm();Ot(t)?(this.q=t,this.state=Gt):p(t)||(this.fail("unquoted attribute value."),this.state=Yt,this.unget())}},{key:"sAttribValueQuoted",value:function(){var t=this.q,l=this.chunk,e=this.i;while(1)switch(this.getCode()){case t:return this.pushAttrib(this.name,this.text+l.slice(e,this.prevI)),this.name=this.text="",this.q=null,void(this.state=Xt);case Tt:return this.text+=l.slice(e,this.prevI),this.state=Q,void(this.entityReturnState=Gt);case Lt:case x:case Mt:this.text+="".concat(l.slice(e,this.prevI)," "),e=this.i;break;case Ct:return this.text+=l.slice(e,this.prevI),void this.fail("disallowed character.");case z:return void(this.text+=l.slice(e));default:}}},{key:"sAttribValueClosed",value:function(){var t=this.getCodeNorm();p(t)?this.state=mt:t===gt?this.openTag():t===St?this.state=Zt:G(t)?(this.fail("no whitespace between attributes."),this.unget(),this.state=yt):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var t=this.captureTo(Bt);switch(t){case Tt:this.state=Q,this.entityReturnState=Yt;break;case Ct:this.fail("disallowed character.");break;case z:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",t===gt?this.openTag():this.state=mt}}},{key:"sCloseTag",value:function(){var t=this.captureNameChars();t===gt?this.closeTag():p(t)?this.state=Vt:t!==z&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case gt:this.closeTag();break;case z:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var t=this.i,l=this.forbiddenState,e=this.chunk,i=this.textHandler;t:while(1)switch(this.getCode()){case Ct:if(this.state=B,void 0!==i){var n=this.text,c=e.slice(t,this.prevI);0!==n.length?(i(n+c),this.text=""):0!==c.length&&i(c)}l=$t;break t;case Tt:this.state=Q,this.entityReturnState=H,void 0!==i&&(this.text+=e.slice(t,this.prevI)),l=$t;break t;case vt:switch(l){case $t:l=tl;break;case tl:l=ll;break;case ll:break;default:throw new Error("impossible state")}break;case gt:l===ll&&this.fail('the string "]]>" is disallowed in char data.'),l=$t;break;case x:void 0!==i&&(this.text+="".concat(e.slice(t,this.prevI),"\n")),t=this.i,l=$t;break;case z:void 0!==i&&(this.text+=e.slice(t));break t;default:l=$t}this.forbiddenState=l}},{key:"handleTextOutsideRoot",value:function(){var t=this.i,l=this.chunk,e=this.textHandler,i=!1;t:while(1){var n=this.getCode();switch(n){case Ct:if(this.state=B,void 0!==e){var c=this.text,s=l.slice(t,this.prevI);0!==c.length?(e(c+s),this.text=""):0!==s.length&&e(s)}break t;case Tt:this.state=Q,this.entityReturnState=H,void 0!==e&&(this.text+=l.slice(t,this.prevI)),i=!0;break t;case x:void 0!==e&&(this.text+="".concat(l.slice(t,this.prevI),"\n")),t=this.i;break;case z:void 0!==e&&(this.text+=l.slice(t));break t;default:p(n)||(i=!0)}}i&&(this.sawRoot||this.reportedTextBeforeRoot||(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}},{key:"pushAttribNS",value:function(t,l){var e,i=this.qname(t),n=i.prefix,c=i.local,s={name:t,prefix:n,local:c,value:l};if(this.attribList.push(s),null===(e=this.attributeHandler)||void 0===e||e.call(this,s),"xmlns"===n){var d=l.trim();"1.0"===this.currentXMLVersion&&""===d&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[c]=d,Pt(this,c,d)}else if("xmlns"===t){var a=l.trim();this.topNS[""]=a,Pt(this,"",a)}}},{key:"pushAttribPlain",value:function(t,l){var e,i={name:t,value:l};this.attribList.push(i),null===(e=this.attributeHandler)||void 0===e||e.call(this,i)}},{key:"end",value:function(){var t,l;this.sawRoot||this.fail("document must contain a root element.");var e=this.tags;while(e.length>0){var i=e.pop();this.fail("unclosed tag: ".concat(i.name))}this.state!==S&&this.state!==H&&this.fail("unexpected end.");var n=this.text;return 0!==n.length&&(null===(t=this.textHandler)||void 0===t||t.call(this,n),this.text=""),this._closed=!0,null===(l=this.endHandler)||void 0===l||l.call(this),this._init(),this}},{key:"resolve",value:function(t){var l,e,i=this.topNS[t];if(void 0!==i)return i;for(var n=this.tags,c=n.length-1;c>=0;c--)if(i=n[c].ns[t],void 0!==i)return i;return i=this.ns[t],void 0!==i?i:null===(e=(l=this.opt).resolvePrefix)||void 0===e?void 0:e.call(l,t)}},{key:"qname",value:function(t){var l=t.indexOf(":");if(-1===l)return{prefix:"",local:t};var e=t.slice(l+1),i=t.slice(0,l);return(""===i||""===e||e.includes(":"))&&this.fail("malformed name: ".concat(t,".")),{prefix:i,local:e}}},{key:"processAttribsNS",value:function(){var t,l=this.attribList,e=this.tag,n=this.qname(e.name),c=n.prefix,s=n.local;e.prefix=c,e.local=s;var d=e.uri=null!==(t=this.resolve(c))&&void 0!==t?t:"";if(""!==c&&("xmlns"===c&&this.fail('tags may not have "xmlns" as prefix.'),""===d&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(c),".")),e.uri=c)),0!==l.length){var a,u=e.attributes,o=new Set,r=i(l);try{for(r.s();!(a=r.n()).done;){var b=a.value,h=b.name,Z=b.prefix,m=b.local,y=void 0,p=void 0;""===Z?(y="xmlns"===h?f:"",p=h):(y=this.resolve(Z),void 0===y&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Z),".")),y=Z),p="{".concat(y,"}").concat(m)),o.has(p)&&this.fail("duplicate attribute: ".concat(p,".")),o.add(p),b.uri=y,u[h]=b}}catch(W){r.e(W)}finally{r.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var t,l=this.attribList,e=this.tag.attributes,n=i(l);try{for(n.s();!(t=n.n()).done;){var c=t.value,s=c.name,d=c.value;void 0!==e[s]&&this.fail("duplicate attribute: ".concat(s,".")),e[s]=d}}catch(a){n.e(a)}finally{n.f()}this.attribList=[]}},{key:"openTag",value:function(){var t;this.processAttribs();var l=this.tags,e=this.tag;e.isSelfClosing=!1,null===(t=this.openTagHandler)||void 0===t||t.call(this,e),l.push(e),this.state=H,this.name=""}},{key:"openSelfClosingTag",value:function(){var t,l,e;this.processAttribs();var i=this.tags,n=this.tag;n.isSelfClosing=!0,null===(t=this.openTagHandler)||void 0===t||t.call(this,n),null===(l=this.closeTagHandler)||void 0===l||l.call(this,n);var c=this.tag=null!==(e=i[i.length-1])&&void 0!==e?e:null;null===c&&(this.closedRoot=!0),this.state=H,this.name=""}},{key:"closeTag",value:function(){var t=this.tags,l=this.name;if(this.state=H,this.name="",""===l)return this.fail("weird empty close tag."),void(this.text+="</>");var e=this.closeTagHandler,i=t.length;while(i-- >0){var n=this.tag=t.pop();if(this.topNS=n.ns,null===e||void 0===e||e(n),n.name===l)break;this.fail("unexpected close tag.")}0===i?this.closedRoot=!0:i<0&&(this.fail("unmatched closing tag: ".concat(l,".")),this.text+="</".concat(l,">"))}},{key:"parseEntity",value:function(t){if("#"!==t[0]){var l=this.ENTITIES[t];return void 0!==l?l:(this.fail(this.isName(t)?"undefined entity.":"disallowed character in entity name."),"&".concat(t,";"))}var e=NaN;return"x"===t[1]&&/^#x[0-9a-f]+$/i.test(t)?e=parseInt(t.slice(2),16):/^#[0-9]+$/.test(t)&&(e=parseInt(t.slice(1),10)),this.isChar(e)?String.fromCodePoint(e):(this.fail("malformed character entity."),"&".concat(t,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),t}();e.SaxesParser=il},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(t,l,e){(function(t){"use strict";l.exports="function"===typeof t?t:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}}).call(this,t("timers").setImmediate)},{timers:521}],498:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer;function n(t,l){this._block=i.alloc(t),this._finalSize=l,this._blockSize=t,this._len=0}n.prototype.update=function(t,l){"string"===typeof t&&(l=l||"utf8",t=i.from(t,l));for(var e=this._block,n=this._blockSize,c=t.length,s=this._len,d=0;d<c;){for(var a=s%n,u=Math.min(c-d,n-a),o=0;o<u;o++)e[a+o]=t[d+o];s+=u,d+=u,s%n===0&&this._update(e)}return this._len+=c,this},n.prototype.digest=function(t){var l=this._len%this._blockSize;this._block[l]=128,this._block.fill(0,l+1),l>=this._finalSize&&(this._update(this._block),this._block.fill(0));var e=8*this._len;if(e<=4294967295)this._block.writeUInt32BE(e,this._blockSize-4);else{var i=(4294967295&e)>>>0,n=(e-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var c=this._hash();return t?c.toString(t):c},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},l.exports=n},{"safe-buffer":494}],499:[function(t,l,e){"use strict";var i=l.exports=function(t){t=t.toLowerCase();var l=i[t];if(!l)throw new Error(t+" is not supported (we accept pull requests)");return new l};i.sha=t("./sha"),i.sha1=t("./sha1"),i.sha224=t("./sha224"),i.sha256=t("./sha256"),i.sha384=t("./sha384"),i.sha512=t("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./hash"),c=t("safe-buffer").Buffer,s=[1518500249,1859775393,-1894007588,-899497514],d=new Array(80);function a(){this.init(),this._w=d,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function o(t){return t<<30|t>>>2}function r(t,l,e,i){return 0===t?l&e|~l&i:2===t?l&e|l&i|e&i:l^e^i}i(a,n),a.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},a.prototype._update=function(t){for(var l=this._w,e=0|this._a,i=0|this._b,n=0|this._c,c=0|this._d,d=0|this._e,a=0;a<16;++a)l[a]=t.readInt32BE(4*a);for(;a<80;++a)l[a]=l[a-3]^l[a-8]^l[a-14]^l[a-16];for(var b=0;b<80;++b){var h=~~(b/20),Z=u(e)+r(h,i,n,c)+d+l[b]+s[h]|0;d=c,c=n,n=o(i),i=e,e=Z}this._a=e+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0},a.prototype._hash=function(){var t=c.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},l.exports=a},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./hash"),c=t("safe-buffer").Buffer,s=[1518500249,1859775393,-1894007588,-899497514],d=new Array(80);function a(){this.init(),this._w=d,n.call(this,64,56)}function u(t){return t<<1|t>>>31}function o(t){return t<<5|t>>>27}function r(t){return t<<30|t>>>2}function b(t,l,e,i){return 0===t?l&e|~l&i:2===t?l&e|l&i|e&i:l^e^i}i(a,n),a.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},a.prototype._update=function(t){for(var l=this._w,e=0|this._a,i=0|this._b,n=0|this._c,c=0|this._d,d=0|this._e,a=0;a<16;++a)l[a]=t.readInt32BE(4*a);for(;a<80;++a)l[a]=u(l[a-3]^l[a-8]^l[a-14]^l[a-16]);for(var h=0;h<80;++h){var Z=~~(h/20),m=o(e)+b(Z,i,n,c)+d+l[h]+s[Z]|0;d=c,c=n,n=r(i),i=e,e=m}this._a=e+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0},a.prototype._hash=function(){var t=c.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},l.exports=a},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./sha256"),c=t("./hash"),s=t("safe-buffer").Buffer,d=new Array(64);function a(){this.init(),this._w=d,c.call(this,64,56)}i(a,n),a.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},a.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},l.exports=a},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./hash"),c=t("safe-buffer").Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);function a(){this.init(),this._w=d,n.call(this,64,56)}function u(t,l,e){return e^t&(l^e)}function o(t,l,e){return t&l|e&(t|l)}function r(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function b(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function h(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function Z(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}i(a,n),a.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},a.prototype._update=function(t){for(var l=this._w,e=0|this._a,i=0|this._b,n=0|this._c,c=0|this._d,d=0|this._e,a=0|this._f,m=0|this._g,y=0|this._h,p=0;p<16;++p)l[p]=t.readInt32BE(4*p);for(;p<64;++p)l[p]=Z(l[p-2])+l[p-7]+h(l[p-15])+l[p-16]|0;for(var W=0;W<64;++W){var G=y+b(d)+u(d,a,m)+s[W]+l[W]|0,X=r(e)+o(e,i,n)|0;y=m,m=a,a=d,d=c+G|0,c=n,n=i,i=e,e=G+X|0}this._a=e+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=a+this._f|0,this._g=m+this._g|0,this._h=y+this._h|0},a.prototype._hash=function(){var t=c.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},l.exports=a},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./sha512"),c=t("./hash"),s=t("safe-buffer").Buffer,d=new Array(160);function a(){this.init(),this._w=d,c.call(this,128,112)}i(a,n),a.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},a.prototype._hash=function(){var t=s.allocUnsafe(48);function l(l,e,i){t.writeInt32BE(l,i),t.writeInt32BE(e,i+4)}return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),t},l.exports=a},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(t,l,e){"use strict";var i=t("inherits"),n=t("./hash"),c=t("safe-buffer").Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],d=new Array(160);function a(){this.init(),this._w=d,n.call(this,128,112)}function u(t,l,e){return e^t&(l^e)}function o(t,l,e){return t&l|e&(t|l)}function r(t,l){return(t>>>28|l<<4)^(l>>>2|t<<30)^(l>>>7|t<<25)}function b(t,l){return(t>>>14|l<<18)^(t>>>18|l<<14)^(l>>>9|t<<23)}function h(t,l){return(t>>>1|l<<31)^(t>>>8|l<<24)^t>>>7}function Z(t,l){return(t>>>1|l<<31)^(t>>>8|l<<24)^(t>>>7|l<<25)}function m(t,l){return(t>>>19|l<<13)^(l>>>29|t<<3)^t>>>6}function y(t,l){return(t>>>19|l<<13)^(l>>>29|t<<3)^(t>>>6|l<<26)}function p(t,l){return t>>>0<l>>>0?1:0}i(a,n),a.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},a.prototype._update=function(t){for(var l=this._w,e=0|this._ah,i=0|this._bh,n=0|this._ch,c=0|this._dh,d=0|this._eh,a=0|this._fh,W=0|this._gh,G=0|this._hh,X=0|this._al,Y=0|this._bl,N=0|this._cl,V=0|this._dl,M=0|this._el,L=0|this._fl,I=0|this._gl,w=0|this._hl,f=0;f<32;f+=2)l[f]=t.readInt32BE(4*f),l[f+1]=t.readInt32BE(4*f+4);for(;f<160;f+=2){var R=l[f-30],T=l[f-30+1],z=h(R,T),x=Z(T,R);R=l[f-4],T=l[f-4+1];var S=m(R,T),k=y(T,R),C=l[f-14],J=l[f-14+1],g=l[f-32],F=l[f-32+1],j=x+J|0,v=z+C+p(j,x)|0;j=j+k|0,v=v+S+p(j,k)|0,j=j+F|0,v=v+g+p(j,F)|0,l[f]=v,l[f+1]=j}for(var D=0;D<160;D+=2){v=l[D],j=l[D+1];var U=o(e,i,n),O=o(X,Y,N),K=r(e,X),E=r(X,e),H=b(d,M),Q=b(M,d),B=s[D],P=s[D+1],A=u(d,a,W),_=u(M,L,I),q=w+Q|0,$=G+H+p(q,w)|0;q=q+_|0,$=$+A+p(q,_)|0,q=q+P|0,$=$+B+p(q,P)|0,q=q+j|0,$=$+v+p(q,j)|0;var tt=E+O|0,lt=K+U+p(tt,E)|0;G=W,w=I,W=a,I=L,a=d,L=M,M=V+q|0,d=c+$+p(M,V)|0,c=n,V=N,n=i,N=Y,i=e,Y=X,X=q+tt|0,e=$+lt+p(X,q)|0}this._al=this._al+X|0,this._bl=this._bl+Y|0,this._cl=this._cl+N|0,this._dl=this._dl+V|0,this._el=this._el+M|0,this._fl=this._fl+L|0,this._gl=this._gl+I|0,this._hl=this._hl+w|0,this._ah=this._ah+e+p(this._al,X)|0,this._bh=this._bh+i+p(this._bl,Y)|0,this._ch=this._ch+n+p(this._cl,N)|0,this._dh=this._dh+c+p(this._dl,V)|0,this._eh=this._eh+d+p(this._el,M)|0,this._fh=this._fh+a+p(this._fl,L)|0,this._gh=this._gh+W+p(this._gl,I)|0,this._hh=this._hh+G+p(this._hl,w)|0},a.prototype._hash=function(){var t=c.allocUnsafe(64);function l(l,e,i){t.writeInt32BE(l,i),t.writeInt32BE(e,i+4)}return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),t},l.exports=a},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(t,l,e){"use strict";l.exports=c;var i=t("events").EventEmitter,n=t("inherits");function c(){i.call(this)}n(c,i),c.Readable=t("readable-stream/readable.js"),c.Writable=t("readable-stream/writable.js"),c.Duplex=t("readable-stream/duplex.js"),c.Transform=t("readable-stream/transform.js"),c.PassThrough=t("readable-stream/passthrough.js"),c.Stream=c,c.prototype.pipe=function(t,l){var e=this;function n(l){t.writable&&!1===t.write(l)&&e.pause&&e.pause()}function c(){e.readable&&e.resume&&e.resume()}e.on("data",n),t.on("drain",c),t._isStdio||l&&!1===l.end||(e.on("end",d),e.on("close",a));var s=!1;function d(){s||(s=!0,t.end())}function a(){s||(s=!0,"function"===typeof t.destroy&&t.destroy())}function u(t){if(o(),0===i.listenerCount(this,"error"))throw t}function o(){e.removeListener("data",n),t.removeListener("drain",c),e.removeListener("end",d),e.removeListener("close",a),e.removeListener("error",u),t.removeListener("error",u),e.removeListener("end",o),e.removeListener("close",o),t.removeListener("close",o)}return e.on("error",u),t.on("error",u),e.on("end",o),e.on("close",o),t.on("close",o),t.emit("pipe",e),t}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(t,l,e){"use strict";l.exports=t("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(t,l,e){"use strict";var i=t("process-nextick-args"),n=Object.keys||function(t){var l=[];for(var e in t)l.push(e);return l};l.exports=r;var c=Object.create(t("core-util-is"));c.inherits=t("inherits");var s=t("./_stream_readable"),d=t("./_stream_writable");c.inherits(r,s);for(var a=n(d.prototype),u=0;u<a.length;u++){var o=a[u];r.prototype[o]||(r.prototype[o]=d.prototype[o])}function r(t){if(!(this instanceof r))return new r(t);s.call(this,t),d.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",b)}function b(){this.allowHalfOpen||this._writableState.ended||i.nextTick(h,this)}function h(t){t.end()}Object.defineProperty(r.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(r.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),r.prototype._destroy=function(t,l){this.push(null),this.end(),i.nextTick(l,t)}},{"./_stream_readable":510,"./_stream_writable":512,"core-util-is":328,inherits:387,"process-nextick-args":466}],509:[function(t,l,e){"use strict";l.exports=c;var i=t("./_stream_transform"),n=Object.create(t("core-util-is"));function c(t){if(!(this instanceof c))return new c(t);i.call(this,t)}n.inherits=t("inherits"),n.inherits(c,i),c.prototype._transform=function(t,l,e){e(null,t)}},{"./_stream_transform":511,"core-util-is":328,inherits:387}],510:[function(t,l,i){(function(e,i){"use strict";var n=t("process-nextick-args");l.exports=N;var c,s=t("isarray");N.ReadableState=Y,t("events").EventEmitter;var d=function(t,l){return t.listeners(l).length},a=t("./internal/streams/stream"),u=t("safe-buffer").Buffer,o=i.Uint8Array||function(){};function r(t){return u.from(t)}function b(t){return u.isBuffer(t)||t instanceof o}var h=Object.create(t("core-util-is"));h.inherits=t("inherits");var Z=t("util"),m=void 0;m=Z&&Z.debuglog?Z.debuglog("stream"):function(){};var y,p=t("./internal/streams/BufferList"),W=t("./internal/streams/destroy");h.inherits(N,a);var G=["error","close","destroy","pause","resume"];function X(t,l,e){if("function"===typeof t.prependListener)return t.prependListener(l,e);t._events&&t._events[l]?s(t._events[l])?t._events[l].unshift(e):t._events[l]=[e,t._events[l]]:t.on(l,e)}function Y(l,e){c=c||t("./_stream_duplex"),l=l||{};var i=e instanceof c;this.objectMode=!!l.objectMode,i&&(this.objectMode=this.objectMode||!!l.readableObjectMode);var n=l.highWaterMark,s=l.readableHighWaterMark,d=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:i&&(s||0===s)?s:d,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=l.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,l.encoding&&(y||(y=t("string_decoder/").StringDecoder),this.decoder=new y(l.encoding),this.encoding=l.encoding)}function N(l){if(c=c||t("./_stream_duplex"),!(this instanceof N))return new N(l);this._readableState=new Y(l,this),this.readable=!0,l&&("function"===typeof l.read&&(this._read=l.read),"function"===typeof l.destroy&&(this._destroy=l.destroy)),a.call(this)}function V(t,l,e,i,n){var c,s=t._readableState;return null===l?(s.reading=!1,T(t,s)):(n||(c=L(s,l)),c?t.emit("error",c):s.objectMode||l&&l.length>0?("string"===typeof l||s.objectMode||Object.getPrototypeOf(l)===u.prototype||(l=r(l)),i?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):M(t,s,l,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!e?(l=s.decoder.write(l),s.objectMode||0!==l.length?M(t,s,l,!1):S(t,s)):M(t,s,l,!1))):i||(s.reading=!1)),I(s)}function M(t,l,e,i){l.flowing&&0===l.length&&!l.sync?(t.emit("data",e),t.read(0)):(l.length+=l.objectMode?1:e.length,i?l.buffer.unshift(e):l.buffer.push(e),l.needReadable&&z(t)),S(t,l)}function L(t,l){var e;return b(l)||"string"===typeof l||void 0===l||t.objectMode||(e=new TypeError("Invalid non-string/buffer chunk")),e}function I(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}Object.defineProperty(N.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),N.prototype.destroy=W.destroy,N.prototype._undestroy=W.undestroy,N.prototype._destroy=function(t,l){this.push(null),l(t)},N.prototype.push=function(t,l){var e,i=this._readableState;return i.objectMode?e=!0:"string"===typeof t&&(l=l||i.defaultEncoding,l!==i.encoding&&(t=u.from(t,l),l=""),e=!0),V(this,t,l,!1,e)},N.prototype.unshift=function(t){return V(this,t,null,!0,!1)},N.prototype.isPaused=function(){return!1===this._readableState.flowing},N.prototype.setEncoding=function(l){return y||(y=t("string_decoder/").StringDecoder),this._readableState.decoder=new y(l),this._readableState.encoding=l,this};var w=8388608;function f(t){return t>=w?t=w:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function R(t,l){return t<=0||0===l.length&&l.ended?0:l.objectMode?1:t!==t?l.flowing&&l.length?l.buffer.head.data.length:l.length:(t>l.highWaterMark&&(l.highWaterMark=f(t)),t<=l.length?t:l.ended?l.length:(l.needReadable=!0,0))}function T(t,l){if(!l.ended){if(l.decoder){var e=l.decoder.end();e&&e.length&&(l.buffer.push(e),l.length+=l.objectMode?1:e.length)}l.ended=!0,z(t)}}function z(t){var l=t._readableState;l.needReadable=!1,l.emittedReadable||(m("emitReadable",l.flowing),l.emittedReadable=!0,l.sync?n.nextTick(x,t):x(t))}function x(t){m("emit readable"),t.emit("readable"),j(t)}function S(t,l){l.readingMore||(l.readingMore=!0,n.nextTick(k,t,l))}function k(t,l){var e=l.length;while(!l.reading&&!l.flowing&&!l.ended&&l.length<l.highWaterMark){if(m("maybeReadMore read 0"),t.read(0),e===l.length)break;e=l.length}l.readingMore=!1}function C(t){return function(){var l=t._readableState;m("pipeOnDrain",l.awaitDrain),l.awaitDrain&&l.awaitDrain--,0===l.awaitDrain&&d(t,"data")&&(l.flowing=!0,j(t))}}function J(t){m("readable nexttick read 0"),t.read(0)}function g(t,l){l.resumeScheduled||(l.resumeScheduled=!0,n.nextTick(F,t,l))}function F(t,l){l.reading||(m("resume read 0"),t.read(0)),l.resumeScheduled=!1,l.awaitDrain=0,t.emit("resume"),j(t),l.flowing&&!l.reading&&t.read(0)}function j(t){var l=t._readableState;m("flow",l.flowing);while(l.flowing&&null!==t.read());}function v(t,l){return 0===l.length?null:(l.objectMode?e=l.buffer.shift():!t||t>=l.length?(e=l.decoder?l.buffer.join(""):1===l.buffer.length?l.buffer.head.data:l.buffer.concat(l.length),l.buffer.clear()):e=D(t,l.buffer,l.decoder),e);var e}function D(t,l,e){var i;return t<l.head.data.length?(i=l.head.data.slice(0,t),l.head.data=l.head.data.slice(t)):i=t===l.head.data.length?l.shift():e?U(t,l):O(t,l),i}function U(t,l){var e=l.head,i=1,n=e.data;t-=n.length;while(e=e.next){var c=e.data,s=t>c.length?c.length:t;if(s===c.length?n+=c:n+=c.slice(0,t),t-=s,0===t){s===c.length?(++i,e.next?l.head=e.next:l.head=l.tail=null):(l.head=e,e.data=c.slice(s));break}++i}return l.length-=i,n}function O(t,l){var e=u.allocUnsafe(t),i=l.head,n=1;i.data.copy(e),t-=i.data.length;while(i=i.next){var c=i.data,s=t>c.length?c.length:t;if(c.copy(e,e.length-t,0,s),t-=s,0===t){s===c.length?(++n,i.next?l.head=i.next:l.head=l.tail=null):(l.head=i,i.data=c.slice(s));break}++n}return l.length-=n,e}function K(t){var l=t._readableState;if(l.length>0)throw new Error('"endReadable()" called on non-empty stream');l.endEmitted||(l.ended=!0,n.nextTick(E,l,t))}function E(t,l){t.endEmitted||0!==t.length||(t.endEmitted=!0,l.readable=!1,l.emit("end"))}function H(t,l){for(var e=0,i=t.length;e<i;e++)if(t[e]===l)return e;return-1}N.prototype.read=function(t){m("read",t),t=parseInt(t,10);var l=this._readableState,e=t;if(0!==t&&(l.emittedReadable=!1),0===t&&l.needReadable&&(l.length>=l.highWaterMark||l.ended))return m("read: emitReadable",l.length,l.ended),0===l.length&&l.ended?K(this):z(this),null;if(t=R(t,l),0===t&&l.ended)return 0===l.length&&K(this),null;var i,n=l.needReadable;return m("need readable",n),(0===l.length||l.length-t<l.highWaterMark)&&(n=!0,m("length less than watermark",n)),l.ended||l.reading?(n=!1,m("reading or ended",n)):n&&(m("do read"),l.reading=!0,l.sync=!0,0===l.length&&(l.needReadable=!0),this._read(l.highWaterMark),l.sync=!1,l.reading||(t=R(e,l))),i=t>0?v(t,l):null,null===i?(l.needReadable=!0,t=0):l.length-=t,0===l.length&&(l.ended||(l.needReadable=!0),e!==t&&l.ended&&K(this)),null!==i&&this.emit("data",i),i},N.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},N.prototype.pipe=function(t,l){var i=this,c=this._readableState;switch(c.pipesCount){case 0:c.pipes=t;break;case 1:c.pipes=[c.pipes,t];break;default:c.pipes.push(t);break}c.pipesCount+=1,m("pipe count=%d opts=%j",c.pipesCount,l);var s=(!l||!1!==l.end)&&t!==e.stdout&&t!==e.stderr,a=s?o:Y;function u(t,l){m("onunpipe"),t===i&&l&&!1===l.hasUnpiped&&(l.hasUnpiped=!0,h())}function o(){m("onend"),t.end()}c.endEmitted?n.nextTick(a):i.once("end",a),t.on("unpipe",u);var r=C(i);t.on("drain",r);var b=!1;function h(){m("cleanup"),t.removeListener("close",W),t.removeListener("finish",G),t.removeListener("drain",r),t.removeListener("error",p),t.removeListener("unpipe",u),i.removeListener("end",o),i.removeListener("end",Y),i.removeListener("data",y),b=!0,!c.awaitDrain||t._writableState&&!t._writableState.needDrain||r()}var Z=!1;function y(l){m("ondata"),Z=!1;var e=t.write(l);!1!==e||Z||((1===c.pipesCount&&c.pipes===t||c.pipesCount>1&&-1!==H(c.pipes,t))&&!b&&(m("false write response, pause",i._readableState.awaitDrain),i._readableState.awaitDrain++,Z=!0),i.pause())}function p(l){m("onerror",l),Y(),t.removeListener("error",p),0===d(t,"error")&&t.emit("error",l)}function W(){t.removeListener("finish",G),Y()}function G(){m("onfinish"),t.removeListener("close",W),Y()}function Y(){m("unpipe"),i.unpipe(t)}return i.on("data",y),X(t,"error",p),t.once("close",W),t.once("finish",G),t.emit("pipe",i),c.flowing||(m("pipe resume"),i.resume()),t},N.prototype.unpipe=function(t){var l=this._readableState,e={hasUnpiped:!1};if(0===l.pipesCount)return this;if(1===l.pipesCount)return t&&t!==l.pipes||(t||(t=l.pipes),l.pipes=null,l.pipesCount=0,l.flowing=!1,t&&t.emit("unpipe",this,e)),this;if(!t){var i=l.pipes,n=l.pipesCount;l.pipes=null,l.pipesCount=0,l.flowing=!1;for(var c=0;c<n;c++)i[c].emit("unpipe",this,e);return this}var s=H(l.pipes,t);return-1===s||(l.pipes.splice(s,1),l.pipesCount-=1,1===l.pipesCount&&(l.pipes=l.pipes[0]),t.emit("unpipe",this,e)),this},N.prototype.on=function(t,l){var e=a.prototype.on.call(this,t,l);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var i=this._readableState;i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.emittedReadable=!1,i.reading?i.length&&z(this):n.nextTick(J,this))}return e},N.prototype.addListener=N.prototype.on,N.prototype.resume=function(){var t=this._readableState;return t.flowing||(m("resume"),t.flowing=!0,g(this,t)),this},N.prototype.pause=function(){return m("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(m("pause"),this._readableState.flowing=!1,this.emit("pause")),this},N.prototype.wrap=function(t){var l=this,e=this._readableState,i=!1;for(var n in t.on("end",(function(){if(m("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&l.push(t)}l.push(null)})),t.on("data",(function(n){if(m("wrapped data"),e.decoder&&(n=e.decoder.write(n)),(!e.objectMode||null!==n&&void 0!==n)&&(e.objectMode||n&&n.length)){var c=l.push(n);c||(i=!0,t.pause())}})),t)void 0===this[n]&&"function"===typeof t[n]&&(this[n]=function(l){return function(){return t[l].apply(t,arguments)}}(n));for(var c=0;c<G.length;c++)t.on(G[c],this.emit.bind(this,G[c]));return this._read=function(l){m("wrapped _read",l),i&&(i=!1,t.resume())},this},Object.defineProperty(N.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),N._fromList=v}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./_stream_duplex":508,"./internal/streams/BufferList":513,"./internal/streams/destroy":514,"./internal/streams/stream":515,_process:467,"core-util-is":328,events:367,inherits:387,isarray:389,"process-nextick-args":466,"safe-buffer":494,"string_decoder/":520,util:185}],511:[function(t,l,e){"use strict";l.exports=s;var i=t("./_stream_duplex"),n=Object.create(t("core-util-is"));function c(t,l){var e=this._transformState;e.transforming=!1;var i=e.writecb;if(!i)return this.emit("error",new Error("write callback called multiple times"));e.writechunk=null,e.writecb=null,null!=l&&this.push(l),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}function s(t){if(!(this instanceof s))return new s(t);i.call(this,t),this._transformState={afterTransform:c.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"===typeof t.transform&&(this._transform=t.transform),"function"===typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",d)}function d(){var t=this;"function"===typeof this._flush?this._flush((function(l,e){a(t,l,e)})):a(this,null,null)}function a(t,l,e){if(l)return t.emit("error",l);if(null!=e&&t.push(e),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}n.inherits=t("inherits"),n.inherits(s,i),s.prototype.push=function(t,l){return this._transformState.needTransform=!1,i.prototype.push.call(this,t,l)},s.prototype._transform=function(t,l,e){throw new Error("_transform() is not implemented")},s.prototype._write=function(t,l,e){var i=this._transformState;if(i.writecb=e,i.writechunk=t,i.writeencoding=l,!i.transforming){var n=this._readableState;(i.needTransform||n.needReadable||n.length<n.highWaterMark)&&this._read(n.highWaterMark)}},s.prototype._read=function(t){var l=this._transformState;null!==l.writechunk&&l.writecb&&!l.transforming?(l.transforming=!0,this._transform(l.writechunk,l.writeencoding,l.afterTransform)):l.needTransform=!0},s.prototype._destroy=function(t,l){var e=this;i.prototype._destroy.call(this,t,(function(t){l(t),e.emit("close")}))}},{"./_stream_duplex":508,"core-util-is":328,inherits:387}],512:[function(t,l,i){(function(e,i,n){"use strict";var c=t("process-nextick-args");function s(t){var l=this;this.next=null,this.entry=null,this.finish=function(){g(l,t)}}l.exports=X;var d,a=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?n:c.nextTick;X.WritableState=G;var u=Object.create(t("core-util-is"));u.inherits=t("inherits");var o={deprecate:t("util-deprecate")},r=t("./internal/streams/stream"),b=t("safe-buffer").Buffer,h=i.Uint8Array||function(){};function Z(t){return b.from(t)}function m(t){return b.isBuffer(t)||t instanceof h}var y,p=t("./internal/streams/destroy");function W(){}function G(l,e){d=d||t("./_stream_duplex"),l=l||{};var i=e instanceof d;this.objectMode=!!l.objectMode,i&&(this.objectMode=this.objectMode||!!l.writableObjectMode);var n=l.highWaterMark,c=l.writableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:i&&(c||0===c)?c:a,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===l.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=l.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){f(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function X(l){if(d=d||t("./_stream_duplex"),!y.call(X,this)&&!(this instanceof d))return new X(l);this._writableState=new G(l,this),this.writable=!0,l&&("function"===typeof l.write&&(this._write=l.write),"function"===typeof l.writev&&(this._writev=l.writev),"function"===typeof l.destroy&&(this._destroy=l.destroy),"function"===typeof l.final&&(this._final=l.final)),r.call(this)}function Y(t,l){var e=new Error("write after end");t.emit("error",e),c.nextTick(l,e)}function N(t,l,e,i){var n=!0,s=!1;return null===e?s=new TypeError("May not write null values to stream"):"string"===typeof e||void 0===e||l.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),c.nextTick(i,s),n=!1),n}function V(t,l,e){return t.objectMode||!1===t.decodeStrings||"string"!==typeof l||(l=b.from(l,e)),l}function M(t,l,e,i,n,c){if(!e){var s=V(l,i,n);i!==s&&(e=!0,n="buffer",i=s)}var d=l.objectMode?1:i.length;l.length+=d;var a=l.length<l.highWaterMark;if(a||(l.needDrain=!0),l.writing||l.corked){var u=l.lastBufferedRequest;l.lastBufferedRequest={chunk:i,encoding:n,isBuf:e,callback:c,next:null},u?u.next=l.lastBufferedRequest:l.bufferedRequest=l.lastBufferedRequest,l.bufferedRequestCount+=1}else L(t,l,!1,d,i,n,c);return a}function L(t,l,e,i,n,c,s){l.writelen=i,l.writecb=s,l.writing=!0,l.sync=!0,e?t._writev(n,l.onwrite):t._write(n,c,l.onwrite),l.sync=!1}function I(t,l,e,i,n){--l.pendingcb,e?(c.nextTick(n,i),c.nextTick(C,t,l),t._writableState.errorEmitted=!0,t.emit("error",i)):(n(i),t._writableState.errorEmitted=!0,t.emit("error",i),C(t,l))}function w(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function f(t,l){var e=t._writableState,i=e.sync,n=e.writecb;if(w(e),l)I(t,e,i,l,n);else{var c=x(e);c||e.corked||e.bufferProcessing||!e.bufferedRequest||z(t,e),i?a(R,t,e,c,n):R(t,e,c,n)}}function R(t,l,e,i){e||T(t,l),l.pendingcb--,i(),C(t,l)}function T(t,l){0===l.length&&l.needDrain&&(l.needDrain=!1,t.emit("drain"))}function z(t,l){l.bufferProcessing=!0;var e=l.bufferedRequest;if(t._writev&&e&&e.next){var i=l.bufferedRequestCount,n=new Array(i),c=l.corkedRequestsFree;c.entry=e;var d=0,a=!0;while(e)n[d]=e,e.isBuf||(a=!1),e=e.next,d+=1;n.allBuffers=a,L(t,l,!0,l.length,n,"",c.finish),l.pendingcb++,l.lastBufferedRequest=null,c.next?(l.corkedRequestsFree=c.next,c.next=null):l.corkedRequestsFree=new s(l),l.bufferedRequestCount=0}else{while(e){var u=e.chunk,o=e.encoding,r=e.callback,b=l.objectMode?1:u.length;if(L(t,l,!1,b,u,o,r),e=e.next,l.bufferedRequestCount--,l.writing)break}null===e&&(l.lastBufferedRequest=null)}l.bufferedRequest=e,l.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function S(t,l){t._final((function(e){l.pendingcb--,e&&t.emit("error",e),l.prefinished=!0,t.emit("prefinish"),C(t,l)}))}function k(t,l){l.prefinished||l.finalCalled||("function"===typeof t._final?(l.pendingcb++,l.finalCalled=!0,c.nextTick(S,t,l)):(l.prefinished=!0,t.emit("prefinish")))}function C(t,l){var e=x(l);return e&&(k(t,l),0===l.pendingcb&&(l.finished=!0,t.emit("finish"))),e}function J(t,l,e){l.ending=!0,C(t,l),e&&(l.finished?c.nextTick(e):t.once("finish",e)),l.ended=!0,t.writable=!1}function g(t,l,e){var i=t.entry;t.entry=null;while(i){var n=i.callback;l.pendingcb--,n(e),i=i.next}l.corkedRequestsFree?l.corkedRequestsFree.next=t:l.corkedRequestsFree=t}u.inherits(X,r),G.prototype.getBuffer=function(){var t=this.bufferedRequest,l=[];while(t)l.push(t),t=t.next;return l},function(){try{Object.defineProperty(G.prototype,"buffer",{get:o.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"===typeof Symbol&&Symbol.hasInstance&&"function"===typeof Function.prototype[Symbol.hasInstance]?(y=Function.prototype[Symbol.hasInstance],Object.defineProperty(X,Symbol.hasInstance,{value:function(t){return!!y.call(this,t)||this===X&&t&&t._writableState instanceof G}})):y=function(t){return t instanceof this},X.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},X.prototype.write=function(t,l,e){var i=this._writableState,n=!1,c=!i.objectMode&&m(t);return c&&!b.isBuffer(t)&&(t=Z(t)),"function"===typeof l&&(e=l,l=null),c?l="buffer":l||(l=i.defaultEncoding),"function"!==typeof e&&(e=W),i.ended?Y(this,e):(c||N(this,i,t,e))&&(i.pendingcb++,n=M(this,i,c,t,l,e)),n},X.prototype.cork=function(){var t=this._writableState;t.corked++},X.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||z(this,t))},X.prototype.setDefaultEncoding=function(t){if("string"===typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(X.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),X.prototype._write=function(t,l,e){e(new Error("_write() is not implemented"))},X.prototype._writev=null,X.prototype.end=function(t,l,e){var i=this._writableState;"function"===typeof t?(e=t,t=null,l=null):"function"===typeof l&&(e=l,l=null),null!==t&&void 0!==t&&this.write(t,l),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||J(this,i,e)},Object.defineProperty(X.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),X.prototype.destroy=p.destroy,X.prototype._undestroy=p.undestroy,X.prototype._destroy=function(t,l){this.end(),l(t)}}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},t("timers").setImmediate)},{"./_stream_duplex":508,"./internal/streams/destroy":514,"./internal/streams/stream":515,_process:467,"core-util-is":328,inherits:387,"process-nextick-args":466,"safe-buffer":494,timers:521,"util-deprecate":522}],513:[function(t,l,e){"use strict";function i(t,l){if(!(t instanceof l))throw new TypeError("Cannot call a class as a function")}var n=t("safe-buffer").Buffer,c=t("util");function s(t,l,e){t.copy(l,e)}l.exports=function(){function t(){i(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var l={data:t,next:null};this.length>0?this.tail.next=l:this.head=l,this.tail=l,++this.length},t.prototype.unshift=function(t){var l={data:t,next:this.head};0===this.length&&(this.tail=l),this.head=l,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";var l=this.head,e=""+l.data;while(l=l.next)e+=t+l.data;return e},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;var l=n.allocUnsafe(t>>>0),e=this.head,i=0;while(e)s(e.data,l,i),i+=e.data.length,e=e.next;return l},t}(),c&&c.inspect&&c.inspect.custom&&(l.exports.prototype[c.inspect.custom]=function(){var t=c.inspect({length:this.length});return this.constructor.name+" "+t})},{"safe-buffer":494,util:185}],514:[function(t,l,e){"use strict";var i=t("process-nextick-args");function n(t,l){var e=this,n=this._readableState&&this._readableState.destroyed,c=this._writableState&&this._writableState.destroyed;return n||c?(l?l(t):!t||this._writableState&&this._writableState.errorEmitted||i.nextTick(s,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!l&&t?(i.nextTick(s,e,t),e._writableState&&(e._writableState.errorEmitted=!0)):l&&l(t)})),this)}function c(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function s(t,l){t.emit("error",l)}l.exports={destroy:n,undestroy:c}},{"process-nextick-args":466}],515:[function(t,l,e){arguments[4][490][0].apply(e,arguments)},{dup:490,events:367}],516:[function(t,l,e){"use strict";l.exports=t("./readable").PassThrough},{"./readable":517}],517:[function(t,l,e){"use strict";e=l.exports=t("./lib/_stream_readable.js"),e.Stream=e,e.Readable=e,e.Writable=t("./lib/_stream_writable.js"),e.Duplex=t("./lib/_stream_duplex.js"),e.Transform=t("./lib/_stream_transform.js"),e.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(t,l,e){"use strict";l.exports=t("./readable").Transform},{"./readable":517}],519:[function(t,l,e){"use strict";l.exports=t("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(t,l,e){"use strict";var i=t("safe-buffer").Buffer,n=i.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function c(t){if(!t)return"utf8";var l;while(1)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(l)return;t=(""+t).toLowerCase(),l=!0}}function s(t){var l=c(t);if("string"!==typeof l&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return l||t}function d(t){var l;switch(this.encoding=s(t),this.encoding){case"utf16le":this.text=Z,this.end=m,l=4;break;case"utf8":this.fillLast=r,l=4;break;case"base64":this.text=y,this.end=p,l=3;break;default:return this.write=W,void(this.end=G)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(l)}function a(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function u(t,l,e){var i=l.length-1;if(i<e)return 0;var n=a(l[i]);return n>=0?(n>0&&(t.lastNeed=n-1),n):--i<e||-2===n?0:(n=a(l[i]),n>=0?(n>0&&(t.lastNeed=n-2),n):--i<e||-2===n?0:(n=a(l[i]),n>=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0))}function o(t,l,e){if(128!==(192&l[0]))return t.lastNeed=0,"<22>";if(t.lastNeed>1&&l.length>1){if(128!==(192&l[1]))return t.lastNeed=1,"<22>";if(t.lastNeed>2&&l.length>2&&128!==(192&l[2]))return t.lastNeed=2,"<22>"}}function r(t){var l=this.lastTotal-this.lastNeed,e=o(this,t,l);return void 0!==e?e:this.lastNeed<=t.length?(t.copy(this.lastChar,l,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,l,0,t.length),void(this.lastNeed-=t.length))}function b(t,l){var e=u(this,t,l);if(!this.lastNeed)return t.toString("utf8",l);this.lastTotal=e;var i=t.length-(e-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",l,i)}function h(t){var l=t&&t.length?this.write(t):"";return this.lastNeed?l+"<22>":l}function Z(t,l){if((t.length-l)%2===0){var e=t.toString("utf16le",l);if(e){var i=e.charCodeAt(e.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],e.slice(0,-1)}return e}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",l,t.length-1)}function m(t){var l=t&&t.length?this.write(t):"";if(this.lastNeed){var e=this.lastTotal-this.lastNeed;return l+this.lastChar.toString("utf16le",0,e)}return l}function y(t,l){var e=(t.length-l)%3;return 0===e?t.toString("base64",l):(this.lastNeed=3-e,this.lastTotal=3,1===e?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",l,t.length-e))}function p(t){var l=t&&t.length?this.write(t):"";return this.lastNeed?l+this.lastChar.toString("base64",0,3-this.lastNeed):l}function W(t){return t.toString(this.encoding)}function G(t){return t&&t.length?this.write(t):""}e.StringDecoder=d,d.prototype.write=function(t){if(0===t.length)return"";var l,e;if(this.lastNeed){if(l=this.fillLast(t),void 0===l)return"";e=this.lastNeed,this.lastNeed=0}else e=0;return e<t.length?l?l+this.text(t,e):this.text(t,e):l||""},d.prototype.end=h,d.prototype.text=b,d.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},{"safe-buffer":494}],521:[function(t,l,e){(function(l,i){"use strict";var n=t("process/browser.js").nextTick,c=Function.prototype.apply,s=Array.prototype.slice,d={},a=0;function u(t,l){this._id=t,this._clearFn=l}e.setTimeout=function(){return new u(c.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new u(c.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,l){clearTimeout(t._idleTimeoutId),t._idleTimeout=l},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var l=t._idleTimeout;l>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),l))},e.setImmediate="function"===typeof l?l:function(t){var l=a++,i=!(arguments.length<2)&&s.call(arguments,1);return d[l]=!0,n((function(){d[l]&&(i?t.apply(null,i):t.call(null),e.clearImmediate(l))})),l},e.clearImmediate="function"===typeof i?i:function(t){delete d[t]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(t,l,i){(function(t){"use strict";function e(t,l){if(i("noDeprecation"))return t;var e=!1;function n(){if(!e){if(i("throwDeprecation"))throw new Error(l);i("traceDeprecation")?console.trace(l):console.warn(l),e=!0}return t.apply(this,arguments)}return n}function i(l){try{if(!t.localStorage)return!1}catch(i){return!1}var e=t.localStorage[l];return null!=e&&"true"===String(e).toLowerCase()}l.exports=e}).call(this,"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],523:[function(t,l,e){"use strict";"function"===typeof Object.create?l.exports=function(t,l){t.super_=l,t.prototype=Object.create(l.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:l.exports=function(t,l){t.super_=l;var e=function(){};e.prototype=l.prototype,t.prototype=new e,t.prototype.constructor=t}},{}],524:[function(t,l,e){"use strict";function i(t){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}l.exports=function(t){return t&&"object"===i(t)&&"function"===typeof t.copy&&"function"===typeof t.fill&&"function"===typeof t.readUInt8}},{}],525:[function(t,l,i){(function(l,e){"use strict";function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var c=/%[sdj%]/g;i.format=function(t){if(!V(t)){for(var l=[],e=0;e<arguments.length;e++)l.push(a(arguments[e]));return l.join(" ")}e=1;for(var i=arguments,n=i.length,s=String(t).replace(c,(function(t){if("%%"===t)return"%";if(e>=n)return t;switch(t){case"%s":return String(i[e++]);case"%d":return Number(i[e++]);case"%j":try{return JSON.stringify(i[e++])}catch(l){return"[Circular]"}default:return t}})),d=i[e];e<n;d=i[++e])X(d)||!w(d)?s+=" "+d:s+=" "+a(d);return s},i.deprecate=function(t,n){if(L(e.process))return function(){return i.deprecate(t,n).apply(this,arguments)};if(!0===l.noDeprecation)return t;var c=!1;function s(){if(!c){if(l.throwDeprecation)throw new Error(n);l.traceDeprecation?console.trace(n):console.error(n),c=!0}return t.apply(this,arguments)}return s};var s,d={};function a(t,l){var e={seen:[],stylize:o};return arguments.length>=3&&(e.depth=arguments[2]),arguments.length>=4&&(e.colors=arguments[3]),G(l)?e.showHidden=l:l&&i._extend(e,l),L(e.showHidden)&&(e.showHidden=!1),L(e.depth)&&(e.depth=2),L(e.colors)&&(e.colors=!1),L(e.customInspect)&&(e.customInspect=!0),e.colors&&(e.stylize=u),b(e,t,e.depth)}function u(t,l){var e=a.styles[l];return e?"["+a.colors[e][0]+"m"+t+"["+a.colors[e][1]+"m":t}function o(t,l){return t}function r(t){var l={};return t.forEach((function(t,e){l[t]=!0})),l}function b(t,l,e){if(t.customInspect&&l&&T(l.inspect)&&l.inspect!==i.inspect&&(!l.constructor||l.constructor.prototype!==l)){var n=l.inspect(e,t);return V(n)||(n=b(t,n,e)),n}var c=h(t,l);if(c)return c;var s=Object.keys(l),d=r(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(l)),R(l)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return Z(l);if(0===s.length){if(T(l)){var a=l.name?": "+l.name:"";return t.stylize("[Function"+a+"]","special")}if(I(l))return t.stylize(RegExp.prototype.toString.call(l),"regexp");if(f(l))return t.stylize(Date.prototype.toString.call(l),"date");if(R(l))return Z(l)}var u,o="",G=!1,X=["{","}"];if(W(l)&&(G=!0,X=["[","]"]),T(l)){var Y=l.name?": "+l.name:"";o=" [Function"+Y+"]"}return I(l)&&(o=" "+RegExp.prototype.toString.call(l)),f(l)&&(o=" "+Date.prototype.toUTCString.call(l)),R(l)&&(o=" "+Z(l)),0!==s.length||G&&0!=l.length?e<0?I(l)?t.stylize(RegExp.prototype.toString.call(l),"regexp"):t.stylize("[Object]","special"):(t.seen.push(l),u=G?m(t,l,e,d,s):s.map((function(i){return y(t,l,e,d,i,G)})),t.seen.pop(),p(u,o,X)):X[0]+o+X[1]}function h(t,l){if(L(l))return t.stylize("undefined","undefined");if(V(l)){var e="'"+JSON.stringify(l).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(e,"string")}return N(l)?t.stylize(""+l,"number"):G(l)?t.stylize(""+l,"boolean"):X(l)?t.stylize("null","null"):void 0}function Z(t){return"["+Error.prototype.toString.call(t)+"]"}function m(t,l,e,i,n){for(var c=[],s=0,d=l.length;s<d;++s)J(l,String(s))?c.push(y(t,l,e,i,String(s),!0)):c.push("");return n.forEach((function(n){n.match(/^\d+$/)||c.push(y(t,l,e,i,n,!0))})),c}function y(t,l,e,i,n,c){var s,d,a;if(a=Object.getOwnPropertyDescriptor(l,n)||{value:l[n]},a.get?d=a.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):a.set&&(d=t.stylize("[Setter]","special")),J(i,n)||(s="["+n+"]"),d||(t.seen.indexOf(a.value)<0?(d=X(e)?b(t,a.value,null):b(t,a.value,e-1),d.indexOf("\n")>-1&&(d=c?d.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+d.split("\n").map((function(t){return" "+t})).join("\n"))):d=t.stylize("[Circular]","special")),L(s)){if(c&&n.match(/^\d+$/))return d;s=JSON.stringify(""+n),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+d}function p(t,l,e){var i=t.reduce((function(t,l){return l.indexOf("\n"),t+l.replace(/\u001b\[\d\d?m/g,"").length+1}),0);return i>60?e[0]+(""===l?"":l+"\n ")+" "+t.join(",\n ")+" "+e[1]:e[0]+l+" "+t.join(", ")+" "+e[1]}function W(t){return Array.isArray(t)}function G(t){return"boolean"===typeof t}function X(t){return null===t}function Y(t){return null==t}function N(t){return"number"===typeof t}function V(t){return"string"===typeof t}function M(t){return"symbol"===n(t)}function L(t){return void 0===t}function I(t){return w(t)&&"[object RegExp]"===x(t)}function w(t){return"object"===n(t)&&null!==t}function f(t){return w(t)&&"[object Date]"===x(t)}function R(t){return w(t)&&("[object Error]"===x(t)||t instanceof Error)}function T(t){return"function"===typeof t}function z(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===n(t)||"undefined"===typeof t}function x(t){return Object.prototype.toString.call(t)}function S(t){return t<10?"0"+t.toString(10):t.toString(10)}i.debuglog=function(t){if(L(s)&&(s=l.env.NODE_DEBUG||""),t=t.toUpperCase(),!d[t])if(new RegExp("\\b"+t+"\\b","i").test(s)){var e=l.pid;d[t]=function(){var l=i.format.apply(i,arguments);console.error("%s %d: %s",t,e,l)}}else d[t]=function(){};return d[t]},i.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},i.isArray=W,i.isBoolean=G,i.isNull=X,i.isNullOrUndefined=Y,i.isNumber=N,i.isString=V,i.isSymbol=M,i.isUndefined=L,i.isRegExp=I,i.isObject=w,i.isDate=f,i.isError=R,i.isFunction=T,i.isPrimitive=z,i.isBuffer=t("./support/isBuffer");var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(){var t=new Date,l=[S(t.getHours()),S(t.getMinutes()),S(t.getSeconds())].join(":");return[t.getDate(),k[t.getMonth()],l].join(" ")}function J(t,l){return Object.prototype.hasOwnProperty.call(t,l)}i.log=function(){console.log("%s - %s",C(),i.format.apply(i,arguments))},i.inherits=t("inherits"),i._extend=function(t,l){if(!l||!w(l))return t;var e=Object.keys(l),i=e.length;while(i--)t[e[i]]=l[e[i]];return t}}).call(this,t("_process"),"undefined"!==typeof e.g?e.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"v1",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"v3",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"v4",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"v5",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"NIL",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"validate",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.default}});var i=b(t("./v1.js")),n=b(t("./v3.js")),c=b(t("./v4.js")),s=b(t("./v5.js")),d=b(t("./nil.js")),a=b(t("./version.js")),u=b(t("./validate.js")),o=b(t("./stringify.js")),r=b(t("./parse.js"));function b(t){return t&&t.__esModule?t:{default:t}}},{"./nil.js":528,"./parse.js":529,"./stringify.js":533,"./v1.js":534,"./v3.js":535,"./v4.js":537,"./v5.js":538,"./validate.js":539,"./version.js":540}],527:[function(t,l,e){"use strict";function i(t){if("string"===typeof t){var l=unescape(encodeURIComponent(t));t=new Uint8Array(l.length);for(var e=0;e<l.length;++e)t[e]=l.charCodeAt(e)}return n(s(d(t),8*t.length))}function n(t){for(var l=[],e=32*t.length,i="0123456789abcdef",n=0;n<e;n+=8){var c=t[n>>5]>>>n%32&255,s=parseInt(i.charAt(c>>>4&15)+i.charAt(15&c),16);l.push(s)}return l}function c(t){return 14+(t+64>>>9<<4)+1}function s(t,l){t[l>>5]|=128<<l%32,t[c(l)-1]=l;for(var e=1732584193,i=-271733879,n=-1732584194,s=271733878,d=0;d<t.length;d+=16){var u=e,o=i,m=n,y=s;e=r(e,i,n,s,t[d],7,-680876936),s=r(s,e,i,n,t[d+1],12,-389564586),n=r(n,s,e,i,t[d+2],17,606105819),i=r(i,n,s,e,t[d+3],22,-1044525330),e=r(e,i,n,s,t[d+4],7,-176418897),s=r(s,e,i,n,t[d+5],12,1200080426),n=r(n,s,e,i,t[d+6],17,-1473231341),i=r(i,n,s,e,t[d+7],22,-45705983),e=r(e,i,n,s,t[d+8],7,1770035416),s=r(s,e,i,n,t[d+9],12,-1958414417),n=r(n,s,e,i,t[d+10],17,-42063),i=r(i,n,s,e,t[d+11],22,-1990404162),e=r(e,i,n,s,t[d+12],7,1804603682),s=r(s,e,i,n,t[d+13],12,-40341101),n=r(n,s,e,i,t[d+14],17,-1502002290),i=r(i,n,s,e,t[d+15],22,1236535329),e=b(e,i,n,s,t[d+1],5,-165796510),s=b(s,e,i,n,t[d+6],9,-1069501632),n=b(n,s,e,i,t[d+11],14,643717713),i=b(i,n,s,e,t[d],20,-373897302),e=b(e,i,n,s,t[d+5],5,-701558691),s=b(s,e,i,n,t[d+10],9,38016083),n=b(n,s,e,i,t[d+15],14,-660478335),i=b(i,n,s,e,t[d+4],20,-405537848),e=b(e,i,n,s,t[d+9],5,568446438),s=b(s,e,i,n,t[d+14],9,-1019803690),n=b(n,s,e,i,t[d+3],14,-187363961),i=b(i,n,s,e,t[d+8],20,1163531501),e=b(e,i,n,s,t[d+13],5,-1444681467),s=b(s,e,i,n,t[d+2],9,-51403784),n=b(n,s,e,i,t[d+7],14,1735328473),i=b(i,n,s,e,t[d+12],20,-1926607734),e=h(e,i,n,s,t[d+5],4,-378558),s=h(s,e,i,n,t[d+8],11,-2022574463),n=h(n,s,e,i,t[d+11],16,1839030562),i=h(i,n,s,e,t[d+14],23,-35309556),e=h(e,i,n,s,t[d+1],4,-1530992060),s=h(s,e,i,n,t[d+4],11,1272893353),n=h(n,s,e,i,t[d+7],16,-155497632),i=h(i,n,s,e,t[d+10],23,-1094730640),e=h(e,i,n,s,t[d+13],4,681279174),s=h(s,e,i,n,t[d],11,-358537222),n=h(n,s,e,i,t[d+3],16,-722521979),i=h(i,n,s,e,t[d+6],23,76029189),e=h(e,i,n,s,t[d+9],4,-640364487),s=h(s,e,i,n,t[d+12],11,-421815835),n=h(n,s,e,i,t[d+15],16,530742520),i=h(i,n,s,e,t[d+2],23,-995338651),e=Z(e,i,n,s,t[d],6,-198630844),s=Z(s,e,i,n,t[d+7],10,1126891415),n=Z(n,s,e,i,t[d+14],15,-1416354905),i=Z(i,n,s,e,t[d+5],21,-57434055),e=Z(e,i,n,s,t[d+12],6,1700485571),s=Z(s,e,i,n,t[d+3],10,-1894986606),n=Z(n,s,e,i,t[d+10],15,-1051523),i=Z(i,n,s,e,t[d+1],21,-2054922799),e=Z(e,i,n,s,t[d+8],6,1873313359),s=Z(s,e,i,n,t[d+15],10,-30611744),n=Z(n,s,e,i,t[d+6],15,-1560198380),i=Z(i,n,s,e,t[d+13],21,1309151649),e=Z(e,i,n,s,t[d+4],6,-145523070),s=Z(s,e,i,n,t[d+11],10,-1120210379),n=Z(n,s,e,i,t[d+2],15,718787259),i=Z(i,n,s,e,t[d+9],21,-343485551),e=a(e,u),i=a(i,o),n=a(n,m),s=a(s,y)}return[e,i,n,s]}function d(t){if(0===t.length)return[];for(var l=8*t.length,e=new Uint32Array(c(l)),i=0;i<l;i+=8)e[i>>5]|=(255&t[i/8])<<i%32;return e}function a(t,l){var e=(65535&t)+(65535&l),i=(t>>16)+(l>>16)+(e>>16);return i<<16|65535&e}function u(t,l){return t<<l|t>>>32-l}function o(t,l,e,i,n,c){return a(u(a(a(l,t),a(i,c)),n),e)}function r(t,l,e,i,n,c,s){return o(l&e|~l&i,t,l,n,c,s)}function b(t,l,e,i,n,c,s){return o(l&i|e&~i,t,l,n,c,s)}function h(t,l,e,i,n,c,s){return o(l^e^i,t,l,n,c,s)}function Z(t,l,e,i,n,c,s){return o(e^(l|~i),t,l,n,c,s)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var m=i;e.default=m},{}],528:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i="00000000-0000-0000-0000-000000000000";e.default=i},{}],529:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n(t("./validate.js"));function n(t){return t&&t.__esModule?t:{default:t}}function c(t){if(!(0,i.default)(t))throw TypeError("Invalid UUID");var l,e=new Uint8Array(16);return e[0]=(l=parseInt(t.slice(0,8),16))>>>24,e[1]=l>>>16&255,e[2]=l>>>8&255,e[3]=255&l,e[4]=(l=parseInt(t.slice(9,13),16))>>>8,e[5]=255&l,e[6]=(l=parseInt(t.slice(14,18),16))>>>8,e[7]=255&l,e[8]=(l=parseInt(t.slice(19,23),16))>>>8,e[9]=255&l,e[10]=(l=parseInt(t.slice(24,36),16))/1099511627776&255,e[11]=l/4294967296&255,e[12]=l>>>24&255,e[13]=l>>>16&255,e[14]=l>>>8&255,e[15]=255&l,e}var s=c;e.default=s},{"./validate.js":539}],530:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;e.default=i},{}],531:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=c;var i="undefined"!==typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!==typeof msCrypto&&"function"===typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),n=new Uint8Array(16);function c(){if(!i)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(n)}},{}],532:[function(t,l,e){"use strict";function i(t,l,e,i){switch(t){case 0:return l&e^~l&i;case 1:return l^e^i;case 2:return l&e^l&i^e&i;case 3:return l^e^i}}function n(t,l){return t<<l|t>>>32-l}function c(t){var l=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"===typeof t){var c=unescape(encodeURIComponent(t));t=[];for(var s=0;s<c.length;++s)t.push(c.charCodeAt(s))}else Array.isArray(t)||(t=Array.prototype.slice.call(t));t.push(128);for(var d=t.length/4+2,a=Math.ceil(d/16),u=new Array(a),o=0;o<a;++o){for(var r=new Uint32Array(16),b=0;b<16;++b)r[b]=t[64*o+4*b]<<24|t[64*o+4*b+1]<<16|t[64*o+4*b+2]<<8|t[64*o+4*b+3];u[o]=r}u[a-1][14]=8*(t.length-1)/Math.pow(2,32),u[a-1][14]=Math.floor(u[a-1][14]),u[a-1][15]=8*(t.length-1)&4294967295;for(var h=0;h<a;++h){for(var Z=new Uint32Array(80),m=0;m<16;++m)Z[m]=u[h][m];for(var y=16;y<80;++y)Z[y]=n(Z[y-3]^Z[y-8]^Z[y-14]^Z[y-16],1);for(var p=e[0],W=e[1],G=e[2],X=e[3],Y=e[4],N=0;N<80;++N){var V=Math.floor(N/20),M=n(p,5)+i(V,W,G,X)+Y+l[V]+Z[N]>>>0;Y=X,X=G,G=n(W,30)>>>0,W=p,p=M}e[0]=e[0]+p>>>0,e[1]=e[1]+W>>>0,e[2]=e[2]+G>>>0,e[3]=e[3]+X>>>0,e[4]=e[4]+Y>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,255&e[0],e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,255&e[1],e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,255&e[2],e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,255&e[3],e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,255&e[4]]}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=c;e.default=s},{}],533:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n(t("./validate.js"));function n(t){return t&&t.__esModule?t:{default:t}}for(var c=[],s=0;s<256;++s)c.push((s+256).toString(16).substr(1));function d(t){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=(c[t[l+0]]+c[t[l+1]]+c[t[l+2]]+c[t[l+3]]+"-"+c[t[l+4]]+c[t[l+5]]+"-"+c[t[l+6]]+c[t[l+7]]+"-"+c[t[l+8]]+c[t[l+9]]+"-"+c[t[l+10]]+c[t[l+11]]+c[t[l+12]]+c[t[l+13]]+c[t[l+14]]+c[t[l+15]]).toLowerCase();if(!(0,i.default)(e))throw TypeError("Stringified UUID is invalid");return e}var a=d;e.default=a},{"./validate.js":539}],534:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i,n,c=d(t("./rng.js")),s=d(t("./stringify.js"));function d(t){return t&&t.__esModule?t:{default:t}}var a=0,u=0;function o(t,l,e){var d=l&&e||0,o=l||new Array(16);t=t||{};var r=t.node||i,b=void 0!==t.clockseq?t.clockseq:n;if(null==r||null==b){var h=t.random||(t.rng||c.default)();null==r&&(r=i=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==b&&(b=n=16383&(h[6]<<8|h[7]))}var Z=void 0!==t.msecs?t.msecs:Date.now(),m=void 0!==t.nsecs?t.nsecs:u+1,y=Z-a+(m-u)/1e4;if(y<0&&void 0===t.clockseq&&(b=b+1&16383),(y<0||Z>a)&&void 0===t.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");a=Z,u=m,n=b,Z+=122192928e5;var p=(1e4*(268435455&Z)+m)%4294967296;o[d++]=p>>>24&255,o[d++]=p>>>16&255,o[d++]=p>>>8&255,o[d++]=255&p;var W=Z/4294967296*1e4&268435455;o[d++]=W>>>8&255,o[d++]=255&W,o[d++]=W>>>24&15|16,o[d++]=W>>>16&255,o[d++]=b>>>8|128,o[d++]=255&b;for(var G=0;G<6;++G)o[d+G]=r[G];return l||(0,s.default)(o)}var r=o;e.default=r},{"./rng.js":531,"./stringify.js":533}],535:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=c(t("./v35.js")),n=c(t("./md5.js"));function c(t){return t&&t.__esModule?t:{default:t}}var s=(0,i.default)("v3",48,n.default),d=s;e.default=d},{"./md5.js":527,"./v35.js":536}],536:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=u,e.URL=e.DNS=void 0;var i=c(t("./stringify.js")),n=c(t("./parse.js"));function c(t){return t&&t.__esModule?t:{default:t}}function s(t){t=unescape(encodeURIComponent(t));for(var l=[],e=0;e<t.length;++e)l.push(t.charCodeAt(e));return l}var d="6ba7b810-9dad-11d1-80b4-00c04fd430c8";e.DNS=d;var a="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function u(t,l,e){function c(t,c,d,a){if("string"===typeof t&&(t=s(t)),"string"===typeof c&&(c=(0,n.default)(c)),16!==c.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+t.length);if(u.set(c),u.set(t,c.length),u=e(u),u[6]=15&u[6]|l,u[8]=63&u[8]|128,d){a=a||0;for(var o=0;o<16;++o)d[a+o]=u[o];return d}return(0,i.default)(u)}try{c.name=t}catch(u){}return c.DNS=d,c.URL=a,c}e.URL=a},{"./parse.js":529,"./stringify.js":533}],537:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=c(t("./rng.js")),n=c(t("./stringify.js"));function c(t){return t&&t.__esModule?t:{default:t}}function s(t,l,e){t=t||{};var c=t.random||(t.rng||i.default)();if(c[6]=15&c[6]|64,c[8]=63&c[8]|128,l){e=e||0;for(var s=0;s<16;++s)l[e+s]=c[s];return l}return(0,n.default)(c)}var d=s;e.default=d},{"./rng.js":531,"./stringify.js":533}],538:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=c(t("./v35.js")),n=c(t("./sha1.js"));function c(t){return t&&t.__esModule?t:{default:t}}var s=(0,i.default)("v5",80,n.default),d=s;e.default=d},{"./sha1.js":532,"./v35.js":536}],539:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n(t("./regex.js"));function n(t){return t&&t.__esModule?t:{default:t}}function c(t){return"string"===typeof t&&i.default.test(t)}var s=c;e.default=s},{"./regex.js":530}],540:[function(t,l,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n(t("./validate.js"));function n(t){return t&&t.__esModule?t:{default:t}}function c(t){if(!(0,i.default)(t))throw TypeError("Invalid UUID");return parseInt(t.substr(14,1),16)}var s=c;e.default=s},{"./validate.js":539}],541:[function(t,l,e){"use strict";
/**
* Character classes and associated utilities for the 5th edition of XML 1.0.
*
* @author Louis-Dominique Dubeau
* @license MIT
* @copyright Louis-Dominique Dubeau
*/Object.defineProperty(e,"__esModule",{value:!0}),e.CHAR="\t\n\r -퟿-<2D>𐀀-􏿿",e.S=" \t\r\n",e.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-<2D>𐀀-󯿿",e.NAME_CHAR="-"+e.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",e.CHAR_RE=new RegExp("^["+e.CHAR+"]$","u"),e.S_RE=new RegExp("^["+e.S+"]+$","u"),e.NAME_START_CHAR_RE=new RegExp("^["+e.NAME_START_CHAR+"]$","u"),e.NAME_CHAR_RE=new RegExp("^["+e.NAME_CHAR+"]$","u"),e.NAME_RE=new RegExp("^["+e.NAME_START_CHAR+"]["+e.NAME_CHAR+"]*$","u"),e.NMTOKEN_RE=new RegExp("^["+e.NAME_CHAR+"]+$","u");var i=9,n=10,c=13,s=32;function d(t){return t>=s&&t<=55295||t===n||t===c||t===i||t>=57344&&t<=65533||t>=65536&&t<=1114111}function a(t){return t===s||t===n||t===c||t===i}function u(t){return t>=65&&t<=90||t>=97&&t<=122||58===t||95===t||8204===t||8205===t||t>=192&&t<=214||t>=216&&t<=246||t>=248&&t<=767||t>=880&&t<=893||t>=895&&t<=8191||t>=8304&&t<=8591||t>=11264&&t<=12271||t>=12289&&t<=55295||t>=63744&&t<=64975||t>=65008&&t<=65533||t>=65536&&t<=983039}function o(t){return u(t)||t>=48&&t<=57||45===t||46===t||183===t||t>=768&&t<=879||t>=8255&&t<=8256}e.S_LIST=[s,n,c,i],e.isChar=d,e.isS=a,e.isNameStartChar=u,e.isNameChar=o},{}],542:[function(t,l,e){"use strict";
/**
* Character classes and associated utilities for the 2nd edition of XML 1.1.
*
* @author Louis-Dominique Dubeau
* @license MIT
* @copyright Louis-Dominique Dubeau
*/Object.defineProperty(e,"__esModule",{value:!0}),e.CHAR="-퟿-<2D>𐀀-􏿿",e.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",e.S=" \t\r\n",e.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-<2D>𐀀-󯿿",e.NAME_CHAR="-"+e.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",e.CHAR_RE=new RegExp("^["+e.CHAR+"]$","u"),e.RESTRICTED_CHAR_RE=new RegExp("^["+e.RESTRICTED_CHAR+"]$","u"),e.S_RE=new RegExp("^["+e.S+"]+$","u"),e.NAME_START_CHAR_RE=new RegExp("^["+e.NAME_START_CHAR+"]$","u"),e.NAME_CHAR_RE=new RegExp("^["+e.NAME_CHAR+"]$","u"),e.NAME_RE=new RegExp("^["+e.NAME_START_CHAR+"]["+e.NAME_CHAR+"]*$","u"),e.NMTOKEN_RE=new RegExp("^["+e.NAME_CHAR+"]+$","u");var i=9,n=10,c=13,s=32;function d(t){return t>=1&&t<=55295||t>=57344&&t<=65533||t>=65536&&t<=1114111}function a(t){return t>=1&&t<=8||11===t||12===t||t>=14&&t<=31||t>=127&&t<=132||t>=134&&t<=159}function u(t){return 9===t||10===t||13===t||t>31&&t<127||133===t||t>159&&t<=55295||t>=57344&&t<=65533||t>=65536&&t<=1114111}function o(t){return t===s||t===n||t===c||t===i}function r(t){return t>=65&&t<=90||t>=97&&t<=122||58===t||95===t||8204===t||8205===t||t>=192&&t<=214||t>=216&&t<=246||t>=248&&t<=767||t>=880&&t<=893||t>=895&&t<=8191||t>=8304&&t<=8591||t>=11264&&t<=12271||t>=12289&&t<=55295||t>=63744&&t<=64975||t>=65008&&t<=65533||t>=65536&&t<=983039}function b(t){return r(t)||t>=48&&t<=57||45===t||46===t||183===t||t>=768&&t<=879||t>=8255&&t<=8256}e.S_LIST=[s,n,c,i],e.isChar=d,e.isRestrictedChar=a,e.isCharAndNotRestricted=u,e.isS=o,e.isNameStartChar=r,e.isNameChar=b},{}],543:[function(t,l,e){"use strict";
/**
* Character class utilities for XML NS 1.0 edition 3.
*
* @author Louis-Dominique Dubeau
* @license MIT
* @copyright Louis-Dominique Dubeau
*/function i(t){return t>=65&&t<=90||95===t||t>=97&&t<=122||t>=192&&t<=214||t>=216&&t<=246||t>=248&&t<=767||t>=880&&t<=893||t>=895&&t<=8191||t>=8204&&t<=8205||t>=8304&&t<=8591||t>=11264&&t<=12271||t>=12289&&t<=55295||t>=63744&&t<=64975||t>=65008&&t<=65533||t>=65536&&t<=983039}function n(t){return i(t)||45===t||46===t||t>=48&&t<=57||183===t||t>=768&&t<=879||t>=8255&&t<=8256}Object.defineProperty(e,"__esModule",{value:!0}),e.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-<2D>𐀀-󯿿",e.NC_NAME_CHAR="-"+e.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",e.NC_NAME_START_CHAR_RE=new RegExp("^["+e.NC_NAME_START_CHAR+"]$","u"),e.NC_NAME_CHAR_RE=new RegExp("^["+e.NC_NAME_CHAR+"]$","u"),e.NC_NAME_RE=new RegExp("^["+e.NC_NAME_START_CHAR+"]["+e.NC_NAME_CHAR+"]*$","u"),e.isNCNameStartChar=i,e.isNCNameChar=n},{}]},{},[15])(15)}))},550:function(t,l,e){var i;
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/t=e.nmd(t),function(){var n,c="4.17.21",s=200,d="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",u="Invalid `variable` option passed into `_.template`",o="__lodash_hash_undefined__",r=500,b="__lodash_placeholder__",h=1,Z=2,m=4,y=1,p=2,W=1,G=2,X=4,Y=8,N=16,V=32,M=64,L=128,I=256,w=512,f=30,R="...",T=800,z=16,x=1,S=2,k=3,C=1/0,J=9007199254740991,g=17976931348623157e292,F=NaN,j=4294967295,v=j-1,D=j>>>1,U=[["ary",L],["bind",W],["bindKey",G],["curry",Y],["curryRight",N],["flip",w],["partial",V],["partialRight",M],["rearg",I]],O="[object Arguments]",K="[object Array]",E="[object AsyncFunction]",H="[object Boolean]",Q="[object Date]",B="[object DOMException]",P="[object Error]",A="[object Function]",_="[object GeneratorFunction]",q="[object Map]",$="[object Number]",tt="[object Null]",lt="[object Object]",et="[object Promise]",it="[object Proxy]",nt="[object RegExp]",ct="[object Set]",st="[object String]",dt="[object Symbol]",at="[object Undefined]",ut="[object WeakMap]",ot="[object WeakSet]",rt="[object ArrayBuffer]",bt="[object DataView]",ht="[object Float32Array]",Zt="[object Float64Array]",mt="[object Int8Array]",yt="[object Int16Array]",pt="[object Int32Array]",Wt="[object Uint8Array]",Gt="[object Uint8ClampedArray]",Xt="[object Uint16Array]",Yt="[object Uint32Array]",Nt=/\b__p \+= '';/g,Vt=/\b(__p \+=) '' \+/g,Mt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Lt=/&(?:amp|lt|gt|quot|#39);/g,It=/[&<>"']/g,wt=RegExp(Lt.source),ft=RegExp(It.source),Rt=/<%-([\s\S]+?)%>/g,Tt=/<%([\s\S]+?)%>/g,zt=/<%=([\s\S]+?)%>/g,xt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,St=/^\w*$/,kt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ct=/[\\^$.*+?()[\]{}|]/g,Jt=RegExp(Ct.source),gt=/^\s+/,Ft=/\s/,jt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,vt=/\{\n\/\* \[wrapped with (.+)\] \*/,Dt=/,? & /,Ut=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ot=/[()=,{}\[\]\/\s]/,Kt=/\\(\\)?/g,Et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ht=/\w*$/,Qt=/^[-+]0x[0-9a-f]+$/i,Bt=/^0b[01]+$/i,Pt=/^\[object .+?Constructor\]$/,At=/^0o[0-7]+$/i,_t=/^(?:0|[1-9]\d*)$/,qt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,$t=/($^)/,tl=/['\n\r\u2028\u2029\\]/g,ll="\\ud800-\\udfff",el="\\u0300-\\u036f",il="\\ufe20-\\ufe2f",nl="\\u20d0-\\u20ff",cl=el+il+nl,sl="\\u2700-\\u27bf",dl="a-z\\xdf-\\xf6\\xf8-\\xff",al="\\xac\\xb1\\xd7\\xf7",ul="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ol="\\u2000-\\u206f",rl=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",bl="A-Z\\xc0-\\xd6\\xd8-\\xde",hl="\\ufe0e\\ufe0f",Zl=al+ul+ol+rl,ml="[']",yl="["+ll+"]",pl="["+Zl+"]",Wl="["+cl+"]",Gl="\\d+",Xl="["+sl+"]",Yl="["+dl+"]",Nl="[^"+ll+Zl+Gl+sl+dl+bl+"]",Vl="\\ud83c[\\udffb-\\udfff]",Ml="(?:"+Wl+"|"+Vl+")",Ll="[^"+ll+"]",Il="(?:\\ud83c[\\udde6-\\uddff]){2}",wl="[\\ud800-\\udbff][\\udc00-\\udfff]",fl="["+bl+"]",Rl="\\u200d",Tl="(?:"+Yl+"|"+Nl+")",zl="(?:"+fl+"|"+Nl+")",xl="(?:"+ml+"(?:d|ll|m|re|s|t|ve))?",Sl="(?:"+ml+"(?:D|LL|M|RE|S|T|VE))?",kl=Ml+"?",Cl="["+hl+"]?",Jl="(?:"+Rl+"(?:"+[Ll,Il,wl].join("|")+")"+Cl+kl+")*",gl="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Fl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",jl=Cl+kl+Jl,vl="(?:"+[Xl,Il,wl].join("|")+")"+jl,Dl="(?:"+[Ll+Wl+"?",Wl,Il,wl,yl].join("|")+")",Ul=RegExp(ml,"g"),Ol=RegExp(Wl,"g"),Kl=RegExp(Vl+"(?="+Vl+")|"+Dl+jl,"g"),El=RegExp([fl+"?"+Yl+"+"+xl+"(?="+[pl,fl,"$"].join("|")+")",zl+"+"+Sl+"(?="+[pl,fl+Tl,"$"].join("|")+")",fl+"?"+Tl+"+"+xl,fl+"+"+Sl,Fl,gl,Gl,vl].join("|"),"g"),Hl=RegExp("["+Rl+ll+cl+hl+"]"),Ql=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Bl=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Pl=-1,Al={};Al[ht]=Al[Zt]=Al[mt]=Al[yt]=Al[pt]=Al[Wt]=Al[Gt]=Al[Xt]=Al[Yt]=!0,Al[O]=Al[K]=Al[rt]=Al[H]=Al[bt]=Al[Q]=Al[P]=Al[A]=Al[q]=Al[$]=Al[lt]=Al[nt]=Al[ct]=Al[st]=Al[ut]=!1;var _l={};_l[O]=_l[K]=_l[rt]=_l[bt]=_l[H]=_l[Q]=_l[ht]=_l[Zt]=_l[mt]=_l[yt]=_l[pt]=_l[q]=_l[$]=_l[lt]=_l[nt]=_l[ct]=_l[st]=_l[dt]=_l[Wt]=_l[Gt]=_l[Xt]=_l[Yt]=!0,_l[P]=_l[A]=_l[ut]=!1;var ql={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},$l={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},te={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},le={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ee=parseFloat,ie=parseInt,ne="object"==typeof e.g&&e.g&&e.g.Object===Object&&e.g,ce="object"==typeof self&&self&&self.Object===Object&&self,se=ne||ce||Function("return this")(),de=l&&!l.nodeType&&l,ae=de&&t&&!t.nodeType&&t,ue=ae&&ae.exports===de,oe=ue&&ne.process,re=function(){try{var t=ae&&ae.require&&ae.require("util").types;return t||oe&&oe.binding&&oe.binding("util")}catch(l){}}(),be=re&&re.isArrayBuffer,he=re&&re.isDate,Ze=re&&re.isMap,me=re&&re.isRegExp,ye=re&&re.isSet,pe=re&&re.isTypedArray;function We(t,l,e){switch(e.length){case 0:return t.call(l);case 1:return t.call(l,e[0]);case 2:return t.call(l,e[0],e[1]);case 3:return t.call(l,e[0],e[1],e[2])}return t.apply(l,e)}function Ge(t,l,e,i){var n=-1,c=null==t?0:t.length;while(++n<c){var s=t[n];l(i,s,e(s),t)}return i}function Xe(t,l){var e=-1,i=null==t?0:t.length;while(++e<i)if(!1===l(t[e],e,t))break;return t}function Ye(t,l){var e=null==t?0:t.length;while(e--)if(!1===l(t[e],e,t))break;return t}function Ne(t,l){var e=-1,i=null==t?0:t.length;while(++e<i)if(!l(t[e],e,t))return!1;return!0}function Ve(t,l){var e=-1,i=null==t?0:t.length,n=0,c=[];while(++e<i){var s=t[e];l(s,e,t)&&(c[n++]=s)}return c}function Me(t,l){var e=null==t?0:t.length;return!!e&&Je(t,l,0)>-1}function Le(t,l,e){var i=-1,n=null==t?0:t.length;while(++i<n)if(e(l,t[i]))return!0;return!1}function Ie(t,l){var e=-1,i=null==t?0:t.length,n=Array(i);while(++e<i)n[e]=l(t[e],e,t);return n}function we(t,l){var e=-1,i=l.length,n=t.length;while(++e<i)t[n+e]=l[e];return t}function fe(t,l,e,i){var n=-1,c=null==t?0:t.length;i&&c&&(e=t[++n]);while(++n<c)e=l(e,t[n],n,t);return e}function Re(t,l,e,i){var n=null==t?0:t.length;i&&n&&(e=t[--n]);while(n--)e=l(e,t[n],n,t);return e}function Te(t,l){var e=-1,i=null==t?0:t.length;while(++e<i)if(l(t[e],e,t))return!0;return!1}var ze=ve("length");function xe(t){return t.split("")}function Se(t){return t.match(Ut)||[]}function ke(t,l,e){var i;return e(t,(function(t,e,n){if(l(t,e,n))return i=e,!1})),i}function Ce(t,l,e,i){var n=t.length,c=e+(i?1:-1);while(i?c--:++c<n)if(l(t[c],c,t))return c;return-1}function Je(t,l,e){return l===l?bi(t,l,e):Ce(t,Fe,e)}function ge(t,l,e,i){var n=e-1,c=t.length;while(++n<c)if(i(t[n],l))return n;return-1}function Fe(t){return t!==t}function je(t,l){var e=null==t?0:t.length;return e?Ke(t,l)/e:F}function ve(t){return function(l){return null==l?n:l[t]}}function De(t){return function(l){return null==t?n:t[l]}}function Ue(t,l,e,i,n){return n(t,(function(t,n,c){e=i?(i=!1,t):l(e,t,n,c)})),e}function Oe(t,l){var e=t.length;t.sort(l);while(e--)t[e]=t[e].value;return t}function Ke(t,l){var e,i=-1,c=t.length;while(++i<c){var s=l(t[i]);s!==n&&(e=e===n?s:e+s)}return e}function Ee(t,l){var e=-1,i=Array(t);while(++e<t)i[e]=l(e);return i}function He(t,l){return Ie(l,(function(l){return[l,t[l]]}))}function Qe(t){return t?t.slice(0,yi(t)+1).replace(gt,""):t}function Be(t){return function(l){return t(l)}}function Pe(t,l){return Ie(l,(function(l){return t[l]}))}function Ae(t,l){return t.has(l)}function _e(t,l){var e=-1,i=t.length;while(++e<i&&Je(l,t[e],0)>-1);return e}function qe(t,l){var e=t.length;while(e--&&Je(l,t[e],0)>-1);return e}function $e(t,l){var e=t.length,i=0;while(e--)t[e]===l&&++i;return i}var ti=De(ql),li=De($l);function ei(t){return"\\"+le[t]}function ii(t,l){return null==t?n:t[l]}function ni(t){return Hl.test(t)}function ci(t){return Ql.test(t)}function si(t){var l,e=[];while(!(l=t.next()).done)e.push(l.value);return e}function di(t){var l=-1,e=Array(t.size);return t.forEach((function(t,i){e[++l]=[i,t]})),e}function ai(t,l){return function(e){return t(l(e))}}function ui(t,l){var e=-1,i=t.length,n=0,c=[];while(++e<i){var s=t[e];s!==l&&s!==b||(t[e]=b,c[n++]=e)}return c}function oi(t){var l=-1,e=Array(t.size);return t.forEach((function(t){e[++l]=t})),e}function ri(t){var l=-1,e=Array(t.size);return t.forEach((function(t){e[++l]=[t,t]})),e}function bi(t,l,e){var i=e-1,n=t.length;while(++i<n)if(t[i]===l)return i;return-1}function hi(t,l,e){var i=e+1;while(i--)if(t[i]===l)return i;return i}function Zi(t){return ni(t)?Wi(t):ze(t)}function mi(t){return ni(t)?Gi(t):xe(t)}function yi(t){var l=t.length;while(l--&&Ft.test(t.charAt(l)));return l}var pi=De(te);function Wi(t){var l=Kl.lastIndex=0;while(Kl.test(t))++l;return l}function Gi(t){return t.match(Kl)||[]}function Xi(t){return t.match(El)||[]}var Yi=function t(l){l=null==l?se:Ni.defaults(se.Object(),l,Ni.pick(se,Bl));var e=l.Array,i=l.Date,Ft=l.Error,Ut=l.Function,ll=l.Math,el=l.Object,il=l.RegExp,nl=l.String,cl=l.TypeError,sl=e.prototype,dl=Ut.prototype,al=el.prototype,ul=l["__core-js_shared__"],ol=dl.toString,rl=al.hasOwnProperty,bl=0,hl=function(){var t=/[^.]+$/.exec(ul&&ul.keys&&ul.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Zl=al.toString,ml=ol.call(el),yl=se._,pl=il("^"+ol.call(rl).replace(Ct,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Wl=ue?l.Buffer:n,Gl=l.Symbol,Xl=l.Uint8Array,Yl=Wl?Wl.allocUnsafe:n,Nl=ai(el.getPrototypeOf,el),Vl=el.create,Ml=al.propertyIsEnumerable,Ll=sl.splice,Il=Gl?Gl.isConcatSpreadable:n,wl=Gl?Gl.iterator:n,fl=Gl?Gl.toStringTag:n,Rl=function(){try{var t=Hs(el,"defineProperty");return t({},"",{}),t}catch(l){}}(),Tl=l.clearTimeout!==se.clearTimeout&&l.clearTimeout,zl=i&&i.now!==se.Date.now&&i.now,xl=l.setTimeout!==se.setTimeout&&l.setTimeout,Sl=ll.ceil,kl=ll.floor,Cl=el.getOwnPropertySymbols,Jl=Wl?Wl.isBuffer:n,gl=l.isFinite,Fl=sl.join,jl=ai(el.keys,el),vl=ll.max,Dl=ll.min,Kl=i.now,El=l.parseInt,Hl=ll.random,Ql=sl.reverse,ql=Hs(l,"DataView"),$l=Hs(l,"Map"),te=Hs(l,"Promise"),le=Hs(l,"Set"),ne=Hs(l,"WeakMap"),ce=Hs(el,"create"),de=ne&&new ne,ae={},oe=zd(ql),re=zd($l),ze=zd(te),xe=zd(le),De=zd(ne),bi=Gl?Gl.prototype:n,Wi=bi?bi.valueOf:n,Gi=bi?bi.toString:n;function Yi(t){if(Lo(t)&&!ao(t)&&!(t instanceof Ii)){if(t instanceof Li)return t;if(rl.call(t,"__wrapped__"))return Sd(t)}return new Li(t)}var Vi=function(){function t(){}return function(l){if(!Mo(l))return{};if(Vl)return Vl(l);t.prototype=l;var e=new t;return t.prototype=n,e}}();function Mi(){}function Li(t,l){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!l,this.__index__=0,this.__values__=n}function Ii(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=j,this.__views__=[]}function wi(){var t=new Ii(this.__wrapped__);return t.__actions__=is(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=is(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=is(this.__views__),t}function fi(){if(this.__filtered__){var t=new Ii(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function Ri(){var t=this.__wrapped__.value(),l=this.__dir__,e=ao(t),i=l<0,n=e?t.length:0,c=_s(0,n,this.__views__),s=c.start,d=c.end,a=d-s,u=i?d:s-1,o=this.__iteratees__,r=o.length,b=0,h=Dl(a,this.__takeCount__);if(!e||!i&&n==a&&h==a)return Fc(t,this.__actions__);var Z=[];t:while(a--&&b<h){u+=l;var m=-1,y=t[u];while(++m<r){var p=o[m],W=p.iteratee,G=p.type,X=W(y);if(G==S)y=X;else if(!X){if(G==x)continue t;break t}}Z[b++]=y}return Z}function Ti(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function zi(){this.__data__=ce?ce(null):{},this.size=0}function xi(t){var l=this.has(t)&&delete this.__data__[t];return this.size-=l?1:0,l}function Si(t){var l=this.__data__;if(ce){var e=l[t];return e===o?n:e}return rl.call(l,t)?l[t]:n}function ki(t){var l=this.__data__;return ce?l[t]!==n:rl.call(l,t)}function Ci(t,l){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=ce&&l===n?o:l,this}function Ji(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function gi(){this.__data__=[],this.size=0}function Fi(t){var l=this.__data__,e=on(l,t);if(e<0)return!1;var i=l.length-1;return e==i?l.pop():Ll.call(l,e,1),--this.size,!0}function ji(t){var l=this.__data__,e=on(l,t);return e<0?n:l[e][1]}function vi(t){return on(this.__data__,t)>-1}function Di(t,l){var e=this.__data__,i=on(e,t);return i<0?(++this.size,e.push([t,l])):e[i][1]=l,this}function Ui(t){var l=-1,e=null==t?0:t.length;this.clear();while(++l<e){var i=t[l];this.set(i[0],i[1])}}function Oi(){this.size=0,this.__data__={hash:new Ti,map:new($l||Ji),string:new Ti}}function Ki(t){var l=Ks(this,t)["delete"](t);return this.size-=l?1:0,l}function Ei(t){return Ks(this,t).get(t)}function Hi(t){return Ks(this,t).has(t)}function Qi(t,l){var e=Ks(this,t),i=e.size;return e.set(t,l),this.size+=e.size==i?0:1,this}function Bi(t){var l=-1,e=null==t?0:t.length;this.__data__=new Ui;while(++l<e)this.add(t[l])}function Pi(t){return this.__data__.set(t,o),this}function Ai(t){return this.__data__.has(t)}function _i(t){var l=this.__data__=new Ji(t);this.size=l.size}function qi(){this.__data__=new Ji,this.size=0}function $i(t){var l=this.__data__,e=l["delete"](t);return this.size=l.size,e}function tn(t){return this.__data__.get(t)}function ln(t){return this.__data__.has(t)}function en(t,l){var e=this.__data__;if(e instanceof Ji){var i=e.__data__;if(!$l||i.length<s-1)return i.push([t,l]),this.size=++e.size,this;e=this.__data__=new Ui(i)}return e.set(t,l),this.size=e.size,this}function nn(t,l){var e=ao(t),i=!e&&so(t),n=!e&&!i&&ho(t),c=!e&&!i&&!n&&vo(t),s=e||i||n||c,d=s?Ee(t.length,nl):[],a=d.length;for(var u in t)!l&&!rl.call(t,u)||s&&("length"==u||n&&("offset"==u||"parent"==u)||c&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||cd(u,a))||d.push(u);return d}function cn(t){var l=t.length;return l?t[pc(0,l-1)]:n}function sn(t,l){return fd(is(t),yn(l,0,t.length))}function dn(t){return fd(is(t))}function an(t,l,e){(e!==n&&!io(t[l],e)||e===n&&!(l in t))&&Zn(t,l,e)}function un(t,l,e){var i=t[l];rl.call(t,l)&&io(i,e)&&(e!==n||l in t)||Zn(t,l,e)}function on(t,l){var e=t.length;while(e--)if(io(t[e][0],l))return e;return-1}function rn(t,l,e,i){return Nn(t,(function(t,n,c){l(i,t,e(t),c)})),i}function bn(t,l){return t&&ns(l,Nr(l),t)}function hn(t,l){return t&&ns(l,Vr(l),t)}function Zn(t,l,e){"__proto__"==l&&Rl?Rl(t,l,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[l]=e}function mn(t,l){var i=-1,c=l.length,s=e(c),d=null==t;while(++i<c)s[i]=d?n:yr(t,l[i]);return s}function yn(t,l,e){return t===t&&(e!==n&&(t=t<=e?t:e),l!==n&&(t=t>=l?t:l)),t}function pn(t,l,e,i,c,s){var d,a=l&h,u=l&Z,o=l&m;if(e&&(d=c?e(t,i,c,s):e(t)),d!==n)return d;if(!Mo(t))return t;var r=ao(t);if(r){if(d=td(t),!a)return is(t,d)}else{var b=As(t),y=b==A||b==_;if(ho(t))return Qc(t,a);if(b==lt||b==O||y&&!c){if(d=u||y?{}:ld(t),!a)return u?ss(t,hn(d,t)):cs(t,bn(d,t))}else{if(!_l[b])return c?t:{};d=ed(t,b,a)}}s||(s=new _i);var p=s.get(t);if(p)return p;s.set(t,d),go(t)?t.forEach((function(i){d.add(pn(i,l,e,i,t,s))})):Io(t)&&t.forEach((function(i,n){d.set(n,pn(i,l,e,n,t,s))}));var W=o?u?js:Fs:u?Vr:Nr,G=r?n:W(t);return Xe(G||t,(function(i,n){G&&(n=i,i=t[n]),un(d,n,pn(i,l,e,n,t,s))})),d}function Wn(t){var l=Nr(t);return function(e){return Gn(e,t,l)}}function Gn(t,l,e){var i=e.length;if(null==t)return!i;t=el(t);while(i--){var c=e[i],s=l[c],d=t[c];if(d===n&&!(c in t)||!s(d))return!1}return!0}function Xn(t,l,e){if("function"!=typeof t)throw new cl(a);return Md((function(){t.apply(n,e)}),l)}function Yn(t,l,e,i){var n=-1,c=Me,d=!0,a=t.length,u=[],o=l.length;if(!a)return u;e&&(l=Ie(l,Be(e))),i?(c=Le,d=!1):l.length>=s&&(c=Ae,d=!1,l=new Bi(l));t:while(++n<a){var r=t[n],b=null==e?r:e(r);if(r=i||0!==r?r:0,d&&b===b){var h=o;while(h--)if(l[h]===b)continue t;u.push(r)}else c(l,b,i)||u.push(r)}return u}Yi.templateSettings={escape:Rt,evaluate:Tt,interpolate:zt,variable:"",imports:{_:Yi}},Yi.prototype=Mi.prototype,Yi.prototype.constructor=Yi,Li.prototype=Vi(Mi.prototype),Li.prototype.constructor=Li,Ii.prototype=Vi(Mi.prototype),Ii.prototype.constructor=Ii,Ti.prototype.clear=zi,Ti.prototype["delete"]=xi,Ti.prototype.get=Si,Ti.prototype.has=ki,Ti.prototype.set=Ci,Ji.prototype.clear=gi,Ji.prototype["delete"]=Fi,Ji.prototype.get=ji,Ji.prototype.has=vi,Ji.prototype.set=Di,Ui.prototype.clear=Oi,Ui.prototype["delete"]=Ki,Ui.prototype.get=Ei,Ui.prototype.has=Hi,Ui.prototype.set=Qi,Bi.prototype.add=Bi.prototype.push=Pi,Bi.prototype.has=Ai,_i.prototype.clear=qi,_i.prototype["delete"]=$i,_i.prototype.get=tn,_i.prototype.has=ln,_i.prototype.set=en;var Nn=us(zn),Vn=us(xn,!0);function Mn(t,l){var e=!0;return Nn(t,(function(t,i,n){return e=!!l(t,i,n),e})),e}function Ln(t,l,e){var i=-1,c=t.length;while(++i<c){var s=t[i],d=l(s);if(null!=d&&(a===n?d===d&&!jo(d):e(d,a)))var a=d,u=s}return u}function In(t,l,e,i){var c=t.length;e=Bo(e),e<0&&(e=-e>c?0:c+e),i=i===n||i>c?c:Bo(i),i<0&&(i+=c),i=e>i?0:Po(i);while(e<i)t[e++]=l;return t}function wn(t,l){var e=[];return Nn(t,(function(t,i,n){l(t,i,n)&&e.push(t)})),e}function fn(t,l,e,i,n){var c=-1,s=t.length;e||(e=nd),n||(n=[]);while(++c<s){var d=t[c];l>0&&e(d)?l>1?fn(d,l-1,e,i,n):we(n,d):i||(n[n.length]=d)}return n}var Rn=os(),Tn=os(!0);function zn(t,l){return t&&Rn(t,l,Nr)}function xn(t,l){return t&&Tn(t,l,Nr)}function Sn(t,l){return Ve(l,(function(l){return Yo(t[l])}))}function kn(t,l){l=Oc(l,t);var e=0,i=l.length;while(null!=t&&e<i)t=t[Td(l[e++])];return e&&e==i?t:n}function Cn(t,l,e){var i=l(t);return ao(t)?i:we(i,e(t))}function Jn(t){return null==t?t===n?at:tt:fl&&fl in el(t)?Qs(t):Wd(t)}function gn(t,l){return t>l}function Fn(t,l){return null!=t&&rl.call(t,l)}function jn(t,l){return null!=t&&l in el(t)}function vn(t,l,e){return t>=Dl(l,e)&&t<vl(l,e)}function Dn(t,l,i){var c=i?Le:Me,s=t[0].length,d=t.length,a=d,u=e(d),o=1/0,r=[];while(a--){var b=t[a];a&&l&&(b=Ie(b,Be(l))),o=Dl(b.length,o),u[a]=!i&&(l||s>=120&&b.length>=120)?new Bi(a&&b):n}b=t[0];var h=-1,Z=u[0];t:while(++h<s&&r.length<o){var m=b[h],y=l?l(m):m;if(m=i||0!==m?m:0,!(Z?Ae(Z,y):c(r,y,i))){a=d;while(--a){var p=u[a];if(!(p?Ae(p,y):c(t[a],y,i)))continue t}Z&&Z.push(y),r.push(m)}}return r}function Un(t,l,e,i){return zn(t,(function(t,n,c){l(i,e(t),n,c)})),i}function On(t,l,e){l=Oc(l,t),t=Xd(t,l);var i=null==t?t:t[Td(na(l))];return null==i?n:We(i,t,e)}function Kn(t){return Lo(t)&&Jn(t)==O}function En(t){return Lo(t)&&Jn(t)==rt}function Hn(t){return Lo(t)&&Jn(t)==Q}function Qn(t,l,e,i,n){return t===l||(null==t||null==l||!Lo(t)&&!Lo(l)?t!==t&&l!==l:Bn(t,l,e,i,Qn,n))}function Bn(t,l,e,i,n,c){var s=ao(t),d=ao(l),a=s?K:As(t),u=d?K:As(l);a=a==O?lt:a,u=u==O?lt:u;var o=a==lt,r=u==lt,b=a==u;if(b&&ho(t)){if(!ho(l))return!1;s=!0,o=!1}if(b&&!o)return c||(c=new _i),s||vo(t)?ks(t,l,e,i,n,c):Cs(t,l,a,e,i,n,c);if(!(e&y)){var h=o&&rl.call(t,"__wrapped__"),Z=r&&rl.call(l,"__wrapped__");if(h||Z){var m=h?t.value():t,p=Z?l.value():l;return c||(c=new _i),n(m,p,e,i,c)}}return!!b&&(c||(c=new _i),Js(t,l,e,i,n,c))}function Pn(t){return Lo(t)&&As(t)==q}function An(t,l,e,i){var c=e.length,s=c,d=!i;if(null==t)return!s;t=el(t);while(c--){var a=e[c];if(d&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}while(++c<s){a=e[c];var u=a[0],o=t[u],r=a[1];if(d&&a[2]){if(o===n&&!(u in t))return!1}else{var b=new _i;if(i)var h=i(o,r,u,t,l,b);if(!(h===n?Qn(r,o,y|p,i,b):h))return!1}}return!0}function _n(t){if(!Mo(t)||od(t))return!1;var l=Yo(t)?pl:Pt;return l.test(zd(t))}function qn(t){return Lo(t)&&Jn(t)==nt}function $n(t){return Lo(t)&&As(t)==ct}function tc(t){return Lo(t)&&Vo(t.length)&&!!Al[Jn(t)]}function lc(t){return"function"==typeof t?t:null==t?Tb:"object"==typeof t?ao(t)?dc(t[0],t[1]):sc(t):Ob(t)}function ec(t){if(!bd(t))return jl(t);var l=[];for(var e in el(t))rl.call(t,e)&&"constructor"!=e&&l.push(e);return l}function ic(t){if(!Mo(t))return pd(t);var l=bd(t),e=[];for(var i in t)("constructor"!=i||!l&&rl.call(t,i))&&e.push(i);return e}function nc(t,l){return t<l}function cc(t,l){var i=-1,n=oo(t)?e(t.length):[];return Nn(t,(function(t,e,c){n[++i]=l(t,e,c)})),n}function sc(t){var l=Es(t);return 1==l.length&&l[0][2]?Zd(l[0][0],l[0][1]):function(e){return e===t||An(e,t,l)}}function dc(t,l){return dd(t)&&hd(l)?Zd(Td(t),l):function(e){var i=yr(e,t);return i===n&&i===l?Wr(e,t):Qn(l,i,y|p)}}function ac(t,l,e,i,c){t!==l&&Rn(l,(function(s,d){if(c||(c=new _i),Mo(s))uc(t,l,d,e,ac,i,c);else{var a=i?i(Nd(t,d),s,d+"",t,l,c):n;a===n&&(a=s),an(t,d,a)}}),Vr)}function uc(t,l,e,i,c,s,d){var a=Nd(t,e),u=Nd(l,e),o=d.get(u);if(o)an(t,e,o);else{var r=s?s(a,u,e+"",t,l,d):n,b=r===n;if(b){var h=ao(u),Z=!h&&ho(u),m=!h&&!Z&&vo(u);r=u,h||Z||m?ao(a)?r=a:ro(a)?r=is(a):Z?(b=!1,r=Qc(u,!0)):m?(b=!1,r=qc(u,!0)):r=[]:ko(u)||so(u)?(r=a,so(a)?r=_o(a):Mo(a)&&!Yo(a)||(r=ld(u))):b=!1}b&&(d.set(u,r),c(r,u,i,s,d),d["delete"](u)),an(t,e,r)}}function oc(t,l){var e=t.length;if(e)return l+=l<0?e:0,cd(l,e)?t[l]:n}function rc(t,l,e){l=l.length?Ie(l,(function(t){return ao(t)?function(l){return kn(l,1===t.length?t[0]:t)}:t})):[Tb];var i=-1;l=Ie(l,Be(Os()));var n=cc(t,(function(t,e,n){var c=Ie(l,(function(l){return l(t)}));return{criteria:c,index:++i,value:t}}));return Oe(n,(function(t,l){return ts(t,l,e)}))}function bc(t,l){return hc(t,l,(function(l,e){return Wr(t,e)}))}function hc(t,l,e){var i=-1,n=l.length,c={};while(++i<n){var s=l[i],d=kn(t,s);e(d,s)&&Vc(c,Oc(s,t),d)}return c}function Zc(t){return function(l){return kn(l,t)}}function mc(t,l,e,i){var n=i?ge:Je,c=-1,s=l.length,d=t;t===l&&(l=is(l)),e&&(d=Ie(t,Be(e)));while(++c<s){var a=0,u=l[c],o=e?e(u):u;while((a=n(d,o,a,i))>-1)d!==t&&Ll.call(d,a,1),Ll.call(t,a,1)}return t}function yc(t,l){var e=t?l.length:0,i=e-1;while(e--){var n=l[e];if(e==i||n!==c){var c=n;cd(n)?Ll.call(t,n,1):Cc(t,n)}}return t}function pc(t,l){return t+kl(Hl()*(l-t+1))}function Wc(t,l,i,n){var c=-1,s=vl(Sl((l-t)/(i||1)),0),d=e(s);while(s--)d[n?s:++c]=t,t+=i;return d}function Gc(t,l){var e="";if(!t||l<1||l>J)return e;do{l%2&&(e+=t),l=kl(l/2),l&&(t+=t)}while(l);return e}function Xc(t,l){return Ld(Gd(t,l,Tb),t+"")}function Yc(t){return cn(Dr(t))}function Nc(t,l){var e=Dr(t);return fd(e,yn(l,0,e.length))}function Vc(t,l,e,i){if(!Mo(t))return t;l=Oc(l,t);var c=-1,s=l.length,d=s-1,a=t;while(null!=a&&++c<s){var u=Td(l[c]),o=e;if("__proto__"===u||"constructor"===u||"prototype"===u)return t;if(c!=d){var r=a[u];o=i?i(r,u,a):n,o===n&&(o=Mo(r)?r:cd(l[c+1])?[]:{})}un(a,u,o),a=a[u]}return t}var Mc=de?function(t,l){return de.set(t,l),t}:Tb,Lc=Rl?function(t,l){return Rl(t,"toString",{configurable:!0,enumerable:!1,value:Ib(l),writable:!0})}:Tb;function Ic(t){return fd(Dr(t))}function wc(t,l,i){var n=-1,c=t.length;l<0&&(l=-l>c?0:c+l),i=i>c?c:i,i<0&&(i+=c),c=l>i?0:i-l>>>0,l>>>=0;var s=e(c);while(++n<c)s[n]=t[n+l];return s}function fc(t,l){var e;return Nn(t,(function(t,i,n){return e=l(t,i,n),!e})),!!e}function Rc(t,l,e){var i=0,n=null==t?i:t.length;if("number"==typeof l&&l===l&&n<=D){while(i<n){var c=i+n>>>1,s=t[c];null!==s&&!jo(s)&&(e?s<=l:s<l)?i=c+1:n=c}return n}return Tc(t,l,Tb,e)}function Tc(t,l,e,i){var c=0,s=null==t?0:t.length;if(0===s)return 0;l=e(l);var d=l!==l,a=null===l,u=jo(l),o=l===n;while(c<s){var r=kl((c+s)/2),b=e(t[r]),h=b!==n,Z=null===b,m=b===b,y=jo(b);if(d)var p=i||m;else p=o?m&&(i||h):a?m&&h&&(i||!Z):u?m&&h&&!Z&&(i||!y):!Z&&!y&&(i?b<=l:b<l);p?c=r+1:s=r}return Dl(s,v)}function zc(t,l){var e=-1,i=t.length,n=0,c=[];while(++e<i){var s=t[e],d=l?l(s):s;if(!e||!io(d,a)){var a=d;c[n++]=0===s?0:s}}return c}function xc(t){return"number"==typeof t?t:jo(t)?F:+t}function Sc(t){if("string"==typeof t)return t;if(ao(t))return Ie(t,Sc)+"";if(jo(t))return Gi?Gi.call(t):"";var l=t+"";return"0"==l&&1/t==-C?"-0":l}function kc(t,l,e){var i=-1,n=Me,c=t.length,d=!0,a=[],u=a;if(e)d=!1,n=Le;else if(c>=s){var o=l?null:fs(t);if(o)return oi(o);d=!1,n=Ae,u=new Bi}else u=l?[]:a;t:while(++i<c){var r=t[i],b=l?l(r):r;if(r=e||0!==r?r:0,d&&b===b){var h=u.length;while(h--)if(u[h]===b)continue t;l&&u.push(b),a.push(r)}else n(u,b,e)||(u!==a&&u.push(b),a.push(r))}return a}function Cc(t,l){return l=Oc(l,t),t=Xd(t,l),null==t||delete t[Td(na(l))]}function Jc(t,l,e,i){return Vc(t,l,e(kn(t,l)),i)}function gc(t,l,e,i){var n=t.length,c=i?n:-1;while((i?c--:++c<n)&&l(t[c],c,t));return e?wc(t,i?0:c,i?c+1:n):wc(t,i?c+1:0,i?n:c)}function Fc(t,l){var e=t;return e instanceof Ii&&(e=e.value()),fe(l,(function(t,l){return l.func.apply(l.thisArg,we([t],l.args))}),e)}function jc(t,l,i){var n=t.length;if(n<2)return n?kc(t[0]):[];var c=-1,s=e(n);while(++c<n){var d=t[c],a=-1;while(++a<n)a!=c&&(s[c]=Yn(s[c]||d,t[a],l,i))}return kc(fn(s,1),l,i)}function vc(t,l,e){var i=-1,c=t.length,s=l.length,d={};while(++i<c){var a=i<s?l[i]:n;e(d,t[i],a)}return d}function Dc(t){return ro(t)?t:[]}function Uc(t){return"function"==typeof t?t:Tb}function Oc(t,l){return ao(t)?t:dd(t,l)?[t]:Rd($o(t))}var Kc=Xc;function Ec(t,l,e){var i=t.length;return e=e===n?i:e,!l&&e>=i?t:wc(t,l,e)}var Hc=Tl||function(t){return se.clearTimeout(t)};function Qc(t,l){if(l)return t.slice();var e=t.length,i=Yl?Yl(e):new t.constructor(e);return t.copy(i),i}function Bc(t){var l=new t.constructor(t.byteLength);return new Xl(l).set(new Xl(t)),l}function Pc(t,l){var e=l?Bc(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}function Ac(t){var l=new t.constructor(t.source,Ht.exec(t));return l.lastIndex=t.lastIndex,l}function _c(t){return Wi?el(Wi.call(t)):{}}function qc(t,l){var e=l?Bc(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function $c(t,l){if(t!==l){var e=t!==n,i=null===t,c=t===t,s=jo(t),d=l!==n,a=null===l,u=l===l,o=jo(l);if(!a&&!o&&!s&&t>l||s&&d&&u&&!a&&!o||i&&d&&u||!e&&u||!c)return 1;if(!i&&!s&&!o&&t<l||o&&e&&c&&!i&&!s||a&&e&&c||!d&&c||!u)return-1}return 0}function ts(t,l,e){var i=-1,n=t.criteria,c=l.criteria,s=n.length,d=e.length;while(++i<s){var a=$c(n[i],c[i]);if(a){if(i>=d)return a;var u=e[i];return a*("desc"==u?-1:1)}}return t.index-l.index}function ls(t,l,i,n){var c=-1,s=t.length,d=i.length,a=-1,u=l.length,o=vl(s-d,0),r=e(u+o),b=!n;while(++a<u)r[a]=l[a];while(++c<d)(b||c<s)&&(r[i[c]]=t[c]);while(o--)r[a++]=t[c++];return r}function es(t,l,i,n){var c=-1,s=t.length,d=-1,a=i.length,u=-1,o=l.length,r=vl(s-a,0),b=e(r+o),h=!n;while(++c<r)b[c]=t[c];var Z=c;while(++u<o)b[Z+u]=l[u];while(++d<a)(h||c<s)&&(b[Z+i[d]]=t[c++]);return b}function is(t,l){var i=-1,n=t.length;l||(l=e(n));while(++i<n)l[i]=t[i];return l}function ns(t,l,e,i){var c=!e;e||(e={});var s=-1,d=l.length;while(++s<d){var a=l[s],u=i?i(e[a],t[a],a,e,t):n;u===n&&(u=t[a]),c?Zn(e,a,u):un(e,a,u)}return e}function cs(t,l){return ns(t,Bs(t),l)}function ss(t,l){return ns(t,Ps(t),l)}function ds(t,l){return function(e,i){var n=ao(e)?Ge:rn,c=l?l():{};return n(e,t,Os(i,2),c)}}function as(t){return Xc((function(l,e){var i=-1,c=e.length,s=c>1?e[c-1]:n,d=c>2?e[2]:n;s=t.length>3&&"function"==typeof s?(c--,s):n,d&&sd(e[0],e[1],d)&&(s=c<3?n:s,c=1),l=el(l);while(++i<c){var a=e[i];a&&t(l,a,i,s)}return l}))}function us(t,l){return function(e,i){if(null==e)return e;if(!oo(e))return t(e,i);var n=e.length,c=l?n:-1,s=el(e);while(l?c--:++c<n)if(!1===i(s[c],c,s))break;return e}}function os(t){return function(l,e,i){var n=-1,c=el(l),s=i(l),d=s.length;while(d--){var a=s[t?d:++n];if(!1===e(c[a],a,c))break}return l}}function rs(t,l,e){var i=l&W,n=Zs(t);function c(){var l=this&&this!==se&&this instanceof c?n:t;return l.apply(i?e:this,arguments)}return c}function bs(t){return function(l){l=$o(l);var e=ni(l)?mi(l):n,i=e?e[0]:l.charAt(0),c=e?Ec(e,1).join(""):l.slice(1);return i[t]()+c}}function hs(t){return function(l){return fe(Yb(Br(l).replace(Ul,"")),t,"")}}function Zs(t){return function(){var l=arguments;switch(l.length){case 0:return new t;case 1:return new t(l[0]);case 2:return new t(l[0],l[1]);case 3:return new t(l[0],l[1],l[2]);case 4:return new t(l[0],l[1],l[2],l[3]);case 5:return new t(l[0],l[1],l[2],l[3],l[4]);case 6:return new t(l[0],l[1],l[2],l[3],l[4],l[5]);case 7:return new t(l[0],l[1],l[2],l[3],l[4],l[5],l[6])}var e=Vi(t.prototype),i=t.apply(e,l);return Mo(i)?i:e}}function ms(t,l,i){var c=Zs(t);function s(){var d=arguments.length,a=e(d),u=d,o=Us(s);while(u--)a[u]=arguments[u];var r=d<3&&a[0]!==o&&a[d-1]!==o?[]:ui(a,o);if(d-=r.length,d<i)return Is(t,l,Ws,s.placeholder,n,a,r,n,n,i-d);var b=this&&this!==se&&this instanceof s?c:t;return We(b,this,a)}return s}function ys(t){return function(l,e,i){var c=el(l);if(!oo(l)){var s=Os(e,3);l=Nr(l),e=function(t){return s(c[t],t,c)}}var d=t(l,e,i);return d>-1?c[s?l[d]:d]:n}}function ps(t){return gs((function(l){var e=l.length,i=e,c=Li.prototype.thru;t&&l.reverse();while(i--){var s=l[i];if("function"!=typeof s)throw new cl(a);if(c&&!d&&"wrapper"==Ds(s))var d=new Li([],!0)}i=d?i:e;while(++i<e){s=l[i];var u=Ds(s),o="wrapper"==u?vs(s):n;d=o&&ud(o[0])&&o[1]==(L|Y|V|I)&&!o[4].length&&1==o[9]?d[Ds(o[0])].apply(d,o[3]):1==s.length&&ud(s)?d[u]():d.thru(s)}return function(){var t=arguments,i=t[0];if(d&&1==t.length&&ao(i))return d.plant(i).value();var n=0,c=e?l[n].apply(this,t):i;while(++n<e)c=l[n].call(this,c);return c}}))}function Ws(t,l,i,c,s,d,a,u,o,r){var b=l&L,h=l&W,Z=l&G,m=l&(Y|N),y=l&w,p=Z?n:Zs(t);function X(){var n=arguments.length,W=e(n),G=n;while(G--)W[G]=arguments[G];if(m)var Y=Us(X),N=$e(W,Y);if(c&&(W=ls(W,c,s,m)),d&&(W=es(W,d,a,m)),n-=N,m&&n<r){var V=ui(W,Y);return Is(t,l,Ws,X.placeholder,i,W,V,u,o,r-n)}var M=h?i:this,L=Z?M[t]:t;return n=W.length,u?W=Yd(W,u):y&&n>1&&W.reverse(),b&&o<n&&(W.length=o),this&&this!==se&&this instanceof X&&(L=p||Zs(L)),L.apply(M,W)}return X}function Gs(t,l){return function(e,i){return Un(e,t,l(i),{})}}function Xs(t,l){return function(e,i){var c;if(e===n&&i===n)return l;if(e!==n&&(c=e),i!==n){if(c===n)return i;"string"==typeof e||"string"==typeof i?(e=Sc(e),i=Sc(i)):(e=xc(e),i=xc(i)),c=t(e,i)}return c}}function Ys(t){return gs((function(l){return l=Ie(l,Be(Os())),Xc((function(e){var i=this;return t(l,(function(t){return We(t,i,e)}))}))}))}function Ns(t,l){l=l===n?" ":Sc(l);var e=l.length;if(e<2)return e?Gc(l,t):l;var i=Gc(l,Sl(t/Zi(l)));return ni(l)?Ec(mi(i),0,t).join(""):i.slice(0,t)}function Vs(t,l,i,n){var c=l&W,s=Zs(t);function d(){var l=-1,a=arguments.length,u=-1,o=n.length,r=e(o+a),b=this&&this!==se&&this instanceof d?s:t;while(++u<o)r[u]=n[u];while(a--)r[u++]=arguments[++l];return We(b,c?i:this,r)}return d}function Ms(t){return function(l,e,i){return i&&"number"!=typeof i&&sd(l,e,i)&&(e=i=n),l=Qo(l),e===n?(e=l,l=0):e=Qo(e),i=i===n?l<e?1:-1:Qo(i),Wc(l,e,i,t)}}function Ls(t){return function(l,e){return"string"==typeof l&&"string"==typeof e||(l=Ao(l),e=Ao(e)),t(l,e)}}function Is(t,l,e,i,c,s,d,a,u,o){var r=l&Y,b=r?d:n,h=r?n:d,Z=r?s:n,m=r?n:s;l|=r?V:M,l&=~(r?M:V),l&X||(l&=~(W|G));var y=[t,l,c,Z,b,m,h,a,u,o],p=e.apply(n,y);return ud(t)&&Vd(p,y),p.placeholder=i,Id(p,t,l)}function ws(t){var l=ll[t];return function(t,e){if(t=Ao(t),e=null==e?0:Dl(Bo(e),292),e&&gl(t)){var i=($o(t)+"e").split("e"),n=l(i[0]+"e"+(+i[1]+e));return i=($o(n)+"e").split("e"),+(i[0]+"e"+(+i[1]-e))}return l(t)}}var fs=le&&1/oi(new le([,-0]))[1]==C?function(t){return new le(t)}:Fb;function Rs(t){return function(l){var e=As(l);return e==q?di(l):e==ct?ri(l):He(l,t(l))}}function Ts(t,l,e,i,c,s,d,u){var o=l&G;if(!o&&"function"!=typeof t)throw new cl(a);var r=i?i.length:0;if(r||(l&=~(V|M),i=c=n),d=d===n?d:vl(Bo(d),0),u=u===n?u:Bo(u),r-=c?c.length:0,l&M){var b=i,h=c;i=c=n}var Z=o?n:vs(t),m=[t,l,e,i,c,b,h,s,d,u];if(Z&&yd(m,Z),t=m[0],l=m[1],e=m[2],i=m[3],c=m[4],u=m[9]=m[9]===n?o?0:t.length:vl(m[9]-r,0),!u&&l&(Y|N)&&(l&=~(Y|N)),l&&l!=W)y=l==Y||l==N?ms(t,l,u):l!=V&&l!=(W|V)||c.length?Ws.apply(n,m):Vs(t,l,e,i);else var y=rs(t,l,e);var p=Z?Mc:Vd;return Id(p(y,m),t,l)}function zs(t,l,e,i){return t===n||io(t,al[e])&&!rl.call(i,e)?l:t}function xs(t,l,e,i,c,s){return Mo(t)&&Mo(l)&&(s.set(l,t),ac(t,l,n,xs,s),s["delete"](l)),t}function Ss(t){return ko(t)?n:t}function ks(t,l,e,i,c,s){var d=e&y,a=t.length,u=l.length;if(a!=u&&!(d&&u>a))return!1;var o=s.get(t),r=s.get(l);if(o&&r)return o==l&&r==t;var b=-1,h=!0,Z=e&p?new Bi:n;s.set(t,l),s.set(l,t);while(++b<a){var m=t[b],W=l[b];if(i)var G=d?i(W,m,b,l,t,s):i(m,W,b,t,l,s);if(G!==n){if(G)continue;h=!1;break}if(Z){if(!Te(l,(function(t,l){if(!Ae(Z,l)&&(m===t||c(m,t,e,i,s)))return Z.push(l)}))){h=!1;break}}else if(m!==W&&!c(m,W,e,i,s)){h=!1;break}}return s["delete"](t),s["delete"](l),h}function Cs(t,l,e,i,n,c,s){switch(e){case bt:if(t.byteLength!=l.byteLength||t.byteOffset!=l.byteOffset)return!1;t=t.buffer,l=l.buffer;case rt:return!(t.byteLength!=l.byteLength||!c(new Xl(t),new Xl(l)));case H:case Q:case $:return io(+t,+l);case P:return t.name==l.name&&t.message==l.message;case nt:case st:return t==l+"";case q:var d=di;case ct:var a=i&y;if(d||(d=oi),t.size!=l.size&&!a)return!1;var u=s.get(t);if(u)return u==l;i|=p,s.set(t,l);var o=ks(d(t),d(l),i,n,c,s);return s["delete"](t),o;case dt:if(Wi)return Wi.call(t)==Wi.call(l)}return!1}function Js(t,l,e,i,c,s){var d=e&y,a=Fs(t),u=a.length,o=Fs(l),r=o.length;if(u!=r&&!d)return!1;var b=u;while(b--){var h=a[b];if(!(d?h in l:rl.call(l,h)))return!1}var Z=s.get(t),m=s.get(l);if(Z&&m)return Z==l&&m==t;var p=!0;s.set(t,l),s.set(l,t);var W=d;while(++b<u){h=a[b];var G=t[h],X=l[h];if(i)var Y=d?i(X,G,h,l,t,s):i(G,X,h,t,l,s);if(!(Y===n?G===X||c(G,X,e,i,s):Y)){p=!1;break}W||(W="constructor"==h)}if(p&&!W){var N=t.constructor,V=l.constructor;N==V||!("constructor"in t)||!("constructor"in l)||"function"==typeof N&&N instanceof N&&"function"==typeof V&&V instanceof V||(p=!1)}return s["delete"](t),s["delete"](l),p}function gs(t){return Ld(Gd(t,n,Qd),t+"")}function Fs(t){return Cn(t,Nr,Bs)}function js(t){return Cn(t,Vr,Ps)}var vs=de?function(t){return de.get(t)}:Fb;function Ds(t){var l=t.name+"",e=ae[l],i=rl.call(ae,l)?e.length:0;while(i--){var n=e[i],c=n.func;if(null==c||c==t)return n.name}return l}function Us(t){var l=rl.call(Yi,"placeholder")?Yi:t;return l.placeholder}function Os(){var t=Yi.iteratee||zb;return t=t===zb?lc:t,arguments.length?t(arguments[0],arguments[1]):t}function Ks(t,l){var e=t.__data__;return ad(l)?e["string"==typeof l?"string":"hash"]:e.map}function Es(t){var l=Nr(t),e=l.length;while(e--){var i=l[e],n=t[i];l[e]=[i,n,hd(n)]}return l}function Hs(t,l){var e=ii(t,l);return _n(e)?e:n}function Qs(t){var l=rl.call(t,fl),e=t[fl];try{t[fl]=n;var i=!0}catch(s){}var c=Zl.call(t);return i&&(l?t[fl]=e:delete t[fl]),c}var Bs=Cl?function(t){return null==t?[]:(t=el(t),Ve(Cl(t),(function(l){return Ml.call(t,l)})))}:Qb,Ps=Cl?function(t){var l=[];while(t)we(l,Bs(t)),t=Nl(t);return l}:Qb,As=Jn;function _s(t,l,e){var i=-1,n=e.length;while(++i<n){var c=e[i],s=c.size;switch(c.type){case"drop":t+=s;break;case"dropRight":l-=s;break;case"take":l=Dl(l,t+s);break;case"takeRight":t=vl(t,l-s);break}}return{start:t,end:l}}function qs(t){var l=t.match(vt);return l?l[1].split(Dt):[]}function $s(t,l,e){l=Oc(l,t);var i=-1,n=l.length,c=!1;while(++i<n){var s=Td(l[i]);if(!(c=null!=t&&e(t,s)))break;t=t[s]}return c||++i!=n?c:(n=null==t?0:t.length,!!n&&Vo(n)&&cd(s,n)&&(ao(t)||so(t)))}function td(t){var l=t.length,e=new t.constructor(l);return l&&"string"==typeof t[0]&&rl.call(t,"index")&&(e.index=t.index,e.input=t.input),e}function ld(t){return"function"!=typeof t.constructor||bd(t)?{}:Vi(Nl(t))}function ed(t,l,e){var i=t.constructor;switch(l){case rt:return Bc(t);case H:case Q:return new i(+t);case bt:return Pc(t,e);case ht:case Zt:case mt:case yt:case pt:case Wt:case Gt:case Xt:case Yt:return qc(t,e);case q:return new i;case $:case st:return new i(t);case nt:return Ac(t);case ct:return new i;case dt:return _c(t)}}function id(t,l){var e=l.length;if(!e)return t;var i=e-1;return l[i]=(e>1?"& ":"")+l[i],l=l.join(e>2?", ":" "),t.replace(jt,"{\n/* [wrapped with "+l+"] */\n")}function nd(t){return ao(t)||so(t)||!!(Il&&t&&t[Il])}function cd(t,l){var e=typeof t;return l=null==l?J:l,!!l&&("number"==e||"symbol"!=e&&_t.test(t))&&t>-1&&t%1==0&&t<l}function sd(t,l,e){if(!Mo(e))return!1;var i=typeof l;return!!("number"==i?oo(e)&&cd(l,e.length):"string"==i&&l in e)&&io(e[l],t)}function dd(t,l){if(ao(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!jo(t))||St.test(t)||!xt.test(t)||null!=l&&t in el(l)}function ad(t){var l=typeof t;return"string"==l||"number"==l||"symbol"==l||"boolean"==l?"__proto__"!==t:null===t}function ud(t){var l=Ds(t),e=Yi[l];if("function"!=typeof e||!(l in Ii.prototype))return!1;if(t===e)return!0;var i=vs(e);return!!i&&t===i[0]}function od(t){return!!hl&&hl in t}(ql&&As(new ql(new ArrayBuffer(1)))!=bt||$l&&As(new $l)!=q||te&&As(te.resolve())!=et||le&&As(new le)!=ct||ne&&As(new ne)!=ut)&&(As=function(t){var l=Jn(t),e=l==lt?t.constructor:n,i=e?zd(e):"";if(i)switch(i){case oe:return bt;case re:return q;case ze:return et;case xe:return ct;case De:return ut}return l});var rd=ul?Yo:Bb;function bd(t){var l=t&&t.constructor,e="function"==typeof l&&l.prototype||al;return t===e}function hd(t){return t===t&&!Mo(t)}function Zd(t,l){return function(e){return null!=e&&e[t]===l&&(l!==n||t in el(e))}}function md(t){var l=ju(t,(function(t){return e.size===r&&e.clear(),t})),e=l.cache;return l}function yd(t,l){var e=t[1],i=l[1],n=e|i,c=n<(W|G|L),s=i==L&&e==Y||i==L&&e==I&&t[7].length<=l[8]||i==(L|I)&&l[7].length<=l[8]&&e==Y;if(!c&&!s)return t;i&W&&(t[2]=l[2],n|=e&W?0:X);var d=l[3];if(d){var a=t[3];t[3]=a?ls(a,d,l[4]):d,t[4]=a?ui(t[3],b):l[4]}return d=l[5],d&&(a=t[5],t[5]=a?es(a,d,l[6]):d,t[6]=a?ui(t[5],b):l[6]),d=l[7],d&&(t[7]=d),i&L&&(t[8]=null==t[8]?l[8]:Dl(t[8],l[8])),null==t[9]&&(t[9]=l[9]),t[0]=l[0],t[1]=n,t}function pd(t){var l=[];if(null!=t)for(var e in el(t))l.push(e);return l}function Wd(t){return Zl.call(t)}function Gd(t,l,i){return l=vl(l===n?t.length-1:l,0),function(){var n=arguments,c=-1,s=vl(n.length-l,0),d=e(s);while(++c<s)d[c]=n[l+c];c=-1;var a=e(l+1);while(++c<l)a[c]=n[c];return a[l]=i(d),We(t,this,a)}}function Xd(t,l){return l.length<2?t:kn(t,wc(l,0,-1))}function Yd(t,l){var e=t.length,i=Dl(l.length,e),c=is(t);while(i--){var s=l[i];t[i]=cd(s,e)?c[s]:n}return t}function Nd(t,l){if(("constructor"!==l||"function"!==typeof t[l])&&"__proto__"!=l)return t[l]}var Vd=wd(Mc),Md=xl||function(t,l){return se.setTimeout(t,l)},Ld=wd(Lc);function Id(t,l,e){var i=l+"";return Ld(t,id(i,xd(qs(i),e)))}function wd(t){var l=0,e=0;return function(){var i=Kl(),c=z-(i-e);if(e=i,c>0){if(++l>=T)return arguments[0]}else l=0;return t.apply(n,arguments)}}function fd(t,l){var e=-1,i=t.length,c=i-1;l=l===n?i:l;while(++e<l){var s=pc(e,c),d=t[s];t[s]=t[e],t[e]=d}return t.length=l,t}var Rd=md((function(t){var l=[];return 46===t.charCodeAt(0)&&l.push(""),t.replace(kt,(function(t,e,i,n){l.push(i?n.replace(Kt,"$1"):e||t)})),l}));function Td(t){if("string"==typeof t||jo(t))return t;var l=t+"";return"0"==l&&1/t==-C?"-0":l}function zd(t){if(null!=t){try{return ol.call(t)}catch(l){}try{return t+""}catch(l){}}return""}function xd(t,l){return Xe(U,(function(e){var i="_."+e[0];l&e[1]&&!Me(t,i)&&t.push(i)})),t.sort()}function Sd(t){if(t instanceof Ii)return t.clone();var l=new Li(t.__wrapped__,t.__chain__);return l.__actions__=is(t.__actions__),l.__index__=t.__index__,l.__values__=t.__values__,l}function kd(t,l,i){l=(i?sd(t,l,i):l===n)?1:vl(Bo(l),0);var c=null==t?0:t.length;if(!c||l<1)return[];var s=0,d=0,a=e(Sl(c/l));while(s<c)a[d++]=wc(t,s,s+=l);return a}function Cd(t){var l=-1,e=null==t?0:t.length,i=0,n=[];while(++l<e){var c=t[l];c&&(n[i++]=c)}return n}function Jd(){var t=arguments.length;if(!t)return[];var l=e(t-1),i=arguments[0],n=t;while(n--)l[n-1]=arguments[n];return we(ao(i)?is(i):[i],fn(l,1))}var gd=Xc((function(t,l){return ro(t)?Yn(t,fn(l,1,ro,!0)):[]})),Fd=Xc((function(t,l){var e=na(l);return ro(e)&&(e=n),ro(t)?Yn(t,fn(l,1,ro,!0),Os(e,2)):[]})),jd=Xc((function(t,l){var e=na(l);return ro(e)&&(e=n),ro(t)?Yn(t,fn(l,1,ro,!0),n,e):[]}));function vd(t,l,e){var i=null==t?0:t.length;return i?(l=e||l===n?1:Bo(l),wc(t,l<0?0:l,i)):[]}function Dd(t,l,e){var i=null==t?0:t.length;return i?(l=e||l===n?1:Bo(l),l=i-l,wc(t,0,l<0?0:l)):[]}function Ud(t,l){return t&&t.length?gc(t,Os(l,3),!0,!0):[]}function Od(t,l){return t&&t.length?gc(t,Os(l,3),!0):[]}function Kd(t,l,e,i){var n=null==t?0:t.length;return n?(e&&"number"!=typeof e&&sd(t,l,e)&&(e=0,i=n),In(t,l,e,i)):[]}function Ed(t,l,e){var i=null==t?0:t.length;if(!i)return-1;var n=null==e?0:Bo(e);return n<0&&(n=vl(i+n,0)),Ce(t,Os(l,3),n)}function Hd(t,l,e){var i=null==t?0:t.length;if(!i)return-1;var c=i-1;return e!==n&&(c=Bo(e),c=e<0?vl(i+c,0):Dl(c,i-1)),Ce(t,Os(l,3),c,!0)}function Qd(t){var l=null==t?0:t.length;return l?fn(t,1):[]}function Bd(t){var l=null==t?0:t.length;return l?fn(t,C):[]}function Pd(t,l){var e=null==t?0:t.length;return e?(l=l===n?1:Bo(l),fn(t,l)):[]}function Ad(t){var l=-1,e=null==t?0:t.length,i={};while(++l<e){var n=t[l];i[n[0]]=n[1]}return i}function _d(t){return t&&t.length?t[0]:n}function qd(t,l,e){var i=null==t?0:t.length;if(!i)return-1;var n=null==e?0:Bo(e);return n<0&&(n=vl(i+n,0)),Je(t,l,n)}function $d(t){var l=null==t?0:t.length;return l?wc(t,0,-1):[]}var ta=Xc((function(t){var l=Ie(t,Dc);return l.length&&l[0]===t[0]?Dn(l):[]})),la=Xc((function(t){var l=na(t),e=Ie(t,Dc);return l===na(e)?l=n:e.pop(),e.length&&e[0]===t[0]?Dn(e,Os(l,2)):[]})),ea=Xc((function(t){var l=na(t),e=Ie(t,Dc);return l="function"==typeof l?l:n,l&&e.pop(),e.length&&e[0]===t[0]?Dn(e,n,l):[]}));function ia(t,l){return null==t?"":Fl.call(t,l)}function na(t){var l=null==t?0:t.length;return l?t[l-1]:n}function ca(t,l,e){var i=null==t?0:t.length;if(!i)return-1;var c=i;return e!==n&&(c=Bo(e),c=c<0?vl(i+c,0):Dl(c,i-1)),l===l?hi(t,l,c):Ce(t,Fe,c,!0)}function sa(t,l){return t&&t.length?oc(t,Bo(l)):n}var da=Xc(aa);function aa(t,l){return t&&t.length&&l&&l.length?mc(t,l):t}function ua(t,l,e){return t&&t.length&&l&&l.length?mc(t,l,Os(e,2)):t}function oa(t,l,e){return t&&t.length&&l&&l.length?mc(t,l,n,e):t}var ra=gs((function(t,l){var e=null==t?0:t.length,i=mn(t,l);return yc(t,Ie(l,(function(t){return cd(t,e)?+t:t})).sort($c)),i}));function ba(t,l){var e=[];if(!t||!t.length)return e;var i=-1,n=[],c=t.length;l=Os(l,3);while(++i<c){var s=t[i];l(s,i,t)&&(e.push(s),n.push(i))}return yc(t,n),e}function ha(t){return null==t?t:Ql.call(t)}function Za(t,l,e){var i=null==t?0:t.length;return i?(e&&"number"!=typeof e&&sd(t,l,e)?(l=0,e=i):(l=null==l?0:Bo(l),e=e===n?i:Bo(e)),wc(t,l,e)):[]}function ma(t,l){return Rc(t,l)}function ya(t,l,e){return Tc(t,l,Os(e,2))}function pa(t,l){var e=null==t?0:t.length;if(e){var i=Rc(t,l);if(i<e&&io(t[i],l))return i}return-1}function Wa(t,l){return Rc(t,l,!0)}function Ga(t,l,e){return Tc(t,l,Os(e,2),!0)}function Xa(t,l){var e=null==t?0:t.length;if(e){var i=Rc(t,l,!0)-1;if(io(t[i],l))return i}return-1}function Ya(t){return t&&t.length?zc(t):[]}function Na(t,l){return t&&t.length?zc(t,Os(l,2)):[]}function Va(t){var l=null==t?0:t.length;return l?wc(t,1,l):[]}function Ma(t,l,e){return t&&t.length?(l=e||l===n?1:Bo(l),wc(t,0,l<0?0:l)):[]}function La(t,l,e){var i=null==t?0:t.length;return i?(l=e||l===n?1:Bo(l),l=i-l,wc(t,l<0?0:l,i)):[]}function Ia(t,l){return t&&t.length?gc(t,Os(l,3),!1,!0):[]}function wa(t,l){return t&&t.length?gc(t,Os(l,3)):[]}var fa=Xc((function(t){return kc(fn(t,1,ro,!0))})),Ra=Xc((function(t){var l=na(t);return ro(l)&&(l=n),kc(fn(t,1,ro,!0),Os(l,2))})),Ta=Xc((function(t){var l=na(t);return l="function"==typeof l?l:n,kc(fn(t,1,ro,!0),n,l)}));function za(t){return t&&t.length?kc(t):[]}function xa(t,l){return t&&t.length?kc(t,Os(l,2)):[]}function Sa(t,l){return l="function"==typeof l?l:n,t&&t.length?kc(t,n,l):[]}function ka(t){if(!t||!t.length)return[];var l=0;return t=Ve(t,(function(t){if(ro(t))return l=vl(t.length,l),!0})),Ee(l,(function(l){return Ie(t,ve(l))}))}function Ca(t,l){if(!t||!t.length)return[];var e=ka(t);return null==l?e:Ie(e,(function(t){return We(l,n,t)}))}var Ja=Xc((function(t,l){return ro(t)?Yn(t,l):[]})),ga=Xc((function(t){return jc(Ve(t,ro))})),Fa=Xc((function(t){var l=na(t);return ro(l)&&(l=n),jc(Ve(t,ro),Os(l,2))})),ja=Xc((function(t){var l=na(t);return l="function"==typeof l?l:n,jc(Ve(t,ro),n,l)})),va=Xc(ka);function Da(t,l){return vc(t||[],l||[],un)}function Ua(t,l){return vc(t||[],l||[],Vc)}var Oa=Xc((function(t){var l=t.length,e=l>1?t[l-1]:n;return e="function"==typeof e?(t.pop(),e):n,Ca(t,e)}));function Ka(t){var l=Yi(t);return l.__chain__=!0,l}function Ea(t,l){return l(t),t}function Ha(t,l){return l(t)}var Qa=gs((function(t){var l=t.length,e=l?t[0]:0,i=this.__wrapped__,c=function(l){return mn(l,t)};return!(l>1||this.__actions__.length)&&i instanceof Ii&&cd(e)?(i=i.slice(e,+e+(l?1:0)),i.__actions__.push({func:Ha,args:[c],thisArg:n}),new Li(i,this.__chain__).thru((function(t){return l&&!t.length&&t.push(n),t}))):this.thru(c)}));function Ba(){return Ka(this)}function Pa(){return new Li(this.value(),this.__chain__)}function Aa(){this.__values__===n&&(this.__values__=Ho(this.value()));var t=this.__index__>=this.__values__.length,l=t?n:this.__values__[this.__index__++];return{done:t,value:l}}function _a(){return this}function qa(t){var l,e=this;while(e instanceof Mi){var i=Sd(e);i.__index__=0,i.__values__=n,l?c.__wrapped__=i:l=i;var c=i;e=e.__wrapped__}return c.__wrapped__=t,l}function $a(){var t=this.__wrapped__;if(t instanceof Ii){var l=t;return this.__actions__.length&&(l=new Ii(this)),l=l.reverse(),l.__actions__.push({func:Ha,args:[ha],thisArg:n}),new Li(l,this.__chain__)}return this.thru(ha)}function tu(){return Fc(this.__wrapped__,this.__actions__)}var lu=ds((function(t,l,e){rl.call(t,e)?++t[e]:Zn(t,e,1)}));function eu(t,l,e){var i=ao(t)?Ne:Mn;return e&&sd(t,l,e)&&(l=n),i(t,Os(l,3))}function iu(t,l){var e=ao(t)?Ve:wn;return e(t,Os(l,3))}var nu=ys(Ed),cu=ys(Hd);function su(t,l){return fn(mu(t,l),1)}function du(t,l){return fn(mu(t,l),C)}function au(t,l,e){return e=e===n?1:Bo(e),fn(mu(t,l),e)}function uu(t,l){var e=ao(t)?Xe:Nn;return e(t,Os(l,3))}function ou(t,l){var e=ao(t)?Ye:Vn;return e(t,Os(l,3))}var ru=ds((function(t,l,e){rl.call(t,e)?t[e].push(l):Zn(t,e,[l])}));function bu(t,l,e,i){t=oo(t)?t:Dr(t),e=e&&!i?Bo(e):0;var n=t.length;return e<0&&(e=vl(n+e,0)),Fo(t)?e<=n&&t.indexOf(l,e)>-1:!!n&&Je(t,l,e)>-1}var hu=Xc((function(t,l,i){var n=-1,c="function"==typeof l,s=oo(t)?e(t.length):[];return Nn(t,(function(t){s[++n]=c?We(l,t,i):On(t,l,i)})),s})),Zu=ds((function(t,l,e){Zn(t,e,l)}));function mu(t,l){var e=ao(t)?Ie:cc;return e(t,Os(l,3))}function yu(t,l,e,i){return null==t?[]:(ao(l)||(l=null==l?[]:[l]),e=i?n:e,ao(e)||(e=null==e?[]:[e]),rc(t,l,e))}var pu=ds((function(t,l,e){t[e?0:1].push(l)}),(function(){return[[],[]]}));function Wu(t,l,e){var i=ao(t)?fe:Ue,n=arguments.length<3;return i(t,Os(l,4),e,n,Nn)}function Gu(t,l,e){var i=ao(t)?Re:Ue,n=arguments.length<3;return i(t,Os(l,4),e,n,Vn)}function Xu(t,l){var e=ao(t)?Ve:wn;return e(t,vu(Os(l,3)))}function Yu(t){var l=ao(t)?cn:Yc;return l(t)}function Nu(t,l,e){l=(e?sd(t,l,e):l===n)?1:Bo(l);var i=ao(t)?sn:Nc;return i(t,l)}function Vu(t){var l=ao(t)?dn:Ic;return l(t)}function Mu(t){if(null==t)return 0;if(oo(t))return Fo(t)?Zi(t):t.length;var l=As(t);return l==q||l==ct?t.size:ec(t).length}function Lu(t,l,e){var i=ao(t)?Te:fc;return e&&sd(t,l,e)&&(l=n),i(t,Os(l,3))}var Iu=Xc((function(t,l){if(null==t)return[];var e=l.length;return e>1&&sd(t,l[0],l[1])?l=[]:e>2&&sd(l[0],l[1],l[2])&&(l=[l[0]]),rc(t,fn(l,1),[])})),wu=zl||function(){return se.Date.now()};function fu(t,l){if("function"!=typeof l)throw new cl(a);return t=Bo(t),function(){if(--t<1)return l.apply(this,arguments)}}function Ru(t,l,e){return l=e?n:l,l=t&&null==l?t.length:l,Ts(t,L,n,n,n,n,l)}function Tu(t,l){var e;if("function"!=typeof l)throw new cl(a);return t=Bo(t),function(){return--t>0&&(e=l.apply(this,arguments)),t<=1&&(l=n),e}}var zu=Xc((function(t,l,e){var i=W;if(e.length){var n=ui(e,Us(zu));i|=V}return Ts(t,i,l,e,n)})),xu=Xc((function(t,l,e){var i=W|G;if(e.length){var n=ui(e,Us(xu));i|=V}return Ts(l,i,t,e,n)}));function Su(t,l,e){l=e?n:l;var i=Ts(t,Y,n,n,n,n,n,l);return i.placeholder=Su.placeholder,i}function ku(t,l,e){l=e?n:l;var i=Ts(t,N,n,n,n,n,n,l);return i.placeholder=ku.placeholder,i}function Cu(t,l,e){var i,c,s,d,u,o,r=0,b=!1,h=!1,Z=!0;if("function"!=typeof t)throw new cl(a);function m(l){var e=i,s=c;return i=c=n,r=l,d=t.apply(s,e),d}function y(t){return r=t,u=Md(G,l),b?m(t):d}function p(t){var e=t-o,i=t-r,n=l-e;return h?Dl(n,s-i):n}function W(t){var e=t-o,i=t-r;return o===n||e>=l||e<0||h&&i>=s}function G(){var t=wu();if(W(t))return X(t);u=Md(G,p(t))}function X(t){return u=n,Z&&i?m(t):(i=c=n,d)}function Y(){u!==n&&Hc(u),r=0,i=o=c=u=n}function N(){return u===n?d:X(wu())}function V(){var t=wu(),e=W(t);if(i=arguments,c=this,o=t,e){if(u===n)return y(o);if(h)return Hc(u),u=Md(G,l),m(o)}return u===n&&(u=Md(G,l)),d}return l=Ao(l)||0,Mo(e)&&(b=!!e.leading,h="maxWait"in e,s=h?vl(Ao(e.maxWait)||0,l):s,Z="trailing"in e?!!e.trailing:Z),V.cancel=Y,V.flush=N,V}var Ju=Xc((function(t,l){return Xn(t,1,l)})),gu=Xc((function(t,l,e){return Xn(t,Ao(l)||0,e)}));function Fu(t){return Ts(t,w)}function ju(t,l){if("function"!=typeof t||null!=l&&"function"!=typeof l)throw new cl(a);var e=function(){var i=arguments,n=l?l.apply(this,i):i[0],c=e.cache;if(c.has(n))return c.get(n);var s=t.apply(this,i);return e.cache=c.set(n,s)||c,s};return e.cache=new(ju.Cache||Ui),e}function vu(t){if("function"!=typeof t)throw new cl(a);return function(){var l=arguments;switch(l.length){case 0:return!t.call(this);case 1:return!t.call(this,l[0]);case 2:return!t.call(this,l[0],l[1]);case 3:return!t.call(this,l[0],l[1],l[2])}return!t.apply(this,l)}}function Du(t){return Tu(2,t)}ju.Cache=Ui;var Uu=Kc((function(t,l){l=1==l.length&&ao(l[0])?Ie(l[0],Be(Os())):Ie(fn(l,1),Be(Os()));var e=l.length;return Xc((function(i){var n=-1,c=Dl(i.length,e);while(++n<c)i[n]=l[n].call(this,i[n]);return We(t,this,i)}))})),Ou=Xc((function(t,l){var e=ui(l,Us(Ou));return Ts(t,V,n,l,e)})),Ku=Xc((function(t,l){var e=ui(l,Us(Ku));return Ts(t,M,n,l,e)})),Eu=gs((function(t,l){return Ts(t,I,n,n,n,l)}));function Hu(t,l){if("function"!=typeof t)throw new cl(a);return l=l===n?l:Bo(l),Xc(t,l)}function Qu(t,l){if("function"!=typeof t)throw new cl(a);return l=null==l?0:vl(Bo(l),0),Xc((function(e){var i=e[l],n=Ec(e,0,l);return i&&we(n,i),We(t,this,n)}))}function Bu(t,l,e){var i=!0,n=!0;if("function"!=typeof t)throw new cl(a);return Mo(e)&&(i="leading"in e?!!e.leading:i,n="trailing"in e?!!e.trailing:n),Cu(t,l,{leading:i,maxWait:l,trailing:n})}function Pu(t){return Ru(t,1)}function Au(t,l){return Ou(Uc(l),t)}function _u(){if(!arguments.length)return[];var t=arguments[0];return ao(t)?t:[t]}function qu(t){return pn(t,m)}function $u(t,l){return l="function"==typeof l?l:n,pn(t,m,l)}function to(t){return pn(t,h|m)}function lo(t,l){return l="function"==typeof l?l:n,pn(t,h|m,l)}function eo(t,l){return null==l||Gn(t,l,Nr(l))}function io(t,l){return t===l||t!==t&&l!==l}var no=Ls(gn),co=Ls((function(t,l){return t>=l})),so=Kn(function(){return arguments}())?Kn:function(t){return Lo(t)&&rl.call(t,"callee")&&!Ml.call(t,"callee")},ao=e.isArray,uo=be?Be(be):En;function oo(t){return null!=t&&Vo(t.length)&&!Yo(t)}function ro(t){return Lo(t)&&oo(t)}function bo(t){return!0===t||!1===t||Lo(t)&&Jn(t)==H}var ho=Jl||Bb,Zo=he?Be(he):Hn;function mo(t){return Lo(t)&&1===t.nodeType&&!ko(t)}function yo(t){if(null==t)return!0;if(oo(t)&&(ao(t)||"string"==typeof t||"function"==typeof t.splice||ho(t)||vo(t)||so(t)))return!t.length;var l=As(t);if(l==q||l==ct)return!t.size;if(bd(t))return!ec(t).length;for(var e in t)if(rl.call(t,e))return!1;return!0}function po(t,l){return Qn(t,l)}function Wo(t,l,e){e="function"==typeof e?e:n;var i=e?e(t,l):n;return i===n?Qn(t,l,n,e):!!i}function Go(t){if(!Lo(t))return!1;var l=Jn(t);return l==P||l==B||"string"==typeof t.message&&"string"==typeof t.name&&!ko(t)}function Xo(t){return"number"==typeof t&&gl(t)}function Yo(t){if(!Mo(t))return!1;var l=Jn(t);return l==A||l==_||l==E||l==it}function No(t){return"number"==typeof t&&t==Bo(t)}function Vo(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=J}function Mo(t){var l=typeof t;return null!=t&&("object"==l||"function"==l)}function Lo(t){return null!=t&&"object"==typeof t}var Io=Ze?Be(Ze):Pn;function wo(t,l){return t===l||An(t,l,Es(l))}function fo(t,l,e){return e="function"==typeof e?e:n,An(t,l,Es(l),e)}function Ro(t){return So(t)&&t!=+t}function To(t){if(rd(t))throw new Ft(d);return _n(t)}function zo(t){return null===t}function xo(t){return null==t}function So(t){return"number"==typeof t||Lo(t)&&Jn(t)==$}function ko(t){if(!Lo(t)||Jn(t)!=lt)return!1;var l=Nl(t);if(null===l)return!0;var e=rl.call(l,"constructor")&&l.constructor;return"function"==typeof e&&e instanceof e&&ol.call(e)==ml}var Co=me?Be(me):qn;function Jo(t){return No(t)&&t>=-J&&t<=J}var go=ye?Be(ye):$n;function Fo(t){return"string"==typeof t||!ao(t)&&Lo(t)&&Jn(t)==st}function jo(t){return"symbol"==typeof t||Lo(t)&&Jn(t)==dt}var vo=pe?Be(pe):tc;function Do(t){return t===n}function Uo(t){return Lo(t)&&As(t)==ut}function Oo(t){return Lo(t)&&Jn(t)==ot}var Ko=Ls(nc),Eo=Ls((function(t,l){return t<=l}));function Ho(t){if(!t)return[];if(oo(t))return Fo(t)?mi(t):is(t);if(wl&&t[wl])return si(t[wl]());var l=As(t),e=l==q?di:l==ct?oi:Dr;return e(t)}function Qo(t){if(!t)return 0===t?t:0;if(t=Ao(t),t===C||t===-C){var l=t<0?-1:1;return l*g}return t===t?t:0}function Bo(t){var l=Qo(t),e=l%1;return l===l?e?l-e:l:0}function Po(t){return t?yn(Bo(t),0,j):0}function Ao(t){if("number"==typeof t)return t;if(jo(t))return F;if(Mo(t)){var l="function"==typeof t.valueOf?t.valueOf():t;t=Mo(l)?l+"":l}if("string"!=typeof t)return 0===t?t:+t;t=Qe(t);var e=Bt.test(t);return e||At.test(t)?ie(t.slice(2),e?2:8):Qt.test(t)?F:+t}function _o(t){return ns(t,Vr(t))}function qo(t){return t?yn(Bo(t),-J,J):0===t?t:0}function $o(t){return null==t?"":Sc(t)}var tr=as((function(t,l){if(bd(l)||oo(l))ns(l,Nr(l),t);else for(var e in l)rl.call(l,e)&&un(t,e,l[e])})),lr=as((function(t,l){ns(l,Vr(l),t)})),er=as((function(t,l,e,i){ns(l,Vr(l),t,i)})),ir=as((function(t,l,e,i){ns(l,Nr(l),t,i)})),nr=gs(mn);function cr(t,l){var e=Vi(t);return null==l?e:bn(e,l)}var sr=Xc((function(t,l){t=el(t);var e=-1,i=l.length,c=i>2?l[2]:n;c&&sd(l[0],l[1],c)&&(i=1);while(++e<i){var s=l[e],d=Vr(s),a=-1,u=d.length;while(++a<u){var o=d[a],r=t[o];(r===n||io(r,al[o])&&!rl.call(t,o))&&(t[o]=s[o])}}return t})),dr=Xc((function(t){return t.push(n,xs),We(wr,n,t)}));function ar(t,l){return ke(t,Os(l,3),zn)}function ur(t,l){return ke(t,Os(l,3),xn)}function or(t,l){return null==t?t:Rn(t,Os(l,3),Vr)}function rr(t,l){return null==t?t:Tn(t,Os(l,3),Vr)}function br(t,l){return t&&zn(t,Os(l,3))}function hr(t,l){return t&&xn(t,Os(l,3))}function Zr(t){return null==t?[]:Sn(t,Nr(t))}function mr(t){return null==t?[]:Sn(t,Vr(t))}function yr(t,l,e){var i=null==t?n:kn(t,l);return i===n?e:i}function pr(t,l){return null!=t&&$s(t,l,Fn)}function Wr(t,l){return null!=t&&$s(t,l,jn)}var Gr=Gs((function(t,l,e){null!=l&&"function"!=typeof l.toString&&(l=Zl.call(l)),t[l]=e}),Ib(Tb)),Xr=Gs((function(t,l,e){null!=l&&"function"!=typeof l.toString&&(l=Zl.call(l)),rl.call(t,l)?t[l].push(e):t[l]=[e]}),Os),Yr=Xc(On);function Nr(t){return oo(t)?nn(t):ec(t)}function Vr(t){return oo(t)?nn(t,!0):ic(t)}function Mr(t,l){var e={};return l=Os(l,3),zn(t,(function(t,i,n){Zn(e,l(t,i,n),t)})),e}function Lr(t,l){var e={};return l=Os(l,3),zn(t,(function(t,i,n){Zn(e,i,l(t,i,n))})),e}var Ir=as((function(t,l,e){ac(t,l,e)})),wr=as((function(t,l,e,i){ac(t,l,e,i)})),fr=gs((function(t,l){var e={};if(null==t)return e;var i=!1;l=Ie(l,(function(l){return l=Oc(l,t),i||(i=l.length>1),l})),ns(t,js(t),e),i&&(e=pn(e,h|Z|m,Ss));var n=l.length;while(n--)Cc(e,l[n]);return e}));function Rr(t,l){return zr(t,vu(Os(l)))}var Tr=gs((function(t,l){return null==t?{}:bc(t,l)}));function zr(t,l){if(null==t)return{};var e=Ie(js(t),(function(t){return[t]}));return l=Os(l),hc(t,e,(function(t,e){return l(t,e[0])}))}function xr(t,l,e){l=Oc(l,t);var i=-1,c=l.length;c||(c=1,t=n);while(++i<c){var s=null==t?n:t[Td(l[i])];s===n&&(i=c,s=e),t=Yo(s)?s.call(t):s}return t}function Sr(t,l,e){return null==t?t:Vc(t,l,e)}function kr(t,l,e,i){return i="function"==typeof i?i:n,null==t?t:Vc(t,l,e,i)}var Cr=Rs(Nr),Jr=Rs(Vr);function gr(t,l,e){var i=ao(t),n=i||ho(t)||vo(t);if(l=Os(l,4),null==e){var c=t&&t.constructor;e=n?i?new c:[]:Mo(t)&&Yo(c)?Vi(Nl(t)):{}}return(n?Xe:zn)(t,(function(t,i,n){return l(e,t,i,n)})),e}function Fr(t,l){return null==t||Cc(t,l)}function jr(t,l,e){return null==t?t:Jc(t,l,Uc(e))}function vr(t,l,e,i){return i="function"==typeof i?i:n,null==t?t:Jc(t,l,Uc(e),i)}function Dr(t){return null==t?[]:Pe(t,Nr(t))}function Ur(t){return null==t?[]:Pe(t,Vr(t))}function Or(t,l,e){return e===n&&(e=l,l=n),e!==n&&(e=Ao(e),e=e===e?e:0),l!==n&&(l=Ao(l),l=l===l?l:0),yn(Ao(t),l,e)}function Kr(t,l,e){return l=Qo(l),e===n?(e=l,l=0):e=Qo(e),t=Ao(t),vn(t,l,e)}function Er(t,l,e){if(e&&"boolean"!=typeof e&&sd(t,l,e)&&(l=e=n),e===n&&("boolean"==typeof l?(e=l,l=n):"boolean"==typeof t&&(e=t,t=n)),t===n&&l===n?(t=0,l=1):(t=Qo(t),l===n?(l=t,t=0):l=Qo(l)),t>l){var i=t;t=l,l=i}if(e||t%1||l%1){var c=Hl();return Dl(t+c*(l-t+ee("1e-"+((c+"").length-1))),l)}return pc(t,l)}var Hr=hs((function(t,l,e){return l=l.toLowerCase(),t+(e?Qr(l):l)}));function Qr(t){return Xb($o(t).toLowerCase())}function Br(t){return t=$o(t),t&&t.replace(qt,ti).replace(Ol,"")}function Pr(t,l,e){t=$o(t),l=Sc(l);var i=t.length;e=e===n?i:yn(Bo(e),0,i);var c=e;return e-=l.length,e>=0&&t.slice(e,c)==l}function Ar(t){return t=$o(t),t&&ft.test(t)?t.replace(It,li):t}function _r(t){return t=$o(t),t&&Jt.test(t)?t.replace(Ct,"\\$&"):t}var qr=hs((function(t,l,e){return t+(e?"-":"")+l.toLowerCase()})),$r=hs((function(t,l,e){return t+(e?" ":"")+l.toLowerCase()})),tb=bs("toLowerCase");function lb(t,l,e){t=$o(t),l=Bo(l);var i=l?Zi(t):0;if(!l||i>=l)return t;var n=(l-i)/2;return Ns(kl(n),e)+t+Ns(Sl(n),e)}function eb(t,l,e){t=$o(t),l=Bo(l);var i=l?Zi(t):0;return l&&i<l?t+Ns(l-i,e):t}function ib(t,l,e){t=$o(t),l=Bo(l);var i=l?Zi(t):0;return l&&i<l?Ns(l-i,e)+t:t}function nb(t,l,e){return e||null==l?l=0:l&&(l=+l),El($o(t).replace(gt,""),l||0)}function cb(t,l,e){return l=(e?sd(t,l,e):l===n)?1:Bo(l),Gc($o(t),l)}function sb(){var t=arguments,l=$o(t[0]);return t.length<3?l:l.replace(t[1],t[2])}var db=hs((function(t,l,e){return t+(e?"_":"")+l.toLowerCase()}));function ab(t,l,e){return e&&"number"!=typeof e&&sd(t,l,e)&&(l=e=n),e=e===n?j:e>>>0,e?(t=$o(t),t&&("string"==typeof l||null!=l&&!Co(l))&&(l=Sc(l),!l&&ni(t))?Ec(mi(t),0,e):t.split(l,e)):[]}var ub=hs((function(t,l,e){return t+(e?" ":"")+Xb(l)}));function ob(t,l,e){return t=$o(t),e=null==e?0:yn(Bo(e),0,t.length),l=Sc(l),t.slice(e,e+l.length)==l}function rb(t,l,e){var i=Yi.templateSettings;e&&sd(t,l,e)&&(l=n),t=$o(t),l=er({},l,i,zs);var c,s,d=er({},l.imports,i.imports,zs),a=Nr(d),o=Pe(d,a),r=0,b=l.interpolate||$t,h="__p += '",Z=il((l.escape||$t).source+"|"+b.source+"|"+(b===zt?Et:$t).source+"|"+(l.evaluate||$t).source+"|$","g"),m="//# sourceURL="+(rl.call(l,"sourceURL")?(l.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Pl+"]")+"\n";t.replace(Z,(function(l,e,i,n,d,a){return i||(i=n),h+=t.slice(r,a).replace(tl,ei),e&&(c=!0,h+="' +\n__e("+e+") +\n'"),d&&(s=!0,h+="';\n"+d+";\n__p += '"),i&&(h+="' +\n((__t = ("+i+")) == null ? '' : __t) +\n'"),r=a+l.length,l})),h+="';\n";var y=rl.call(l,"variable")&&l.variable;if(y){if(Ot.test(y))throw new Ft(u)}else h="with (obj) {\n"+h+"\n}\n";h=(s?h.replace(Nt,""):h).replace(Vt,"$1").replace(Mt,"$1;"),h="function("+(y||"obj")+") {\n"+(y?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(c?", __e = _.escape":"")+(s?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var p=Nb((function(){return Ut(a,m+"return "+h).apply(n,o)}));if(p.source=h,Go(p))throw p;return p}function bb(t){return $o(t).toLowerCase()}function hb(t){return $o(t).toUpperCase()}function Zb(t,l,e){if(t=$o(t),t&&(e||l===n))return Qe(t);if(!t||!(l=Sc(l)))return t;var i=mi(t),c=mi(l),s=_e(i,c),d=qe(i,c)+1;return Ec(i,s,d).join("")}function mb(t,l,e){if(t=$o(t),t&&(e||l===n))return t.slice(0,yi(t)+1);if(!t||!(l=Sc(l)))return t;var i=mi(t),c=qe(i,mi(l))+1;return Ec(i,0,c).join("")}function yb(t,l,e){if(t=$o(t),t&&(e||l===n))return t.replace(gt,"");if(!t||!(l=Sc(l)))return t;var i=mi(t),c=_e(i,mi(l));return Ec(i,c).join("")}function pb(t,l){var e=f,i=R;if(Mo(l)){var c="separator"in l?l.separator:c;e="length"in l?Bo(l.length):e,i="omission"in l?Sc(l.omission):i}t=$o(t);var s=t.length;if(ni(t)){var d=mi(t);s=d.length}if(e>=s)return t;var a=e-Zi(i);if(a<1)return i;var u=d?Ec(d,0,a).join(""):t.slice(0,a);if(c===n)return u+i;if(d&&(a+=u.length-a),Co(c)){if(t.slice(a).search(c)){var o,r=u;c.global||(c=il(c.source,$o(Ht.exec(c))+"g")),c.lastIndex=0;while(o=c.exec(r))var b=o.index;u=u.slice(0,b===n?a:b)}}else if(t.indexOf(Sc(c),a)!=a){var h=u.lastIndexOf(c);h>-1&&(u=u.slice(0,h))}return u+i}function Wb(t){return t=$o(t),t&&wt.test(t)?t.replace(Lt,pi):t}var Gb=hs((function(t,l,e){return t+(e?" ":"")+l.toUpperCase()})),Xb=bs("toUpperCase");function Yb(t,l,e){return t=$o(t),l=e?n:l,l===n?ci(t)?Xi(t):Se(t):t.match(l)||[]}var Nb=Xc((function(t,l){try{return We(t,n,l)}catch(e){return Go(e)?e:new Ft(e)}})),Vb=gs((function(t,l){return Xe(l,(function(l){l=Td(l),Zn(t,l,zu(t[l],t))})),t}));function Mb(t){var l=null==t?0:t.length,e=Os();return t=l?Ie(t,(function(t){if("function"!=typeof t[1])throw new cl(a);return[e(t[0]),t[1]]})):[],Xc((function(e){var i=-1;while(++i<l){var n=t[i];if(We(n[0],this,e))return We(n[1],this,e)}}))}function Lb(t){return Wn(pn(t,h))}function Ib(t){return function(){return t}}function wb(t,l){return null==t||t!==t?l:t}var fb=ps(),Rb=ps(!0);function Tb(t){return t}function zb(t){return lc("function"==typeof t?t:pn(t,h))}function xb(t){return sc(pn(t,h))}function Sb(t,l){return dc(t,pn(l,h))}var kb=Xc((function(t,l){return function(e){return On(e,t,l)}})),Cb=Xc((function(t,l){return function(e){return On(t,e,l)}}));function Jb(t,l,e){var i=Nr(l),n=Sn(l,i);null!=e||Mo(l)&&(n.length||!i.length)||(e=l,l=t,t=this,n=Sn(l,Nr(l)));var c=!(Mo(e)&&"chain"in e)||!!e.chain,s=Yo(t);return Xe(n,(function(e){var i=l[e];t[e]=i,s&&(t.prototype[e]=function(){var l=this.__chain__;if(c||l){var e=t(this.__wrapped__),n=e.__actions__=is(this.__actions__);return n.push({func:i,args:arguments,thisArg:t}),e.__chain__=l,e}return i.apply(t,we([this.value()],arguments))})})),t}function gb(){return se._===this&&(se._=yl),this}function Fb(){}function jb(t){return t=Bo(t),Xc((function(l){return oc(l,t)}))}var vb=Ys(Ie),Db=Ys(Ne),Ub=Ys(Te);function Ob(t){return dd(t)?ve(Td(t)):Zc(t)}function Kb(t){return function(l){return null==t?n:kn(t,l)}}var Eb=Ms(),Hb=Ms(!0);function Qb(){return[]}function Bb(){return!1}function Pb(){return{}}function Ab(){return""}function _b(){return!0}function qb(t,l){if(t=Bo(t),t<1||t>J)return[];var e=j,i=Dl(t,j);l=Os(l),t-=j;var n=Ee(i,l);while(++e<t)l(e);return n}function $b(t){return ao(t)?Ie(t,Td):jo(t)?[t]:is(Rd($o(t)))}function th(t){var l=++bl;return $o(t)+l}var lh=Xs((function(t,l){return t+l}),0),eh=ws("ceil"),ih=Xs((function(t,l){return t/l}),1),nh=ws("floor");function ch(t){return t&&t.length?Ln(t,Tb,gn):n}function sh(t,l){return t&&t.length?Ln(t,Os(l,2),gn):n}function dh(t){return je(t,Tb)}function ah(t,l){return je(t,Os(l,2))}function uh(t){return t&&t.length?Ln(t,Tb,nc):n}function oh(t,l){return t&&t.length?Ln(t,Os(l,2),nc):n}var rh=Xs((function(t,l){return t*l}),1),bh=ws("round"),hh=Xs((function(t,l){return t-l}),0);function Zh(t){return t&&t.length?Ke(t,Tb):0}function mh(t,l){return t&&t.length?Ke(t,Os(l,2)):0}return Yi.after=fu,Yi.ary=Ru,Yi.assign=tr,Yi.assignIn=lr,Yi.assignInWith=er,Yi.assignWith=ir,Yi.at=nr,Yi.before=Tu,Yi.bind=zu,Yi.bindAll=Vb,Yi.bindKey=xu,Yi.castArray=_u,Yi.chain=Ka,Yi.chunk=kd,Yi.compact=Cd,Yi.concat=Jd,Yi.cond=Mb,Yi.conforms=Lb,Yi.constant=Ib,Yi.countBy=lu,Yi.create=cr,Yi.curry=Su,Yi.curryRight=ku,Yi.debounce=Cu,Yi.defaults=sr,Yi.defaultsDeep=dr,Yi.defer=Ju,Yi.delay=gu,Yi.difference=gd,Yi.differenceBy=Fd,Yi.differenceWith=jd,Yi.drop=vd,Yi.dropRight=Dd,Yi.dropRightWhile=Ud,Yi.dropWhile=Od,Yi.fill=Kd,Yi.filter=iu,Yi.flatMap=su,Yi.flatMapDeep=du,Yi.flatMapDepth=au,Yi.flatten=Qd,Yi.flattenDeep=Bd,Yi.flattenDepth=Pd,Yi.flip=Fu,Yi.flow=fb,Yi.flowRight=Rb,Yi.fromPairs=Ad,Yi.functions=Zr,Yi.functionsIn=mr,Yi.groupBy=ru,Yi.initial=$d,Yi.intersection=ta,Yi.intersectionBy=la,Yi.intersectionWith=ea,Yi.invert=Gr,Yi.invertBy=Xr,Yi.invokeMap=hu,Yi.iteratee=zb,Yi.keyBy=Zu,Yi.keys=Nr,Yi.keysIn=Vr,Yi.map=mu,Yi.mapKeys=Mr,Yi.mapValues=Lr,Yi.matches=xb,Yi.matchesProperty=Sb,Yi.memoize=ju,Yi.merge=Ir,Yi.mergeWith=wr,Yi.method=kb,Yi.methodOf=Cb,Yi.mixin=Jb,Yi.negate=vu,Yi.nthArg=jb,Yi.omit=fr,Yi.omitBy=Rr,Yi.once=Du,Yi.orderBy=yu,Yi.over=vb,Yi.overArgs=Uu,Yi.overEvery=Db,Yi.overSome=Ub,Yi.partial=Ou,Yi.partialRight=Ku,Yi.partition=pu,Yi.pick=Tr,Yi.pickBy=zr,Yi.property=Ob,Yi.propertyOf=Kb,Yi.pull=da,Yi.pullAll=aa,Yi.pullAllBy=ua,Yi.pullAllWith=oa,Yi.pullAt=ra,Yi.range=Eb,Yi.rangeRight=Hb,Yi.rearg=Eu,Yi.reject=Xu,Yi.remove=ba,Yi.rest=Hu,Yi.reverse=ha,Yi.sampleSize=Nu,Yi.set=Sr,Yi.setWith=kr,Yi.shuffle=Vu,Yi.slice=Za,Yi.sortBy=Iu,Yi.sortedUniq=Ya,Yi.sortedUniqBy=Na,Yi.split=ab,Yi.spread=Qu,Yi.tail=Va,Yi.take=Ma,Yi.takeRight=La,Yi.takeRightWhile=Ia,Yi.takeWhile=wa,Yi.tap=Ea,Yi.throttle=Bu,Yi.thru=Ha,Yi.toArray=Ho,Yi.toPairs=Cr,Yi.toPairsIn=Jr,Yi.toPath=$b,Yi.toPlainObject=_o,Yi.transform=gr,Yi.unary=Pu,Yi.union=fa,Yi.unionBy=Ra,Yi.unionWith=Ta,Yi.uniq=za,Yi.uniqBy=xa,Yi.uniqWith=Sa,Yi.unset=Fr,Yi.unzip=ka,Yi.unzipWith=Ca,Yi.update=jr,Yi.updateWith=vr,Yi.values=Dr,Yi.valuesIn=Ur,Yi.without=Ja,Yi.words=Yb,Yi.wrap=Au,Yi.xor=ga,Yi.xorBy=Fa,Yi.xorWith=ja,Yi.zip=va,Yi.zipObject=Da,Yi.zipObjectDeep=Ua,Yi.zipWith=Oa,Yi.entries=Cr,Yi.entriesIn=Jr,Yi.extend=lr,Yi.extendWith=er,Jb(Yi,Yi),Yi.add=lh,Yi.attempt=Nb,Yi.camelCase=Hr,Yi.capitalize=Qr,Yi.ceil=eh,Yi.clamp=Or,Yi.clone=qu,Yi.cloneDeep=to,Yi.cloneDeepWith=lo,Yi.cloneWith=$u,Yi.conformsTo=eo,Yi.deburr=Br,Yi.defaultTo=wb,Yi.divide=ih,Yi.endsWith=Pr,Yi.eq=io,Yi.escape=Ar,Yi.escapeRegExp=_r,Yi.every=eu,Yi.find=nu,Yi.findIndex=Ed,Yi.findKey=ar,Yi.findLast=cu,Yi.findLastIndex=Hd,Yi.findLastKey=ur,Yi.floor=nh,Yi.forEach=uu,Yi.forEachRight=ou,Yi.forIn=or,Yi.forInRight=rr,Yi.forOwn=br,Yi.forOwnRight=hr,Yi.get=yr,Yi.gt=no,Yi.gte=co,Yi.has=pr,Yi.hasIn=Wr,Yi.head=_d,Yi.identity=Tb,Yi.includes=bu,Yi.indexOf=qd,Yi.inRange=Kr,Yi.invoke=Yr,Yi.isArguments=so,Yi.isArray=ao,Yi.isArrayBuffer=uo,Yi.isArrayLike=oo,Yi.isArrayLikeObject=ro,Yi.isBoolean=bo,Yi.isBuffer=ho,Yi.isDate=Zo,Yi.isElement=mo,Yi.isEmpty=yo,Yi.isEqual=po,Yi.isEqualWith=Wo,Yi.isError=Go,Yi.isFinite=Xo,Yi.isFunction=Yo,Yi.isInteger=No,Yi.isLength=Vo,Yi.isMap=Io,Yi.isMatch=wo,Yi.isMatchWith=fo,Yi.isNaN=Ro,Yi.isNative=To,Yi.isNil=xo,Yi.isNull=zo,Yi.isNumber=So,Yi.isObject=Mo,Yi.isObjectLike=Lo,Yi.isPlainObject=ko,Yi.isRegExp=Co,Yi.isSafeInteger=Jo,Yi.isSet=go,Yi.isString=Fo,Yi.isSymbol=jo,Yi.isTypedArray=vo,Yi.isUndefined=Do,Yi.isWeakMap=Uo,Yi.isWeakSet=Oo,Yi.join=ia,Yi.kebabCase=qr,Yi.last=na,Yi.lastIndexOf=ca,Yi.lowerCase=$r,Yi.lowerFirst=tb,Yi.lt=Ko,Yi.lte=Eo,Yi.max=ch,Yi.maxBy=sh,Yi.mean=dh,Yi.meanBy=ah,Yi.min=uh,Yi.minBy=oh,Yi.stubArray=Qb,Yi.stubFalse=Bb,Yi.stubObject=Pb,Yi.stubString=Ab,Yi.stubTrue=_b,Yi.multiply=rh,Yi.nth=sa,Yi.noConflict=gb,Yi.noop=Fb,Yi.now=wu,Yi.pad=lb,Yi.padEnd=eb,Yi.padStart=ib,Yi.parseInt=nb,Yi.random=Er,Yi.reduce=Wu,Yi.reduceRight=Gu,Yi.repeat=cb,Yi.replace=sb,Yi.result=xr,Yi.round=bh,Yi.runInContext=t,Yi.sample=Yu,Yi.size=Mu,Yi.snakeCase=db,Yi.some=Lu,Yi.sortedIndex=ma,Yi.sortedIndexBy=ya,Yi.sortedIndexOf=pa,Yi.sortedLastIndex=Wa,Yi.sortedLastIndexBy=Ga,Yi.sortedLastIndexOf=Xa,Yi.startCase=ub,Yi.startsWith=ob,Yi.subtract=hh,Yi.sum=Zh,Yi.sumBy=mh,Yi.template=rb,Yi.times=qb,Yi.toFinite=Qo,Yi.toInteger=Bo,Yi.toLength=Po,Yi.toLower=bb,Yi.toNumber=Ao,Yi.toSafeInteger=qo,Yi.toString=$o,Yi.toUpper=hb,Yi.trim=Zb,Yi.trimEnd=mb,Yi.trimStart=yb,Yi.truncate=pb,Yi.unescape=Wb,Yi.uniqueId=th,Yi.upperCase=Gb,Yi.upperFirst=Xb,Yi.each=uu,Yi.eachRight=ou,Yi.first=_d,Jb(Yi,function(){var t={};return zn(Yi,(function(l,e){rl.call(Yi.prototype,e)||(t[e]=l)})),t}(),{chain:!1}),Yi.VERSION=c,Xe(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Yi[t].placeholder=Yi})),Xe(["drop","take"],(function(t,l){Ii.prototype[t]=function(e){e=e===n?1:vl(Bo(e),0);var i=this.__filtered__&&!l?new Ii(this):this.clone();return i.__filtered__?i.__takeCount__=Dl(e,i.__takeCount__):i.__views__.push({size:Dl(e,j),type:t+(i.__dir__<0?"Right":"")}),i},Ii.prototype[t+"Right"]=function(l){return this.reverse()[t](l).reverse()}})),Xe(["filter","map","takeWhile"],(function(t,l){var e=l+1,i=e==x||e==k;Ii.prototype[t]=function(t){var l=this.clone();return l.__iteratees__.push({iteratee:Os(t,3),type:e}),l.__filtered__=l.__filtered__||i,l}})),Xe(["head","last"],(function(t,l){var e="take"+(l?"Right":"");Ii.prototype[t]=function(){return this[e](1).value()[0]}})),Xe(["initial","tail"],(function(t,l){var e="drop"+(l?"":"Right");Ii.prototype[t]=function(){return this.__filtered__?new Ii(this):this[e](1)}})),Ii.prototype.compact=function(){return this.filter(Tb)},Ii.prototype.find=function(t){return this.filter(t).head()},Ii.prototype.findLast=function(t){return this.reverse().find(t)},Ii.prototype.invokeMap=Xc((function(t,l){return"function"==typeof t?new Ii(this):this.map((function(e){return On(e,t,l)}))})),Ii.prototype.reject=function(t){return this.filter(vu(Os(t)))},Ii.prototype.slice=function(t,l){t=Bo(t);var e=this;return e.__filtered__&&(t>0||l<0)?new Ii(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),l!==n&&(l=Bo(l),e=l<0?e.dropRight(-l):e.take(l-t)),e)},Ii.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Ii.prototype.toArray=function(){return this.take(j)},zn(Ii.prototype,(function(t,l){var e=/^(?:filter|find|map|reject)|While$/.test(l),i=/^(?:head|last)$/.test(l),c=Yi[i?"take"+("last"==l?"Right":""):l],s=i||/^find/.test(l);c&&(Yi.prototype[l]=function(){var l=this.__wrapped__,d=i?[1]:arguments,a=l instanceof Ii,u=d[0],o=a||ao(l),r=function(t){var l=c.apply(Yi,we([t],d));return i&&b?l[0]:l};o&&e&&"function"==typeof u&&1!=u.length&&(a=o=!1);var b=this.__chain__,h=!!this.__actions__.length,Z=s&&!b,m=a&&!h;if(!s&&o){l=m?l:new Ii(this);var y=t.apply(l,d);return y.__actions__.push({func:Ha,args:[r],thisArg:n}),new Li(y,b)}return Z&&m?t.apply(this,d):(y=this.thru(r),Z?i?y.value()[0]:y.value():y)})})),Xe(["pop","push","shift","sort","splice","unshift"],(function(t){var l=sl[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);Yi.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return l.apply(ao(n)?n:[],t)}return this[e]((function(e){return l.apply(ao(e)?e:[],t)}))}})),zn(Ii.prototype,(function(t,l){var e=Yi[l];if(e){var i=e.name+"";rl.call(ae,i)||(ae[i]=[]),ae[i].push({name:l,func:e})}})),ae[Ws(n,G).name]=[{name:"wrapper",func:n}],Ii.prototype.clone=wi,Ii.prototype.reverse=fi,Ii.prototype.value=Ri,Yi.prototype.at=Qa,Yi.prototype.chain=Ba,Yi.prototype.commit=Pa,Yi.prototype.next=Aa,Yi.prototype.plant=qa,Yi.prototype.reverse=$a,Yi.prototype.toJSON=Yi.prototype.valueOf=Yi.prototype.value=tu,Yi.prototype.first=Yi.prototype.head,wl&&(Yi.prototype[wl]=_a),Yi},Ni=Yi();se._=Ni,i=function(){return Ni}.call(l,e,l,t),i===n||(t.exports=i)}.call(this)}},l={};function e(i){var n=l[i];if(void 0!==n)return n.exports;var c=l[i]={id:i,loaded:!1,exports:{}};return t[i].call(c.exports,c,c.exports,e),c.loaded=!0,c.exports}!function(){e.n=function(t){var l=t&&t.__esModule?function(){return t["default"]}:function(){return t};return e.d(l,{a:l}),l}}(),function(){e.d=function(t,l){for(var i in l)e.o(l,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:l[i]})}}(),function(){e.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){e.o=function(t,l){return Object.prototype.hasOwnProperty.call(t,l)}}(),function(){e.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){e.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t}}(),function(){e.p=""}();var i={};return function(){"use strict";if(e.r(i),e.d(i,{default:function(){return Bn}}),"undefined"!==typeof window){var t=window.document.currentScript,l=t&&t.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);l&&(e.p=l[1])}var n=function(){var t=this,l=t._self._c;return l("div",{ref:"vue-office-excel",staticClass:"vue-office-excel"})},c=[];class s{constructor(t,l=""){"string"===typeof t?(this.el=document.createElement(t),this.el.className=l):this.el=t,this.data={}}data(t,l){return void 0!==l?(this.data[t]=l,this):this.data[t]}on(t,l){const[e,...i]=t.split(".");let n=e;return"mousewheel"===n&&/Firefox/i.test(window.navigator.userAgent)&&(n="DOMMouseScroll"),this.el.addEventListener(n,(t=>{l(t);for(let l=0;l<i.length;l+=1){const e=i[l];if("left"===e&&0!==t.button)return;if("right"===e&&2!==t.button)return;"stop"===e&&t.stopPropagation()}})),this}offset(t){if(void 0!==t)return Object.keys(t).forEach((l=>{this.css(l,`${t[l]}px`)})),this;const{offsetTop:l,offsetLeft:e,offsetHeight:i,offsetWidth:n}=this.el;return{top:l,left:e,height:i,width:n}}scroll(t){const{el:l}=this;return void 0!==t&&(void 0!==t.left&&(l.scrollLeft=t.left),void 0!==t.top&&(l.scrollTop=t.top)),{left:l.scrollLeft,top:l.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new s(this.el.parentNode)}children(...t){return 0===arguments.length?this.el.childNodes:(t.forEach((t=>this.child(t))),this)}removeChild(t){this.el.removeChild(t)}child(t){let l=t;return"string"===typeof t?l=document.createTextNode(t):t instanceof s&&(l=t.el),this.el.appendChild(l),this}contains(t){return this.el.contains(t)}className(t){return void 0!==t?(this.el.className=t,this):this.el.className}addClass(t){return this.el.classList.add(t),this}hasClass(t){return this.el.classList.contains(t)}removeClass(t){return this.el.classList.remove(t),this}toggle(t="active"){return this.toggleClass(t)}toggleClass(t){return this.el.classList.toggle(t)}active(t=!0,l="active"){return t?this.addClass(l):this.removeClass(l),this}checked(t=!0){return this.active(t,"checked"),this}disabled(t=!0){return t?this.addClass("disabled"):this.removeClass("disabled"),this}attr(t,l){if(void 0!==l)this.el.setAttribute(t,l);else{if("string"===typeof t)return this.el.getAttribute(t);Object.keys(t).forEach((l=>{this.el.setAttribute(l,t[l])}))}return this}removeAttr(t){return this.el.removeAttribute(t),this}html(t){return void 0!==t?(this.el.innerHTML=t,this):this.el.innerHTML}val(t){return void 0!==t?(this.el.value=t,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...t){return t.forEach((t=>this.el.style.removeProperty(t))),this}css(t,l){return void 0===l&&"string"!==typeof t?(Object.keys(t).forEach((l=>{this.el.style[l]=t[l]})),this):void 0!==l?(this.el.style[t]=l,this):this.el.style[t]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}}const d=(t,l="")=>new s(t,l),a=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function u(t){let l="",e=t;while(e>=a.length)e/=a.length,e-=1,l+=a[parseInt(e,10)%a.length];const i=t%a.length;return l+=a[i],l}function o(t){let l=0;for(let e=0;e<t.length-1;e+=1){const i=t.charCodeAt(e)-65,n=t.length-1-e;l+=a.length**n+a.length*i}return l+=t.charCodeAt(t.length-1)-65,l}function r(t){let l="",e="";for(let i=0;i<t.length;i+=1)t.charAt(i)>="0"&&t.charAt(i)<="9"?e+=t.charAt(i):l+=t.charAt(i);return[o(l),parseInt(e,10)-1]}function b(t,l){return`${u(t)}${l+1}`}function h(t,l,e,i=(()=>!0)){if(0===l&&0===e)return t;const[n,c]=r(t);return i(n,c)?b(n+l,c+e):t}class Z{constructor(t,l,e,i,n=0,c=0){this.sri=t,this.sci=l,this.eri=e,this.eci=i,this.w=n,this.h=c}set(t,l,e,i){this.sri=t,this.sci=l,this.eri=e,this.eci=i}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...t){let[l,e]=[0,0];1===t.length?[e,l]=r(t[0]):2===t.length&&([l,e]=t);const{sri:i,sci:n,eri:c,eci:s}=this;return i<=l&&l<=c&&n<=e&&e<=s}each(t,l=(()=>!0)){const{sri:e,sci:i,eri:n,eci:c}=this;for(let s=e;s<=n;s+=1)if(l(s))for(let l=i;l<=c;l+=1)t(s,l)}contains(t){return this.sri<=t.sri&&this.sci<=t.sci&&this.eri>=t.eri&&this.eci>=t.eci}within(t){return this.sri>=t.sri&&this.sci>=t.sci&&this.eri<=t.eri&&this.eci<=t.eci}disjoint(t){return this.sri>t.eri||this.sci>t.eci||t.sri>this.eri||t.sci>this.eci}intersects(t){return this.sri<=t.eri&&this.sci<=t.eci&&t.sri<=this.eri&&t.sci<=this.eci}union(t){const{sri:l,sci:e,eri:i,eci:n}=this;return new Z(t.sri<l?t.sri:l,t.sci<e?t.sci:e,t.eri>i?t.eri:i,t.eci>n?t.eci:n)}difference(t){const l=[],e=(t,e,i,n)=>{l.push(new Z(t,e,i,n))},{sri:i,sci:n,eri:c,eci:s}=this,d=t.sri-i,a=t.sci-n,u=c-t.eri,o=s-t.eci;return d>0?(e(i,n,t.sri-1,s),u>0?(e(t.eri+1,n,c,s),a>0&&e(t.sri,n,t.eri,t.sci-1),o>0&&e(t.sri,t.eci+1,t.eri,s)):(a>0&&e(t.sri,n,c,t.sci-1),o>0&&e(t.sri,t.eci+1,c,s))):u>0&&(e(t.eri+1,n,c,s),a>0&&e(i,n,t.eri,t.sci-1),o>0&&e(i,t.eci+1,t.eri,s)),a>0?(e(i,n,c,t.sci-1),o>0?(e(i,t.eri+1,c,s),d>0&&e(i,t.sci,t.sri-1,t.eci),u>0&&e(t.sri+1,t.sci,c,t.eci)):(d>0&&e(i,t.sci,t.sri-1,s),u>0&&e(t.sri+1,t.sci,c,s))):o>0&&(e(c,t.eci+1,c,s),d>0&&e(i,n,t.sri-1,t.eci),u>0&&e(t.eri+1,n,c,t.eci)),l}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:t,sci:l,eri:e,eci:i}=this;let n=b(l,t);return this.multiple()&&(n=`${n}:${b(i,e)}`),n}clone(){const{sri:t,sci:l,eri:e,eci:i,w:n,h:c}=this;return new Z(t,l,e,i,n,c)}equals(t){return this.eri===t.eri&&this.eci===t.eci&&this.sri===t.sri&&this.sci===t.sci}static valueOf(t){const l=t.split(":"),[e,i]=r(l[0]);let[n,c]=[i,e];return l.length>1&&([c,n]=r(l[1])),new Z(i,e,n,c)}}class m{constructor(){this.range=new Z(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(t,l){this.ri=t,this.ci=l}size(){return this.range.size()}}class y{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class p{constructor(){this.undoItems=[],this.redoItems=[]}add(t){this.undoItems.push(JSON.stringify(t)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(t,l){const{undoItems:e,redoItems:i}=this;this.canUndo()&&(i.push(JSON.stringify(t)),l(JSON.parse(e.pop())))}redo(t,l){const{undoItems:e,redoItems:i}=this;this.canRedo()&&(e.push(JSON.stringify(t)),l(JSON.parse(i.pop())))}}class W{constructor(){this.range=null,this.state="clear"}copy(t){return this.range=t,this.state="copy",this}cut(t){return this.range=t,this.state="cut",this}isCopy(){return"copy"===this.state}isCut(){return"cut"===this.state}isClear(){return"clear"===this.state}clear(){this.range=null,this.state="clear"}}class G{constructor(t,l,e){this.ci=t,this.operator=l,this.value=e}set(t,l){this.operator=t,this.value=l}includes(t){const{operator:l,value:e}=this;return"all"===l||"in"===l&&e.includes(t)}vlength(){const{operator:t,value:l}=this;return"in"===t?l.length:0}getData(){const{ci:t,operator:l,value:e}=this;return{ci:t,operator:l,value:e}}}class X{constructor(t,l){this.ci=t,this.order=l}asc(){return"asc"===this.order}desc(){return"desc"===this.order}}class Y{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:t,filters:l,sort:e}){null!=t&&(this.ref=t,this.filters=l.map((t=>new G(t.ci,t.operator,t.value))),e&&(this.sort=new X(e.ci,e.order)))}getData(){if(this.active()){const{ref:t,filters:l,sort:e}=this;return{ref:t,filters:l.map((t=>t.getData())),sort:e}}return{}}addFilter(t,l,e){const i=this.getFilter(t);null==i?this.filters.push(new G(t,l,e)):i.set(l,e)}setSort(t,l){this.sort=l?new X(t,l):null}includes(t,l){return!!this.active()&&this.hrange().includes(t,l)}getSort(t){const{sort:l}=this;return l&&l.ci===t?l:null}getFilter(t){const{filters:l}=this;for(let e=0;e<l.length;e+=1)if(l[e].ci===t)return l[e];return null}filteredRows(t){const l=new Set,e=new Set;if(this.active()){const{sri:i,eri:n}=this.range(),{filters:c}=this;for(let s=i+1;s<=n;s+=1)for(let i=0;i<c.length;i+=1){const n=c[i],d=t(s,n.ci),a=d?d.text:"";if(!n.includes(a)){l.add(s);break}e.add(s)}}return{rset:l,fset:e}}items(t,l){const e={};if(this.active()){const{sri:i,eri:n}=this.range();for(let c=i+1;c<=n;c+=1){const i=l(c,t);if(null===i||/^\s*$/.test(i.text))e[""]=(e[""]||0)+1;else{const t=i.text,l=(e[t]||0)+1;e[t]=l}}}return e}range(){return Z.valueOf(this.ref)}hrange(){const t=this.range();return t.eri=t.sri,t}clear(){this.ref=null,this.filters=[],this.sort=null}active(){return null!==this.ref}}class N{constructor(t=[]){this._=t}forEach(t){this._.forEach(t)}deleteWithin(t){this._=this._.filter((l=>!l.within(t)))}getFirstIncludes(t,l){for(let e=0;e<this._.length;e+=1){const i=this._[e];if(i.includes(t,l))return i}return null}filterIntersects(t){return new N(this._.filter((l=>l.intersects(t))))}intersects(t){for(let l=0;l<this._.length;l+=1){const e=this._[l];if(e.intersects(t))return!0}return!1}union(t){let l=t;return this._.forEach((t=>{t.intersects(l)&&(l=t.union(l))})),l}add(t){this.deleteWithin(t),this._.push(t)}shift(t,l,e,i){this._.forEach((n=>{const{sri:c,sci:s,eri:d,eci:a}=n,u=n;"row"===t?c>=l?(u.sri+=e,u.eri+=e):c<l&&l<=d&&(u.eri+=e,i(c,s,e,0)):"column"===t&&(s>=l?(u.sci+=e,u.eci+=e):s<l&&l<=a&&(u.eci+=e,i(c,s,0,e)))}))}move(t,l,e){this._.forEach((i=>{const n=i;n.within(t)&&(n.eri+=l,n.sri+=l,n.sci+=e,n.eci+=e)}))}setData(t){return this._=t.map((t=>Z.valueOf(t))),this}getData(){return this._.map((t=>t.toString()))}}function V(t){return JSON.parse(JSON.stringify(t))}const M=(t={},...l)=>(l.forEach((l=>{Object.keys(l).forEach((e=>{const i=l[e];"string"===typeof i||"number"===typeof i||"boolean"===typeof i?t[e]=i:"function"!==typeof i&&!Array.isArray(i)&&i instanceof Object?(t[e]=t[e]||{},M(t[e],i)):t[e]=i}))})),t);function L(t,l){const e=Object.keys(t);if(e.length!==Object.keys(l).length)return!1;for(let i=0;i<e.length;i+=1){const n=e[i],c=t[n],s=l[n];if(void 0===s)return!1;if("string"===typeof c||"number"===typeof c||"boolean"===typeof c){if(c!==s)return!1}else if(Array.isArray(c)){if(c.length!==s.length)return!1;for(let t=0;t<c.length;t+=1)if(!L(c[t],s[t]))return!1}else if("function"!==typeof c&&!Array.isArray(c)&&c instanceof Object&&!L(c,s))return!1}return!0}const I=(t,l=(t=>t))=>{let e=0,i=0;return Object.keys(t).forEach((n=>{e+=l(t[n],n),i+=1})),[e,i]};function w(t,l){const e=t[`${l}`];return delete t[`${l}`],e}function f(t,l,e,i,n,c){let s=e,d=i,a=t;for(;a<l;a+=1){if(s>n)break;d=c(a),s+=d}return[a,s-d,d]}function R(t,l,e){let i=0;for(let n=t;n<l;n+=1)i+=e(n);return i}function T(t,l,e){for(let i=t;i<l;i+=1)e(i)}function z(t,l){if(t.length!==l.length)return!1;for(let e=0;e<t.length;e+=1)if(t[e]!==l[e])return!1;return!0}function x(t){const l=`${t}`;let e=0,i=!1;for(let n=0;n<l.length;n+=1)!0===i&&(e+=1),"."===l.charAt(n)&&(i=!0);return e}function S(t,l,e){if(Number.isNaN(l)||Number.isNaN(e))return l+t+e;const i=x(l),n=x(e),c=Number(l),s=Number(e);let d=0;if("-"===t)d=c-s;else if("+"===t)d=c+s;else if("*"===t)d=c*s;else if("/"===t)return d=c/s,x(d)>5?d.toFixed(2):d;return d.toFixed(Math.max(i,n))}var k={cloneDeep:V,merge:(...t)=>M({},...t),equals:L,arrayEquals:z,sum:I,rangeEach:T,rangeSum:R,rangeReduceIf:f,deleteProperty:w,numberCalc:S};class C{constructor({len:t,height:l}){this._={},this.len=t,this.height=l}getHeight(t){if(this.isHide(t))return 0;const l=this.get(t);return l&&l.height?l.height:this.height}setHeight(t,l){const e=this.getOrNew(t);e.height=l}unhide(t){let l=t;while(l>0){if(l-=1,!this.isHide(l))break;this.setHide(l,!1)}}isHide(t){const l=this.get(t);return l&&l.hide}setHide(t,l){const e=this.getOrNew(t);!0===l?e.hide=!0:delete e.hide}setStyle(t,l){const e=this.getOrNew(t);e.style=l}sumHeight(t,l,e){return k.rangeSum(t,l,(t=>e&&e.has(t)?0:this.getHeight(t)))}totalHeight(){return this.sumHeight(0,this.len)}get(t){return this._[t]}getOrNew(t){return this._[t]=this._[t]||{cells:{}},this._[t]}getCell(t,l){const e=this.get(t);return void 0!==e&&void 0!==e.cells&&void 0!==e.cells[l]?e.cells[l]:null}getCellMerge(t,l){const e=this.getCell(t,l);return e&&e.merge?e.merge:[0,0]}getCellOrNew(t,l){const e=this.getOrNew(t);return e.cells[l]=e.cells[l]||{},e.cells[l]}setCell(t,l,e,i="all"){const n=this.getOrNew(t);"all"===i?n.cells[l]=e:"text"===i?(n.cells[l]=n.cells[l]||{},n.cells[l].text=e.text):"format"===i&&(n.cells[l]=n.cells[l]||{},n.cells[l].style=e.style,e.merge&&(n.cells[l].merge=e.merge))}setCellText(t,l,e){const i=this.getCellOrNew(t,l);!1!==i.editable&&(i.text=e)}copyPaste(t,l,e,i=!1,n=(()=>{})){const{sri:c,sci:s,eri:d,eci:a}=t,u=l.sri,o=l.sci,r=l.eri,b=l.eci,[Z,m]=t.size(),[y,p]=l.size();let W=!0,G=0;(r<c||b<s)&&(W=!1,G=r<c?y:p);for(let X=c;X<=d;X+=1)if(this._[X])for(let t=s;t<=a;t+=1)if(this._[X].cells&&this._[X].cells[t])for(let l=u;l<=r;l+=Z)for(let y=o;y<=b;y+=m){const p=l+(X-c),Y=y+(t-s),N=k.cloneDeep(this._[X].cells[t]);if(i&&N&&N.text&&N.text.length>0){const{text:t}=N;let e=y-o+(l-u)+2;if(W||(e-=G+1),"="===t[0])N.text=t.replace(/[a-zA-Z]{1,3}\d+/g,(t=>{let[l,i]=[0,0];return c===u?l=e-1:i=e-1,/^\d+$/.test(t)?t:h(t,l,i)}));else if(Z<=1&&m>1&&(u>d||r<c)||m<=1&&Z>1&&(o>a||b<s)||Z<=1&&m<=1){const l=/[\\.\d]+$/.exec(t);if(null!==l){const i=Number(l[0])+e-1;N.text=t.substring(0,l.index)+i}}}this.setCell(p,Y,N,e),n(p,Y,N)}}cutPaste(t,l){const e={};this.each((i=>{this.eachCells(i,(n=>{let c=parseInt(i,10),s=parseInt(n,10);t.includes(i,n)&&(c=l.sri+(c-t.sri),s=l.sci+(s-t.sci)),e[c]=e[c]||{cells:{}},e[c].cells[s]=this._[i].cells[n]}))})),this._=e}paste(t,l){if(t.length<=0)return;const{sri:e,sci:i}=l;t.forEach(((t,l)=>{const n=e+l;t.forEach(((t,l)=>{const e=i+l;this.setCellText(n,e,t)}))}))}insert(t,l=1){const e={};this.each(((i,n)=>{let c=parseInt(i,10);c>=t&&(c+=l,this.eachCells(i,((e,i)=>{i.text&&"="===i.text[0]&&(i.text=i.text.replace(/[a-zA-Z]{1,3}\d+/g,(e=>h(e,0,l,((l,e)=>e>=t)))))}))),e[c]=n})),this._=e,this.len+=l}delete(t,l){const e=l-t+1,i={};this.each(((n,c)=>{const s=parseInt(n,10);s<t?i[s]=c:n>l&&(i[s-e]=c,this.eachCells(n,((t,i)=>{i.text&&"="===i.text[0]&&(i.text=i.text.replace(/[a-zA-Z]{1,3}\d+/g,(t=>h(t,0,-e,((t,e)=>e>l)))))})))})),this._=i,this.len-=e}insertColumn(t,l=1){this.each(((e,i)=>{const n={};this.eachCells(e,((e,i)=>{let c=parseInt(e,10);c>=t&&(c+=l,i.text&&"="===i.text[0]&&(i.text=i.text.replace(/[a-zA-Z]{1,3}\d+/g,(e=>h(e,l,0,(l=>l>=t)))))),n[c]=i})),i.cells=n}))}deleteColumn(t,l){const e=l-t+1;this.each(((i,n)=>{const c={};this.eachCells(i,((i,n)=>{const s=parseInt(i,10);s<t?c[s]=n:s>l&&(c[s-e]=n,n.text&&"="===n.text[0]&&(n.text=n.text.replace(/[a-zA-Z]{1,3}\d+/g,(t=>h(t,-e,0,(t=>t>l))))))})),n.cells=c}))}deleteCells(t,l="all"){t.each(((t,e)=>{this.deleteCell(t,e,l)}))}deleteCell(t,l,e="all"){const i=this.get(t);if(null!==i){const n=this.getCell(t,l);null!==n&&!1!==n.editable&&("all"===e?delete i.cells[l]:"text"===e?(n.text&&delete n.text,n.value&&delete n.value):"format"===e?(void 0!==n.style&&delete n.style,n.merge&&delete n.merge):"merge"===e&&n.merge&&delete n.merge)}}maxCell(){const t=Object.keys(this._),l=t[t.length-1],e=this._[l];if(e){const{cells:t}=e,i=Object.keys(t),n=i[i.length-1];return[parseInt(l,10),parseInt(n,10)]}return[0,0]}each(t){Object.entries(this._).forEach((([l,e])=>{t(l,e)}))}eachCells(t,l){this._[t]&&this._[t].cells&&Object.entries(this._[t].cells).forEach((([t,e])=>{l(t,e)}))}setData(t){t.len&&(this.len=t.len,delete t.len),this._=t}getData(){const{len:t}=this;return Object.assign({len:t},this._)}}class J{constructor({len:t,width:l,indexWidth:e,minWidth:i}){this._={},this.len=t,this.width=l,this.indexWidth=e,this.minWidth=i}setData(t){t.len&&(this.len=t.len,delete t.len),this._=t}getData(){const{len:t}=this;return Object.assign({len:t},this._)}getWidth(t){if(this.isHide(t))return 0;const l=this._[t];return l&&l.width?l.width:this.width}getOrNew(t){return this._[t]=this._[t]||{},this._[t]}setWidth(t,l){const e=this.getOrNew(t);e.width=l}unhide(t){let l=t;while(l>0){if(l-=1,!this.isHide(l))break;this.setHide(l,!1)}}isHide(t){const l=this._[t];return l&&l.hide}setHide(t,l){const e=this.getOrNew(t);!0===l?e.hide=!0:delete e.hide}setStyle(t,l){const e=this.getOrNew(t);e.style=l}sumWidth(t,l){return k.rangeSum(t,l,(t=>this.getWidth(t)))}totalWidth(){return this.sumWidth(0,this.len)}}var g={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let F=["en"];const j={en:g};function v(t,l){if(l)for(const e of F){if(!l[e])break;let i=l[e];const n=t.match(/(?:\\.|[^.])+/g);for(let t=0;t<n.length;t+=1){const l=n[t],e=i[l];if(!e)break;if(t===n.length-1)return e;i=e}}}function D(t){let l=v(t,j);return!l&&window&&window.x_spreadsheet&&window.x_spreadsheet.$messages&&(l=v(t,window.x_spreadsheet.$messages)),l||""}function U(t){return()=>D(t)}function O(t,l,e=!1){e?F=[t]:F.unshift(t),l&&(j[t]=l)}const K={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function E(t,l,...e){let i="";return t||(i=D(`validation.${l}`,...e)),[t,i]}class H{constructor(t,l,e,i){this.required=l,this.value=e,this.type=t,this.operator=i,this.message=""}parseValue(t){const{type:l}=this;return"date"===l?new Date(t):"number"===l?Number(t):t}equals(t){let l=this.type===t.type&&this.required===t.required&&this.operator===t.operator;return l&&(l=Array.isArray(this.value)?k.arrayEquals(this.value,t.value):this.value===t.value),l}values(){return this.value.split(",")}validate(t){const{required:l,operator:e,value:i,type:n}=this;if(l&&/^\s*$/.test(t))return E(!1,"required");if(/^\s*$/.test(t))return[!0];if(K[n]&&!K[n].test(t))return E(!1,"notMatch");if("list"===n)return E(this.values().includes(t),"notIn");if(e){const l=this.parseValue(t);if("be"===e){const[t,e]=i;return E(l>=this.parseValue(t)&&l<=this.parseValue(e),"between",t,e)}if("nbe"===e){const[t,e]=i;return E(l<this.parseValue(t)||l>this.parseValue(e),"notBetween",t,e)}if("eq"===e)return E(l===this.parseValue(i),"equal",i);if("neq"===e)return E(l!==this.parseValue(i),"notEqual",i);if("lt"===e)return E(l<this.parseValue(i),"lessThan",i);if("lte"===e)return E(l<=this.parseValue(i),"lessThanEqual",i);if("gt"===e)return E(l>this.parseValue(i),"greaterThan",i);if("gte"===e)return E(l>=this.parseValue(i),"greaterThanEqual",i)}return[!0]}}class Q{constructor(t,l,e){this.refs=l,this.mode=t,this.validator=e}includes(t,l){const{refs:e}=this;for(let i=0;i<e.length;i+=1){const n=Z.valueOf(e[i]);if(n.includes(t,l))return!0}return!1}addRef(t){this.remove(Z.valueOf(t)),this.refs.push(t)}remove(t){const l=[];this.refs.forEach((e=>{const i=Z.valueOf(e);if(i.intersects(t)){const e=i.difference(t);e.forEach((t=>l.push(t.toString())))}else l.push(e)})),this.refs=l}getData(){const{refs:t,mode:l,validator:e}=this,{type:i,required:n,operator:c,value:s}=e;return{refs:t,mode:l,type:i,required:n,operator:c,value:s}}static valueOf({refs:t,mode:l,type:e,required:i,operator:n,value:c}){return new Q(l,t,new H(e,i,c,n))}}class B{constructor(){this._=[],this.errors=new Map}getError(t,l){return this.errors.get(`${t}_${l}`)}validate(t,l,e){const i=this.get(t,l),n=`${t}_${l}`,{errors:c}=this;if(null!==i){const[t,l]=i.validator.validate(e);t?c.delete(n):c.set(n,l)}else c.delete(n);return!0}add(t,l,{type:e,required:i,value:n,operator:c}){const s=new H(e,i,n,c),d=this.getByValidator(s);null!==d?d.addRef(l):this._.push(new Q(t,[l],s))}getByValidator(t){for(let l=0;l<this._.length;l+=1){const e=this._[l];if(e.validator.equals(t))return e}return null}get(t,l){for(let e=0;e<this._.length;e+=1){const i=this._[e];if(i.includes(t,l))return i}return null}remove(t){this.each((l=>{l.remove(t)}))}each(t){this._.forEach((l=>t(l)))}getData(){return this._.filter((t=>t.refs.length>0)).map((t=>t.getData()))}setData(t){this._=t.map((t=>Q.valueOf(t)))}}const P={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},A=41,_=41,q=(t,l)=>Object.prototype.hasOwnProperty.call(t,l);function $(t,l,e=(()=>{})){const{merges:i}=this,n=l.clone(),[c,s]=t.size(),[d,a]=l.size();return c>d&&(n.eri=l.sri+c-1),s>a&&(n.eci=l.sci+s-1),!i.intersects(n)||(e(D("error.pasteForMergedCell")),!1)}function tt(t,l,e,i=!1){const{rows:n,merges:c}=this;"all"!==e&&"format"!==e||(n.deleteCells(l,e),c.deleteWithin(l)),n.copyPaste(t,l,e,i,((t,l,e)=>{if(e&&e.merge){const[i,n]=e.merge;if(i<=0&&n<=0)return;c.add(new Z(t,l,t+i,l+n))}}))}function lt(t,l){const{clipboard:e,rows:i,merges:n}=this;i.cutPaste(t,l),n.move(t,l.sri-t.sri,l.sci-t.sci),e.clear()}function et(t,l,e){const{styles:i,rows:n}=this,c=n.getCellOrNew(t,l);let s={};void 0!==c.style&&(s=k.cloneDeep(i[c.style])),s=k.merge(s,{border:e}),c.style=this.addStyle(s)}function it({mode:t,style:l,color:e}){const{styles:i,selector:n,rows:c}=this,{sri:s,sci:d,eri:a,eci:u}=n.range,o=!this.isSignleSelected();if(o||"inside"!==t&&"horizontal"!==t&&"vertical"!==t)if("outside"!==t||o){if("none"===t)n.range.each(((t,l)=>{const e=c.getCell(t,l);if(e&&void 0!==e.style){const t=k.cloneDeep(i[e.style]);delete t.border,e.style=this.addStyle(t)}}));else if("all"===t||"inside"===t||"outside"===t||"horizontal"===t||"vertical"===t){const i=[];for(let n=s;n<=a;n+=1)for(let r=d;r<=u;r+=1){const b=[];for(let t=0;t<i.length;t+=1){const[l,e,c,s]=i[t];if(n===l+c+1&&b.push(t),l<=n&&n<=l+c&&r===e){r+=s+1;break}}if(b.forEach((t=>i.splice(t,1))),r>u)break;const h=c.getCell(n,r);let[Z,m]=[0,0];h&&h.merge&&([Z,m]=h.merge,i.push([n,r,Z,m]));const y=Z>0&&n+Z===a,p=m>0&&r+m===u;let W={};"all"===t?W={bottom:[l,e],top:[l,e],left:[l,e],right:[l,e]}:"inside"===t?(!p&&r<u&&(W.right=[l,e]),!y&&n<a&&(W.bottom=[l,e])):"horizontal"===t?!y&&n<a&&(W.bottom=[l,e]):"vertical"===t?!p&&r<u&&(W.right=[l,e]):"outside"===t&&o&&(s===n&&(W.top=[l,e]),(y||a===n)&&(W.bottom=[l,e]),d===r&&(W.left=[l,e]),(p||u===r)&&(W.right=[l,e])),Object.keys(W).length>0&&et.call(this,n,r,W),r+=m}}else if("top"===t||"bottom"===t)for(let r=d;r<=u;r+=1)"top"===t&&(et.call(this,s,r,{top:[l,e]}),r+=c.getCellMerge(s,r)[1]),"bottom"===t&&(et.call(this,a,r,{bottom:[l,e]}),r+=c.getCellMerge(a,r)[1]);else if("left"===t||"right"===t)for(let r=s;r<=a;r+=1)"left"===t&&(et.call(this,r,d,{left:[l,e]}),r+=c.getCellMerge(r,d)[0]),"right"===t&&(et.call(this,r,u,{right:[l,e]}),r+=c.getCellMerge(r,u)[0])}else et.call(this,s,d,{top:[l,e],bottom:[l,e],left:[l,e],right:[l,e]})}function nt(t,l){const{rows:e}=this,i=this.freezeTotalHeight();let n=e.height;i+e.height<t&&(n-=l);const c=this.exceptRowSet;let s=0,d=n,{height:a}=e;for(;s<e.len;s+=1){if(d>t)break;c.has(s)||(a=e.getHeight(s),d+=a)}return d-=a,d<=0?{ri:-1,top:0,height:a}:{ri:s-1,top:d,height:a}}function ct(t,l){const{cols:e}=this,i=this.freezeTotalWidth();let n=e.indexWidth;i+e.indexWidth<t&&(n-=l);const[c,s,d]=k.rangeReduceIf(0,e.len,n,e.indexWidth,t,(t=>e.getWidth(t)));return s<=0?{ci:-1,left:0,width:e.indexWidth}:{ci:c-1,left:s,width:d}}class st{constructor(t,l){this.settings=k.merge(P,l||{}),this.name=t||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new N,this.rows=new C(this.settings.row),this.cols=new J(this.settings.col),this.validations=new B,this.hyperlinks={},this.comments={},this.selector=new m,this.scroll=new y,this.history=new p,this.clipboard=new W,this.autoFilter=new Y,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(t,l,e){this.changeData((()=>{this.validations.add(t,l,e)}))}removeValidation(){const{range:t}=this.selector;this.changeData((()=>{this.validations.remove(t)}))}getSelectedValidator(){const{ri:t,ci:l}=this.selector,e=this.validations.get(t,l);return e?e.validator:null}getSelectedValidation(){const{ri:t,ci:l,range:e}=this.selector,i=this.validations.get(t,l),n={ref:e.toString()};return null!==i&&(n.mode=i.mode,n.validator=i.validator),n}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),(t=>{this.setData(t)}))}redo(){this.history.redo(this.getData(),(t=>{this.setData(t)}))}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(void 0===navigator.clipboard)return;let t="";const l=this.rows.getData();for(let e=this.selector.range.sri;e<=this.selector.range.eri;e+=1){if(q(l,e)){for(let i=this.selector.range.sci;i<=this.selector.range.eci;i+=1)if(i>this.selector.range.sci&&(t+="\t"),q(l[e].cells,i)){const n=String(l[e].cells[i].text);-1===n.indexOf("\n")&&-1===n.indexOf("\t")&&-1===n.indexOf('"')?t+=n:t+=`"${n}"`}}else for(let l=this.selector.range.sci;l<=this.selector.range.eci;l+=1)t+="\t";t+="\n"}navigator.clipboard.writeText(t).then((()=>{}),(l=>{console.log("text copy to the system clipboard error ",t,l)}))}cut(){this.clipboard.cut(this.selector.range)}paste(t="all",l=(()=>{})){const{clipboard:e,selector:i}=this;return!e.isClear()&&!!$.call(this,e.range,i.range,l)&&(this.changeData((()=>{e.isCopy()?tt.call(this,e.range,i.range,t):e.isCut()&&lt.call(this,e.range,i.range)})),!0)}pasteFromText(t){const l=t.split("\r\n").map((t=>t.replace(/"/g,"").split("\t")));l.length>0&&(l.length-=1);const{rows:e,selector:i}=this;this.changeData((()=>{e.paste(l,i.range)}))}autofill(t,l,e=(()=>{})){const i=this.selector.range;return!!$.call(this,i,t,e)&&(this.changeData((()=>{tt.call(this,i,t,l,!0)})),!0)}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(t,l){const{selector:e,rows:i,cols:n,merges:c}=this;let{sri:s,sci:d,eri:a,eci:u}=e.range;const o=e.ri,r=e.ci;let[b,h]=[t,l];return t<0&&(b=i.len-1),l<0&&(h=n.len-1),[s,a]=b>o?[o,b]:[b,o],[d,u]=h>r?[r,h]:[h,r],e.range=c.union(new Z(s,d,a,u)),e.range=c.union(e.range),e.range}calSelectedRangeByStart(t,l){const{selector:e,rows:i,cols:n,merges:c}=this;let s=c.getFirstIncludes(t,l);return null===s&&(s=new Z(t,l,t,l),-1===t&&(s.sri=0,s.eri=i.len-1),-1===l&&(s.sci=0,s.eci=n.len-1)),e.range=s,s}setSelectedCellAttr(t,l){this.changeData((()=>{const{selector:e,styles:i,rows:n}=this;if("merge"===t)l?this.merge():this.unmerge();else if("border"===t)it.call(this,l);else if("formula"===t){const{ri:t,ci:i,range:c}=e;if(e.multiple()){const[i,s]=e.size(),{sri:d,sci:a,eri:u,eci:o}=c;if(i>1)for(let t=a;t<=o;t+=1){const e=n.getCellOrNew(u+1,t);e.text=`=${l}(${b(t,d)}:${b(t,u)})`}else if(s>1){const e=n.getCellOrNew(t,o+1);e.text=`=${l}(${b(a,t)}:${b(o,t)})`}}else{const e=n.getCellOrNew(t,i);e.text=`=${l}()`}}else e.range.each(((e,c)=>{const s=n.getCellOrNew(e,c);let d={};if(void 0!==s.style&&(d=k.cloneDeep(i[s.style])),"format"===t)d.format=l,s.style=this.addStyle(d);else if("font-bold"===t||"font-italic"===t||"font-name"===t||"font-size"===t){const e={};e[t.split("-")[1]]=l,d.font=Object.assign(d.font||{},e),s.style=this.addStyle(d)}else"strike"===t||"textwrap"===t||"underline"===t||"align"===t||"valign"===t||"color"===t||"bgcolor"===t?(d[t]=l,s.style=this.addStyle(d)):s[t]=l}))}))}setSelectedCellText(t,l="input"){const{autoFilter:e,selector:i,rows:n}=this,{ri:c,ci:s}=i;let d=c;this.unsortedRowMap.has(c)&&(d=this.unsortedRowMap.get(c));const a=n.getCell(d,s),u=a?a.text:"";if(this.setCellText(d,s,t,l),e.active()){const l=e.getFilter(s);if(l){const e=l.value.findIndex((t=>t===u));e>=0&&l.value.splice(e,1,t)}}}getSelectedCell(){const{ri:t,ci:l}=this.selector;let e=t;return this.unsortedRowMap.has(t)&&(e=this.unsortedRowMap.get(t)),this.rows.getCell(e,l)}xyInSelectedRect(t,l){const{left:e,top:i,width:n,height:c}=this.getSelectedRect(),s=t-this.cols.indexWidth,d=l-this.rows.height;return s>e&&s<e+n&&d>i&&d<i+c}getSelectedRect(){return this.getRect(this.selector.range)}getClipboardRect(){const{clipboard:t}=this;return t.isClear()?{left:-100,top:-100}:this.getRect(t.range)}getRect(t){const{scroll:l,rows:e,cols:i,exceptRowSet:n}=this,{sri:c,sci:s,eri:d,eci:a}=t;if(c<0&&s<0)return{left:0,l:0,top:0,t:0,scroll:l};const u=i.sumWidth(0,s),o=e.sumHeight(0,c,n),r=e.sumHeight(c,d+1,n),b=i.sumWidth(s,a+1);let h=u-l.x,Z=o-l.y;const m=this.freezeTotalHeight(),y=this.freezeTotalWidth();return y>0&&y>u&&(h=u),m>0&&m>o&&(Z=o),{l:u,t:o,left:h,top:Z,height:r,width:b,scroll:l}}getCellRectByXY(t,l){const{scroll:e,merges:i,rows:n,cols:c}=this;let{ri:s,top:d,height:a}=nt.call(this,l,e.y),{ci:u,left:o,width:r}=ct.call(this,t,e.x);if(-1===u&&(r=c.totalWidth()),-1===s&&(a=n.totalHeight()),s>=0||u>=0){const t=i.getFirstIncludes(s,u);t&&(s=t.sri,u=t.sci,({left:o,top:d,width:r,height:a}=this.cellRect(s,u)))}return{ri:s,ci:u,left:o,top:d,width:r,height:a}}isSignleSelected(){const{sri:t,sci:l,eri:e,eci:i}=this.selector.range,n=this.getCell(t,l);if(n&&n.merge){const[c,s]=n.merge;if(t+c===e&&l+s===i)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:t,sci:l,eri:e,eci:i}=this.selector.range,n=this.getCell(t,l);if(n&&n.merge){const[c,s]=n.merge;if(t+c===e&&l+s===i)return!0}return!1}merge(){const{selector:t,rows:l}=this;if(this.isSignleSelected())return;const[e,i]=t.size();if(e>1||i>1){const{sri:n,sci:c}=t.range;this.changeData((()=>{const s=l.getCellOrNew(n,c);s.merge=[e-1,i-1],this.merges.add(t.range),this.rows.deleteCells(t.range),this.rows.setCell(n,c,s)}))}}unmerge(){const{selector:t}=this;if(!this.isSignleSelected())return;const{sri:l,sci:e}=t.range;this.changeData((()=>{this.rows.deleteCell(l,e,"merge"),this.merges.deleteWithin(t.range)}))}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:t,selector:l}=this;this.changeData((()=>{t.active()?(t.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):t.ref=l.range.toString()}))}setAutoFilter(t,l,e,i){const{autoFilter:n}=this;n.addFilter(t,e,i),n.setSort(t,l),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:t,rows:l}=this;if(!t.active())return;const{sort:e}=t,{rset:i,fset:n}=t.filteredRows(((t,e)=>l.getCell(t,e))),c=Array.from(n),s=Array.from(n);e&&c.sort(((t,l)=>"asc"===e.order?t-l:"desc"===e.order?l-t:0)),this.exceptRowSet=i,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,c.forEach(((t,l)=>{this.sortedRowMap.set(s[l],t),this.unsortedRowMap.set(t,s[l])}))}deleteCell(t="all"){const{selector:l}=this;this.changeData((()=>{this.rows.deleteCells(l.range,t),"all"!==t&&"format"!==t||this.merges.deleteWithin(l.range)}))}insert(t,l=1){this.changeData((()=>{const{sri:e,sci:i}=this.selector.range,{rows:n,merges:c,cols:s}=this;let d=e;"row"===t?n.insert(e,l):"column"===t&&(n.insertColumn(i,l),d=i,s.len+=1),c.shift(t,d,l,((t,l,e,i)=>{const c=n.getCell(t,l);c.merge[0]+=e,c.merge[1]+=i}))}))}delete(t){this.changeData((()=>{const{rows:l,merges:e,selector:i,cols:n}=this,{range:c}=i,{sri:s,sci:d,eri:a,eci:u}=i.range,[o,r]=i.range.size();let b=s,h=o;"row"===t?l.delete(s,a):"column"===t&&(l.deleteColumn(d,u),b=c.sci,h=r,n.len-=1),e.shift(t,b,-h,((t,e,i,n)=>{const c=l.getCell(t,e);c.merge[0]+=i,c.merge[1]+=n,0===c.merge[0]&&0===c.merge[1]&&delete c.merge}))}))}scrollx(t,l){const{scroll:e,freeze:i,cols:n}=this,[,c]=i,[s,d,a]=k.rangeReduceIf(c,n.len,0,0,t,(t=>n.getWidth(t)));let u=d;t>0&&(u+=a),e.x!==u&&(e.ci=t>0?s:0,e.x=u,l())}scrolly(t,l){const{scroll:e,freeze:i,rows:n}=this,[c]=i,[s,d,a]=k.rangeReduceIf(c,n.len,0,0,t,(t=>n.getHeight(t)));let u=d;t>0&&(u+=a),e.y!==u&&(e.ri=t>0?s:0,e.y=u,l())}cellRect(t,l){const{rows:e,cols:i}=this,n=i.sumWidth(0,l),c=e.sumHeight(0,t),s=e.getCell(t,l);let d=i.getWidth(l),a=e.getHeight(t);if(null!==s&&s.merge){const[n,c]=s.merge;if(n>0)for(let l=1;l<=n;l+=1)a+=e.getHeight(t+l);if(c>0)for(let t=1;t<=c;t+=1)d+=i.getWidth(l+t)}return{left:n,top:c,width:d,height:a,cell:s}}getCell(t,l){return this.rows.getCell(t,l)}getCellTextOrDefault(t,l){const e=this.getCell(t,l);return e&&e.text?e.text:""}getCellStyle(t,l){const e=this.getCell(t,l);return e&&void 0!==e.style?this.styles[e.style]:null}getCellStyleOrDefault(t,l){const{styles:e,rows:i}=this,n=i.getCell(t,l),c=n&&void 0!==n.style?e[n.style]:{};return k.merge(this.defaultStyle(),c)}getSelectedCellStyle(){const{ri:t,ci:l}=this.selector;return this.getCellStyleOrDefault(t,l)}setCellText(t,l,e,i){const{rows:n,history:c,validations:s}=this;"finished"===i?(n.setCellText(t,l,""),c.add(this.getData()),n.setCellText(t,l,e)):(n.setCellText(t,l,e),this.change(this.getData())),s.validate(t,l,e)}freezeIsActive(){const[t,l]=this.freeze;return t>0||l>0}setFreeze(t,l){this.changeData((()=>{this.freeze=[t,l]}))}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(t,l){this.changeData((()=>{this.rows.setHeight(t,l)}))}setColWidth(t,l){this.changeData((()=>{this.cols.setWidth(t,l)}))}viewHeight(){const{view:t,showToolbar:l,showBottomBar:e}=this.settings;let i=t.height();return e&&(i-=_),l&&(i-=A),i}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[t,l]=this.freeze;return new Z(0,0,t-1,l-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:t,cols:l}=this,[e,i]=t.maxCell(),n=t.sumHeight(0,e+1),c=l.sumWidth(0,i+1);return new Z(0,0,e,i,c,n)}exceptRowTotalHeight(t,l){const{exceptRowSet:e,rows:i}=this,n=Array.from(e);let c=0;return n.forEach((e=>{if(e<t||e>l){const t=i.getHeight(e);c+=t}})),c}viewRange(){const{scroll:t,rows:l,cols:e,freeze:i,exceptRowSet:n}=this;let{ri:c,ci:s}=t;c<=0&&([c]=i),s<=0&&([,s]=i);let[d,a]=[0,0],[u,o]=[l.len,e.len];for(let r=c;r<l.len;r+=1)if(n.has(r)||(a+=l.getHeight(r),u=r),a>this.viewHeight())break;for(let r=s;r<e.len;r+=1)if(d+=e.getWidth(r),o=r,d>this.viewWidth())break;return new Z(c,s,u,o,d,a)}eachMergesInView(t,l){this.merges.filterIntersects(t).forEach((t=>l(t)))}hideRowsOrCols(){const{rows:t,cols:l,selector:e}=this,[i,n]=e.size(),{sri:c,sci:s,eri:d,eci:a}=e.range;if(i===t.len)for(let u=s;u<=a;u+=1)l.setHide(u,!0);else if(n===l.len)for(let u=c;u<=d;u+=1)t.setHide(u,!0)}unhideRowsOrCols(t,l){this[`${t}s`].unhide(l)}rowEach(t,l,e){let i=0;const{rows:n}=this,c=this.exceptRowSet,s=[...c];let d=0;for(let a=0;a<s.length;a+=1)s[a]<t&&(d+=1);for(let a=t+d;a<=l+d;a+=1)if(c.has(a))d+=1;else{const t=n.getHeight(a);if(t>0&&(e(a,i,t),i+=t,i>this.viewHeight()))break}}colEach(t,l,e){let i=0;const{cols:n}=this;for(let c=t;c<=l;c+=1){const t=n.getWidth(c);if(t>0&&(e(c,i,t),i+=t,i>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(t){const{styles:l}=this;for(let e=0;e<l.length;e+=1){const i=l[e];if(k.equals(i,t))return e}return l.push(t),l.length-1}changeData(t){this.history.add(this.getData()),t(),this.change(this.getData())}setData(t){return Object.keys(t).forEach((l=>{if("merges"===l||"rows"===l||"cols"===l||"validations"===l)this[l].setData(t[l]);else if("freeze"===l){const[e,i]=r(t[l]);this.freeze=[i,e]}else"autofilter"===l?this.autoFilter.setData(t[l]):void 0!==t[l]&&(this[l]=t[l])})),this}getData(){const{name:t,freeze:l,styles:e,merges:i,rows:n,cols:c,validations:s,autoFilter:d}=this;return{name:t,freeze:b(l[1],l[0]),styles:e,merges:i.getData(),rows:n.getData(),cols:c.getData(),validations:s.getData(),autofilter:d.getData()}}}function dt(t,l,e){t.addEventListener(l,e)}function at(t,l,e){t.removeEventListener(l,e)}function ut(t){t.xclickoutside&&(at(window.document.body,"click",t.xclickoutside),delete t.xclickoutside)}function ot(t,l){t.xclickoutside=e=>{2===e.detail||t.contains(e.target)||(l?l(t):(t.hide(),ut(t)))},dt(window.document.body,"click",t.xclickoutside)}function rt(t,l,e){dt(t,"mousemove",l);const i=t;i.xEvtUp=i=>{at(t,"mousemove",l),at(t,"mouseup",t.xEvtUp),e(i)},dt(t,"mouseup",t.xEvtUp)}function bt(t,l,e,i){let n="";Math.abs(t)>Math.abs(l)?(n=t>0?"right":"left",i(n,t,e)):(n=l>0?"down":"up",i(n,l,e))}function ht(t,{move:l,end:e}){let i=0,n=0;dt(t,"touchstart",(t=>{const{pageX:l,pageY:e}=t.touches[0];i=l,n=e})),dt(t,"touchmove",(t=>{if(!l)return;const{pageX:e,pageY:c}=t.changedTouches[0],s=e-i,d=c-n;(Math.abs(s)>10||Math.abs(d)>10)&&(bt(s,d,t,l),i=e,n=c),t.preventDefault()})),dt(t,"touchend",(t=>{if(!e)return;const{pageX:l,pageY:c}=t.changedTouches[0],s=l-i,d=c-n;bt(s,d,t,e)}))}function Zt(){const t=new Map;function l(l,e){const i=()=>{const i=t.get(l);return Array.isArray(i)&&i.push(e)||!1},n=()=>t.set(l,[].concat(e));return t.has(l)&&i()||n()}function e(l,e){const i=()=>{const i=t.get(l);for(const t of i)t.call(null,...e)};return t.has(l)&&i()}function i(l,e){const i=()=>{const i=t.get(l),n=i.indexOf(e);return n>=0&&i.splice(n,1)&&0===t.get(l).length&&t.delete(l)};return t.has(l)&&i()}function n(t,e){const n=(...l)=>{e.call(null,...l),i(t,n)};return l(t,n)}function c(){t.clear()}return{get current(){return t},on:l,once:n,fire:e,removeListener:i,removeAllListeners:c}}const mt="x-spreadsheet";window.devicePixelRatio;class yt{constructor(t=!1,l){this.moving=!1,this.vertical=t,this.el=d("div",`${mt}-resizer ${t?"vertical":"horizontal"}`).children(this.unhideHoverEl=d("div",`${mt}-resizer-hover`).on("dblclick.stop",(t=>this.mousedblclickHandler(t))).css("position","absolute").hide(),this.hoverEl=d("div",`${mt}-resizer-hover`).on("mousedown.stop",(t=>this.mousedownHandler(t))),this.lineEl=d("div",`${mt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=l,this.unhideFn=()=>{}}showUnhide(t){this.unhideIndex=t,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(t,l){const{moving:e,vertical:i,hoverEl:n,lineEl:c,el:s,unhideHoverEl:d}=this;if(e)return;this.cRect=t;const{left:a,top:u,width:o,height:r}=t;s.offset({left:i?a+o-5:a,top:i?u:u+r-5}).show(),n.offset({width:i?5:o,height:i?r:5}),c.offset({width:i?0:l.width,height:i?l.height:0}),d.offset({left:i?5-o:a,top:i?u:5-r,width:i?5:o,height:i?r:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(t){let l=t;const{el:e,lineEl:i,cRect:n,vertical:c,minDistance:s}=this;let d=c?n.width:n.height;i.show(),rt(window,(t=>{this.moving=!0,null!==l&&1===t.buttons&&(c?(d+=t.movementX,d>s&&e.css("left",`${n.left+d}px`)):(d+=t.movementY,d>s&&e.css("top",`${n.top+d}px`)),l=t)}),(()=>{l=null,i.hide(),this.moving=!1,this.hide(),this.finishedFn&&(d<s&&(d=s),this.finishedFn(n,d))}))}}class pt{constructor(t){this.vertical=t,this.moveFn=null,this.el=d("div",`${mt}-scrollbar ${t?"vertical":"horizontal"}`).child(this.contentEl=d("div","")).on("mousemove.stop",(()=>{})).on("scroll.stop",(t=>{const{scrollTop:l,scrollLeft:e}=t.target;this.moveFn&&this.moveFn(this.vertical?l:e,t)}))}move(t){return this.el.scroll(t),this}scroll(){return this.el.scroll()}set(t,l){const e=t-1;if(l>e){const t=this.vertical?"height":"width";this.el.css(t,e-15+"px").show(),this.contentEl.css(this.vertical?"width":"height","1px").css(t,`${l}px`)}else this.el.hide();return this}}const Wt=3;let Gt=10;class Xt{constructor(t=!1){this.useHideInput=t,this.inputChange=()=>{},this.cornerEl=d("div",`${mt}-selector-corner`),this.areaEl=d("div",`${mt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=d("div",`${mt}-selector-clipboard`).hide(),this.autofillEl=d("div",`${mt}-selector-autofill`).hide(),this.el=d("div",`${mt}-selector`).css("z-index",`${Gt}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),t&&(this.hideInput=d("input","").on("compositionend",(t=>{this.inputChange(t.target.value)})),this.el.child(this.hideInputDiv=d("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=d("div","hide-input").child(this.hideInput))),Gt+=1}setOffset(t){return this.el.offset(t).show(),this}hide(){return this.el.hide(),this}setAreaOffset(t){const{left:l,top:e,width:i,height:n}=t,c={width:i-Wt+.8,height:n-Wt+.8,left:l-.8,top:e-.8};this.areaEl.offset(c).show(),this.useHideInput&&(this.hideInputDiv.offset(c),this.hideInput.val("").focus())}setClipboardOffset(t){const{left:l,top:e,width:i,height:n}=t;this.clipboardEl.offset({left:l,top:e,width:i-5,height:n-5})}showAutofill(t){const{left:l,top:e,width:i,height:n}=t;this.autofillEl.offset({width:i-Wt,height:n-Wt,left:l,top:e}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function Yt(t){const{data:l}=this,{left:e,top:i,width:n,height:c,scroll:s,l:d,t:a}=t,u=l.freezeTotalWidth(),o=l.freezeTotalHeight();let r=e-u;u>d&&(r-=s.x);let b=i-o;return o>a&&(b-=s.y),{left:r,top:b,width:n,height:c}}function Nt(t){const{data:l}=this,{left:e,width:i,height:n,l:c,t:s,scroll:d}=t,a=l.freezeTotalWidth();let u=e-a;return a>c&&(u-=d.x),{left:u,top:s,width:i,height:n}}function Vt(t){const{data:l}=this,{top:e,width:i,height:n,l:c,t:s,scroll:d}=t,a=l.freezeTotalHeight();let u=e-a;return a>s&&(u-=d.y),{left:c,top:u,width:i,height:n}}function Mt(t){const{br:l}=this;l.setAreaOffset(Yt.call(this,t))}function Lt(t){const{tl:l}=this;l.setAreaOffset(t)}function It(t){const{t:l}=this;l.setAreaOffset(Nt.call(this,t))}function wt(t){const{l:l}=this;l.setAreaOffset(Vt.call(this,t))}function ft(t){const{l:l}=this;l.setClipboardOffset(Vt.call(this,t))}function Rt(t){const{br:l}=this;l.setClipboardOffset(Yt.call(this,t))}function Tt(t){const{tl:l}=this;l.setClipboardOffset(t)}function zt(t){const{t:l}=this;l.setClipboardOffset(Nt.call(this,t))}function xt(t){Mt.call(this,t),Lt.call(this,t),It.call(this,t),wt.call(this,t)}function St(t){Rt.call(this,t),Tt.call(this,t),zt.call(this,t),ft.call(this,t)}class kt{constructor(t){this.inputChange=()=>{},this.data=t,this.br=new Xt(!0),this.t=new Xt,this.l=new Xt,this.tl=new Xt,this.br.inputChange=t=>{this.inputChange(t)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=d("div",`${mt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,Gt+=1}resetData(t){this.data=t,this.range=t.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:t,tl:l,t:e,l:i,br:n}=this,c=t.freezeTotalHeight(),s=t.freezeTotalWidth();c>0||s>0?(l.setOffset({width:s,height:c}),e.setOffset({left:s,height:c}),i.setOffset({top:c,width:s}),n.setOffset({left:s,top:c})):(l.hide(),e.hide(),i.hide(),n.setOffset({left:0,top:0}))}resetAreaOffset(){const t=this.data.getSelectedRect(),l=this.data.getClipboardRect();xt.call(this,t),St.call(this,l),this.resetOffset()}resetBRTAreaOffset(){const t=this.data.getSelectedRect(),l=this.data.getClipboardRect();Mt.call(this,t),It.call(this,t),Rt.call(this,l),zt.call(this,l),this.resetOffset()}resetBRLAreaOffset(){const t=this.data.getSelectedRect(),l=this.data.getClipboardRect();Mt.call(this,t),wt.call(this,t),Rt.call(this,l),ft.call(this,l),this.resetOffset()}set(t,l,e=!0){const{data:i}=this,n=i.calSelectedRangeByStart(t,l),{sri:c,sci:s}=n;if(e){let[e,n]=[t,l];t<0&&(e=0),l<0&&(n=0),i.selector.setIndexes(e,n),this.indexes=[e,n]}this.moveIndexes=[c,s],this.range=n,this.resetAreaOffset(),this.el.show()}setEnd(t,l,e=!0){const{data:i,lastri:n,lastci:c}=this;if(e){if(t===n&&l===c)return;this.lastri=t,this.lastci=l}this.range=i.calSelectedRangeByEnd(t,l),xt.call(this,this.data.getSelectedRect())}reset(){const{eri:t,eci:l}=this.data.selector.range;this.setEnd(t,l)}showAutofill(t,l){if(-1===t&&-1===l)return;const{sri:e,sci:i,eri:n,eci:c}=this.range,[s,d]=[t,l],a=e-t,u=i-l,o=n-t,r=c-l;if(u>0)this.arange=new Z(e,d,n,i-1);else if(a>0)this.arange=new Z(s,i,e-1,c);else if(r<0)this.arange=new Z(e,c+1,n,d);else{if(!(o<0))return void(this.arange=null);this.arange=new Z(n+1,i,s,c)}if(null!==this.arange){const t=this.data.getRect(this.arange);t.width+=2,t.height+=2;const{br:l,l:e,t:i,tl:n}=this;l.showAutofill(Yt.call(this,t)),e.showAutofill(Vt.call(this,t)),i.showAutofill(Nt.call(this,t)),n.showAutofill(t)}}hideAutofill(){["br","l","t","tl"].forEach((t=>{this[t].hideAutofill()}))}showClipboard(){const t=this.data.getClipboardRect();St.call(this,t),["br","l","t","tl"].forEach((t=>{this[t].showClipboard()}))}hideClipboard(){["br","l","t","tl"].forEach((t=>{this[t].hideClipboard()}))}}function Ct(t){t.preventDefault(),t.stopPropagation();const{filterItems:l}=this;l.length<=0||(this.itemIndex>=0&&l[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=l.length-1),l[this.itemIndex].toggle())}function Jt(t){t.stopPropagation();const{filterItems:l}=this;l.length<=0||(this.itemIndex>=0&&l[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>l.length-1&&(this.itemIndex=0),l[this.itemIndex].toggle())}function gt(t){t.preventDefault();const{filterItems:l}=this;l.length<=0||(t.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),l[this.itemIndex].el.click(),this.hide())}function Ft(t){const{keyCode:l}=t;switch(t.ctrlKey&&t.stopPropagation(),l){case 37:t.stopPropagation();break;case 38:Ct.call(this,t);break;case 39:t.stopPropagation();break;case 40:Jt.call(this,t);break;case 13:gt.call(this,t);break;case 9:gt.call(this,t);break;default:t.stopPropagation();break}}class jt{constructor(t,l,e="200px"){this.filterItems=[],this.items=t,this.el=d("div",`${mt}-suggest`).css("width",e).hide(),this.itemClick=l,this.itemIndex=-1}setOffset(t){this.el.cssRemoveKeys("top","bottom").offset(t)}hide(){const{el:t}=this;this.filterItems=[],this.itemIndex=-1,t.hide(),ut(this.el.parent())}setItems(t){this.items=t}search(t){let{items:l}=this;if(/^\s*$/.test(t)||(l=l.filter((l=>(l.key||l).startsWith(t.toUpperCase())))),l=l.map((t=>{let{title:l}=t;l?"function"===typeof l&&(l=l()):l=t;const e=d("div",`${mt}-item`).child(l).on("click.stop",(()=>{this.itemClick(t),this.hide()}));return t.label&&e.child(d("div","label").html(t.label)),e})),this.filterItems=l,l.length<=0)return;const{el:e}=this;e.html("").children(...l).show(),ot(e.parent(),(()=>{this.hide()}))}bindInputEvents(t){t.on("keydown",(t=>Ft.call(this,t)))}}class vt extends s{constructor(t){super("div",`${mt}-icon`),this.iconNameEl=d("div",`${mt}-icon-img ${t}`),this.child(this.iconNameEl)}setName(t){this.iconNameEl.className(`${mt}-icon-img ${t}`)}}function Dt(t,l){t.setMonth(t.getMonth()+l)}function Ut(t,l){const e=new Date(t);return e.setDate(l-t.getDay()+1),e}function Ot(t,l,e){const i=new Date(t,l,1,23,59,59),n=[[],[],[],[],[],[]];for(let c=0;c<6;c+=1)for(let t=0;t<7;t+=1){const s=7*c+t,d=Ut(i,s),a=d.getMonth()!==l,u=d.getMonth()===e.getMonth()&&d.getDate()===e.getDate();n[c][t]={d:d,disabled:a,active:u}}return n}class Kt{constructor(t){this.value=t,this.cvalue=new Date(t),this.headerLeftEl=d("div","calendar-header-left"),this.bodyEl=d("tbody",""),this.buildAll(),this.el=d("div","x-spreadsheet-calendar").children(d("div","calendar-header").children(this.headerLeftEl,d("div","calendar-header-right").children(d("a","calendar-prev").on("click.stop",(()=>this.prev())).child(new vt("chevron-left")),d("a","calendar-next").on("click.stop",(()=>this.next())).child(new vt("chevron-right")))),d("table","calendar-body").children(d("thead","").child(d("tr","").children(...D("calendar.weeks").map((t=>d("th","cell").child(t))))),this.bodyEl)),this.selectChange=()=>{}}setValue(t){this.value=t,this.cvalue=new Date(t),this.buildAll()}prev(){const{value:t}=this;Dt(t,-1),this.buildAll()}next(){const{value:t}=this;Dt(t,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:t}=this;this.headerLeftEl.html(`${D("calendar.months")[t.getMonth()]} ${t.getFullYear()}`)}buildBody(){const{value:t,cvalue:l,bodyEl:e}=this,i=Ot(t.getFullYear(),t.getMonth(),l),n=i.map((t=>{const l=t.map((t=>{let l="cell";return t.disabled&&(l+=" disabled"),t.active&&(l+=" active"),d("td","").child(d("div",l).on("click.stop",(()=>{this.selectChange(t.d)})).child(t.d.getDate().toString()))}));return d("tr","").children(...l)}));e.html("").children(...n)}}class Et{constructor(){this.calendar=new Kt(new Date),this.el=d("div",`${mt}-datepicker`).child(this.calendar.el).hide()}setValue(t){const{calendar:l}=this;return"string"===typeof t?/^\d{4}-\d{1,2}-\d{1,2}$/.test(t)&&l.setValue(new Date(t.replace(new RegExp("-","g"),"/"))):t instanceof Date&&l.setValue(t),this}change(t){this.calendar.selectChange=l=>{t(l),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function Ht(){const{inputText:t}=this;if(!/^\s*$/.test(t)){const{textlineEl:l,textEl:e,areaOffset:i}=this,n=t.split("\n"),c=Math.max(...n.map((t=>t.length))),s=l.offset(),d=s.width/t.length,a=(c+1)*d+5,u=this.viewFn().width-i.left-d;let o=n.length;if(a>i.width){let t=a;a>u&&(t=u,o+=parseInt(a/u,10),o+=a%u>0?1:0),e.css("width",`${t}px`)}o*=this.rowHeight,o>i.height&&e.css("height",`${o}px`)}}function Qt({target:t},l){const{value:e,selectionEnd:i}=t,n=`${e.slice(0,i)}${l}${e.slice(i)}`;t.value=n,t.setSelectionRange(i+1,i+1),this.inputText=n,this.textlineEl.html(n),Ht.call(this)}function Bt(t){const{keyCode:l,altKey:e}=t;13!==l&&9!==l&&t.stopPropagation(),13===l&&e&&(Qt.call(this,t,"\n"),t.stopPropagation()),13!==l||e||t.preventDefault()}function Pt(t){const l=t.target.value,{suggest:e,textlineEl:i,validator:n}=this,{cell:c}=this;if(null!==c)if("editable"in c&&!0===c.editable||void 0===c.editable){if(this.inputText=l,n)"list"===n.type?e.search(l):e.hide();else{const t=l.lastIndexOf("=");-1!==t?e.search(l.substring(t+1)):e.hide()}i.html(l),Ht.call(this),this.change("input",l)}else t.target.value=c.text;else{if(this.inputText=l,n)"list"===n.type?e.search(l):e.hide();else{const t=l.lastIndexOf("=");-1!==t?e.search(l.substring(t+1)):e.hide()}i.html(l),Ht.call(this),this.change("input",l)}}function At(t){const{el:l}=this.textEl;setTimeout((()=>{l.focus(),l.setSelectionRange(t,t)}),0)}function _t(t,l){const{textEl:e,textlineEl:i}=this;e.el.blur(),e.val(t),i.html(t),At.call(this,l)}function qt(t){const{inputText:l,validator:e}=this;let i=0;if(e&&"list"===e.type)this.inputText=t,i=this.inputText.length;else{const e=l.lastIndexOf("="),n=l.substring(0,e+1);let c=l.substring(e+1);c=-1!==c.indexOf(")")?c.substring(c.indexOf(")")):"",this.inputText=`${n+t.key}(`,i=this.inputText.length,this.inputText+=`)${c}`}_t.call(this,this.inputText,i)}function $t(){this.suggest.setItems(this.formulas)}function tl(t){let l=t.getMonth()+1,e=t.getDate();return l<10&&(l=`0${l}`),e<10&&(e=`0${e}`),`${t.getFullYear()}-${l}-${e}`}class ll{constructor(t,l,e){this.viewFn=l,this.rowHeight=e,this.formulas=t,this.suggest=new jt(t,(t=>{qt.call(this,t)})),this.datepicker=new Et,this.datepicker.change((t=>{this.setText(tl(t)),this.clear()})),this.areaEl=d("div",`${mt}-editor-area`).children(this.textEl=d("textarea","").on("input",(t=>Pt.call(this,t))).on("paste.stop",(()=>{})).on("keydown",(t=>Bt.call(this,t))),this.textlineEl=d("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",(()=>{})).on("mousedown.stop",(()=>{})),this.el=d("div",`${mt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(t,l){this.freeze.w=t,this.freeze.h=l}clear(){""!==this.inputText&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),$t.call(this),this.datepicker.hide()}setOffset(t,l="top"){const{textEl:e,areaEl:i,suggest:n,freeze:c,el:s}=this;if(t){this.areaOffset=t;const{left:d,top:a,width:u,height:o,l:r,t:b}=t,h={left:0,top:0};c.w>r&&c.h>b||(c.w<r&&c.h<b?(h.left=c.w,h.top=c.h):c.w>r?h.top=c.h:c.h>b&&(h.left=c.w)),s.offset(h),i.offset({left:d-h.left-.8,top:a-h.top-.8}),e.offset({width:u-9+.8,height:o-3+.8});const Z={left:0};Z[l]=o,n.setOffset(Z),n.hide()}}setCell(t,l){const{el:e,datepicker:i,suggest:n}=this;e.show(),this.cell=t;const c=t&&t.text||"";if(this.setText(c),this.validator=l,l){const{type:t}=l;"date"===t&&(i.show(),/^\s*$/.test(c)||i.setValue(c)),"list"===t&&(n.setItems(l.values()),n.search(""))}}setText(t){this.inputText=t,_t.call(this,t,t.length),Ht.call(this)}}class el extends s{constructor(t,l=""){super("div",`${mt}-button ${l}`),this.child(D(`button.${t}`))}}function il(){return window.devicePixelRatio||1}function nl(){return il()-.5}function cl(t){return parseInt(t*il(),10)}function sl(t){const l=cl(t);return l>0?l-.5:.5}class dl{constructor(t,l,e,i,n=0){this.x=t,this.y=l,this.width=e,this.height=i,this.padding=n,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:t,bottom:l,left:e,right:i}){t&&(this.borderTop=t),i&&(this.borderRight=i),l&&(this.borderBottom=l),e&&(this.borderLeft=e)}innerWidth(){return this.width-2*this.padding-2}innerHeight(){return this.height-2*this.padding-2}textx(t){const{width:l,padding:e}=this;let{x:i}=this;return"left"===t?i+=e:"center"===t?i+=l/2:"right"===t&&(i+=l-e),i}texty(t,l){const{height:e,padding:i}=this;let{y:n}=this;return"top"===t?n+=i:"middle"===t?n+=e/2-l/2:"bottom"===t&&(n+=e-i-l),n}topxys(){const{x:t,y:l,width:e}=this;return[[t,l],[t+e,l]]}rightxys(){const{x:t,y:l,width:e,height:i}=this;return[[t+e,l],[t+e,l+i]]}bottomxys(){const{x:t,y:l,width:e,height:i}=this;return[[t,l+i],[t+e,l+i]]}leftxys(){const{x:t,y:l,height:e}=this;return[[t,l],[t,l+e]]}}function al(t,l,e,i,n,c,s){const d={x:0,y:0};"underline"===t?d.y="bottom"===n?0:"top"===n?-(c+2):-c/2:"strike"===t&&("bottom"===n?d.y=c/2:"top"===n&&(d.y=-(c/2+2))),"center"===i?d.x=s/2:"right"===i&&(d.x=s),this.line([l-d.x,e-d.y],[l-d.x+s,e-d.y])}class ul{constructor(t,l,e){this.el=t,this.ctx=t.getContext("2d"),this.resize(l,e),this.ctx.scale(il(),il())}resize(t,l){this.el.style.width=`${t}px`,this.el.style.height=`${l}px`,this.el.width=cl(t),this.el.height=cl(l)}clear(){const{width:t,height:l}=this.el;return this.ctx.clearRect(0,0,t,l),this}attr(t){return Object.assign(this.ctx,t),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(t,l){return this.ctx.translate(cl(t),cl(l)),this}scale(t,l){return this.ctx.scale(t,l),this}clearRect(t,l,e,i){return this.ctx.clearRect(t,l,e,i),this}fillRect(t,l,e,i){return this.ctx.fillRect(cl(t)-.5,cl(l)-.5,cl(e),cl(i)),this}fillText(t,l,e){return this.ctx.fillText(t,cl(l),cl(e)),this}text(t,l,e={},i=!0){const{ctx:n}=this,{align:c,valign:s,font:d,color:a,strike:u,underline:o}=e,r=l.textx(c);n.save(),n.beginPath(),this.attr({textAlign:c,textBaseline:s,font:`${d.italic?"italic":""} ${d.bold?"bold":""} ${cl(d.size)}px ${d.name}`,fillStyle:a,strokeStyle:a});const b=`${t}`.split("\n"),h=l.innerWidth(),Z=[];b.forEach((t=>{const l=n.measureText(t).width;if(i&&l>cl(h)){let l={w:0,len:0,start:0};for(let e=0;e<t.length;e+=1)l.w>=cl(h)&&(Z.push(t.substr(l.start,l.len)),l={w:0,len:0,start:e}),l.len+=1,l.w+=n.measureText(t[e]).width+1;l.len>0&&Z.push(t.substr(l.start,l.len))}else Z.push(t)}));const m=(Z.length-1)*(d.size+2);let y=l.texty(s,m);return Z.forEach((t=>{const l=n.measureText(t).width;this.fillText(t,r,y),u&&al.call(this,"strike",r,y,c,s,d.size,l),o&&al.call(this,"underline",r,y,c,s,d.size,l),y+=d.size+2})),n.restore(),this}border(t,l){const{ctx:e}=this;return e.lineWidth=nl,e.strokeStyle=l,"medium"===t?e.lineWidth=cl(2)-.5:"thick"===t?e.lineWidth=cl(3):"dashed"===t?e.setLineDash([cl(3),cl(2)]):"dotted"===t?e.setLineDash([cl(1),cl(1)]):"double"===t&&e.setLineDash([cl(2),0]),this}line(...t){const{ctx:l}=this;if(t.length>1){l.beginPath();const[e,i]=t[0];l.moveTo(sl(e),sl(i));for(let n=1;n<t.length;n+=1){const[e,i]=t[n];l.lineTo(sl(e),sl(i))}l.stroke()}return this}strokeBorders(t){const{ctx:l}=this;l.save();const{borderTop:e,borderRight:i,borderBottom:n,borderLeft:c}=t;e&&(this.border(...e),this.line(...t.topxys())),i&&(this.border(...i),this.line(...t.rightxys())),n&&(this.border(...n),this.line(...t.bottomxys())),c&&(this.border(...c),this.line(...t.leftxys())),l.restore()}dropdown(t){const{ctx:l}=this,{x:e,y:i,width:n,height:c}=t,s=e+n-15,d=i+c-15;l.save(),l.beginPath(),l.moveTo(cl(s),cl(d)),l.lineTo(cl(s+8),cl(d)),l.lineTo(cl(s+4),cl(d+6)),l.closePath(),l.fillStyle="rgba(0, 0, 0, .45)",l.fill(),l.restore()}error(t){const{ctx:l}=this,{x:e,y:i,width:n}=t,c=e+n-1;l.save(),l.beginPath(),l.moveTo(cl(c-8),cl(i-1)),l.lineTo(cl(c),cl(i-1)),l.lineTo(cl(c),cl(i+8)),l.closePath(),l.fillStyle="rgba(255, 0, 0, .65)",l.fill(),l.restore()}frozen(t){const{ctx:l}=this,{x:e,y:i,width:n}=t,c=e+n-1;l.save(),l.beginPath(),l.moveTo(cl(c-8),cl(i-1)),l.lineTo(cl(c),cl(i-1)),l.lineTo(cl(c),cl(i+8)),l.closePath(),l.fillStyle="rgba(0, 255, 0, .85)",l.fill(),l.restore()}rect(t,l){const{ctx:e}=this,{x:i,y:n,width:c,height:s,bgcolor:d}=t;e.save(),e.beginPath(),e.fillStyle=d||"#fff",e.rect(sl(i+1),sl(n+1),cl(c-2),cl(s-2)),e.clip(),e.fill(),l(),e.restore()}}const ol=[{key:"Arial",title:"Arial"},{key:"Helvetica",title:"Helvetica"},{key:"Source Sans Pro",title:"Source Sans Pro"},{key:"Comic Sans MS",title:"Comic Sans MS"},{key:"Courier New",title:"Courier New"},{key:"Verdana",title:"Verdana"},{key:"Lato",title:"Lato"}],rl=[{pt:7.5,px:10},{pt:8,px:11},{pt:9,px:12},{pt:10,px:13},{pt:10.5,px:14},{pt:11,px:15},{pt:12,px:16},{pt:14,px:18.7},{pt:15,px:20},{pt:16,px:21.3},{pt:18,px:24},{pt:22,px:29.3},{pt:24,px:32},{pt:26,px:34.7},{pt:36,px:48},{pt:42,px:56}];function bl(t){for(let l=0;l<rl.length;l+=1){const e=rl[l];if(e.pt===t)return e.px}return t}const hl=t=>{const l=[],e=[];let i=[],n=0,c="",s=1,d="";for(let u=0;u<t.length;u+=1){const o=t.charAt(u);if(" "!==o){if(o>="a"&&o<="z")i.push(o.toUpperCase());else if(o>="0"&&o<="9"||o>="A"&&o<="Z"||"."===o)i.push(o);else if('"'===o){u+=1;while('"'!==t.charAt(u))i.push(t.charAt(u)),u+=1;e.push(`"${i.join("")}`),i=[]}else if("-"===o&&/[+\-*/,(]/.test(d))i.push(o);else{if("("!==o&&i.length>0&&e.push(i.join("")),")"===o){let t=l.pop();if(2===n)try{const[l,i]=r(e.pop()),[n,c]=r(e.pop());let s=0;for(let t=n;t<=l;t+=1)for(let l=c;l<=i;l+=1)e.push(b(t,l)),s+=1;e.push([t,s])}catch(a){}else if(1===n||3===n)3===n&&e.push(c),e.push([t,s]),s=1;else while("("!==t){if(e.push(t),l.length<=0)break;t=l.pop()}n=0}else if("="===o||">"===o||"<"===o){const l=t.charAt(u+1);c=o,"="!==l&&"-"!==l||(c+=l,u+=1),n=3}else if(":"===o)n=2;else if(","===o)3===n&&e.push(c),n=1,s+=1;else if("("===o&&i.length>0)l.push(i.join(""));else{if(l.length>0&&("+"===o||"-"===o)){let t=l[l.length-1];if("("!==t&&e.push(l.pop()),"*"===t||"/"===t)while(l.length>0){if(t=l[l.length-1],"("===t)break;e.push(l.pop())}}else if(l.length>0){const t=l[l.length-1];"*"!==t&&"/"!==t||e.push(l.pop())}l.push(o)}i=[]}d=o}}i.length>0&&e.push(i.join(""));while(l.length>0)e.push(l.pop());return e},Zl=(t,l)=>{const[e]=t;let i=t;if('"'===e)return t.substring(1);let n=1;if("-"===e&&(i=t.substring(1),n=-1),i[0]>="0"&&i[0]<="9")return n*Number(i);const[c,s]=r(i);return n*l(c,s)},ml=(t,l,e,i)=>{const n=[];for(let c=0;c<t.length;c+=1){const s=t[c],d=s[0];if("+"===s){const t=n.pop();n.push(S("+",n.pop(),t))}else if("-"===s)if(1===n.length){const t=n.pop();n.push(S("*",t,-1))}else{const t=n.pop();n.push(S("-",n.pop(),t))}else if("*"===s)n.push(S("*",n.pop(),n.pop()));else if("/"===s){const t=n.pop();n.push(S("/",n.pop(),t))}else if("="===d||">"===d||"<"===d){let t=n.pop();Number.isNaN(t)||(t=Number(t));let l=n.pop();Number.isNaN(l)||(l=Number(l));let e=!1;"="===d?e=l===t:">"===s?e=l>t:">="===s?e=l>=t:"<"===s?e=l<t:"<="===s&&(e=l<=t),n.push(e)}else if(Array.isArray(s)){const[t,e]=s,i=[];for(let l=0;l<e;l+=1)i.push(n.pop());n.push(l[t].render(i.reverse()))}else{if(i.includes(s))return 0;(d>="a"&&d<="z"||d>="A"&&d<="Z")&&i.push(s),n.push(Zl(s,e)),i.pop()}}return n[0]},yl=(t,l,e,i=[])=>{if("="===t[0]){const n=hl(t.substring(1));return n.length<=0?t:ml(n,l,((t,n)=>yl(e(t,n),l,e,i)),i)}return t};var pl={render:yl};const Wl=[{key:"SUM",title:U("formula.sum"),render:t=>t.reduce(((t,l)=>S("+",t,l)),0)},{key:"AVERAGE",title:U("formula.average"),render:t=>t.reduce(((t,l)=>Number(t)+Number(l)),0)/t.length},{key:"MAX",title:U("formula.max"),render:t=>Math.max(...t.map((t=>Number(t))))},{key:"MIN",title:U("formula.min"),render:t=>Math.min(...t.map((t=>Number(t))))},{key:"IF",title:U("formula._if"),render:([t,l,e])=>t?l:e},{key:"AND",title:U("formula.and"),render:t=>t.every((t=>t))},{key:"OR",title:U("formula.or"),render:t=>t.some((t=>t))},{key:"CONCAT",title:U("formula.concat"),render:t=>t.join("")}],Gl=Wl,Xl={};Wl.forEach((t=>{Xl[t.key]=t}));const Yl=t=>t,Nl=t=>{if(/^(-?\d*.?\d*)$/.test(t)){const l=Number(t).toFixed(2).toString(),[e,...i]=l.split("\\.");return[e.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...i]}return t},Vl=[{key:"normal",title:U("format.normal"),type:"string",render:Yl},{key:"text",title:U("format.text"),type:"string",render:Yl},{key:"number",title:U("format.number"),type:"number",label:"1,000.12",render:Nl},{key:"percent",title:U("format.percent"),type:"number",label:"10.12%",render:t=>`${t}%`},{key:"rmb",title:U("format.rmb"),type:"number",label:"¥10.00",render:t=>`¥${Nl(t)}`},{key:"usd",title:U("format.usd"),type:"number",label:"$10.00",render:t=>`$${Nl(t)}`},{key:"eur",title:U("format.eur"),type:"number",label:"€10.00",render:t=>`€${Nl(t)}`},{key:"date",title:U("format.date"),type:"date",label:"26/09/2008",render:Yl},{key:"time",title:U("format.time"),type:"date",label:"15:59:00",render:Yl},{key:"datetime",title:U("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:Yl},{key:"duration",title:U("format.duration"),type:"date",label:"24:01:00",render:Yl}],Ml={};Vl.forEach((t=>{Ml[t.key]=t}));const Ll=5,Il={fillStyle:"#f4f5f8"},wl={fillStyle:"#fff",lineWidth:nl,strokeStyle:"#e6e6e6"};function fl(){return{textAlign:"center",textBaseline:"middle",font:`500 ${cl(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:nl(),strokeStyle:"#e6e6e6"}}function Rl(t,l,e,i=0){const{left:n,top:c,width:s,height:d}=t.cellRect(l,e);return new dl(n,c+i,s,d,Ll)}function Tl(t,l,e,i,n=0){const{sortedRowMap:c,rows:s,cols:d}=l;if(s.isHide(e)||d.isHide(i))return;let a=e;c.has(e)&&(a=c.get(e));const u=l.getCell(a,i);if(null===u)return;let o=!1;"editable"in u&&!1===u.editable&&(o=!0);const r=l.getCellStyleOrDefault(a,i),b=Rl(l,e,i,n);b.bgcolor=r.bgcolor,void 0!==r.border&&(b.setBorders(r.border),t.strokeBorders(b)),t.rect(b,(()=>{let n="";n=l.settings.evalPaused?u.text||"":pl.render(u.text||"",Xl,((t,e)=>l.getCellTextOrDefault(e,t))),r.format&&(n=Ml[r.format].render(n));const c=Object.assign({},r.font);c.size=bl(c.size),t.text(n,b,{align:r.align,valign:r.valign,font:c,color:r.color,strike:r.strike,underline:r.underline},r.textwrap);const s=l.validations.getError(e,i);s&&t.error(b),o&&t.frozen(b)}))}function zl(t){const{data:l,draw:e}=this;if(t){const{autoFilter:i}=l;if(!i.active())return;const n=i.hrange();t.intersects(n)&&n.each(((t,i)=>{const n=Rl(l,t,i);e.dropdown(n)}))}}function xl(t,l,e,i,n){const{draw:c,data:s}=this;c.save(),c.translate(l,e).translate(i,n);const{exceptRowSet:d}=s,a=t=>{const l=d.has(t);if(l){const l=s.rows.getHeight(t);c.translate(0,-l)}return!l},u=s.exceptRowTotalHeight(t.sri,t.eri);c.save(),c.translate(0,-u),t.each(((t,l)=>{Tl(c,s,t,l)}),(t=>a(t))),c.restore();const o=new Set;c.save(),c.translate(0,-u),s.eachMergesInView(t,(({sri:t,sci:l,eri:e})=>{if(d.has(t)){if(!o.has(t)){o.add(t);const l=s.rows.sumHeight(t,e+1);c.translate(0,-l)}}else Tl(c,s,t,l)})),c.restore(),zl.call(this,t),c.restore()}function Sl(t,l,e,i){const{draw:n}=this;n.save(),n.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(t,l,e,i),n.restore()}function kl(t,l,e,i,n,c){const{draw:s,data:d}=this,a=l.h,o=l.w,r=c+i,b=n+e;s.save(),s.attr(Il),"all"!==t&&"left"!==t||s.fillRect(0,r,e,a),"all"!==t&&"top"!==t||s.fillRect(b,0,o,i);const{sri:h,sci:Z,eri:m,eci:y}=d.selector.range;s.attr(fl()),"all"!==t&&"left"!==t||(d.rowEach(l.sri,l.eri,((t,l,i)=>{const n=r+l,c=t;s.line([0,n],[e,n]),h<=c&&c<m+1&&Sl.call(this,0,n,e,i),s.fillText(c+1,e/2,n+i/2),t>0&&d.rows.isHide(t-1)&&(s.save(),s.attr({strokeStyle:"#c6c6c6"}),s.line([5,n+5],[e-5,n+5]),s.restore())})),s.line([0,a+r],[e,a+r]),s.line([e,r],[e,a+r])),"all"!==t&&"top"!==t||(d.colEach(l.sci,l.eci,((t,l,e)=>{const n=b+l,c=t;s.line([n,0],[n,i]),Z<=c&&c<y+1&&Sl.call(this,n,0,e,i),s.fillText(u(c),n+e/2,i/2),t>0&&d.cols.isHide(t-1)&&(s.save(),s.attr({strokeStyle:"#c6c6c6"}),s.line([n+5,5],[n+5,i-5]),s.restore())})),s.line([o+b,0],[o+b,i]),s.line([0,i],[o+b,i])),s.restore()}function Cl(t,l){const{draw:e}=this;e.save(),e.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,t,l),e.restore()}function Jl({sri:t,sci:l,eri:e,eci:i,w:n,h:c},s,d,a,u){const{draw:o,data:r}=this,{settings:b}=r;o.save(),o.attr(wl).translate(s+a,d+u),b.showGrid?(r.rowEach(t,e,((l,i,c)=>{l!==t&&o.line([0,i],[n,i]),l===e&&o.line([0,i+c],[n,i+c])})),r.colEach(l,i,((t,e,n)=>{t!==l&&o.line([e,0],[e,c]),t===i&&o.line([e+n,0],[e+n,c])})),o.restore()):o.restore()}function gl(t,l,e,i){const{draw:n,data:c}=this,s=c.viewWidth()-t,d=c.viewHeight()-l;n.save().translate(t,l).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),n.line([0,i],[s,i]),n.line([e,0],[e,d]),n.restore()}class Fl{constructor(t,l){this.el=t,this.draw=new ul(t,l.viewWidth(),l.viewHeight()),this.data=l}resetData(t){this.data=t,this.render()}render(){const{data:t}=this,{rows:l,cols:e}=t,i=e.indexWidth,n=l.height;this.draw.resize(t.viewWidth(),t.viewHeight()),this.clear();const c=t.viewRange(),s=t.freezeTotalWidth(),d=t.freezeTotalHeight(),{x:a,y:u}=t.scroll;Jl.call(this,c,i,n,s,d),xl.call(this,c,i,n,-a,-u),kl.call(this,"all",c,i,n,s,d),Cl.call(this,i,n);const[o,r]=t.freeze;if(o>0||r>0){if(o>0){const t=c.clone();t.sri=0,t.eri=o-1,t.h=d,Jl.call(this,t,i,n,s,0),xl.call(this,t,i,n,-a,0),kl.call(this,"top",t,i,n,s,0)}if(r>0){const t=c.clone();t.sci=0,t.eci=r-1,t.w=s,Jl.call(this,t,i,n,0,d),kl.call(this,"left",t,i,n,0,d),xl.call(this,t,i,n,0,-u)}const l=t.freezeViewRange();Jl.call(this,l,i,n,0,0),kl.call(this,"all",l,i,n,0,0),xl.call(this,l,i,n,0,0),gl.call(this,i,n,s,d)}}clear(){this.draw.clear()}}var jl=Fl;const vl=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],Dl=["landscape","portrait"];function Ul(t){return parseInt(96*t,10)}function Ol(t){"cancel"===t?this.el.hide():this.toPrint()}function Kl(t){const{paper:l}=this,{value:e}=t.target,i=vl[e];l.w=Ul(i[1]),l.h=Ul(i[2]),this.preview()}function El(t){const{paper:l}=this,{value:e}=t.target,i=Dl[e];l.orientation=i,this.preview()}class Hl{constructor(t){this.paper={w:Ul(vl[0][1]),h:Ul(vl[0][2]),padding:50,orientation:Dl[0],get width(){return"landscape"===this.orientation?this.h:this.w},get height(){return"landscape"===this.orientation?this.w:this.h}},this.data=t,this.el=d("div",`${mt}-print`).children(d("div",`${mt}-print-bar`).children(d("div","-title").child("Print settings"),d("div","-right").children(d("div",`${mt}-buttons`).children(new el("cancel").on("click",Ol.bind(this,"cancel")),new el("next","primary").on("click",Ol.bind(this,"next"))))),d("div",`${mt}-print-content`).children(this.contentEl=d("div","-content"),d("div","-sider").child(d("form","").children(d("fieldset","").children(d("label","").child(`${D("print.size")}`),d("select","").children(...vl.map(((t,l)=>d("option","").attr("value",l).child(`${t[0]} ( ${t[1]}''x${t[2]}'' )`)))).on("change",Kl.bind(this))),d("fieldset","").children(d("label","").child(`${D("print.orientation")}`),d("select","").children(...Dl.map(((t,l)=>d("option","").attr("value",l).child(`${D("print.orientations")[l]}`)))).on("change",El.bind(this))))))).hide()}resetData(t){this.data=t}preview(){const{data:t,paper:l}=this,{width:e,height:i,padding:n}=l,c=e-2*n,s=i-2*n,a=t.contentRange(),u=parseInt(a.h/s,10)+1,o=c/a.w;let r=n;const b=n;o>1&&(r+=(c-a.w)/2);let h=0,Z=0;this.contentEl.html(""),this.canvases=[];const m={sri:0,sci:0,eri:0,eci:0};for(let y=0;y<u;y+=1){let l=0,n=0;const c=d("div",`${mt}-canvas-card`),u=d("canvas",`${mt}-canvas`);this.canvases.push(u.el);const y=new ul(u.el,e,i);for(y.save(),y.translate(r,b),o<1&&y.scale(o,o);h<=a.eri;h+=1){const e=t.rows.getHeight(h);if(l+=e,!(l<s)){n=-(l-e);break}for(let l=0;l<=a.eci;l+=1)Tl(y,t,h,l,Z),m.eci=l}m.eri=h,y.restore(),y.save(),y.translate(r,b),o<1&&y.scale(o,o);const p=Z;t.eachMergesInView(m,(({sri:l,sci:e})=>{Tl(y,t,l,e,p)})),y.restore(),m.sri=m.eri,m.sci=m.eci,Z+=n,this.contentEl.child(d("div",`${mt}-canvas-card-wraper`).child(c.child(u)))}this.el.show()}toPrint(){this.el.hide();const{paper:t}=this,l=d("iframe","").hide(),{el:e}=l;window.document.body.appendChild(e);const{contentWindow:i}=e,n=i.document,c=document.createElement("style");c.innerHTML=`\n @page { size: ${t.width}px ${t.height}px; };\n canvas {\n page-break-before: auto; \n page-break-after: always;\n image-rendering: pixelated;\n };\n `,n.head.appendChild(c),this.canvases.forEach((t=>{const l=t.cloneNode(!1),e=l.getContext("2d");e.drawImage(t,0,0),n.body.appendChild(l)})),i.print()}}const Ql=[{key:"copy",title:U("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:U("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:U("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:U("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:U("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:U("contextmenu.insertRow")},{key:"insert-column",title:U("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:U("contextmenu.deleteRow")},{key:"delete-column",title:U("contextmenu.deleteColumn")},{key:"delete-cell-text",title:U("contextmenu.deleteCellText")},{key:"hide",title:U("contextmenu.hide")},{key:"divider"},{key:"validation",title:U("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:U("contextmenu.cellprintable")},{key:"cell-non-printable",title:U("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:U("contextmenu.celleditable")},{key:"cell-non-editable",title:U("contextmenu.cellnoneditable")}];function Bl(t){return"divider"===t.key?d("div",`${mt}-item divider`):d("div",`${mt}-item`).on("click",(()=>{this.itemClick(t.key),this.hide()})).children(t.title(),d("div","label").child(t.label||""))}function Pl(){return Ql.map((t=>Bl.call(this,t)))}class Al{constructor(t,l=!1){this.menuItems=Pl.call(this),this.el=d("div",`${mt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=t,this.itemClick=()=>{},this.isHide=l,this.setMode("range")}setMode(t){const l=this.menuItems[12];"row-col"===t?l.show():l.hide()}hide(){const{el:t}=this;t.hide(),ut(t)}setPosition(t,l){if(this.isHide)return;const{el:e}=this,{width:i}=e.show().offset(),n=this.viewFn(),c=n.height/2;let s=t;n.width-t<=i&&(s-=i),e.css("left",`${s}px`),l>c?e.css("bottom",n.height-l+"px").css("max-height",`${l}px`).css("top","auto"):e.css("top",`${l}px`).css("max-height",n.height-l+"px").css("bottom","auto"),ot(e)}}function _l(t,l){if(l.classList.contains("active"))return;const{left:e,top:i,width:n,height:c}=l.getBoundingClientRect(),s=d("div",`${mt}-tooltip`).html(t).show();document.body.appendChild(s.el);const a=s.box();s.css("left",e+n/2-a.width/2+"px").css("top",`${i+c+2}px`),dt(l,"mouseleave",(()=>{document.body.contains(s.el)&&document.body.removeChild(s.el)})),dt(l,"click",(()=>{document.body.contains(s.el)&&document.body.removeChild(s.el)}))}class ql{constructor(t,l,e){this.tip=D(`toolbar.${t.replace(/-[a-z]/g,(t=>t[1].toUpperCase()))}`),l&&(this.tip+=` (${l})`),this.tag=t,this.shortcut=l,this.value=e,this.el=this.element(),this.change=()=>{}}element(){const{tip:t}=this;return d("div",`${mt}-toolbar-btn`).on("mouseenter",(l=>{_l(t,l.target)})).attr("data-tooltip",t)}setState(){}}class $l extends ql{dropdown(){}getValue(t){return t}element(){const{tag:t}=this;return this.dd=this.dropdown(),this.dd.change=l=>this.change(t,this.getValue(l)),super.element().child(this.dd)}setState(t){t&&(this.value=t,this.dd.setTitle(t))}}class te extends s{constructor(t,l,e,i,...n){super("div",`${mt}-dropdown ${i}`),this.title=t,this.change=()=>{},this.headerClick=()=>{},"string"===typeof t?this.title=d("div",`${mt}-dropdown-title`).child(t):e&&this.title.addClass("arrow-left"),this.contentEl=d("div",`${mt}-dropdown-content`).css("width",l).hide(),this.setContentChildren(...n),this.headerEl=d("div",`${mt}-dropdown-header`),this.headerEl.on("click",(()=>{"block"!==this.contentEl.css("display")?this.show():this.hide()})).children(this.title,e?d("div",`${mt}-icon arrow-right`).child(d("div",`${mt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...t){this.contentEl.html(""),t.length>0&&this.contentEl.children(...t)}setTitle(t){this.title.html(t),this.hide()}show(){const{contentEl:t}=this;t.show(),this.parent().active(),ot(this.parent(),(()=>{this.hide()}))}hide(){this.parent().active(!1),this.contentEl.hide(),ut(this.parent())}}function le(t){return d("div",`${mt}-item`).child(new vt(t))}class ee extends te{constructor(t,l){const e=new vt(`align-${l}`),i=t.map((t=>le(`align-${t}`).on("click",(()=>{this.setTitle(t),this.change(t)}))));super(e,"auto",!0,"bottom-left",...i)}setTitle(t){this.title.setName(`align-${t}`),this.hide()}}class ie extends $l{constructor(t){super("align","",t)}dropdown(){const{value:t}=this;return new ee(["left","center","right"],t)}}class ne extends $l{constructor(t){super("valign","",t)}dropdown(){const{value:t}=this;return new ee(["top","middle","bottom"],t)}}class ce extends ql{element(){const{tag:t}=this;return super.element().child(new vt(t)).on("click",(()=>this.click()))}click(){this.change(this.tag,this.toggle())}setState(t){this.el.active(t)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class se extends ce{constructor(){super("autofilter")}setState(){}}class de extends ce{constructor(){super("font-bold","Ctrl+B")}}class ae extends ce{constructor(){super("font-italic","Ctrl+I")}}class ue extends ce{constructor(){super("strike","Ctrl+U")}}class oe extends ce{constructor(){super("underline","Ctrl+U")}}const re=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],be=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],he=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function Ze(t){return d("td","").child(d("div",`${mt}-color-palette-cell`).on("click.stop",(()=>this.change(t))).css("background-color",t))}class me{constructor(){this.el=d("div",`${mt}-color-palette`),this.change=()=>{};const t=d("table","").children(d("tbody","").children(d("tr",`${mt}-theme-color-placeholders`).children(...re.map((t=>Ze.call(this,t)))),...be.map((t=>d("tr",`${mt}-theme-colors`).children(...t.map((t=>Ze.call(this,t)))))),d("tr",`${mt}-standard-colors`).children(...he.map((t=>Ze.call(this,t))))));this.el.child(t)}}class ye extends te{constructor(t,l){const e=new vt(t).css("height","16px").css("border-bottom",`3px solid ${l}`),i=new me;i.change=t=>{this.setTitle(t),this.change(t)},super(e,"auto",!1,"bottom-left",i.el)}setTitle(t){this.title.css("border-color",t),this.hide()}}const pe=[["thin",'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" style="user-select: none;"></line></svg>'],["medium",'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="2" style="user-select: none;"><line x1="0" y1="1.0" x2="50" y2="1.0" stroke-width="2" stroke="black" style="user-select: none;"></line></svg>'],["thick",'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="3" style="user-select: none;"><line x1="0" y1="1.5" x2="50" y2="1.5" stroke-width="3" stroke="black" style="user-select: none;"></line></svg>'],["dashed",'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" stroke-dasharray="2" style="user-select: none;"></line></svg>'],["dotted",'<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" stroke-dasharray="1" style="user-select: none;"></line></svg>']];class We extends te{constructor(t){const l=new vt("line-type");let e=0;const i=pe.map(((l,n)=>d("div",`${mt}-item state ${t===l[0]?"checked":""}`).on("click",(()=>{i[e].toggle("checked"),i[n].toggle("checked"),e=n,this.hide(),this.change(l)})).child(d("div",`${mt}-line-type`).html(l[1]))));super(l,"auto",!1,"bottom-left",...i)}}function Ge(...t){return d("table","").child(d("tbody","").children(...t))}function Xe(t){return d("td","").child(d("div",`${mt}-border-palette-cell`).child(new vt(`border-${t}`)).on("click",(()=>{this.mode=t;const{mode:l,style:e,color:i}=this;this.change({mode:l,style:e,color:i})})))}class Ye{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new ye("line-color",this.color),this.ddColor.change=t=>{this.color=t},this.ddType=new We(this.style),this.ddType.change=([t])=>{this.style=t},this.el=d("div",`${mt}-border-palette`);const t=Ge(d("tr","").children(d("td",`${mt}-border-palette-left`).child(Ge(d("tr","").children(...["all","inside","horizontal","vertical","outside"].map((t=>Xe.call(this,t)))),d("tr","").children(...["left","top","right","bottom","none"].map((t=>Xe.call(this,t)))))),d("td",`${mt}-border-palette-right`).children(d("div",`${mt}-toolbar-btn`).child(this.ddColor.el),d("div",`${mt}-toolbar-btn`).child(this.ddType.el))));this.el.child(t)}}class Ne extends te{constructor(){const t=new vt("border-all"),l=new Ye;l.change=t=>{this.change(t),this.hide()},super(t,"auto",!1,"bottom-left",l.el)}}class Ve extends $l{constructor(){super("border")}dropdown(){return new Ne}}class Me extends ql{element(){return super.element().child(new vt(this.tag)).on("click",(()=>this.change(this.tag)))}setState(t){this.el.disabled(t)}}class Le extends Me{constructor(){super("clearformat")}}class Ie extends ce{constructor(){super("paintformat")}setState(){}}class we extends $l{constructor(t){super("color",void 0,t)}dropdown(){const{tag:t,value:l}=this;return new ye(t,l)}}class fe extends $l{constructor(t){super("bgcolor",void 0,t)}dropdown(){const{tag:t,value:l}=this;return new ye(t,l)}}class Re extends te{constructor(){const t=rl.map((t=>d("div",`${mt}-item`).on("click",(()=>{this.setTitle(`${t.pt}`),this.change(t)})).child(`${t.pt}`)));super("10","60px",!0,"bottom-left",...t)}}class Te extends $l{constructor(){super("font-size")}getValue(t){return t.pt}dropdown(){return new Re}}class ze extends te{constructor(){const t=ol.map((t=>d("div",`${mt}-item`).on("click",(()=>{this.setTitle(t.title),this.change(t)})).child(t.title)));super(ol[0].title,"160px",!0,"bottom-left",...t)}}class xe extends $l{constructor(){super("font-name")}getValue(t){return t.key}dropdown(){return new ze}}class Se extends te{constructor(){let t=Vl.slice(0);t.splice(2,0,{key:"divider"}),t.splice(8,0,{key:"divider"}),t=t.map((t=>{const l=d("div",`${mt}-item`);return"divider"===t.key?l.addClass("divider"):(l.child(t.title()).on("click",(()=>{this.setTitle(t.title()),this.change(t)})),t.label&&l.child(d("div","label").html(t.label))),l})),super("Normal","220px",!0,"bottom-left",...t)}setTitle(t){for(let l=0;l<Vl.length;l+=1)Vl[l].key===t&&this.title.html(Vl[l].title());this.hide()}}class ke extends $l{constructor(){super("format")}getValue(t){return t.key}dropdown(){return new Se}}class Ce extends te{constructor(){const t=Wl.map((t=>d("div",`${mt}-item`).on("click",(()=>{this.hide(),this.change(t)})).child(t.key)));super(new vt("formula"),"180px",!0,"bottom-left",...t)}}class Je extends $l{constructor(){super("formula")}getValue(t){return t.key}dropdown(){return new Ce}}class ge extends ce{constructor(){super("freeze")}}class Fe extends ce{constructor(){super("merge")}setState(t,l){this.el.active(t).disabled(l)}}class je extends Me{constructor(){super("redo","Ctrl+Y")}}class ve extends Me{constructor(){super("undo","Ctrl+Z")}}class De extends Me{constructor(){super("print","Ctrl+P")}}class Ue extends ce{constructor(){super("textwrap")}}class Oe extends te{constructor(){const t=new vt("ellipsis"),l=d("div",`${mt}-toolbar-more`);super(t,"auto",!1,"bottom-right",l),this.moreBtns=l,this.contentEl.css("max-width","420px")}}class Ke extends $l{constructor(){super("more"),this.el.hide()}dropdown(){return new Oe}show(){this.el.show()}hide(){this.el.hide()}}function Ee(){return d("div",`${mt}-toolbar-divider`)}function He(){this.btns2=[],this.items.forEach((t=>{if(Array.isArray(t))t.forEach((({el:t})=>{const l=t.box(),{marginLeft:e,marginRight:i}=t.computedStyle();this.btns2.push([t,l.width+parseInt(e,10)+parseInt(i,10)])}));else{const l=t.box(),{marginLeft:e,marginRight:i}=t.computedStyle();this.btns2.push([t,l.width+parseInt(e,10)+parseInt(i,10)])}}))}function Qe(){const{el:t,btns:l,moreEl:e,btns2:i}=this,{moreBtns:n,contentEl:c}=e.dd;t.css("width",this.widthFn()-60+"px");const s=t.box();let d=160,a=12;const u=[],o=[];i.forEach((([t,l],e)=>{d+=l,e===i.length-1||d<s.width?u.push(t):(a+=l,o.push(t))})),l.html("").children(...u),n.html("").children(...o),c.css("width",`${a}px`),o.length>0?e.show():e.hide()}class Be{constructor(t,l,e=!1){this.data=t,this.change=()=>{},this.widthFn=l,this.isHide=e;const i=t.defaultStyle();this.items=[[this.undoEl=new ve,this.redoEl=new je,new De,this.paintformatEl=new Ie,this.clearformatEl=new Le],Ee(),[this.formatEl=new ke],Ee(),[this.fontEl=new xe,this.fontSizeEl=new Te],Ee(),[this.boldEl=new de,this.italicEl=new ae,this.underlineEl=new oe,this.strikeEl=new ue,this.textColorEl=new we(i.color)],Ee(),[this.fillColorEl=new fe(i.bgcolor),this.borderEl=new Ve,this.mergeEl=new Fe],Ee(),[this.alignEl=new ie(i.align),this.valignEl=new ne(i.valign),this.textwrapEl=new Ue],Ee(),[this.freezeEl=new ge,this.autofilterEl=new se,this.formulaEl=new Je,this.moreEl=new Ke]],this.el=d("div",`${mt}-toolbar`),this.btns=d("div",`${mt}-toolbar-btns`),this.items.forEach((t=>{Array.isArray(t)?t.forEach((t=>{this.btns.child(t.el),t.change=(...t)=>{this.change(...t)}})):this.btns.child(t.el)})),this.el.child(this.btns),e?this.el.hide():(this.reset(),setTimeout((()=>{He.call(this),Qe.call(this)}),0),dt(window,"resize",(()=>{Qe.call(this)})))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(t){this[`${t}El`].click()}resetData(t){this.data=t,this.reset()}reset(){if(this.isHide)return;const{data:t}=this,l=t.getSelectedCellStyle();this.undoEl.setState(!t.canUndo()),this.redoEl.setState(!t.canRedo()),this.mergeEl.setState(t.canUnmerge(),!t.selector.multiple()),this.autofilterEl.setState(!t.canAutofilter());const{font:e,format:i}=l;this.formatEl.setState(i),this.fontEl.setState(e.name),this.fontSizeEl.setState(e.size),this.boldEl.setState(e.bold),this.italicEl.setState(e.italic),this.underlineEl.setState(l.underline),this.strikeEl.setState(l.strike),this.textColorEl.setState(l.color),this.fillColorEl.setState(l.bgcolor),this.alignEl.setState(l.align),this.valignEl.setState(l.valign),this.textwrapEl.setState(l.textwrap),this.freezeEl.setState(t.freezeIsActive())}}class Pe{constructor(t,l,e="600px"){this.title=t,this.el=d("div",`${mt}-modal`).css("width",e).children(d("div",`${mt}-modal-header`).children(new vt("close").on("click.stop",(()=>this.hide())),this.title),d("div",`${mt}-modal-content`).children(...l)).hide()}show(){this.dimmer=d("div",`${mt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:t,height:l}=this.el.show().box(),{clientHeight:e,clientWidth:i}=document.documentElement;this.el.offset({left:(i-t)/2,top:(e-l)/3}),window.xkeydownEsc=t=>{27===t.keyCode&&this.hide()},dt(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),at(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class Ae{constructor(t,l){this.vchange=()=>{},this.el=d("div",`${mt}-form-input`),this.input=d("input","").css("width",t).on("input",(t=>this.vchange(t))).attr("placeholder",l),this.el.child(this.input)}focus(){setTimeout((()=>{this.input.el.focus()}),10)}hint(t){this.input.attr("placeholder",t)}val(t){return this.input.val(t)}}class _e{constructor(t,l,e,i=(t=>t),n=(()=>{})){this.key=t,this.getTitle=i,this.vchange=()=>{},this.el=d("div",`${mt}-form-select`),this.suggest=new jt(l.map((t=>({key:t,title:this.getTitle(t)}))),(t=>{this.itemClick(t.key),n(t.key),this.vchange(t.key)}),e,this.el),this.el.children(this.itemEl=d("div","input-text").html(this.getTitle(t)),this.suggest.el).on("click",(()=>this.show()))}show(){this.suggest.search("")}itemClick(t){this.key=t,this.itemEl.html(this.getTitle(t))}val(t){return void 0!==t?(this.key=t,this.itemEl.html(this.getTitle(t)),this):this.key}}const qe={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class $e{constructor(t,l,e,i){this.label="",this.rule=l,e&&(this.label=d("label","label").css("width",`${i}px`).html(e)),this.tip=d("div","tip").child("tip").hide(),this.input=t,this.input.vchange=()=>this.validate(),this.el=d("div",`${mt}-form-field`).children(this.label,t.el,this.tip)}isShow(){return"none"!==this.el.css("display")}show(){this.el.show()}hide(){return this.el.hide(),this}val(t){return this.input.val(t)}hint(t){this.input.hint(t)}validate(){const{input:t,rule:l,tip:e,el:i}=this,n=t.val();if(l.required&&/^\s*$/.test(n))return e.html(D("validation.required")),i.addClass("error"),!1;if(l.type||l.pattern){const t=l.pattern||qe[l.type];if(!t.test(n))return e.html(D("validation.notMatch")),i.addClass("error"),!1}return i.removeClass("error"),!0}}const ti=100;class li extends Pe{constructor(){const t=new $e(new _e("cell",["cell"],"100%",(t=>D(`dataValidation.modeType.${t}`))),{required:!0},`${D("dataValidation.range")}:`,ti),l=new $e(new Ae("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),e=new $e(new _e("list",["list","number","date","phone","email"],"100%",(t=>D(`dataValidation.type.${t}`)),(t=>this.criteriaSelected(t))),{required:!0},`${D("dataValidation.criteria")}:`,ti),i=new $e(new _e("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",(t=>D(`dataValidation.operator.${t}`)),(t=>this.criteriaOperatorSelected(t))),{required:!0}).hide(),n=new $e(new Ae("70px","10"),{required:!0}).hide(),c=new $e(new Ae("70px","100"),{required:!0,type:"number"}).hide(),s=new $e(new Ae("120px","a,b,c"),{required:!0}),a=new $e(new Ae("70px","10"),{required:!0,type:"number"}).hide();super(D("contextmenu.validation"),[d("div",`${mt}-form-fields`).children(t.el,l.el),d("div",`${mt}-form-fields`).children(e.el,i.el,n.el,c.el,a.el,s.el),d("div",`${mt}-buttons`).children(new el("cancel").on("click",(()=>this.btnClick("cancel"))),new el("remove").on("click",(()=>this.btnClick("remove"))),new el("save","primary").on("click",(()=>this.btnClick("save"))))]),this.mf=t,this.rf=l,this.cf=e,this.of=i,this.minvf=n,this.maxvf=c,this.vf=a,this.svf=s,this.change=()=>{}}showVf(t){const l="date"===t?"2018-11-12":"10",{vf:e}=this;e.input.hint(l),e.show()}criteriaSelected(t){const{of:l,minvf:e,maxvf:i,vf:n,svf:c}=this;"date"===t||"number"===t?(l.show(),e.rule.type=t,i.rule.type=t,"date"===t?(e.hint("2018-11-12"),i.hint("2019-11-12")):(e.hint("10"),i.hint("100")),e.show(),i.show(),n.hide(),c.hide()):("list"===t?c.show():c.hide(),n.hide(),l.hide(),e.hide(),i.hide())}criteriaOperatorSelected(t){if(!t)return;const{minvf:l,maxvf:e,vf:i}=this;if("be"===t||"nbe"===t)l.show(),e.show(),i.hide();else{const t=this.cf.val();i.rule.type=t,"date"===t?i.hint("2018-11-12"):i.hint("10"),i.show(),l.hide(),e.hide()}}btnClick(t){if("cancel"===t)this.hide();else if("remove"===t)this.change("remove"),this.hide();else if("save"===t){const t=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let s=0;s<t.length;s+=1){const l=this[t[s]];if(l.isShow()&&!l.validate())return}const l=this.mf.val(),e=this.rf.val(),i=this.cf.val(),n=this.of.val();let c=this.svf.val();"number"!==i&&"date"!==i||(c="be"===n||"nbe"===n?[this.minvf.val(),this.maxvf.val()]:this.vf.val()),this.change("save",l,e,{type:i,operator:n,required:!1,value:c}),this.hide()}}setValue(t){if(t){const{mf:l,rf:e,cf:i,of:n,svf:c,vf:s,minvf:d,maxvf:a}=this,{mode:u,ref:o,validator:r}=t,{type:b,operator:h,value:Z}=r||{type:"list"};l.val(u||"cell"),e.val(o),i.val(b),n.val(h),Array.isArray(Z)?(d.val(Z[0]),a.val(Z[1])):(c.val(Z||""),s.val(Z||"")),this.criteriaSelected(b),this.criteriaOperatorSelected(h)}this.show()}}function ei(t){return d("div",`${mt}-item ${t}`)}function ii(t){return ei("state").child(D(`sort.${t}`)).on("click.stop",(()=>this.itemClick(t)))}function ni(t){const{filterbEl:l,filterValues:e}=this;l.html("");const i=Object.keys(t);i.forEach(((i,n)=>{const c=t[i],s=e.includes(i)?"checked":"";l.child(d("div",`${mt}-item state ${s}`).on("click.stop",(()=>this.filterClick(n,i))).children(""===i?D("filter.empty"):i,d("div","label").html(`(${c})`)))}))}function ci(){const{filterhEl:t,filterValues:l,values:e}=this;t.html(`${l.length} / ${e.length}`),t.checked(l.length===e.length)}class si{constructor(){this.filterbEl=d("div",`${mt}-body`),this.filterhEl=d("div",`${mt}-header state`).on("click.stop",(()=>this.filterClick(0,"all"))),this.el=d("div",`${mt}-sort-filter`).children(this.sortAscEl=ii.call(this,"asc"),this.sortDescEl=ii.call(this,"desc"),ei("divider"),d("div",`${mt}-filter`).children(this.filterhEl,this.filterbEl),d("div",`${mt}-buttons`).children(new el("cancel").on("click",(()=>this.btnClick("cancel"))),new el("ok","primary").on("click",(()=>this.btnClick("ok"))))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(t){if("ok"===t){const{ci:t,sort:l,filterValues:e}=this;this.ok&&this.ok(t,l,"in",e)}this.hide()}itemClick(t){this.sort=t;const{sortAscEl:l,sortDescEl:e}=this;l.checked("asc"===t),e.checked("desc"===t)}filterClick(t,l){const{filterbEl:e,filterValues:i,values:n}=this,c=e.children();if("all"===l)c.length===i.length?(this.filterValues=[],c.forEach((t=>d(t).checked(!1)))):(this.filterValues=Array.from(n),c.forEach((t=>d(t).checked(!0))));else{const e=d(c[t]).toggle("checked");e?i.push(l):i.splice(i.findIndex((t=>t===l)),1)}ci.call(this)}set(t,l,e,i){this.ci=t;const{sortAscEl:n,sortDescEl:c}=this;null!==i?(this.sort=i.order,n.checked(i.asc()),c.checked(i.desc())):(this.sortDesc=null,n.checked(!1),c.checked(!1)),this.values=Object.keys(l),this.filterValues=e?Array.from(e.value):Object.keys(l),ni.call(this,l,e),ci.call(this)}setOffset(t){this.el.offset(t).show();let l=1;ot(this.el,(()=>{l<=0&&this.hide(),l-=1}))}show(){this.el.show()}hide(){this.el.hide(),ut(this.el)}}function di(t,l){const e=d("div",`${mt}-toast`),i=d("div",`${mt}-dimmer active`),n=()=>{document.body.removeChild(e.el),document.body.removeChild(i.el)};e.children(d("div",`${mt}-toast-header`).children(new vt("close").on("click.stop",(()=>n())),t),d("div",`${mt}-toast-content`).html(l)),document.body.appendChild(e.el),document.body.appendChild(i.el);const{width:c,height:s}=e.box(),{clientHeight:a,clientWidth:u}=document.documentElement;e.offset({left:(u-c)/2,top:(a-s)/3})}function ai(t,l){let e;return(...i)=>{const n=this,c=i;e||(e=setTimeout((()=>{e=null,t.apply(n,c)}),l))}}function ui(){const{data:t,verticalScrollbar:l,horizontalScrollbar:e}=this,{l:i,t:n,left:c,top:s,width:d,height:a}=t.getSelectedRect(),u=this.getTableOffset();if(Math.abs(c)+d>u.width)e.move({left:i+d-u.width});else{const l=t.freezeTotalWidth();c<l&&e.move({left:i-1-l})}if(Math.abs(s)+a>u.height)l.move({top:n+a-u.height-1});else{const e=t.freezeTotalHeight();s<e&&l.move({top:n-1-e})}}function oi(t,l,e,i=!0,n=!1){if(-1===l&&-1===e)return;const{table:c,selector:s,toolbar:d,data:a,contextMenu:u}=this;u.setMode(-1===l||-1===e?"row-col":"range");const o=a.getCell(l,e);t?(s.setEnd(l,e,n),this.trigger("cells-selected",o,s.range)):(s.set(l,e,i),this.trigger("cell-selected",o,l,e)),d.reset(),c.render()}function ri(t,l){const{selector:e,data:i}=this,{rows:n,cols:c}=i;let[s,d]=e.indexes;const{eri:a,eci:u}=e.range;t&&([s,d]=e.moveIndexes),"left"===l?d>0&&(d-=1):"right"===l?(u!==d&&(d=u),d<c.len-1&&(d+=1)):"up"===l?s>0&&(s-=1):"down"===l?(a!==s&&(s=a),s<n.len-1&&(s+=1)):"row-first"===l?d=0:"row-last"===l?d=c.len-1:"col-first"===l?s=0:"col-last"===l&&(s=n.len-1),t&&(e.moveIndexes=[s,d]),oi.call(this,t,s,d),ui.call(this)}function bi(t){if(0!==t.buttons)return;if(t.target.className===`${mt}-resizer-hover`)return;const{offsetX:l,offsetY:e}=t,{rowResizer:i,colResizer:n,tableEl:c,data:s}=this,{rows:d,cols:a}=s;if(l>a.indexWidth&&e>d.height)return i.hide(),void n.hide();const u=c.box(),o=s.getCellRectByXY(t.offsetX,t.offsetY);o.ri>=0&&-1===o.ci?(o.width=a.indexWidth,i.show(o,{width:u.width}),d.isHide(o.ri-1)?i.showUnhide(o.ri):i.hideUnhide()):i.hide(),-1===o.ri&&o.ci>=0?(o.height=d.height,n.show(o,{height:u.height}),a.isHide(o.ci-1)?n.showUnhide(o.ci):n.hideUnhide()):n.hide()}function hi(t){const{verticalScrollbar:l,horizontalScrollbar:e,data:i}=this,{top:n}=l.scroll(),{left:c}=e.scroll(),{rows:s,cols:d}=i,{deltaY:a,deltaX:u}=t,o=(t,l)=>{let e=t,i=0;do{i=l(e),e+=1}while(i<=0);return i},r=t=>{if(t>0){const t=i.scroll.ri+1;if(t<s.len){const e=o(t,(t=>s.getHeight(t)));l.move({top:n+e-1})}}else{const t=i.scroll.ri-1;if(t>=0){const e=o(t,(t=>s.getHeight(t)));l.move({top:0===t?0:n-e})}}},b=t=>{if(t>0){const t=i.scroll.ci+1;if(t<d.len){const l=o(t,(t=>d.getWidth(t)));e.move({left:c+l-1})}}else{const t=i.scroll.ci-1;if(t>=0){const l=o(t,(t=>d.getWidth(t)));e.move({left:0===t?0:c-l})}}},h=Math.abs(a),Z=Math.abs(u),m=Math.max(h,Z);/Firefox/i.test(window.navigator.userAgent)&&ai(r(t.detail),50),m===Z&&ai(b(u),50),m===h&&ai(r(a),50)}function Zi(t,l){const{verticalScrollbar:e,horizontalScrollbar:i}=this,{top:n}=e.scroll(),{left:c}=i.scroll();"left"===t||"right"===t?i.move({left:c-l}):"up"!==t&&"down"!==t||e.move({top:n-l})}function mi(){const{data:t,verticalScrollbar:l}=this,{height:e}=this.getTableOffset(),i=t.exceptRowTotalHeight(0,-1);l.set(e,t.rows.totalHeight()-i)}function yi(){const{data:t,horizontalScrollbar:l}=this,{width:e}=this.getTableOffset();t&&l.set(e,t.cols.totalWidth())}function pi(){const{selector:t,data:l,editor:e}=this,[i,n]=l.freeze;if(i>0||n>0){const t=l.freezeTotalWidth(),i=l.freezeTotalHeight();e.setFreezeLengths(t,i)}t.resetAreaOffset()}function Wi(){const{tableEl:t,overlayerEl:l,overlayerCEl:e,table:i,toolbar:n,selector:c,el:s}=this,d=this.getTableOffset(),a=this.getRect();t.attr(a),l.offset(a),e.offset(d),s.css("width",`${a.width}px`),mi.call(this),yi.call(this),pi.call(this),i.render(),n.reset(),c.reset()}function Gi(){const{data:t,selector:l}=this;t.clearClipboard(),l.hideClipboard()}function Xi(){const{data:t,selector:l}=this;t.copy(),t.copyToSystemClipboard(),l.showClipboard()}function Yi(){const{data:t,selector:l}=this;t.cut(),l.showClipboard()}function Ni(t,l){const{data:e}=this;if("read"!==e.settings.mode)if(e.paste(t,(t=>di("Tip",t))))Wi.call(this);else if(l){const t=l.clipboardData.getData("text/plain");this.data.pasteFromText(t),Wi.call(this)}}function Vi(){this.data.hideRowsOrCols(),Wi.call(this)}function Mi(t,l){this.data.unhideRowsOrCols(t,l),Wi.call(this)}function Li(){const{data:t}=this;t.autofilter(),Wi.call(this)}function Ii(){const{toolbar:t}=this;t.paintformatActive()&&(Ni.call(this,"format"),Gi.call(this),t.paintformatToggle())}function wi(t){const{selector:l,data:e,table:i,sortFilter:n}=this,{offsetX:c,offsetY:s}=t,d=t.target.className===`${mt}-selector-corner`,a=e.getCellRectByXY(c,s),{left:u,top:o,width:r,height:b}=a;let{ri:h,ci:Z}=a;const{autoFilter:m}=e;if(m.includes(h,Z)&&u+r-20<c&&o+b-20<s){const t=m.items(Z,((t,l)=>e.rows.getCell(t,l)));return n.hide(),n.set(Z,t,m.getFilter(Z),m.getSort(Z)),void n.setOffset({left:u,top:o+b+2})}t.shiftKey||(d?l.showAutofill(h,Z):oi.call(this,!1,h,Z),rt(window,(t=>{({ri:h,ci:Z}=e.getCellRectByXY(t.offsetX,t.offsetY)),d?l.showAutofill(h,Z):1!==t.buttons||t.shiftKey||oi.call(this,!0,h,Z,!0,!0)}),(()=>{d&&l.arange&&"read"!==e.settings.mode&&e.autofill(l.arange,"all",(t=>di("Tip",t)))&&i.render(),l.hideAutofill(),Ii.call(this)}))),d||1!==t.buttons||t.shiftKey&&oi.call(this,!0,h,Z)}function fi(){const{editor:t,data:l}=this,e=l.getSelectedRect(),i=this.getTableOffset();let n="top";e.top>i.height/2&&(n="bottom"),t.setOffset(e,n)}function Ri(){const{editor:t,data:l}=this;"read"!==l.settings.mode&&(fi.call(this),t.setCell(l.getSelectedCell(),l.getSelectedValidator()),Gi.call(this))}function Ti(t){const{data:l,table:e,selector:i}=this;l.scrolly(t,(()=>{i.resetBRLAreaOffset(),fi.call(this),e.render()}))}function zi(t){const{data:l,table:e,selector:i}=this;l.scrollx(t,(()=>{i.resetBRTAreaOffset(),fi.call(this),e.render()}))}function xi(t,l){const{ri:e}=t,{table:i,selector:n,data:c}=this;c.rows.setHeight(e,l),i.render(),n.resetAreaOffset(),mi.call(this),fi.call(this)}function Si(t,l){const{ci:e}=t,{table:i,selector:n,data:c}=this;c.cols.setWidth(e,l),i.render(),n.resetAreaOffset(),yi.call(this),fi.call(this)}function ki(t,l="finished"){const{data:e,table:i}=this;if("read"===e.settings.mode)return;e.setSelectedCellText(t,l);const{ri:n,ci:c}=e.selector;"finished"===l?i.render():this.trigger("cell-edited",t,n,c)}function Ci(t){const{data:l}=this;"read"!==l.settings.mode&&("insert-row"===t?l.insert("row"):"delete-row"===t?l.delete("row"):"insert-column"===t?l.insert("column"):"delete-column"===t?l.delete("column"):"delete-cell"===t?l.deleteCell():"delete-cell-format"===t?l.deleteCell("format"):"delete-cell-text"===t?l.deleteCell("text"):"cell-printable"===t?l.setSelectedCellAttr("printable",!0):"cell-non-printable"===t?l.setSelectedCellAttr("printable",!1):"cell-editable"===t?l.setSelectedCellAttr("editable",!0):"cell-non-editable"===t&&l.setSelectedCellAttr("editable",!1),Gi.call(this),Wi.call(this))}function Ji(t,l){const{data:e}=this;if("undo"===t)this.undo();else if("redo"===t)this.redo();else if("print"===t)this.print.preview();else if("paintformat"===t)!0===l?Xi.call(this):Gi.call(this);else if("clearformat"===t)Ci.call(this,"delete-cell-format");else if("link"===t);else if("chart"===t);else if("autofilter"===t)Li.call(this);else if("freeze"===t)if(l){const{ri:t,ci:l}=e.selector;this.freeze(t,l)}else this.freeze(0,0);else e.setSelectedCellAttr(t,l),"formula"!==t||e.selector.multiple()||Ri.call(this),Wi.call(this)}function gi(t,l,e,i){this.data.setAutoFilter(t,l,e,i),Wi.call(this)}function Fi(){const{selector:t,overlayerEl:l,rowResizer:e,colResizer:i,verticalScrollbar:n,horizontalScrollbar:c,editor:s,contextMenu:d,toolbar:a,modalValidation:u,sortFilter:o}=this;l.on("mousemove",(t=>{bi.call(this,t)})).on("mousedown",(t=>{s.clear(),d.hide(),2===t.buttons?(this.data.xyInSelectedRect(t.offsetX,t.offsetY)||wi.call(this,t),d.setPosition(t.offsetX,t.offsetY),t.stopPropagation()):2===t.detail?Ri.call(this):wi.call(this,t)})).on("mousewheel.stop",(t=>{hi.call(this,t)})).on("mouseout",(t=>{const{offsetX:l,offsetY:n}=t;n<=0&&i.hide(),l<=0&&e.hide()})),t.inputChange=t=>{ki.call(this,t,"input"),Ri.call(this)},ht(l.el,{move:(t,l)=>{Zi.call(this,t,l)}}),a.change=(t,l)=>Ji.call(this,t,l),o.ok=(t,l,e,i)=>gi.call(this,t,l,e,i),e.finishedFn=(t,l)=>{xi.call(this,t,l)},i.finishedFn=(t,l)=>{Si.call(this,t,l)},e.unhideFn=t=>{Mi.call(this,"row",t)},i.unhideFn=t=>{Mi.call(this,"col",t)},n.moveFn=(t,l)=>{Ti.call(this,t,l)},c.moveFn=(t,l)=>{zi.call(this,t,l)},s.change=(t,l)=>{ki.call(this,l,t)},u.change=(t,...l)=>{"save"===t?this.data.addValidation(...l):this.data.removeValidation()},d.itemClick=t=>{"validation"===t?u.setValue(this.data.getSelectedValidation()):"copy"===t?Xi.call(this):"cut"===t?Yi.call(this):"paste"===t?Ni.call(this,"all"):"paste-value"===t?Ni.call(this,"text"):"paste-format"===t?Ni.call(this,"format"):"hide"===t?Vi.call(this):Ci.call(this,t)},dt(window,"resize",(()=>{this.reload()})),dt(window,"click",(t=>{this.focusing=l.contains(t.target)})),dt(window,"paste",(t=>{this.focusing&&(Ni.call(this,"all",t),t.preventDefault())})),dt(window,"keydown",(t=>{if(!this.focusing)return;const l=t.keyCode||t.which,{key:e,ctrlKey:i,shiftKey:n,metaKey:c}=t;if(i||c)switch(l){case 90:this.undo(),t.preventDefault();break;case 89:this.redo(),t.preventDefault();break;case 67:Xi.call(this),t.preventDefault();break;case 88:Yi.call(this),t.preventDefault();break;case 85:a.trigger("underline"),t.preventDefault();break;case 86:break;case 37:ri.call(this,n,"row-first"),t.preventDefault();break;case 38:ri.call(this,n,"col-first"),t.preventDefault();break;case 39:ri.call(this,n,"row-last"),t.preventDefault();break;case 40:ri.call(this,n,"col-last"),t.preventDefault();break;case 32:oi.call(this,!1,-1,this.data.selector.ci,!1),t.preventDefault();break;case 66:a.trigger("bold");break;case 73:a.trigger("italic");break;default:break}else{switch(l){case 32:n&&oi.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:d.hide(),Gi.call(this);break;case 37:ri.call(this,n,"left"),t.preventDefault();break;case 38:ri.call(this,n,"up"),t.preventDefault();break;case 39:ri.call(this,n,"right"),t.preventDefault();break;case 40:ri.call(this,n,"down"),t.preventDefault();break;case 9:s.clear(),ri.call(this,!1,n?"left":"right"),t.preventDefault();break;case 13:s.clear(),ri.call(this,!1,n?"up":"down"),t.preventDefault();break;case 8:Ci.call(this,"delete-cell-text"),t.preventDefault();break;default:break}"Delete"===e?(Ci.call(this,"delete-cell-text"),t.preventDefault()):l>=65&&l<=90||l>=48&&l<=57||l>=96&&l<=105||"="===t.key?(ki.call(this,t.key,"input"),Ri.call(this)):113===l&&Ri.call(this)}}))}class ji{constructor(t,l){this.eventMap=Zt();const{view:e,showToolbar:i,showContextmenu:n}=l.settings;this.el=d("div",`${mt}-sheet`),this.toolbar=new Be(l,e.width,!i),this.print=new Hl(l),t.children(this.toolbar.el,this.el,this.print.el),this.data=l,this.tableEl=d("canvas",`${mt}-table`),this.rowResizer=new yt(!1,l.rows.height),this.colResizer=new yt(!0,l.cols.minWidth),this.verticalScrollbar=new pt(!0),this.horizontalScrollbar=new pt(!1),this.editor=new ll(Gl,(()=>this.getTableOffset()),l.rows.height),this.modalValidation=new li,this.contextMenu=new Al((()=>this.getRect()),!n),this.selector=new kt(l),this.overlayerCEl=d("div",`${mt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=d("div",`${mt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new si,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new jl(this.tableEl.el,l),Fi.call(this),Wi.call(this),oi.call(this,!1,0,0)}on(t,l){return this.eventMap.on(t,l),this}trigger(t,...l){const{eventMap:e}=this;e.fire(t,l)}resetData(t){this.editor.clear(),this.data=t,mi.call(this),yi.call(this),this.toolbar.resetData(t),this.print.resetData(t),this.selector.resetData(t),this.table.resetData(t)}loadData(t){return this.data.setData(t),Wi.call(this),this}freeze(t,l){const{data:e}=this;return e.setFreeze(t,l),Wi.call(this),this}undo(){this.data.undo(),Wi.call(this)}redo(){this.data.redo(),Wi.call(this)}reload(){return Wi.call(this),this}getRect(){const{data:t}=this;return{width:t.viewWidth(),height:t.viewHeight()}}getTableOffset(){const{rows:t,cols:l}=this.data,{width:e,height:i}=this.getRect();return{width:e-l.indexWidth,height:i-t.height,left:l.indexWidth,top:t.height}}}class vi extends te{constructor(t){const l=new vt("ellipsis");super(l,"auto",!1,"top-left"),this.contentClick=t}reset(t){const l=t.map(((t,l)=>d("div",`${mt}-item`).css("width","150px").css("font-weight","normal").on("click",(()=>{this.contentClick(l),this.hide()})).child(t)));this.setContentChildren(...l)}setTitle(){}}const Di=[{key:"delete",title:U("contextmenu.deleteSheet")}];function Ui(t){return d("div",`${mt}-item`).child(t.title()).on("click",(()=>{this.itemClick(t.key),this.hide()}))}function Oi(){return Di.map((t=>Ui.call(this,t)))}class Ki{constructor(){this.el=d("div",`${mt}-contextmenu`).css("width","160px").children(...Oi.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:t}=this;t.hide(),ut(t)}setOffset(t){const{el:l}=this;l.offset(t),l.show(),ot(l)}}class Ei{constructor(t=(()=>{}),l=(()=>{}),e=(()=>{}),i=(()=>{})){this.swapFunc=l,this.updateFunc=i,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new vi((t=>{this.clickSwap2(this.items[t])})),this.contextMenu=new Ki,this.contextMenu.itemClick=e,this.el=d("div",`${mt}-bottombar`).children(this.contextMenu.el,this.menuEl=d("ul",`${mt}-menu`).child(d("li","").children(new vt("add").on("click",(()=>{t()})),d("span","").child(this.moreEl))))}addItem(t,l){this.dataNames.push(t);const e=d("li",l?"active":"").child(t);e.on("click",(()=>{this.clickSwap2(e)})).on("contextmenu",(t=>{const{offsetLeft:l,offsetHeight:i}=t.target;this.contextMenu.setOffset({left:l,bottom:i+1}),this.deleteEl=e})).on("dblclick",(()=>{const t=e.html(),l=new Ae("auto","");l.val(t),l.input.on("blur",(({target:l})=>{const{value:e}=l,i=this.dataNames.findIndex((l=>l===t));this.renameItem(i,e)})),e.html("").child(l.el),l.focus()})),l&&this.clickSwap(e),this.items.push(e),this.menuEl.child(e),this.moreEl.reset(this.dataNames)}renameItem(t,l){this.dataNames.splice(t,1,l),this.moreEl.reset(this.dataNames),this.items[t].html("").child(l),this.updateFunc(t,l)}clear(){this.items.forEach((t=>{this.menuEl.removeChild(t.el)})),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:t,deleteEl:l}=this;if(this.items.length>1){const e=this.items.findIndex((t=>t===l));if(this.items.splice(e,1),this.dataNames.splice(e,1),this.menuEl.removeChild(l.el),this.moreEl.reset(this.dataNames),t===l){const[t]=this.items;return this.activeEl=t,this.activeEl.toggle(),[e,0]}return[e,-1]}return[-1]}clickSwap2(t){const l=this.items.findIndex((l=>l===t));this.clickSwap(t),this.activeEl.toggle(),this.swapFunc(l)}clickSwap(t){null!==this.activeEl&&this.activeEl.toggle(),this.activeEl=t}}class Hi{constructor(t,l={}){let e=t;this.options={showBottomBar:!0,...l},this.sheetIndex=1,this.datas=[],"string"===typeof t&&(e=document.querySelector(t)),this.bottombar=this.options.showBottomBar?new Ei((()=>{const t=this.addSheet();this.sheet.resetData(t)}),(t=>{const l=this.datas[t];this.sheet.resetData(l)}),(()=>{this.deleteSheet()}),((t,l)=>{this.datas[t].name=l})):null,this.data=this.addSheet();const i=d("div",`${mt}`).on("contextmenu",(t=>t.preventDefault()));e.appendChild(i.el),this.sheet=new ji(i,this.data),null!==this.bottombar&&i.child(this.bottombar.el)}addSheet(t,l=!0){const e=t||`sheet${this.sheetIndex}`,i=new st(e,this.options);return i.change=(...t)=>{this.sheet.trigger("change",...t)},this.datas.push(i),null!==this.bottombar&&this.bottombar.addItem(e,l),this.sheetIndex+=1,i}deleteSheet(){if(null===this.bottombar)return;const[t,l]=this.bottombar.deleteItem();t>=0&&(this.datas.splice(t,1),l>=0&&this.sheet.resetData(this.datas[l]))}loadData(t){const l=Array.isArray(t)?t:[t];if(null!==this.bottombar&&this.bottombar.clear(),this.datas=[],l.length>0)for(let e=0;e<l.length;e+=1){const t=l[e],i=this.addSheet(t.name,0===e);i.setData(t),0===e&&this.sheet.resetData(i)}return this}getData(){return this.datas.map((t=>t.getData()))}cellText(t,l,e,i=0){return this.datas[i].setCellText(t,l,e,"finished"),this}cell(t,l,e=0){return this.datas[e].getCell(t,l)}cellStyle(t,l,e=0){return this.datas[e].getCellStyle(t,l)}reRender(){return this.sheet.table.render(),this}on(t,l){return this.sheet.on(t,l),this}validate(){const{validations:t}=this.data;return t.errors.size<=0}change(t){return this.sheet.on("change",t),this}static locale(t,l){O(t,l)}}const Qi=(t,l={})=>new Hi(t,l);window&&(window.x_spreadsheet=Qi,window.x_spreadsheet.locale=(t,l)=>O(t,l));var Bi=Hi,Pi=e(550),Ai=e.n(Pi),_i=e(715);const qi=/^\s+/,$i=/\s+$/;function tn(t,l){if(t=t||"",l=l||{},t instanceof tn)return t;if(!(this instanceof tn))return new tn(t,l);var e=ln(t);this._originalInput=t,this._r=e.r,this._g=e.g,this._b=e.b,this._a=e.a,this._roundA=Math.round(100*this._a)/100,this._format=l.format||e.format,this._gradientType=l.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=e.ok}function ln(t){var l={r:0,g:0,b:0},e=1,i=null,n=null,c=null,s=!1,d=!1;return"string"==typeof t&&(t=Fn(t)),"object"==typeof t&&(gn(t.r)&&gn(t.g)&&gn(t.b)?(l=en(t.r,t.g,t.b),s=!0,d="%"===String(t.r).substr(-1)?"prgb":"rgb"):gn(t.h)&&gn(t.s)&&gn(t.v)?(i=Sn(t.s),n=Sn(t.v),l=dn(t.h,i,n),s=!0,d="hsv"):gn(t.h)&&gn(t.s)&&gn(t.l)&&(i=Sn(t.s),c=Sn(t.l),l=cn(t.h,i,c),s=!0,d="hsl"),t.hasOwnProperty("a")&&(e=t.a)),e=In(e),{ok:s,format:t.format||d,r:Math.min(255,Math.max(l.r,0)),g:Math.min(255,Math.max(l.g,0)),b:Math.min(255,Math.max(l.b,0)),a:e}}function en(t,l,e){return{r:255*wn(t,255),g:255*wn(l,255),b:255*wn(e,255)}}function nn(t,l,e){t=wn(t,255),l=wn(l,255),e=wn(e,255);var i,n,c=Math.max(t,l,e),s=Math.min(t,l,e),d=(c+s)/2;if(c==s)i=n=0;else{var a=c-s;switch(n=d>.5?a/(2-c-s):a/(c+s),c){case t:i=(l-e)/a+(l<e?6:0);break;case l:i=(e-t)/a+2;break;case e:i=(t-l)/a+4;break}i/=6}return{h:i,s:n,l:d}}function cn(t,l,e){var i,n,c;function s(t,l,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+6*(l-t)*e:e<.5?l:e<2/3?t+(l-t)*(2/3-e)*6:t}if(t=wn(t,360),l=wn(l,100),e=wn(e,100),0===l)i=n=c=e;else{var d=e<.5?e*(1+l):e+l-e*l,a=2*e-d;i=s(a,d,t+1/3),n=s(a,d,t),c=s(a,d,t-1/3)}return{r:255*i,g:255*n,b:255*c}}function sn(t,l,e){t=wn(t,255),l=wn(l,255),e=wn(e,255);var i,n,c=Math.max(t,l,e),s=Math.min(t,l,e),d=c,a=c-s;if(n=0===c?0:a/c,c==s)i=0;else{switch(c){case t:i=(l-e)/a+(l<e?6:0);break;case l:i=(e-t)/a+2;break;case e:i=(t-l)/a+4;break}i/=6}return{h:i,s:n,v:d}}function dn(t,l,e){t=6*wn(t,360),l=wn(l,100),e=wn(e,100);var i=Math.floor(t),n=t-i,c=e*(1-l),s=e*(1-n*l),d=e*(1-(1-n)*l),a=i%6,u=[e,s,c,c,d,e][a],o=[d,e,e,s,c,c][a],r=[c,c,d,e,e,s][a];return{r:255*u,g:255*o,b:255*r}}function an(t,l,e,i){var n=[xn(Math.round(t).toString(16)),xn(Math.round(l).toString(16)),xn(Math.round(e).toString(16))];return i&&n[0].charAt(0)==n[0].charAt(1)&&n[1].charAt(0)==n[1].charAt(1)&&n[2].charAt(0)==n[2].charAt(1)?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0):n.join("")}function un(t,l,e,i,n){var c=[xn(Math.round(t).toString(16)),xn(Math.round(l).toString(16)),xn(Math.round(e).toString(16)),xn(kn(i))];return n&&c[0].charAt(0)==c[0].charAt(1)&&c[1].charAt(0)==c[1].charAt(1)&&c[2].charAt(0)==c[2].charAt(1)&&c[3].charAt(0)==c[3].charAt(1)?c[0].charAt(0)+c[1].charAt(0)+c[2].charAt(0)+c[3].charAt(0):c.join("")}function on(t,l,e,i){var n=[xn(kn(i)),xn(Math.round(t).toString(16)),xn(Math.round(l).toString(16)),xn(Math.round(e).toString(16))];return n.join("")}function rn(t,l){l=0===l?0:l||10;var e=tn(t).toHsl();return e.s-=l/100,e.s=fn(e.s),tn(e)}function bn(t,l){l=0===l?0:l||10;var e=tn(t).toHsl();return e.s+=l/100,e.s=fn(e.s),tn(e)}function hn(t){return tn(t).desaturate(100)}function Zn(t,l){l=0===l?0:l||10;var e=tn(t).toHsl();return e.l+=l/100,e.l=fn(e.l),tn(e)}function mn(t,l){l=0===l?0:l||10;var e=tn(t).toRgb();return e.r=Math.max(0,Math.min(255,e.r-Math.round(-l/100*255))),e.g=Math.max(0,Math.min(255,e.g-Math.round(-l/100*255))),e.b=Math.max(0,Math.min(255,e.b-Math.round(-l/100*255))),tn(e)}function yn(t,l){l=0===l?0:l||10;var e=tn(t).toHsl();return e.l-=l/100,e.l=fn(e.l),tn(e)}function pn(t,l){var e=tn(t).toHsl(),i=(e.h+l)%360;return e.h=i<0?360+i:i,tn(e)}function Wn(t){var l=tn(t).toHsl();return l.h=(l.h+180)%360,tn(l)}function Gn(t,l){if(isNaN(l)||l<=0)throw new Error("Argument to polyad must be a positive number");for(var e=tn(t).toHsl(),i=[tn(t)],n=360/l,c=1;c<l;c++)i.push(tn({h:(e.h+c*n)%360,s:e.s,l:e.l}));return i}function Xn(t){var l=tn(t).toHsl(),e=l.h;return[tn(t),tn({h:(e+72)%360,s:l.s,l:l.l}),tn({h:(e+216)%360,s:l.s,l:l.l})]}function Yn(t,l,e){l=l||6,e=e||30;var i=tn(t).toHsl(),n=360/e,c=[tn(t)];for(i.h=(i.h-(n*l>>1)+720)%360;--l;)i.h=(i.h+n)%360,c.push(tn(i));return c}function Nn(t,l){l=l||6;var e=tn(t).toHsv(),i=e.h,n=e.s,c=e.v,s=[],d=1/l;while(l--)s.push(tn({h:i,s:n,v:c})),c=(c+d)%1;return s}tn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,l,e,i,n,c,s=this.toRgb();return t=s.r/255,l=s.g/255,e=s.b/255,i=t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4),n=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),c=e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4),.2126*i+.7152*n+.0722*c},setAlpha:function(t){return this._a=In(t),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var t=sn(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=sn(this._r,this._g,this._b),l=Math.round(360*t.h),e=Math.round(100*t.s),i=Math.round(100*t.v);return 1==this._a?"hsv("+l+", "+e+"%, "+i+"%)":"hsva("+l+", "+e+"%, "+i+"%, "+this._roundA+")"},toHsl:function(){var t=nn(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=nn(this._r,this._g,this._b),l=Math.round(360*t.h),e=Math.round(100*t.s),i=Math.round(100*t.l);return 1==this._a?"hsl("+l+", "+e+"%, "+i+"%)":"hsla("+l+", "+e+"%, "+i+"%, "+this._roundA+")"},toHex:function(t){return an(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return un(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*wn(this._r,255))+"%",g:Math.round(100*wn(this._g,255))+"%",b:Math.round(100*wn(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*wn(this._r,255))+"%, "+Math.round(100*wn(this._g,255))+"%, "+Math.round(100*wn(this._b,255))+"%)":"rgba("+Math.round(100*wn(this._r,255))+"%, "+Math.round(100*wn(this._g,255))+"%, "+Math.round(100*wn(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(Mn[an(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var l="#"+on(this._r,this._g,this._b,this._a),e=l,i=this._gradientType?"GradientType = 1, ":"";if(t){var n=tn(t);e="#"+on(n._r,n._g,n._b,n._a)}return"progid:DXImageTransform.Microsoft.gradient("+i+"startColorstr="+l+",endColorstr="+e+")"},toString:function(t){var l=!!t;t=t||this._format;var e=!1,i=this._a<1&&this._a>=0,n=!l&&i&&("hex"===t||"hex6"===t||"hex3"===t||"hex4"===t||"hex8"===t||"name"===t);return n?"name"===t&&0===this._a?this.toName():this.toRgbString():("rgb"===t&&(e=this.toRgbString()),"prgb"===t&&(e=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(e=this.toHexString()),"hex3"===t&&(e=this.toHexString(!0)),"hex4"===t&&(e=this.toHex8String(!0)),"hex8"===t&&(e=this.toHex8String()),"name"===t&&(e=this.toName()),"hsl"===t&&(e=this.toHslString()),"hsv"===t&&(e=this.toHsvString()),e||this.toHexString())},clone:function(){return tn(this.toString())},_applyModification:function(t,l){var e=t.apply(null,[this].concat([].slice.call(l)));return this._r=e._r,this._g=e._g,this._b=e._b,this.setAlpha(e._a),this},lighten:function(){return this._applyModification(Zn,arguments)},brighten:function(){return this._applyModification(mn,arguments)},darken:function(){return this._applyModification(yn,arguments)},desaturate:function(){return this._applyModification(rn,arguments)},saturate:function(){return this._applyModification(bn,arguments)},greyscale:function(){return this._applyModification(hn,arguments)},spin:function(){return this._applyModification(pn,arguments)},_applyCombination:function(t,l){return t.apply(null,[this].concat([].slice.call(l)))},analogous:function(){return this._applyCombination(Yn,arguments)},complement:function(){return this._applyCombination(Wn,arguments)},monochromatic:function(){return this._applyCombination(Nn,arguments)},splitcomplement:function(){return this._applyCombination(Xn,arguments)},triad:function(){return this._applyCombination(Gn,[3])},tetrad:function(){return this._applyCombination(Gn,[4])}},tn.fromRatio=function(t,l){if("object"==typeof t){var e={};for(var i in t)t.hasOwnProperty(i)&&(e[i]="a"===i?t[i]:Sn(t[i]));t=e}return tn(t,l)},tn.equals=function(t,l){return!(!t||!l)&&tn(t).toRgbString()==tn(l).toRgbString()},tn.random=function(){return tn.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},tn.mix=function(t,l,e){e=0===e?0:e||50;var i=tn(t).toRgb(),n=tn(l).toRgb(),c=e/100,s={r:(n.r-i.r)*c+i.r,g:(n.g-i.g)*c+i.g,b:(n.b-i.b)*c+i.b,a:(n.a-i.a)*c+i.a};return tn(s)},tn.readability=function(t,l){var e=tn(t),i=tn(l);return(Math.max(e.getLuminance(),i.getLuminance())+.05)/(Math.min(e.getLuminance(),i.getLuminance())+.05)},tn.isReadable=function(t,l,e){var i,n,c=tn.readability(t,l);switch(n=!1,i=jn(e),i.level+i.size){case"AAsmall":case"AAAlarge":n=c>=4.5;break;case"AAlarge":n=c>=3;break;case"AAAsmall":n=c>=7;break}return n},tn.mostReadable=function(t,l,e){var i,n,c,s,d=null,a=0;e=e||{},n=e.includeFallbackColors,c=e.level,s=e.size;for(var u=0;u<l.length;u++)i=tn.readability(t,l[u]),i>a&&(a=i,d=tn(l[u]));return tn.isReadable(t,d,{level:c,size:s})||!n?d:(e.includeFallbackColors=!1,tn.mostReadable(t,["#fff","#000"],e))};var Vn=tn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Mn=tn.hexNames=Ln(Vn);function Ln(t){var l={};for(var e in t)t.hasOwnProperty(e)&&(l[t[e]]=e);return l}function In(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function wn(t,l){Tn(t)&&(t="100%");var e=zn(t);return t=Math.min(l,Math.max(0,parseFloat(t))),e&&(t=parseInt(t*l,10)/100),Math.abs(t-l)<1e-6?1:t%l/parseFloat(l)}function fn(t){return Math.min(1,Math.max(0,t))}function Rn(t){return parseInt(t,16)}function Tn(t){return"string"==typeof t&&-1!=t.indexOf(".")&&1===parseFloat(t)}function zn(t){return"string"===typeof t&&-1!=t.indexOf("%")}function xn(t){return 1==t.length?"0"+t:""+t}function Sn(t){return t<=1&&(t=100*t+"%"),t}function kn(t){return Math.round(255*parseFloat(t)).toString(16)}function Cn(t){return Rn(t)/255}var Jn=function(){var t="[-\\+]?\\d+%?",l="[-\\+]?\\d*\\.\\d+%?",e="(?:"+l+")|(?:"+t+")",i="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?",n="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?";return{CSS_UNIT:new RegExp(e),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+n),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+n),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+n),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function gn(t){return!!Jn.CSS_UNIT.exec(t)}function Fn(t){t=t.replace(qi,"").replace($i,"").toLowerCase();var l,e=!1;if(Vn[t])t=Vn[t],e=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};return(l=Jn.rgb.exec(t))?{r:l[1],g:l[2],b:l[3]}:(l=Jn.rgba.exec(t))?{r:l[1],g:l[2],b:l[3],a:l[4]}:(l=Jn.hsl.exec(t))?{h:l[1],s:l[2],l:l[3]}:(l=Jn.hsla.exec(t))?{h:l[1],s:l[2],l:l[3],a:l[4]}:(l=Jn.hsv.exec(t))?{h:l[1],s:l[2],v:l[3]}:(l=Jn.hsva.exec(t))?{h:l[1],s:l[2],v:l[3],a:l[4]}:(l=Jn.hex8.exec(t))?{r:Rn(l[1]),g:Rn(l[2]),b:Rn(l[3]),a:Cn(l[4]),format:e?"name":"hex8"}:(l=Jn.hex6.exec(t))?{r:Rn(l[1]),g:Rn(l[2]),b:Rn(l[3]),format:e?"name":"hex"}:(l=Jn.hex4.exec(t))?{r:Rn(l[1]+""+l[1]),g:Rn(l[2]+""+l[2]),b:Rn(l[3]+""+l[3]),a:Cn(l[4]+""+l[4]),format:e?"name":"hex8"}:!!(l=Jn.hex3.exec(t))&&{r:Rn(l[1]+""+l[1]),g:Rn(l[2]+""+l[2]),b:Rn(l[3]+""+l[3]),format:e?"name":"hex"}}function jn(t){var l,e;return t=t||{level:"AA",size:"small"},l=(t.level||"AA").toUpperCase(),e=(t.size||"small").toLowerCase(),"AA"!==l&&"AAA"!==l&&(l="AA"),"small"!==e&&"large"!==e&&(e="small"),{level:l,size:e}}function vn(t,l={}){return"string"===typeof t?Dn(t,l):Promise.resolve(t)}function Dn(t,l){return fetch(t,l).then((t=>t.arrayBuffer()))}var Un={name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},watch:{src(t){t?vn(t).then(this.renderExcel).catch((t=>{this.$emit("error",t)})):this.xs.loadData({})}},mounted(){this.xs=new Bi(this.$refs["vue-office-excel"],{mode:"read",showToolbar:!1}).loadData({}),this.src&&vn(this.src).then(this.renderExcel).catch((t=>{this.$emit("error",t)}))},methods:{renderExcel(t){try{const l=new _i.Workbook;l.xlsx.load(t).then((t=>{let l=[];t.eachSheet((t=>{let e={name:t.name,styles:[],rows:{},merges:[]},i=[];for(let l in t._merges){e.merges.push(t._merges[l].shortRange);let n={};n.startAddress=t._merges[l].tl,n.endAddress=t._merges[l].br,n.YRange=t._merges[l].model.bottom-t._merges[l].model.top,n.XRange=t._merges[l].model.right-t._merges[l].model.left,i.push(n)}e.cols={};for(let l=0;l<t.columns.length;l++)e.cols[l.toString()]={},t.columns[l].width?e.cols[l.toString()].width=8*t.columns[l].width:e.cols[l.toString()].width=100;t.eachRow(((t,l)=>{e.rows[(l-1).toString()]={cells:{}},t.eachCell({includeEmpty:!0},(function(t,n){let c="";if(t.value&&t.value.result)c=t.value.result;else if(t.value&&t.value.richText)for(let l in t.value.richText)c+=t.value.richText[l].text;else c=t.value;let s=null;t.style.fill&&t.style.fill.fgColor&&t.style.fill.fgColor.argb&&(s=(t=>{t=t.trim().toLowerCase();let l={};try{let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return l.r=parseInt(e[2],16),l.g=parseInt(e[3],16),l.b=parseInt(e[4],16),l.a=parseInt(e[1],16)/255,tn(`rgba(${l.r}, ${l.g}, ${l.b}, ${l.a})`).toHexString()}catch(e){}})(t.style.fill.fgColor.argb)),s&&(t.style.bgcolor=s);let d=null;t.style.font&&t.style.font.color&&t.style.font.color.argb&&(d=(t=>{t=t.trim().toLowerCase();let l={};try{let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return l.r=parseInt(e[2],16),l.g=parseInt(e[3],16),l.b=parseInt(e[4],16),l.a=parseInt(e[1],16)/255,tn(`rgba(${l.r}, ${l.g}, ${l.b}, ${l.a})`).toHexString()}catch(e){}})(t.style.font.color.argb)),d&&(t.style.color=d),t.style.alignment&&t.style.alignment.horizontal&&(t.style.align=t.style.alignment.horizontal,t.style.valign=t.style.alignment.vertical);let a=Ai().find(i,(function(l){return l.startAddress==t._address}));if(a){if(t.master.address!=a.startAddress)return;e.rows[(l-1).toString()].cells[(n-1).toString()]={text:c,style:0,merge:[a.YRange,a.XRange]},e.styles.push(t.style),e.rows[(l-1).toString()].cells[(n-1).toString()].style=e.styles.length-1}else e.rows[(l-1).toString()].cells[(n-1).toString()]={text:c,style:0},e.styles.push(t.style),e.rows[(l-1).toString()].cells[(n-1).toString()].style=e.styles.length-1}))})),l.push(e)})),this.xs.loadData(l),this.$emit("rendered")}))}catch(l){this.$emit("error",l)}}}},On=Un;function Kn(t,l,e,i,n,c,s,d){var a,u="function"===typeof t?t.options:t;if(l&&(u.render=l,u.staticRenderFns=e,u._compiled=!0),i&&(u.functional=!0),c&&(u._scopeId="data-v-"+c),s?(a=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},u._ssrRegister=a):n&&(a=d?function(){n.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:n),a)if(u.functional){u._injectStyles=a;var o=u.render;u.render=function(t,l){return a.call(l),o(t,l)}}else{var r=u.beforeCreate;u.beforeCreate=r?[].concat(r,a):[a]}return{exports:t,options:u}}var En=Kn(On,n,c,!1,null,"26793b35",null),Hn=En.exports;Hn.install=function(t){t.component(Hn.name,Hn)};var Qn=Hn,Bn=Qn}(),i}()}))},6779:function(t){(function(l,e){t.exports=e()})("undefined"!==typeof self&&self,(function(){return function(){"use strict";var t={};!function(){t.d=function(l,e){for(var i in e)t.o(e,i)&&!t.o(l,i)&&Object.defineProperty(l,i,{enumerable:!0,get:e[i]})}}(),function(){t.o=function(t,l){return Object.prototype.hasOwnProperty.call(t,l)}}(),function(){t.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){t.p=""}();var l={};if(t.r(l),t.d(l,{default:function(){return p}}),"undefined"!==typeof window){var e=window.document.currentScript,i=e&&e.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(t.p=i[1])}var n=function(){var t=this,l=t._self._c;return l("div",{ref:"vue-office-pdf",staticClass:"vue-office-pdf",staticStyle:{"text-align":"center"}},[t.numPages?l("div",{staticClass:"vue-office-pdf-wrapper",staticStyle:{background:"gray",padding:"30px 0",position:"relative"}},t._l(t.numPages,(function(t){return l("canvas",{key:t,ref:"canvas"+t,refInFor:!0})})),0):t._e()])},c=[];const s="LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNiksbz1hKDY5KSxjPWEoNjMpLGw9YSgxMDApLGg9YSgxMDEpLHU9YSgxMDIpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19dC5Xb3JrZXJUYXNrPVdvcmtlclRhc2s7Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uIHdwaFNldHVwVGVzdCh0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24gd3BoQ29uZmlndXJlKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBEb2MoZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPVtdLHA9KDAsci5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6bSxhcGlWZXJzaW9uOmJ9PWUseT0iMy4wLjI3OSI7aWYoYiE9PXkpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Yn0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiMy4wLjI3OSIuYCk7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBpbltdKXcucHVzaChlKTtpZih3Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit3LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVhZGFibGVTdHJlYW0pe2NvbnN0IGU9IlRoZSBicm93c2VyL2Vudmlyb25tZW50IGxhY2tzIG5hdGl2ZSBzdXBwb3J0IGZvciBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgdGhlIFBERi5qcyBsaWJyYXJ5IChlLmcuIGBSZWFkYWJsZVN0cmVhbWApOyAiO2lmKGwuaXNOb2RlSlMpdGhyb3cgbmV3IEVycm9yKGUrInBsZWFzZSB1c2UgYSBgbGVnYWN5YC1idWlsZCBpbnN0ZWFkLiIpO3Rocm93IG5ldyBFcnJvcihlKyJwbGVhc2UgdXBkYXRlIHRvIGEgc3VwcG9ydGVkIGJyb3dzZXIuIil9Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5wdXNoKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtjb25zdCB0PWcuaW5kZXhPZihlKTtnLnNwbGljZSh0LDEpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm4sbGVuZ3RoOmksZG9jQmFzZVVybDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDtpZihlKXt0cnl7ZD1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIobSxlLHQseCxsLGMsbyk7aC5yZXNvbHZlKGQpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IGcscD1bXTt0cnl7Zz1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBiPWcuZ2V0RnVsbFJlYWRlcigpO2IuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoYi5pc1JhbmdlU3VwcG9ydGVkKXthPWF8fGIuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7ZD1uZXcgcy5OZXR3b3JrUGRmTWFuYWdlcihtLGcse21zZ0hhbmRsZXI6eCxwYXNzd29yZDp0LGxlbmd0aDpiLmNvbnRlbnRMZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm59LGwsYyxvKTtmb3IoY29uc3QgZSBvZiBwKWQuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtwPVtdO2gucmVzb2x2ZShkKTtmPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtmPW51bGx9KSk7bGV0IHk9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTpufSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKXtkfHxmdW5jdGlvbigpe2NvbnN0IGU9KDAsci5hcnJheXNUb0J5dGVzKShwKTtpJiZlLmxlbmd0aCE9PWkmJigwLHIud2FybikoInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtkPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihtLGUsdCx4LGwsYyxvKTtoLnJlc29sdmUoZCl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cD1bXX0oKTtmPW51bGw7cmV0dXJufXkrPSgwLHIuYXJyYXlCeXRlTGVuZ3RoKShlKTtiLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHx4LnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnksdG90YWw6TWF0aC5tYXgoeSxiLmNvbnRlbnRMZW5ndGh8fDApfSk7ZD9kLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6cC5wdXNoKGUpO2IucmVhZCgpLnRoZW4ocmVhZENodW5rLGEpfWNhdGNoKGUpe2EoZSl9fTtiLnJlYWQoKS50aGVuKHJlYWRDaHVuayxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7Zj1udWxsfSkpO2Y9ZnVuY3Rpb24oZSl7Zy5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX14Lm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7eC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbiB3cGhTZXR1cEdldERlc3RpbmF0aW9ucyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0RGVzdGluYXRpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7eC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxhYmVscyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7eC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxheW91dChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VNb2RlKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7eC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO3gub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7eC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7eC5vbigiR2V0SmF2YVNjcmlwdCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0SmF2YVNjcmlwdChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7eC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREb2NKU0FjdGlvbnMoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7eC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO3gub24oIkdldE91dGxpbmUiLChmdW5jdGlvbiB3cGhTZXR1cEdldE91dGxpbmUoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7eC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7eC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3gub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRNZXRhZGF0YShlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTt4Lm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0TWFya0luZm8oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREYXRhKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTt4Lm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpfSkpfSkpfSkpO3gub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7eC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTt4Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7eC5vbigiU2F2ZURvY3VtZW50IiwoZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cyxmaWxlbmFtZTpvfSl7Y29uc3QgbD1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKV0saD1lP251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkocyk7aWYoaClmb3IoY29uc3RbZSx0XW9mIGgpbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChhPT57Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2V9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgscix0KS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2socil9KSl9KSkpO2lmKGUpbC5wdXNoKGEuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKWwucHVzaChhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZSh4LGEscykuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSkpfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oW3QsYSxpLHMsbCwuLi5oXSl7bGV0IHU9W10sZD1udWxsO2lmKGUpe2Q9aFswXTtpZighZClyZXR1cm4gdC5ieXRlc31lbHNle3U9aC5mbGF0KDIpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gdC5ieXRlc31jb25zdCBmPWEgaW5zdGFuY2VvZiBuLkRpY3QmJmEuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgZz1udWxsLHA9ITE7aWYoQXJyYXkuaXNBcnJheShmKSl7Zm9yKGxldCBlPTAsdD1mLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09ZltlXSl7Zz1mW2UrMV07aT1udWxsO3A9ITB9bnVsbD09PWcmJihnPXMuZ2V0TmV3UmVmKCkpfWVsc2UgaWYoZil7aT1udWxsOygwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpfWxldCBtPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO209e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1JlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmwsZmlsZW5hbWU6b319cy5yZXNldE5ld1JlZigpO3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzptLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZix4ZmFEYXRhc2V0c1JlZjpnLGhhc1hmYURhdGFzZXRzRW50cnk6cCxhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp4LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7cyYmKDAsci5pbmZvKShgcGFnZT0ke24rMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt4Lm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIituKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjp4LHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktcykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbiB3cGhHZXRTdHJ1Y3RUcmVlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7eC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQseCl9KSk7eC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uIHdwaENsZWFudXAoZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7eC5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24gd3BoVGVybWluYXRlKGUpe2Q9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSgwLG8uY2xlYXJHbG9iYWxDYWNoZXMpKCk7ZiYmZihuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBnKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXt4LmRlc3Ryb3koKTt4PW51bGx9KSl9KSk7eC5vbigiUmVhZHkiLChmdW5jdGlvbiB3cGhSZWFkeSh0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIHIuUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7eC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygci5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVua25vd25FcnJvckV4Y2VwdGlvbj94LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6eC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSkpOm9uRmFpbHVyZShlKX0pKX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Z2V0UGRmTWFuYWdlcihlKS50aGVuKChmdW5jdGlvbihlKXtpZihkKXtlLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWE9ZTthLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9Pnt4LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBTfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgaC5NZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1Xb3JrZXJNZXNzYWdlSGFuZGxlcjsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWwuaXNOb2RlSlMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmV29ya2VyTWVzc2FnZUhhbmRsZXIuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5Qnl0ZUxlbmd0aD1hcnJheUJ5dGVMZW5ndGg7dC5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5c1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYSs9YXJyYXlCeXRlTGVuZ3RoKGVbcl0pO2xldCByPTA7Y29uc3Qgbj1uZXcgVWludDhBcnJheShhKTtmb3IobGV0IGE9MDthPHQ7YSsrKXtsZXQgdD1lW2FdO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwodD0ic3RyaW5nIj09dHlwZW9mIHQ/c3RyaW5nVG9CeXRlcyh0KTpuZXcgVWludDhBcnJheSh0KSk7Y29uc3QgaT10LmJ5dGVMZW5ndGg7bi5zZXQodCxyKTtyKz1pfXJldHVybiBufTt0LmFzc2VydD1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX07dC5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmdm9pZCAwIT09ZS5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQ7bis9YSl7Y29uc3QgaT1NYXRoLm1pbihuK2EsdCkscz1lLnN1YmFycmF5KG4saSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9O3QuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNldHRsZWQiLHtnZXQ6KCk9PnR9KTtlLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7ZS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3Q9ITA7YShlKX07ZS5yZWplY3Q9ZnVuY3Rpb24oZSl7dD0hMDtyKGUpfX0pKTtyZXR1cm4gZX07dC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dCYmdC5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe2lmKCFlKXJldHVybiExO3N3aXRjaChlLnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpKXJldHVybiByfWNhdGNoKGUpe31yZXR1cm4gbnVsbH07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTt0LmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIHJ9O3QuaW5mbz1mdW5jdGlvbiBpbmZvKGUpe3I+PWEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9O3QuaXNBcnJheUJ1ZmZlcj1mdW5jdGlvbiBpc0FycmF5QnVmZmVyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH07dC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHI9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9c1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZCRVN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1VURjE2QkVTdHJpbmcoZSl7Y29uc3QgdD1bIsO+w78iXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIHQuam9pbigiIil9O3Quc3RyaW5nVG9VVEY4U3RyaW5nPXN0cmluZ1RvVVRGOFN0cmluZzt0LnVucmVhY2hhYmxlPXVucmVhY2hhYmxlO3QudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX07dC53YXJuPXdhcm47dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07dC5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O3QuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxJTks6MTV9O3QuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e0ZSRUVURVhUX1NJWkU6MSxGUkVFVEVYVF9DT0xPUjoyLEZSRUVURVhUX09QQUNJVFk6MyxJTktfQ09MT1I6MTEsSU5LX1RISUNLTkVTUzoxMixJTktfT1BBQ0lUWToxM307dC5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTt0LlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O3QuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307dC5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O3QuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXtNQVJLRUQ6Ik1hcmtlZCIsUkVWSUVXOiJSZXZpZXcifTt0LkFubm90YXRpb25NYXJrZWRTdGF0ZT17TUFSS0VEOiJNYXJrZWQiLFVOTUFSS0VEOiJVbm1hcmtlZCJ9O3QuQW5ub3RhdGlvblJldmlld1N0YXRlPXtBQ0NFUFRFRDoiQWNjZXB0ZWQiLFJFSkVDVEVEOiJSZWplY3RlZCIsQ0FOQ0VMTEVEOiJDYW5jZWxsZWQiLENPTVBMRVRFRDoiQ29tcGxldGVkIixOT05FOiJOb25lIn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07dC5TdHJlYW1UeXBlPXtVTktOT1dOOiJVTktOT1dOIixGTEFURToiRkxBVEUiLExaVzoiTFpXIixEQ1Q6IkRDVCIsSlBYOiJKUFgiLEpCSUc6IkpCSUciLEE4NToiQTg1IixBSFg6IkFIWCIsQ0NGOiJDQ0YiLFJMWDoiUkxYIn07dC5Gb250VHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsVFlQRTE6IlRZUEUxIixUWVBFMVNUQU5EQVJEOiJUWVBFMVNUQU5EQVJEIixUWVBFMUM6IlRZUEUxQyIsQ0lERk9OVFRZUEUwOiJDSURGT05UVFlQRTAiLENJREZPTlRUWVBFMEM6IkNJREZPTlRUWVBFMEMiLFRSVUVUWVBFOiJUUlVFVFlQRSIsQ0lERk9OVFRZUEUyOiJDSURGT05UVFlQRTIiLFRZUEUzOiJUWVBFMyIsT1BFTlRZUEU6Ik9QRU5UWVBFIixUWVBFMDoiVFlQRTAiLE1NVFlQRTE6Ik1NVFlQRTEifTtjb25zdCBhPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9YTt0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX07dC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX07dC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHI9YS5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe3I+PWEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IG49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPW47dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIGFycmF5Qnl0ZUxlbmd0aChlKXtpZih2b2lkIDAhPT1lLmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYodm9pZCAwIT09ZS5ieXRlTGVuZ3RoKXJldHVybiBlLmJ5dGVMZW5ndGg7dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGFycmF5Qnl0ZUxlbmd0aCIpfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX07Y29uc3QgaT1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7aVtlXX0ke2lbdF19JHtpW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxuPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0sblsxXSxpWzFdKSxNYXRoLm1heChhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1heChhWzFdLHJbMV0sblsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10sbj1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK2kpLzIsbz1NYXRoLnNxcnQoKGEraSkqKjItNCooYSppLW4qcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksaT1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBuPmk/bnVsbDpbYSxuLHIsaV19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsbixpLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Km47aD0tMyplKzkqYS05Km4rMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNippO2g9LTMqdCs5KnItOSppKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqbitmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZippK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWZTZXRDYWNoZT10LlJlZlNldD10LlJlZj10Lk5hbWU9dC5FT0Y9dC5EaWN0PXQuQ21kPXQuQ0lSQ1VMQVJfUkVGPXZvaWQgMDt0LmNsZWFyUHJpbWl0aXZlQ2FjaGVzPWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7by5fY2xlYXJDYWNoZSgpO3MuX2NsZWFyQ2FjaGUoKTtsLl9jbGVhckNhY2hlKCl9O3QuaXNDbWQ9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8mJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfTt0LmlzRGljdD1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9O3QuaXNOYW1lPWlzTmFtZTt0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciByPWEoMik7Y29uc3Qgbj1TeW1ib2woIkNJUkNVTEFSX1JFRiIpO3QuQ0lSQ1VMQVJfUkVGPW47Y29uc3QgaT1TeW1ib2woIkVPRiIpO3QuRU9GPWk7Y29uc3Qgcz1mdW5jdGlvbiBOYW1lQ2xvc3VyZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KHQpe3JldHVybiBlW3RdfHwoZVt0XT1uZXcgTmFtZSh0KSl9c3RhdGljIF9jbGVhckNhY2hlKCl7ZT1PYmplY3QuY3JlYXRlKG51bGwpfX1yZXR1cm4gTmFtZX0oKTt0Lk5hbWU9cztjb25zdCBvPWZ1bmN0aW9uIENtZENsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQodCl7cmV0dXJuIGVbdF18fChlW3RdPW5ldyBDbWQodCkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIENtZH0oKTt0LkNtZD1vO2NvbnN0IGM9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBjfTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1jfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yZXR1cm4gciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBsJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZiYmKHI9dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KHIpKXtyPXIuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXWluc3RhbmNlb2YgbCYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksbj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1uLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO24uc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBuKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPWEpO24uc2l6ZT4wJiYoci5fbWFwW3RdPW4pfW4uY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjb25zdCBsPWZ1bmN0aW9uIFJlZkNsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZ2V0KHQsYSl7Y29uc3Qgcj0wPT09YT9gJHt0fVJgOmAke3R9UiR7YX1gO3JldHVybiBlW3JdfHwoZVtyXT1uZXcgUmVmKHQsYSkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIFJlZn0oKTt0LlJlZj1sO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1SZWZTZXQ7Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19dC5SZWZTZXRDYWNoZT1SZWZTZXRDYWNoZTtmdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMDt0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KWZvcihjb25zdCB0IG9mIHIuZ2V0S2V5cygpKXtjb25zdCBzPWFbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1yLmdldFJhdyh0KSxjPW5ldyBuLlJlZlNldCxsPVtdO19jb2xsZWN0SlMobyxlLGwsYyk7bC5sZW5ndGg+MCYmKGlbc109bCl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9dC5nZXQoIkEiKSxyPW5ldyBuLlJlZlNldCxzPVtdO19jb2xsZWN0SlMoYSxlLHMscik7cy5sZW5ndGg+MCYmKGkuQWN0aW9uPXMpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2xldCBhPWUoKTtlPW51bGw7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrPTIpdFthW2VdXT1hW2UrMV07YT1udWxsfXJldHVybiB0fX07dC5nZXRJbmhlcml0YWJsZVByb3BlcnR5PWdldEluaGVyaXRhYmxlUHJvcGVydHk7dC5nZXRMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19O3QuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSl7aWYoIWEuc3RhcnRzV2l0aChyLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KG4ucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChuLnBhZ2VJbmRleCxlKX1lLnB1c2gobil9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8Iikuc3BsaXQoIi4iKS5qb2luKCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTppfT1lO2lmKC9eIi4qIiQvLnRlc3QoYSkpe2lmKC9bXlxcXSIvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAke2F9LmApO3JldHVybiExfX1lbHNlIGlmKC9eJy4qJyQvLnRlc3QoYSkpe2lmKC9bXlxcXScvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAnOiAke2F9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBlIG9mIGEuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoZSl8fCEvXltcdy1cXF0rJC8udGVzdChlKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7YX0uYCk7cmV0dXJuITF9Y29uc3Qgcz1uP24udG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocyk/czoiNDAwIjtjb25zdCBvPXBhcnNlRmxvYXQoaSk7ZS5pdGFsaWNBbmdsZT1pc05hTihvKXx8bzwtOTB8fG8+OTA/IjE0IjppLnRvU3RyaW5nKCk7cmV0dXJuITB9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg1KTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO3QuRG9jU3RhdHM9Y2xhc3MgRG9jU3RhdHN7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lO3RoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQ7dGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9X3NlbmQoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0cmVhbVR5cGVzKWVbdF09ITA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZm9udFR5cGVzKXRbZV09ITA7dGhpcy5faGFuZGxlci5zZW5kKCJEb2NTdGF0cyIse3N0cmVhbVR5cGVzOmUsZm9udFR5cGVzOnR9KX1hZGRTdHJlYW1UeXBlKGUpe2lmKCF0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSkpe3RoaXMuX3N0cmVhbVR5cGVzLmFkZChlKTt0aGlzLl9zZW5kKCl9fWFkZEZvbnRUeXBlKGUpe2lmKCF0aGlzLl9mb250VHlwZXMuaGFzKGUpKXt0aGlzLl9mb250VHlwZXMuYWRkKGUpO3RoaXMuX3NlbmQoKX19fTtmdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBzPW5ldyBuLlJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBuLkRpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKHIpcmV0dXJuIG47aXx8KGk9W10pO2kucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gaX1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO249biYmKDAsci5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZSgvXHUwMDAwL2csIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CYXNlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO2NsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmV0d29ya1BkZk1hbmFnZXI9dC5Mb2NhbFBkZk1hbmFnZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDcpLGk9YSg0KSxzPWEoOSksbz1hKDgpO2Z1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIil9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLGMpe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKGMpO3RoaXMubXNnSGFuZGxlcj1yO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1uO3RoaXMuZW5hYmxlWGZhPWk7Y29uc3QgbD1uZXcgby5TdHJlYW0odCk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLGwpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKGwpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0LGEscixpLG8pe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hLnBhc3N3b3JkO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKG8pO3RoaXMubXNnSGFuZGxlcj1hLm1zZ0hhbmRsZXI7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXI7dGhpcy5lbmFibGVYZmE9aTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjphLm1zZ0hhbmRsZXIsbGVuZ3RoOmEubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6YS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmEucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpLGk9YSg4KTtjbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBuPU1hdGguZmxvb3IoZS9hKSxpPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9bjtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBhPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoYT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9YTtpPHI7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCByPShlK2EpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpcmV0dXJuIHJ9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsYT10aGlzLnBvcyxyPXRoaXMuZW5kO2lmKCFlKXtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEscik7cmV0dXJuIHQuc3ViYXJyYXkoYSxyKX1sZXQgbj1hK2U7bj5yJiYobj1yKTtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEsbik7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGE9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxyPVtdO2ZvcihsZXQgZT10O2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8ci5wdXNoKGUpO3JldHVybiByfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCByPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO3IucG9zPXIuc3RhcnQ9ZTtyLmVuZD1lK3R8fHRoaXMuZW5kO3IuZGljdD1hO3JldHVybiByfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09Q2h1bmtlZFN0cmVhbTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChhLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBuPVtdLGk9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPXM9Pnt0cnl7aWYoIXMuZG9uZSl7Y29uc3QgZT1zLnZhbHVlO24ucHVzaChlKTtpKz0oMCxyLmFycmF5Qnl0ZUxlbmd0aCkoZSk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpO3JldHVybn1jb25zdCBvPSgwLHIuYXJyYXlzVG9CeXRlcykobik7bj1udWxsO2Uobyl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBuPSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsbik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLG49W107Zm9yKGxldCBlPWE7ZTxyOysrZSluLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mobil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbil7Y29uc3QgaT1lW25dO2E8MCYmKGE9aSk7aWYocj49MCYmcisxIT09aSl7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1pfW4rMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazppKzF9KTtyPWl9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG49cit0LmJ5dGVMZW5ndGgsaT1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9bjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKG4vdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChuL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9bn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9aTtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJpbmdTdHJlYW09dC5TdHJlYW09dC5OdWxsU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgyKTtjbGFzcyBTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBuPWErZTtuPnImJihuPXIpO3RoaXMucG9zPW47cmV0dXJuIHQuc3ViYXJyYXkoYSxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIHI9YSgxMCksbj1hKDIpLGk9YSg0KSxzPWEoMyksbz1hKDQ5KSxjPWEoNSksbD1hKDY1KSxoPWEoNjcpLHU9YSg2OSksZD1hKDk4KSxmPWEoMTUpLGc9YSg4KSxwPWEoNzMpLG09YSg2MCksYj1hKDEzKSx5PWEoMTcpLHc9YSg3MiksUz1hKDYzKSx4PWEoNzQpLGs9YSg5OSk7Y29uc3QgQz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6aSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLG5vbkJsZW5kTW9kZXNTZXQ6aCx4ZmFGYWN0b3J5OnV9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1uO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT11O2NvbnN0IGQ9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIGl7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2F9XyR7KytkLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcGFnZSR7bi50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2Ygcy5EaWN0P3MuRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2Ygcy5EaWN0P2U6cy5EaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0WzJdLXRbMF0hPTAmJnRbM10tdFsxXSE9MClyZXR1cm4gdDsoMCxuLndhcm4pKGBFbXB0eSAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxDKX1nZXQgY3JvcEJveCgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2xldCBhO2lmKGU9PT10fHwoMCxuLmlzQXJyYXlFcXVhbCkoZSx0KSlhPXQ7ZWxzZXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtyJiZyWzJdLXJbMF0hPTAmJnJbM10tclsxXSE9MD9hPXI6KDAsbi53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLGF8fHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQsYSl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDtlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pOygwLG4ud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke2F9KTogIiR7dH0iLmApfWdldENvbnRlbnRTdHJlYW0oZSl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKHQ9PnQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/dDpBcnJheS5pc0FycmF5KHQpP25ldyB5LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbSh0LHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzLGUpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksaT10aGlzLnBhZ2VEaWN0LHM9dGhpcy5hbm5vdGF0aW9ucy5zbGljZSgpLG89YXdhaXQgci5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEpO2Zvcihjb25zdHtyZWY6ZX1vZiBvLmFubm90YXRpb25zKXMucHVzaChlKTtjb25zdCBjPWkuZ2V0KCJBbm5vdHMiKTtpLnNldCgiQW5ub3RzIixzKTtjb25zdCBsPVtdO2xldCBoPW51bGw7dGhpcy54cmVmLmVuY3J5cHQmJihoPXRoaXMueHJlZi5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaSxsLGgpO2MmJmkuc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChhKSYmaS5wdXNoKHMuc2F2ZShyLHQsYSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IHAuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazphLGludGVudDpzLGNhY2hlS2V5Om8sYW5ub3RhdGlvblN0b3JhZ2U6Yz1udWxsfSl7Y29uc3QgbD10aGlzLmdldENvbnRlbnRTdHJlYW0oZSksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZD10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShjKTtsZXQgZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYoZCl7Y29uc3QgZT1kLmdldCh0aGlzLnBhZ2VJbmRleCk7ZSYmKGY9ci5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHUsYSxlKSl9Y29uc3QgZz1Qcm9taXNlLmFsbChbbCxoXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdChzLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OnUuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpvfSk7cmV0dXJuIHUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsZl0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQscl0pe3ImJih0PXQuY29uY2F0KHIpKTtpZigwPT09dC5sZW5ndGh8fHMmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3QgaT0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbz0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEocyZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZD1bXTtmb3IoY29uc3QgZSBvZiB0KShvfHxsJiZlLm11c3RCZVZpZXdlZChjKXx8aCYmZS5tdXN0QmVQcmludGVkKGMpKSYmZC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsYSxzLGksYykuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbigoZnVuY3Rpb24odCl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiB0KXtlLmFkZE9wTGlzdChuKTtpJiYoYT1pKTtzJiYocj1zKX1lLmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLHNpbms6cixjb21iaW5lVGV4dEl0ZW1zOm59KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbShlKSxzPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2ksc10pLnRoZW4oKChbaV0pPT5uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTppLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxjb21iaW5lVGV4dEl0ZW1zOm4sc2luazpyLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3QgaT1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZzLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHwobz1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkpO2kucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsdGhpcy52aWV3KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKGkpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKCgoKT0+e2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbm5vdGF0aW9ucyllLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChlKS50aGVuKChmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgYTtmb3IoY29uc3QgbiBvZiBlKWlmKG4paWYobiBpbnN0YW5jZW9mIHIuUG9wdXBBbm5vdGF0aW9uKXthfHwoYT1bXSk7YS5wdXNoKG4pfWVsc2UgdC5wdXNoKG4pO2EmJnQucHVzaCguLi5hKTtyZXR1cm4gdH0pKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT0oMCxpLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxuLlBhZ2VBY3Rpb25FdmVudFR5cGUpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLGUpfX10LlBhZ2U9UGFnZTtjb25zdCB2PW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxPPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IG49dC5sZW5ndGgsaT1lLnBlZWtCeXRlcyhhKSxzPWkubGVuZ3RoLW47aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPW4tMTtsZXQgcj1pLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPG4mJmlbci1zXT09PXRbYS1zXTspcysrO2lmKHM+PW4pe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8biYmaVthK3JdPT09dFtyXTspcisrO2lmKHI+PW4pe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9dC5QREZEb2N1bWVudD1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBuLkludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBrLlhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBoLkNhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPWYuTGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShlKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtmaW5kKGUsTykmJih0PWUucG9zKzYtZS5zdGFydCl9ZWxzZXtjb25zdCBhPTEwMjQscj1GLmxlbmd0aDtsZXQgbj0hMSxzPWUuZW5kO2Zvcig7IW4mJnM+MDspe3MtPWEtcjtzPDAmJihzPTApO2UucG9zPXM7bj1maW5kKGUsRixhLCEwKX1pZihuKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsdikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHYubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoYSk/dGhpcy5fdmVyc2lvbj1hOigwLG4ud2FybikoYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXsoMCxuLndhcm4pKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT0oMCxzLmlzTmFtZSkoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGEmJml9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2FbInhkcDp4ZHAiXT10O3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IG47bj0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihhW25dPWkpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lW3RdO2lmKGEpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGQuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYocil0cnl7dFthXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgeC5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCksYT1uZXcgcC5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgYS5sb2FkKCk7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoYSk7dCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmci5zZXQoYSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMocil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGM9bmV3IHAuT2JqZWN0TG9hZGVyKHIsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBjLmxvYWQoKTtjb25zdCBsPXIuZ2V0KCJGb250Iik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyBtLk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSx5PW5ldyBNYXA7bC5mb3JFYWNoKCgoZSx0KT0+e3kuc2V0KGUsdCl9KSk7Y29uc3Qgdz1bXTtmb3IoY29uc3RbZSxhXW9mIHkpe2NvbnN0IG89YS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShvIGluc3RhbmNlb2Ygcy5EaWN0KSljb250aW51ZTtsZXQgYz1vLmdldCgiRm9udEZhbWlseSIpO2M9Yy5yZXBsYWNlKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6Yyxmb250V2VpZ2h0Om8uZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LW8uZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJncucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTtjb25zdCBTPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyhmKTtpZighUylyZXR1cm47aC5pZ25vcmVFcnJvcnM9ITA7dy5sZW5ndGg9MDtmLmxlbmd0aD0wO2NvbnN0IHg9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBTKSgwLG8uZ2V0WGZhRm9udE5hbWUpKGAke2V9LVJlZ3VsYXJgKXx8eC5hZGQoZSk7eC5zaXplJiZTLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgUylpZigheC5oYXMoZSkpZm9yKGNvbnN0IGEgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGk9YCR7ZX0tJHthLm5hbWV9YCxjPSgwLG8uZ2V0WGZhRm9udERpY3QpKGkpO3cucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChpKSwxXSxudWxsLGQsdCxnLGMse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OmEuZm9udFdlaWdodCxpdGFsaWNBbmdsZTphLml0YWxpY0FuZ2xlfSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoZix4KX1hc3luYyBzZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHQ9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCF0KXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IG49dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjB8fG4gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFuLmlzRW1wdHk7Y29uc3QgaT0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPWkmJnRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoYSk7ZS5oYXNBY3JvRm9ybT1yJiYhcztlLmhhc1NpZ25hdHVyZXM9aX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCByPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2Ygcil7ZVthXT0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHIgaW5zdGFuY2VvZiBzLk5hbWUpe2VbYV09cjtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCB0O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSJzdHJpbmciOnQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykocik7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dD1yO2JyZWFrO2RlZmF1bHQ6ciBpbnN0YW5jZW9mIHMuTmFtZSYmKHQ9cil9aWYodm9pZCAwPT09dCl7KDAsbi53YXJuKShgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCk7Y29udGludWV9ZS5DdXN0b218fChlLkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKTtlLkN1c3RvbVthXT10O2NvbnRpbnVlfSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGE7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9KDAsbi5zdHJpbmdUb0J5dGVzKShlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihhPSgwLG4uc3RyaW5nVG9CeXRlcykoZVsxXSkpfWVsc2UgdD0oMCxsLmNhbGN1bGF0ZU1ENSkodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGE/aGV4U3RyaW5nKGEpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOnJ9PXRoaXMsaT1zLlJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2Ygcy5SZWYmJihhPWF3YWl0IHIuZmV0Y2hBc3luYyhhKSk7aWYoKDAscy5pc05hbWUpKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpeygwLG4ud2FybikoYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLl9wYWdlUHJvbWlzZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Om59PXRoaXM7bGV0IGk7aT1uP1Byb21pc2UucmVzb2x2ZShbcy5EaWN0LmVtcHR5LG51bGxdKTpyJiZyLnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtpPWkudGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bn0pKSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IHI7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtyPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChzKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKHItMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247KDAsbi53YXJuKShgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBvO3RyeXtvPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLG5dXW9mIG8pe2xldCBpO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7aT1Qcm9taXNlLnJlamVjdChyKTtpLmNhdGNoKCgoKT0+e30pKX1lbHNlIGk9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWEuaGFzKGUpfHxhLnNldChlLFtdKTthLmdldChlKS5wdXNoKHIuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+ZSYmZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlfHwhZS5oYXMoIkNPIikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMTEpLHM9YSgzKSxvPWEoNjMpLGM9YSg1KSxsPWEoNTgpLGg9YSg2NyksdT1hKDEyKSxkPWEoNzApLGY9YSg3MyksZz1hKDYwKSxwPWEoOCksbT1hKDc0KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtpLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxvLGMsbixsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxpLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7aS5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06byBpbnN0YW5jZW9mIHMuRGljdD9vOnMuRGljdC5lbXB0eSxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLHBhZ2VJbmRleDp1fTtzd2l0Y2goZyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2Ygcy5OYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpofHwoZz8oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtnfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYCk6KDAsci53YXJuKSgiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKSk7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBuPXIuZ2V0UmF3KCJQIik7aWYoIShuIGluc3RhbmNlb2Ygcy5SZWYpKXJldHVybi0xO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW25dKX1jYXRjaChlKXsoMCxyLndhcm4pKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCk7cmV0dXJuLTF9fXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEpe2NvbnN0IG49ZS54cmVmO2xldCBpO2NvbnN0IGM9W10sbD1bXTtmb3IoY29uc3QgaCBvZiBhKXN3aXRjaChoLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6aWYoIWkpe2NvbnN0IGU9bmV3IHMuRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtpPW4uZ2V0TmV3UmVmKCk7KDAsby53cml0ZU9iamVjdCkoaSxlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6aSxkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49ZS54cmVmLGk9W107Zm9yKGNvbnN0IHMgb2YgYSlzd2l0Y2gocy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmkucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scyx7ZXZhbHVhdG9yOmUsdGFzazp0fSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6aS5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scykpfXJldHVybiBQcm9taXNlLmFsbChpKX19O2Z1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2lmKCFlLmhhcygiUXVhZFBvaW50cyIpKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGgvODtlPG47ZSsrKXtyLnB1c2goW10pO2ZvcihsZXQgbj04KmUsaT04KmUrODtuPGk7bis9Mil7Y29uc3QgaT1hW25dLHM9YVtuKzFdO2lmKG51bGwhPT10JiYoaTx0WzBdfHxpPnRbMl18fHM8dFsxXXx8cz50WzNdKSlyZXR1cm4gbnVsbDtyW2VdLnB1c2goe3g6aSx5OnN9KX19cmV0dXJuIHIubWFwKChlPT57Y29uc3RbdCxhLHIsbl09ZS5yZWR1Y2UoKChbZSx0LGEscl0sbik9PltNYXRoLm1pbihlLG4ueCksTWF0aC5tYXgodCxuLngpLE1hdGgubWluKGEsbi55KSxNYXRoLm1heChyLG4ueSldKSxbTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUlOX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1JTl9WQUxVRV0pO3JldHVyblt7eDp0LHk6bn0se3g6YSx5Om59LHt4OnQseTpyfSx7eDphLHk6cn1dfSkpfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3RbbixpLHMsb109ci5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsYSk7aWYobj09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1uKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tbipjLGVbMV0taSpsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9ZS5kaWN0O3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgYT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoYSk7dGhpcy5zZXRSb3RhdGlvbihhKTt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgYT10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSl0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsbi5jb2xsZWN0QWN0aW9ucykoZS54cmVmLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbH1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5OT1ZJRVcpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuUFJJTlQpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKX1tdXN0QmVWaWV3ZWQoZSl7Y29uc3QgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWUmJmUuZ2V0KHRoaXMuZGF0YS5pZCk7cmV0dXJuIHQmJnZvaWQgMCE9PXQucHJpbnQ/dC5wcmludDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGwuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe0FycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD90aGlzLnJlY3RhbmdsZT1yLlV0aWwubm9ybWFsaXplUmVjdChlKTp0aGlzLnJlY3RhbmdsZT1bMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUpe3RoaXMucm90YXRpb249MDtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgdD1lLmdldCgiUiIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIodCkmJjAhPT10KXt0JT0zNjA7dDwwJiYodCs9MzYwKTt0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KX19fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIiksYT10LmdldCgiVHlwZSIpO2lmKCFhfHwoMCxzLmlzTmFtZSkoYSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpJiYodGhpcy5hcHBlYXJhbmNlPWEuZ2V0KHIubmFtZSkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxuPVtdLGk9W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7aS5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7bi5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGNvbWJpbmVUZXh0SXRlbXM6ITAsc2luazpzLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtpLmxlbmd0aCYmbi5wdXNoKGkuam9pbigiIikpO24ubGVuZ3RoPjAmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9bil9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGE9KHRbMl0tdFswXSkvMixuPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZuPjAmJihlPmF8fGU+bikpeygwLHIud2FybikoYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlVOREVSTElORX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZihhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKHMuTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUFubm90YXRpb25Cb3JkZXJTdHlsZTtjbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PWUuZGljdDtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PXIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO3RoaXMuZGF0YS5oYXNQb3B1cD1lLmhhcygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7dGhpcy5kYXRhLmhhc1BvcHVwPXQuaGFzKCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpuLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6Y30pe2xldCBsPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1JTl9WQUxVRSxkPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgZj1bInEiXTt0JiZmLnB1c2godCk7YSYmZi5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmYucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtsZXQgZz10aGlzLmRhdGEucXVhZFBvaW50cztnfHwoZz1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIGcpe2NvbnN0W3QsYSxyLG5dPWMoZixlKTtsPU1hdGgubWluKGwsdCk7dT1NYXRoLm1heCh1LGEpO2g9TWF0aC5taW4oaCxyKTtkPU1hdGgubWF4KGQsbil9Zi5wdXNoKCJRIik7Y29uc3QgbT1uZXcgcy5EaWN0KGUpLGI9bmV3IHMuRGljdChlKTtiLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB5PW5ldyBwLlN0cmluZ1N0cmVhbShmLmpvaW4oIiAiKSk7eS5kaWN0PWI7bS5zZXQoIkZtMCIseSk7Y29uc3Qgdz1uZXcgcy5EaWN0KGUpO24mJncuc2V0KCJCTSIscy5OYW1lLmdldChuKSk7Im51bWJlciI9PXR5cGVvZiBpJiZ3LnNldCgiQ0EiLGkpOyJudW1iZXIiPT10eXBlb2YgbyYmdy5zZXQoImNhIixvKTtjb25zdCBTPW5ldyBzLkRpY3QoZSk7Uy5zZXQoIkdTMCIsdyk7Y29uc3QgeD1uZXcgcy5EaWN0KGUpO3guc2V0KCJFeHRHU3RhdGUiLFMpO3guc2V0KCJYT2JqZWN0IixtKTtjb25zdCBrPW5ldyBzLkRpY3QoZSk7ay5zZXQoIlJlc291cmNlcyIseCk7Y29uc3QgQz10aGlzLmRhdGEucmVjdD1bbCxoLHUsZF07ay5zZXQoIkJCb3giLEMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWs7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx5KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPWUuZ2V0TmV3UmVmKCksaT1lLmdldE5ld1JlZigpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pLGM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxsPVtdO2xldCBoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKGksYyxsLGgpO2EucHVzaCh7cmVmOmksZGF0YTpsLmpvaW4oIiIpfSk7bC5sZW5ndGg9MDtoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKG4scyxsLGgpO3JldHVybntyZWY6bixkYXRhOmwuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplfSl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0LGE9dGhpcy5kYXRhO3RoaXMucmVmPWUucmVmO2EuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09YS5maWVsZE5hbWUmJihhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PWEuYWN0aW9ucyYmKGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShlLnhyZWYsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2EuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTthLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7YS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWEuZGVmYXVsdEZpZWxkVmFsdWUmJihhLmZpZWxkVmFsdWU9YS5kZWZhdWx0RmllbGRWYWx1ZSk7YS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTtjb25zdCBsPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGw/bDoiIjthLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKTtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZUIn0pO2EuZmllbGRUeXBlPWggaW5zdGFuY2VvZiBzLk5hbWU/aC5uYW1lOm51bGw7Y29uc3QgdT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEUiJ9KSxkPWUuYWNyb0Zvcm0uZ2V0KCJEUiIpLGY9dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLmFwcGVhcmFuY2UuZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczp1LGFjcm9Gb3JtUmVzb3VyY2VzOmQsYXBwZWFyYW5jZVJlc291cmNlczpmLG1lcmdlZFJlc291cmNlczpzLkRpY3QubWVyZ2Uoe3hyZWY6ZS54cmVmLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX07YS5maWVsZEZsYWdzPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhLmZpZWxkRmxhZ3MpfHxhLmZpZWxkRmxhZ3M8MCkmJihhLmZpZWxkRmxhZ3M9MCk7YS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpO2EucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKTthLmhpZGRlbj10aGlzLl9oYXNGbGFnKGEuYW5ub3RhdGlvbkZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1zdGF0aWMgX2dldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0Um90YXRpb25NYXRyaXgoZSl7Y29uc3QgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwO2xldCBhPXQmJnQucm90YXRpb247dm9pZCAwPT09YSYmKGE9dGhpcy5yb3RhdGlvbik7aWYoMD09PWEpcmV0dXJuIHIuSURFTlRJVFlfTUFUUklYO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0saT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4gV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoYSxuLGkpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtjb25zdCB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGE9dCYmdC5yb3RhdGlvbjt2b2lkIDA9PT1hJiYoYT10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IHI9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1hfHwxODA9PT1hP2AwIDAgJHtyfSAke259IHJlYDpgMCAwICR7bn0gJHtyfSByZWA7bGV0IG89IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihvPWAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe28rPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHsoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIG99YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7aWYobiYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikpcmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLEFycmF5LmZyb20odGhpcy5ib3JkZXJDb2xvciwoZT0+ZS8yNTUpKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsQXJyYXkuZnJvbSh0aGlzLmJhY2tncm91bmRDb2xvciwoZT0+ZS8yNTUpKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hc3luYyBzYXZlKGUsdCxhKXtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGk9biYmbi52YWx1ZSxjPW4mJm4ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1jKXJldHVybiBudWxsO2k9aXx8dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09YyYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmkubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZpLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbik7bGV0IGw9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSk7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IGQ9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZj17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh1LmdldCgiVCIpfHwiIiksdmFsdWU6aX0sZz1oLmdldE5ld1JlZigpLHA9bmV3IHMuRGljdChoKTtwLnNldCgiTiIsZyk7Y29uc3QgbT1oLmVuY3J5cHQ7bGV0IGI9bnVsbCx5PW51bGw7aWYobSl7Yj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTt5PW0uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGcubnVtLGcuZ2VuKTtsPXkuZW5jcnlwdFN0cmluZyhsKX1jb25zdCBlbmNvZGVyPWU9PigwLHIuaXNBc2NpaSkoZSk/ZTooMCxyLnN0cmluZ1RvVVRGMTZCRVN0cmluZykoZSk7dS5zZXQoIlYiLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoZW5jb2Rlcik6ZW5jb2RlcihpKSk7dS5zZXQoIkFQIixwKTt1LnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QoYyk7dyYmdS5zZXQoIk1LIix3KTtjb25zdCBTPW5ldyBzLkRpY3QoaCk7Uy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO1Muc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO1Muc2V0KCJSZXNvdXJjZXMiLHRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhoKSk7Uy5zZXQoIkJCb3giLGQpO2NvbnN0IHg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTt4IT09ci5JREVOVElUWV9NQVRSSVgmJlMuc2V0KCJNYXRyaXgiLHgpO2NvbnN0IGs9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKHUsayxiKTtrLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBDPVtgJHtnLm51bX0gJHtnLmdlbn0gb2JqXG5gXTsoMCxvLndyaXRlRGljdCkoUyxDLHkpO0MucHVzaCgiIHN0cmVhbVxuIixsLCJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmsuam9pbigiIikseGZhOmZ9LHtyZWY6ZyxkYXRhOkMuam9pbigiIikseGZhOm51bGx9XX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSlyZXR1cm4gbnVsbDtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuIiJ9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTsoMCxyLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltKCk7aWYoIiI9PT1zKXJldHVybiIiO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBjPS0xO3RoaXMuZGF0YS5tdWx0aUxpbmUmJihjPXMuc3BsaXQoL1xyXG58XHJ8XG4vKS5sZW5ndGgpO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IHU9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKSxbZCxmXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLGgtNCxzLHUsYyk7bGV0IGc9dS5kZXNjZW50O2lzTmFOKGcpJiYoZz0wKTtjb25zdCBwPU1hdGgubWluKE1hdGguZmxvb3IoKGwtZikvMiksMikrTWF0aC5hYnMoZykqZixtPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZCxzLHUsZixoLGwsbSwyLHAsYSk7Y29uc3QgYj11LmVuY29kZVN0cmluZyhzKS5qb2luKCIiKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZCx1LGIsaCwyLHAsYSk7Y29uc3QgeT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZigwPT09bXx8bT4yKXJldHVybmAvVHggQk1DIHEgJHt5fUJUIGArZCtgIDEgMCAwIDEgMiAke3B9IFRtICgkeygwLHIuZXNjYXBlU3RyaW5nKShiKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7eX1CVCBgK2QrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQoYix1LGYsaCxtLDIscCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IG49bmV3IGcuT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbbyYmcy5OYW1lLmdldChvKSxjXSxudWxsLG4sdCxpLG51bGwpO3JldHVybiBpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsYSxuLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKCFvKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3QgaT10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3IuTElORV9GQUNUT1IsdC9pKSl9ZWxzZXtjb25zdCBpPWEuc3BsaXQoL1xyXG4/fFxuLyksYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9bi5jaGFyc1RvR2x5cGhzKHQpLHI9bi5nZXRDaGFyUG9zaXRpb25zKHQpO2MucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IGkgb2YgYyl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsbixhLHQsaSkubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtvPTEyO2xldCBsPW8qci5MSU5FX0ZBQ1RPUixoPU1hdGgucm91bmQoZS9sKTtoPU1hdGgubWF4KGgscyk7Zm9yKDs7KXtsPWUvaDtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhsL3IuTElORV9GQUNUT1IpO2lmKCFpc1Rvb0JpZyhvKSlicmVhaztoKyt9fWNvbnN0e2ZvbnROYW1lOmMsZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9KDAsaS5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSkoe2ZvbnRTaXplOm8sZm9udE5hbWU6Yyxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxvXX1fcmVuZGVyVGV4dChlLHQsYSxpLHMsbyxjKXtsZXQgbDtpZigxPT09cyl7bD0oaS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9aS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLW99ZWxzZSBsPW87bD0oMCxuLm51bWJlclRvU3RyaW5nKShsKTtyZXR1cm5gJHtsfSAke2M9KDAsbi5udW1iZXJUb1N0cmluZykoYyl9IFRkICgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSYmdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZTtpZighbilyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKG4pKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhuKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KG4sYS5nZXRSYXcobikpO2NvbnN0IGk9bmV3IHMuRGljdChlKTtpLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbaSx0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9KDAsbi5udW1iZXJUb1N0cmluZykoaS90aGlzLmRhdGEubWF4TGVuKSxoPVtdLHU9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgdSloLnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGMpfUJUIGArZStgIDEgMCAwIDEgJHtzfSAke299IFRtICR7aC5qb2luKGAgJHtsfSAwIFRkIGApfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLGkscyxvLGMsbCl7Y29uc3QgaD10LnNwbGl0KC9cclxuP3xcbi8pLHU9W10sZD1uLTIqbztmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PXRoaXMuX3NwbGl0TGluZShlLGEscixkKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PTA9PT11Lmxlbmd0aD9vOjA7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQoZSxhLHIsbixzLHQsLXIpKX19Y29uc3QgZj11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpfUJUIGArZStgIDEgMCAwIDEgMCAke2l9IFRtICR7Zn0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixuPXt9KXtlPW4ubGluZXx8dC5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7Y29uc3QgaT1uLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKGkubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPW4ucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxuXT1zW3RdLGc9aVt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9bjt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLGkpO2xldCBzPW51bGwsbz1udWxsO2lmKGkpe2NvbnN0IGU9aS5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO289ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7bnVsbD09cyYmKHM9dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTtjb25zdCBjPXM/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U7aWYoYyl7Y29uc3Qgcz10aGlzLmFwcGVhcmFuY2UsbD1jLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpfHxyLklERU5USVRZX01BVFJJWDtvJiZjLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSkpO3RoaXMuYXBwZWFyYW5jZT1jO2NvbnN0IGg9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7dGhpcy5hcHBlYXJhbmNlPXM7Yy5kaWN0LnNldCgiTWF0cml4IixsKTtyZXR1cm4gaH1yZXR1cm57b3BMaXN0Om5ldyBnLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaT1uJiZuLnJvdGF0aW9uLGM9biYmbi52YWx1ZTtpZih2b2lkIDA9PT1pKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGwuZ2V0KCJUIil8fCIiKSx2YWx1ZTpjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KGM/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSk7bC5zZXQoIkFTIix1KTtsLnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9biYmbi5yb3RhdGlvbixjPW4mJm4udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09YylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PWMpcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1jJiYoYz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdOygwLG8ud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwsbSxwKTttLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBiPVt7cmVmOnRoaXMucmVmLGRhdGE6bS5qb2luKCIiKSx4ZmE6aH1dO251bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KTtyZXR1cm4gYn1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG89WzAsMCxhLGldLGM9LjgqTWF0aC5taW4oYSxpKTtsZXQgbCxoO2lmKCJjaGVjayI9PT10KXtsPXt3aWR0aDouNzU1KmMsaGVpZ2h0Oi43MDUqY307aD0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtsPXt3aWR0aDouNzkxKmMsaGVpZ2h0Oi43MDUqY307aD0ibCJ9ZWxzZSgwLHIudW5yZWFjaGFibGUpKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IHU9YHEgQlQgL1BkZkpzWmFEYiAke2N9IFRmIDAgZyAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChhLWwud2lkdGgpLzIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChpLWwuaGVpZ2h0KS8yKX0gVGQgKCR7aH0pIFRqIEVUIFFgLGQ9bmV3IHMuRGljdChlLnhyZWYpO2Quc2V0KCJGb3JtVHlwZSIsMSk7ZC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7ZC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7ZC5zZXQoIkJCb3giLG8pO2Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Quc2V0KCJMZW5ndGgiLHUubGVuZ3RoKTtjb25zdCBmPW5ldyBzLkRpY3QoZS54cmVmKSxnPW5ldyBzLkRpY3QoZS54cmVmKTtnLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Yuc2V0KCJGb250IixnKTtkLnNldCgiUmVzb3VyY2VzIixmKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSh1KTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9ZDt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IG49bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLGk9YS5nZXRLZXlzKCk7aWYoMD09PWkubGVuZ3RoKWkucHVzaCgiT2ZmIixuKTtlbHNlIGlmKDE9PT1pLmxlbmd0aCkiT2ZmIj09PWlbMF0/aS5wdXNoKG4pOmkudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihpLmluY2x1ZGVzKG4pKXtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixuKX1lbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSl8fG51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KCJPZmYiKXx8bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZihyIGluc3RhbmNlb2Ygcy5EaWN0KXtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpfHxudWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCgiT2ZmIil8fG51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTtoLkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWEuZmV0Y2hJZlJlZih0W2VdKSxuPUFycmF5LmlzQXJyYXkocik7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP2EuZmV0Y2hJZlJlZihyWzBdKTpyKSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/YS5mZXRjaElmUmVmKHJbMV0pOnIpfX19InN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPW4ucm90YXRpb247bGV0IG89bi52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1vKXJldHVybiBudWxsO3ZvaWQgMD09PW8/bz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2xldCBjPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGw9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1zJiYyNzAhPT1zfHwoW2wsY109W2MsbF0pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07by5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShjLTIpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxsLTQsdCxkLC0xKX1jb25zdCBwPWcqci5MSU5FX0ZBQ1RPUixtPShwLWcpLzIsYj1NYXRoLmZsb29yKGMvcCk7bGV0IHk7aWYoMT09PXUubGVuZ3RoKXtjb25zdCBlPXVbMF07eT1lLWUlYn1lbHNlIHk9dS5sZW5ndGg/dVswXTowO2NvbnN0IHc9TWF0aC5taW4oeStiKzEsaCksUz1bIi9UeCBCTUMgcSIsYDEgMSAke2x9ICR7Y30gcmUgVyBuYF07aWYodS5sZW5ndGgpe1MucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmUy5wdXNoKGAxICR7Yy0oZS15KzEpKnB9ICR7bH0gJHtwfSByZSBmYCl9Uy5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7Y30gVG1gKTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT8yOjAscj1lPT09eT9tOjA7Uy5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsbCwwLGEsLXArcikpfVMucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gUy5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0O3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5MSU5LO2NvbnN0IHQ9Z2V0UXVhZFBvaW50cyhlLmRpY3QsdGhpcy5yZWN0YW5nbGUpO3QmJih0aGlzLmRhdGEucXVhZFBvaW50cz10KTt0aGlzLmRhdGEuYm9yZGVyQ29sb3I9dGhpcy5kYXRhLmJvcmRlckNvbG9yfHx0aGlzLmRhdGEuY29sb3I7aC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO2xldCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKCF0KXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgYT10LmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOm51bGw7Y29uc3Qgbj1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTt0aGlzLmRhdGEucGFyZW50SWQ9biBpbnN0YW5jZW9mIHMuUmVmP24udG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXRBcnJheSgiUmVjdCIpO0FycmF5LmlzQXJyYXkoaSkmJjQ9PT1pLmxlbmd0aD90aGlzLmRhdGEucGFyZW50UmVjdD1yLlV0aWwubm9ybWFsaXplUmVjdChpKTp0aGlzLmRhdGEucGFyZW50UmVjdD1bMCwwLDAsMF07Y29uc3Qgbz10LmdldCgiUlQiKTsoMCxzLmlzTmFtZSkobyxyLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApJiYodD10LmdldCgiSVJUIikpO2lmKHQuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKHQuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPXQuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZSRUVURVhUfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHVzZXI6dSx2YWx1ZTpkfT1lLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO2Yuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2Yuc2V0KCJSZWN0IixsKTtjb25zdCBnPWAvSGVsdiAke2N9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobywhMCl9YDtmLnNldCgiREEiLGcpO2Yuc2V0KCJDb250ZW50cyIsZCk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0KCJSb3RhdGUiLGgpO3UmJmYuc2V0KCJUIiwoMCxyLnN0cmluZ1RvVVRGOFN0cmluZykodSkpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO2E/cC5zZXQoIk4iLGEpOnAuc2V0KCJOIixuKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6byxldmFsdWF0b3I6Yyx0YXNrOmx9PWEse2NvbG9yOmgsZm9udFNpemU6dSxyZWN0OmQscm90YXRpb246Zix2YWx1ZTpnfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYobyliLnNldCgiSGVsdiIsbyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShjLGwse2ZvbnROYW1lOiJIZWx2ZXRpY2EiLGZvbnRTaXplOnV9LG0pLFt3LFMseCxrXT1kO2xldCBDPXgtdyx2PWstUztmJTE4MCE9MCYmKFtDLHZdPVt2LENdKTtjb25zdCBGPWcuc3BsaXQoIlxuIiksTz11LzFlMztsZXQgVD0tMS8wO2NvbnN0IE09W107Zm9yKGxldCBlIG9mIEYpe2U9eS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7TS5wdXNoKGUpO2xldCB0PTA7Y29uc3QgYT15LmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl0Kz1lLndpZHRoKk87VD1NYXRoLm1heChULHQpfWxldCBFPTE7VD5DJiYoRT1DL1QpO2xldCBEPTE7Y29uc3QgTj1yLkxJTkVfRkFDVE9SKnUsUj1yLkxJTkVfREVTQ0VOVF9GQUNUT1IqdSxMPU4qRi5sZW5ndGg7TD52JiYoRD12L0wpO2NvbnN0IGo9dSpNYXRoLm1pbihFLEQpLCQ9WyJxIixgMCAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoQyl9ICR7KDAsbi5udW1iZXJUb1N0cmluZykodil9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoditSKX0gVG0gMCBUYyAkeygwLGkuZ2V0UGRmQ29sb3IpKGgsITApfWAsYC9IZWx2ICR7KDAsbi5udW1iZXJUb1N0cmluZykoail9IFRmYF0sXz0oMCxuLm51bWJlclRvU3RyaW5nKShOKTtmb3IoY29uc3QgZSBvZiBNKSQucHVzaChgMCAtJHtffSBUZCAoJHsoMCxyLmVzY2FwZVN0cmluZykoZSl9KSBUamApOyQucHVzaCgiRVQiLCJRIik7Y29uc3QgVT0kLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7WC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7WC5zZXQoIkJCb3giLFswLDAsQyx2XSk7WC5zZXQoIkxlbmd0aCIsVS5sZW5ndGgpO1guc2V0KCJSZXNvdXJjZXMiLG0pO2lmKGYpe2NvbnN0IGU9V2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoZixDLHYpO1guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEg9bmV3IHAuU3RyaW5nU3RyZWFtKFUpO0guZGljdD1YO3JldHVybiBIfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7Y29uc3QgYT10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IG49dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpO2xldCBzPW51bGwsbz10LmdldEFycmF5KCJJQyIpO2lmKG8pe289Z2V0UmdiQ29sb3IobyxudWxsKTtzPW8/QXJyYXkuZnJvbShvLChlPT5lLzI1NSkpOm51bGx9Y29uc3QgYz1zP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtyLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVQVJFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLnhyZWYsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6dCxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTphLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtufSAke2l9ICR7c30gcmVgKTtyP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUueHJlZixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjp0LGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYz1hKyhpLWEpLzIsbD1uKyhvLW4pLzIsaD0oaS1hKS8yKnMsdT0oby1uKS8yKnM7ZS5wdXNoKGAke2N9ICR7b30gbWAsYCR7YytofSAke299ICR7aX0gJHtsK3V9ICR7aX0gJHtsfSBjYCxgJHtpfSAke2wtdX0gJHtjK2h9ICR7bn0gJHtjfSAke259IGNgLGAke2MtaH0gJHtufSAke2F9ICR7bC11fSAke2F9ICR7bH0gY2AsYCR7YX0gJHtsK3V9ICR7Yy1ofSAke299ICR7Y30gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBhPXRoaXMuY29sb3I/QXJyYXkuZnJvbSh0aGlzLmNvbG9yLChlPT5lLzI1NSkpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxpPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKmksbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2l9IHdgLHN0cm9rZUNvbG9yOmEsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dGhpcy5kYXRhLnZlcnRpY2VzO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyO3QrKyllLnB1c2goYCR7YVt0XS54fSAke2FbdF0ueX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgdD1lLmRpY3QuZ2V0QXJyYXkoIklua0xpc3QiKTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm47Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCByPTAsbj10W2VdLmxlbmd0aDtyPG47cis9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYodFtlXVtyXSkseTphLmZldGNoSWZSZWYodFtlXVtyKzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIiksbj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGk9MipuLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7c1swXT1NYXRoLm1pbihzWzBdLHQueC1pKTtzWzFdPU1hdGgubWluKHNbMV0sdC55LWkpO3NbMl09TWF0aC5tYXgoc1syXSx0LngraSk7c1szXT1NYXRoLm1heChzWzNdLHQueStpKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOnQsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7cGF0aHM6aSxyZWN0Om8scm90YXRpb246Y309ZSxsPW5ldyBzLkRpY3QodCk7bC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2wuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7bC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7bC5zZXQoIlJlY3QiLG8pO2wuc2V0KCJJbmtMaXN0IixpLm1hcCgoZT0+ZS5wb2ludHMpKSk7bC5zZXQoIkYiLDQpO2wuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2wuc2V0KCJSb3RhdGUiLGMpO2NvbnN0IGg9bmV3IHMuRGljdCh0KTtsLnNldCgiQVAiLGgpO2E/aC5zZXQoIk4iLGEpOmguc2V0KCJOIixuKTtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Om8scm90YXRpb246YyxwYXRoczpsLHRoaWNrbmVzczpoLG9wYWNpdHk6dX09ZSxbZCxmLGcsbV09bztsZXQgYj1nLWQseT1tLWY7YyUxODAhPTAmJihbYix5XT1beSxiXSk7Y29uc3Qgdz1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmdy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBTPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtTLmxlbmd0aD0wO1MucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtTLnB1c2goYCR7YX0gY2ApfVMucHVzaCgiUyIpO3cucHVzaChTLmpvaW4oIlxuIikpfWNvbnN0IHg9dy5qb2luKCJcbiIpLGs9bmV3IHMuRGljdCh0KTtrLnNldCgiRm9ybVR5cGUiLDEpO2suc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2suc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2suc2V0KCJCQm94IixbMCwwLGIseV0pO2suc2V0KCJMZW5ndGgiLHgubGVuZ3RoKTtpZihjKXtjb25zdCBlPVdpZGdldEFubm90YXRpb24uX2dldFJvdGF0aW9uTWF0cml4KGMsYix5KTtrLnNldCgiTWF0cml4IixlKX1pZigxIT09dSl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpLGE9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCk7ci5zZXQoIkNBIix1KTtyLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRXh0R1N0YXRlIikpO2Euc2V0KCJSMCIscik7ZS5zZXQoIkV4dEdTdGF0ZSIsYSk7ay5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgQz1uZXcgcC5TdHJpbmdTdHJlYW0oeCk7Qy5kaWN0PWs7cmV0dXJuIEN9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKGUuZGljdCxudWxsKSl7Y29uc3QgdD10aGlzLmFwcGVhcmFuY2UmJnRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzEsMSwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGZpbGxDb2xvcjp0LGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueX0gbWAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsbj10WzJdLng7Y29uc3QgaT10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke259ICR7aStyfSBtYCk7ZG97bis9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7bn0gJHtpK3J9IGxgKX13aGlsZShuPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxpLTIqYSxpKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVB9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgZC5GaWxlU3BlYyhlLmRpY3QuZ2V0KCJGUyIpLGUueHJlZik7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmZpbGU9dC5zZXJpYWxpemFibGV9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7KDAsci5lc2NhcGVQREZOYW1lKSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9O3QuZ2V0UGRmQ29sb3I9Z2V0UGRmQ29sb3I7dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMTIpLHM9YSgxMyksbz1hKDMpLGM9YSg4KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIHMuRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBjLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIG4uT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBvLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTppLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7KDAsbi53YXJuKShgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3QgYT1lWzBdLzI1NTtyZXR1cm5gJHsoMCxyLm51bWJlclRvU3RyaW5nKShhKX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxyLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29sb3JTcGFjZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSg0KTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSXRlbShlLHQsYSxuKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLGkscyxvKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxyLG4saSxzLG8sYyl7Y29uc3QgbD10KmE7bGV0IGg9bnVsbDtjb25zdCB1PTE8PHMsZD1hIT09bnx8dCE9PXI7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKHMpKWg9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZsPnUmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9czw9OD9uZXcgVWludDhBcnJheSh1KTpuZXcgVWludDE2QXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1O2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsdSxhLDAscywwKTtpZihkKXtoPW5ldyBVaW50OEFycmF5KDMqbCk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGw7Kyt0KXtjb25zdCByPTMqb1t0XTtoW2UrK109YVtyXTtoW2UrK109YVtyKzFdO2hbZSsrXT1hW3IrMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IHI9MDtyPGw7KytyKXtjb25zdCBuPTMqb1tyXTtlW3QrK109YVtuXTtlW3QrK109YVtuKzFdO2VbdCsrXT1hW24rMl07dCs9Y319fWVsc2UgaWYoZCl7aD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypsKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsbCxoLDAscywwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxyKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxyLG4saSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPWEvbixjPXIvaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkobiksZD0zKmE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmMpKmQ7Zm9yKGxldCBhPTA7YTxuO2ErKyl7bD1yK3VbYV07dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107aCs9c319fShoLGUsdCxhLHIsbixjKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgbj0wLHM9cippO248cztuKyspe2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO3QrPWN9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGEscil7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgaSxzO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2Ygbi5OYW1lJiYoaT1lLm5hbWUpOyhpfHxzKSYmYS5zZXQoaSxzLHIpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7Y29uc3Qgcj1hLmdldEJ5UmVmKGUpO2lmKHIpcmV0dXJuIHI7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2Ygbi5OYW1lKXtjb25zdCB0PWEuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3QgaT10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixpKTtyZXR1cm4gaX1zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IGk9dGhpcy5nZXRDYWNoZWQoZSx0LG4pO2lmKGkpcmV0dXJuIGk7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixzKTtyZXR1cm4gc31zdGF0aWMgX3BhcnNlKGUsdCxhPW51bGwsaSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCByPWEuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxhLGkpO2U9czticmVha319fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGc7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Zz1zLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IGMoZCxmLGcpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgcD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IGwoZCxmLGcscCk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPW0uZ2V0KCJOIik7Y29uc3QgYj1tLmdldCgiQWx0ZXJuYXRlIik7aWYoYil7Y29uc3QgZT10aGlzLl9wYXJzZShiLHQsYSxpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxyLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnU9ZVsxXXx8bnVsbDt1JiYodT10aGlzLl9wYXJzZSh1LHQsYSxpKSk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1ModSk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOnU9dGhpcy5fcGFyc2UoZVsxXSx0LGEsaSk7Y29uc3QgeT10LmZldGNoSWZSZWYoZVsyXSkrMSx3PXQuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyh1LHksdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IFM9dC5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShTKT9TLmxlbmd0aDoxO3U9dGhpcy5fcGFyc2UoZVsyXSx0LGEsaSk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sdSx4KTtjYXNlIkxhYiI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3Qgaz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgaChkLGYsayk7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtufWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY215ayIsbmV3IG8pfX0pfX10LkNvbG9yU3BhY2U9Q29sb3JTcGFjZTtjbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LG4sMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0obiwwLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy50aW50Rm4sYz10aGlzLmJhc2UsbD0xLygoMTw8aSktMSksaD1jLm51bUNvbXBzLHU9Yy51c2VzWmVyb1RvT25lUmFuZ2UsZD0oYy5pc1Bhc3N0aHJvdWdoKDgpfHwhdSkmJjA9PT1zO2xldCBmPWQ/bjowO2NvbnN0IGc9ZD9yOm5ldyBVaW50OENsYW1wZWRBcnJheShoKmEpLHA9dGhpcy5udW1Db21wcyxtPW5ldyBGbG9hdDMyQXJyYXkocCksYj1uZXcgRmxvYXQzMkFycmF5KGgpO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXtmb3Iodz0wO3c8cDt3KyspbVt3XT1lW3QrK10qbDtvKG0sMCxiLDApO2lmKHUpZm9yKHc9MDt3PGg7dysrKWdbZisrXT0yNTUqYlt3XTtlbHNle2MuZ2V0UmdiSXRlbShiLDAsZyxmKTtmKz1ofX1kfHxjLmdldFJnYkJ1ZmZlcihnLDAsYSxyLG4sOCxzKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyp0O3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KG4pO2lmKGEgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhuKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKm47dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPGE7KytpKXtjb25zdCBhPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsYSwxLHIsbiw4LHMpO24rPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7KDAsci53YXJuKSgiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXsoMCxyLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPW59Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLG4saSxzKXtpZig4PT09aSYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksbik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBvPWZ1bmN0aW9uIERldmljZUNteWtDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuKXtjb25zdCBpPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW25dPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltuKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW24rMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBjbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnZlcnRUb1JnYihlLHQsbyxyLG4pO3QrPTQ7bis9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fX0oKSxjPWZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2NvbnN0IHM9KHRbYV0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7cltuXT1jO3JbbisxXT1jO3JbbisyXT1jfXJldHVybiBjbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7dD10fHxbMCwwLDBdO2E9YXx8MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyk7ZnVuY3Rpb24gbWF0cml4UHJvZHVjdChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19ZnVuY3Rpb24gc1JHQlRyYW5zZmVyRnVuY3Rpb24oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2FkanVzdFRvUmFuZ2UoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmFkanVzdFRvUmFuZ2UoMCwxLDEuMDU1KmUqKigxLzIuNCktLjA1NSl9ZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShlLHQsYSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxhKSl9ZnVuY3Rpb24gZGVjb2RlTChlKXtyZXR1cm4gZTwwPy1kZWNvZGVMKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOi4wMDExMDcwNTY0NTk4Nzk0NTM5KmV9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksaz1zO2tbMF09dztrWzFdPVM7a1syXT14O2NvbnN0IEM9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LGssQyk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LEMsdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO2E9YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtuPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9bltpXT0yNTUqTWF0aC5zcXJ0KHApO25baSsxXT0yNTUqTWF0aC5zcXJ0KG0pO25baSsyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dD10fHxbMCwwLDBdO2E9YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnRpYWxFdmFsdWF0b3I9dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9dm9pZCAwO3ZhciByPWEoMiksbj1hKDE0KSxpPWEoMykscz1hKDMyKSxvPWEoMzYpLGM9YSgzNSksbD1hKDM5KSxoPWEoMzgpLHU9YSg0OCksZD1hKDQ5KSxmPWEoNDApLGc9YSg1NSkscD1hKDE1KSxtPWEoNTcpLGI9YSg4KSx5PWEoNSksdz1hKDU4KSxTPWEoMTIpLHg9YSgxNyksaz1hKDM3KSxDPWEoNCksdj1hKDQzKSxGPWEoNTkpLE89YSg2MCksVD1hKDYxKTtjb25zdCBNPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMCxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxFPTEsRD0yLE49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX0oMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0JiZlLmFyZ3NbMF0mJmUuYXJnc1swXS5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIGdldCBUSU1FX1NMT1RfRFVSQVRJT05fTVMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiVElNRV9TTE9UX0RVUkFUSU9OX01TIiwyMCl9c3RhdGljIGdldCBDSEVDS19USU1FX0VWRVJZKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6bixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsSW1hZ2VDYWNoZTpvLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPW47dGhpcy5idWlsdEluQ01hcENhY2hlPWk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLm9wdGlvbnM9Y3x8TTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZy5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IGkuUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IG49W2VdLHM9dGhpcy54cmVmO2Zvcig7bi5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBpLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7bi5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxuPWF3YWl0IGZldGNoKHQpO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7bi5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBiLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsbC5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgbjtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP249YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7bj1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIW4pcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG5ldyBiLlN0cmVhbShuKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLG4scyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZuLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxpLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGEmJmEuYmFja2Ryb3Ape3M9c3x8Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1uLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZuLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9VC5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHguRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ISFkJiZkWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhaTtwPVtnXTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1nPVQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6byx3aWR0aDpoLGhlaWdodDp1LGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiB4LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhZCYmZFswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoZy5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxmKTtpJiZzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxhcmdzOltdLG9wdGlvbmFsQ29udGVudDpmfSk7cmV0dXJufWNvbnN0IG09YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KG0pO3RoaXMuX3NlbmRJbWdEYXRhKG0sZyk7cD1be2RhdGE6bSx3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodCxpbnRlcnBvbGF0ZTpnLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBpPW5ldyBULlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1pLmNyZWF0ZUltYWdlRGF0YSghMCk7bi5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsdz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe3c9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO3cmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1uLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO1QuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGU9PntnPWUuY3JlYXRlSW1hZ2VEYXRhKCExKTtpJiZsJiZ3JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUobCxnLmRhdGEubGVuZ3RoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxnLHcpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt5fSI6ICIke2V9Ii5gKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxudWxsLHcpfSkpO24uYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZVhPYmplY3QscCxmKTtpZihpKXtzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO2lmKGwpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGwsdGhpcy5wYWdlSW5kZXgpO3cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGwse29iaklkOnksZm46ci5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpwLG9wdGlvbmFsQ29udGVudDpmLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGM9ZS5nZXQoIlRSIik7aWYoKDAsZy5pc1BERkZ1bmN0aW9uKShjKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQscyxvLGEscixuLnN0YXRlLmNsb25lKCksaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxnLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IHI9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyKys7aWYoKDAsaS5pc05hbWUpKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighKDAsZy5pc1BERkZ1bmN0aW9uKSh0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbz1uZXcgVWludDhBcnJheSgyNTYpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe2NbMF09ZS8yNTU7cyhjLDAsYywwKTtvW2VdPTI1NSpjWzBdfDB9YS5wdXNoKG8pO24rK31yZXR1cm4gMSE9PXImJjQhPT1yfHwwPT09bj9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMsbyxjLGwpe2NvbnN0IGg9bmV3IE8uT3BlcmF0b3JMaXN0LGQ9aS5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDpofSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWguZ2V0SVIoKSxyPSgwLHUuZ2V0VGlsaW5nUGF0dGVybklSKShhLHMsdCk7by5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpO28uYWRkT3AoZSxyKTtzLm9iaklkJiZsLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSk7KDAsci53YXJuKShgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9aGFuZGxlU2V0Rm9udChlLHQsYSxuLG8sYyxsPW51bGwsaD1udWxsKXtjb25zdCB1PXQmJnRbMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udCh1LGEsZSxsLGgpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG8pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pnt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZFR5cGUzfSk7cmV0dXJuIG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX0pKTp0KSkudGhlbigoZT0+e2MuZm9udD1lLmZvbnQ7ZS5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGUubG9hZGVkTmFtZX0pKX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgYT10LmZvbnQsbj1hLmNoYXJzVG9HbHlwaHMoZSk7aWYoYS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSk7KDAsci53YXJuKShgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpuLHRhc2s6cyxzdGF0ZU1hbmFnZXI6byxsb2NhbEdTdGF0ZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe2NvbnN0IGg9dC5vYmpJZDtsZXQgdT0hMDtjb25zdCBkPVtdO2xldCBmPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBuIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBjPXQuZ2V0KG4pO3N3aXRjaChuKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6ZC5wdXNoKFtuLGNdKTticmVhaztjYXNlIkZvbnQiOnU9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLGNbMF0sYSxzLG8uc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtkLnB1c2goW24sW2UsY1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmQucHVzaChbbixub3JtYWxpemVCbGVuZE1vZGUoYyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkoYywiTm9uZSIpKXtkLnB1c2goW24sITFdKTticmVha31pZihjIGluc3RhbmNlb2YgaS5EaWN0KXt1PSExO2Y9Zi50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhjLGUsYSxzLG8sbCkpKTtkLnB1c2goW24sITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGMpO2QucHVzaChbbix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pfX1yZXR1cm4gZi50aGVuKChmdW5jdGlvbigpe2QubGVuZ3RoPjAmJmEuYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtkXSk7dSYmYy5zZXQobixoLGQpfSkpfWxvYWRGb250KGUsdCxhLG49bnVsbCxjPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSksbD10aGlzLnhyZWY7bGV0IGg7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihoPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihoPXQuZ2V0UmF3KGUpKX1pZighaCl7Y29uc3QgYT1gRm9udCAiJHtlfHx0JiZ0LnRvU3RyaW5nKCl9IiBpcyBub3QgYXZhaWxhYmxlYDtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgJHthfS5gKTtyZXR1cm4gZXJyb3JGb250KCl9dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KTsoMCxyLndhcm4pKGAke2F9IC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7aD1ufHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGgpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMoaCkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChoKTtpZighKCh0PWwuZmV0Y2hJZlJlZihoKSlpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIGVycm9yRm9udCgpO2lmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDt0cnl7ZD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtkLmNzc0ZvbnRJbmZvPWN9Y2F0Y2goZSl7KDAsci53YXJuKShgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6ZixoYXNoOmd9PWQscD1oIGluc3RhbmNlb2YgaS5SZWY7bGV0IG07cCYmKG09YGYke2gudG9TdHJpbmcoKX1gKTtpZihnJiZmIGluc3RhbmNlb2YgaS5EaWN0KXtmLmZvbnRBbGlhc2VzfHwoZi5mb250QWxpYXNlcz1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdCBlPWYuZm9udEFsaWFzZXM7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpfX1lbHNlIGVbZ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07cCYmKGVbZ10uYWxpYXNSZWY9aCk7bT1lW2ddLmZvbnRJRH1pZihwKXRoaXMuZm9udENhY2hlLnB1dChoLHUucHJvbWlzZSk7ZWxzZXttfHwobT10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKSk7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKX0oMCxyLmFzc2VydCkobSYmbS5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dm9pZCAwIT09ZS5mb250VHlwZSYmbC5zdGF0cy5hZGRGb250VHlwZShlLmZvbnRUeXBlKTt1LnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRyYW5zbGF0ZX0pOygwLHIud2FybikoYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTt0cnl7Y29uc3QgZT1mJiZmLmdldCgiRm9udEZpbGUzIiksdD1lJiZlLmdldCgiU3VidHlwZSIpLGE9KDAsby5nZXRGb250VHlwZSkoZC50eXBlLHQmJnQubmFtZSk7dm9pZCAwIT09YSYmbC5zdGF0cy5hZGRGb250VHlwZShhKX1jYXRjaChlKXt9dS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIHUucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsbj0hMSl7Y29uc3QgaT1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihpPDB8fGUuZm5BcnJheVtpXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKG4peygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgaTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107aT1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86aT1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDppPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxpXSk7biYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3Qgbj1lLmFyZ3NBcnJheVtpXTtuWzBdLnB1c2godCk7blsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9blsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4gUy5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JDb2xvclNwYWNlfSk7KDAsci53YXJuKShgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBuPXIuZ2V0KGUpO2lmKCFuKXtjb25zdCBpPXUuUGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGEpLmdldElSKCk7bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLnNldChlLG4pO3RoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSl9cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsbCxoLGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJmguZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCx1LmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09RSl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxtLGksZSxjLGgpfWlmKHM9PT1EKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6cz1udWxsLGZhbGxiYWNrRm9udERpY3Q6bz1udWxsfSl7YT1hfHxpLkRpY3QuZW1wdHk7cz1zfHxuZXcgRXZhbFN0YXRlO2lmKCFuKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxsPXRoaXMueHJlZjtsZXQgaD0hMTtjb25zdCB1PW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxkPW5ldyBtLkxvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IG0uTG9jYWxHU3RhdGVDYWNoZSxnPW5ldyBtLkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fGkuRGljdC5lbXB0eSx3PWEuZ2V0KCJQYXR0ZXJuIil8fGkuRGljdC5lbXB0eSx4PW5ldyBTdGF0ZU1hbmFnZXIocyksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbCx4KSxDPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWsuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKW4uYWRkT3Aoci5PUFMucmVzdG9yZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsbi5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscyl9Y2F0Y2goZSl7cyhlKX19KSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Qy5yZXNldCgpO2NvbnN0IG09e307bGV0IHYsRixPLFQsTSxFO2Zvcig7ISh2PUMuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighay5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxzPW0uZm47c3dpdGNoKDB8cyl7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6RT1lWzBdaW5zdGFuY2VvZiBpLk5hbWU7TT1lWzBdLm5hbWU7aWYoRSl7Y29uc3QgdD11LmdldEJ5TmFtZShNKTtpZih0KXtuLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBvPWIuZ2V0UmF3KE0pO2lmKG8gaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG8pO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2UoKTtyZXR1cm59Y29uc3QgYT1jLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGMucGFnZUluZGV4KTtpZihhKXtuLmFkZERlcGVuZGVuY3koYS5vYmpJZCk7bi5hZGRJbWFnZU9wcyhhLmZuLGEuYXJncyxhLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1vPWwuZmV0Y2gobyl9aWYoIShvIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBoPW8uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aC5uYW1lKWlmKCJJbWFnZSIhPT1oLm5hbWUpe2lmKCJQUyIhPT1oLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtoLm5hbWV9YCk7KDAsci5pbmZvKSgiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm8sb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLHMpO2Vsc2V7eC5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KGEsbyxudWxsLG4sdCx4LnN0YXRlLmNsb25lKCksZCkudGhlbigoZnVuY3Rpb24oKXt4LnJlc3RvcmUoKTtlKCl9KSxzKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsbix0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7bi5hZGREZXBlbmRlbmN5KGUpO24uYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PXUuZ2V0QnlOYW1lKFIpO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxqPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LGopKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7bi5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7bi5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9Uy5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4obixyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKG4sci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgXz0kLmdldChlWzBdLm5hbWUpO2lmKCFfKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOl8scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2YgaS5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmbi5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgobixzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57bi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTtjLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSk7KDAsci53YXJuKShgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgaS5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihGPTAsTz1lLmxlbmd0aDtGPE8mJiEoZVtGXWluc3RhbmNlb2YgaS5EaWN0KTtGKyspO2lmKEY8Tyl7KDAsci53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrcyk7Y29udGludWV9fX1uLmFkZE9wKHMsZSl9aWYodiluZXh0KE4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JPcGVyYXRvckxpc3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsc3RhdGVNYW5hZ2VyOm49bnVsbCxjb21iaW5lVGV4dEl0ZW1zOnM9ITEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bz0hMSxzaW5rOmMsc2VlblN0eWxlczpsPW5ldyBTZXQsdmlld0JveDp1LG1hcmtlZENvbnRlbnREYXRhOmQ9bnVsbH0pe2E9YXx8aS5EaWN0LmVtcHR5O249bnx8bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtvJiYoZD1kfHx7bGV2ZWw6MH0pO2NvbnN0IGY9KDAsaC5nZXROb3JtYWxpemVkVW5pY29kZXMpKCksZz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHA9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sYj1bIiAiLCIgIl07bGV0IFM9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oUysxKSUyLGE9IiAiIT09YltTXSYmIiAiPT09Ylt0XTtiW1NdPWU7Uz10O3JldHVybiBhfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7YlswXT1iWzFdPSIgIjtTPTB9Y29uc3QgeD10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxPPW5ldyBtLkxvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsayxuKTtsZXQgTTtmdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpNLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE0uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihwLmluaXRpYWxpemVkKXJldHVybiBwO2NvbnN0IGU9TS5mb250LHQ9ZS5sb2FkZWROYW1lO2lmKCFsLmhhcyh0KSl7bC5hZGQodCk7Zy5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9fXAuZm9udE5hbWU9dDtjb25zdCBhPXAudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7cC53aWR0aD1wLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3AuaGVpZ2h0PXAudG90YWxIZWlnaHQ9MDtwLnZlcnRpY2FsPSEwfWVsc2V7cC53aWR0aD1wLnRvdGFsV2lkdGg9MDtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtwLnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLG49TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7cC50ZXh0QWR2YW5jZVNjYWxlPW4qcjtwLnRyYWNraW5nU3BhY2VNaW49LjEqTS5mb250U2l6ZTtwLm5vdEFTcGFjZT0uMDMqTS5mb250U2l6ZTtwLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKk0uZm9udFNpemU7cC5zcGFjZUluRmxvd01pbj0uMSpNLmZvbnRTaXplO3Auc3BhY2VJbkZsb3dNYXg9LjYqTS5mb250U2l6ZTtwLmhhc0VPTD0hMTtwLmluaXRpYWxpemVkPSEwO3JldHVybiBwfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFwLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXAudGV4dEFkdmFuY2VTY2FsZSl7aWYocC52ZXJ0aWNhbCl7cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlO3AuaGVpZ2h0PTB9ZWxzZXtwLnRvdGFsV2lkdGgrPXAud2lkdGgqcC50ZXh0QWR2YW5jZVNjYWxlO3Aud2lkdGg9MH1wLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLG4pe3JldHVybiB4LmxvYWRGb250KGUsbixhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb250LmlzVHlwZTNGb250P2UubG9hZFR5cGUzRGF0YSh4LGEsdCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSk6ZX0pKS50aGVuKChmdW5jdGlvbihlKXtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbigpe2NvbnN0IGU9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgdD1lWzRdLGE9ZVs1XTtjb25zdCByPXQtdVswXSxuPWEtdVsxXTtpZihyPDB8fHI+dVsyXXx8bjwwfHxuPnVbM10pcmV0dXJuITE7aWYoIXN8fCFNLmZvbnR8fCFwLnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9cC5wcmV2VHJhbnNmb3JtWzRdLG89cC5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT10JiZvPT09YSlyZXR1cm4hMDtsZXQgYz0tMTtlWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0/Yz1lWzBdPjA/MDoxODA6ZVsxXSYmMD09PWVbMF0mJjA9PT1lWzNdJiYoYz1lWzFdPjA/OTA6MjcwKTtzd2l0Y2goYyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W3QsYV09W2EsdF07W2ksb109W28saV07YnJlYWs7Y2FzZSAxODA6W3QsYSxpLG9dPVstdCwtYSwtaSwtb107YnJlYWs7Y2FzZSAyNzA6W3QsYV09Wy1hLC10XTtbaSxvXT1bLW8sLWldO2JyZWFrO2RlZmF1bHQ6W3QsYV09YXBwbHlJbnZlcnNlUm90YXRpb24odCxhLGUpO1tpLG9dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbyxwLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0oby1hKS9wLnRleHRBZHZhbmNlU2NhbGUscj10LWksbj1NYXRoLnNpZ24ocC5oZWlnaHQpO2lmKGU8bipwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHIpPi41KnAud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhyKT5wLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnAubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qcC50cmFja2luZ1NwYWNlTWluKXAuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSxwLnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXAuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0Ok1hdGguYWJzKGUpLHRyYW5zZm9ybTpwLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cC5mb250TmFtZSxoYXNFT0w6ITF9KX1lbHNlIHAuaGVpZ2h0Kz1lO3JldHVybiEwfWNvbnN0IGw9KHQtaSkvcC50ZXh0QWR2YW5jZVNjYWxlLGg9YS1vLGQ9TWF0aC5zaWduKHAud2lkdGgpO2lmKGw8ZCpwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGgpPi41KnAuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoaCk+cC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfWw8PWQqcC5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobDw9ZCpwLnRyYWNraW5nU3BhY2VNaW4pcC53aWR0aCs9bDtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGwscC5wcmV2VHJhbnNmb3JtLGQpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7Zy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyhsKSxoZWlnaHQ6MCx0cmFuc2Zvcm06cC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnAuZm9udE5hbWUsaGFzRU9MOiExfSl9ZWxzZSBwLndpZHRoKz1sO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1NLmZvbnQ7aWYoIWUpe2NvbnN0IGU9TS5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxuPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3Qgcz1yW2VdO2lmKHMuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBvPU0uY2hhclNwYWNpbmcrKGUrMT09PWk/dDowKSxjPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGM9cy52bWV0cmljP3Mudm1ldHJpY1swXTotYyk7bGV0IGw9YypuO2lmKHMuaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtvKz0tbCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1vKX1lbHNle28rPWwrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgobypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKCkpY29udGludWU7Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtzLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobD0wKTtpZihhLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxsKTtsPU1hdGguYWJzKGwpO3UuaGVpZ2h0Kz1sfWVsc2V7bCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChsLDApO3Uud2lkdGgrPWx9bCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtsZXQgZD1zLnVuaWNvZGU7ZD1mW2RdfHxkO2Q9KDAsaC5yZXZlcnNlSWZSdGwpKGQpO3NhdmVMYXN0Q2hhcihkKSYmdS5zdHIucHVzaCgiICIpO3Uuc3RyLnB1c2goZCk7byYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLW8pOk0udHJhbnNsYXRlVGV4dE1hdHJpeChvKk0udGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYocC5pbml0aWFsaXplZCl7cC5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0uZm9udC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqcC5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSpwLnNwYWNlSW5GbG93TWF4KXtpZihwLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3Auc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCByPXAuZm9udE5hbWU7bGV0IG49MDtpZihwLnZlcnRpY2FsKXtuPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhuKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyLGhhc0VPTDohMX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zy5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lLnN0ci5qb2luKCIiKSxhPSgwLHcuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShwKSk7cC5pbml0aWFsaXplZD0hMTtwLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Zy5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2MuZW5xdWV1ZShnLHQpO2cuaXRlbXM9W107Zy5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxoKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsYy5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaCl9Y2F0Y2goZSl7aChlKX19KSxoKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RS5yZXNldCgpO2NvbnN0IGY9e307bGV0IHAsbT1bXTtmb3IoOyEocD1FLmNoZWNrKCkpOyl7bS5sZW5ndGg9MDtmLmFyZ3M9bTtpZighVC5yZWFkKGYpKWJyZWFrO009bi5zdGF0ZTtjb25zdCBlPWYuZm47bT1mLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zZXRGb250OnZhciBiPW1bMF0ubmFtZSx3PW1bMV07aWYoTS5mb250JiZiPT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPWI7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udChiLG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPW1bMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPW1bMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgobVswXSxtWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tbVsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1jb25zdCBlPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsaD1tWzBdO2ZvcihsZXQgdD0wLGE9aC5sZW5ndGg7dDxhLTE7dCsrKXtjb25zdCBhPWhbdF07aWYoInN0cmluZyI9PXR5cGVvZiBhKUMucHVzaChhKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSYmMCE9PWEpe2NvbnN0IHQ9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp0LGV4dHJhU3BhY2luZzphKmV9KX19Y29uc3QgZj1oLmF0KC0xKTsic3RyaW5nIj09dHlwZW9mIGYmJkMucHVzaChmKTtpZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2Ugci5PUFMuc2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOm1bMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczptWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPW1bMF07TS5jaGFyU3BhY2luZz1tWzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6bVsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRYT2JqZWN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dnx8KHY9YS5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5KTt2YXIgUz1tWzBdaW5zdGFuY2VvZiBpLk5hbWUsRD1tWzBdLm5hbWU7aWYoUyYmRi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxoKXtpZighUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGY9di5nZXRSYXcoRCk7aWYoZiBpbnN0YW5jZW9mIGkuUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKHguZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYseC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Yuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHA9bi5zdGF0ZS5jbG9uZSgpLG09bmV3IFN0YXRlTWFuYWdlcihwKSxiPWYuZGljdC5nZXRBcnJheSgiTWF0cml4Iik7QXJyYXkuaXNBcnJheShiKSYmNj09PWIubGVuZ3RoJiZtLnRyYW5zZm9ybShiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07eC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxjb21iaW5lVGV4dEl0ZW1zOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6byxzaW5rOncsc2VlblN0eWxlczpsLHZpZXdCb3g6dSxtYXJrZWRDb250ZW50RGF0YTpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxGLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksaCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOlM9bVswXWluc3RhbmNlb2YgaS5OYW1lO0Q9bVswXS5uYW1lO2lmKFMmJk8uZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldChEKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChELHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXtkLmxldmVsKys7Zy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzptWzBdaW5zdGFuY2VvZiBpLk5hbWU/bVswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7ZC5sZXZlbCsrO2xldCBlPW51bGw7bVsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1tWzFdLmdldCgiTUNJRCIpKTtnLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3guaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tY2lkJHtlfWA6bnVsbCx0YWc6bVswXWluc3RhbmNlb2YgaS5OYW1lP21bMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7aWYoMD09PWQubGV2ZWwpYnJlYWs7ZC5sZXZlbC0tO2cuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX19aWYoZy5pdGVtcy5sZW5ndGg+PWMuZGVzaXJlZFNpemUpe3A9ITA7YnJlYWt9fWlmKHApbmV4dChOKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcztjb25zdCBsPXRoaXMucmVhZFRvVW5pY29kZShhLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmKGEuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtJiYocz10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7dT1lLmdldCgiRW5jb2RpbmciKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKTtkPWQgaW5zdGFuY2VvZiBpLk5hbWU/ZC5uYW1lOm51bGw7aWYodS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBpLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGUpOygwLHIud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9aWYoZClhLmRlZmF1bHRFbmNvZGluZz0oMCxjLmdldEVuY29kaW5nKShkKTtlbHNle2NvbnN0IGU9ISEoYS5mbGFncyZvLkZvbnRGbGFncy5TeW1ib2xpYyksdD0hIShhLmZsYWdzJm8uRm9udEZsYWdzLk5vbnN5bWJvbGljKTt1PWMuU3RhbmRhcmRFbmNvZGluZzsiVHJ1ZVR5cGUiIT09YS50eXBlfHx0fHwodT1jLldpbkFuc2lFbmNvZGluZyk7aWYoZSl7dT1jLk1hY1JvbWFuRW5jb2Rpbmc7YS5maWxlJiYhYS5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KGEubmFtZSk/dT1jLlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PWMuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKX1hLmRlZmF1bHRFbmNvZGluZz11fWEuZGlmZmVyZW5jZXM9aDthLmJhc2VFbmNvZGluZ05hbWU9ZDthLmhhc0VuY29kaW5nPSEhZHx8aC5sZW5ndGg+MDthLmRpY3Q9ZTtyZXR1cm4gbC50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtyZXR1cm4gdGhpcy5idWlsZFRvVW5pY29kZShhKX0pKS50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtzJiYoYS5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChzLGUpKTtyZXR1cm4gYX0pKX1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpeygwLHIuYXNzZXJ0KSghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBhPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihuW2VdPXQpfWNvbnN0IG89KDAsay5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcihjb25zdCByIGluIG4pe2xldCBzPW5bcl07aWYoIiI9PT1zKWNvbnRpbnVlO2xldCBsPW9bc107aWYodm9pZCAwIT09bCl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpO2NvbnRpbnVlfWxldCB1PTA7c3dpdGNoKHNbMF0pe2Nhc2UiRyI6Mz09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihzLmxlbmd0aD49MyYmcy5sZW5ndGg8PTQpe2NvbnN0IGE9cy5zdWJzdHJpbmcoMSk7aWYodCl7dT1wYXJzZUludChhLDE2KTticmVha311PSthO2lmKE51bWJlci5pc05hTih1KSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpsPSgwLGguZ2V0VW5pY29kZUZvckdseXBoKShzLG8pOy0xIT09bCYmKHU9bCl9aWYodT4wJiZ1PD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKHUpKXtpZihpJiZ1PT09K3Ipe2NvbnN0IGU9KDAsYy5nZXRFbmNvZGluZykoaSk7aWYoZSYmKHM9ZVtyXSkpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShvW3NdKTtjb250aW51ZX19YVtyXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh1KX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIWUudG9Vbmljb2RlJiZlLnRvVW5pY29kZS5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1pLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgbi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgYT1vLmxvb2t1cCh0KTthJiYoY1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChhLmNoYXJDb2RlQXQoMCk8PDgpK2EuY2hhckNvZGVBdCgxKSkpfSkpO3JldHVybiBuZXcgZi5Ub1VuaWNvZGVNYXAoYyl9cmV0dXJuIG5ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfXJlYWRUb1VuaWNvZGUoZSl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIGkuTmFtZT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwP25ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBmLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtP24uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGYuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpe3RbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk7cmV0dXJufWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtjb25zdCB0PWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JnQpKXtyLnB1c2godCk7Y29udGludWV9ZSs9Mjtjb25zdCBuPWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJnQpPDwxMCkrKDEwMjMmbikrNjU1MzYpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0KX0pLChlPT57aWYoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pOygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBjPVtdO2xldCBsLGgsdSxkLGYsZyxwLG07aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO209ZS5nZXQoIlciKTtpZihtKWZvcihoPTAsdT1tLmxlbmd0aDtoPHU7aCsrKXtnPXIuZmV0Y2hJZlJlZihtW2grK10pO3A9ci5mZXRjaElmUmVmKG1baF0pO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspbltnKytdPXIuZmV0Y2hJZlJlZihwW2RdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKG1bKytoXSk7Zm9yKGQ9ZztkPD1wO2QrKyluW2RdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2w9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGg9MCx1PXQubGVuZ3RoO2g8dTtoKyspe2c9ci5mZXRjaElmUmVmKHRbaCsrXSk7cD1yLmZldGNoSWZSZWYodFtoXSk7aWYoQXJyYXkuaXNBcnJheShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKyljW2crK109W3IuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2RdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKV07Zm9yKGQ9ZztkPD1wO2QrKyljW2RdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO209ZS5nZXQoIldpZHRocyIpO2lmKG0pe2Q9bztmb3IoaD0wLHU9bS5sZW5ndGg7aDx1O2grKyluW2QrK109ci5mZXRjaElmUmVmKG1baF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYj0hMCx5PXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoeSl7aWYoeSE9PXQpe2I9ITE7YnJlYWt9fWVsc2UgeT10fWImJihhLmZsYWdzfD1vLkZvbnRGbGFncy5GaXhlZFBpdGNoKTthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9bDthLnZtZXRyaWNzPWN9aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGwuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLHYuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBGLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6Yyx0eXBlOmgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpwfSl7Y29uc3QgbT0iVHlwZTMiPT09aDtsZXQgeTtpZighZSl7aWYoIW0pe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkJhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkIik7ZT1lLm5hbWUucmVwbGFjZSgvWyxfXS9nLCItIik7Y29uc3Qgbj10aGlzLmdldEJhc2VGb250TWV0cmljcyhlKSxjPWUuc3BsaXQoIi0iKVswXSxkPSh0aGlzLmlzU2VyaWZGb250KGMpP28uRm9udEZsYWdzLlNlcmlmOjApfChuLm1vbm9zcGFjZT9vLkZvbnRGbGFncy5GaXhlZFBpdGNoOjApfCgoMCxsLmdldFN5bWJvbHNGb250cykoKVtjXT9vLkZvbnRGbGFncy5TeW1ib2xpYzpvLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7eT17dHlwZTpoLG5hbWU6ZSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IHA9dC5nZXQoIldpZHRocyIpLGI9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgdz1udWxsO2lmKGIpe3kuaXNTdGFuZGFyZEZvbnQ9ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShiKTt5LmlzSW50ZXJuYWxGb250PSEhd31yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LHkpLnRoZW4oKHQ9PntpZihwKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgcCllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgobi53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx3LHQpfSkpfShlPW5ldyBpLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQoaCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdyxTLHgsayxDLHY9ZS5nZXQoIkZvbnROYW1lIiksRj10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PWkuTmFtZS5nZXQodikpOyJzdHJpbmciPT10eXBlb2YgRiYmKEY9aS5OYW1lLmdldChGKSk7aWYoIW0pe2NvbnN0IGU9diYmdi5uYW1lLHQ9RiYmRi5uYW1lO2lmKGUhPT10KXsoMCxyLmluZm8pKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtlfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke3R9Ii5gKTtlJiZ0JiZ0LnN0YXJ0c1dpdGgoZSkmJih2PUYpfX12PXZ8fEY7aWYoISh2IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTt0cnl7dz1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt2Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt3PW5ldyBiLk51bGxTdHJlYW19bGV0IE89ITEsVD0hMSxNPW51bGw7aWYodyl7aWYody5kaWN0KXtjb25zdCBlPXcuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoUz1lLm5hbWUpO3g9dy5kaWN0LmdldCgiTGVuZ3RoMSIpO2s9dy5kaWN0LmdldCgiTGVuZ3RoMiIpO0M9dy5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKHApe2NvbnN0IGU9KDAsZC5nZXRYZmFGb250TmFtZSkodi5uYW1lKTtpZihlKXtwLmZvbnRGYW1pbHk9YCR7cC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO3AubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7TT1lLmZhY3RvcnN8fG51bGw7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO1Q9ISF3O2E9dD0oMCxkLmdldFhmYUZvbnREaWN0KSh2Lm5hbWUpO2M9ITB9fWVsc2UgaWYoIW0pe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKSh2Lm5hbWUpO2lmKGUpe089ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtUPSEhd319eT17dHlwZTpoLG5hbWU6di5uYW1lLHN1YnR5cGU6UyxmaWxlOncsbGVuZ3RoMTp4LGxlbmd0aDI6ayxsZW5ndGgzOkMsaXNTdGFuZGFyZEZvbnQ6Tyxpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpjLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpwLHNjYWxlRmFjdG9yczpNfTtpZihjKXtjb25zdCBlPWEuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBpLk5hbWUmJih5LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt5LmNNYXA9dDt5LnZlcnRpY2FsPXkuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxhLHkpLnRoZW4oKGE9Pnt0aGlzLmV4dHJhY3RXaWR0aHModCxlLGEpO3JldHVybiBuZXcgcy5Gb250KHYubmFtZSx3LGEpfSkpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3QgaT1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXthLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEJ1aWxkUGF0aH0pOygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0JiZ0LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IGkuRGljdDtlLnNldCgiQmFzZUZvbnQiLGkuTmFtZS5nZXQoIlBERkpTLUZhbGxiYWNrRm9udCIpKTtlLnNldCgiVHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixpLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixpLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9UGFydGlhbEV2YWx1YXRvcjtjbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmEsZXZhbHVhdG9yT3B0aW9uczpyfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1yfHxNO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pO24ucGFyc2luZ1R5cGUzRm9udD0hMDtjb25zdCBzPW5ldyBpLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7Y29uc3Qgbz10aGlzLmZvbnQsYz10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBsPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGg9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksdT10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxkPU9iamVjdC5jcmVhdGUobnVsbCksZj1yLlV0aWwubm9ybWFsaXplUmVjdChvLmJib3h8fFswLDAsMCwwXSksZz1mWzJdLWZbMF0scD1mWzNdLWZbMV0sbT1NYXRoLmh5cG90KGcscCk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpbD1sLnRoZW4oKCgpPT57Y29uc3QgdD1oLmdldChlKSxpPW5ldyBPLk9wZXJhdG9yTGlzdDtyZXR1cm4gbi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKCgpPT57aS5mbkFycmF5WzBdPT09ci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGksbSk7ZFtlXT1pLmdldElSKCk7Zm9yKGNvbnN0IGUgb2YgaS5kZXBlbmRlbmNpZXMpYy5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHIud2FybikoYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgTy5PcGVyYXRvckxpc3Q7ZFtlXT1hLmdldElSKCl9KSl9KSk7dGhpcy50eXBlM0xvYWRlZD1sLnRoZW4oKCgpPT57by5jaGFyUHJvY09wZXJhdG9yTGlzdD1kO2lmKHRoaXMuX2Jib3gpe28uaXNDaGFyQkJveD0hMDtvLmJib3g9dGhpcy5fYmJveH19KSk7cmV0dXJuIHRoaXMudHlwZTNMb2FkZWR9X3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoZSx0PU5hTil7Y29uc3QgYT1yLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1hWzJdLWFbMF0saT1hWzNdLWFbMV0scz1NYXRoLmh5cG90KG4saSk7aWYoMD09PW58fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGFbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxhWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sYVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGFbM10pfWxldCBvPTAsYz1lLmxlbmd0aDtmb3IoO288Yzspe3N3aXRjaChlLmZuQXJyYXlbb10pe2Nhc2Ugci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzOmJyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldEZpbGxDb2xvclNwYWNlOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOmNhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpjYXNlIHIuT1BTLnNldEZpbGxHcmF5OmNhc2Ugci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDTVlLQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2hhZGluZ0ZpbGw6Y2FzZSByLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2MtLTtjb250aW51ZTtjYXNlIHIuT1BTLnNldEdTdGF0ZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtvXTtsZXQgYT0wLG49dC5sZW5ndGg7Zm9yKDthPG47KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7bi0tO2NvbnRpbnVlfWErK319bysrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09ci5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9ci5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLG4saSl7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1uO3NbNV09aX10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KHIuSURFTlRJVFlfTUFUUklYKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPXIuVGV4dFJlbmRlcmluZ01vZGUuRklMTDt0aGlzLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5zdHJva2VDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLEMuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpyLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5KPXtpZDpyLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2Uuaj17aWQ6ci5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NPXtpZDpyLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZD17aWQ6ci5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLnJpPXtpZDpyLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5pPXtpZDpyLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmdzPXtpZDpyLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5xPXtpZDpyLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuUT17aWQ6ci5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmNtPXtpZDpyLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5tPXtpZDpyLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5sPXtpZDpyLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5jPXtpZDpyLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2Uudj17aWQ6ci5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS55PXtpZDpyLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLmg9e2lkOnIuT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLnJlPXtpZDpyLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5TPXtpZDpyLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5zPXtpZDpyLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmY9e2lkOnIuT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5GPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImYqIl09e2lkOnIuT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkI9e2lkOnIuT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiQioiXT17aWQ6ci5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuYj17aWQ6ci5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImIqIl09e2lkOnIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uubj17aWQ6ci5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlc9e2lkOnIuT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiVyoiXT17aWQ6ci5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlQ9e2lkOnIuT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVUPXtpZDpyLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGM9e2lkOnIuT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHc9e2lkOnIuT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHo9e2lkOnIuT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRMPXtpZDpyLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGY9e2lkOnIuT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5Ucj17aWQ6ci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5Ucz17aWQ6ci5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UZD17aWQ6ci5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5URD17aWQ6ci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVG09e2lkOnIuT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZVsiVCoiXT17aWQ6ci5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5Uaj17aWQ6ci5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5USj17aWQ6ci5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZVsiJyJdPXtpZDpyLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbJyInXT17aWQ6ci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5kMD17aWQ6ci5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuZDE9e2lkOnIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLkNTPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuY3M9e2lkOnIuT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuU0M9e2lkOnIuT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9O2UuU0NOPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2Uuc2M9e2lkOnIuT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLnNjbj17aWQ6ci5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH07ZS5HPXtpZDpyLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZz17aWQ6ci5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5SRz17aWQ6ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5yZz17aWQ6ci5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuSz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2Uuaz17aWQ6ci5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLnNoPXtpZDpyLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJJPXtpZDpyLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuSUQ9e2lkOnIuT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRUk9e2lkOnIuT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRG89e2lkOnIuT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLk1QPXtpZDpyLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5EUD17aWQ6ci5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5CTUM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJEQz17aWQ6ci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5FTUM9e2lkOnIuT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CWD17aWQ6ci5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FWD17aWQ6ci5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQk09bnVsbDtlLkJEPW51bGw7ZS50cnVlPW51bGw7ZS5mYT1udWxsO2UuZmFsPW51bGw7ZS5mYWxzPW51bGw7ZS5mYWxzZT1udWxsO2UubnU9bnVsbDtlLm51bD1udWxsO2UubnVsbD1udWxsfSkpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1zdGF0aWMgZ2V0IE1BWF9JTlZBTElEX1BBVEhfT1BTKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IHAuUGFyc2VyKHtsZXhlcjpuZXcgcC5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSgxNSksbz1hKDQpLGM9YSg4KTtjb25zdCBsPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0saD0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5oKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtlPD10JiZuPHI7KXt0aGlzLl9tYXBbZV09YVtuKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBuPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2NvbnN0IHM9bltpXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLG49c1tlKytdO2lmKHI+PXQmJnI8PW4pe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1pKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjspe2NvbnN0IG49clt0KytdLGk9clt0KytdO2lmKGU+PW4mJmU8PWkpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7Y29uc3QgdT1mdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpe2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgZT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtsZXQgdD0iIjtmb3IobGV0IGE9MDthPGU7YSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1yZXR1cm4gY2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKHQsYSxyKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKHQpLGk9bi5yZWFkQnl0ZSgpO2EudmVydGljYWw9ISEoMSZpKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoZSksYz1uZXcgVWludDhBcnJheShlKSxsPW5ldyBVaW50OEFycmF5KGUpLGg9bmV3IFVpbnQ4QXJyYXkoZSksdT1uZXcgVWludDhBcnJheShlKTtsZXQgZCxmO2Zvcig7KGY9bi5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IHQ9Zj4+NTtpZig3PT09dCl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCByPSEhKDE2JmYpLGk9MTUmZjtpZihpKzE+ZSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1uLnJlYWROdW1iZXIoKTtzd2l0Y2godCl7Y2FzZSAwOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKX1icmVhaztjYXNlIDE6bi5yZWFkSGV4KG8saSk7bi5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtuLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7bi5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChsLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxpKTtpZighcil7bi5yZWFkSGV4TnVtYmVyKHUsaSk7YWRkSGV4KGwsdSxpKX1kPW4ucmVhZFNpZ25lZCgpKyhkKzEpO2EubWFwT25lKGhleFRvSW50KGwsaSksZCl9YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1uLnJlYWROdW1iZXIoKTthLm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtpZihyKW8uc2V0KGMpO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8sYyxpKX1uLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBDaWRSYW5nZShoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSksZCl9YnJlYWs7Y2FzZSA0Om4ucmVhZEhleChsLGcpO24ucmVhZEhleChoLGkpO2EubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIXIpe24ucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsaSk7bi5yZWFkSGV4U2lnbmVkKHUsaSk7YWRkSGV4KGgsdSxpKTthLm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2Nhc2UgNTpuLnJlYWRIZXgobyxnKTtuLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO24ucmVhZEhleChoLGkpO2EubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYocilvLnNldChjKTtlbHNle24ucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9bi5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtuLnJlYWRIZXgoaCxpKTthLm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7dH1gKX19cmV0dXJuIHM/cihzKTphfX19KCksZD1mdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKXtmdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShyLGksdCl9ZWxzZXtpZighKDAsbi5pc0NtZCkoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxuLmlzQ21kKShhLCJdIikmJmEhPT1uLkVPRjspe3MucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShyLGkscyl9fX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwQ2lkUmFuZ2UocixpLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2Ygbi5OYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLGkpe2xldCBzLGM7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIG4uTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBuLkNtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBuLk5hbWUmJihjPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFpJiZjJiYoaT1jKTtyZXR1cm4gaT9leHRlbmRDTWFwKGUsYSxpKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmEsY29tcHJlc3Npb25UeXBlOm59PWF3YWl0IHQoZSksaT1uZXcgQ01hcCghMCk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyB1KS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IHMuTGV4ZXIobmV3IGMuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke259YCl9cmV0dXJue2FzeW5jIGNyZWF0ZShlKXtjb25zdCB0PWUuZW5jb2RpbmcsYT1lLmZldGNoQnVpbHRJbkNNYXAscj1lLnVzZUNNYXA7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAodC5uYW1lLGEpO2lmKHQgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBzLkxleGVyKHQpLGEscik7cmV0dXJuIGUuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLGEpOmV9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19fSgpO3QuQ01hcEZhY3Rvcnk9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpLHM9YSgxNiksbz1hKDE4KSxjPWEoMTkpLGw9YSgyMSksaD1hKDIyKSx1PWEoMjUpLGQ9YSgyNyksZj1hKDI5KSxnPWEoOCkscD1hKDMwKSxtPWEoMzEpO2Z1bmN0aW9uIGNvbXB1dGVBZGxlcjMyKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MSxyPTA7Zm9yKGxldCBuPTA7bjx0Oysrbil7YSs9MjU1JmVbbl07cis9YX1yZXR1cm4gciU2NTUyMTw8MTZ8YSU2NTUyMX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPWUucG9zO2xldCBzLG8sYz0wO2Zvcig7LTEhPT0ocz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1jKWM9Njk9PT1zPzE6MDtlbHNlIGlmKDE9PT1jKWM9NzM9PT1zPzI6MDtlbHNleygwLHIuYXNzZXJ0KSgyPT09YywiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBpbnZhbGlkIHN0YXRlLiIpO2lmKDMyPT09c3x8MTA9PT1zfHwxMz09PXMpe289ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxMCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtzPWFbZV07aWYoKDAhPT1zfHwwPT09YVtlKzFdKSYmKDEwIT09cyYmMTMhPT1zJiYoczwzMnx8cz4xMjcpKSl7Yz0wO2JyZWFrfX1pZigyIT09Yyljb250aW51ZTtpZih0Lmtub3duQ29tbWFuZHMpe2NvbnN0IGU9dC5wZWVrT2JqKCk7ZSBpbnN0YW5jZW9mIG4uQ21kJiYhdC5rbm93bkNvbW1hbmRzW2UuY21kXSYmKGM9MCl9ZWxzZSgwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtpZigyPT09YylicmVha31lbHNlIGM9MH1pZigtMT09PXMpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihvKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLW8pKX19bGV0IGw9NDtlLnNraXAoLWwpO3M9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChsKTsoMCxpLmlzV2hpdGVTcGFjZSkocyl8fGwtLTtyZXR1cm4gZS5wb3MtbC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxuLGk9ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Om49ZS5nZXRVaW50MTYoKTtuPjI/ZS5za2lwKG4tMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0saT1uZXcgbi5EaWN0KHRoaXMueHJlZik7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aS5zZXQodCx0aGlzLmdldE9iaihlKSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz1pLmdldCgiRiIsIkZpbHRlciIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaDtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9bGV0IHUsZD1hLm1ha2VTdWJTdHJlYW0obCxoLGkpO2lmKGg8MWUzJiZzPDU1NTIpe2NvbnN0IGU9ZC5nZXRCeXRlcygpO2QucmVzZXQoKTtjb25zdCByPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjb25zdCBpPWEuZ2V0Qnl0ZXMocyk7YS5wb3M9cjt1PWNvbXB1dGVBZGxlcjMyKGUpKyJfIitjb21wdXRlQWRsZXIzMihpKTtjb25zdCBvPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1vKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtvLnJlc2V0KCk7cmV0dXJuIG99fWUmJihkPWUuY3JlYXRlU3RyZWFtKGQsaCkpO2Q9dGhpcy5maWx0ZXIoZCxpLGgpO2QuZGljdD1pO2lmKHZvaWQgMCE9PXUpe2QuY2FjaGVLZXk9YGlubGluZV8ke2h9XyR7dX1gO3RoaXMuaW1hZ2VDYWNoZVt1XT1kfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBkfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBnLk51bGxTdHJlYW19Y29uc3QgYj10aGlzLnhyZWYuc3RhdHM7dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkZMQVRFKTtyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGwuRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBsLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkxaVyk7bGV0IHQ9MTtpZihuKXtuLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9bi5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGYuTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgZi5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5EQ1QpO3JldHVybiBuZXcgdS5KcGVnU3RyZWFtKGUsYSxuKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOmIuYWRkU3RyZWFtVHlwZShyLlN0cmVhbVR5cGUuSlBYKTtyZXR1cm4gbmV3IGQuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkE4NSk7cmV0dXJuIG5ldyBzLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5BSFgpO3JldHVybiBuZXcgby5Bc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkNDRik7cmV0dXJuIG5ldyBjLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5STFgpO3JldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkpCSUcpO3JldHVybiBuZXcgaC5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgZy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxhPTAsbj0wO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSBpZig0Mz09PWUpe249MTtlPXRoaXMubmV4dENoYXIoKX1pZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1uPW58fDE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBuKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpuPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gobil7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jm47bj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihuPj00OCYmbjw9NTUpe2U9KGU8PDMpKygxNSZuKTtuPXRoaXMubmV4dENoYXIoKTtpZihuPj00OCYmbjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1Jm4pfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9aWYodClicmVhaztpfHwobj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpeygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gbi5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLG49dGhpcy5jdXJyZW50Q2hhcixpPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKG48MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PW4pe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltuXSl7aWYoaSl7dD10b0hleERpZ2l0KG4pO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihuKTtuPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQobik7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfWk9IWk7bj10aGlzLm5leHRDaGFyKCl9ZWxzZSBuPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiPj4iKX1yZXR1cm4gbi5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KGEpfX1jb25zdCBpPXRoaXMua25vd25Db21tYW5kcztsZXQgcz1pJiZ2b2lkIDAhPT1pW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1pW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2EubGVuZ3RofWApO2E9ZTtzPWkmJnZvaWQgMCE9PWlbYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1wZWVrT2JqKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MsdD10aGlzLmN1cnJlbnRDaGFyLGE9dGhpcy5iZWdpbklubGluZUltYWdlUG9zO2xldCBuO3RyeXtuPXRoaXMuZ2V0T2JqKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBwZWVrT2JqOiAke2V9YCl9dGhpcy5zdHJlYW0ucG9zPWU7dGhpcy5jdXJyZW50Q2hhcj10O3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz1hO3JldHVybiBufXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19dC5MZXhlcj1MZXhlcjt0LkxpbmVhcml6YXRpb249Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBvLGM7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoMCxuLmlzQ21kKShpLCJvYmoiKSYmcyBpbnN0YW5jZW9mIG4uRGljdCYmIm51bWJlciI9PXR5cGVvZihvPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZvPjApKXJldHVybiBudWxsO2lmKChjPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6YyxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KSxuPWEoNCk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSg4KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIHIuQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO3RoaXMucG9zPTA7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmVvZj0hMTt0aGlzLmJ1ZmZlcj1pO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIodCtlKTthPXQrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2soKTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KHQsYSl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3QmJnQuZGljdC5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaUhleFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKG48MCluPWU7ZWxzZXthW3IrK109bjw8NHxlO249LTF9fWlmKG4+PTAmJnRoaXMuZW9mKXthW3IrK109bjw8NDtuPS0xfXRoaXMuZmlyc3REaWdpdD1uO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuQXNjaWlIZXhTdHJlYW09QXNjaWlIZXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgyMCksbj1hKDE3KSxpPWEoMyk7Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBpLkRpY3R8fChhPWkuRGljdC5lbXB0eSk7Y29uc3Qgbj17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyByLkNDSVRURmF4RGVjb2RlcihuLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09Q0NJVFRGYXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheERlY29kZXI9dm9pZCAwO3ZhciByPWEoMik7Y29uc3Qgbj0tMSxpPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLHM9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxvPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxjPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLGw9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0saD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07dC5DQ0lUVEZheERlY29kZXI9Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDtsZXQgYSxyPXQuRW5kT2ZCbG9jaztudWxsPT1yJiYocj0hMCk7dGhpcy5lb2Jsb2NrPXI7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBpLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbaSsxXSxzKTtlW2krMV08YSYmKGkrPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtpXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtpXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSBuOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09biYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09biYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09bil7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZSYmZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsaSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIG59X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1uKXJldHVybiAxO2U9dD4+NT09MD9zW3RdOm9bdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LG8pO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLHMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PW4pcmV0dXJuIDE7dD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsaCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixsLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxjKTtpZihlWzBdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bjp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxzPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLG89bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxjPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxsPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoKChhPDw4KStyKSUzMSE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7b3w9aTw8cztzKz04fWNvbnN0IGM9YVtvJigxPDxyKS0xXSxsPWM+PjE2LGg9NjU1MzUmYztpZihsPDF8fHM8bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1vPj5sO3RoaXMuY29kZVNpemU9cy1sO3JldHVybiBofWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGEscj0wO2ZvcihhPTA7YTx0OysrYSllW2FdPnImJihyPWVbYV0pO2NvbnN0IG49MTw8cixpPW5ldyBJbnQzMkFycmF5KG4pO2ZvcihsZXQgcz0xLG89MCxjPTI7czw9cjsrK3Msbzw8PTEsYzw8PTEpZm9yKGxldCByPTA7cjx0OysrcilpZihlW3JdPT09cyl7bGV0IGU9MCx0PW87Zm9yKGE9MDthPHM7KythKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihhPWU7YTxuO2ErPWMpaVthXT1zPDwxNnxyOysrb31yZXR1cm5baSxyXX1yZWFkQmxvY2soKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHI7bGV0IHIsaCx1PXRoaXMuZ2V0Qml0cygzKTsxJnUmJih0aGlzLmVvZj0hMCk7dT4+PTE7aWYoMD09PXUpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cnw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2l8PXQ8PDg7aWYoaSE9PSg2NTUzNSZ+cikmJigwIT09cnx8MCE9PWkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxvPXMrcjtlPXRoaXMuZW5zdXJlQnVmZmVyKG8pO3RoaXMuYnVmZmVyTGVuZ3RoPW87aWYoMD09PXIpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMocik7ZS5zZXQodCxzKTt0Lmxlbmd0aDxyJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09dSl7cj1jO2g9bH1lbHNle2lmKDIhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxhPXRoaXMuZ2V0Qml0cyg1KSsxLG49dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTA7bz0wO2NvbnN0IGw9ZSthLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXtkPTI7Zj0zO2c9dH1lbHNlIGlmKDE3PT09ZSl7ZD0zO2Y9MztnPXQ9MH1lbHNle2lmKDE4IT09ZSl7dVtvKytdPXQ9ZTtjb250aW51ZX1kPTc7Zj0xMTtnPXQ9MH1sZXQgYT10aGlzLmdldEJpdHMoZCkrZjtmb3IoO2EtLSA+MDspdVtvKytdPWd9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoMCxlKSk7aD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IGQ9ZT9lLmxlbmd0aDowLGY9dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgYT10aGlzLmdldENvZGUocik7aWYoYTwyNTYpe2lmKGYrMT49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmKzEpO2Q9ZS5sZW5ndGh9ZVtmKytdPWE7Y29udGludWV9aWYoMjU2PT09YSl7dGhpcy5idWZmZXJMZW5ndGg9ZjtyZXR1cm59YS09MjU3O2E9c1thXTtsZXQgbj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7dD0oNjU1MzUmYSkrbjthPXRoaXMuZ2V0Q29kZShoKTthPW9bYV07bj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgaT0oNjU1MzUmYSkrbjtpZihmK3Q+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZit0KTtkPWUubGVuZ3RofWZvcihsZXQgYT0wO2E8dDsrK2EsKytmKWVbZl09ZVtmLWldfX19dC5GbGF0ZVN0cmVhbT1GbGF0ZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpiaWcyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgxNyksaT1hKDMpLHM9YSgyMyksbz1hKDIpO2NsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBzLkpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiByLkJhc2VTdHJlYW0pe2NvbnN0IGE9ZS5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTphLHN0YXJ0OjAsZW5kOmEubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Y29uc3QgYT1lLnBhcnNlQ2h1bmtzKHQpLG49YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuZW9mPSEwfX10LkpiaWcyU3RyZWFtPUpiaWcyU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNCksaT1hKDI0KSxzPWEoMjApO2NsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoYEpCSUcyIGVycm9yOiAke2V9YCwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtjb25zdCBlPW5ldyBpLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9Z2V0IGNvbnRleHRDYWNoZSgpe2NvbnN0IGU9bmV3IENvbnRleHRDYWNoZTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY29udGV4dENhY2hlIixlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBuPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWEucmVhZEJpdChyLG4pO249bjwyNTY/bjw8MXxlOjUxMSYobjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IGk9cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7cmV0dXJuIDA9PT1pP3M6cz4wPy1zOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3Qgbz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGM9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLGw9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxoPVszOTcxNywxOTQxLDIyOSw0MDVdLHU9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgbD0hIWksdT1jW3JdLmNvbmNhdChzKTt1LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgZD11Lmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkoZCksZz1uZXcgSW50OEFycmF5KGQpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPGQ7YisrKXtmW2JdPXVbYl0ueDtnW2JdPXVbYl0ueTt3PU1hdGgubWluKHcsdVtiXS54KTtTPU1hdGgubWF4KFMsdVtiXS54KTt4PU1hdGgubWluKHgsdVtiXS55KTtiPGQtMSYmdVtiXS55PT09dVtiKzFdLnkmJnVbYl0ueD09PXVbYisxXS54LTE/eXw9MTw8ZC0xLWI6cC5wdXNoKGIpfWNvbnN0IGs9cC5sZW5ndGgsQz1uZXcgSW50OEFycmF5KGspLHY9bmV3IEludDhBcnJheShrKSxGPW5ldyBVaW50MTZBcnJheShrKTtmb3IobT0wO208azttKyspe2I9cFttXTtDW21dPXVbYl0ueDt2W21dPXVbYl0ueTtGW21dPTE8PGQtMS1ifWNvbnN0IE89LXcsVD0teCxNPXQtUyxFPWhbcl07bGV0IEQ9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgTj1bXSxSPW8uZGVjb2RlcixMPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBqLCQsXyxVLFgsSD0wLHE9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtIXj1SLnJlYWRCaXQoTCxFKTtpZihIKXtOLnB1c2goRCk7Y29udGludWV9fUQ9bmV3IFVpbnQ4QXJyYXkoRCk7Ti5wdXNoKEQpO2ZvcihqPTA7ajx0O2orKyl7aWYobCYmaVtlXVtqXSl7RFtqXT0wO2NvbnRpbnVlfWlmKGo+PU8mJmo8TSYmZT49VCl7cT1xPDwxJnk7Zm9yKGI9MDtiPGs7YisrKXskPWUrdltiXTtfPWorQ1tiXTtVPU5bJF1bX107aWYoVSl7VT1GW2JdO3F8PVV9fX1lbHNle3E9MDtYPWQtMTtmb3IoYj0wO2I8ZDtiKyssWC0tKXtfPWorZltiXTtpZihfPj0wJiZfPHQpeyQ9ZStnW2JdO2lmKCQ+PTApe1U9TlskXVtfXTtVJiYocXw9VTw8WCl9fX19Y29uc3QgYT1SLnJlYWRCaXQoTCxxKTtEW2pdPWF9fXJldHVybiBOfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBoPWxbYV0uY29kaW5nOzA9PT1hJiYoaD1oLmNvbmNhdChbb1swXV0pKTtjb25zdCBkPWgubGVuZ3RoLGY9bmV3IEludDMyQXJyYXkoZCksZz1uZXcgSW50MzJBcnJheShkKTtsZXQgcDtmb3IocD0wO3A8ZDtwKyspe2ZbcF09aFtwXS54O2dbcF09aFtwXS55fWxldCBtPWxbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxrPXVbYV0sQz1bXSx2PWMuZGVjb2RlcixGPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBPPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7T149di5yZWFkQml0KEYsayk7aWYoTyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtDLnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGQ7cCsrKXtvPWErZ1twXTtjPXMrZltwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8Q1tvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCBoPXYucmVhZEJpdChGLGwpO3Rbc109aH19cmV0dXJuIEN9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDtTPTA7Zm9yKDtTPGk7KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IGk9cyp2K24sRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksTz10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgVD1vW0ZdLE09VFswXS5sZW5ndGgsRT1ULmxlbmd0aDtpZihPKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayksYT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSxyPWRlY29kZUludGVnZXIoQywiSUFSRFkiLGspO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrYSwodD4+MSkrciwhMSxwLG0pfWNvbnN0IEQ9aS0oMSZ1PzA6RS0xKSxOPXItKDImdT9NLTE6MCk7bGV0IFIsTCxqO2lmKGwpe2ZvcihSPTA7UjxFO1IrKyl7eD13W04rUl07aWYoIXgpY29udGludWU7aj1UW1JdO2NvbnN0IGU9TWF0aC5taW4oYS1ELE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXXw9altMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXV49altMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19cis9RS0xfWVsc2V7Zm9yKEw9MDtMPEU7TCsrKXt4PXdbRCtMXTtpZih4KXtqPVRbTF07c3dpdGNoKGQpe2Nhc2UgMDpmb3IoUj0wO1I8TTtSKyspeFtOK1JdfD1qW1JdO2JyZWFrO2Nhc2UgMjpmb3IoUj0wO1I8TTtSKyspeFtOK1JdXj1qW1JdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX19cis9TS0xfVMrKztjb25zdCAkPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09JClicmVhaztyKz0kK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj0oMCxuLnJlYWRVaW50MzIpKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFvW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPW9baV07YS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmcik7Y29uc3Qgcz0hISg2NCZyKSxjPWVbdCs1XTtsZXQgbD1jPj41Jjc7Y29uc3QgaD1bMzEmY107bGV0IHU9dCs2O2lmKDc9PT1jKXtsPTUzNjg3MDkxMSYoMCxuLnJlYWRVaW50MzIpKGUsdS0xKTt1Kz0zO2xldCB0PWwrNz4+MztoWzBdPWVbdSsrXTtmb3IoOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2EucmV0YWluQml0cz1oO2xldCBmPTQ7YS5udW1iZXI8PTI1Nj9mPTE6YS5udW1iZXI8PTY1NTM2JiYoZj0yKTtjb25zdCBnPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1mP2VbdV06Mj09PWY/KDAsbi5yZWFkVWludDE2KShlLHUpOigwLG4ucmVhZFVpbnQzMikoZSx1KTtnLnB1c2godCk7dSs9Zn1hLnJlZmVycmVkVG89ZztpZihzKXthLnBhZ2VBc3NvY2lhdGlvbj0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NH1lbHNlIGEucGFnZUFzc29jaWF0aW9uPWVbdSsrXTthLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NDtpZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpe2lmKDM4IT09aSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHUpLHI9ISEoMSZlW3UrZF0pLG49NixpPW5ldyBVaW50OEFycmF5KG4pO2lmKCFyKXtpWzBdPTI1NTtpWzFdPTE3Mn1pWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O2lbM109dC5oZWlnaHQ+PjE2JjI1NTtpWzRdPXQuaGVpZ2h0Pj44JjI1NTtpWzVdPTI1NSZ0LmhlaWdodDtmb3IocD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8biYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1uKXthLmxlbmd0aD1wK247YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD11O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBuPVtdO2xldCBpPWE7Zm9yKDtpPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsaSk7aT1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1pO2krPWEubGVuZ3RoO3IuZW5kPWl9bi5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bltlXS5zdGFydD1pO2krPW5bZV0uaGVhZGVyLmxlbmd0aDtuW2VdLmVuZD1pfXJldHVybiBufWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6KDAsbi5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLG4ucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsbi5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBkPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBzLG8sYyxsLGg9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PSgwLG4ucmVhZFVpbnQxNikocixoKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7aCs9MjtpZighZS5odWZmbWFuKXtsPTA9PT1lLnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUuYXQ9b31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLnJlZmluZW1lbnRBdD1vfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgdT17fTt1LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWQ7Y29uc3QgZj0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW49ISEoMSZmKTt1LnJlZmluZW1lbnQ9ISEoMiZmKTt1LmxvZ1N0cmlwU2l6ZT1mPj4yJjM7dS5zdHJpcFNpemU9MTw8dS5sb2dTdHJpcFNpemU7dS5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzO3UudHJhbnNwb3NlZD0hISg2NCZmKTt1LmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzO3UuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxO3UuZHNPZmZzZXQ9Zjw8MTc+PjI3O3UucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjE7aWYodS5odWZmbWFuKXtjb25zdCBlPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbkZTPTMmZTt1Lmh1ZmZtYW5EUz1lPj4yJjM7dS5odWZmbWFuRFQ9ZT4+NCYzO3UuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7dS5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMzt1Lmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKHUucmVmaW5lbWVudCYmIXUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXUucmVmaW5lbWVudEF0PW99dS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVt1LGEucmVmZXJyZWRUbyxyLGgsaV07YnJlYWs7Y2FzZSAxNjpjb25zdCBnPXt9LHA9cltoKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5wYXR0ZXJuV2lkdGg9cltoKytdO2cucGF0dGVybkhlaWdodD1yW2grK107Zy5tYXhQYXR0ZXJuSW5kZXg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZyxhLm51bWJlcixyLGgsaV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1kO2NvbnN0IGI9cltoKytdO20ubW1yPSEhKDEmYik7bS50ZW1wbGF0ZT1iPj4xJjM7bS5lbmFibGVTa2lwPSEhKDgmYik7bS5jb21iaW5hdGlvbk9wZXJhdG9yPWI+PjQmNzttLmRlZmF1bHRQaXhlbFZhbHVlPWI+PjcmMTttLmdyaWRXaWR0aD0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRIZWlnaHQ9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRWZWN0b3JYPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO20uZ3JpZFZlY3Rvclk9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7cz1bbSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCB5PXt9O3kuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9ZDtjb25zdCB3PXJbaCsrXTt5Lm1tcj0hISgxJncpO3kudGVtcGxhdGU9dz4+MSYzO3kucHJlZGljdGlvbj0hISg4JncpO2lmKCF5Lm1tcil7bD0wPT09eS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn15LmF0PW99cz1beSxyLGgsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCBTPXt3aWR0aDooMCxuLnJlYWRVaW50MzIpKHIsaCksaGVpZ2h0OigwLG4ucmVhZFVpbnQzMikocixoKzQpLHJlc29sdXRpb25YOigwLG4ucmVhZFVpbnQzMikocixoKzgpLHJlc29sdXRpb25ZOigwLG4ucmVhZFVpbnQzMikocixoKzEyKX07NDI5NDk2NzI5NT09PVMuaGVpZ2h0JiZkZWxldGUgUy5oZWlnaHQ7Y29uc3QgeD1yW2grMTZdOygwLG4ucmVhZFVpbnQxNikocixoKzE3KTtTLmxvc3NsZXNzPSEhKDEmeCk7Uy5yZWZpbmVtZW50PSEhKDImeCk7Uy5kZWZhdWx0UGl4ZWxWYWx1ZT14Pj4yJjE7Uy5jb21iaW5hdGlvbk9wZXJhdG9yPXg+PjMmMztTLnJlcXVpcmVzQnVmZmVyPSEhKDMyJngpO1MuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JngpO3M9W1NdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVthLm51bWJlcixyLGgsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCB1PSJvbiIrYS50eXBlTmFtZTt1IGluIHQmJnRbdV0uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLG49ZS5oZWlnaHQsaT1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxuO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1pfWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IG49ZS5pbmZvLGk9bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsbi53aWR0aCxuLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKG4scyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyl7bGV0IG8sYztpZihlLmh1ZmZtYW4pe289ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLG4saSxzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpuPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIGk9Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6bix0YWJsZUJpdG1hcFNpemU6aSx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtjPW5ldyBSZWFkZXIocixpLHMpfWxldCBsPXRoaXMuc3ltYm9scztsfHwodGhpcy5zeW1ib2xzPWw9e30pO2NvbnN0IGg9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQocixpLHMpO2xbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBmPVtdO2xldCBnPTAscD0oMCxuLmxvZzIpKGEubGVuZ3RoK3IpO2NvbnN0IG09dS5kZWNvZGVyLGI9dS5jb250ZXh0Q2FjaGU7bGV0IHksdztpZihlKXt5PWdldFN0YW5kYXJkVGFibGUoMSk7dz1bXTtwPU1hdGgubWF4KHAsMSl9Zm9yKDtmLmxlbmd0aDxyOyl7Zys9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFESCIsbSk7bGV0IHI9MCxuPTA7Y29uc3QgaT1lP3cubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBpPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFEVyIsbSk7aWYobnVsbD09PWkpYnJlYWs7cis9aTtuKz1yO2xldCB5O2lmKHQpe2NvbnN0IG49ZGVjb2RlSW50ZWdlcihiLCJJQUFJIixtKTtpZihuPjEpeT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGcsMCxuLDEsYS5jb25jYXQoZikscCwwLDAsMSwwLHMsbCxoLHUsMCxkKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChiLG0scCksdD1kZWNvZGVJbnRlZ2VyKGIsIklBUkRYIixtKSxuPWRlY29kZUludGVnZXIoYiwiSUFSRFkiLG0pO3k9ZGVjb2RlUmVmaW5lbWVudChyLGcsbCxlPGEubGVuZ3RoP2FbZV06ZltlLWEubGVuZ3RoXSx0LG4sITEsaCx1KX1mLnB1c2goeSl9ZWxzZSBpZihlKXcucHVzaChyKTtlbHNle3k9ZGVjb2RlQml0bWFwKCExLHIsZyxvLCExLG51bGwsYyx1KTtmLnB1c2goeSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShkKTtkLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChkLG4sZyk7ZWxzZXtjb25zdCBhPWQuZW5kLHI9ZC5wb3NpdGlvbitlO2QuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAoZCxuLGcsITEpO2QuZW5kPWE7ZC5wb3NpdGlvbj1yfWNvbnN0IGE9dy5sZW5ndGg7aWYoaT09PWEtMSlmLnB1c2godCk7ZWxzZXtsZXQgZSxyLG4scyxvLGM9MDtmb3IoZT1pO2U8YTtlKyspe3M9d1tlXTtuPWMrcztvPVtdO2ZvcihyPTA7cjxnO3IrKylvLnB1c2godFtyXS5zdWJhcnJheShjLG4pKTtmLnB1c2gobyk7Yz1ufX19fWNvbnN0IFM9W10seD1bXTtsZXQgayxDLHY9ITE7Y29uc3QgRj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8Rjspe2xldCB0PWU/eS5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQUVYIixtKTtmb3IoO3QtLTspeC5wdXNoKHYpO3Y9IXZ9Zm9yKGs9MCxDPWEubGVuZ3RoO2s8QztrKyspeFtrXSYmUy5wdXNoKGFba10pO2ZvcihsZXQgZT0wO2U8cjtrKyssZSsrKXhba10mJlMucHVzaChmW2VdKTtyZXR1cm4gU30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxoLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxjKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPWUuaW5mbztsZXQgbyxjO2NvbnN0IGw9dGhpcy5zeW1ib2xzLGg9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PSgwLG4ubG9nMikoaC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7Yz1uZXcgUmVhZGVyKGEscixpKTtvPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsbil7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9bi5yZWFkQml0cyg0KTtpLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtpLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUobik7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1uLnJlYWRCaXRzKDIpKzM7YT1pW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1uLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1uLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fW4uYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKGksITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxoLmxlbmd0aCxjKX1jb25zdCBkPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGY9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGgsdSxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxkLGUubG9nU3RyaXBTaXplLGMpO3RoaXMuZHJhd0JpdG1hcChzLGYpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbil7bGV0IGk9dGhpcy5wYXR0ZXJucztpfHwodGhpcy5wYXR0ZXJucz1pPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pO2lbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixuLGkpe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09biYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLG4sITEsbnVsbCxzLGkpLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10sbj10KmUsaT1uK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShuLGkpKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbz1lLmluZm8sYz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxsPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSxkLGYsZyxwKXtpZihvKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7Y30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgbT1bXTtsZXQgYix5LHc7Zm9yKGI9MDtiPGk7YisrKXt3PW5ldyBVaW50OEFycmF5KHIpO2lmKHMpZm9yKHk9MDt5PHI7eSsrKXdbeV09czttLnB1c2godyl9Y29uc3QgUz10Lmxlbmd0aCx4PXRbMF0saz14WzBdLmxlbmd0aCxDPXgubGVuZ3RoLHY9KDAsbi5sb2cyKShTKSxGPVtdO2lmKCFlKXtGLnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgTz1bXTtsZXQgVCxNLEUsRCxOLFIsTCxqLCQsXyxVO2UmJihUPW5ldyBSZWFkZXIocC5kYXRhLHAuc3RhcnQscC5lbmQpKTtmb3IoYj12LTE7Yj49MDtiLS0pe009ZT9kZWNvZGVNTVJCaXRtYXAoVCxsLGgsITApOmRlY29kZUJpdG1hcCghMSxsLGgsYSwhMSxudWxsLEYscCk7T1tiXT1NfWZvcihFPTA7RTxoO0UrKylmb3IoRD0wO0Q8bDtEKyspe049MDtSPTA7Zm9yKHk9di0xO3k+PTA7eS0tKXtOXj1PW3ldW0VdW0RdO1J8PU48PHl9TD10W1JdO2o9dStFKmcrRCpmPj44OyQ9ZCtFKmYtRCpnPj44O2lmKGo+PTAmJmorazw9ciYmJD49MCYmJCtDPD1pKWZvcihiPTA7YjxDO2IrKyl7VT1tWyQrYl07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKylVW2oreV18PV9beV19ZWxzZXtsZXQgZSx0O2ZvcihiPTA7YjxDO2IrKyl7dD0kK2I7aWYoISh0PDB8fHQ+PWkpKXtVPW1bdF07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKyl7ZT1qK3k7ZT49MCYmZTxyJiYoVVtlXXw9X1t5XSl9fX19fXJldHVybiBtfShlLm1tcixzLGUudGVtcGxhdGUsby53aWR0aCxvLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3RvclksYyk7dGhpcy5kcmF3Qml0bWFwKG8sbCl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKGUsdCsxKSxzPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrNSksbz1uZXcgUmVhZGVyKGUsdCs5LGEpLGM9MSsocj4+MSY3KSxsPTErKHI+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyk7ZD1vLnJlYWRCaXRzKGwpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW2YsdSxkLDBdKSk7Zis9MTw8ZH13aGlsZShmPHMpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsdSwzMiwwLCJsb3dlciJdKSk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsdSwzMiwwXSkpO2lmKDEmcil7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3UsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShoLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBuLGkscyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO249YztpPTA7Zm9yKDtpPHQ7KXtzPWVbaV07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9bjtuKyt9aSsrfW8rK319fWNvbnN0IGY9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxhPWZbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtmW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWFbdFtuXV07aWYoaSl7aWYoZT09PXIpcmV0dXJuIGk7cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IG49e0s6LTEsQ29sdW1uczp0LFJvd3M6YSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOnJ9LGk9bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsbiksbz1bXTtsZXQgYyxsPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7by5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7Yz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09Yyl7Yz0wO2w9ITB9YT03fWVbcl09Yz4+YSYxO2EtLX19aWYociYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3QgYT1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWE7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgcj1lW3RdPj4xLG49MSZlW3RdO2NvbnN0IGk9YVtyXSxzPWkucWU7bGV0IG8sYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYoYzxzKXtjPXM7bz1uO3I9aS5ubXBzfWVsc2V7Yz1zO289MV5uOzE9PT1pLnN3aXRjaEZsYWcmJihuPW8pO3I9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3NjgmYykpe3RoaXMuYT1jO3JldHVybiBufWlmKGM8cyl7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXtvPW47cj1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO2M8PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTt0aGlzLmE9YztlW3RdPXI8PDF8bjtyZXR1cm4gb319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyNikscz1hKDIpO2NsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09cil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYodGhpcy5mb3JjZVJHQiYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHIpO2xldCBpPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe25bZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtuW2UrMV09dFtlXSpzfDA7MjU2PT09bltlXSYmMD09PW5bZSsxXXx8KGk9ITApfWkmJihlLmRlY29kZVRyYW5zZm9ybT1uKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9Y29uc3QgYT1uZXcgaS5KcGVnSW1hZ2UoZSk7YS5wYXJzZSh0aGlzLmJ5dGVzKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLHM9NDAxNyxvPTc5OSxjPTM0MDYsbD0yMjc2LGg9MTU2Nyx1PTM3ODQsZD01NzkzLGY9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscyxvLGMsbCxoLHUsZD0hMSl7Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLG4ucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgQyx2LEYsTyxULE07TT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIscz1yPj40O2lmKDA9PT1uKXtpZihzPDE1KXt5PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9cztjb25zdCBvPWlbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixzLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQraVthXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOnM9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1JnM7bz1zPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPXM7Y29uc3Qgbz1pW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRSxELE4sUixMPTA7RD0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47Zm9yKDtMPD1EOyl7Y29uc3QgYT1vP01hdGgubWluKEQtTCxvKTpEO2lmKGE+MCl7Zm9yKHY9MDt2PGs7disrKXNbdl0ucHJlZD0wO3k9MDtpZigxPT09ayl7Qz1zWzBdO2ZvcihUPTA7VDxhO1QrKyl7ZGVjb2RlQmxvY2soQyxNLEwpO0wrK319ZWxzZSBmb3IoVD0wO1Q8YTtUKyspe2Zvcih2PTA7djxrO3YrKyl7Qz1zW3ZdO049Qy5oO1I9Qy52O2ZvcihGPTA7RjxSO0YrKylmb3IoTz0wO088TjtPKyspZGVjb2RlTWN1KEMsTSxMLEYsTyl9TCsrfX1iPTA7RT1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighRSlicmVhaztpZihFLmludmFsaWQpe2NvbnN0IGU9YT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxyLndhcm4pKGBkZWNvZGVTY2FuIC0gJHtlfSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7RS5pbnZhbGlkfWApO3Q9RS5vZmZzZXR9aWYoIShFLm1hcmtlcj49NjU0ODgmJkUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1wfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsYSl7Y29uc3Qgcj1lLnF1YW50aXphdGlvblRhYmxlLG49ZS5ibG9ja0RhdGE7bGV0IGksZyxwLG0sYix5LHcsUyx4LGssQyx2LEYsTyxULE0sRTtpZighcil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe3g9blt0K2VdO2s9blt0K2UrMV07Qz1uW3QrZSsyXTt2PW5bdCtlKzNdO0Y9blt0K2UrNF07Tz1uW3QrZSs1XTtUPW5bdCtlKzZdO009blt0K2UrN107eCo9cltlXTtpZigwIT0oa3xDfHZ8RnxPfFR8TSkpe2sqPXJbZSsxXTtDKj1yW2UrMl07dio9cltlKzNdO0YqPXJbZSs0XTtPKj1yW2UrNV07VCo9cltlKzZdO00qPXJbZSs3XTtpPWQqeCsxMjg+Pjg7Zz1kKkYrMTI4Pj44O3A9QzttPVQ7Yj1mKihrLU0pKzEyOD4+ODtTPWYqKGsrTSkrMTI4Pj44O3k9djw8NDt3PU88PDQ7aT1pK2crMT4+MTtnPWktZztFPXAqdSttKmgrMTI4Pj44O3A9cCpoLW0qdSsxMjg+Pjg7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO2c9ZytwKzE+PjE7cD1nLXA7RT1iKmwrUypjKzIwNDg+PjEyO2I9YipjLVMqbCsyMDQ4Pj4xMjtTPUU7RT15Km8rdypzKzIwNDg+PjEyO3k9eSpzLXcqbysyMDQ4Pj4xMjt3PUU7YVtlXT1pK1M7YVtlKzddPWktUzthW2UrMV09Zyt3O2FbZSs2XT1nLXc7YVtlKzJdPXAreTthW2UrNV09cC15O2FbZSszXT1tK2I7YVtlKzRdPW0tYn1lbHNle0U9ZCp4KzUxMj4+MTA7YVtlXT1FO2FbZSsxXT1FO2FbZSsyXT1FO2FbZSszXT1FO2FbZSs0XT1FO2FbZSs1XT1FO2FbZSs2XT1FO2FbZSs3XT1FfX1mb3IobGV0IGU9MDtlPDg7KytlKXt4PWFbZV07az1hW2UrOF07Qz1hW2UrMTZdO3Y9YVtlKzI0XTtGPWFbZSszMl07Tz1hW2UrNDBdO1Q9YVtlKzQ4XTtNPWFbZSs1Nl07aWYoMCE9KGt8Q3x2fEZ8T3xUfE0pKXtpPWQqeCsyMDQ4Pj4xMjtnPWQqRisyMDQ4Pj4xMjtwPUM7bT1UO2I9Ziooay1NKSsyMDQ4Pj4xMjtTPWYqKGsrTSkrMjA0OD4+MTI7eT12O3c9TztpPTQxMTIrKGkrZysxPj4xKTtnPWktZztFPXAqdSttKmgrMjA0OD4+MTI7cD1wKmgtbSp1KzIwNDg+PjEyO209RTtiPWIrdysxPj4xO3c9Yi13O1M9Uyt5KzE+PjE7eT1TLXk7aT1pK20rMT4+MTttPWktbTtnPWcrcCsxPj4xO3A9Zy1wO0U9YipsK1MqYysyMDQ4Pj4xMjtiPWIqYy1TKmwrMjA0OD4+MTI7Uz1FO0U9eSpvK3cqcysyMDQ4Pj4xMjt5PXkqcy13Km8rMjA0OD4+MTI7dz1FO3g9aStTO009aS1TO2s9Zyt3O1Q9Zy13O0M9cCt5O089cC15O3Y9bStiO0Y9bS1iO3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7RjwxNj9GPTA6Rj49NDA4MD9GPTI1NTpGPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtuW3QrZV09eDtuW3QrZSs4XT1rO25bdCtlKzE2XT1DO25bdCtlKzI0XT12O25bdCtlKzMyXT1GO25bdCtlKzQwXT1PO25bdCtlKzQ4XT1UO25bdCtlKzU2XT1NfWVsc2V7RT1kKngrODE5Mj4+MTQ7RT1FPC0yMDQwPzA6RT49MjAyND8yNTU6RSsyMDU2Pj40O25bdCtlXT1FO25bdCtlKzhdPUU7blt0K2UrMTZdPUU7blt0K2UrMjRdPUU7blt0K2UrMzJdPUU7blt0K2UrNDBdPUU7blt0K2UrNDhdPUU7blt0K2UrNTZdPUV9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBhPXQuYmxvY2tzUGVyTGluZSxyPXQuYmxvY2tzUGVyQ29sdW1uLG49bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8cjtlKyspZm9yKGxldCByPTA7cjxhO3IrKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLHIpLG4pfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGE9dCl7Y29uc3Qgcj1lLmxlbmd0aC0xO2xldCBpPWE8dD9hOnQ7aWYodD49cilyZXR1cm4gbnVsbDtjb25zdCBzPSgwLG4ucmVhZFVpbnQxNikoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG89KDAsbi5yZWFkVWludDE2KShlLGkpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytpPj1yKXJldHVybiBudWxsO289KDAsbi5yZWFkVWludDE2KShlLGkpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpvLG9mZnNldDppfX10LkpwZWdJbWFnZT1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhPW8rdC0yO2NvbnN0IGk9ZmluZE5leHRGaWxlTWFya2VyKGUsYSxvKTtpZihpJiZpLmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1uO3IuYmxvY2tzUGVyQ29sdW1uPWl9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLHMsbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9aVttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1pW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3Qgaz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxrO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IEM9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxDO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LG49MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxuJiYoRj1uKTtjb25zdCBpPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjpuLHF1YW50aXphdGlvbklkOmkscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKyluW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsbil9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO3M9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxuPWEuY29tcG9uZW50c1tyXTtuLmluZGV4PXQ7Y29uc3QgaT1lW28rK107bi5odWZmbWFuVGFibGVEQz1mW2k+PjRdO24uaHVmZm1hblRhYmxlQUM9ZFsxNSZpXTtFLnB1c2gobil9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLHMsRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTCYmTC5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK0wuaW52YWxpZCk7bz1MLm9mZnNldDticmVha31pZighTHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKz00KXt0PWVbbl07YT1lW24rMV07cj1lW24rMl07ZVtuXT00MzQuNDU2LXQtMS40MDIqcjtlW24rMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtuKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixuLGk9MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07bj1lW3MrM107ZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipuLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpuLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqbisuMDY4Njc0MjIzODU5NTM0NSktbiooLjAwMDMzNjE5NzE3NzYxODM5MzcqbisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqbi0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqbi0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqbi0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLW4qKC4wMDAzMTg5MTMxMTc1ODgzMjgxKm4rLjczNjQ4ODM4MDc3MzMxNjgpO2VbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqbi0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqbi0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqbi0uNzU5MTQ1NDY0OTc0OTYwOSktbiooLjAwMDM0MzUzMTk5NjUxMDU1NTMqbisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBuPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJmEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbi5sZW5ndGgpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2Ygbil7ZVt0KytdPWE7ZVt0KytdPWE7ZVt0KytdPWF9cmV0dXJuIGV9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDI4KSxpPWEoMik7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweEltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMjQpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUFggZXJyb3I6ICR7ZX1gLCJKcHhFcnJvciIpfX1jb25zdCBzPXtMTDowLExIOjEsSEw6MSxISDoyfTt0LkpweEltYWdlPWNsYXNzIEpweEltYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZT0hMX1wYXJzZShlKXtpZig2NTM1OT09PSgwLG4ucmVhZFVpbnQxNikoZSwwKSl7dGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKTtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0Oyl7bGV0IGk9OCxzPSgwLG4ucmVhZFVpbnQzMikoZSxhKTtjb25zdCBvPSgwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPWk7aWYoMT09PXMpe3M9NDI5NDk2NzI5NiooMCxuLnJlYWRVaW50MzIpKGUsYSkrKDAsbi5yZWFkVWludDMyKShlLGErNCk7YSs9ODtpKz04fTA9PT1zJiYocz10LWEraSk7aWYoczxpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBib3ggZmllbGQgc2l6ZSIpO2NvbnN0IGM9cy1pO2xldCBsPSEwO3N3aXRjaChvKXtjYXNlIDE3ODU3Mzc4MzI6bD0hMTticmVhaztjYXNlIDE2NjgyNDY2NDI6Y29uc3QgdD1lW2FdO2lmKDE9PT10KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQzMikoZSxhKzMpO3N3aXRjaCh0KXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLHIud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK3QpfX1lbHNlIDI9PT10JiYoMCxyLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsYSxhK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLG4ucmVhZFVpbnQzMikoZSxhKSYmKDAsci53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OmNvbnN0IGk9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvKTsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAke299ICgke2l9KS5gKX1sJiYoYSs9Yyl9fXBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7dGhpcy53aWR0aD10LXI7dGhpcy5oZWlnaHQ9YS1uO3RoaXMuY29tcG9uZW50c0NvdW50PWk7dGhpcy5iaXRzUGVyQ29tcG9uZW50PTg7cmV0dXJufX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX1wYXJzZUNvZGVzdHJlYW0oZSx0LGEpe2NvbnN0IGk9e307bGV0IHM9ITE7dHJ5e2xldCBvPXQ7Zm9yKDtvKzE8YTspe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGEsYyxsLGgsdSxkLGY9MDtzd2l0Y2godCl7Y2FzZSA2NTM1OTppLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGc9e307Zy5Yc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2cuWXNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys4KTtnLlhPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzEyKTtnLllPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzE2KTtnLlhUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzIwKTtnLllUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzI0KTtnLlhUT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysyOCk7Zy5ZVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMzIpO2NvbnN0IHA9KDAsbi5yZWFkVWludDE2KShlLG8rMzYpO2cuQ3Npej1wO2NvbnN0IG09W107YT1vKzM4O2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IHQ9e3ByZWNpc2lvbjoxKygxMjcmZVthXSksaXNTaWduZWQ6ISEoMTI4JmVbYV0pLFhSc2l6OmVbYSsxXSxZUnNpejplW2ErMl19O2ErPTM7Y2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyh0LGcpO20ucHVzaCh0KX1pLlNJWj1nO2kuY29tcG9uZW50cz1tO2NhbGN1bGF0ZVRpbGVHcmlkcyhpLG0pO2kuUUNDPVtdO2kuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgYj17fTthPW8rMjtjPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Yi5ub1F1YW50aXphdGlvbj04PT09aDtiLnNjYWxhckV4cG91bmRlZD11O2IuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX1iLlNQcWNkcz1sO2lmKGkubWFpbkhlYWRlcilpLlFDRD1iO2Vsc2V7aS5jdXJyZW50VGlsZS5RQ0Q9YjtpLmN1cnJlbnRUaWxlLlFDQz1bXX1icmVhaztjYXNlIDY1MzczOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IHk9e307YT1vKzI7bGV0IHc7aWYoaS5TSVouQ3NpejwyNTcpdz1lW2ErK107ZWxzZXt3PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yfWM9ZVthKytdO3N3aXRjaCgzMSZjKXtjYXNlIDA6aD04O3U9ITA7YnJlYWs7Y2FzZSAxOmg9MTY7dT0hMTticmVhaztjYXNlIDI6aD0xNjt1PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX15Lm5vUXVhbnRpemF0aW9uPTg9PT1oO3kuc2NhbGFyRXhwb3VuZGVkPXU7eS5ndWFyZEJpdHM9Yz4+NTtsPVtdO2Zvcig7YTxmK287KXtjb25zdCB0PXt9O2lmKDg9PT1oKXt0LmVwc2lsb249ZVthKytdPj4zO3QubXU9MH1lbHNle3QuZXBzaWxvbj1lW2FdPj4zO3QubXU9KDcmZVthXSk8PDh8ZVthKzFdO2ErPTJ9bC5wdXNoKHQpfXkuU1BxY2RzPWw7aS5tYWluSGVhZGVyP2kuUUNDW3ddPXk6aS5jdXJyZW50VGlsZS5RQ0Nbd109eTticmVhaztjYXNlIDY1MzYyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IFM9e307YT1vKzI7Y29uc3QgeD1lW2ErK107Uy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmeCk7Uy5zb3BNYXJrZXJVc2VkPSEhKDImeCk7Uy5lcGhNYXJrZXJVc2VkPSEhKDQmeCk7Uy5wcm9ncmVzc2lvbk9yZGVyPWVbYSsrXTtTLmxheWVyc0NvdW50PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yO1MubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVthKytdO1MuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbYSsrXTtTLnhjYj0yKygxNSZlW2ErK10pO1MueWNiPTIrKDE1JmVbYSsrXSk7Y29uc3Qgaz1lW2ErK107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmayk7Uy5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImayk7Uy50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZrKTtTLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZrKTtTLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmayk7Uy5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJmspO1MucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbYSsrXTtpZihTLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDthPGYrbzspe2NvbnN0IHI9ZVthKytdO3QucHVzaCh7UFB4OjE1JnIsUFB5OnI+PjR9KX1TLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgQz1bXTtTLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkMucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZDLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpO1MudmVydGljYWxseVN0cmlwZSYmQy5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIik7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZDLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKTtpZihDLmxlbmd0aD4wKXtzPSEwOygwLHIud2FybikoYEpQWDogVW5zdXBwb3J0ZWQgQ09EIG9wdGlvbnMgKCR7Qy5qb2luKCIsICIpfSkuYCl9aWYoaS5tYWluSGVhZGVyKWkuQ09EPVM7ZWxzZXtpLmN1cnJlbnRUaWxlLkNPRD1TO2kuY3VycmVudFRpbGUuQ09DPVtdfWJyZWFrO2Nhc2UgNjU0MjQ6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7ZD17fTtkLmluZGV4PSgwLG4ucmVhZFVpbnQxNikoZSxvKzIpO2QubGVuZ3RoPSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2QuZGF0YUVuZD1kLmxlbmd0aCtvLTI7ZC5wYXJ0SW5kZXg9ZVtvKzhdO2QucGFydHNDb3VudD1lW28rOV07aS5tYWluSGVhZGVyPSExO2lmKDA9PT1kLnBhcnRJbmRleCl7ZC5DT0Q9aS5DT0Q7ZC5DT0M9aS5DT0Muc2xpY2UoMCk7ZC5RQ0Q9aS5RQ0Q7ZC5RQ0M9aS5RQ0Muc2xpY2UoMCl9aS5jdXJyZW50VGlsZT1kO2JyZWFrO2Nhc2UgNjU0Mjc6ZD1pLmN1cnJlbnRUaWxlO2lmKDA9PT1kLnBhcnRJbmRleCl7aW5pdGlhbGl6ZVRpbGUoaSxkLmluZGV4KTtidWlsZFBhY2tldHMoaSl9Zj1kLmRhdGFFbmQtbztwYXJzZVRpbGVQYWNrZXRzKGksZSxvLGYpO2JyZWFrO2Nhc2UgNjUzNjM6KDAsci53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9Zn19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgSnB4RXJyb3IoZS5tZXNzYWdlKTsoMCxyLndhcm4pKGBKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICIke2UubWVzc2FnZX0iLmApfXRoaXMudGlsZXM9ZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jb21wb25lbnRzLHI9dC5Dc2l6LG49W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXNbdF09dHJhbnNmb3JtVGlsZShlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKnIpLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1yLHQ9c1swXS5pdGVtcyxuPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1hWzBdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1yLTM7Zj10Lmxlbmd0aDtpZih5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1O3A9bltkXTttPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+Pmg7Y1tiKytdPWU+Pmg7Y1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NbYisrXT1nKzEuNDAyKm0+Pmg7Y1tiKytdPWctLjM0NDEzKnAtLjcxNDE0Km0+Pmg7Y1tiKytdPWcrMS43NzIqcD4+aH1pZihlKWZvcihkPTAsYj0zO2Q8ZjtkKyssYis9NCljW2JdPWxbZF0rdT4+aH1lbHNlIGZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9c1tlXS5pdGVtcztoPWFbZV0ucHJlY2lzaW9uLTg7dT0uNSsoMTI4PDxoKTtmb3IoYj1lLGQ9MCxmPXQubGVuZ3RoO2Q8ZjtkKyspe2NbYl09dFtkXSt1Pj5oO2IrPXJ9fW4ucHVzaChsKX1yZXR1cm4gbn0oaSk7dGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6O3RoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXo7dGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2Z1bmN0aW9uIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoZSx0KXtlLngwPU1hdGguY2VpbCh0LlhPc2l6L2UuWFJzaXopO2UueDE9TWF0aC5jZWlsKHQuWHNpei9lLlhSc2l6KTtlLnkwPU1hdGguY2VpbCh0LllPc2l6L2UuWVJzaXopO2UueTE9TWF0aC5jZWlsKHQuWXNpei9lLllSc2l6KTtlLndpZHRoPWUueDEtZS54MDtlLmhlaWdodD1lLnkxLWUueTB9ZnVuY3Rpb24gY2FsY3VsYXRlVGlsZUdyaWRzKGUsdCl7Y29uc3QgYT1lLlNJWixyPVtdO2xldCBuO2NvbnN0IGk9TWF0aC5jZWlsKChhLlhzaXotYS5YVE9zaXopL2EuWFRzaXopLHM9TWF0aC5jZWlsKChhLllzaXotYS5ZVE9zaXopL2EuWVRzaXopO2ZvcihsZXQgZT0wO2U8cztlKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7bj17fTtuLnR4MD1NYXRoLm1heChhLlhUT3Npeit0KmEuWFRzaXosYS5YT3Npeik7bi50eTA9TWF0aC5tYXgoYS5ZVE9zaXorZSphLllUc2l6LGEuWU9zaXopO24udHgxPU1hdGgubWluKGEuWFRPc2l6Kyh0KzEpKmEuWFRzaXosYS5Yc2l6KTtuLnR5MT1NYXRoLm1pbihhLllUT3NpeisoZSsxKSphLllUc2l6LGEuWXNpeik7bi53aWR0aD1uLnR4MS1uLnR4MDtuLmhlaWdodD1uLnR5MS1uLnR5MDtuLmNvbXBvbmVudHM9W107ci5wdXNoKG4pfWUudGlsZXM9cjtmb3IobGV0IGU9MCxpPWEuQ3NpejtlPGk7ZSsrKXtjb25zdCBhPXRbZV07Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXt9O249clt0XTtpLnRjeDA9TWF0aC5jZWlsKG4udHgwL2EuWFJzaXopO2kudGN5MD1NYXRoLmNlaWwobi50eTAvYS5ZUnNpeik7aS50Y3gxPU1hdGguY2VpbChuLnR4MS9hLlhSc2l6KTtpLnRjeTE9TWF0aC5jZWlsKG4udHkxL2EuWVJzaXopO2kud2lkdGg9aS50Y3gxLWkudGN4MDtpLmhlaWdodD1pLnRjeTEtaS50Y3kwO24uY29tcG9uZW50c1tlXT1pfX19ZnVuY3Rpb24gZ2V0QmxvY2tzRGltZW5zaW9ucyhlLHQsYSl7Y29uc3Qgcj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXt9O2lmKHIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyl7bi5QUHg9ci5wcmVjaW5jdHNTaXplc1thXS5QUHg7bi5QUHk9ci5wcmVjaW5jdHNTaXplc1thXS5QUHl9ZWxzZXtuLlBQeD0xNTtuLlBQeT0xNX1uLnhjYl89YT4wP01hdGgubWluKHIueGNiLG4uUFB4LTEpOk1hdGgubWluKHIueGNiLG4uUFB4KTtuLnljYl89YT4wP01hdGgubWluKHIueWNiLG4uUFB5LTEpOk1hdGgubWluKHIueWNiLG4uUFB5KTtyZXR1cm4gbn1mdW5jdGlvbiBidWlsZFByZWNpbmN0cyhlLHQsYSl7Y29uc3Qgcj0xPDxhLlBQeCxuPTE8PGEuUFB5LGk9MD09PXQucmVzTGV2ZWwscz0xPDxhLlBQeCsoaT8wOi0xKSxvPTE8PGEuUFB5KyhpPzA6LTEpLGM9dC50cngxPnQudHJ4MD9NYXRoLmNlaWwodC50cngxL3IpLU1hdGguZmxvb3IodC50cngwL3IpOjAsbD10LnRyeTE+dC50cnkwP01hdGguY2VpbCh0LnRyeTEvbiktTWF0aC5mbG9vcih0LnRyeTAvbik6MCxoPWMqbDt0LnByZWNpbmN0UGFyYW1ldGVycz17cHJlY2luY3RXaWR0aDpyLHByZWNpbmN0SGVpZ2h0Om4sbnVtcHJlY2luY3Rzd2lkZTpjLG51bXByZWNpbmN0c2hpZ2g6bCxudW1wcmVjaW5jdHM6aCxwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOnMscHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6b319ZnVuY3Rpb24gYnVpbGRDb2RlYmxvY2tzKGUsdCxhKXtjb25zdCByPWEueGNiXyxuPWEueWNiXyxpPTE8PHIscz0xPDxuLG89dC50YngwPj5yLGM9dC50YnkwPj5uLGw9dC50YngxK2ktMT4+cixoPXQudGJ5MStzLTE+Pm4sdT10LnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLGQ9W10sZj1bXTtsZXQgZyxwLG0sYjtmb3IocD1jO3A8aDtwKyspZm9yKGc9bztnPGw7ZysrKXttPXtjYng6ZyxjYnk6cCx0YngwOmkqZyx0YnkwOnMqcCx0YngxOmkqKGcrMSksdGJ5MTpzKihwKzEpfTttLnRieDBfPU1hdGgubWF4KHQudGJ4MCxtLnRieDApO20udGJ5MF89TWF0aC5tYXgodC50YnkwLG0udGJ5MCk7bS50YngxXz1NYXRoLm1pbih0LnRieDEsbS50YngxKTttLnRieTFfPU1hdGgubWluKHQudGJ5MSxtLnRieTEpO2I9TWF0aC5mbG9vcigobS50YngwXy10LnRieDApL3UucHJlY2luY3RXaWR0aEluU3ViYmFuZCkrTWF0aC5mbG9vcigobS50YnkwXy10LnRieTApL3UucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpKnUubnVtcHJlY2luY3Rzd2lkZTttLnByZWNpbmN0TnVtYmVyPWI7bS5zdWJiYW5kVHlwZT10LnR5cGU7bS5MYmxvY2s9MztpZihtLnRieDFfPD1tLnRieDBffHxtLnRieTFfPD1tLnRieTBfKWNvbnRpbnVlO2QucHVzaChtKTtsZXQgZT1mW2JdO2lmKHZvaWQgMCE9PWUpe2c8ZS5jYnhNaW4/ZS5jYnhNaW49ZzpnPmUuY2J4TWF4JiYoZS5jYnhNYXg9Zyk7cDxlLmNieU1pbj9lLmNieE1pbj1wOnA+ZS5jYnlNYXgmJihlLmNieU1heD1wKX1lbHNlIGZbYl09ZT17Y2J4TWluOmcsY2J5TWluOnAsY2J4TWF4OmcsY2J5TWF4OnB9O20ucHJlY2luY3Q9ZX10LmNvZGVibG9ja1BhcmFtZXRlcnM9e2NvZGVibG9ja1dpZHRoOnIsY29kZWJsb2NrSGVpZ2h0Om4sbnVtY29kZWJsb2Nrd2lkZTpsLW8rMSxudW1jb2RlYmxvY2toaWdoOmgtYysxfTt0LmNvZGVibG9ja3M9ZDt0LnByZWNpbmN0cz1mfWZ1bmN0aW9uIGNyZWF0ZVBhY2tldChlLHQsYSl7Y29uc3Qgcj1bXSxuPWUuc3ViYmFuZHM7Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPW5bZV0uY29kZWJsb2Nrcztmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49YVtlXTtuLnByZWNpbmN0TnVtYmVyPT09dCYmci5wdXNoKG4pfX1yZXR1cm57bGF5ZXJOdW1iZXI6YSxjb2RlYmxvY2tzOnJ9fWZ1bmN0aW9uIExheWVyUmVzb2x1dGlvbkNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288bjtvKyspe2Zvcig7Yzw9cztjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLG8pO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288PXM7bysrKXtmb3IoO2M8bjtjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYobz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW29dLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLGMpO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzLG8sYyxsLGg9MDtmb3IoYz0wO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2g9TWF0aC5tYXgoaCxlLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpfWNvbnN0IHU9bmV3IEludDMyQXJyYXkoaCsxKTtmb3Iobz0wO288PWg7KytvKXtsZXQgZT0wO2ZvcihjPTA7YzxpOysrYyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbY10ucmVzb2x1dGlvbnM7bzx0Lmxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0W29dLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX11W29dPWV9cz0wO289MDtjPTA7bD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1oO28rKyl7Zm9yKDtsPHVbb107bCsrKXtmb3IoO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztpZighKGw+PWEpKXtmb3IoO3M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsbCxzKTtzKys7cmV0dXJuIGV9cz0wfX1jPTB9bD0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz1nZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHIpLG89cztsZXQgYz0wLGw9MCxoPTAsdT0wLGQ9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7ZDxvLm1heE51bUhpZ2g7ZCsrKXtmb3IoO3U8by5tYXhOdW1XaWRlO3UrKyl7Zm9yKDtoPGk7aCsrKXtjb25zdCBlPXIuY29tcG9uZW50c1toXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2w8PXQ7bCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbbF0sYT1zLmNvbXBvbmVudHNbaF0ucmVzb2x1dGlvbnNbbF0scj1nZXRQcmVjaW5jdEluZGV4SWZFeGlzdCh1LGQsYSxvLHQpO2lmKG51bGwhPT1yKXtmb3IoO2M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQscixjKTtjKys7cmV0dXJuIGV9Yz0wfX1sPTB9aD0wfXU9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKTtsZXQgbz0wLGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bDxpOysrbCl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF0sdD1zLmNvbXBvbmVudHNbbF0sYT1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDt1PHQubWF4TnVtSGlnaDt1Kyspe2Zvcig7aDx0Lm1heE51bVdpZGU7aCsrKXtmb3IoO2M8PWE7YysrKXtjb25zdCBhPWUucmVzb2x1dGlvbnNbY10scj10LnJlc29sdXRpb25zW2NdLGk9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QoaCx1LHIsdCxhKTtpZihudWxsIT09aSl7Zm9yKDtvPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldChhLGksbyk7bysrO3JldHVybiBlfW89MH19Yz0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdChlLHQsYSxyLG4pe2NvbnN0IGk9ZSpyLm1pbldpZHRoLHM9dCpyLm1pbkhlaWdodDtpZihpJWEud2lkdGghPTB8fHMlYS5oZWlnaHQhPTApcmV0dXJuIG51bGw7Y29uc3Qgbz1zL2Eud2lkdGgqbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTtyZXR1cm4gaS9hLmhlaWdodCtvfWZ1bmN0aW9uIGdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUoZSl7Y29uc3QgdD1lLmNvbXBvbmVudHMubGVuZ3RoO2xldCBhPU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLG49MCxpPTA7Y29uc3Qgcz1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyl7Y29uc3QgdD1lLmNvbXBvbmVudHNbb10sYz10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkoYysxKTtsZXQgaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1BWF9WQUxVRSxkPTAsZj0wLGc9MTtmb3IobGV0IGU9YztlPj0wOy0tZSl7Y29uc3QgYT10LnJlc29sdXRpb25zW2VdLHI9ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoLG49ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDtoPU1hdGgubWluKGgscik7dT1NYXRoLm1pbih1LG4pO2Q9TWF0aC5tYXgoZCxhLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlKTtmPU1hdGgubWF4KGYsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaCk7bFtlXT17d2lkdGg6cixoZWlnaHQ6bn07Zzw8PTF9YT1NYXRoLm1pbihhLGgpO3I9TWF0aC5taW4ocix1KTtuPU1hdGgubWF4KG4sZCk7aT1NYXRoLm1heChpLGYpO3Nbb109e3Jlc29sdXRpb25zOmwsbWluV2lkdGg6aCxtaW5IZWlnaHQ6dSxtYXhOdW1XaWRlOmQsbWF4TnVtSGlnaDpmfX1yZXR1cm57Y29tcG9uZW50czpzLG1pbldpZHRoOmEsbWluSGVpZ2h0OnIsbWF4TnVtV2lkZTpuLG1heE51bUhpZ2g6aX19ZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXQuQ3Npejtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCB0PXIuY29tcG9uZW50c1tlXSxhPXQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxuPVtdLGk9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IHI9Z2V0QmxvY2tzRGltZW5zaW9ucygwLHQsZSkscz17fSxvPTE8PGEtZTtzLnRyeDA9TWF0aC5jZWlsKHQudGN4MC9vKTtzLnRyeTA9TWF0aC5jZWlsKHQudGN5MC9vKTtzLnRyeDE9TWF0aC5jZWlsKHQudGN4MS9vKTtzLnRyeTE9TWF0aC5jZWlsKHQudGN5MS9vKTtzLnJlc0xldmVsPWU7YnVpbGRQcmVjaW5jdHMoMCxzLHIpO24ucHVzaChzKTtsZXQgYztpZigwPT09ZSl7Yz17fTtjLnR5cGU9IkxMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtzLnN1YmJhbmRzPVtjXX1lbHNle2NvbnN0IG49MTw8YS1lKzEsbz1bXTtjPXt9O2MudHlwZT0iSEwiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24pO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24pO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iTEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24pO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24pO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iSEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtzLnN1YmJhbmRzPW99fXQucmVzb2x1dGlvbnM9bjt0LnN1YmJhbmRzPWl9Y29uc3QgaT1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMucHJvZ3Jlc3Npb25PcmRlcjtzd2l0Y2goaSl7Y2FzZSAwOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMTpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDI6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAzOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBQb3NpdGlvbkNvbXBvbmVudFJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgNDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgQ29tcG9uZW50UG9zaXRpb25SZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKcHhFcnJvcihgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtpfWApfX1mdW5jdGlvbiBwYXJzZVRpbGVQYWNrZXRzKGUsdCxhLHIpe2xldCBpLHM9MCxvPTAsYz0hMTtmdW5jdGlvbiByZWFkQml0cyhlKXtmb3IoO288ZTspe2NvbnN0IGU9dFthK3NdO3MrKztpZihjKXtpPWk8PDd8ZTtvKz03O2M9ITF9ZWxzZXtpPWk8PDh8ZTtvKz04fTI1NT09PWUmJihjPSEwKX1vLT1lO3JldHVybiBpPj4+byYoMTw8ZSktMX1mdW5jdGlvbiBza2lwTWFya2VySWZFcXVhbChlKXtpZigyNTU9PT10W2Ercy0xXSYmdFthK3NdPT09ZSl7c2tpcEJ5dGVzKDEpO3JldHVybiEwfWlmKDI1NT09PXRbYStzXSYmdFthK3MrMV09PT1lKXtza2lwQnl0ZXMoMik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gc2tpcEJ5dGVzKGUpe3MrPWV9ZnVuY3Rpb24gYWxpZ25Ub0J5dGUoKXtvPTA7aWYoYyl7cysrO2M9ITF9fWZ1bmN0aW9uIHJlYWRDb2RpbmdwYXNzZXMoKXtpZigwPT09cmVhZEJpdHMoMSkpcmV0dXJuIDE7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAyO2xldCBlPXJlYWRCaXRzKDIpO2lmKGU8MylyZXR1cm4gZSszO2U9cmVhZEJpdHMoNSk7aWYoZTwzMSlyZXR1cm4gZSs2O2U9cmVhZEJpdHMoNyk7cmV0dXJuIGUrMzd9Y29uc3QgbD1lLmN1cnJlbnRUaWxlLmluZGV4LGg9ZS50aWxlc1tsXSx1PWUuQ09ELnNvcE1hcmtlclVzZWQsZD1lLkNPRC5lcGhNYXJrZXJVc2VkLGY9aC5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPHI7KXthbGlnblRvQnl0ZSgpO3UmJnNraXBNYXJrZXJJZkVxdWFsKDE0NSkmJnNraXBCeXRlcyg0KTtjb25zdCBlPWYubmV4dFBhY2tldCgpO2lmKCFyZWFkQml0cygxKSljb250aW51ZTtjb25zdCByPWUubGF5ZXJOdW1iZXIsaT1bXTtsZXQgbztmb3IobGV0IHQ9MCxhPWUuY29kZWJsb2Nrcy5sZW5ndGg7dDxhO3QrKyl7bz1lLmNvZGVibG9ja3NbdF07bGV0IGE9by5wcmVjaW5jdDtjb25zdCBzPW8uY2J4LWEuY2J4TWluLGM9by5jYnktYS5jYnlNaW47bGV0IGwsaCx1PSExLGQ9ITE7aWYodm9pZCAwIT09by5pbmNsdWRlZCl1PSEhcmVhZEJpdHMoMSk7ZWxzZXthPW8ucHJlY2luY3Q7bGV0IGU7aWYodm9pZCAwIT09YS5pbmNsdXNpb25UcmVlKWU9YS5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1hLmNieE1heC1hLmNieE1pbisxLG49YS5jYnlNYXgtYS5jYnlNaW4rMTtlPW5ldyBJbmNsdXNpb25UcmVlKHQsbixyKTtoPW5ldyBUYWdUcmVlKHQsbik7YS5pbmNsdXNpb25UcmVlPWU7YS56ZXJvQml0UGxhbmVzVHJlZT1oO2ZvcihsZXQgZT0wO2U8cjtlKyspaWYoMCE9PXJlYWRCaXRzKDEpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGUucmVzZXQocyxjLHIpKWZvcig7Oyl7aWYoIXJlYWRCaXRzKDEpKXtlLmluY3JlbWVudFZhbHVlKHIpO2JyZWFrfWw9IWUubmV4dExldmVsKCk7aWYobCl7by5pbmNsdWRlZD0hMDt1PWQ9ITA7YnJlYWt9fX1pZighdSljb250aW51ZTtpZihkKXtoPWEuemVyb0JpdFBsYW5lc1RyZWU7aC5yZXNldChzLGMpO2Zvcig7OylpZihyZWFkQml0cygxKSl7bD0haC5uZXh0TGV2ZWwoKTtpZihsKWJyZWFrfWVsc2UgaC5pbmNyZW1lbnRWYWx1ZSgpO28uemVyb0JpdFBsYW5lcz1oLnZhbHVlfWNvbnN0IGY9cmVhZENvZGluZ3Bhc3NlcygpO2Zvcig7cmVhZEJpdHMoMSk7KW8uTGJsb2NrKys7Y29uc3QgZz0oMCxuLmxvZzIpKGYpLHA9cmVhZEJpdHMoKGY8MTw8Zz9nLTE6Zykrby5MYmxvY2spO2kucHVzaCh7Y29kZWJsb2NrOm8sY29kaW5ncGFzc2VzOmYsZGF0YUxlbmd0aDpwfSl9YWxpZ25Ub0J5dGUoKTtkJiZza2lwTWFya2VySWZFcXVhbCgxNDYpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5zaGlmdCgpO289ZS5jb2RlYmxvY2s7dm9pZCAwPT09by5kYXRhJiYoby5kYXRhPVtdKTtvLmRhdGEucHVzaCh7ZGF0YTp0LHN0YXJ0OmErcyxlbmQ6YStzK2UuZGF0YUxlbmd0aCxjb2RpbmdwYXNzZXM6ZS5jb2RpbmdwYXNzZXN9KTtzKz1lLmRhdGFMZW5ndGh9fXJldHVybiBzfWZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoZSx0LGEscixuLHMsYyxsLGgpe2NvbnN0IHU9ci50YngwLGQ9ci50YnkwLGY9ci50YngxLXIudGJ4MCxnPXIuY29kZWJsb2NrcyxwPSJIIj09PXIudHlwZS5jaGFyQXQoMCk/MTowLG09IkgiPT09ci50eXBlLmNoYXJBdCgxKT90OjA7Zm9yKGxldCBhPTAsYj1nLmxlbmd0aDthPGI7KythKXtjb25zdCBiPWdbYV0seT1iLnRieDFfLWIudGJ4MF8sdz1iLnRieTFfLWIudGJ5MF87aWYoMD09PXl8fDA9PT13KWNvbnRpbnVlO2lmKHZvaWQgMD09PWIuZGF0YSljb250aW51ZTtjb25zdCBTPW5ldyBvKHksdyxiLnN1YmJhbmRUeXBlLGIuemVyb0JpdFBsYW5lcyxzKTtsZXQgeD0yO2NvbnN0IGs9Yi5kYXRhO2xldCBDLHYsRixPPTAsVD0wO2ZvcihDPTAsdj1rLmxlbmd0aDtDPHY7QysrKXtGPWtbQ107Tys9Ri5lbmQtRi5zdGFydDtUKz1GLmNvZGluZ3Bhc3Nlc31jb25zdCBNPW5ldyBVaW50OEFycmF5KE8pO2xldCBFPTA7Zm9yKEM9MCx2PWsubGVuZ3RoO0M8djtDKyspe0Y9a1tDXTtjb25zdCBlPUYuZGF0YS5zdWJhcnJheShGLnN0YXJ0LEYuZW5kKTtNLnNldChlLEUpO0UrPWUubGVuZ3RofWNvbnN0IEQ9bmV3IGkuQXJpdGhtZXRpY0RlY29kZXIoTSwwLE8pO1Muc2V0RGVjb2RlcihEKTtmb3IoQz0wO0M8VDtDKyspe3N3aXRjaCh4KXtjYXNlIDA6Uy5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6Uy5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjpTLnJ1bkNsZWFudXBQYXNzKCk7bCYmUy5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfWgmJlMucmVzZXQoKTt4PSh4KzEpJTN9bGV0IE49Yi50YngwXy11KyhiLnRieTBfLWQpKmY7Y29uc3QgUj1TLmNvZWZmaWNlbnRzU2lnbixMPVMuY29lZmZpY2VudHNNYWduaXR1ZGUsaj1TLmJpdHNEZWNvZGVkLCQ9Yz8wOi41O2xldCBfLFUsWDtFPTA7Y29uc3QgSD0iTEwiIT09ci50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7Y29uc3QgYT0yKihOL2Z8MCkqKHQtZikrcCttO2ZvcihfPTA7Xzx5O18rKyl7VT1MW0VdO2lmKDAhPT1VKXtVPShVKyQpKm47MCE9PVJbRV0mJihVPS1VKTtYPWpbRV07Y29uc3QgdD1IP2ErKE48PDEpOk47ZVt0XT1jJiZYPj1zP1U6VSooMTw8cy1YKX1OKys7RSsrfU4rPWYteX19fWZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoZSx0LGEpe2NvbnN0IHI9dC5jb21wb25lbnRzW2FdLG49ci5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT1yLnF1YW50aXphdGlvblBhcmFtZXRlcnMsbz1uLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxjPWkuU1BxY2RzLGw9aS5zY2FsYXJFeHBvdW5kZWQsaD1pLmd1YXJkQml0cyx1PW4uc2VnbWVudGF0aW9uU3ltYm9sVXNlZCxkPW4ucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyxmPWUuY29tcG9uZW50c1thXS5wcmVjaXNpb24sZz1uLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbixwPWc/bmV3IFJldmVyc2libGVUcmFuc2Zvcm06bmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSxtPVtdO2xldCBiPTA7Zm9yKGxldCBlPTA7ZTw9bztlKyspe2NvbnN0IHQ9ci5yZXNvbHV0aW9uc1tlXSxhPXQudHJ4MS10LnRyeDAsbj10LnRyeTEtdC50cnkwLGk9bmV3IEZsb2F0MzJBcnJheShhKm4pO2ZvcihsZXQgcj0wLG49dC5zdWJiYW5kcy5sZW5ndGg7cjxuO3IrKyl7bGV0IG4sbztpZihsKXtuPWNbYl0ubXU7bz1jW2JdLmVwc2lsb247YisrfWVsc2V7bj1jWzBdLm11O289Y1swXS5lcHNpbG9uKyhlPjA/MS1lOjApfWNvbnN0IHA9dC5zdWJiYW5kc1tyXSxtPXNbcC50eXBlXTtjb3B5Q29lZmZpY2llbnRzKGksYSwwLHAsZz8xOjIqKihmK20tbykqKDErbi8yMDQ4KSxoK28tMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDphLGhlaWdodDpuLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sci50Y3gwLHIudGN5MCk7cmV0dXJue2xlZnQ6ci50Y3gwLHRvcDpyLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gaW5pdGlhbGl6ZVRpbGUoZSx0KXtjb25zdCBhPWUuU0laLkNzaXoscj1lLnRpbGVzW3RdO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9ci5jb21wb25lbnRzW3RdLG49dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbdF0/ZS5jdXJyZW50VGlsZS5RQ0NbdF06ZS5jdXJyZW50VGlsZS5RQ0Q7YS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW47Y29uc3QgaT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLkNPQ1t0XT9lLmN1cnJlbnRUaWxlLkNPQ1t0XTplLmN1cnJlbnRUaWxlLkNPRDthLmNvZGluZ1N0eWxlUGFyYW1ldGVycz1pfXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycz1lLmN1cnJlbnRUaWxlLkNPRH1jbGFzcyBUYWdUcmVle2NvbnN0cnVjdG9yKGUsdCl7Y29uc3QgYT0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChhKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCl7bGV0IGEscj0wLG49MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7YT10aGlzLmxldmVsc1tyXTtjb25zdCBpPWUrdCphLndpZHRoO2lmKHZvaWQgMCE9PWEuaXRlbXNbaV0pe249YS5pdGVtc1tpXTticmVha31hLmluZGV4PWk7ZT4+PTE7dD4+PTE7cisrfXItLTthPXRoaXMubGV2ZWxzW3JdO2EuaXRlbXNbYS5pbmRleF09bjt0aGlzLmN1cnJlbnRMZXZlbD1yO2RlbGV0ZSB0aGlzLnZhbHVlfWluY3JlbWVudFZhbHVlKCl7Y29uc3QgZT10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07ZS5pdGVtc1tlLmluZGV4XSsrfW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2UtLTtpZihlPDApe3RoaXMudmFsdWU9YTtyZXR1cm4hMX10aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jbGFzcyBJbmNsdXNpb25UcmVle2NvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPSgwLG4ubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV09YTtjb25zdCBuPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOnJ9O3RoaXMubGV2ZWxzLnB1c2gobik7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQsYSl7bGV0IHI9MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmxldmVsc1tyXSxpPWUrdCpuLndpZHRoO24uaW5kZXg9aTtjb25zdCBzPW4uaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPmEpe3RoaXMuY3VycmVudExldmVsPXI7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTtyZXR1cm4hMX1lPj49MTt0Pj49MTtyKyt9dGhpcy5jdXJyZW50TGV2ZWw9ci0xO3JldHVybiEwfWluY3JlbWVudFZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO3QuaXRlbXNbdC5pbmRleF09ZSsxO3RoaXMucHJvcGFnYXRlVmFsdWVzKCl9cHJvcGFnYXRlVmFsdWVzKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07Zm9yKDstLWU+PTA7KXt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YX19bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07dC5pdGVtc1t0LmluZGV4XT0yNTU7ZS0tO2lmKGU8MClyZXR1cm4hMTt0aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jb25zdCBvPWZ1bmN0aW9uIEJpdE1vZGVsQ2xvc3VyZSgpe2NvbnN0IGU9MTcsdD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSxhPW5ldyBVaW50OEFycmF5KFswLDMsNCwwLDUsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDEsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7cmV0dXJuIGNsYXNzIEJpdE1vZGVse2NvbnN0cnVjdG9yKGUsbixpLHMsbyl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PW47bGV0IGM7Yz0iSEgiPT09aT9yOiJITCI9PT1pP2E6dDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPWM7Y29uc3QgbD1lKm47dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkobCk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGg7aD1vPjE0P25ldyBVaW50MzJBcnJheShsKTpvPjY/bmV3IFVpbnQxNkFycmF5KGwpOm5ldyBVaW50OEFycmF5KGwpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9aDt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShsKTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2lmKDAhPT1zKWZvcihsZXQgZT0wO2U8bDtlKyspdVtlXT1zO3RoaXMuYml0c0RlY29kZWQ9dTt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbMTddPTkyO3RoaXMuY29udGV4dHNbMThdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgdD10aGlzLmRlY29kZXIsYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbixvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZCxoPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLHU9YSxkPTIqYSxmPTMqYTtsZXQgZztmb3IobGV0IHA9MDtwPHI7cD1nKXtnPU1hdGgubWluKHArNCxyKTtjb25zdCBtPXAqYSxiPXArMzxyO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IHk9bStyO2xldCB3LFM9MCx4PXksaz1wO2lmKGImJjA9PT1oW3ldJiYwPT09aFt5K3VdJiYwPT09aFt5K2RdJiYwPT09aFt5K2ZdJiYwPT09blt5XSYmMD09PW5beSt1XSYmMD09PW5beStkXSYmMD09PW5beStmXSl7aWYoIXQucmVhZEJpdChvLDE4KSl7bFt5XSsrO2xbeSt1XSsrO2xbeStkXSsrO2xbeStmXSsrO2NvbnRpbnVlfVM9dC5yZWFkQml0KG8sZSk8PDF8dC5yZWFkQml0KG8sZSk7aWYoMCE9PVMpe2s9cCtTO3grPVMqYX13PXRoaXMuZGVjb2RlU2lnbkJpdChrLHIseCk7c1t4XT13O2lbeF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShrLHIseCk7aFt4XXw9Mjt4PXk7Zm9yKGxldCBlPXA7ZTw9aztlKysseCs9YSlsW3hdKys7UysrfWZvcihrPXArUztrPGc7aysrLHgrPWEpe2lmKGlbeF18fDAhPSgxJmhbeF0pKWNvbnRpbnVlO2NvbnN0IGU9Y1tuW3hdXTtpZigxPT09dC5yZWFkQml0KG8sZSkpe3c9dGhpcy5kZWNvZGVTaWduQml0KGsscix4KTtzW3hdPXc7aVt4XT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsscix4KTtoW3hdfD0yfWxbeF0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IHQ9dGhpcy5kZWNvZGVyLGE9dGhpcy5jb250ZXh0cztpZigxMCE9PSh0LnJlYWRCaXQoYSxlKTw8M3x0LnJlYWRCaXQoYSxlKTw8Mnx0LnJlYWRCaXQoYSxlKTw8MXx0LnJlYWRCaXQoYSxlKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19fSgpO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgbj0xLGk9ZS5sZW5ndGg7bjxpO24rKylyPXRoaXMuaXRlcmF0ZShyLGVbbl0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxuPXQrMSxpPXQrYS0yLHM9dCthO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbcl09ZVtuXTtlW3NdPWVbaV19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PG47dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtuPSh0fD0wKS0zO2ZvcihpPXIrNDtpLS07bis9MillW25dKj0uODEyODkzMDY2MTE1OTYwOTtuPXQtMjtzPXUqZVtuLTFdO2ZvcihpPXIrMztpLS07bis9Mil7bz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW87aWYoIWktLSlicmVhaztuKz0yO3M9dSplW24rMV07ZVtuXT1kKmVbbl0tcy1vfW49dC0xO3M9aCplW24tMV07Zm9yKGk9cisyO2ktLTtuKz0yKXtvPWgqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1oKmVbbisxXTtlW25dLT1zK299bj10O3M9bCplW24tMV07Zm9yKGk9cisxO2ktLTtuKz0yKXtvPWwqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1sKmVbbisxXTtlW25dLT1zK299aWYoMCE9PXIpe249dCsxO3M9YyplW24tMV07Zm9yKGk9cjtpLS07bis9Mil7bz1jKmVbbisxXTtlW25dLT1zK287aWYoIWktLSlicmVhaztuKz0yO3M9YyplW24rMV07ZVtuXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IG4saTtmb3Iobj10fD0wLGk9cisxO2ktLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsaT1yO2ktLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsbj17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtuLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtuLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1ufXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3Qgbj10aGlzLmx6d1N0YXRlO2lmKCFuKXJldHVybjtjb25zdCBpPW4uZWFybHlDaGFuZ2U7bGV0IHM9bi5uZXh0Q29kZTtjb25zdCBvPW4uZGljdGlvbmFyeVZhbHVlcyxjPW4uZGljdGlvbmFyeUxlbmd0aHMsbD1uLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9bi5jb2RlTGVuZ3RoLHU9bi5wcmV2Q29kZTtjb25zdCBkPW4uY3VycmVudFNlcXVlbmNlO2xldCBmPW4uY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxuPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKG4pe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytpJnMraS0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK2kpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19bi5uZXh0Q29kZT1zO24uY29kZUxlbmd0aD1oO24ucHJldkNvZGU9dTtuLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBuPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLG49YSgzMyksaT1hKDM2KSxzPWEoMzgpLG89YSgzNyksYz1hKDM1KSxsPWEoMzkpLGg9YSg0MCksdT1hKDQxKSxkPWEoNDIpLGY9YSg0MyksZz1hKDQ0KSxwPWEoMTQpLG09YSg0NSksYj1hKDQpLHk9YSg4KSx3PWEoNDYpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLGs9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImZvbnRUeXBlIiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwidHlwZSIsInZlcnRpY2FsIl0sQz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLG8sYyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1vO3RoaXMuaXNTcGFjZT1jO3RoaXMuaXNJbkZvbnQ9bDtjb25zdCBoPSgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkoYSk7dGhpcy5pc1doaXRlc3BhY2U9aC5pc1doaXRlc3BhY2U7dGhpcy5pc1plcm9XaWR0aERpYWNyaXRpYz1oLmlzWmVyb1dpZHRoRGlhY3JpdGljO3RoaXMuaXNJbnZpc2libGVGb3JtYXRNYXJrPWguaXNJbnZpc2libGVGb3JtYXRNYXJrfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuInR0Y2YiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBpLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1uPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWk9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtpPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtzPWF9cmV0dXJuW2ksc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBuPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihuKTsoMCxyLndhcm4pKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wO2NvbnN0IGg9U1tsXVswXTtsZXQgdT1oLGQ9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKHU+ZCl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha311PVNbbF1bMF07ZD1TW2xdWzFdfWNvbnN0IHA9dSsrOzA9PT1nJiYoZz1hKTtsZXQgbT1uLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJm08aCYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTp1fX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLGs9IiIsQz0iIix2PSIiLEY9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe2srPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7Qys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipGO0YrPXktYisxO2srPXN0cmluZzE2KDApO0MrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKXYrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7ays9IlwwASI7Qys9IlwwXDAifWNvbnN0IE89IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK2srQyt2O2xldCBUPSIiLE09IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCk7VD0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfVQrPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfU09IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoTy5sZW5ndGgrNCkrTytNK1R9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2E9YXx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IG49MCxpPTAsbz0wLGM9MCxsPW51bGwsaD0wO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTtjb25zdCB0PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlKTtpZih0PDMyKW58PTE8PHQ7ZWxzZSBpZih0PDY0KWl8PTE8PHQtMzI7ZWxzZSBpZih0PDk2KW98PTE8PHQtNjQ7ZWxzZXtpZighKHQ8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dC05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IHU9ZS5iYm94fHxbMCwwLDAsMF0sZD1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZj1lLmFzY2VudFNjYWxlZD8xOmQveCxnPWEuYXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuYXNjZW50fHx1WzNdKSk7bGV0IHA9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuZGVzY2VudHx8dVsxXSkpO3A+MCYmZS5kZXNjZW50PjAmJnVbMV08MCYmKHA9LXApO2NvbnN0IG09YS55TWF4fHxnLGI9LWEueU1pbnx8LXA7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZykrc3RyaW5nMTYocCkrIlwwZCIrc3RyaW5nMTYobSkrc3RyaW5nMTYoYikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0IHM9YS50eXBlLG89YS5zdWJ0eXBlO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1vO2xldCBjLGg9InNhbnMtc2VyaWYiO3RoaXMuaXNNb25vc3BhY2U/aD0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250JiYoaD0ic2VyaWYiKTt0aGlzLmZhbGxiYWNrTmFtZT1oO3RoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L3g7dGhpcy5hc2NlbnQ9YS5hc2NlbnQveDt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3g7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyIhPT1hLnR5cGUpe3RoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKHQmJiF0LmlzRW1wdHkpe1tzLG9dPWdldEZvbnRGaWxlVHlwZSh0LGEpO3M9PT10aGlzLnR5cGUmJm89PT10aGlzLnN1YnR5cGV8fCgwLHIuaW5mbykoYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7c30vJHtvfS5gKTt0cnl7c3dpdGNoKHMpe2Nhc2UiTU1UeXBlMSI6KDAsci5pbmZvKSgiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgbj0iVHlwZTFDIj09PW98fCJDSURGb250VHlwZTBDIj09PW8/bmV3IHUuQ0ZGRm9udCh0LGEpOm5ldyB3LlR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUsbixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhhKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7KDAsci53YXJuKShlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMuZm9udFR5cGU9KDAsaS5nZXRGb250VHlwZSkocyxvLGEuaXNTdGFuZGFyZEZvbnQpO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1lbHNle3QmJigwLHIud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9fWVsc2V7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTt0aGlzLmZvbnRUeXBlPXIuRm9udFR5cGUuVFlQRTN9fWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5rLC4uLkNdOmssYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLG47Zm9yKHIgb2YgdCl7bj10aGlzW3JdO3ZvaWQgMCE9PW4mJihhW3JdPW4pfXJldHVybiBhfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3QgdD10aGlzLm5hbWUsYT10aGlzLnR5cGUsbj10aGlzLnN1YnR5cGU7bGV0IHU9KDAsaS5ub3JtYWxpemVGb250TmFtZSkodCk7Y29uc3QgZD0oMCxsLmdldFN0ZEZvbnRNYXApKCksZz0oMCxsLmdldE5vblN0ZEZvbnRNYXApKCkscD0hIWRbdV0sbT0hKCFnW3VdfHwhZFtnW3VdXSk7dT1kW3VdfHxnW3VdfHx1O2NvbnN0IGI9KDAsZi5nZXRGb250QmFzaWNNZXRyaWNzKSgpW3VdO2lmKGIpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWIuYXNjZW50L3gpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yi5kZXNjZW50L3gpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWIuY2FwSGVpZ2h0L3gpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHUpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHUpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCB5PS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghcHx8eSkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigocHx8bSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKTsvQXJpYWwtP0JsYWNrL2kudGVzdCh0KT9hcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIsKDAsbC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2spKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpKSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1yW2VdO3ZvaWQgMD09PWFbbl0mJihyWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7clsrZV09dH0pKTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgaC5Ub1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdCh1KSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuU3ltYm9sU2V0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdCh1KSl7L1dpbmdkaW5ncy9pLnRlc3QodCkmJigwLHIud2FybikoIk5vbi1lbWJlZGRlZCBXaW5nZGluZ3MgZm9udCwgZmFsbGluZyBiYWNrIHRvIFphcGZEaW5nYmF0cy4iKTt0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZihwKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZVsrdF09YX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLGE9W107dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sbj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYSxlKTstMSE9PW4mJihyPW4pfWFbK3RdPXJ9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1ZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsKDAsbC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMpKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXUuc3BsaXQoIi0iKVswXTt0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGEsbixlLmlzU3RhbmRhcmRGb250KX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgcz1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO3MuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChyKTtjb25zdCBzPWUuZ2V0Qnl0ZXMobik7ZS5wb3M9aTtpZigiaGVhZCI9PT10KXtzWzhdPXNbOV09c1sxMF09c1sxMV09MDtzWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOm4sb2Zmc2V0OnIsZGF0YTpzfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxhLHIsbixpKXtjb25zdCBzPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYoYS10PD0xMilyZXR1cm4gcztjb25zdCBvPWUuc3ViYXJyYXkodCxhKTtsZXQgYz1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGM8MCl7Yz0tMTt3cml0ZVNpZ25lZEludDE2KG8sMCxjKTtyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBsLGg9MTAsdT0wO2ZvcihsPTA7bDxjO2wrKyl7dT0ob1toXTw8OHxvW2grMV0pKzE7aCs9Mn1jb25zdCBkPWgsZj1vW2hdPDw4fG9baCsxXTtzLnNpemVPZkluc3RydWN0aW9ucz1mO2grPTIrZjtjb25zdCBnPWg7bGV0IHA9MDtmb3IobD0wO2w8dTtsKyspe2NvbnN0IGU9b1toKytdOzE5MiZlJiYob1toLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7cCs9cjtpZig4JmUpe2NvbnN0IGU9b1toKytdO2wrPWU7cCs9ZSpyfX1pZigwPT09cClyZXR1cm4gcztsZXQgbT1oK3A7aWYobT5vLmxlbmd0aClyZXR1cm4gcztpZighaSYmZj4wKXtyLnNldChvLnN1YmFycmF5KDAsZCksbik7ci5zZXQoWzAsMF0sbitkKTtyLnNldChvLnN1YmFycmF5KGcsbSksbitkKzIpO20tPWY7by5sZW5ndGgtbT4zJiYobT1tKzMmLTQpO3MubGVuZ3RoPW07cmV0dXJuIHN9aWYoby5sZW5ndGgtbT4zKXttPW0rMyYtNDtyLnNldChvLnN1YmFycmF5KDAsbSksbik7cy5sZW5ndGg9bTtyZXR1cm4gc31yLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0sbj1lLmxlbmd0aCxpPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybiByO2NvbnN0IHM9dC5nZXRVaW50MTYoKSxvPXQuZ2V0VWludDE2KCksYz1bXTtsZXQgbCxoO2ZvcihsPTA7bDxzJiZ0LnBvcysxMjw9aTtsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V8fDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2UpJiZjLnB1c2goZSl9Zm9yKGw9MCxoPWMubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9Y1tsXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBuPWErbytlLm9mZnNldDtpZihuK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9bjtjb25zdCBzPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgYT0iIjtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7clsxXVtzXT1hfWVsc2UgclswXVtzXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuIHJ9Y29uc3QgbD1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGEsbixpLHMsbyxjPWUuZGF0YSxoPTAsdT0wLGQ9MDtjb25zdCBmPVtdLGc9W10scD1bXTtsZXQgbT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxiPSExLHk9MCx3PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2g8ZTspe2NvbnN0IGU9Y1toKytdO2lmKDY0PT09ZSl7bj1jW2grK107aWYoYnx8dyloKz1uO2Vsc2UgZm9yKGE9MDthPG47YSsrKWYucHVzaChjW2grK10pfWVsc2UgaWYoNjU9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe249ZS0xNzYrMTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe249ZS0xODQrMTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZig0MyE9PWV8fG0paWYoNDQhPT1lfHxtKXtpZig0NT09PWUpaWYoYil7Yj0hMTt1PWh9ZWxzZXtvPWcucG9wKCk7aWYoIW8peygwLHIud2FybikoIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1wLnBvcCgpO2M9by5kYXRhO2g9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109Zi5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1ofWVsc2UgaWYoODg9PT1lKSsreTtlbHNlIGlmKDI3PT09ZSl3PXk7ZWxzZSBpZig4OT09PWUpe3c9PT15JiYodz0wKTstLXl9ZWxzZSBpZigyOD09PWUmJiFiJiYhdyl7Y29uc3QgZT1mLmF0KC0xKTtlPjAmJihoKz1lLTEpfX1lbHNle2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1oO3M9Zi5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmh9fWVsc2UgaWYoIWImJiF3KXtzPWYuYXQoLTEpO2lmKGlzTmFOKHMpKSgwLHIuaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9Zi5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApeygwLHIud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zi5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhzKSl7Zy5wdXNoKHtkYXRhOmMsaTpoLHN0YWNrVG9wOmYubGVuZ3RoLTF9KTtwLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8peygwLHIud2FybikoIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7aD1vLml9fX1pZighYiYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9bFtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPWYucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZmLmxlbmd0aD4wOyl7Zi5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtmLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1tO2NvbnN0IFM9W2NdO2g+Yy5sZW5ndGgmJlMucHVzaChuZXcgVWludDhBcnJheShoLWMubGVuZ3RoKSk7aWYoZD51KXsoMCxyLndhcm4pKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO1MucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixuPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspbis9dFthXS5sZW5ndGg7bj1uKzMmLTQ7Y29uc3QgaT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1pO2UubGVuZ3RoPW59fShlLFMpfWxldCBkLGYsYix3O2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyB5LlN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTsoMCxyLmFzc2VydCkoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG89e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6c307c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gbztjYXNlIDI6by5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG99dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbz0wO288YTtvKyspe2UucG9zPShlLnN0YXJ0fHwwKStuW29dO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLGM9cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighYy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0IGw9cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXSYmbFtlXVtyXS5yZXBsYWNlKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOmN9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6Y30pfX19aWYocyl7KDAsci53YXJuKShgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7ZD1lLmhlYWRlcjtmPWUudGFibGVzfWVsc2V7ZD1yZWFkT3BlblR5cGVIZWFkZXIodCk7Zj1yZWFkVGFibGVzKHQsZC5udW1UYWJsZXMpfWNvbnN0IFM9IWZbIkNGRiAiXTtpZihTKXtpZighZi5sb2NhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWYuZ2x5Zil7KDAsci53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtmLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKChhLmNpZFRvR2lkTWFwfHxbXSkubGVuZ3RoPjB8fCEoYS5jTWFwIGluc3RhbmNlb2YgcC5JZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1kLnZlcnNpb24mJiF0fHwhZi5oZWFkfHwhZi5oaGVhfHwhZi5tYXhwfHwhZi5wb3N0KXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgdS5DRkZGb250KHcsYSk7YWRqdXN0V2lkdGhzKGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxiLGEpfWRlbGV0ZSBmLmdseWY7ZGVsZXRlIGYubG9jYTtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWYubWF4cCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStmLm1heHAub2Zmc2V0O2NvbnN0IHg9dC5nZXRJbnQzMigpLGs9dC5nZXRVaW50MTYoKTtpZihhLnNjYWxlRmFjdG9ycyYmYS5zY2FsZUZhY3RvcnMubGVuZ3RoPT09ayYmUyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSxyPW5ldyBnLkdseWZUYWJsZSh7Z2x5ZlRhYmxlOmYuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmYubG9jYS5kYXRhLG51bUdseXBoczprfSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOm4sbG9jYTppLGlzTG9jYXRpb25Mb25nOnN9PXIud3JpdGUoKTtmLmdseWYuZGF0YT1uO2YubG9jYS5kYXRhPWk7aWYocyE9PSEhdCl7Zi5oZWFkLmRhdGFbNTBdPTA7Zi5oZWFkLmRhdGFbNTFdPXM/MTowfWNvbnN0IG89Zi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPXI+PjgmMjU1O29bYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgQz1rKzEsdj0hMDtpZihDPjY1NTM1KXt2PSExO0M9azsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRj0wLE89MDtpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7Zi5tYXhwLmRhdGFbMTRdPTA7Zi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Rj10LmdldFVpbnQxNigpO3QucG9zKz00O089dC5nZXRVaW50MTYoKX1mLm1heHAuZGF0YVs0XT1DPj44O2YubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IFQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpeygwLHIud2FybikoIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXsoMCxyLndhcm4pKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7KDAsci53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGksbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KGYuZnBnbSxmLnByZXAsZlsiY3Z0ICJdLEYpO2lmKCFUKXtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4saSxzKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG89ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgYz1lLmdldFVpbnQxNigpO2lmKDAhPT1vKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKGM+aSl7KDAsci5pbmZvKShgVGhlIG51bU9mTWV0cmljcyAoJHtjfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7Yz1pO3QuZGF0YVszNF09KDY1MjgwJmMpPj44O3QuZGF0YVszNV09MjU1JmN9Y29uc3QgbD1pLWMtKGEubGVuZ3RoLTQqYz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihzKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGYuaGhlYSxmLmhtdHgsZi5oZWFkLEMsdik7aWYoIWYuaGVhZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IG49ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZihpPj4xNiE9MSl7KDAsci5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7blswXT0wO25bMV09MTtuWzJdPTA7blszXT0wfWNvbnN0IHM9aW50MTYobls1MF0sbls1MV0pO2lmKHM8MHx8cz4xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIitzKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7bls1MF09MDtuWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTtuWzUwXT0wO25bNTFdPTF9fX0oZi5oZWFkLGssUz9mLmxvY2EubGVuZ3RoOjApO2xldCBNPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUyl7Y29uc3QgZT1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixuLGkscyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1pP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihtPTA7bTxhO20rKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXlbbV07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9eVttKzFdLm9mZnNldDtpZigwIT09YSl7eVttXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgdz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsbiksdD1lLmxlbmd0aDswPT09dCYmKHdbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihpKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6dyxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KGYubG9jYSxmLmdseWYsayxlLFQsdixPKTtNPXQubWlzc2luZ0dseXBocztpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe2YubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtmLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighZi5oaGVhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWYuaGhlYS5kYXRhWzEwXSYmMD09PWYuaGhlYS5kYXRhWzExXSl7Zi5oaGVhLmRhdGFbMTBdPTI1NTtmLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IEU9e3VuaXRzUGVyRW06aW50MTYoZi5oZWFkLmRhdGFbMThdLGYuaGVhZC5kYXRhWzE5XSkseU1heDppbnQxNihmLmhlYWQuZGF0YVs0Ml0sZi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzM4XSxmLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs0XSxmLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs2XSxmLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs4XSxmLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PUUuYXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9RS5kZXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9RS5saW5lR2FwL0UudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvJiZ0aGlzLmNzc0ZvbnRJbmZvLmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLGspO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8ayYmaGFzR2x5cGgoaSkmJihEW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoIWN8fGMucGxhdGZvcm1JZCE9PXJ8fGMuZW5jb2RpbmdJZCE9PWkpe2lmKDAhPT1yfHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1yJiYwPT09aSloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1pfHwhbiYmYyl7aWYoYSYmMz09PXImJjA9PT1pKXtoPSEwO2xldCBhPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGE9ITEpfWEmJihsPSEwKX19ZWxzZXtoPSEwO2F8fChsPSEwKX1lbHNlIGg9ITA7aCYmKGM9e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOmksb2Zmc2V0OnN9KTtpZihsKWJyZWFrfX1jJiYodC5wb3M9cytjLm9mZnNldCk7aWYoIWN8fC0xPT09dC5wZWVrQnl0ZSgpKXsoMCxyLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBoPXQuZ2V0VWludDE2KCk7bGV0IHU9ITE7Y29uc3QgZD1bXTtsZXQgZixnO2lmKDA9PT1oKXt0LnNraXAoNCk7Zm9yKGY9MDtmPDI1NjtmKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmZC5wdXNoKHtjaGFyQ29kZTpmLGdseXBoSWQ6ZX0pfXU9ITB9ZWxzZSBpZigyPT09aCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2c9dC5nZXRVaW50MTYoKTtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9ZWxzZXtjb25zdCBuPXJbZVthXV07Zm9yKGY9MDtmPG4uZW50cnlDb3VudDtmKyspe2NvbnN0IGU9KGE8PDgpK2Yrbi5maXJzdENvZGU7dC5wb3M9bi5pZFJhbmdlUG9zKzIqZjtnPXQuZ2V0VWludDE2KCk7MCE9PWcmJihnPShnK24uaWREZWx0YSklNjU1MzYpO2QucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmd9KX19fWVsc2UgaWYoND09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGY9MDtmPG87ZisrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtzPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7bj1pLm9mZnNldEluZGV4O2ZvcihmPXM7Zjw9ZTtmKyspaWYoNjU1MzUhPT1mKXtnPW48MD9mOmNbbitmLXNdO2c9Zyt0JjY1NTM1O2QucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmd9KX19fWVsc2UgaWYoNj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihmPTA7ZjxhO2YrKyl7Zz10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStmO2QucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmd9KX19ZWxzZXtpZigxMiE9PWgpeygwLHIud2FybikoImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitoKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihmPTA7ZjxlO2YrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKWQucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19ZC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxkLmxlbmd0aDtlKyspaWYoZFtlLTFdLmNoYXJDb2RlPT09ZFtlXS5jaGFyQ29kZSl7ZC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmQsaGFzU2hvcnRDbWFwOnV9fShmLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcjtyPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShyLGUpO2xldCBkOzM9PT1uJiYxPT09cz9kPWVbb106MT09PW4mJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSk7aWYodm9pZCAwPT09ZCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe0RbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgbClEW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09biYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtEW3RdPWUuZ2x5cGhJZH1pZihhLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PURbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKERbZV09cil9fTA9PT1ELmxlbmd0aCYmKERbMF09MCk7bGV0IE49Qy0xO3Z8fChOPTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcoRCxoYXNHbHlwaCxOLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO2YuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsQyl9O2ZbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oZlsiT1MvMiJdLHQpfHwoZlsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLEUpfSl9aWYoIVMpdHJ5e3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyBuLkNGRlBhcnNlcih3LGEsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCk7Yi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgbi5DRkZDb21waWxlcihiKTtmWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaChlKXsoMCxyLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihmLm5hbWUpe2NvbnN0IHQ9cmVhZE5hbWVUYWJsZShmLm5hbWUpO2YubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGx9ZWxzZSBmLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUj1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKGQudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gZilSLmFkZFRhYmxlKGUsZltlXS5kYXRhKTtyZXR1cm4gUi50b0FycmF5KCl9Y29udmVydChlLHQsYSl7YS5maXhlZFBpdGNoPSExO2EuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoMD09PWUuZGlmZmVyZW5jZXMubGVuZ3RofHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpaWYodD09PWVbcl0pe2F8fChhPVtdKTthLnB1c2goMHxyKX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiJiZiLmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsbj10LmdldENoYXJzZXQoKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGIpe3R8PTA7Y29uc3QgYT1iW3RdLHI9Yy5TdGFuZGFyZEVuY29kaW5nW2FbMl1dLHM9Yy5TdGFuZGFyZEVuY29kaW5nW2FbM11dLG89bi5pbmRleE9mKHIpLGg9bi5pbmRleE9mKHMpO2lmKG88MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxvKSxyPWNyZWF0ZUNoYXJDb2RlKHQsaCk7aVtlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDp1fX19YS5zZWFjTWFwPWl9Y29uc3QgeT0xLyhhLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgpWzBdLHc9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3cuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxmKSk7dy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKGYsZyxwKSk7dy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih5KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihhLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc3RyaW5nMTYoYS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTt3LmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGEuYXNjZW50KStzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihhLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGE9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxuPXA7dDxuO3QrKyl7bGV0IG49MDtpZihlKXtjb25zdCBhPWVbdC0xXTtuPSJ3aWR0aCJpbiBhP2Eud2lkdGg6MH1lbHNlIGEmJihuPU1hdGguY2VpbChhW3RdfHwwKSk7cis9c3RyaW5nMTYobikrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO3cuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihwKSk7dy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt3LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB3LnRvQXJyYXkoKX1nZXQgc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpW2FdO2xldCByPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7cj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhlLHIpKX0hciYmdGhpcy50b1VuaWNvZGUmJihyPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO3I8PTAmJihyPWUpO3Q9dGhpcy53aWR0aHNbcl07aWYodClicmVha310PXR8fHRoaXMuZGVmYXVsdFdpZHRoO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzcGFjZVdpZHRoIix0KX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLGksbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8mJm8uaXNTcGFjZT09PXQpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXAmJnRoaXMuY01hcC5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1uPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgbiYmKG49dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXTtsZXQgaD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBoJiYoaD1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKTtsZXQgdT12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07YT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChhPTMyKTthPSgwLHMubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe3U9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7ZD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGY9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT9mPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOigwLHIud2FybikoYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7bz1uZXcgR2x5cGgoZSxmLGgsZCxuLGwsaSx0LHUpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW99Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsbixhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDppfT1hO24rPWk7Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1pJiYzMj09PWUuY2hhckNvZGVBdChuLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxuPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2gobil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBuPWEubGVuZ3RoO3QucHVzaChbcixyK25dKTtyKz1ufX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChuKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1yKGkpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChpKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX07dC5FcnJvckZvbnQ9Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDM0KSxpPWEoMzUpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPTM5MSxjPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGw9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qobi5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxuPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KG4pO3QuZmRBcnJheS5wdXNoKG4pfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXsoMCxyLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCBuPWVbMF0saT1lWzFdLHM9ZVsyXSxvPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKG4saSxzLG8pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsbj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0saT1lLmxlbmd0aDtmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdLHM9aT4+NCxvPTE1Jmk7aWYocz09PXIpYnJlYWs7YSs9bltzXTtpZihvPT09cilicmVhazthKz1uW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1lW3QrK107YT0oYTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7KDAsci53YXJuKSgnQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCBuPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7bi5wdXNoKFtyLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIG59cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLG49W107bGV0IGkscyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKGk9MCxzPXIrMTtpPHM7KytpKXtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDsrK24pe3I8PD04O3IrPWFbZSsrXX1uLnB1c2goYytyKX1vPW5bcl19Zm9yKGk9MCxzPW4ubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1uW2ldLHI9bltpKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaCgoMCxyLmJ5dGVzVG9TdHJpbmcpKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrLG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3Qgbz10W2grK107bGV0IHU9bnVsbDtpZigxMj09PW8pe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtpPTB9ZWxzZSB1PWxbZV19ZWxzZSBpZigyOD09PW8pe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO2krK31lbHNlIGlmKDE0PT09byl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19dT1jW29dfWVsc2UgaWYobz49MzImJm88PTI0Nil7c1tpXT1vLTEzOTtpKyt9ZWxzZSBpZihvPj0yNDcmJm88PTI1NCl7c1tpXT1vPDI1MT8oby0yNDc8PDgpK3RbaF0rMTA4Oi0oby0yNTE8PDgpLXRbaF0tMTA4O2grKztpKyt9ZWxzZSBpZigyNTU9PT1vKXtzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7aSsrfWVsc2UgaWYoMTk9PT1vfHwyMD09PW8pe2UuaGludHMrPWk+PjE7aCs9ZS5oaW50cys3Pj4zO2klPTI7dT1jW29dfWVsc2V7aWYoMTA9PT1vfHwyOT09PW8pe2xldCB0O3Q9MTA9PT1vP2E6bjtpZighdCl7dT1jW29dOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIit1LmlkKTtyZXR1cm4hMX1sZXQgbD0zMjc2ODt0LmNvdW50PDEyNDA/bD0xMDc6dC5jb3VudDwzMzkwMCYmKGw9MTEzMSk7Y29uc3QgaD1zWy0taV0rbDtpZihoPDB8fGg+PXQuY291bnR8fGlzTmFOKGgpKXt1PWNbb107KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrdS5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGgpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09byl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09byYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7dT1jWzE0XX1lbHNlIHU9Y1tvXX1pZih1KXtpZih1LnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PW98fDIzPT09byllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PW98fDE4PT09bykpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09bz8zOjIzfX1pZigibWluImluIHUmJiFlLnVuZGVmU3RhY2smJmk8dS5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIit1LmlkKyI7IGFjdHVhbDogIitpKyIsIGV4cGVjdGVkOiAiK3UubWluKTtpZigwPT09aSl7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZ1LnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO2ktPXUubWluO2k+PTImJnUuc3RlbT9pJT0yOmk+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO2k+MCYmKGUud2lkdGg9c1tpLTFdKX1pZigic3RhY2tEZWx0YSJpbiB1KXsic3RhY2tGbiJpbiB1JiZ1LnN0YWNrRm4ocyxpKTtpKz11LnN0YWNrRGVsdGF9ZWxzZSBpZih1LnN0YWNrQ2xlYXJpbmcpaT0wO2Vsc2UgaWYodS5yZXNldFN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYodS51bmRlZlN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OmkscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG89W10sYz1bXSxsPWUuY291bnQ7Zm9yKGxldCBoPTA7aDxsO2grKyl7Y29uc3QgbD1lLmdldChoKSx1PXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGQ9ITAsZj1udWxsLGc9cztpZihuJiZpLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoaCk7aWYoLTE9PT1lKXsoMCxyLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2Q9ITF9aWYoZT49aS5sZW5ndGgpeygwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2Q9ITF9aWYoZCl7Zz1pW2VdLnByaXZhdGVEaWN0O2Y9Zy5zdWJyc0luZGV4fX1lbHNlIHQmJihmPXQpO2QmJihkPXRoaXMucGFyc2VDaGFyU3RyaW5nKHUsbCxmLGEpKTtpZihudWxsIT09dS53aWR0aCl7Y29uc3QgZT1nLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO2NbaF09ZSt1LndpZHRofWVsc2V7Y29uc3QgZT1nLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO2NbaF09ZX1udWxsIT09dS5zZWFjJiYob1toXT11LnNlYWMpO2R8fGUuc2V0KGgsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm8sd2lkdGhzOmN9fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IG49cithLGk9dGhpcy5ieXRlcy5zdWJhcnJheShyLG4pLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bztpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCBuPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChuKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9ci5VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2kmJmkubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBvPXMudHJhY2tlcnNbMF0sYz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQoYyk7Y29uc3QgbD10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW8uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO28uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7by5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2NvbnN0IHU9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7by5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZCh1KTtpZihlLmlzQ0lERm9udCl7by5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtvLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IHI9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtvXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLG4saT0iIjtmb3Iocj0wLG49dC5sZW5ndGg7cjxuOysrcil7Y29uc3QgZT10W3JdO2krPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCBuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO25bdF09ZX1uPW4uam9pbigiIik7IiI9PT1uJiYobj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykobikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IG49bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2lmKGEpe2kucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtpLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtpLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtpLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7ci5wdXNoKGUpO24uYWRkKHMpO2Uub2Zmc2V0KHQpfW49dGhpcy5jb21waWxlSW5kZXgobixyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6bn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKXtjb25zdCBpPWVbbl0scz1pLnByaXZhdGVEaWN0O2lmKCFzfHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixjPXRoaXMuY29tcGlsZURpY3QocyxvKTtsZXQgbD1hLmxlbmd0aDtvLm9mZnNldChsKTtjLmxlbmd0aHx8KGw9MCk7dFtuXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbYy5sZW5ndGgsbF0sYSk7YS5hZGQoYyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtvLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbYy5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCEobiBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbbl0scz1lLnR5cGVzW25dO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgbz0wLGM9cy5sZW5ndGg7bzxjOysrbyl7Y29uc3QgYz1zW29dLGw9aVtvXTtzd2l0Y2goYyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW25dO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke2N9YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZCgoMCxyLnN0cmluZ1RvQnl0ZXMpKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUdsb2JhbFN1YnJJbmRleCgpe2NvbnN0IGU9dGhpcy5jZmYuZ2xvYmFsU3VickluZGV4O3RoaXMub3V0LndyaXRlQnl0ZUFycmF5KHRoaXMuY29tcGlsZUluZGV4KGUpKX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0W2FdPWVbYV07cmV0dXJuIHR9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBuPVtyPj44JjI1NSwyNTUmcl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPHI7KytpKW8rPWFbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7bi5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPHIrMTtpKyspezE9PT1zP24ucHVzaCgyNTUmYyk6Mj09PXM/bi5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9uLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTpuLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2FbaV0mJihjKz1hW2ldLmxlbmd0aCl9Zm9yKGk9MDtpPHI7aSsrKXt0W2ldJiZ0W2ldLm9mZnNldChuLmxlbmd0aCk7bi5wdXNoKC4uLmFbaV0pfXJldHVybiBufX10LkNGRkNvbXBpbGVyPUNGRkNvbXBpbGVyfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMDt0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdO3QuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDA7dC5nZXRGb250VHlwZT1mdW5jdGlvbiBnZXRGb250VHlwZShlLHQsYT0hMSl7c3dpdGNoKGUpe2Nhc2UiVHlwZTEiOnJldHVybiBhP3IuRm9udFR5cGUuVFlQRTFTVEFOREFSRDoiVHlwZTFDIj09PXQ/ci5Gb250VHlwZS5UWVBFMUM6ci5Gb250VHlwZS5UWVBFMTtjYXNlIkNJREZvbnRUeXBlMCI6cmV0dXJuIkNJREZvbnRUeXBlMEMiPT09dD9yLkZvbnRUeXBlLkNJREZPTlRUWVBFMEM6ci5Gb250VHlwZS5DSURGT05UVFlQRTA7Y2FzZSJPcGVuVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuT1BFTlRZUEU7Y2FzZSJUcnVlVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuVFJVRVRZUEU7Y2FzZSJDSURGb250VHlwZTIiOnJldHVybiByLkZvbnRUeXBlLkNJREZPTlRUWVBFMjtjYXNlIk1NVHlwZTEiOnJldHVybiByLkZvbnRUeXBlLk1NVFlQRTE7Y2FzZSJUeXBlMCI6cmV0dXJuIHIuRm9udFR5cGUuVFlQRTA7ZGVmYXVsdDpyZXR1cm4gci5Gb250VHlwZS5VTktOT1dOfX07dC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5yZXBsYWNlKC9ccy9nLCIiKX07dC5yZWNvdmVyR2x5cGhOYW1lPXJlY292ZXJHbHlwaE5hbWU7dC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMsYyxsO2NvbnN0IGg9ISEoZS5mbGFncyZvLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KXtsPXQ7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7cltjXT1zPj0wP3M6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe2w9KDAsbi5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1lbHNlIGlmKGgpZm9yKGMgaW4gdClyW2NdPXRbY107ZWxzZXtsPW4uU3RhbmRhcmRFbmNvZGluZztmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1jb25zdCB1PWUuZGlmZmVyZW5jZXM7bGV0IGQ7aWYodSlmb3IoYyBpbiB1KXtjb25zdCBlPXVbY107cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtkfHwoZD0oMCxpLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGQpO3QhPT1lJiYocz1hLmluZGV4T2YodCkpfXJbY109cz49MD9zOjB9cmV0dXJuIHJ9O3ZhciByPWEoMiksbj1hKDM1KSxpPWEoMzcpLHM9YSgzOCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTt0LkZvbnRGbGFncz1vO3QuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlOygwLHIuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9fSwoZSx0LGEpPT57YS5yKHQpO2EuZCh0LHtnZXREaW5nYmF0c0dseXBoc1VuaWNvZGU6KCk9PmksZ2V0R2x5cGhzVW5pY29kZTooKT0+bn0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsci5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0Tm9ybWFsaXplZFVuaWNvZGVzOigpPT5zLGdldFVuaWNvZGVGb3JHbHlwaDooKT0+Z2V0VW5pY29kZUZvckdseXBoLGdldFVuaWNvZGVSYW5nZUZvcjooKT0+Z2V0VW5pY29kZVJhbmdlRm9yLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcyxyZXZlcnNlSWZSdGw6KCk9PnJldmVyc2VJZlJ0bH0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9uKClbZV18fGU6MTczPT09ZT80NTplfWZ1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBpPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSl7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWlbdF07aWYoZT49YS5iZWdpbiYmZTxhLmVuZClyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBzPSgwLHIuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbigpe3JldHVyblsiwqgiLCIgzIgiLCLCryIsIiDMhCIsIsK0IiwiIMyBIiwiwrUiLCLOvCIsIsK4IiwiIMynIiwixLIiLCJJSiIsIsSzIiwiaWoiLCLEvyIsIkzCtyIsIsWAIiwibMK3IiwixYkiLCLKvG4iLCLFvyIsInMiLCLHhCIsIkTFvSIsIseFIiwiRMW+Iiwix4YiLCJkxb4iLCLHhyIsIkxKIiwix4giLCJMaiIsIseJIiwibGoiLCLHiiIsIk5KIiwix4siLCJOaiIsIseMIiwibmoiLCLHsSIsIkRaIiwix7IiLCJEeiIsIsezIiwiZHoiLCLLmCIsIiDMhiIsIsuZIiwiIMyHIiwiy5oiLCIgzIoiLCLLmyIsIiDMqCIsIsucIiwiIMyDIiwiy50iLCIgzIsiLCLNuiIsIiDNhSIsIs6EIiwiIMyBIiwiz5AiLCLOsiIsIs+RIiwizrgiLCLPkiIsIs6lIiwiz5UiLCLPhiIsIs+WIiwiz4AiLCLPsCIsIs66Iiwiz7EiLCLPgSIsIs+yIiwiz4IiLCLPtCIsIs6YIiwiz7UiLCLOtSIsIs+5IiwizqMiLCLWhyIsItWl1oIiLCLZtSIsItin2bQiLCLZtiIsItmI2bQiLCLZtyIsItuH2bQiLCLZuCIsItmK2bQiLCLguLMiLCLguY3guLIiLCLgurMiLCLgu43gurIiLCLgu5wiLCLguqvgupkiLCLgu50iLCLguqvguqEiLCLgvbciLCLgvrLgvoEiLCLgvbkiLCLgvrPgvoEiLCLhupoiLCJhyr4iLCLhvr0iLCIgzJMiLCLhvr8iLCIgzJMiLCLhv4AiLCIgzYIiLCLhv74iLCIgzJQiLCLigIIiLCIgIiwi4oCDIiwiICIsIuKAhCIsIiAiLCLigIUiLCIgIiwi4oCGIiwiICIsIuKAiCIsIiAiLCLigIkiLCIgIiwi4oCKIiwiICIsIuKAlyIsIiDMsyIsIuKApCIsIi4iLCLigKUiLCIuLiIsIuKApiIsIi4uLiIsIuKAsyIsIuKAsuKAsiIsIuKAtCIsIuKAsuKAsuKAsiIsIuKAtiIsIuKAteKAtSIsIuKAtyIsIuKAteKAteKAtSIsIuKAvCIsIiEhIiwi4oC+IiwiIMyFIiwi4oGHIiwiPz8iLCLigYgiLCI/ISIsIuKBiSIsIiE/Iiwi4oGXIiwi4oCy4oCy4oCy4oCyIiwi4oGfIiwiICIsIuKCqCIsIlJzIiwi4oSAIiwiYS9jIiwi4oSBIiwiYS9zIiwi4oSDIiwiwrBDIiwi4oSFIiwiYy9vIiwi4oSGIiwiYy91Iiwi4oSHIiwixpAiLCLihIkiLCLCsEYiLCLihJYiLCJObyIsIuKEoSIsIlRFTCIsIuKEtSIsIteQIiwi4oS2Iiwi15EiLCLihLciLCLXkiIsIuKEuCIsIteTIiwi4oS7IiwiRkFYIiwi4oWgIiwiSSIsIuKFoSIsIklJIiwi4oWiIiwiSUlJIiwi4oWjIiwiSVYiLCLihaQiLCJWIiwi4oWlIiwiVkkiLCLihaYiLCJWSUkiLCLihaciLCJWSUlJIiwi4oWoIiwiSVgiLCLihakiLCJYIiwi4oWqIiwiWEkiLCLihasiLCJYSUkiLCLihawiLCJMIiwi4oWtIiwiQyIsIuKFriIsIkQiLCLiha8iLCJNIiwi4oWwIiwiaSIsIuKFsSIsImlpIiwi4oWyIiwiaWlpIiwi4oWzIiwiaXYiLCLihbQiLCJ2Iiwi4oW1IiwidmkiLCLihbYiLCJ2aWkiLCLihbciLCJ2aWlpIiwi4oW4IiwiaXgiLCLihbkiLCJ4Iiwi4oW6IiwieGkiLCLihbsiLCJ4aWkiLCLihbwiLCJsIiwi4oW9IiwiYyIsIuKFviIsImQiLCLihb8iLCJtIiwi4oisIiwi4oir4oirIiwi4oitIiwi4oir4oir4oirIiwi4oivIiwi4oiu4oiuIiwi4oiwIiwi4oiu4oiu4oiuIiwi4pG0IiwiKDEpIiwi4pG1IiwiKDIpIiwi4pG2IiwiKDMpIiwi4pG3IiwiKDQpIiwi4pG4IiwiKDUpIiwi4pG5IiwiKDYpIiwi4pG6IiwiKDcpIiwi4pG7IiwiKDgpIiwi4pG8IiwiKDkpIiwi4pG9IiwiKDEwKSIsIuKRviIsIigxMSkiLCLikb8iLCIoMTIpIiwi4pKAIiwiKDEzKSIsIuKSgSIsIigxNCkiLCLikoIiLCIoMTUpIiwi4pKDIiwiKDE2KSIsIuKShCIsIigxNykiLCLikoUiLCIoMTgpIiwi4pKGIiwiKDE5KSIsIuKShyIsIigyMCkiLCLikogiLCIxLiIsIuKSiSIsIjIuIiwi4pKKIiwiMy4iLCLikosiLCI0LiIsIuKSjCIsIjUuIiwi4pKNIiwiNi4iLCLiko4iLCI3LiIsIuKSjyIsIjguIiwi4pKQIiwiOS4iLCLikpEiLCIxMC4iLCLikpIiLCIxMS4iLCLikpMiLCIxMi4iLCLikpQiLCIxMy4iLCLikpUiLCIxNC4iLCLikpYiLCIxNS4iLCLikpciLCIxNi4iLCLikpgiLCIxNy4iLCLikpkiLCIxOC4iLCLikpoiLCIxOS4iLCLikpsiLCIyMC4iLCLikpwiLCIoYSkiLCLikp0iLCIoYikiLCLikp4iLCIoYykiLCLikp8iLCIoZCkiLCLikqAiLCIoZSkiLCLikqEiLCIoZikiLCLikqIiLCIoZykiLCLikqMiLCIoaCkiLCLikqQiLCIoaSkiLCLikqUiLCIoaikiLCLikqYiLCIoaykiLCLikqciLCIobCkiLCLikqgiLCIobSkiLCLikqkiLCIobikiLCLikqoiLCIobykiLCLikqsiLCIocCkiLCLikqwiLCIocSkiLCLikq0iLCIocikiLCLikq4iLCIocykiLCLikq8iLCIodCkiLCLikrAiLCIodSkiLCLikrEiLCIodikiLCLikrIiLCIodykiLCLikrMiLCIoeCkiLCLikrQiLCIoeSkiLCLikrUiLCIoeikiLCLiqIwiLCLiiKviiKviiKviiKsiLCLiqbQiLCI6Oj0iLCLiqbUiLCI9PSIsIuKptiIsIj09PSIsIuK6nyIsIuavjSIsIuK7syIsIum+nyIsIuK8gCIsIuS4gCIsIuK8gSIsIuS4qCIsIuK8giIsIuS4tiIsIuK8gyIsIuS4vyIsIuK8hCIsIuS5mSIsIuK8hSIsIuS6hSIsIuK8hiIsIuS6jCIsIuK8hyIsIuS6oCIsIuK8iCIsIuS6uiIsIuK8iSIsIuWEvyIsIuK8iiIsIuWFpSIsIuK8iyIsIuWFqyIsIuK8jCIsIuWGgiIsIuK8jSIsIuWGliIsIuK8jiIsIuWGqyIsIuK8jyIsIuWHoCIsIuK8kCIsIuWHtSIsIuK8kSIsIuWIgCIsIuK8kiIsIuWKmyIsIuK8kyIsIuWLuSIsIuK8lCIsIuWMlSIsIuK8lSIsIuWMmiIsIuK8liIsIuWMuCIsIuK8lyIsIuWNgSIsIuK8mCIsIuWNnCIsIuK8mSIsIuWNqSIsIuK8miIsIuWOgiIsIuK8myIsIuWOtiIsIuK8nCIsIuWPiCIsIuK8nSIsIuWPoyIsIuK8niIsIuWblyIsIuK8nyIsIuWcnyIsIuK8oCIsIuWjqyIsIuK8oSIsIuWkgiIsIuK8oiIsIuWkiiIsIuK8oyIsIuWklSIsIuK8pCIsIuWkpyIsIuK8pSIsIuWlsyIsIuK8piIsIuWtkCIsIuK8pyIsIuWugCIsIuK8qCIsIuWvuCIsIuK8qSIsIuWwjyIsIuK8qiIsIuWwoiIsIuK8qyIsIuWwuCIsIuK8rCIsIuWxriIsIuK8rSIsIuWxsSIsIuK8riIsIuW3myIsIuK8ryIsIuW3pSIsIuK8sCIsIuW3sSIsIuK8sSIsIuW3viIsIuK8siIsIuW5siIsIuK8syIsIuW5uiIsIuK8tCIsIuW5vyIsIuK8tSIsIuW7tCIsIuK8tiIsIuW7viIsIuK8tyIsIuW8iyIsIuK8uCIsIuW8kyIsIuK8uSIsIuW9kCIsIuK8uiIsIuW9oSIsIuK8uyIsIuW9syIsIuK8vCIsIuW/gyIsIuK8vSIsIuaIiCIsIuK8viIsIuaItiIsIuK8vyIsIuaJiyIsIuK9gCIsIuaUryIsIuK9gSIsIuaUtCIsIuK9giIsIuaWhyIsIuK9gyIsIuaWlyIsIuK9hCIsIuaWpCIsIuK9hSIsIuaWuSIsIuK9hiIsIuaXoCIsIuK9hyIsIuaXpSIsIuK9iCIsIuabsCIsIuK9iSIsIuaciCIsIuK9iiIsIuacqCIsIuK9iyIsIuasoCIsIuK9jCIsIuatoiIsIuK9jSIsIuatuSIsIuK9jiIsIuausyIsIuK9jyIsIuaviyIsIuK9kCIsIuavlCIsIuK9kSIsIuavmyIsIuK9kiIsIuawjyIsIuK9kyIsIuawlCIsIuK9lCIsIuawtCIsIuK9lSIsIueBqyIsIuK9liIsIueIqiIsIuK9lyIsIueItiIsIuK9mCIsIueIuyIsIuK9mSIsIueIvyIsIuK9miIsIueJhyIsIuK9myIsIueJmSIsIuK9nCIsIueJmyIsIuK9nSIsIueKrCIsIuK9niIsIueOhCIsIuK9nyIsIueOiSIsIuK9oCIsIueTnCIsIuK9oSIsIueTpiIsIuK9oiIsIueUmCIsIuK9oyIsIueUnyIsIuK9pCIsIueUqCIsIuK9pSIsIueUsCIsIuK9piIsIueWiyIsIuK9pyIsIueWkiIsIuK9qCIsIueZtiIsIuK9qSIsIueZvSIsIuK9qiIsIueariIsIuK9qyIsIueavyIsIuK9rCIsIuebriIsIuK9rSIsIuefmyIsIuK9riIsIuefoiIsIuK9ryIsIuefsyIsIuK9sCIsIuekuiIsIuK9sSIsIuemuCIsIuK9siIsIuemviIsIuK9syIsIueptCIsIuK9tCIsIueriyIsIuK9tSIsIueruSIsIuK9tiIsIuexsyIsIuK9tyIsIuezuCIsIuK9uCIsIue8tiIsIuK9uSIsIue9kSIsIuK9uiIsIue+iiIsIuK9uyIsIue+vSIsIuK9vCIsIuiAgSIsIuK9vSIsIuiAjCIsIuK9viIsIuiAkiIsIuK9vyIsIuiAsyIsIuK+gCIsIuiBvyIsIuK+gSIsIuiCiSIsIuK+giIsIuiHoyIsIuK+gyIsIuiHqiIsIuK+hCIsIuiHsyIsIuK+hSIsIuiHvCIsIuK+hiIsIuiIjCIsIuK+hyIsIuiImyIsIuK+iCIsIuiInyIsIuK+iSIsIuiJriIsIuK+iiIsIuiJsiIsIuK+iyIsIuiJuCIsIuK+jCIsIuiZjSIsIuK+jSIsIuiZqyIsIuK+jiIsIuihgCIsIuK+jyIsIuihjCIsIuK+kCIsIuihoyIsIuK+kSIsIuilviIsIuK+kiIsIuimiyIsIuK+kyIsIuinkiIsIuK+lCIsIuiogCIsIuK+lSIsIuiwtyIsIuK+liIsIuixhiIsIuK+lyIsIuixlSIsIuK+mCIsIuixuCIsIuK+mSIsIuiynSIsIuK+miIsIui1pCIsIuK+myIsIui1sCIsIuK+nCIsIui2syIsIuK+nSIsIui6qyIsIuK+niIsIui7iiIsIuK+nyIsIui+myIsIuK+oCIsIui+sCIsIuK+oSIsIui+tSIsIuK+oiIsIumCkSIsIuK+oyIsIumFiSIsIuK+pCIsIumHhiIsIuK+pSIsIumHjCIsIuK+piIsIumHkSIsIuK+pyIsIumVtyIsIuK+qCIsIumWgCIsIuK+qSIsIumYnCIsIuK+qiIsIumatiIsIuK+qyIsIumauSIsIuK+rCIsIumbqCIsIuK+rSIsIumdkSIsIuK+riIsIumdniIsIuK+ryIsIumdoiIsIuK+sCIsIumdqSIsIuK+sSIsIumfiyIsIuK+siIsIumfrSIsIuK+syIsIumfsyIsIuK+tCIsIumggSIsIuK+tSIsIumiqCIsIuK+tiIsIumjmyIsIuK+tyIsIumjnyIsIuK+uCIsIummliIsIuK+uSIsIummmSIsIuK+uiIsIummrCIsIuK+uyIsIumqqCIsIuK+vCIsIumrmCIsIuK+vSIsIumrnyIsIuK+viIsIumspSIsIuK+vyIsIumsryIsIuK/gCIsIumssiIsIuK/gSIsIumsvCIsIuK/giIsIumtmiIsIuK/gyIsIumzpSIsIuK/hCIsIum5tSIsIuK/hSIsIum5vyIsIuK/hiIsIum6pSIsIuK/hyIsIum6uyIsIuK/iCIsIum7gyIsIuK/iSIsIum7jSIsIuK/iiIsIum7kSIsIuK/iyIsIum7uSIsIuK/jCIsIum7vSIsIuK/jSIsIum8jiIsIuK/jiIsIum8kyIsIuK/jyIsIum8oCIsIuK/kCIsIum8uyIsIuK/kSIsIum9iiIsIuK/kiIsIum9kiIsIuK/kyIsIum+jSIsIuK/lCIsIum+nCIsIuK/lSIsIum+oCIsIuOAtiIsIuOAkiIsIuOAuCIsIuWNgSIsIuOAuSIsIuWNhCIsIuOAuiIsIuWNhSIsIuOCmyIsIiDjgpkiLCLjgpwiLCIg44KaIiwi44SxIiwi4YSAIiwi44SyIiwi4YSBIiwi44SzIiwi4YaqIiwi44S0Iiwi4YSCIiwi44S1Iiwi4YasIiwi44S2Iiwi4YatIiwi44S3Iiwi4YSDIiwi44S4Iiwi4YSEIiwi44S5Iiwi4YSFIiwi44S6Iiwi4YawIiwi44S7Iiwi4YaxIiwi44S8Iiwi4YayIiwi44S9Iiwi4YazIiwi44S+Iiwi4Ya0Iiwi44S/Iiwi4Ya1Iiwi44WAIiwi4YSaIiwi44WBIiwi4YSGIiwi44WCIiwi4YSHIiwi44WDIiwi4YSIIiwi44WEIiwi4YShIiwi44WFIiwi4YSJIiwi44WGIiwi4YSKIiwi44WHIiwi4YSLIiwi44WIIiwi4YSMIiwi44WJIiwi4YSNIiwi44WKIiwi4YSOIiwi44WLIiwi4YSPIiwi44WMIiwi4YSQIiwi44WNIiwi4YSRIiwi44WOIiwi4YSSIiwi44WPIiwi4YWhIiwi44WQIiwi4YWiIiwi44WRIiwi4YWjIiwi44WSIiwi4YWkIiwi44WTIiwi4YWlIiwi44WUIiwi4YWmIiwi44WVIiwi4YWnIiwi44WWIiwi4YWoIiwi44WXIiwi4YWpIiwi44WYIiwi4YWqIiwi44WZIiwi4YWrIiwi44WaIiwi4YWsIiwi44WbIiwi4YWtIiwi44WcIiwi4YWuIiwi44WdIiwi4YWvIiwi44WeIiwi4YWwIiwi44WfIiwi4YWxIiwi44WgIiwi4YWyIiwi44WhIiwi4YWzIiwi44WiIiwi4YW0Iiwi44WjIiwi4YW1Iiwi44WkIiwi4YWgIiwi44WlIiwi4YSUIiwi44WmIiwi4YSVIiwi44WnIiwi4YeHIiwi44WoIiwi4YeIIiwi44WpIiwi4YeMIiwi44WqIiwi4YeOIiwi44WrIiwi4YeTIiwi44WsIiwi4YeXIiwi44WtIiwi4YeZIiwi44WuIiwi4YScIiwi44WvIiwi4YedIiwi44WwIiwi4YefIiwi44WxIiwi4YSdIiwi44WyIiwi4YSeIiwi44WzIiwi4YSgIiwi44W0Iiwi4YSiIiwi44W1Iiwi4YSjIiwi44W2Iiwi4YSnIiwi44W3Iiwi4YSpIiwi44W4Iiwi4YSrIiwi44W5Iiwi4YSsIiwi44W6Iiwi4YStIiwi44W7Iiwi4YSuIiwi44W8Iiwi4YSvIiwi44W9Iiwi4YSyIiwi44W+Iiwi4YS2Iiwi44W/Iiwi4YWAIiwi44aAIiwi4YWHIiwi44aBIiwi4YWMIiwi44aCIiwi4YexIiwi44aDIiwi4YeyIiwi44aEIiwi4YWXIiwi44aFIiwi4YWYIiwi44aGIiwi4YWZIiwi44aHIiwi4YaEIiwi44aIIiwi4YaFIiwi44aJIiwi4YaIIiwi44aKIiwi4YaRIiwi44aLIiwi4YaSIiwi44aMIiwi4YaUIiwi44aNIiwi4YaeIiwi44aOIiwi4YahIiwi44iAIiwiKOGEgCkiLCLjiIEiLCIo4YSCKSIsIuOIgiIsIijhhIMpIiwi44iDIiwiKOGEhSkiLCLjiIQiLCIo4YSGKSIsIuOIhSIsIijhhIcpIiwi44iGIiwiKOGEiSkiLCLjiIciLCIo4YSLKSIsIuOIiCIsIijhhIwpIiwi44iJIiwiKOGEjikiLCLjiIoiLCIo4YSPKSIsIuOIiyIsIijhhJApIiwi44iMIiwiKOGEkSkiLCLjiI0iLCIo4YSSKSIsIuOIjiIsIijhhIDhhaEpIiwi44iPIiwiKOGEguGFoSkiLCLjiJAiLCIo4YSD4YWhKSIsIuOIkSIsIijhhIXhhaEpIiwi44iSIiwiKOGEhuGFoSkiLCLjiJMiLCIo4YSH4YWhKSIsIuOIlCIsIijhhInhhaEpIiwi44iVIiwiKOGEi+GFoSkiLCLjiJYiLCIo4YSM4YWhKSIsIuOIlyIsIijhhI7hhaEpIiwi44iYIiwiKOGEj+GFoSkiLCLjiJkiLCIo4YSQ4YWhKSIsIuOImiIsIijhhJHhhaEpIiwi44ibIiwiKOGEkuGFoSkiLCLjiJwiLCIo4YSM4YWuKSIsIuOInSIsIijhhIvhhanhhIzhhaXhhqspIiwi44ieIiwiKOGEi+GFqeGEkuGFrikiLCLjiKAiLCIo5LiAKSIsIuOIoSIsIijkuowpIiwi44iiIiwiKOS4iSkiLCLjiKMiLCIo5ZubKSIsIuOIpCIsIijkupQpIiwi44ilIiwiKOWFrSkiLCLjiKYiLCIo5LiDKSIsIuOIpyIsIijlhaspIiwi44ioIiwiKOS5nSkiLCLjiKkiLCIo5Y2BKSIsIuOIqiIsIijmnIgpIiwi44irIiwiKOeBqykiLCLjiKwiLCIo5rC0KSIsIuOIrSIsIijmnKgpIiwi44iuIiwiKOmHkSkiLCLjiK8iLCIo5ZyfKSIsIuOIsCIsIijml6UpIiwi44ixIiwiKOagqikiLCLjiLIiLCIo5pyJKSIsIuOIsyIsIijnpL4pIiwi44i0IiwiKOWQjSkiLCLjiLUiLCIo54m5KSIsIuOItiIsIijosqEpIiwi44i3IiwiKOelnSkiLCLjiLgiLCIo5Yq0KSIsIuOIuSIsIijku6MpIiwi44i6IiwiKOWRvCkiLCLjiLsiLCIo5a2mKSIsIuOIvCIsIijnm6MpIiwi44i9IiwiKOS8gSkiLCLjiL4iLCIo6LOHKSIsIuOIvyIsIijljZQpIiwi44mAIiwiKOelrSkiLCLjiYEiLCIo5LyRKSIsIuOJgiIsIijoh6opIiwi44mDIiwiKOiHsykiLCLji4AiLCIx5pyIIiwi44uBIiwiMuaciCIsIuOLgiIsIjPmnIgiLCLji4MiLCI05pyIIiwi44uEIiwiNeaciCIsIuOLhSIsIjbmnIgiLCLji4YiLCI35pyIIiwi44uHIiwiOOaciCIsIuOLiCIsIjnmnIgiLCLji4kiLCIxMOaciCIsIuOLiiIsIjEx5pyIIiwi44uLIiwiMTLmnIgiLCLjjZgiLCIw54K5Iiwi442ZIiwiMeeCuSIsIuONmiIsIjLngrkiLCLjjZsiLCIz54K5Iiwi442cIiwiNOeCuSIsIuONnSIsIjXngrkiLCLjjZ4iLCI254K5Iiwi442fIiwiN+eCuSIsIuONoCIsIjjngrkiLCLjjaEiLCI554K5Iiwi442iIiwiMTDngrkiLCLjjaMiLCIxMeeCuSIsIuONpCIsIjEy54K5Iiwi442lIiwiMTPngrkiLCLjjaYiLCIxNOeCuSIsIuONpyIsIjE154K5Iiwi442oIiwiMTbngrkiLCLjjakiLCIxN+eCuSIsIuONqiIsIjE454K5Iiwi442rIiwiMTnngrkiLCLjjawiLCIyMOeCuSIsIuONrSIsIjIx54K5Iiwi442uIiwiMjLngrkiLCLjja8iLCIyM+eCuSIsIuONsCIsIjI054K5Iiwi44+gIiwiMeaXpSIsIuOPoSIsIjLml6UiLCLjj6IiLCIz5pelIiwi44+jIiwiNOaXpSIsIuOPpCIsIjXml6UiLCLjj6UiLCI25pelIiwi44+mIiwiN+aXpSIsIuOPpyIsIjjml6UiLCLjj6giLCI55pelIiwi44+pIiwiMTDml6UiLCLjj6oiLCIxMeaXpSIsIuOPqyIsIjEy5pelIiwi44+sIiwiMTPml6UiLCLjj60iLCIxNOaXpSIsIuOPriIsIjE15pelIiwi44+vIiwiMTbml6UiLCLjj7AiLCIxN+aXpSIsIuOPsSIsIjE45pelIiwi44+yIiwiMTnml6UiLCLjj7MiLCIyMOaXpSIsIuOPtCIsIjIx5pelIiwi44+1IiwiMjLml6UiLCLjj7YiLCIyM+aXpSIsIuOPtyIsIjI05pelIiwi44+4IiwiMjXml6UiLCLjj7kiLCIyNuaXpSIsIuOPuiIsIjI35pelIiwi44+7IiwiMjjml6UiLCLjj7wiLCIyOeaXpSIsIuOPvSIsIjMw5pelIiwi44++IiwiMzHml6UiLCLvrIAiLCJmZiIsIu+sgSIsImZpIiwi76yCIiwiZmwiLCLvrIMiLCJmZmkiLCLvrIQiLCJmZmwiLCLvrIUiLCLFv3QiLCLvrIYiLCJzdCIsIu+skyIsItW01bYiLCLvrJQiLCLVtNWlIiwi76yVIiwi1bTVqyIsIu+sliIsItW+1bYiLCLvrJciLCLVtNWtIiwi762PIiwi15DXnCIsIu+tkCIsItmxIiwi762RIiwi2bEiLCLvrZIiLCLZuyIsIu+tkyIsItm7Iiwi762UIiwi2bsiLCLvrZUiLCLZuyIsIu+tliIsItm+Iiwi762XIiwi2b4iLCLvrZgiLCLZviIsIu+tmSIsItm+Iiwi762aIiwi2oAiLCLvrZsiLCLagCIsIu+tnCIsItqAIiwi762dIiwi2oAiLCLvrZ4iLCLZuiIsIu+tnyIsItm6Iiwi762gIiwi2boiLCLvraEiLCLZuiIsIu+toiIsItm/Iiwi762jIiwi2b8iLCLvraQiLCLZvyIsIu+tpSIsItm/Iiwi762mIiwi2bkiLCLvraciLCLZuSIsIu+tqCIsItm5Iiwi762pIiwi2bkiLCLvraoiLCLapCIsIu+tqyIsItqkIiwi762sIiwi2qQiLCLvra0iLCLapCIsIu+triIsItqmIiwi762vIiwi2qYiLCLvrbAiLCLapiIsIu+tsSIsItqmIiwi762yIiwi2oQiLCLvrbMiLCLahCIsIu+ttCIsItqEIiwi7621Iiwi2oQiLCLvrbYiLCLagyIsIu+ttyIsItqDIiwi7624Iiwi2oMiLCLvrbkiLCLagyIsIu+tuiIsItqGIiwi7627Iiwi2oYiLCLvrbwiLCLahiIsIu+tvSIsItqGIiwi762+Iiwi2ociLCLvrb8iLCLahyIsIu+ugCIsItqHIiwi766BIiwi2ociLCLvroIiLCLajSIsIu+ugyIsItqNIiwi766EIiwi2owiLCLvroUiLCLajCIsIu+uhiIsItqOIiwi766HIiwi2o4iLCLvrogiLCLaiCIsIu+uiSIsItqIIiwi766KIiwi2pgiLCLvrosiLCLamCIsIu+ujCIsItqRIiwi766NIiwi2pEiLCLvro4iLCLaqSIsIu+ujyIsItqpIiwi766QIiwi2qkiLCLvrpEiLCLaqSIsIu+ukiIsItqvIiwi766TIiwi2q8iLCLvrpQiLCLaryIsIu+ulSIsItqvIiwi766WIiwi2rMiLCLvrpciLCLasyIsIu+umCIsItqzIiwi766ZIiwi2rMiLCLvrpoiLCLasSIsIu+umyIsItqxIiwi766cIiwi2rEiLCLvrp0iLCLasSIsIu+uniIsItq6Iiwi766fIiwi2roiLCLvrqAiLCLauyIsIu+uoSIsItq7Iiwi766iIiwi2rsiLCLvrqMiLCLauyIsIu+upCIsItuAIiwi766lIiwi24AiLCLvrqYiLCLbgSIsIu+upyIsItuBIiwi766oIiwi24EiLCLvrqkiLCLbgSIsIu+uqiIsItq+Iiwi766rIiwi2r4iLCLvrqwiLCLaviIsIu+urSIsItq+Iiwi766uIiwi25IiLCLvrq8iLCLbkiIsIu+usCIsItuTIiwi766xIiwi25MiLCLvr5MiLCLarSIsIu+vlCIsItqtIiwi76+VIiwi2q0iLCLvr5YiLCLarSIsIu+vlyIsItuHIiwi76+YIiwi24ciLCLvr5kiLCLbhiIsIu+vmiIsItuGIiwi76+bIiwi24giLCLvr5wiLCLbiCIsIu+vnSIsItm3Iiwi76+eIiwi24siLCLvr58iLCLbiyIsIu+voCIsItuFIiwi76+hIiwi24UiLCLvr6IiLCLbiSIsIu+voyIsItuJIiwi76+kIiwi25AiLCLvr6UiLCLbkCIsIu+vpiIsItuQIiwi76+nIiwi25AiLCLvr6giLCLZiSIsIu+vqSIsItmJIiwi76+qIiwi2KbYpyIsIu+vqyIsItim2KciLCLvr6wiLCLYptuVIiwi76+tIiwi2KbblSIsIu+vriIsItim2YgiLCLvr68iLCLYptmIIiwi76+wIiwi2KbbhyIsIu+vsSIsItim24ciLCLvr7IiLCLYptuGIiwi76+zIiwi2KbbhiIsIu+vtCIsItim24giLCLvr7UiLCLYptuIIiwi76+2Iiwi2KbbkCIsIu+vtyIsItim25AiLCLvr7giLCLYptuQIiwi76+5Iiwi2KbZiSIsIu+vuiIsItim2YkiLCLvr7siLCLYptmJIiwi76+8Iiwi24wiLCLvr70iLCLbjCIsIu+vviIsItuMIiwi76+/Iiwi24wiLCLvsIAiLCLYptisIiwi77CBIiwi2KbYrSIsIu+wgiIsItim2YUiLCLvsIMiLCLYptmJIiwi77CEIiwi2KbZiiIsIu+whSIsItio2KwiLCLvsIYiLCLYqNitIiwi77CHIiwi2KjYriIsIu+wiCIsItio2YUiLCLvsIkiLCLYqNmJIiwi77CKIiwi2KjZiiIsIu+wiyIsItiq2KwiLCLvsIwiLCLYqtitIiwi77CNIiwi2KrYriIsIu+wjiIsItiq2YUiLCLvsI8iLCLYqtmJIiwi77CQIiwi2KrZiiIsIu+wkSIsItir2KwiLCLvsJIiLCLYq9mFIiwi77CTIiwi2KvZiSIsIu+wlCIsItir2YoiLCLvsJUiLCLYrNitIiwi77CWIiwi2KzZhSIsIu+wlyIsItit2KwiLCLvsJgiLCLYrdmFIiwi77CZIiwi2K7YrCIsIu+wmiIsItiu2K0iLCLvsJsiLCLYrtmFIiwi77CcIiwi2LPYrCIsIu+wnSIsItiz2K0iLCLvsJ4iLCLYs9iuIiwi77CfIiwi2LPZhSIsIu+woCIsIti12K0iLCLvsKEiLCLYtdmFIiwi77CiIiwi2LbYrCIsIu+woyIsIti22K0iLCLvsKQiLCLYttiuIiwi77ClIiwi2LbZhSIsIu+wpiIsIti32K0iLCLvsKciLCLYt9mFIiwi77CoIiwi2LjZhSIsIu+wqSIsIti52KwiLCLvsKoiLCLYudmFIiwi77CrIiwi2LrYrCIsIu+wrCIsIti62YUiLCLvsK0iLCLZgdisIiwi77CuIiwi2YHYrSIsIu+wryIsItmB2K4iLCLvsLAiLCLZgdmFIiwi77CxIiwi2YHZiSIsIu+wsiIsItmB2YoiLCLvsLMiLCLZgtitIiwi77C0Iiwi2YLZhSIsIu+wtSIsItmC2YkiLCLvsLYiLCLZgtmKIiwi77C3Iiwi2YPYpyIsIu+wuCIsItmD2KwiLCLvsLkiLCLZg9itIiwi77C6Iiwi2YPYriIsIu+wuyIsItmD2YQiLCLvsLwiLCLZg9mFIiwi77C9Iiwi2YPZiSIsIu+wviIsItmD2YoiLCLvsL8iLCLZhNisIiwi77GAIiwi2YTYrSIsIu+xgSIsItmE2K4iLCLvsYIiLCLZhNmFIiwi77GDIiwi2YTZiSIsIu+xhCIsItmE2YoiLCLvsYUiLCLZhdisIiwi77GGIiwi2YXYrSIsIu+xhyIsItmF2K4iLCLvsYgiLCLZhdmFIiwi77GJIiwi2YXZiSIsIu+xiiIsItmF2YoiLCLvsYsiLCLZhtisIiwi77GMIiwi2YbYrSIsIu+xjSIsItmG2K4iLCLvsY4iLCLZhtmFIiwi77GPIiwi2YbZiSIsIu+xkCIsItmG2YoiLCLvsZEiLCLZh9isIiwi77GSIiwi2YfZhSIsIu+xkyIsItmH2YkiLCLvsZQiLCLZh9mKIiwi77GVIiwi2YrYrCIsIu+xliIsItmK2K0iLCLvsZciLCLZitiuIiwi77GYIiwi2YrZhSIsIu+xmSIsItmK2YkiLCLvsZoiLCLZitmKIiwi77GbIiwi2LDZsCIsIu+xnCIsItix2bAiLCLvsZ0iLCLZidmwIiwi77GeIiwiINmM2ZEiLCLvsZ8iLCIg2Y3ZkSIsIu+xoCIsIiDZjtmRIiwi77GhIiwiINmP2ZEiLCLvsaIiLCIg2ZDZkSIsIu+xoyIsIiDZkdmwIiwi77GkIiwi2KbYsSIsIu+xpSIsItim2LIiLCLvsaYiLCLYptmFIiwi77GnIiwi2KbZhiIsIu+xqCIsItim2YkiLCLvsakiLCLYptmKIiwi77GqIiwi2KjYsSIsIu+xqyIsItio2LIiLCLvsawiLCLYqNmFIiwi77GtIiwi2KjZhiIsIu+xriIsItio2YkiLCLvsa8iLCLYqNmKIiwi77GwIiwi2KrYsSIsIu+xsSIsItiq2LIiLCLvsbIiLCLYqtmFIiwi77GzIiwi2KrZhiIsIu+xtCIsItiq2YkiLCLvsbUiLCLYqtmKIiwi77G2Iiwi2KvYsSIsIu+xtyIsItir2LIiLCLvsbgiLCLYq9mFIiwi77G5Iiwi2KvZhiIsIu+xuiIsItir2YkiLCLvsbsiLCLYq9mKIiwi77G8Iiwi2YHZiSIsIu+xvSIsItmB2YoiLCLvsb4iLCLZgtmJIiwi77G/Iiwi2YLZiiIsIu+ygCIsItmD2KciLCLvsoEiLCLZg9mEIiwi77KCIiwi2YPZhSIsIu+ygyIsItmD2YkiLCLvsoQiLCLZg9mKIiwi77KFIiwi2YTZhSIsIu+yhiIsItmE2YkiLCLvsociLCLZhNmKIiwi77KIIiwi2YXYpyIsIu+yiSIsItmF2YUiLCLvsooiLCLZhtixIiwi77KLIiwi2YbYsiIsIu+yjCIsItmG2YUiLCLvso0iLCLZhtmGIiwi77KOIiwi2YbZiSIsIu+yjyIsItmG2YoiLCLvspAiLCLZidmwIiwi77KRIiwi2YrYsSIsIu+ykiIsItmK2LIiLCLvspMiLCLZitmFIiwi77KUIiwi2YrZhiIsIu+ylSIsItmK2YkiLCLvspYiLCLZitmKIiwi77KXIiwi2KbYrCIsIu+ymCIsItim2K0iLCLvspkiLCLYptiuIiwi77KaIiwi2KbZhSIsIu+ymyIsItim2YciLCLvspwiLCLYqNisIiwi77KdIiwi2KjYrSIsIu+yniIsItio2K4iLCLvsp8iLCLYqNmFIiwi77KgIiwi2KjZhyIsIu+yoSIsItiq2KwiLCLvsqIiLCLYqtitIiwi77KjIiwi2KrYriIsIu+ypCIsItiq2YUiLCLvsqUiLCLYqtmHIiwi77KmIiwi2KvZhSIsIu+ypyIsItis2K0iLCLvsqgiLCLYrNmFIiwi77KpIiwi2K3YrCIsIu+yqiIsItit2YUiLCLvsqsiLCLYrtisIiwi77KsIiwi2K7ZhSIsIu+yrSIsItiz2KwiLCLvsq4iLCLYs9itIiwi77KvIiwi2LPYriIsIu+ysCIsItiz2YUiLCLvsrEiLCLYtditIiwi77KyIiwi2LXYriIsIu+ysyIsIti12YUiLCLvsrQiLCLYttisIiwi77K1Iiwi2LbYrSIsIu+ytiIsIti22K4iLCLvsrciLCLYttmFIiwi77K4Iiwi2LfYrSIsIu+yuSIsIti42YUiLCLvsroiLCLYudisIiwi77K7Iiwi2LnZhSIsIu+yvCIsIti62KwiLCLvsr0iLCLYutmFIiwi77K+Iiwi2YHYrCIsIu+yvyIsItmB2K0iLCLvs4AiLCLZgdiuIiwi77OBIiwi2YHZhSIsIu+zgiIsItmC2K0iLCLvs4MiLCLZgtmFIiwi77OEIiwi2YPYrCIsIu+zhSIsItmD2K0iLCLvs4YiLCLZg9iuIiwi77OHIiwi2YPZhCIsIu+ziCIsItmD2YUiLCLvs4kiLCLZhNisIiwi77OKIiwi2YTYrSIsIu+ziyIsItmE2K4iLCLvs4wiLCLZhNmFIiwi77ONIiwi2YTZhyIsIu+zjiIsItmF2KwiLCLvs48iLCLZhditIiwi77OQIiwi2YXYriIsIu+zkSIsItmF2YUiLCLvs5IiLCLZhtisIiwi77OTIiwi2YbYrSIsIu+zlCIsItmG2K4iLCLvs5UiLCLZhtmFIiwi77OWIiwi2YbZhyIsIu+zlyIsItmH2KwiLCLvs5giLCLZh9mFIiwi77OZIiwi2YfZsCIsIu+zmiIsItmK2KwiLCLvs5siLCLZititIiwi77OcIiwi2YrYriIsIu+znSIsItmK2YUiLCLvs54iLCLZitmHIiwi77OfIiwi2KbZhSIsIu+zoCIsItim2YciLCLvs6EiLCLYqNmFIiwi77OiIiwi2KjZhyIsIu+zoyIsItiq2YUiLCLvs6QiLCLYqtmHIiwi77OlIiwi2KvZhSIsIu+zpiIsItir2YciLCLvs6ciLCLYs9mFIiwi77OoIiwi2LPZhyIsIu+zqSIsIti02YUiLCLvs6oiLCLYtNmHIiwi77OrIiwi2YPZhCIsIu+zrCIsItmD2YUiLCLvs60iLCLZhNmFIiwi77OuIiwi2YbZhSIsIu+zryIsItmG2YciLCLvs7AiLCLZitmFIiwi77OxIiwi2YrZhyIsIu+zsiIsItmA2Y7ZkSIsIu+zsyIsItmA2Y/ZkSIsIu+ztCIsItmA2ZDZkSIsIu+ztSIsIti32YkiLCLvs7YiLCLYt9mKIiwi77O3Iiwi2LnZiSIsIu+zuCIsIti52YoiLCLvs7kiLCLYutmJIiwi77O6Iiwi2LrZiiIsIu+zuyIsItiz2YkiLCLvs7wiLCLYs9mKIiwi77O9Iiwi2LTZiSIsIu+zviIsIti02YoiLCLvs78iLCLYrdmJIiwi77SAIiwi2K3ZiiIsIu+0gSIsItis2YkiLCLvtIIiLCLYrNmKIiwi77SDIiwi2K7ZiSIsIu+0hCIsItiu2YoiLCLvtIUiLCLYtdmJIiwi77SGIiwi2LXZiiIsIu+0hyIsIti22YkiLCLvtIgiLCLYttmKIiwi77SJIiwi2LTYrCIsIu+0iiIsIti02K0iLCLvtIsiLCLYtNiuIiwi77SMIiwi2LTZhSIsIu+0jSIsIti02LEiLCLvtI4iLCLYs9ixIiwi77SPIiwi2LXYsSIsIu+0kCIsIti22LEiLCLvtJEiLCLYt9mJIiwi77SSIiwi2LfZiiIsIu+0kyIsIti52YkiLCLvtJQiLCLYudmKIiwi77SVIiwi2LrZiSIsIu+0liIsIti62YoiLCLvtJciLCLYs9mJIiwi77SYIiwi2LPZiiIsIu+0mSIsIti02YkiLCLvtJoiLCLYtNmKIiwi77SbIiwi2K3ZiSIsIu+0nCIsItit2YoiLCLvtJ0iLCLYrNmJIiwi77SeIiwi2KzZiiIsIu+0nyIsItiu2YkiLCLvtKAiLCLYrtmKIiwi77ShIiwi2LXZiSIsIu+0oiIsIti12YoiLCLvtKMiLCLYttmJIiwi77SkIiwi2LbZiiIsIu+0pSIsIti02KwiLCLvtKYiLCLYtNitIiwi77SnIiwi2LTYriIsIu+0qCIsIti02YUiLCLvtKkiLCLYtNixIiwi77SqIiwi2LPYsSIsIu+0qyIsIti12LEiLCLvtKwiLCLYttixIiwi77StIiwi2LTYrCIsIu+0riIsIti02K0iLCLvtK8iLCLYtNiuIiwi77SwIiwi2LTZhSIsIu+0sSIsItiz2YciLCLvtLIiLCLYtNmHIiwi77SzIiwi2LfZhSIsIu+0tCIsItiz2KwiLCLvtLUiLCLYs9itIiwi77S2Iiwi2LPYriIsIu+0tyIsIti02KwiLCLvtLgiLCLYtNitIiwi77S5Iiwi2LTYriIsIu+0uiIsIti32YUiLCLvtLsiLCLYuNmFIiwi77S8Iiwi2KfZiyIsIu+0vSIsItin2YsiLCLvtZAiLCLYqtis2YUiLCLvtZEiLCLYqtit2KwiLCLvtZIiLCLYqtit2KwiLCLvtZMiLCLYqtit2YUiLCLvtZQiLCLYqtiu2YUiLCLvtZUiLCLYqtmF2KwiLCLvtZYiLCLYqtmF2K0iLCLvtZciLCLYqtmF2K4iLCLvtZgiLCLYrNmF2K0iLCLvtZkiLCLYrNmF2K0iLCLvtZoiLCLYrdmF2YoiLCLvtZsiLCLYrdmF2YkiLCLvtZwiLCLYs9it2KwiLCLvtZ0iLCLYs9is2K0iLCLvtZ4iLCLYs9is2YkiLCLvtZ8iLCLYs9mF2K0iLCLvtaAiLCLYs9mF2K0iLCLvtaEiLCLYs9mF2KwiLCLvtaIiLCLYs9mF2YUiLCLvtaMiLCLYs9mF2YUiLCLvtaQiLCLYtdit2K0iLCLvtaUiLCLYtdit2K0iLCLvtaYiLCLYtdmF2YUiLCLvtaciLCLYtNit2YUiLCLvtagiLCLYtNit2YUiLCLvtakiLCLYtNis2YoiLCLvtaoiLCLYtNmF2K4iLCLvtasiLCLYtNmF2K4iLCLvtawiLCLYtNmF2YUiLCLvta0iLCLYtNmF2YUiLCLvta4iLCLYttit2YkiLCLvta8iLCLYttiu2YUiLCLvtbAiLCLYttiu2YUiLCLvtbEiLCLYt9mF2K0iLCLvtbIiLCLYt9mF2K0iLCLvtbMiLCLYt9mF2YUiLCLvtbQiLCLYt9mF2YoiLCLvtbUiLCLYudis2YUiLCLvtbYiLCLYudmF2YUiLCLvtbciLCLYudmF2YUiLCLvtbgiLCLYudmF2YkiLCLvtbkiLCLYutmF2YUiLCLvtboiLCLYutmF2YoiLCLvtbsiLCLYutmF2YkiLCLvtbwiLCLZgdiu2YUiLCLvtb0iLCLZgdiu2YUiLCLvtb4iLCLZgtmF2K0iLCLvtb8iLCLZgtmF2YUiLCLvtoAiLCLZhNit2YUiLCLvtoEiLCLZhNit2YoiLCLvtoIiLCLZhNit2YkiLCLvtoMiLCLZhNis2KwiLCLvtoQiLCLZhNis2KwiLCLvtoUiLCLZhNiu2YUiLCLvtoYiLCLZhNiu2YUiLCLvtociLCLZhNmF2K0iLCLvtogiLCLZhNmF2K0iLCLvtokiLCLZhdit2KwiLCLvtooiLCLZhdit2YUiLCLvtosiLCLZhdit2YoiLCLvtowiLCLZhdis2K0iLCLvto0iLCLZhdis2YUiLCLvto4iLCLZhdiu2KwiLCLvto8iLCLZhdiu2YUiLCLvtpIiLCLZhdis2K4iLCLvtpMiLCLZh9mF2KwiLCLvtpQiLCLZh9mF2YUiLCLvtpUiLCLZhtit2YUiLCLvtpYiLCLZhtit2YkiLCLvtpciLCLZhtis2YUiLCLvtpgiLCLZhtis2YUiLCLvtpkiLCLZhtis2YkiLCLvtpoiLCLZhtmF2YoiLCLvtpsiLCLZhtmF2YkiLCLvtpwiLCLZitmF2YUiLCLvtp0iLCLZitmF2YUiLCLvtp4iLCLYqNiu2YoiLCLvtp8iLCLYqtis2YoiLCLvtqAiLCLYqtis2YkiLCLvtqEiLCLYqtiu2YoiLCLvtqIiLCLYqtiu2YkiLCLvtqMiLCLYqtmF2YoiLCLvtqQiLCLYqtmF2YkiLCLvtqUiLCLYrNmF2YoiLCLvtqYiLCLYrNit2YkiLCLvtqciLCLYrNmF2YkiLCLvtqgiLCLYs9iu2YkiLCLvtqkiLCLYtdit2YoiLCLvtqoiLCLYtNit2YoiLCLvtqsiLCLYttit2YoiLCLvtqwiLCLZhNis2YoiLCLvtq0iLCLZhNmF2YoiLCLvtq4iLCLZitit2YoiLCLvtq8iLCLZitis2YoiLCLvtrAiLCLZitmF2YoiLCLvtrEiLCLZhdmF2YoiLCLvtrIiLCLZgtmF2YoiLCLvtrMiLCLZhtit2YoiLCLvtrQiLCLZgtmF2K0iLCLvtrUiLCLZhNit2YUiLCLvtrYiLCLYudmF2YoiLCLvtrciLCLZg9mF2YoiLCLvtrgiLCLZhtis2K0iLCLvtrkiLCLZhdiu2YoiLCLvtroiLCLZhNis2YUiLCLvtrsiLCLZg9mF2YUiLCLvtrwiLCLZhNis2YUiLCLvtr0iLCLZhtis2K0iLCLvtr4iLCLYrNit2YoiLCLvtr8iLCLYrdis2YoiLCLvt4AiLCLZhdis2YoiLCLvt4EiLCLZgdmF2YoiLCLvt4IiLCLYqNit2YoiLCLvt4MiLCLZg9mF2YUiLCLvt4QiLCLYudis2YUiLCLvt4UiLCLYtdmF2YUiLCLvt4YiLCLYs9iu2YoiLCLvt4ciLCLZhtis2YoiLCLvuYkiLCLigL4iLCLvuYoiLCLigL4iLCLvuYsiLCLigL4iLCLvuYwiLCLigL4iLCLvuY0iLCJfIiwi77mOIiwiXyIsIu+5jyIsIl8iLCLvuoAiLCLYoSIsIu+6gSIsItiiIiwi77qCIiwi2KIiLCLvuoMiLCLYoyIsIu+6hCIsItijIiwi77qFIiwi2KQiLCLvuoYiLCLYpCIsIu+6hyIsItilIiwi77qIIiwi2KUiLCLvuokiLCLYpiIsIu+6iiIsItimIiwi77qLIiwi2KYiLCLvuowiLCLYpiIsIu+6jSIsItinIiwi77qOIiwi2KciLCLvuo8iLCLYqCIsIu+6kCIsItioIiwi77qRIiwi2KgiLCLvupIiLCLYqCIsIu+6kyIsItipIiwi77qUIiwi2KkiLCLvupUiLCLYqiIsIu+6liIsItiqIiwi77qXIiwi2KoiLCLvupgiLCLYqiIsIu+6mSIsItirIiwi77qaIiwi2KsiLCLvupsiLCLYqyIsIu+6nCIsItirIiwi77qdIiwi2KwiLCLvup4iLCLYrCIsIu+6nyIsItisIiwi77qgIiwi2KwiLCLvuqEiLCLYrSIsIu+6oiIsItitIiwi77qjIiwi2K0iLCLvuqQiLCLYrSIsIu+6pSIsItiuIiwi77qmIiwi2K4iLCLvuqciLCLYriIsIu+6qCIsItiuIiwi77qpIiwi2K8iLCLvuqoiLCLYryIsIu+6qyIsItiwIiwi77qsIiwi2LAiLCLvuq0iLCLYsSIsIu+6riIsItixIiwi77qvIiwi2LIiLCLvurAiLCLYsiIsIu+6sSIsItizIiwi77qyIiwi2LMiLCLvurMiLCLYsyIsIu+6tCIsItizIiwi77q1Iiwi2LQiLCLvurYiLCLYtCIsIu+6tyIsIti0Iiwi77q4Iiwi2LQiLCLvurkiLCLYtSIsIu+6uiIsIti1Iiwi77q7Iiwi2LUiLCLvurwiLCLYtSIsIu+6vSIsIti2Iiwi77q+Iiwi2LYiLCLvur8iLCLYtiIsIu+7gCIsIti2Iiwi77uBIiwi2LciLCLvu4IiLCLYtyIsIu+7gyIsIti3Iiwi77uEIiwi2LciLCLvu4UiLCLYuCIsIu+7hiIsIti4Iiwi77uHIiwi2LgiLCLvu4giLCLYuCIsIu+7iSIsIti5Iiwi77uKIiwi2LkiLCLvu4siLCLYuSIsIu+7jCIsIti5Iiwi77uNIiwi2LoiLCLvu44iLCLYuiIsIu+7jyIsIti6Iiwi77uQIiwi2LoiLCLvu5EiLCLZgSIsIu+7kiIsItmBIiwi77uTIiwi2YEiLCLvu5QiLCLZgSIsIu+7lSIsItmCIiwi77uWIiwi2YIiLCLvu5ciLCLZgiIsIu+7mCIsItmCIiwi77uZIiwi2YMiLCLvu5oiLCLZgyIsIu+7myIsItmDIiwi77ucIiwi2YMiLCLvu50iLCLZhCIsIu+7niIsItmEIiwi77ufIiwi2YQiLCLvu6AiLCLZhCIsIu+7oSIsItmFIiwi77uiIiwi2YUiLCLvu6MiLCLZhSIsIu+7pCIsItmFIiwi77ulIiwi2YYiLCLvu6YiLCLZhiIsIu+7pyIsItmGIiwi77uoIiwi2YYiLCLvu6kiLCLZhyIsIu+7qiIsItmHIiwi77urIiwi2YciLCLvu6wiLCLZhyIsIu+7rSIsItmIIiwi77uuIiwi2YgiLCLvu68iLCLZiSIsIu+7sCIsItmJIiwi77uxIiwi2YoiLCLvu7IiLCLZiiIsIu+7syIsItmKIiwi77u0Iiwi2YoiLCLvu7UiLCLZhNiiIiwi77u2Iiwi2YTYoiIsIu+7tyIsItmE2KMiLCLvu7giLCLZhNijIiwi77u5Iiwi2YTYpSIsIu+7uiIsItmE2KUiLCLvu7siLCLZhNinIiwi77u8Iiwi2YTYpyJdfSkpO2Z1bmN0aW9uIHJldmVyc2VJZlJ0bChlKXtjb25zdCB0PWUubGVuZ3RoO2lmKHQ8PTF8fCFmdW5jdGlvbiBpc1JUTFJhbmdlRm9yKGUpe2xldCB0PWlbMTNdO2lmKGU+PXQuYmVnaW4mJmU8dC5lbmQpcmV0dXJuITA7dD1pWzExXTtyZXR1cm4gZT49dC5iZWdpbiYmZTx0LmVuZH0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCBhPVtdO2ZvcihsZXQgcj10LTE7cj49MDtyLS0pYS5wdXNoKGVbcl0pO3JldHVybiBhLmpvaW4oIiIpfWNvbnN0IG89bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9Yy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobykscj17aXNXaGl0ZXNwYWNlOiEoIWF8fCFhWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFhfHwhYVsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIWF8fCFhWzNdKX07Yy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtjLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoNCksbj1hKDM2KTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iRm94aXRTYW5zLnBmYiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iRm94aXRTYW5zQm9sZC5wZmIiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJGb3hpdFNhbnNCb2xkSXRhbGljLnBmYiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iRm94aXRTYW5zSXRhbGljLnBmYiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EiO2UuV2luZ2RpbmdzPSJaYXBmRGluZ2JhdHMiO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09IlphcGZEaW5nYmF0cyJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzMpLG49YSgzNiksaT1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbjtpZihhJiZhLmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAscj1hLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09ciYmKHRbcl09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBlPWlbb107bj1yLmNoYXJDb2RlT2YoZSk7dCYmdm9pZCAwIT09dFtuXSYmKG49dFtuXSk7c1tuXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtuPXIuY2hhckNvZGVPZihvKTtzW25dPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsbi50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxpKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2Rpbmcsbj1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihuW2VdPXIpfX1uLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1uKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMzMpLGk9YSgzNykscz1hKDM1KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxpPWdldFVpbnQxNihlLHQrbik7bGV0IHMsbyxjO2lmKDQ9PT1pKXtnZXRVaW50MTYoZSx0K24rMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K24rNik+PjE7bz10K24rMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtuKzEyKTtvPXQrbisxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IG4uQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6aS5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOmkudG9wRGljdC5wcml2YXRlRGljdCYmaS50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4JiZpLmdsb2JhbFN1YnJJbmRleC5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3QmJnQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8raS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8raS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTttPXAraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2I9bStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1pLnNoaWZ0KCk6Yys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO2M9aS5wb3AoKTtvPWkucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgbj1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tuLmdseXBoSWRdLHQsYSxuLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO249bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPWkubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9aS5wb3AoKTtvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1pLnNoaWZ0KCk7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKX11PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihvKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihjKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bytpLnNoaWZ0KCk7Zj1jO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4OmkucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1pLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NylpLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpaS5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpaS5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle2kucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKGkubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IG49W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsbix0KTtuLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gbn1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxpLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgbixpLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6bj1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOmk9YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihpKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsbjtpZihhKXtyPTQ7bj1nZXRVaW50MzJ9ZWxzZXtyPTI7bj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBpPVtdO2xldCBzPW4odCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9bih0LGEpO2kucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gaX0oaSxzLGMpLG4sdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8sbixlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1uO2NvbnN0IGk9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IG49bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLGk9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9uLmdldFVpbnQzMigwKToyKm4uZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9uLmdldFVpbnQzMihjKToyKm4uZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxpKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLG49bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP24uc2V0VWludDMyKDAsMCk6bi5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7aSs9ZS53cml0ZShpLHQpO2k9aSszJi00O3MrPXI7YT9uLnNldFVpbnQzMihzLGkpOm4uc2V0VWludDE2KHMsaT4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShuLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDpufSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PW59c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjpuLGluc3RydWN0aW9uczppfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1uO3RoaXMuaW5zdHJ1Y3Rpb25zPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IG49dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJm4pe2lmKDImbil7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtuXj0xfWVsc2V7aWYoMiZuKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOm4sZ2x5cGhJbmRleDppLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoNCksbj1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3Qgbj1hKnQ7cmV0dXJue3JhbmdlOm4sZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1ufX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBpPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNippO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPGk7cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxuLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxpKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGksMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPGk7cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDMzKSxuPWEoMiksaT1hKDM2KSxzPWEoNCksbz1hKDgpLGM9YSg0Nyk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNSksbj1hKDQpLGk9YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbixpLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGkpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1pO3RoaXMud2lkdGg9bjt0aGlzLnN0YWNrLnB1c2gobixpLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGs9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PWspe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PWsmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUGF0dGVybj12b2lkIDA7dC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhKXtjb25zdCBuPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyR7aX1dLmApO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLG4saSxzLG8sYyxsXX07dmFyIHI9YSgyKSxuPWEoNSksaT1hKDEyKSxzPWEoNCk7Y29uc3Qgbz0yLGM9MyxsPTQsaD01LHU9NixkPTc7dC5QYXR0ZXJuPWNsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXsoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLGksZixnKXtjb25zdCBwPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbT1wLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG0pe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocCx0LGEsZixnKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxmLGcpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK20pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2kuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm59KTsoMCxyLndhcm4pKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19O2NsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBnZXQgU01BTExfTlVNQkVSKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlNNQUxMX05VTUJFUiIsMWUtNil9Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLG4scyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89aS5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzEwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGg+PXV8fG08PTApeygwLHIuaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLHc9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgUztmb3IobGV0IGU9MDtlPD0xMDtlKyspe3dbMF09aCtlKm07cCh3LDAseSwwKTtTPW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtiLnB1c2goW2UvMTAsdF0pfWxldCB4PSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7Uz1vLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO3g9ci5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSl9aWYoIWQpe2IudW5zaGlmdChbMCx4XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFmKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgYSxuLGkscyxsO2lmKHQ9PT1vKXtuPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07cz1udWxsO2w9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09Yyl7bj1bZVswXSxlWzFdXTtpPVtlWzNdLGVbNF1dO3M9ZVsyXTtsPWVbNV07YT0icmFkaWFsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4saSxzLGxdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCByPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkocik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGEpLTE7cmV0dXJuKHQ8PDgtYXwoMjU1JmUpPj5hKT4+PjB9aWYoOD09PWUmJjA9PT1hKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDthPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPXQmKDE8PGEpLTE7cmV0dXJuIHQ+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0Km4qKHJbMV0tclswXSkrclswXSxhKm4qKHJbM10tclsyXSkrclsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGE9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgaT0wLHM9NDtpPGU7aSsrLHMrPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtuW2ldPWUqYSoocltzKzFdLXJbc10pK3Jbc119Y29uc3QgaT10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKG4sMCxpLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IoaSwwKX19Y29uc3QgZj1mdW5jdGlvbiBnZXRCQ2xvc3VyZSgpe2NvbnN0IGU9W107cmV0dXJuIGZ1bmN0aW9uKHQpe2VbdF18fChlW3RdPWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KSk7cmV0dXJuIGVbdF19fSgpO2NsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIGdldCBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMyl9c3RhdGljIGdldCBNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfXN0YXRpYyBnZXQgVFJJQU5HTEVfREVOU0lUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJUUklBTkdMRV9ERU5TSVRZIiwyMCl9Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1pLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSk7cz0xfW4ucHVzaChvKX1pLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxuPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7bi5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDpuWzEyXT1vKzM7blsxM109bys0O25bMTRdPW8rNTtuWzE1XT1vKzY7bls4XT1vKzI7blsxMV09bys3O25bNF09bysxO25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107blsxMV09byszO25bNF09aDtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzExXT1vKzM7bls0XT1uWzJdO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX1uWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblswXV1bMF0tdFtuWzE1XV1bMF0rNioodFtuWzRdXVswXSt0W25bMV1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMTNdXVswXSt0W25bN11dWzBdKSkvOSwoLTQqdFtuWzBdXVsxXS10W25bMTVdXVsxXSs2Kih0W25bNF1dWzFdK3RbblsxXV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsxM11dWzFdK3Rbbls3XV1bMV0pKS85XSk7bls2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bM11dWzBdLXRbblsxMl1dWzBdKzYqKHRbblsyXV1bMF0rdFtuWzddXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzRdXVswXSt0W25bMTRdXVswXSkpLzksKC00KnRbblszXV1bMV0tdFtuWzEyXV1bMV0rNioodFtuWzJdXVsxXSt0W25bN11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bNF1dWzFdK3RbblsxNF1dWzFdKSkvOV0pO25bOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzEyXV1bMF0tdFtuWzNdXVswXSs2Kih0W25bOF1dWzBdK3RbblsxM11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bMTFdXVswXSt0W25bMV1dWzBdKSkvOSwoLTQqdFtuWzEyXV1bMV0tdFtuWzNdXVsxXSs2Kih0W25bOF1dWzFdK3RbblsxM11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bMTFdXVsxXSt0W25bMV1dWzFdKSkvOV0pO25bMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxNV1dWzBdLXRbblswXV1bMF0rNioodFtuWzExXV1bMF0rdFtuWzE0XV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsyXV1bMF0rdFtuWzhdXVswXSkpLzksKC00KnRbblsxNV1dWzFdLXRbblswXV1bMV0rNioodFtuWzExXV1bMV0rdFtuWzE0XV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsyXV1bMV0rdFtuWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzldPW8rMTM7blsxMF09bysxNDtuWzExXT1vKzc7bls0XT1vKzE7bls1XT1vKzEyO25bNl09bysxNTtuWzddPW8rODtuWzBdPW87blsxXT1vKzExO25bMl09bysxMDtuWzNdPW8rOTtpWzJdPWMrMTtpWzNdPWMrMjtpWzBdPWM7aVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07aD1uWzEzXTt1PW5bMTRdO2Q9blsxNV07blsxMl09ZDtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPXU7bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzJdO2g9aVszXTtpWzJdPWg7aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDI6bD1uWzE1XTtoPW5bMTFdO25bMTJdPW5bM107blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzddO25bOV09bys5O25bMTBdPW8rMTA7blsxMV09byszO25bNF09aDtuWzVdPW8rODtuWzZdPW8rMTE7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVszXTtpWzJdPWlbMV07aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bMV07bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1uWzJdO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPW5bM107blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7aVsyXT1pWzBdO2lbM109YztpWzBdPWlbMV07aVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxsPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksaD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPW5bc1swXV0seD1uW3NbMV1dLGs9bltzWzJdXSxDPW5bc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStrWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK2tbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkra1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStDWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK0NbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkrQ1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bbl0qRlt0XVtjXTtyKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPW4ubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7bi5wdXNoKGMpfX1wWzBdPWlbMF07bVswXT1zWzBdO3BbdV09aVszXTttW3VdPXNbMV07cFtnKmRdPWlbMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPWlbMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgbj0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbbl1bMF0scz10aGlzLmNvb3Jkc1tuXVsxXTtlPWU+aT9pOmU7dD10PnM/czp0O2E9YTxpP2k6YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IG49dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqbi5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1uW2VdO2lbYSsrXT10WzBdO2lbYSsrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxuPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspe25bYV0qPTI7aVthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dDtsZXQgaTtpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goaVt0XSk7bys9MX1lbHNle289ZTtzPVtpW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsbi5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLG4uTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLG4uTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixuLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgbi5EaWN0KG51bGwpO2kuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7aS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtpLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLGkpO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTApLG49YSgzKSxpPWEoNTEpLHM9YSg1Miksbz1hKDUzKSxjPWEoNTQpLGw9YSg0KSxoPWEoMzYpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTt2YXIgcj1hKDMpLG49YSgyKSxpPWEoNTYpLHM9YSg1KSxvPWEoNTcpO3QuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygci5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGEpO3JldHVybiBhfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2Ygci5SZWY/dD1lOmUgaW5zdGFuY2VvZiByLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGE7ZSBpbnN0YW5jZW9mIHIuUmVmP2E9ZTplIGluc3RhbmNlb2Ygci5EaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoYT1lLmRpY3QmJmUuZGljdC5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG4gb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihuKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsbil7Zm9yKGxldCBpPTAscz1yLmxlbmd0aDtpPHM7aSsrKXJbaV0oZSx0LGEsbitpKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBpPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighaXx8IXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89aS5sZW5ndGgvMixjPXMubGVuZ3RoLzI7aT10b011bHRpQXJyYXkoaSk7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBwLG07Zm9yKG09MDttPG47bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9aVtwXVswXSxyPWlbcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxuO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0sbj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChuW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLG4pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtuK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLG4pe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKGMsMCxhLG4pfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IGM9cDtmb3Iobj0wO248dTtuKyspe2k9ZVt0K25dO2Nbbl09aTtzKz1pKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3Iobj0wO248aDtuKyspe2k9Ylt5K25dO2xldCBlPW9bMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1vWzIqbisxXTtpPmUmJihpPWUpfW1bbl09aX1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgZ2V0IE1BWF9TVEFDS19TSVpFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9TVEFDS19TSVpFIiwxMDApfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguYXRhbihvKSk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6Yz10LnBvcCgpO289dC5wb3AoKTtvPjA/dC5wdXNoKG88PGMpOnQucHVzaChvPj5jKTticmVhaztjYXNlImNlaWxpbmciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG8pKTticmVhaztjYXNlImNvcHkiOm89dC5wb3AoKTt0LmNvcHkobyk7YnJlYWs7Y2FzZSJjb3MiOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobykpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKTt0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG8pL01hdGguTE4xMCk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLG4udW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PW59dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLG49W10saT10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtuLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxuPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChuKTtjb25zdCBpPWFbMiplXSxzPWFbMiplKzFdLG89W24udG9TdHJpbmcoKV07aWYoaT50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLGksIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtjb25zdCB0PVBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdO3JldHVybiB0fHwoUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV09bmV3IFBvc3RTY3JpcHRUb2tlbihzLk9QRVJBVE9SLGUpKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsaS5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2F9YCk7cmV0dXJuIGF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT0oZSYmZS5vbmx5UmVmcyk7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBuLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBnZXQgTlVNX1BBR0VTX1RIUkVTSE9MRCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJOVU1fUEFHRVNfVEhSRVNIT0xEIiwyKX1zdGF0aWMgZ2V0IE1JTl9JTUFHRVNfVE9fQ0FDSEUoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApfXN0YXRpYyBnZXQgTUFYX0JZVEVfU0laRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfWNvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO3JldHVybiEoKGE/YS5zaXplKyhhLmhhcyh0KT8wOjEpOjEpPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkUGFnZUluZGV4KGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJhZGRQYWdlSW5kZXgiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX10Lkdsb2JhbEltYWdlQ2FjaGU9R2xvYmFsSW1hZ2VDYWNoZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UgMTc5Mjw9dCYmdDw9MjIyMCYmKGE9IkFMIik7IlIiIT09YSYmIkFMIiE9PWEmJiJBTiIhPT1hfHxkKys7b1toXT1hfWlmKDA9PT1kKXtjPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGMpfWlmKC0xPT09dClpZihkL2w8LjMmJmw+NCl7Yz0hMDt0PTB9ZWxzZXtjPSExO3Q9MX1jb25zdCBmPVtdO2ZvcihoPTA7aDxsOysraClmW2hdPXQ7Y29uc3QgZz1pc09kZCh0KT8iUiI6IkwiLHA9ZyxtPXA7bGV0IGIseT1wO2ZvcihoPTA7aDxsOysraCkiTlNNIj09PW9baF0/b1toXT15Onk9b1toXTt5PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iQUwiPT09eT8iQU4iOiJFTiI6IlIiIT09YiYmIkwiIT09YiYmIkFMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJBTCI9PT1iJiYob1toXT0iUiIpfWZvcihoPTE7aDxsLTE7KytoKXsiRVMiPT09b1toXSYmIkVOIj09PW9baC0xXSYmIkVOIj09PW9baCsxXSYmKG9baF09IkVOIik7IkNTIiE9PW9baF18fCJFTiIhPT1vW2gtMV0mJiJBTiIhPT1vW2gtMV18fG9baCsxXSE9PW9baC0xXXx8KG9baF09b1toLTFdKX1mb3IoaD0wO2g8bDsrK2gpaWYoIkVOIj09PW9baF0pe2ZvcihsZXQgZT1oLTE7ZT49MCYmIkVUIj09PW9bZV07LS1lKW9bZV09IkVOIjtmb3IobGV0IGU9aCsxO2U8bCYmIkVUIj09PW9bZV07KytlKW9bZV09IkVOIn1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiV1MiIT09YiYmIkVTIiE9PWImJiJFVCIhPT1iJiYiQ1MiIT09Ynx8KG9baF09Ik9OIil9eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkwiPT09eT8iTCI6IkVOIjoiUiIhPT1iJiYiTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpaWYoIk9OIj09PW9baF0pe2NvbnN0IGU9ZmluZFVuZXF1YWwobyxoKzEsIk9OIik7bGV0IHQ9cDtoPjAmJih0PW9baC0xXSk7bGV0IGE9bTtlKzE8bCYmKGE9b1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJnNldFZhbHVlcyhvLGgsZSx0KTtoPWUtMX1mb3IoaD0wO2g8bDsrK2gpIk9OIj09PW9baF0mJihvW2hdPWcpO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdO2lzRXZlbihmW2hdKT8iUiI9PT1iP2ZbaF0rPTE6IkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9Mik6IkwiIT09YiYmIkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9MSl9bGV0IHcsUz0tMSx4PTk5O2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKXt3PWZbaF07Uzx3JiYoUz13KTt4PncmJmlzT2RkKHcpJiYoeD13KX1mb3Iodz1TO3c+PXg7LS13KXtsZXQgZT0tMTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraClpZihmW2hdPHcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocyxlLGgpO2U9LTF9fWVsc2UgZTwwJiYoZT1oKTtlPj0wJiZyZXZlcnNlVmFsdWVzKHMsZSxmLmxlbmd0aCl9Zm9yKGg9MCx1PXMubGVuZ3RoO2g8dTsrK2gpe2NvbnN0IGU9c1toXTsiPCIhPT1lJiYiPiIhPT1lfHwoc1toXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHMuam9pbigiIiksYyl9O3ZhciByPWEoMik7Y29uc3Qgbj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsbjtmb3Iocj10LG49ZS5sZW5ndGg7cjxuOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGEscil7Zm9yKGxldCBuPXQ7bjxhOysrbillW25dPXJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsbj1hLTE7cjxuOysrciwtLW4pe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbbl07ZVtuXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IHM9W10sbz1bXX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtjb25zdCBhPShlPj4+MCkudG9TdHJpbmcoMTYpLHI9KHQ+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIGEucGFkU3RhcnQoOCwiMCIpK3IucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PcGVyYXRvckxpc3Q9dm9pZCAwO3ZhciByPWEoMik7ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGEscixuKXtsZXQgaT1lO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aT1pW2FdfHwoaVthXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46YSxpdGVyYXRlRm46cixwcm9jZXNzRm46bn19Y29uc3Qgbj1bXTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXIuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiBhW3RdPT09ci5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gYVt0XT09PXIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIscz1pLTMsbz1pLTIsYz1pLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBoPTA7Y29uc3QgdT1bXTtsZXQgZD0wLGY9MSxnPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW28rKGU8PDIpXSxhPW5bYysoZTw8MildWzBdO2lmKGYrYS53aWR0aD4xZTMpe2g9TWF0aC5tYXgoaCxmKTtnKz1kKzI7Zj0wO2Q9MH11LnB1c2goe3RyYW5zZm9ybTp0LHg6Zix5OmcsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtmKz1hLndpZHRoKzI7ZD1NYXRoLm1heChkLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGgsZikrMSxtPWcrZCsxLGI9bmV3IFVpbnQ4QXJyYXkocCptKjQpLHk9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bYysoZTw8MildWzBdLmRhdGEsYT11W2VdLnc8PDI7bGV0IHI9MCxpPXVbZV0ueCt1W2VdLnkqcDw8MjtiLnNldCh0LnN1YmFycmF5KDAsYSksaS15KTtmb3IobGV0IG49MCxzPXVbZV0uaDtuPHM7bisrKXtiLnNldCh0LnN1YmFycmF5KHIscithKSxpKTtyKz1hO2krPXl9Yi5zZXQodC5zdWJhcnJheShyLWEsciksaSk7Zm9yKDtpPj0wOyl7dFtpLTRdPXRbaV07dFtpLTNdPXRbaSsxXTt0W2ktMl09dFtpKzJdO3RbaS0xXT10W2krM107dFtpK2FdPXRbaSthLTRdO3RbaSthKzFdPXRbaSthLTNdO3RbaSthKzJdPXRbaSthLTJdO3RbaSthKzNdPXRbaSthLTFdO2ktPXl9fWEuc3BsaWNlKHMsNCpsLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFt7d2lkdGg6cCxoZWlnaHQ6bSxraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTpifSx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLHI9dGhpcy5zdGF0ZSxpPXRoaXMubWF0Y2g7aWYoIXImJiFpJiZ0KzE9PT1hJiYhbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShzLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8bilbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe3MuaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShzKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIGdldCBDSFVOS19TSVpFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9c3RhdGljIGdldCBDSFVOS19TSVpFX0FCT1VUKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkVfQUJPVVQiLHRoaXMuQ0hVTktfU0laRS01KX1jb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGEmJnQuZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19dC5PcGVyYXRvckxpc3Q9T3BlcmF0b3JMaXN0fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDYyKSxpPWEoNSkscz1hKDEyKSxvPWEoMTcpLGM9YSgyNSksbD1hKDI4KSxoPWEoMyk7ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGEscil7KGU9dCtlKmEpPDA/ZT0wOmU+ciYmKGU9cik7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPW4qaTtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvbixsPXIvaTtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkobiksbT1hO2ZvcihoPTA7aDxuO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8aTtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PG47dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEsc21hc2s6bz1udWxsLG1hc2s6Yz1udWxsLGlzTWFzazp1PSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KXt0aGlzLmltYWdlPWE7Y29uc3QgZz1hLmRpY3QscD1nLmdldCgiRiIsIkZpbHRlciIpO2xldCBtO2lmKHAgaW5zdGFuY2VvZiBoLk5hbWUpbT1wLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHApKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihwWzBdKTt0IGluc3RhbmNlb2YgaC5OYW1lJiYobT10Lm5hbWUpfXN3aXRjaChtKXtjYXNlIkpQWERlY29kZSI6Y29uc3QgZT1uZXcgbC5KcHhJbWFnZTtlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKTthLnN0cmVhbS5yZXNldCgpO2Eud2lkdGg9ZS53aWR0aDthLmhlaWdodD1lLmhlaWdodDthLmJpdHNQZXJDb21wb25lbnQ9ZS5iaXRzUGVyQ29tcG9uZW50O2EubnVtQ29tcHM9ZS5jb21wb25lbnRzQ291bnQ7YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBiPWcuZ2V0KCJXIiwiV2lkdGgiKSx5PWcuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1ifHxhLmhlaWdodCE9PXkpKXsoMCxyLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2I9YS53aWR0aDt5PWEuaGVpZ2h0fWlmKGI8MXx8eTwxKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke2J9IG9yIGhlaWdodDogJHt5fWApO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD15O3RoaXMuaW50ZXJwb2xhdGU9Zy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWcuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWcuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdz1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXcpe3c9Zy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdyl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt3PTF9fXRoaXMuYnBjPXc7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1nLmdldFJhdygiQ1MiKXx8Zy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighaSl7KDAsci5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1oLk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9aC5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0Omk9aC5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHN9dGhpcy5kZWNvZGU9Zy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHcpfHx1JiYhcy5Db2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dyktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD10aGlzLmNvbG9yU3BhY2UmJiJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3Qgbj10aGlzLmRlY29kZVthXSxpPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8oaS1uKS9lOmktbjt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9uOmUqbn19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTpuLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTpuLGludGVycG9sYXRlOml9KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8biYmIShzPT09bykpaWYobil7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihuKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOml9fXN0YXRpYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06aSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjPSEwfSl7Y29uc3QgbD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGwpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6bH07aWYoYyYmci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksaT1yLmdldENvbnRleHQoIjJkIix7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZX0pLGM9aS5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzplLGRlc3Q6Yy5kYXRhLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzfSk7aS5wdXRJbWFnZURhdGEoYywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmksaW50ZXJwb2xhdGU6b30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLndpZHRofHwwLHRoaXMubWFzayYmdGhpcy5tYXNrLndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLmhlaWdodHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxpPW5bMF0scz1uWzFdLG89blsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1pKSpyK2k7ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319Y3JlYXRlSW1hZ2VEYXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQsbj17d2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGg9cyppKmwrNz4+MztpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1sP2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1zJiZhPT09byl7bi5raW5kPWU7bi5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse30pO2lmKHRoaXMubmVlZHNEZWNvZGUpeygwLHIuYXNzZXJ0KShlPT09ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9bi5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIG59aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlPW8qaDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO24uZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIG59fX1jb25zdCB1PXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse2ludGVybmFsOiEwfSksZD0wfHUubGVuZ3RoL2gqYS9vLGY9dGhpcy5nZXRDb21wb25lbnRzKHUpO2xldCBnLHA7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtuLmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSo0KTtnPTE7cD0hMDt0aGlzLmZpbGxPcGFjaXR5KG4uZGF0YSx0LGEsZCxmKX1lbHNle24ua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7bi5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqMyk7Zz0wO3A9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2Iobi5kYXRhLHMsbyx0LGEsZCxsLGYsZyk7cCYmdGhpcy51bmRvUHJlYmxlbmQobi5kYXRhLHQsZCk7cmV0dXJuIG59ZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxzPWEqdCppKzc+PjMsbz10aGlzLmdldEltYWdlQnl0ZXMobipzLHtpbnRlcm5hbDohMH0pLGM9dGhpcy5nZXRDb21wb25lbnRzKG8pO2xldCBsLGg7aWYoMT09PWkpe2g9YSpuO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGw9MDtsPGg7KytsKWVbbF09Y1tsXS0xJjI1NTtlbHNlIGZvcihsPTA7bDxoOysrbCllW2xdPTI1NSYtY1tsXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoYyk7aD1hKm47Y29uc3QgdT0yNTUvKCgxPDxpKS0xKTtmb3IobD0wO2w8aDsrK2wpZVtsXT11KmNbbF19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDppPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFuO2NvbnN0IHM9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihpfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIHM7KDAsci5hc3NlcnQpKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24gYXBwbHlNYXNrSW1hZ2VEYXRhKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDppLGhlaWdodDpzLGludmVyc2VEZWNvZGU6bz0hMX0pe2NvbnN0IGM9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxoXT1vP1swLGNdOltjLDBdLHU9aT4+MyxkPTcmaSxmPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtuKytdPTEyOCZyP2g6bDthW24rK109NjQmcj9oOmw7YVtuKytdPTMyJnI/aDpsO2FbbisrXT0xNiZyP2g6bDthW24rK109OCZyP2g6bDthW24rK109NCZyP2g6bDthW24rK109MiZyP2g6bDthW24rK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtuKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpufX07dmFyIHI9YSgyKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6YSx4cmVmOm89bnVsbCxoYXNYZmE6bD0hMSx4ZmFEYXRhc2V0c1JlZjpoPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTp1PSExLGFjcm9Gb3JtUmVmOmQ9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpnPW51bGx9KXtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGhhc1hmYURhdGFzZXRzRW50cnk6YSxhY3JvRm9ybVJlZjpuLGFjcm9Gb3JtOm8sbmV3UmVmczpjLHhyZWY6bCx4cmVmSW5mbzpofSl7aWYobnVsbD09PWwpcmV0dXJuO2lmKCFhKXtpZighbil7KDAsci53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtyZXR1cm59Y29uc3QgZT1vLmdldCgiWEZBIiksYT1lLnNsaWNlKCk7YS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Euc3BsaWNlKDMsMCx0KTtvLnNldCgiWEZBIixhKTtjb25zdCBpPWwuZW5jcnlwdDtsZXQgcz1udWxsO2kmJihzPWkuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKSk7Y29uc3QgaD1bYCR7bi5udW19ICR7bi5nZW59IG9ialxuYF07d3JpdGVEaWN0KG8saCxzKTtoLnB1c2goIlxuIik7by5zZXQoIlhGQSIsZSk7Yy5wdXNoKHtyZWY6bixkYXRhOmguam9pbigiIil9KX1pZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6bn09ZTtpZighdCljb250aW51ZTtjb25zdCBvPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKHQpLDApO28/QXJyYXkuaXNBcnJheShuKT9vLmNoaWxkTm9kZXM9bi5tYXAoKGU9Pm5ldyBzLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOm8uY2hpbGROb2Rlcz1bbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0obC5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGMpfWNvbnN0IHU9bC5lbmNyeXB0O2lmKHUpe2U9dS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3QgZD1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7Yy5wdXNoKHtyZWY6dCxkYXRhOmR9KX0oe3hmYURhdGE6Zyx4ZmFEYXRhc2V0c1JlZjpoLGhhc1hmYURhdGFzZXRzRW50cnk6dSxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmYsbmV3UmVmczphLHhyZWY6byx4cmVmSW5mbzp0fSk7Y29uc3QgcD1uZXcgbi5EaWN0KG51bGwpLG09dC5uZXdSZWY7bGV0IGIseTtjb25zdCB3PWUuYXQoLTEpO2lmKDEwPT09d3x8MTM9PT13KXtiPVtdO3k9ZS5sZW5ndGh9ZWxzZXtiPVsiXG4iXTt5PWUubGVuZ3RoKzF9cC5zZXQoIlNpemUiLG0ubnVtKzEpO3Auc2V0KCJQcmV2Iix0LnN0YXJ0WFJlZik7cC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIlhSZWYiKSk7bnVsbCE9PXQucm9vdFJlZiYmcC5zZXQoIlJvb3QiLHQucm9vdFJlZik7bnVsbCE9PXQuaW5mb1JlZiYmcC5zZXQoIkluZm8iLHQuaW5mb1JlZik7bnVsbCE9PXQuZW5jcnlwdFJlZiYmcC5zZXQoIkVuY3J5cHQiLHQuZW5jcnlwdFJlZik7YS5wdXNoKHtyZWY6bSxkYXRhOiIifSk7YT1hLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Y29uc3QgUz1bWzAsMSw2NTUzNV1dLHg9WzAsMV07bGV0IGs9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTp0fW9mIGEpe2s9TWF0aC5tYXgoayx5KTtTLnB1c2goWzEseSxNYXRoLm1pbihlLmdlbiw2NTUzNSldKTt5Kz10Lmxlbmd0aDt4LnB1c2goZS5udW0sMSk7Yi5wdXNoKHQpfXAuc2V0KCJJbmRleCIseCk7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCldO2xldCBzPWkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtpLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpe3dyaXRlU3RyaW5nKGUsbCxvKTtsKz1lLmxlbmd0aH1yZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKCgwLGMuY2FsY3VsYXRlTUQ1KShvKSl9KHksdCk7cC5zZXQoIklEIixbdC5maWxlSWRzWzBdLGVdKX1jb25zdCBDPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoaykvOCksMl0sdj0oQ1swXStDWzFdK0NbMl0pKlMubGVuZ3RoO3Auc2V0KCJXIixDKTtwLnNldCgiTGVuZ3RoIix2KTtiLnB1c2goYCR7bS5udW19ICR7bS5nZW59IG9ialxuYCk7d3JpdGVEaWN0KHAsYixudWxsKTtiLnB1c2goIiBzdHJlYW1cbiIpO2NvbnN0IEY9Yi5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKSxPPWBcbmVuZHN0cmVhbVxuZW5kb2JqXG5zdGFydHhyZWZcbiR7eX1cbiUlRU9GXG5gLFQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrRit2K08ubGVuZ3RoKTtULnNldChlKTtsZXQgTT1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBiKXt3cml0ZVN0cmluZyhlLE0sVCk7TSs9ZS5sZW5ndGh9Zm9yKGNvbnN0W2UsdCxhXW9mIFMpe009d3JpdGVJbnQoZSxDWzBdLE0sVCk7TT13cml0ZUludCh0LENbMV0sTSxUKTtNPXdyaXRlSW50KGEsQ1syXSxNLFQpfXdyaXRlU3RyaW5nKE8sTSxUKTtyZXR1cm4gVH07dC53cml0ZURpY3Q9d3JpdGVEaWN0O3Qud3JpdGVPYmplY3Q9ZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEscil7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBuLkRpY3Q/d3JpdGVEaWN0KHQsYSxyKTp0IGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZ3cml0ZVN0cmVhbSh0LGEscik7YS5wdXNoKCJcbmVuZG9ialxuIil9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNjQpLG89YSg1KSxjPWEoNjUpO2Z1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHIpfSBgKTt3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXt3cml0ZURpY3QoZS5kaWN0LHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iKTtsZXQgcj1lLmdldFN0cmluZygpO251bGwhPT1hJiYocj1hLmVuY3J5cHRTdHJpbmcocikpO3QucHVzaChyLCJcbmVuZHN0cmVhbVxuIil9ZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpIWZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2xldCByPSEwO2Zvcihjb25zdCBuIG9mIGUpe3I/cj0hMTp0LnB1c2goIiAiKTt3cml0ZVZhbHVlKG4sdCxhKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtudWxsIT09YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIG4uRGljdD93cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/d3JpdGVTdHJlYW0oZSx0LGEpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLHIud2FybikoYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsYSxyKXtmb3IobGV0IG49dCthLTE7bj5hLTE7bi0tKXtyW25dPTI1NSZlO2U+Pj04fXJldHVybiBhK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGEpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylhW3Qrcl09MjU1JmUuY2hhckNvZGVBdChyKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2RlcyYmdGhpcy5jaGlsZE5vZGVzLmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgbj10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W2ldPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBpLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9bi5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYobi5jaGlsZE5vZGVzJiYwIT09bi5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtuLDBdKTtuPW4uY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7bj1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDY2KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsbj0wO3I8MjU2Oysrcil7Y29uc3QgaT10W3JdO249bitpK2VbciVhXSYyNTU7dFtyXT10W25dO3Rbbl09aX10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLG49ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IHM9MDtzPG47KytzKXt0PXQrMSYyNTU7Y29uc3Qgbj1yW3RdO2E9YStuJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09bjtpW3NdPWVbc11ecltuK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gaX1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixuKXtsZXQgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9bis3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxuOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109bjw8MyYyNTU7aFt1KytdPW4+PjUmMjU1O2hbdSsrXT1uPj4xMyYyNTU7aFt1KytdPW4+PjIxJjI1NTtoW3UrK109bj4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLG49aSxsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3QgaT1wLHM9bithK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtuPWl9aT1pK258MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IG49MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1uLGQ9aSxtPXMsdz1vLFM9Yyx4PWwsaz1oLEM9dTtmb3IocD0wO3A8NjQ7KytwKXt0PUMrc2lnbWFQcmltZShTKStjaChTLHgsaykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtDPWs7az14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9bj1uK3J8MDtpPWkrZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK2t8MDt1PXUrQ3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixuKXtlLmFzc2lnbih0KTtlLmFuZChhKTtuLmFzc2lnbih0KTtuLm5vdCgpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIG1haihlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24uYW5kKHIpO2UueG9yKG4pO24uYXNzaWduKGEpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLG49ITEpe2xldCBpLHMsbyxjLGwsaCx1LGQ7aWYobil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKGkpO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO2suYXNzaWduKGMpO0MuYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxDLEQpO1QuYWRkKEUpO2NoKEUsQyx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9QztrLmFkZChUKTtDPWs7az14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKGspO2wuYWRkKEMpO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKG4pe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixuO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpaVthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W2lbZV1dLHI9dGhpcy5fbWl4W2lbZSsxXV0sbj10aGlzLl9taXhbaVtlKzJdXSxzPXRoaXMuX21peFtpW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5uPj4+MTZebjw8MTZecz4+PjI0XnM8PDg7aVtlXT1hPj4+MjQmMjU1O2lbZSsxXT1hPj4xNiYyNTU7aVtlKzJdPWE+PjgmMjU1O2lbZSszXT0yNTUmYX19YT1pWzEzXTtpWzEzXT1pWzldO2lbOV09aVs1XTtpWzVdPWlbMV07aVsxXT1hO2E9aVsxNF07cj1pWzEwXTtpWzE0XT1pWzZdO2lbMTBdPWlbMl07aVs2XT1hO2lbMl09cjthPWlbMTVdO3I9aVsxMV07bj1pWzddO2lbMTVdPWlbM107aVsxMV09YTtpWzddPXI7aVszXT1uO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2lbZV1ePXRbZV19cmV0dXJuIGl9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsbixpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07aT1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1pO2k9c1syXTtuPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPWk7c1sxNF09bjtpPXNbM107bj1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPWk7c1sxMV09bjtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0sbj1zW2UrMl0saT1zW2UrM107cj10XmFebl5pO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2Febl07c1tlKzJdXj1yXnRoaXMuX21peENvbFtuXmldO3NbZSszXV49cl50aGlzLl9taXhDb2xbaV50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltuXT1lW3RdOysrbjtpZihuPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj1zO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqaS5sZW5ndGg7aWYodCl7Y29uc3QgZT1pLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7aVtpLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9aS5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChpW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjb25zdCBsPWZ1bmN0aW9uIFBERjIwQ2xvc3VyZSgpe2Z1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1yZXR1cm4gY2xhc3MgUERGMjB7aGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1jYWxjdWxhdGVQREYyMEhhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1jYWxjdWxhdGVQREYyMEhhc2goZSxuLFtdKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkoaSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO24uc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IGk9Y2FsY3VsYXRlUERGMjBIYXNoKGUsbixhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKS5kZWNyeXB0QmxvY2sociwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtjb25zdCBuPWNhbGN1bGF0ZVBERjIwSGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fX0oKTt0LlBERjIwPWw7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBoPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBoPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fDEhPT1oJiYyIT09aCYmNCE9PWgmJjUhPT1oKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWg7bGV0IHU9YS5nZXQoIkxlbmd0aCIpO2lmKCF1KWlmKGg8PTMpdT00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTt1PWEmJmEuZ2V0KCJMZW5ndGgiKXx8MTI4O3U8NDAmJih1PDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDQwfHx1JTghPTApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IGQ9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgwLDMyKSxmPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCwzMiksZz1hLmdldCgiUCIpLHA9YS5nZXQoIlIiKSxtPSg0PT09aHx8NT09PWgpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1tO2NvbnN0IGI9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgeSx3O2lmKG8pe2lmKDY9PT1wKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9eT0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1oKXc9cHJlcGFyZUtleURhdGEoYix5LGQsZixnLHAsdSxtKTtlbHNle2NvbnN0IGU9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgzMiw0MCksdD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJPIikpLnN1YmFycmF5KDQwLDQ4KSxuPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCw0OCksaT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLnN1YmFycmF5KDMyLDQwKSxzPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTt3PWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxoLHUsZCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZjtmPTY9PT1lP25ldyBsOm5ldyBQREYxNztyZXR1cm4gZi5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/Zi5nZXRVc2VyS2V5KHQsYyx1KTp0Lmxlbmd0aCYmZi5jaGVja093bmVyUGFzc3dvcmQodCxyLGksYSk/Zi5nZXRPd25lcktleSh0LG4saSxoKTpudWxsfShwLHksZCxlLHQsbixmLGkscyxvLGMpfWlmKCF3JiYhbyl0aHJvdyBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHIuUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCk7aWYoIXcmJm8pe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlVXNlclBhc3N3b3JkKHQsYSxyLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBvPTA7Y29uc3QgYz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtvPGM7KytvKWlbb109dFtvXTtsZXQgbD0wO2Zvcig7bzwzMjspaVtvKytdPWVbbCsrXTtsZXQgaD1zKGksMCxvKTtjb25zdCB1PW4+PjM7aWYocj49Mylmb3IobD0wO2w8NTA7KytsKWg9cyhoLDAsaC5sZW5ndGgpO2xldCBkLGY7aWYocj49Myl7Zj1hO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGw9MTk7bD49MDtsLS0pe2ZvcihsZXQgdD0wO3Q8dTsrK3QpZVt0XT1oW3RdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcihlKTtmPWQuZW5jcnlwdEJsb2NrKGYpfX1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoaC5zdWJhcnJheSgwLHUpKTtmPWQuZW5jcnlwdEJsb2NrKGEpfXJldHVybiBmfSh5LGQscCx1KTt3PXByZXBhcmVLZXlEYXRhKGIsdCxkLGYsZyxwLHUsbSl9aWYoIXcpdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsci5QYXNzd29yZFJlc3BvbnNlcy5JTkNPUlJFQ1RfUEFTU1dPUkQpO3RoaXMuZW5jcnlwdGlvbktleT13O2lmKGg+PTQpe2NvbnN0IGU9YS5nZXQoIkNGIik7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGUuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPWU7dGhpcy5zdG1mPWEuZ2V0KCJTdG1GIil8fHQ7dGhpcy5zdHJmPWEuZ2V0KCJTdHJGIil8fHQ7dGhpcy5lZmY9YS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYnVpbGRDaXBoZXJDb25zdHJ1Y3Rvcih0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT1idWlsZE9iamVjdEtleShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxyPWZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHIscil9fX0oKTt0LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9aH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRlY3J5cHRTdHJlYW09dm9pZCAwO3ZhciByPWEoMTcpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYXRhbG9nPXZvaWQgMDt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMykscz1hKDY4KSxvPWEoNSksYz1hKDY5KSxsPWEoMTIpLGg9YSg3MCksdT1hKDU3KSxkPWEoNzEpLGY9YSg3Mik7ZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihlKXtlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOm51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IHUuR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgaS5SZWZTZXR9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLG4ud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgaS5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxyPXRoaXMueHJlZi5mZXRjaChlLGEpO2lmKHIgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJnIuZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1yLmRpY3QuZ2V0KCJUeXBlIiksYT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsaS5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLGkuaXNOYW1lKShhLCJYTUwiKSl7Y29uc3QgZT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBpLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gbi5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1uLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG89IiI7Y29uc3QgYz1uZXcgcy5OdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgbD0iIixoPTE7Zm9yKGxldCBlPTAscz10aGlzLm51bVBhZ2VzO2U8cztlKyspe2NvbnN0IHM9Yy5nZXQoZSk7aWYodm9pZCAwIT09cyl7aWYoIShzIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocy5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJTIikpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKHMuaGFzKCJQIikpe2NvbnN0IGU9cy5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO289KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9ZWxzZSBvPSIiO2lmKHMuaGFzKCJTdCIpKXtjb25zdCBlPXMuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aD1lfWVsc2UgaD0xfXN3aXRjaChhKXtjYXNlIkQiOmw9aDticmVhaztjYXNlIlIiOmNhc2UiciI6bD0oMCxyLnRvUm9tYW5OdW1lcmFscykoaCwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PTY1LGk9OTcscz0iYSI9PT1hP2k6dCxvPWgtMTtsPVN0cmluZy5mcm9tQ2hhckNvZGUocytvJWUpLnJlcGVhdChNYXRoLmZsb29yKG8vZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtsPSIifXRbZV09bytsO2grK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXtjb25zdCByPWUuZ2V0KGEpO2xldCBzO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKHM9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KCgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocz1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYocz1yKTticmVhaztkZWZhdWx0OigwLG4ud2FybikoYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cyl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFthXT1zfWVsc2UoMCxuLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPW5ldyBpLkRpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLG4ub2JqZWN0U2l6ZSkodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IGguRmlsZVNwZWMocix0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7dHx8KHQ9bmV3IGkuRGljdCh0aGlzLnhyZWYpKTt0LnNldCgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKSxyKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtpZighKGEgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO251bGw9PT10JiYodD1uZXcgTWFwKTtyPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKTt0LnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLGEpfWNvbnN0IGE9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxyLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxuLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBhPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgciBvZiBhKWlmKHIubG9hZGVkTmFtZT09PWUpe3IuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpeygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgaS5SZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHIpO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQocik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhyKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7by5oYXMocil8fG8ucHV0KHIsMSk7Yy5oYXMocil8fGMucHV0KHIsbCk7aWYobD09PWUpcmV0dXJuW3Uscl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PXI7bGV0IHU9ci5nZXRSYXcoIkNvdW50Iik7dSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpO2lmKE51bWJlci5pc0ludGVnZXIodSkmJnU+PTApe2gmJiFvLmhhcyhoKSYmby5wdXQoaCx1KTtpZihsK3U8PWUpe2wrPXU7Y29udGludWV9fWxldCBkPXIuZ2V0UmF3KCJLaWRzIik7ZCBpbnN0YW5jZW9mIGkuUmVmJiYoZD1hd2FpdCBzLmZldGNoQXN5bmMoZCkpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYobD09PWUpcmV0dXJuW3IsbnVsbF07bCsrO2NvbnRpbnVlfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChkW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0IHQ9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgaS5SZWZTZXQscz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHMpO2NvbnN0IG89bmV3IE1hcCxjPXRoaXMueHJlZixsPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGg9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFsLmhhcyh0KSYmbC5wdXQodCxoKTtvLnNldChoKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcih0KXtpZih0IGluc3RhbmNlb2Ygci5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHQ7by5zZXQoaCsrLFt0LG51bGxdKX1mb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLHtjdXJyZW50Tm9kZTpyLHBvc0luS2lkczpzfT1lO2xldCBvPXIuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtvPWF3YWl0IGMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49by5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3QgbD1vW3NdO2xldCBoO2lmKGwgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMobCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KGwpO3RyeXtoPWF3YWl0IGMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1sO2lmKCEoaCBpbnN0YW5jZW9mIGkuRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBpLlJlZil0cnl7dT1hd2FpdCBjLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLGkuaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsbCBpbnN0YW5jZW9mIGkuUmVmP2w6bnVsbCk6dC5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gb31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLGkuaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxpLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBpLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgaS5SZWYpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxpLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2Esbl09dDtyKz1hO3JldHVybiBuZXh0KG4pfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsbi53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2YgaS5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIGkuUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBpLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIGkuRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBpLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLGkuaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsbi53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBpLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3Qgaz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjprLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLlJlZiYmay5wdXNoKGUudG9TdHJpbmcoKSk7aWYoay5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTprLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBDPXUuZ2V0KCJKUyIpO2xldCB2O0MgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1DLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQyYmKHY9Qyk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsbi5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLG4ud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoMyksbj1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtpLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxuLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLG49dC5mZXRjaElmUmVmKGlbcl0pLGM9bi5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9bjticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IGE9MCxyPWkubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3Qgbj1hK3I+PjEscz1uKygxJm4pLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDMpLG49YSgzOCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNSksaT1hKDMpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2UoL1xcXFwvZywiXFwiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cXC9nLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXRhZGF0YVBhcnNlcj12b2lkIDA7dmFyIHI9YSg2NCk7dC5NZXRhZGF0YVBhcnNlcj1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyByLlNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2UoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqYSsxKnIpfSkpLnJlcGxhY2UoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxyPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmEuY2hhckNvZGVBdChlKSthLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnIucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IityLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGE9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGEubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7dmFyIHI9YSgzKSxuPWEoMiksaT1hKDY4KTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDpuPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9bjt0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3QgYT1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuO2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxuKX1hZGROb2RlKGUsdCxhPTApe2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaSYmaS50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O249ITB9fXJldHVybiBufWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcGFnZSR7dC5wYWdlT2JqSWR9X21jaWQke3QubWNpZH1gfSk6dC50eXBlPT09YyYmci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PYmplY3RMb2FkZXI9dm9pZCAwO3ZhciByPWEoMyksbj1hKDUpLGk9YSg0KSxzPWEoMik7ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2Ygci5EaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGkgb2YgZSkoKGE9aSlpbnN0YW5jZW9mIHIuUmVmfHxhIGluc3RhbmNlb2Ygci5EaWN0fHxhIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmdC5wdXNoKGkpO3ZhciBhfXQuT2JqZWN0TG9hZGVyPWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWE7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IHIuUmVmU2V0O2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoYSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbz1lLnBvcCgpO2lmKG8gaW5zdGFuY2VvZiByLlJlZil7aWYodGhpcy5yZWZTZXQuaGFzKG8pKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQobyk7bz10aGlzLnhyZWYuZmV0Y2gobyl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpeygwLHMud2FybikoYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKG8pO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYobyBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1vLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7YS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChvKX19YWRkQ2hpbGRyZW4obyxlKX1pZihhLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoYSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNzkpLGk9YSg4NSkscz1hKDgzKSxvPWEoNzYpLGM9YSgyKSxsPWEoODYpLGg9YSg5Nik7Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgbC5YRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBuLkJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBpLkRhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3IuJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI9bmV3IHMuRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyl7ZT0oMCxvLnN0cmlwUXVvdGVzKShlKTt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IGwuWEZBUGFyc2VyKGguWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbci4kbm9kZU5hbWVdKSl7Y29uc3QgZT1oLlhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO3Q9ZX1jb25zdCBhPXRbci4kdG9IVE1MXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOml9PW47aWYoaSl7aS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3IuJHRleHRdKCl9fWNhdGNoKGUpeygwLGMud2FybikoYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX10LlhGQUZhY3Rvcnk9WEZBRmFjdG9yeX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO3ZhciByPWEoNzYpLG49YSgyKSxpPWEoNCkscz1hKDc3KSxvPWEoNzgpO2NvbnN0IGM9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1jO2NvbnN0IGw9U3ltYm9sKCk7dC4kYWRkSFRNTD1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9aDtjb25zdCB1PVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPXU7Y29uc3QgZD1TeW1ib2woKTt0LiRjbGVhbj1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kY2xlYW5QYWdlPWY7Y29uc3QgZz1TeW1ib2woKTt0LiRjbGVhbnVwPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRjbG9uZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kY29uc3VtZWQ9bTtjb25zdCBiPVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9Yjtjb25zdCB5PVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGR1bXA9dztjb25zdCBTPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1TO2NvbnN0IHg9U3ltYm9sKCk7dC4kZmluYWxpemU9eDtjb25zdCBrPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1rO2NvbnN0IEM9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Qztjb25zdCB2PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9djtjb25zdCBGPVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPUY7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Tztjb25zdCBUPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9RTtjb25zdCBEPVN5bWJvbCgpO3QuJGdldEV4dHJhPUQ7Y29uc3QgTj1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1OO2NvbnN0IFI9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPUw7Y29uc3Qgaj1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1qO2NvbnN0ICQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD0kO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0UGFyZW50PV87Y29uc3QgVT1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlkcz1xO2NvbnN0IFc9U3ltYm9sKCk7dC4kaW5kZXhPZj1XO2NvbnN0IHo9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9ejtjb25zdCBHPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9Rztjb25zdCBWPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9Vjtjb25zdCBLPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9WTtjb25zdCBKPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1KO2NvbnN0IFo9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPVo7Y29uc3QgUT1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVE7Y29uc3QgZWU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1lZTtjb25zdCB0ZT1TeW1ib2woKTt0LiRpc1VzYWJsZT10ZTtjb25zdCBhZT1TeW1ib2woKSxyZT1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPW5lO2NvbnN0IGllPVN5bWJvbCgpO3QuJG5zQXR0cmlidXRlcz1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRvbkNoaWxkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1vZTtjb25zdCBjZT1TeW1ib2woKTt0LiRvblRleHQ9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1sZTtjb25zdCBoZT1TeW1ib2woKTt0LiRwb3BQYXJhPWhlO2NvbnN0IHVlPVN5bWJvbCgpO3QuJHB1c2hQYXJhPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHJlbW92ZUNoaWxkPWRlO2NvbnN0IGZlPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9ZmU7Y29uc3QgZ2U9U3ltYm9sKCk7dC4kcmVzb2x2ZVByb3RvdHlwZXM9Z2U7Y29uc3QgcGU9U3ltYm9sKCk7dC4kc2VhcmNoTm9kZT1wZTtjb25zdCBtZT1TeW1ib2woKTt0LiRzZXRJZD1tZTtjb25zdCBiZT1TeW1ib2woKTt0LiRzZXRTZXRBdHRyaWJ1dGVzPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHNldFZhbHVlPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRhYkluZGV4PXdlO2NvbnN0IFNlPVN5bWJvbCgpO3QuJHRleHQ9U2U7Y29uc3QgeGU9U3ltYm9sKCk7dC4kdG9QYWdlcz14ZTtjb25zdCBBZT1TeW1ib2woKTt0LiR0b0hUTUw9QWU7Y29uc3Qga2U9U3ltYm9sKCk7dC4kdG9TdHJpbmc9a2U7Y29uc3QgQ2U9U3ltYm9sKCk7dC4kdG9TdHlsZT1DZTtjb25zdCB2ZT1TeW1ib2woInVpZCIpO3QuJHVpZD12ZTtjb25zdCBGZT1TeW1ib2woKSxPZT1TeW1ib2woKSxUZT1TeW1ib2woKSxJZT1TeW1ib2woIl9jaGlsZHJlbiIpLFBlPVN5bWJvbCgpLE1lPVN5bWJvbCgpLEVlPVN5bWJvbCgpLERlPVN5bWJvbCgpLE5lPVN5bWJvbCgpLEJlPVN5bWJvbCgpLFJlPVN5bWJvbCgpLExlPVN5bWJvbCgpLGplPVN5bWJvbCgpLCRlPVN5bWJvbCgicGFyZW50IiksX2U9U3ltYm9sKCksVWU9U3ltYm9sKCksWGU9U3ltYm9sKCk7bGV0IEhlPTA7Y29uc3QgcWU9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW3JlXT1lO3RoaXNbbmVdPXQ7dGhpc1tSZV09YTt0aGlzWyRlXT1udWxsO3RoaXNbSWVdPVtdO3RoaXNbdmVdPWAke3R9JHtIZSsrfWA7dGhpc1tYXT1udWxsfVtzZV0oZSl7aWYoIXRoaXNbUmVdfHwhdGhpc1tvZV0oZSkpcmV0dXJuITE7Y29uc3QgdD1lW25lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tkZV0oYSk7dGhpc1t0XT1lO3RoaXNbaF0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2hdKGUpO3JldHVybiEwfWxldCByPSIiO3RoaXMuaWQ/cj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKHI9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTsoMCxuLndhcm4pKGBYRkEgLSBub2RlICIke3RoaXNbbmVdfSIke3J9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W29lXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW25lXSkmJmVbcmVdPT09dGhpc1tyZV19W0pdKCl7cmV0dXJuITF9W2NdKCl7cmV0dXJuITF9W0ddKCl7cmV0dXJuITF9W1ZdKCl7cmV0dXJuITF9W2hlXSgpe3RoaXMucGFyYSYmdGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wb3AoKX1bdWVdKCl7dGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W21lXShlKXt0aGlzLmlkJiZ0aGlzW3JlXT09PXMuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtVXSgpe3JldHVybiB0aGlzW1hdLnRlbXBsYXRlfVtaXSgpe3JldHVybiExfVtRXSgpe3JldHVybiExfVtoXShlKXtlWyRlXT10aGlzO3RoaXNbSWVdLnB1c2goZSk7IWVbWF0mJnRoaXNbWF0mJihlW1hdPXRoaXNbWF0pfVtkZV0oZSl7Y29uc3QgdD10aGlzW0llXS5pbmRleE9mKGUpO3RoaXNbSWVdLnNwbGljZSh0LDEpfVtIXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVt5ZV0oZSl7fVtjZV0oZSl7fVt4XSgpe31bZF0oZSl7ZGVsZXRlIHRoaXNbUmVdO2lmKHRoaXNbZ10pe2UuY2xlYW4odGhpc1tnXSk7ZGVsZXRlIHRoaXNbZ119fVtXXShlKXtyZXR1cm4gdGhpc1tJZV0uaW5kZXhPZihlKX1bel0oZSx0KXt0WyRlXT10aGlzO3RoaXNbSWVdLnNwbGljZShlLDAsdCk7IXRbWF0mJnRoaXNbWF0mJih0W1hdPXRoaXNbWF0pfVtlZV0oKXtyZXR1cm4hdGhpcy5uYW1lfVthZV0oKXtyZXR1cm4iIn1bU2VdKCl7cmV0dXJuIDA9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tiXTp0aGlzW0llXS5tYXAoKGU9PmVbU2VdKCkpKS5qb2luKCIiKX1nZXRbVGVdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsVGUsZS5fYXR0cmlidXRlcyl9W1ldKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W19dKCl9cmV0dXJuITF9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVskXSgpe3JldHVybiB0aGlzW19dKCl9W1JdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0llXX1bd10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tiXSYmKGUuJGNvbnRlbnQ9dGhpc1tiXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3ddKCk6YSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2EuaXNFbXB0eSgpfHwoZVt0XT1hLmR1bXAoKSk6ZVt0XT1hKX1yZXR1cm4gZX1bQ2VdKCl7cmV0dXJuIG51bGx9W0FlXSgpe3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9KltMXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUl0oKSl5aWVsZCBlfSpbRGVdKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tMXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtuZV0pKXtjb25zdCBlPXRoaXNbRl0oKSx0PWFbQWVdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbU10uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W2tdKCl7cmV0dXJuIG51bGx9W2xdKGUsdCl7dGhpc1tTXS5jaGlsZHJlbi5wdXNoKGUpfVtGXSgpe31bdV0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tTXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tGXSgpLHQ9dGhpc1tTXS5mYWlsaW5nTm9kZVtBZV0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbU10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW1NdLmdlbmVyYXRvcj10aGlzW0RlXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW1NdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tsXSh0Lmh0bWwsdC5iYm94KX10aGlzW1NdLmdlbmVyYXRvcj1udWxsO3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9W2JlXShlKXt0aGlzW1VlXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bQmVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0sYT10aGlzW1VlXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWEuaGFzKGUpKSl9W2dlXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pYVtfZV0oZSx0KX1bX2VdKGUsdCl7Y29uc3QgYT10aGlzW05lXShlLHQpO2E/dGhpc1tGZV0oYSxlLHQpOnRoaXNbZ2VdKGUsdCl9W05lXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxzPW51bGwsYz1udWxsLGw9YTtpZihyKXtsPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKCIjc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9zPXIuc2xpY2UoIi4jc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYylpPWUuZ2V0KGMpO2Vsc2V7aT0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXsoMCxuLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYoaVtuZV0hPT10aGlzW25lXSl7KDAsbi53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW25lXX0gIT09ICR7dGhpc1tuZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXsoMCxuLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBoPWlbTmVdKGUsdCk7aCYmaVtGZV0oaCxlLHQpO2lbZ2VdKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLG4ud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tUZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG49dGhpc1tyXSxpPWVbcl07aWYobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBuW0llXSllW19lXSh0LGEpO2ZvcihsZXQgcj1uW0llXS5sZW5ndGgscz1pW0llXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW0llXVtyXVtwXSgpO2lmKCFuLnB1c2goaSkpYnJlYWs7aVskZV09dGhpczt0aGlzW0llXS5wdXNoKGkpO2lbX2VdKHQsYSl9fWVsc2UgaWYobnVsbD09PW4pe2lmKG51bGwhPT1pKXtjb25zdCBlPWlbcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW0llXS5wdXNoKGUpO2VbX2VdKHQsYSl9fWVsc2V7bltnZV0odCxhKTtpJiZuW0ZlXShpLHQsYSl9fX1zdGF0aWNbUGVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbUGVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLG4uc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtuZV19JHtIZSsrfWA7ZVtJZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbVGVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbUGVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tJZV0pe2NvbnN0IGE9dFtuZV0scj10W3BdKCk7ZVtJZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW0llXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbSWVdLmZpbHRlcigodD0+dFtuZV09PT1lKSk6dGhpc1tJZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbVGVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tJZV09W119cHVzaChlKXtpZih0aGlzW0llXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW0llXS5wdXNoKGUpO3JldHVybiEwfSgwLG4ud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtuZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbSWVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tJZV1bMF1bd10oKTp0aGlzW0llXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW0llXT10aGlzW0llXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0llXX1jbGVhcigpe3RoaXNbSWVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW25lXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtZXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtZXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbTWVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpZSkpe2NvbnN0IGU9YVtpZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tNZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tNZV09ITApKX19dGhpc1ttXT0hMX1ba2VdKGUpe2NvbnN0IHQ9dGhpc1tuZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsbi51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbTWVdJiYodGhpc1tNZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW0llXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtrZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0llXSl0W2tlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW0llXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbmVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW0llXS5maWx0ZXIoKHQ9PnRbbmVdPT09ZSkpOnRoaXNbSWVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW0NdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0llXSl5aWVsZCphW0NdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tJZV0pe3JbbmVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tNZV0/MD09PXRoaXNbSWVdLmxlbmd0aHx8dGhpc1tJZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tNZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW01lXT8wPT09dGhpc1tJZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbSWVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbSWVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW25lXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbSWVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbamVdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbamVdWzBdLHZhbGlkYXRlOmU9PnRoaXNbamVdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW2plXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixuXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6bn07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKGkubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjpufTtbYSxyLG5dPWk7cmV0dXJue3I6YSxnOnIsYjpufX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSxlLmxlbmd0aC0xKTtyZXR1cm4gZX07dmFyIHI9YSgyKTtjb25zdCBuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxpPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dD10fHwiMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zb21lKChlPT5lLm9wZXJhdG9yPT09bCkpKXJldHVybiBudWxsO2NvbnN0IHM9Zi5nZXQoblswXS5uYW1lKTtsZXQgbz0wO2lmKHMpe2U9cyhlLHQpO289MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9bi5sZW5ndGg7bzx0O28rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6c309bltvXTtpZighaXNGaW5pdGUocykpe25bb10uaW5kZXg9MDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX1sZXQgdTtzd2l0Y2goYSl7Y2FzZSBjOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBsOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBoOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpO3U9dSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/dS5jaGlsZHJlbjpbdV19aWYoMD09PXUubGVuZ3RoKXJldHVybiBjcmVhdGVOb2RlcyhlLG4uc2xpY2UobykpO2lmKCEoczx1Lmxlbmd0aCkpe25bb10uaW5kZXg9cy11Lmxlbmd0aDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX17Y29uc3QgdD11W3NdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSl7KDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH07dC5zZWFyY2hOb2RlPWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxpPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG89Zi5nZXQoc1swXS5uYW1lKTtsZXQgdSxkPTA7aWYobyl7dT0hMDtlPVtvKGUsdCldO2Q9MX1lbHNle3U9bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXMubGVuZ3RoO2Q8YTtkKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjpvLGluZGV4OmZ9PXNbZF0scD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCkpY29udGludWU7bGV0IGUscztpZihpKXtzPWcuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7Zy5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2gobyl7Y2FzZSBjOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBsOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMCk7YnJlYWs7Y2FzZSBoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmcy5zZXQobixlKX1lLmxlbmd0aD4wJiZwLnB1c2goZSl9aWYoMCE9PXAubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGYpP3AuZmlsdGVyKChlPT5mPGUubGVuZ3RoKSkubWFwKChlPT5lW2ZdKSk6cC5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9MCxsPTEsaD0yLHU9MyxkPTQsZj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxnPW5ldyBXZWFrTWFwLHA9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtuXT1yO2NvbnN0IGY9W3tuYW1lOm4sY2FjaGVOYW1lOiIuIituLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmN9XTtsZXQgZz1uLmxlbmd0aDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBtPWc7aWYoIlsiPT09ZS5jaGFyQXQoZysrKSl7cj1lLnNsaWNlKGcpLm1hdGNoKG8pO2lmKCFyKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9Zi5hdCgtMSkuaW5kZXg9IioiPT09KHA9KHA9clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQocCwxMCl8fDA7Zys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYjtzd2l0Y2goZS5jaGFyQXQoZykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7ZysrO2I9bDticmVhaztjYXNlIiMiOmcrKztiPWg7YnJlYWs7Y2FzZSJbIjppZihhKXsoMCxpLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWI9dTticmVhaztjYXNlIigiOmlmKGEpeygwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1iPWQ7YnJlYWs7ZGVmYXVsdDpiPWN9cj1lLnNsaWNlKGcpLm1hdGNoKHMpO2lmKCFyKWJyZWFrO1tuXT1yO2crPW4ubGVuZ3RoO2YucHVzaCh7bmFtZTpuLGNhY2hlTmFtZTplLnNsaWNlKG0sZyksb3BlcmF0b3I6YixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBwO3JldHVybiBmfWZ1bmN0aW9uIGNyZWF0ZU5vZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgdCl7Zm9yKGxldCB0PTAscz1pc0Zpbml0ZShpKT9pOjA7dDw9czt0Kyspe2NvbnN0IHQ9ZVtyLiRuYW1lc3BhY2VJZF09PT1wPy0xOmVbci4kbmFtZXNwYWNlSWRdO2E9bmV3IHIuWG1sT2JqZWN0KHQsbik7ZVtyLiRhcHBlbmRDaGlsZF0oYSl9ZT1hfXJldHVybiBhfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJpbmRlcj12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDgwKSxpPWEoNzgpLHM9YSg3Nyksbz1hKDIpO2NvbnN0IGM9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO2UuZGF0YXNldHMmJmUuZGF0YXNldHMuZGF0YT90aGlzLmRhdGE9ZS5kYXRhc2V0cy5kYXRhOnRoaXMuZGF0YT1uZXcgci5YbWxPYmplY3Qocy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJmUudWkmJmUudWkuY2hvaWNlTGlzdCYmIm11bHRpU2VsZWN0Ij09PWUudWkuY2hvaWNlTGlzdC5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLG8ud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxvO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtvPWkubmV4dCgpLnZhbHVlO2lmKCFvKWJyZWFrO2lmKHQ9PT1vW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBvfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO289aS5uZXh0KCkudmFsdWU7aWYobylyZXR1cm4gbztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7bz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbyYmb1tyLiRpc0RhdGFWYWx1ZV0oKT9vOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6YSx0YXJnZXQ6cyxjb25uZWN0aW9uOmN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYoYyljb250aW51ZTtpZighYSljb250aW51ZTtjb25zdCBsPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsYSwhMSwhMSk7aWYoIWwpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWw7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGEpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCxlLHMsITEsITEpO2lmKCF1KXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0oZSkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1kW3IuJGdldFBhcmVudF0oKTtpZihkIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIG4uU2V0UHJvcGVydHkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIG4uQmluZEl0ZW1zfHxmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXMpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGc9aFtyLiR0ZXh0XSgpLHA9ZFtyLiRub2RlTmFtZV07aWYoZCBpbnN0YW5jZW9mIHIuWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtwXT1nO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltwXT10W3BdfWVsc2UgaWYoZC5oYXNPd25Qcm9wZXJ0eShyLiRjb250ZW50KSl7ZFtyLiRkYXRhXT1oO2Rbci4kY29udGVudF09ZztkW3IuJGZpbmFsaXplXSgpfWVsc2UoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtyLiRyZW1vdmVDaGlsZF0odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IG4uSXRlbXMoe30pLHM9bmV3IG4uSXRlbXMoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKGEpO2UuaXRlbXMucHVzaChhKTtlW3IuJGFwcGVuZENoaWxkXShzKTtlLml0ZW1zLnB1c2gocyk7Zm9yKGNvbnN0e3JlZjpuLGxhYmVsUmVmOmMsdmFsdWVSZWY6bCxjb25uZWN0aW9uOmh9b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKGgpY29udGludWU7aWYoIW4pY29udGludWU7Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LG4sITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWYgKCR7bn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGMsITAsITEpO2lmKCFlKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke2N9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWU7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtsfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBmPWNyZWF0ZVRleHQoaFtyLiR0ZXh0XSgpKSxnPWNyZWF0ZVRleHQoZFtyLiR0ZXh0XSgpKTthW3IuJGFwcGVuZENoaWxkXShmKTthLnRleHQucHVzaChmKTtzW3IuJGFwcGVuZENoaWxkXShnKTtzLnRleHQucHVzaChnKX1lbHNlKDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7bn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVtyLiRjbG9uZV0oKTtuW3IuJHJlbW92ZUNoaWxkXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbci4kZ2V0UGFyZW50XSgpLHM9ZVtyLiRub2RlTmFtZV0sbz1pW3IuJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9bltyLiRjbG9uZV0oKTtpW3NdLnB1c2gobCk7aVtyLiRpbnNlcnRBdF0obytlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLGMsYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLGMpO3RoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpLG49ZVtyLiRub2RlTmFtZV07aWYoIShhW25daW5zdGFuY2VvZiByLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWFbci4kaW5kZXhPZl0oZSkrMSxvPXQuaW5pdGlhbC1pO2lmKG8pe2NvbnN0IHQ9ZVtyLiRjbG9uZV0oKTt0W3IuJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7YVtuXS5wdXNoKHQpO2Fbci4kaW5zZXJ0QXRdKHMsdCk7Zm9yKGxldCBlPTE7ZTxvO2UrKyl7Y29uc3QgaT10W3IuJGNsb25lXSgpO2Fbbl0ucHVzaChpKTthW3IuJGluc2VydEF0XShzK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjphfT1lO2lmKCFhfHwhdClyZXR1cm5bMSwxXTtjb25zdCByPS0xPT09YS5tYXg/MS8wOmEubWF4O3JldHVyblthLm1pbixyXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGE9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IG4gb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl7aWYobltyLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bci4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtyLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWM/LTE6dFtyLiRuYW1lc3BhY2VJZF0sYT1uW3IuJGRhdGFdPW5ldyByLlhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W3IuJGFwcGVuZENoaWxkXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW3IuJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLGw9bnVsbCxoPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXsoMCxvLndhcm4pKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bci4kbm9kZU5hbWVdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9bD1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtyLiRjb250ZW50XSl9Y29uc3RbdSxkXT10aGlzLl9nZXRPY2N1ckluZm8obik7aWYobCl7aD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKG51bGw9PT1oKXtoPSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGwpO2lmKCFoKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGhbci4kY29uc3VtZWRdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaD1oLmZpbHRlcigoZT0+IWVbci4kY29uc3VtZWRdKSkpO2gubGVuZ3RoPmQ/aD1oLnNsaWNlKDAsZCk6MD09PWgubGVuZ3RoJiYoaD1udWxsKTtoJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmguZm9yRWFjaCgoZT0+e2Vbci4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGQ7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW3IuJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW3IuJGNvbnN1bWVkXT0hMDthLnB1c2goaSl9aD1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle2g9dFtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0obi5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFoKXtpZigwPT09dSl7YS5wdXNoKG4pO2NvbnRpbnVlfWNvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdO2g9bltyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxuLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTt0W3IuJGFwcGVuZENoaWxkXShoKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaFtyLiRjb25zdW1lZF09ITApO2g9W2hdfX1oP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLGgscyk6dT4wP3RoaXMuX3NldEFuZEJpbmQobix0KTphLnB1c2gobil9YS5mb3JFYWNoKChlPT5lW3IuJGdldFBhcmVudF0oKVtyLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDc3KSxpPWEoODEpLHM9YSg4Miksbz1hKDc2KSxjPWEoMiksbD1hKDgzKSxoPWEoNCksdT1hKDc4KTtjb25zdCBkPW4uTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixnPS9eSChcZCspJC8scD1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLG09W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO2UudmFsdWU9dH1lLnZhbHVlW3IuJHNldFZhbHVlXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiBlLnZhbGlkYXRlJiYiZXJyb3IiPT09ZS52YWxpZGF0ZS5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59aWYoZVtyLiR0YWJJbmRleF0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbci4kZ2V0Q2hpbGRyZW5dKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWNvbnN0IGE9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtyLiR0YWJJbmRleF09KythW3IuJHRhYkluZGV4XTtjb25zdCBuPWFbci4kc2VhcmNoTm9kZV0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtyLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3Qgbj1hLnJvbGUubWF0Y2goZyk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1hLmxheW91dCYmKGEuYXNzaXN0JiYiVEgiPT09YS5hc3Npc3Qucm9sZT90LnJvbGU9ImNvbHVtbmhlYWRlciI6dC5yb2xlPSJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW3IuJGNvbnRlbnRdP3Quc3BlYWtbci4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtyLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7aWYobnVsbD09PXRbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lO3Rbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO3Rbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtyLiRleHRyYV0pcmV0dXJuITE7ZVtyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtsZXQgYT1udWxsO2lmKGUudGFyZ2V0KXthPXRbci4kc2VhcmNoTm9kZV0oZS50YXJnZXQsZVtyLiRnZXRQYXJlbnRdKCkpO2lmKCFhKXJldHVybiExO2E9YVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6bixjdXJyZW50Q29udGVudEFyZWE6aX09dFtyLiRleHRyYV07aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7YSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoYT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3IuJGV4dHJhXS50YXJnZXQ9YXx8bjtyZXR1cm4hMH1pZihhJiZhIT09bil7ZVtyLiRleHRyYV0udGFyZ2V0PWE7cmV0dXJuITB9cmV0dXJuITF9YSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoYT1udWxsKTtjb25zdCBzPWEmJmFbci4kZ2V0UGFyZW50XSgpO2xldCBvLGM9cztpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKGM9bnVsbCk7bz1yLTF9ZWxzZSBvPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtvPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO2M9cz09PW4/bnVsbDpzfWVbci4kZXh0cmFdLnRhcmdldD1jO2Vbci4kZXh0cmFdLmluZGV4PW87cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IG49ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCksaT1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscz10W3IuJGdldFN1YmZvcm1QYXJlbnRdO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09KCk9PmU7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG89dFtyLiR0b0hUTUxdKGEpO2Vbci4kYWRkSFRNTF0oby5odG1sLG8uYmJveCk7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWk7dFtyLiRnZXRTdWJmb3JtUGFyZW50XT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT0oMCxvLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtyLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtyLiRjb250ZW50XT90aGlzLnRvb2xUaXBbci4kY29udGVudF06bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCI7cmV0dXJuIHR9KSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bci4kdG9TdHlsZV0oKSk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbci4kdG9TdHlsZV0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3IuJHRvU3R5bGVdKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9YS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7YS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtyLiR0b0hUTUxdKGUpe3RoaXNbci4kZXh0cmFdPXt9O3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLGgucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtyLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3Qgbj0oMCxzLmZpeFVSTCkodC51cmwpO24mJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbci4kdWlkXSxocmVmOm4sbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoKDAsby5nZXRNZWFzdXJlbWVudCkoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3IuJHNldFZhbHVlXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bci4kZ2V0RXh0cmFdKGUpe2lmKCF0aGlzW3IuJGV4dHJhXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbci4kZXh0cmFdPSgwLHMubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW3IuJGV4dHJhXX1bci4kdG9IVE1MXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oZSkuaHRtbDtpZighdCl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3IuJGdldEV4dHJhXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IG49W107InN0cmluZyI9PXR5cGVvZiB0P24ucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpuLnB1c2godCk7Y29uc3QgaT0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKX0oMCxzLnNldFBhcmEpKHRoaXMsbnVsbCx0KTt0aGlzW3IuJHBvcFBhcmFdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkoIm1hcmdpbiIpLGE9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCBuLGksYztjb25zdCBsPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxoPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW3IuJHRvSFRNTF0oKS5odG1sfHxbXSx1PXtvbjoodm9pZCAwIT09aFswXT9oWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1oWzFdP2hbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdJiZmW3IuJGRhdGFdW3IuJHVpZF18fGZbci4kdWlkXX1lbHNle249ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7cD1sW3IuJGRhdGFdJiZsW3IuJGRhdGFdW3IuJHVpZF18fGxbci4kdWlkXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDpnLGRhdGFJZDpwLHR5cGU6bixjaGVja2VkOmQseGZhT246dS5vbix4ZmFPZmY6dS5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChsKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtjJiYobS5hdHRyaWJ1dGVzLm5hbWU9Yyk7aWYoaXNSZXF1aXJlZChsKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250JiZhLmZvbnQuc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWUmJmEudmFsdWVbci4kdGV4dF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1vLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmNbZV18fG9bZV0sc3R5bGU6bn0sdmFsdWU6b1tlXX07Y1tlXT09PWgmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7aS5wdXNoKHQpfWx8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IGM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe2NbImFyaWEtcmVxdWlyZWQiXT0hMDtjLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihjLm11bHRpcGxlPSEwKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6Y31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT8oMCxvLmdldENvbG9yKShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiExfVtyLiR0b1N0eWxlXSgpe3JldHVybiB0aGlzLnZhbHVlP2MuVXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KTt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9e2xlZnQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0sYT1bInhmYUNvbnRlbnRhcmVhIl07KDAscy5pc1ByaW50T25seSkodGhpcykmJmEucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3IuJHVpZF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9KDAsby5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXSYmYVtyLiRkYXRhXVtyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4mJncuY2hpbGRyZW5bMF0/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdOncuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3IuJHRhYkluZGV4XSk7dy5hdHRyaWJ1dGVzLnN0eWxlfHwody5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBTPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT13LmNoaWxkcmVuLmxlbmd0aCYmKFtTXT13LmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHcuYXR0cmlidXRlcy5zdHlsZSxiKX1lbHNlIE9iamVjdC5hc3NpZ24oZCxiKTtwLnB1c2godyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdCl3LmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbci4kdGV4dF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtyLiRnZXRFeHRyYV0oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0JiZ0aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMmJih3LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT13LmNoaWxkcmVuWzBdLm5hbWU/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmdy5jaGlsZHJlbiYmdy5jaGlsZHJlblswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbci4kdG9TdHlsZV0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRm9udCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXNbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9KDAscy5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpOygwLHMuc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2UiKTt0aGlzLmFzcGVjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIXAuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3IuJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3IuJGNvbnRlbnRdKSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxjLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tyLiRjb250ZW50XSkpKTtpZighZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIG0paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpuP2FyaWFMYWJlbChuW3IuJGdldFBhcmVudF0oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9vLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSwxMCk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kdG9IVE1MXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSllLnB1c2godFtyLiR0ZXh0XSgpKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fXQuSXRlbXM9SXRlbXM7Y2xhc3MgS2VlcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCx0KTt0aGlzLm5leHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lIiwhMCk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtyLiR0b1N0eWxlXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKShpKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBjLGwsaCx1LGQ9IjEwMCUiLGc9IjEwMCUiO2lmKGUudzw9aSl7W2MsbCxoLHVdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07ZD1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbYyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtnPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tjLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltjLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpmLHgxOmMseTE6bCx4MjpoLHkyOnUsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOmQsaGVpZ2h0Omcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3BdfSk7cC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHApfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKSh0aGlzW3IuJGNvbnRlbnRdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9KDAsby5nZXRCQm94KShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmEmJmFbMF18fG51bGwsbGVhZGVyOm4mJm5bMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtyLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtyLiR0b1N0eWxlXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX10LlNldFByb3BlcnR5PVNldFByb3BlcnR5O2NsYXNzIFNpZ25EYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtyZXR1cm4gZT9lW3IuJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNwZWFrIik7dGhpcy5kaXNhYmxlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBjLlV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpKSk7dGhpcy5oPWUuaD8oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpOiIiO3RoaXMuaEFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0Iik7dGhpcy5taW5XPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiI7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpOmV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W3IuJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W3IuJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtyLiRpc1NwbGl0dGFibGVdKCl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYoIWVbci4kaXNTcGxpdHRhYmxlXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kdG9IVE1MXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbci4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gby5IVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW3IuJGV4dHJhXSYmdGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyk7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbci4kZXh0cmFdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKCksbD1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsaD10aGlzW3IuJGlzU3BsaXR0YWJsZV0oKTtofHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHU9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW3IuJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IGQ9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxmPVsieGZhU3ViZm9ybSJdLGc9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7ZyYmZi5wdXNoKGcpO2Euc3R5bGU9ZDthLmNsYXNzPWY7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3IuJGdldEV4dHJhXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHA9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbT1wPzI6MTtmb3IoO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQ8bTt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0Kyspe3AmJjE9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjp1LGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gZX1pZihwJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZSYmIW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdD1tO2JyZWFrfX10aGlzW3IuJHBvcFBhcmFdKCk7aHx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtuW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9bDtpZih0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PT09bSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7aHx8ZGVsZXRlIHRoaXNbci4kZXh0cmFdO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBiPTAseT0wO2lmKHRoaXMubWFyZ2luKXtiPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3k9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3Qgdz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtiLHRoaXMud3x8MCksUz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQreSx0aGlzLmh8fDApLHg9W3RoaXMueCx0aGlzLnksdyxTXTsiIj09PXRoaXMudyYmKGQud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHcpKTsiIj09PXRoaXMuaCYmKGQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShTKSk7aWYoKCIwcHgiPT09ZC53aWR0aHx8IjBweCI9PT1kLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGs9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgQz1vLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsaykseCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbci4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcj1DO3JldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIEN9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtsZXQgZT10aGlzW3IuJGdldFBhcmVudF0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbci4kY29udGVudF0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRmaW5hbGl6ZV0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbci4kdGFiSW5kZXhdPTVlM31bci4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiEwfVtyLiRzZWFyY2hOb2RlXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tyLiRpZHNdLmdldChlLnNsaWNlKDEpKV06KDAsdS5zZWFyY2hOb2RlKSh0aGlzLHQsZSwhMCwhMCl9KltyLiR0b1BhZ2VzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbci4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3IuJGNsZWFuUGFnZV0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgbj1udWxsLGk9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWsmJmUuYnJlYWsuYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbci4kc2VhcmNoTm9kZV0ocyxpW3IuJGdldFBhcmVudF0oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtuPWU7aVtyLiRleHRyYV09e319fW58fChuPXRbMF0pO25bci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfTtjb25zdCBsPW5bci4kZ2V0UGFyZW50XSgpO2xbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpsLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBoLHU9bnVsbCxkPW51bGwsZj0hMCxnPTAscD0wO2Zvcig7Oyl7aWYoZilnPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrZyl7KDAsYy53YXJuKSgiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1oPW51bGw7dGhpc1tyLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPW47Y29uc3QgdD1uW3IuJHRvSFRNTF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZih1KXt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShuW3IuJGV4dHJhXS5zcGFjZSkuaHRtbCk7dT1udWxsfWlmKGQpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZFtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTtkPW51bGx9Y29uc3QgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2Y9ITE7dGhpc1tyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtyLiRmbHVzaEhUTUxdKCk7aWYoYSl7Zj1mfHxhLmNoaWxkcmVuJiYwIT09YS5jaGlsZHJlbi5sZW5ndGg7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Y9Znx8Yy5odG1sLmNoaWxkcmVuJiYwIT09Yy5odG1sLmNoaWxkcmVuLmxlbmd0aDtzW3RdLmNoaWxkcmVuLnB1c2goYy5odG1sKX1lbHNlIWYmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYoYy5pc0JyZWFrKCkpe2NvbnN0IGU9Yy5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXt1PXRoaXNbci4kc2VhcmNoTm9kZV0oZS5sZWFkZXIsZVtyLiRnZXRQYXJlbnRdKCkpO3U9dT91WzBdOm51bGx9aWYoZS50cmFpbGVyKXtkPXRoaXNbci4kc2VhcmNoTm9kZV0oZS50cmFpbGVyLGVbci4kZ2V0UGFyZW50XSgpKTtkPWQ/ZFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtyLiRleHRyYV0udGFyZ2V0KXtoPWVbci4kZXh0cmFdLnRhcmdldDtwPWVbci4kZXh0cmFdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbci4kZXh0cmFdLmluZGV4fWVsc2UgaWYodGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZTt0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbci4kZ2V0RXh0cmFdKCksbj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKG4gaW5zdGFuY2VvZiBQYWdlQXJlYSloPW47ZWxzZSBpZihuIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKG4pO2lmKC0xIT09ZSllPnM/dD1lLTE6cD1lO2Vsc2V7aD1uW3IuJGdldFBhcmVudF0oKTtwPWguY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKX19fWVsc2UgZmx1c2godCl9dGhpc1tyLiRleHRyYV0ucGFnZU51bWJlcis9MTtoJiYoaFtyLiRpc1VzYWJsZV0oKT9oW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTpoPW51bGwpO249aHx8bltyLiRnZXROZXh0UGFnZV0oKTt5aWVsZCBudWxsfX19dC5UZW1wbGF0ZT1UZW1wbGF0ZTtjbGFzcyBUZXh0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiEwfVtyLiRvbkNoaWxkXShlKXtpZihlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnhodG1sLmlkKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtyLiRub2RlTmFtZV19LmApO3JldHVybiExfVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF1pbnN0YW5jZW9mIHIuWEZBT2JqZWN0fHxzdXBlcltyLiRvblRleHRdKGUpfVtyLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0mJih0aGlzW3IuJGNvbnRlbnRdPXRoaXNbci4kY29udGVudF0ucmVwbGFjZSgvXHJcbi9nLCJcbiIpKX1bci4kZ2V0RXh0cmFdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tyLiRjb250ZW50XVtyLiR0ZXh0XSgpfVtyLiR0b0hUTUxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdKS5odG1sO2lmKHRoaXNbci4kY29udGVudF0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW3IuJGNvbnRlbnRdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3IuJGNvbnRlbnRdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKX19dC5UZXh0PVRleHQ7Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bci4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3IuJGdldEV4dHJhXSgpe2lmKHZvaWQgMD09PXRoaXNbci4kZXh0cmFdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe3RoaXNbci4kZXh0cmFdPXQ7cmV0dXJuIHR9fXRoaXNbci4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbci4kZXh0cmFdfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W3IuJHRvSFRNTF0oZSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3IuJHNldFZhbHVlXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aSYmdC51aS5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0mJmFbci4kZXh0cmFdLmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO2NvbnN0IGM9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYTtyZXR1cm4gbytpPmMuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG8tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX07dC5mbHVzaEhUTUw9ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW3IuJGV4dHJhXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtyLiRleHRyYV0uYXR0cmlidXRlcyxjaGlsZHJlbjplW3IuJGV4dHJhXS5jaGlsZHJlbn07aWYoZVtyLiRleHRyYV0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtyLiRleHRyYV0uZmFpbGluZ05vZGVbci4kZmx1c2hIVE1MXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfWlmKDA9PT10LmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdH07dC5nZXRBdmFpbGFibGVTcGFjZT1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbci4kZXh0cmFdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW3IuJGV4dHJhXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtyLiRleHRyYV0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbci4kZXh0cmFdLmNvbHVtbldpZHRocy5zbGljZShlW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtbn07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fTt2YXIgcj1hKDc1KSxuPWEoODIpO2Z1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uP2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiOmkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gaX07dC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYodC5sYXlvdXQmJnQubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W3IuJGV4dHJhXSxuPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09bj9hLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6YS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfTt0LmZpeFRleHRJbmRlbnQ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PSgwLGkuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9KDAsaS5nZXRNZWFzdXJlbWVudCkoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In07dC5maXhVUkw9ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH07dC5pc1ByaW50T25seT1pc1ByaW50T25seTt0LmxheW91dENsYXNzPWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19O3QubGF5b3V0Tm9kZT1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwsaT0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbz0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O289ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGM9bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7Yz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGg9ZS5mb250O2lmKCFoKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2xldCBhPWVbci4kZ2V0UGFyZW50XSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2g9YS5mb250O2JyZWFrfWE9YVtyLiRnZXRQYXJlbnRdKCl9fWNvbnN0IHU9KGUud3x8dC53aWR0aCktcyxkPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbci4kY29udGVudF0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSxoLGwsYyxkLHUpO249dC53aWR0aDthPXQuaGVpZ2h0O2k9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtyLiR0ZXh0XSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGgsbCxjLGQsdSk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cyk7bnVsbD09PWF8fGUuaHx8KGErPW8pfXJldHVybnt3Om4saDphLGlzQnJva2VuOml9fTt0Lm1lYXN1cmVUb1N0cmluZz1tZWFzdXJlVG9TdHJpbmc7dC5zZXRBY2Nlc3M9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fTt0LnNldEZvbnRGYW1pbHk9ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgbj0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke259ImA7Y29uc3Qgbz1hLmZpbmQobik7aWYobyl7Y29uc3R7Zm9udEZhbWlseTphfT1vLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PW4mJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IGk9Z2V0Q3VycmVudFBhcmEodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fTt0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fTt0LnNldFBhcmE9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzJiZhLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IG49Z2V0Q3VycmVudFBhcmEoZSk7aWYobil7Y29uc3QgZT1hLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKG4udkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9bltyLiR0b1N0eWxlXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fTt0LnRvU3R5bGU9ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PWVbaV07aWYobnVsbCE9PXQpaWYoYy5oYXNPd25Qcm9wZXJ0eShpKSljW2ldKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe2NvbnN0IGU9dFtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbihhLGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHtpfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBhfTt2YXIgcj1hKDc1KSxuPWEoMiksaT1hKDc2KSxzPWEoODMpLG89YSg4NCk7ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtsZXQgbj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQmJmEubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW3IuJGV4dHJhXSxpPWUuY29sU3BhbjtsZXQgcztpZigtMT09PWkpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChuPWUudz1zKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFhfHwhYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW3IuJG5vZGVOYW1lXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bci4kdG9TdHlsZV0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxuLGkscyl7Y29uc3QgYz1uZXcgby5UZXh0TWVhc3VyZSh0LGEsbixpKTsic3RyaW5nIj09dHlwZW9mIGU/Yy5hZGRTdHJpbmcoZSk6ZVtyLiRwdXNoR2x5cGhzXShjKTtyZXR1cm4gYy5jb21wdXRlKHMpfWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZvbnRGaW5kZXI9dm9pZCAwO3QuZ2V0TWV0cmljcz1mdW5jdGlvbiBnZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUsaSl9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLHM9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbz12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnMqaSxsaW5lR2FwOm8qaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxzLW8pKml9fTt0LnNlbGVjdEZvbnQ9c2VsZWN0Rm9udDt2YXIgcj1hKDc1KSxuPWEoNzYpLGk9YSgyKTt0LkZvbnRGaW5kZXI9Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lJiZlLnBzTmFtZS5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZSYmKGUucHNOYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWUuZW5kc1dpdGgoIkl0IikpKSYmKG4rPSJpdGFsaWMiKX1ufHwobj0icmVndWxhciIpO3Jbbl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBuPWUucmVwbGFjZShyLCIiKTthPXRoaXMuZm9udHMuZ2V0KG4pO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9bj1uLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZShyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7bj1uLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLGkud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLGkud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODMpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1uLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxhLHIpXX1wdXNoRGF0YShlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1yLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09ci5wYXJhTWFyZ2luW2VdKTtjb25zdCBuPW5ldyBGb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bi5wZGZGb250fHwobi5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKG4pfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fXQuVGV4dE1lYXN1cmU9Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxyKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCByPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLG49dC5wZGZGb250LGk9bi5saW5lSGVpZ2h0fHwxLjIscz10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixpKSphLG89aS0odm9pZCAwPT09bi5saW5lR2FwPy4yOm4ubGluZUdhcCksYz1NYXRoLm1heCgxLG8pKmEsbD1hLzFlMyxoPW4uZGVmYXVsdFdpZHRofHxuLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9bi5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqbCtyLHMsYyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsbj0wLGk9MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihpK2g+ZSl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1pO2krPWg7dD1sfWVsc2UgaWYoaStoPmUpe24rPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtpPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsaSk7aT1ofW89ITA7Yz0hMX1lbHNle2krPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsaSk7bis9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0Om4saXNCcm9rZW46b319fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDc1KTt0LkRhdGFIYW5kbGVyPWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbci4kZ2V0Q2hpbGRyZW5dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLGldPWE7aWYobisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1pWysrYVswXV0sbz1lLmdldChzW3IuJHVpZF0pO2lmKG8pc1tyLiRzZXRWYWx1ZV0obyk7ZWxzZXtjb25zdCB0PXNbci4kZ2V0QXR0cmlidXRlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbci4kdWlkXSk7aWYodCl7YVtyLiRzZXRWYWx1ZV0odCk7YnJlYWt9fX1jb25zdCBjPXNbci4kZ2V0Q2hpbGRyZW5dKCk7Yy5sZW5ndGg+MCYmdC5wdXNoKFstMSxjXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbci4kZ2V0Q2hpbGRyZW5dKCkpImRhdGEiIT09ZVtyLiRub2RlTmFtZV0mJmVbci4kdG9TdHJpbmddKGEpO3RoaXMuZGF0YVtyLiR0b1N0cmluZ10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNjQpLGk9YSg4Nykscz1hKDIpO2NsYXNzIFhGQVBhcnNlciBleHRlbmRzIG4uWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCk7bnx8KG49W10pO24ucHVzaCh7cHJlZml4OmUsdmFsdWU6Y30pfWVsc2V7Y29uc3QgZT1vLmluZGV4T2YoIjoiKTtpZigtMT09PWUpaVtvXT1jO2Vsc2V7bGV0IHQ9aVtyLiRuc0F0dHJpYnV0ZXNdO3R8fCh0PWlbci4kbnNBdHRyaWJ1dGVzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFthLG5dPVtvLnNsaWNlKDAsZSksby5zbGljZShlKzEpXTtsZXQgcz10W2FdO3N8fChzPXRbYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7c1tuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CdWlsZGVyPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpLGk9YSg4OCkscz1hKDgwKSxvPWEoOTcpLGM9YSgyKTtjbGFzcyBSb290IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpzLHByZWZpeGVzOm99KXtjb25zdCBjPW51bGwhPT1zO2lmKGMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocyl9byYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KG8pO2lmKGEuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9YVtuLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6bn07YnJlYWt9fXI/YVtuLiRuc0F0dHJpYnV0ZXNdPXI6ZGVsZXRlIGFbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBsPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLGg9bCYmbFtyLiRidWlsZFhGQU9iamVjdF0odCxhKXx8bmV3IEVtcHR5O2hbbi4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoY3x8b3x8aFtuLiRpc05zQWdub3N0aWNdKCkpJiYoaFtuLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmMscHJlZml4ZXM6byxuc0Fnbm9zdGljOmhbbi4kaXNOc0Fnbm9zdGljXSgpfSk7cmV0dXJuIGh9aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXMoci5OYW1lc3BhY2VJZHMpKWlmKG4oZSkpe3Q9aS5OYW1lc3BhY2VTZXRVcFthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQmJnQubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDg5KSxuPWEoOTApLGk9YSg5MSkscz1hKDkyKSxvPWEoOTMpLGM9YSg5NCksbD1hKDgwKSxoPWEoOTUpLHU9YSg5Nik7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSksaT1hKDc2KSxzPWEoMik7Y29uc3Qgbz1yLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgbi5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbWQiKX19Y2xhc3MgQXJlYSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFyZWEiKTt0aGlzLmxldmVsPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmVoYXZpb3JPdmVycmlkZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBuLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIG4uSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVtYmVkIil9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHQiKX19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybigwLHMuc2hhZG93KSh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIEZvbnRJbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhY2tldHMiKX1bbi4kZmluYWxpemVdKCl7IioiIT09dGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VPZmZzZXQiKTt0aGlzLng9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VSYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tuLiRjb250ZW50XT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVjb3JkIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW24uJGNvbnRlbnRdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW24uJGNvbnRlbnRdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWxldmFudCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmFtZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpOyh0aGlzW24uJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbi4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcGxlIik7dGhpcy5tb2RlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0YWdnZWQiKX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidXJpIil9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aW5kb3ciKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW24uJGNvbnRlbnRdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tuLiRjb250ZW50XT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRjIiwhMCk7dGhpcy51cmk9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBGb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPUNvbmZpZ05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFVyaSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT1Db25uZWN0aW9uU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3Nyk7Y29uc3QgaT1uLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBEYXRhIGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiZGF0YSIsZSl9W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W3IuJG9uQ2hpbGRdKGUpe2NvbnN0IHQ9ZVtyLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aXx8IlNpZ25hdHVyZSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1EYXRhc2V0c05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsZVNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KSxpPWEoNzYpO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBuLlhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIExvY2FsZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBuLlhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgbi5YRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9TG9jYWxlU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIFNpZ25hdHVyZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9fXQuU2lnbmF0dXJlTmFtZXNwYWNlPVNpZ25hdHVyZU5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX10LlN0eWxlc2hlZXROYW1lc3BhY2U9U3R5bGVzaGVldE5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnhkcC5pZDtjbGFzcyBYZHAgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtuLiRvbkNoaWxkQ2hlY2tdKGUpe2NvbnN0IHQ9ci5OYW1lc3BhY2VJZHNbZVtuLiRub2RlTmFtZV1dO3JldHVybiB0JiZlW24uJG5hbWVzcGFjZUlkXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX19dC5YZHBOYW1lc3BhY2U9WGRwTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDgyKSxzPWEoNzYpO2NvbnN0IG89bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQsYz1TeW1ib2woKSxsPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksaD1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT57ZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpO3JldHVybigwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLHU9L1xzKy9nLGQ9L1tcclxuXSsvZyxmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgbz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1oLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsbykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09YCR7blt0XX0gJHtyfWA6bi50cmFuc2Zvcm09cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1yfW4uZm9udEZhbWlseSYmKDAsaS5zZXRGb250RmFtaWx5KSh7dHlwZWZhY2U6bi5mb250RmFtaWx5LHdlaWdodDpuLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6bi5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6by5mb250U2l6ZXx8MH0sdCx0W3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsbik7aWYoYSYmbi52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PW4udmVydGljYWxBbGlnbiYmbi5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4uZm9udFNpemUpO24uZm9udFNpemU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKGEqZSk7bi52ZXJ0aWNhbEFsaWduPSgwLGkubWVhc3VyZVRvU3RyaW5nKShNYXRoLnNpZ24oKDAscy5nZXRNZWFzdXJlbWVudCkobi52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZuLmZvbnRTaXplJiYobi5mb250U2l6ZT1gY2FsYygke24uZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTsoMCxpLmZpeFRleHRJbmRlbnQpKG4pO3JldHVybiBufWNvbnN0IGc9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihvLHQpO3RoaXNbY109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtyLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gbC5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIWcuaGFzKHRoaXNbci4kbm9kZU5hbWVdKX1bci4kb25UZXh0XShlLHQ9ITEpe2lmKHQpdGhpc1tjXT0hMDtlbHNle2U9ZS5yZXBsYWNlKGQsIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlKHUsIiAiKSl9ZSYmKHRoaXNbci4kY29udGVudF0rPWUpfVtyLiRwdXNoR2x5cGhzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKSh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT4oMCxzLmdldE1lYXN1cmVtZW50KShlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOm4udG9wPW4uYm90dG9tPW4ubGVmdD1uLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOm4udG9wPW4uYm90dG9tPWVbMF07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6bi50b3A9ZVswXTtuLmJvdHRvbT1lWzJdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0Om4udG9wPWVbMF07bi5sZWZ0PWVbMV07bi5ib3R0b209ZVsyXTtuLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpuLnRvcD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOm4uYm90dG9tPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOm4ubGVmdD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6bi5yaWdodD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpfWUucHVzaERhdGEoYSxuLGkpO2lmKHRoaXNbci4kY29udGVudF0pZS5hZGRTdHJpbmcodGhpc1tyLiRjb250ZW50XSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW3IuJGdldENoaWxkcmVuXSgpKSIjdGV4dCIhPT10W3IuJG5vZGVOYW1lXT90W3IuJHB1c2hHbHlwaHNdKGUpOmUuYWRkU3RyaW5nKHRbci4kY29udGVudF0pO3QmJmUucG9wRm9udCgpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW3IuJGNvbnRlbnRdKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2NdP3RoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlKGYsIlxuIik6dm9pZCAwOnRoaXNbci4kY29udGVudF18fHZvaWQgMDtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tyLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbY10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9KDAsaS5maXhVUkwpKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtyLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbci4kcHVzaEdseXBoc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltyLiR0b0hUTUxdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3IuJHRleHRdKCl7cmV0dXJuIlxuIn1bci4kcHVzaEdseXBoc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjp0fTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tyLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bci4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bci4kcHVzaEdseXBoc10oZSl7c3VwZXJbci4kcHVzaEdseXBoc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3IuJHRleHRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbci4kdGV4dF0oKTpzdXBlcltyLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fXQuWGh0bWxOYW1lc3BhY2U9WGh0bWxOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtyZXR1cm4gbmV3IG4uWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19dC5Vbmtub3duTmFtZXNwYWNlPVVua25vd25OYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0UmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoNjQpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGEmJiJ2YWx1ZSI9PT1hLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoMTUpLG89YSg1KSxjPWEoNjUpO3QuWFJlZj1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy54cmVmc3Rtcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IG4uUmVmU2V0O3RoaXMuc3RhdHM9bmV3IGkuRG9jU3RhdHModC5tc2dIYW5kbGVyKTt0aGlzLl9uZXdSZWZOdW09bnVsbH1nZXROZXdSZWYoKXtudWxsPT09dGhpcy5fbmV3UmVmTnVtJiYodGhpcy5fbmV3UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBuLlJlZi5nZXQodGhpcy5fbmV3UmVmTnVtKyssMCl9cmVzZXROZXdSZWYoKXt0aGlzLl9uZXdSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxzO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lJiZlLmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGEscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtzPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYocyBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYocy5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PXM7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHQ9L1xiZW5kb2JqW1xiXHNdJC8sYT0vXHMrKFxkK1xzK1xkK1xzK29ialtcYlxzPF0pJC8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbMTExLDk4LDEwNl0pLGg9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCB1PXRoaXMuc3RyZWFtO3UucG9zPTA7Y29uc3QgZD11LmdldEJ5dGVzKCksZj1kLmxlbmd0aDtsZXQgZz11LnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPWRbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249ZFtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4oZCxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKGQsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKGQsZyxjKX1lbHNlIGlmKHk9ZS5leGVjKGIpKXtjb25zdCBlPTB8eVsxXSxuPTB8eVsyXTtsZXQgbyxjPWcrYi5sZW5ndGgsZj0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUubWFrZVN1YlN0cmVhbShjKSl9KS5nZXRPYmooKTtmPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBpLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmY9ITB9fWVsc2UgZj0hMDtmJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6Zy11LnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2Zvcig7YzxkLmxlbmd0aDspe2NvbnN0IGU9Yytza2lwVW50aWwoZCxjLGwpKzQ7bz1lLWc7Y29uc3Qgbj1NYXRoLm1heChlLTI1LGMpLGk9KDAsci5ieXRlc1RvU3RyaW5nKShkLnN1YmFycmF5KG4sZSkpO2lmKHQudGVzdChpKSlicmVhazt7Y29uc3QgZT1hLmV4ZWMoaSk7aWYoZSYmZVsxXSl7KDAsci53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCBuZXcgIm9iaiIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpO28tPWVbMV0ubGVuZ3RoO2JyZWFrfX1jPWV9Y29uc3QgcD1kLnN1YmFycmF5KGcsZytvKSx3PXNraXBVbnRpbChwLDAsaCk7aWYodzxvJiZwW3crNV08NjQpe20ucHVzaChnLXUuc3RhcnQpO3RoaXMueHJlZnN0bXNbZy11LnN0YXJ0XT0xfWcrPW99ZWxzZSBpZihiLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbN10pKSl7cC5wdXNoKGcpO2crPXNraXBVbnRpbChkLGcsYyl9ZWxzZSBnKz1iLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIG0pe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1sZXQgYix5O2Zvcihjb25zdCBlIG9mWy4uLnAsImdlbmVyYXRpb25GYWxsYmFjayIsLi4ucF0pe2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siPT09ZSl7aWYoIXkpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfXUucG9zPWU7Y29uc3QgdD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7bGV0IGk9ITE7dHJ5e2NvbnN0IGU9ci5nZXQoIlJvb3QiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IHQ9ZS5nZXQoIlBhZ2VzIik7aWYoISh0IGluc3RhbmNlb2Ygbi5EaWN0KSljb250aW51ZTtjb25zdCBhPXQuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIoYSkmJihpPSEwKX1jYXRjaChlKXt5PWU7Y29udGludWV9aWYoaSYmci5oYXMoIklEIikpcmV0dXJuIHI7Yj1yfWlmKGIpcmV0dXJuIGI7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7dGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O3RyeXtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgaT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPWkuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShpKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkpe2NvbnN0IGU9bDtpZighKGUgaW4gdGhpcy54cmVmc3Rtcykpe3RoaXMueHJlZnN0bXNbZV09MTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSl9fX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpLmdldE9iaigpKSYmKDAsbi5pc0NtZCkoaS5nZXRPYmooKSwib2JqIikmJihsPWkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1yZXR1cm4gdGhpcy50b3BEaWN0fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSk7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBzPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2Fybikocyk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgaS5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBjPXQub2Zmc2V0LGw9dGhpcy5mZXRjaChuLlJlZi5nZXQoYywwKSk7aWYoIShsIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBoPWwuZGljdC5nZXQoIkZpcnN0IiksdT1sLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBmPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7KytlKXtjb25zdCB0PWQuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7ZltlXT10O2dbZV09YX1jb25zdCBwPShsLnN0YXJ0fHwwKStoLG09bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZTx1LTE/Z1tlKzFdLWdbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7ZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwubWFrZVN1YlN0cmVhbShwK2dbZV0sdCxsLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1kLmdldE9iaigpO21bZV09YTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IG49ZltlXSxpPXRoaXMuZW50cmllc1tuXTtpJiZpLm9mZnNldD09PWMmJmkuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSl9aWYodm9pZCAwPT09KHQ9bVt0Lmdlbl0pKXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLlJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmlzTm9kZUpTPXZvaWQgMDtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWF9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIHI9YSgyKTtjb25zdCBuPTEsaT0yLHM9MSxvPTIsYz0zLGw9NCxoPTUsdT02LGQ9NyxmPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLHIudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgci5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLk1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fXQuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPWU9Pntjb25zdCB0PWUuZGF0YTtpZih0LnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKHQuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsodCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEsbil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsYz10aGlzLnRhcmdldE5hbWUsbD10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3Qgcz0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDppLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uaXNDbG9zZWQ9ITA7bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxzdHJlYW06cyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfV9jcmVhdGVTdHJlYW1TaW5rKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLHM9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZShlLHM9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1pLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OigwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O3Uuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3UucmVhZHk9dS5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09dTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChvKGUuZGF0YSx1KSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGwmJnAub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIGw6KDAsci5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgYzooMCxyLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgaDooMCxyLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyx0KTticmVhaztjYXNlIG86ZS5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgczppZighcClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChwLm9uQ2FuY2VsJiZwLm9uQ2FuY2VsKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbCYmZS5zdGFydENhbGwucHJvbWlzZSxlLnB1bGxDYWxsJiZlLnB1bGxDYWxsLnByb21pc2UsZS5jYW5jZWxDYWxsJiZlLmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBERldvcmtlclN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTt0LlBERldvcmtlclN0cmVhbT1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpeygwLHIuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciYmdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIuY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fTtjbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19fV0sdD17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKGEpe3ZhciByPXRbYV07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBuPXRbYV09e2V4cG9ydHM6e319O2VbYV0obixuLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk7cmV0dXJuIG4uZXhwb3J0c31fX3dfcGRmanNfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClfX3dfcGRmanNfcmVxdWlyZV9fLm8odCxhKSYmIV9fd19wZGZqc19yZXF1aXJlX18ubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9O19fd19wZGZqc19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7X193X3BkZmpzX3JlcXVpcmVfXy5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgYT17fTsoKCk9Pnt2YXIgZT1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiV29ya2VyTWVzc2FnZUhhbmRsZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lldvcmtlck1lc3NhZ2VIYW5kbGVyfX0pO3ZhciB0PV9fd19wZGZqc19yZXF1aXJlX18oMSl9KSgpO3JldHVybiBhfSkoKSkpOw==",d="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz1bLCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwO2UuYXJyYXlCeXRlTGVuZ3RoPWFycmF5Qnl0ZUxlbmd0aDtlLmFycmF5c1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlzVG9CeXRlcyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2xldCBzPTA7Zm9yKGxldCBpPTA7aTxlO2krKylzKz1hcnJheUJ5dGVMZW5ndGgodFtpXSk7bGV0IGk9MDtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBlPXRbc107ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KGUpKTtjb25zdCByPWUuYnl0ZUxlbmd0aDtuLnNldChlLGkpO2krPXJ9cmV0dXJuIG59O2UuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydCh0LGUpe3R8fHVucmVhY2hhYmxlKGUpfTtlLmJ5dGVzVG9TdHJpbmc9ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ2b2lkIDAhPT10Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLHM9ODE5MjtpZihlPHMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgbj0wO248ZTtuKz1zKXtjb25zdCByPU1hdGgubWluKG4rcyxlKSxhPXQuc3ViYXJyYXkobixyKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX07ZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZT0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0dGxlZCIse2dldDooKT0+ZX0pO3QucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxpKXt0LnJlc29sdmU9ZnVuY3Rpb24odCl7ZT0hMDtzKHQpfTt0LnJlamVjdD1mdW5jdGlvbih0KXtlPSEwO2kodCl9fSkpO3JldHVybiB0fTtlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LGU9bnVsbCxzPW51bGwpe2lmKCF0KXJldHVybiBudWxsO3RyeXtpZihzJiYic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMuYWRkRGVmYXVsdFByb3RvY29sJiZ0LnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgZT10Lm1hdGNoKC9cLi9nKTtlJiZlLmxlbmd0aD49MiYmKHQ9YGh0dHA6Ly8ke3R9YCl9aWYocy50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e3Q9c3RyaW5nVG9VVEY4U3RyaW5nKHQpfWNhdGNoKHQpe319Y29uc3QgaT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO2lmKGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2wodCl7aWYoIXQpcmV0dXJuITE7c3dpdGNoKHQucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2godCl7fXJldHVybiBudWxsfTtlLmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcodCl7cmV0dXJuIHQucmVwbGFjZSgvKFsoKVxcXG5ccl0pL2csKHQ9PiJcbiI9PT10PyJcXG4iOiJcciI9PT10PyJcXHIiOmBcXCR7dH1gKSl9O2UuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKHQ9bmV3IERhdGUpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwodC5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gaX07ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7aT49cy5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKylpZih0W3NdIT09ZVtzXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkodCl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KHQpfTtlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3MsaV1vZiB0KWVbc109aTtyZXR1cm4gZX07ZS5vYmplY3RTaXplPWZ1bmN0aW9uIG9iamVjdFNpemUodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aH07ZS5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbCh0KXtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoaT10KX07ZS5zaGFkb3c9c2hhZG93O2Uuc3RyaW5nMzI9ZnVuY3Rpb24gc3RyaW5nMzIodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9O2Uuc3RyaW5nVG9CeXRlcz1zdHJpbmdUb0J5dGVzO2Uuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcodCl7aWYodFswXT49IsOvIil7bGV0IGU7IsO+Ij09PXRbMF0mJiLDvyI9PT10WzFdP2U9InV0Zi0xNmJlIjoiw78iPT09dFswXSYmIsO+Ij09PXRbMV0/ZT0idXRmLTE2bGUiOiLDryI9PT10WzBdJiYiwrsiPT09dFsxXSYmIsK/Ij09PXRbMl0mJihlPSJ1dGYtOCIpO2lmKGUpdHJ5e2NvbnN0IHM9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksaT1zdHJpbmdUb0J5dGVzKHQpO3JldHVybiBzLmRlY29kZShpKX1jYXRjaCh0KXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7dH0iLmApfX1jb25zdCBlPVtdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT1hW3QuY2hhckNvZGVBdChzKV07ZS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTp0LmNoYXJBdChzKSl9cmV0dXJuIGUuam9pbigiIil9O2Uuc3RyaW5nVG9VVEYxNkJFU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZCRVN0cmluZyh0KXtjb25zdCBlPVsiw77DvyJdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT10LmNoYXJDb2RlQXQocyk7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmkpKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO2UuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTtlLkxJTkVfRkFDVE9SPTEuMzU7ZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTtlLkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjtlLkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX07ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfTtlLlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O2UuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07ZS5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTtlLkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9O2UuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn07ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifTtlLkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifTtlLkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfTtlLkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9O2UuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX07ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifTtlLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifTtlLlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifTtlLlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifTtlLkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O2NvbnN0IHM9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1zO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn07ZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTtsZXQgaT1zLldBUk5JTkdTO2Z1bmN0aW9uIHdhcm4odCl7aT49cy5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7dH1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZSh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gc2hhZG93KHQsZSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpzLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIHN9Y29uc3Qgbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPXQ7dGhpcy5uYW1lPWV9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtlLkJhc2VFeGNlcHRpb249bjtlLlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPWV9fTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPWV9fTtlLkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O2UuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz1lfX07ZS5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiRm9ybWF0RXJyb3IiKX19O2UuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSlzW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIHN9ZnVuY3Rpb24gYXJyYXlCeXRlTGVuZ3RoKHQpe2lmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZih2b2lkIDAhPT10LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDt1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaCh0KXtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9fTtjb25zdCByPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IodCxlLHMpe3JldHVybmAjJHtyW3RdfSR7cltlXX0ke3Jbc119YH1zdGF0aWMgc2NhbGVNaW5NYXgodCxlKXtsZXQgcztpZih0WzBdKXtpZih0WzBdPDApe3M9ZVswXTtlWzBdPWVbMV07ZVsxXT1zfWVbMF0qPXRbMF07ZVsxXSo9dFswXTtpZih0WzNdPDApe3M9ZVsyXTtlWzJdPWVbM107ZVszXT1zfWVbMl0qPXRbM107ZVszXSo9dFszXX1lbHNle3M9ZVswXTtlWzBdPWVbMl07ZVsyXT1zO3M9ZVsxXTtlWzFdPWVbM107ZVszXT1zO2lmKHRbMV08MCl7cz1lWzJdO2VbMl09ZVszXTtlWzNdPXN9ZVsyXSo9dFsxXTtlWzNdKj10WzFdO2lmKHRbMl08MCl7cz1lWzBdO2VbMF09ZVsxXTtlWzFdPXN9ZVswXSo9dFsyXTtlWzFdKj10WzJdfWVbMF0rPXRbNF07ZVsxXSs9dFs0XTtlWzJdKz10WzVdO2VbM10rPXRbNV19c3RhdGljIHRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzJdK2VbNF0sdFswXSplWzFdK3RbMV0qZVszXStlWzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsZSl7Y29uc3Qgcz1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVyblsodFswXSplWzNdLXRbMV0qZVsyXStlWzJdKmVbNV0tZVs0XSplWzNdKS9zLCgtdFswXSplWzFdK3RbMV0qZVswXStlWzRdKmVbMV0tZVs1XSplWzBdKS9zXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxlKXtjb25zdCBzPVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxlKSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLGUpLG49VXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxlKSxyPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0sZSk7cmV0dXJuW01hdGgubWluKHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWluKHNbMV0saVsxXSxuWzFdLHJbMV0pLE1hdGgubWF4KHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWF4KHNbMV0saVsxXSxuWzFdLHJbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybSh0KXtjb25zdCBlPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuW3RbM10vZSwtdFsxXS9lLC10WzJdL2UsdFswXS9lLCh0WzJdKnRbNV0tdFs0XSp0WzNdKS9lLCh0WzRdKnRbMV0tdFs1XSp0WzBdKS9lXX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodCl7Y29uc3QgZT1bdFswXSx0WzJdLHRbMV0sdFszXV0scz10WzBdKmVbMF0rdFsxXSplWzJdLGk9dFswXSplWzFdK3RbMV0qZVszXSxuPXRbMl0qZVswXSt0WzNdKmVbMl0scj10WzJdKmVbMV0rdFszXSplWzNdLGE9KHMrcikvMixvPU1hdGguc3FydCgocytyKSoqMi00KihzKnItbippKSkvMixsPWErb3x8MSxjPWEtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QodCl7Y29uc3QgZT10LnNsaWNlKDApO2lmKHRbMF0+dFsyXSl7ZVswXT10WzJdO2VbMl09dFswXX1pZih0WzFdPnRbM10pe2VbMV09dFszXTtlWzNdPXRbMV19cmV0dXJuIGV9c3RhdGljIGludGVyc2VjdCh0LGUpe2NvbnN0IHM9TWF0aC5tYXgoTWF0aC5taW4odFswXSx0WzJdKSxNYXRoLm1pbihlWzBdLGVbMl0pKSxpPU1hdGgubWluKE1hdGgubWF4KHRbMF0sdFsyXSksTWF0aC5tYXgoZVswXSxlWzJdKSk7aWYocz5pKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4odFsxXSx0WzNdKSxNYXRoLm1pbihlWzFdLGVbM10pKSxyPU1hdGgubWluKE1hdGgubWF4KHRbMV0sdFszXSksTWF0aC5tYXgoZVsxXSxlWzNdKSk7cmV0dXJuIG4+cj9udWxsOltzLG4saSxyXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPVtdLGM9W1tdLFtdXTtsZXQgaCxkLHUscCxnLG0sZixiO2ZvcihsZXQgYz0wO2M8MjsrK2Mpe2lmKDA9PT1jKXtkPTYqdC0xMipzKzYqbjtoPS0zKnQrOSpzLTkqbiszKmE7dT0zKnMtMyp0fWVsc2V7ZD02KmUtMTIqaSs2KnI7aD0tMyplKzkqaS05KnIrMypvO3U9MyppLTMqZX1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnMoZCk8MWUtMTIpY29udGludWU7cD0tdS9kOzA8cCYmcDwxJiZsLnB1c2gocCl9ZWxzZXtmPWQqZC00KnUqaDtiPU1hdGguc3FydChmKTtpZighKGY8MCkpe2c9KC1kK2IpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyk7bT0oLWQtYikvKDIqaCk7MDxtJiZtPDEmJmwucHVzaChtKX19fWxldCBBLF89bC5sZW5ndGg7Y29uc3Qgdj1fO2Zvcig7Xy0tOyl7cD1sW19dO0E9MS1wO2NbMF1bX109QSpBKkEqdCszKkEqQSpwKnMrMypBKnAqcCpuK3AqcCpwKmE7Y1sxXVtfXT1BKkEqQSplKzMqQSpBKnAqaSszKkEqcCpwKnIrcCpwKnAqb31jWzBdW3ZdPXQ7Y1sxXVt2XT1lO2NbMF1bdisxXT1hO2NbMV1bdisxXT1vO2NbMF0ubGVuZ3RoPWNbMV0ubGVuZ3RoPXYrMjtyZXR1cm5bTWF0aC5taW4oLi4uY1swXSksTWF0aC5taW4oLi4uY1sxXSksTWF0aC5tYXgoLi4uY1swXSksTWF0aC5tYXgoLi4uY1sxXSldfX1lLlV0aWw9VXRpbDtjb25zdCBhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZXhwb3J0cy5idWlsZD1leHBvcnRzLlJlbmRlclRhc2s9ZXhwb3J0cy5QREZXb3JrZXJVdGlsPWV4cG9ydHMuUERGV29ya2VyPWV4cG9ydHMuUERGUGFnZVByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1leHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2s9ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZXhwb3J0cy5Mb29wYmFja1BvcnQ9ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7ZXhwb3J0cy5nZXREb2N1bWVudD1nZXREb2N1bWVudDtleHBvcnRzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5PXNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5O2V4cG9ydHMudmVyc2lvbj12b2lkIDA7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDMpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oNiksX2ZvbnRfbG9hZGVyPV9fd19wZGZqc19yZXF1aXJlX18oOSksX2NhbnZhcz1fX3dfcGRmanNfcmVxdWlyZV9fKDEwKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygxMiksX21lc3NhZ2VfaGFuZGxlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNiksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTcpLF90cmFuc3BvcnRfc3RyZWFtPV9fd19wZGZqc19yZXF1aXJlX18oMTgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5KTtjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMDtsZXQgRGVmYXVsdENhbnZhc0ZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ2FudmFzRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5PURlZmF1bHRDYW52YXNGYWN0b3J5O2xldCBEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2xldCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnksY3JlYXRlUERGTmV0d29ya1N0cmVhbTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aWYoX2lzX25vZGUuaXNOb2RlSlMpe2NvbnN0e05vZGVDYW52YXNGYWN0b3J5OnQsTm9kZUNNYXBSZWFkZXJGYWN0b3J5OmUsTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5OnN9PV9fd19wZGZqc19yZXF1aXJlX18oMjApO2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk9dDtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9ZTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9c31mdW5jdGlvbiBzZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSh0KXtjcmVhdGVQREZOZXR3b3JrU3RyZWFtPXR9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCl7Y29uc3QgZT1uZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaztsZXQgcztpZigic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBVUkwpcz17dXJsOnR9O2Vsc2UgaWYoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkpcz17ZGF0YTp0fTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQpcz17cmFuZ2U6dH07ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgc3RyaW5nLCBVUkwsIFR5cGVkQXJyYXksIG9yIHBhcmFtZXRlciBvYmplY3QuIik7aWYoIXQudXJsJiYhdC5kYXRhJiYhdC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcGFyYW1ldGVyIG9iamVjdDogbmVlZCBlaXRoZXIgLmRhdGEsIC5yYW5nZSBvciAudXJsIik7cz10fWNvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj1udWxsLHI9bnVsbDtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07c3dpdGNoKHQpe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7aVt0XT1uZXcgVVJMKGUsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKGBDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIiR7dH0iLmApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVVJMKXtpW3RdPWUudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjpuPWU7Y29udGludWU7Y2FzZSJ3b3JrZXIiOnI9ZTtjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmZSBpbnN0YW5jZW9mIEJ1ZmZlcilpW3RdPW5ldyBVaW50OEFycmF5KGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlbdF09KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykoZSk7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHxpc05hTihlLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtpW3RdPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaVt0XT1uZXcgVWludDhBcnJheShlKX1jb250aW51ZX1pW3RdPWV9aS5DTWFwUmVhZGVyRmFjdG9yeT1pLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7aS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1pLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aS5pZ25vcmVFcnJvcnM9ITAhPT1pLnN0b3BBdEVycm9ycztpLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1pLmZvbnRFeHRyYVByb3BlcnRpZXM7aS5wZGZCdWc9ITA9PT1pLnBkZkJ1ZztpLmVuYWJsZVhmYT0hMD09PWkuZW5hYmxlWGZhOyghTnVtYmVyLmlzSW50ZWdlcihpLnJhbmdlQ2h1bmtTaXplKXx8aS5yYW5nZUNodW5rU2l6ZTwxKSYmKGkucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKTsoInN0cmluZyIhPXR5cGVvZiBpLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkoaS5kb2NCYXNlVXJsKSkmJihpLmRvY0Jhc2VVcmw9bnVsbCk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkubWF4SW1hZ2VTaXplKXx8aS5tYXhJbWFnZVNpemU8LTEpJiYoaS5tYXhJbWFnZVNpemU9LTEpOyJzdHJpbmciIT10eXBlb2YgaS5jTWFwVXJsJiYoaS5jTWFwVXJsPW51bGwpOyJzdHJpbmciIT10eXBlb2YgaS5zdGFuZGFyZEZvbnREYXRhVXJsJiYoaS5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlV29ya2VyRmV0Y2gmJihpLnVzZVdvcmtlckZldGNoPWkuQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmaS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzRXZhbFN1cHBvcnRlZCYmKGkuaXNFdmFsU3VwcG9ydGVkPSEwKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUZvbnRGYWNlJiYoaS5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlU3lzdGVtRm9udHMmJihpLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIWkuZGlzYWJsZUZvbnRGYWNlKTsib2JqZWN0Ij09dHlwZW9mIGkub3duZXJEb2N1bWVudCYmbnVsbCE9PWkub3duZXJEb2N1bWVudHx8KGkub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVSYW5nZSYmKGkuZGlzYWJsZVJhbmdlPSExKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVTdHJlYW0mJihpLmRpc2FibGVTdHJlYW09ITEpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUF1dG9GZXRjaCYmKGkuZGlzYWJsZUF1dG9GZXRjaD0hMSk7KDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGkudmVyYm9zaXR5KTtpZighcil7Y29uc3QgdD17dmVyYm9zaXR5OmkudmVyYm9zaXR5LHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07cj10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPXJ9Y29uc3QgYT1lLmRvY0lkO3IucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7Y29uc3QgdD1fZmV0Y2hEb2N1bWVudChyLGksbixhKSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtuP2U9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDppLmxlbmd0aCxpbml0aWFsRGF0YTppLmluaXRpYWxEYXRhLHByb2dyZXNzaXZlRG9uZTppLnByb2dyZXNzaXZlRG9uZSxjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTppLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lLGRpc2FibGVSYW5nZTppLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOmkuZGlzYWJsZVN0cmVhbX0sbik6aS5kYXRhfHwoZT1jcmVhdGVQREZOZXR3b3JrU3RyZWFtKHt1cmw6aS51cmwsbGVuZ3RoOmkubGVuZ3RoLGh0dHBIZWFkZXJzOmkuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmkud2l0aENyZWRlbnRpYWxzLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOmkuZGlzYWJsZVJhbmdlLGRpc2FibGVTdHJlYW06aS5kaXNhYmxlU3RyZWFtfSkpO3QoZSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt0LHNdKS50aGVuKChmdW5jdGlvbihbdCxzXSl7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBuPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKGEsdCxyLnBvcnQpLG89bmV3IFdvcmtlclRyYW5zcG9ydChuLGUscyxpKTtlLl90cmFuc3BvcnQ9bztuLnNlbmQoIlJlYWR5IixudWxsKX0pKX0pKS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCxlLHMsaSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2lmKHMpe2UubGVuZ3RoPXMubGVuZ3RoO2UuaW5pdGlhbERhdGE9cy5pbml0aWFsRGF0YTtlLnByb2dyZXNzaXZlRG9uZT1zLnByb2dyZXNzaXZlRG9uZTtlLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV9Y29uc3Qgbj1hd2FpdCB0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4wLjI3OSIsZGF0YTplLmRhdGEscGFzc3dvcmQ6ZS5wYXNzd29yZCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplLGxlbmd0aDplLmxlbmd0aCxkb2NCYXNlVXJsOmUuZG9jQmFzZVVybCxlbmFibGVYZmE6ZS5lbmFibGVYZmEsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOmUubWF4SW1hZ2VTaXplLGRpc2FibGVGb250RmFjZTplLmRpc2FibGVGb250RmFjZSxpZ25vcmVFcnJvcnM6ZS5pZ25vcmVFcnJvcnMsaXNFdmFsU3VwcG9ydGVkOmUuaXNFdmFsU3VwcG9ydGVkLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsZm9udEV4dHJhUHJvcGVydGllczplLmZvbnRFeHRyYVByb3BlcnRpZXMsdXNlU3lzdGVtRm9udHM6ZS51c2VTeXN0ZW1Gb250cyxjTWFwVXJsOmUudXNlV29ya2VyRmV0Y2g/ZS5jTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDplLnVzZVdvcmtlckZldGNoP2Uuc3RhbmRhcmRGb250RGF0YVVybDpudWxsfX0pO2UuZGF0YSYmKGUuZGF0YT1udWxsKTtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIik7cmV0dXJuIG59Y2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFza3tzdGF0aWMjdD0wO2NvbnN0cnVjdG9yKCl7dGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiN0Kys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5vblVuc3VwcG9ydGVkRmVhdHVyZT1udWxsfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1hc3luYyBkZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITA7YXdhaXQodGhpcy5fdHJhbnNwb3J0Py5kZXN0cm95KCkpO3RoaXMuX3RyYW5zcG9ydD1udWxsO2lmKHRoaXMuX3dvcmtlcil7dGhpcy5fd29ya2VyLmRlc3Ryb3koKTt0aGlzLl93b3JrZXI9bnVsbH19fWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1QREZEb2N1bWVudExvYWRpbmdUYXNrO2NsYXNzIFBERkRhdGFSYW5nZVRyYW5zcG9ydHtjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPXM7dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfWFkZFJhbmdlTGlzdGVuZXIodCl7dGhpcy5fcmFuZ2VMaXN0ZW5lcnMucHVzaCh0KX1hZGRQcm9ncmVzc0xpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzLnB1c2godCl9b25EYXRhUmFuZ2UodCxlKXtmb3IoY29uc3QgcyBvZiB0aGlzLl9yYW5nZUxpc3RlbmVycylzKHQsZSl9b25EYXRhUHJvZ3Jlc3ModCxlKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCBzIG9mIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzKXModCxlKX0pKX1vbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgZSBvZiB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMpZSh0KX0pKX1vbkRhdGFQcm9ncmVzc2l2ZURvbmUoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyl0KCl9KSl9dHJhbnNwb3J0UmVhZHkoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpfXJlcXVlc3REYXRhUmFuZ2UodCxlKXsoMCxfdXRpbC51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSIpfWFib3J0KCl7fX1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7Y2xhc3MgUERGRG9jdW1lbnRQcm94eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BkZkluZm89dDt0aGlzLl90cmFuc3BvcnQ9ZX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLl9wZGZJbmZvLm51bVBhZ2VzfWdldCBmaW5nZXJwcmludHMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHN9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGF0c31nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmF9Z2V0IGFsbFhmYUh0bWwoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhfWdldFBhZ2UodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VJbmRleCh0KX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxhYmVscygpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYXlvdXQoKX1nZXRQYWdlTW9kZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRPcGVuQWN0aW9uKCl9Z2V0QXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpfWdldEpTQWN0aW9ucygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RG9jSlNBY3Rpb25zKCl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBlcm1pc3Npb25zKCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCl9Z2V0TWFya0luZm8oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1hcmtJbmZvKCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGF0YSgpfXNhdmVEb2N1bWVudCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCl9Z2V0RG93bmxvYWRJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2V9Y2xlYW51cCh0PSExKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCh0fHx0aGlzLmlzUHVyZVhmYSl9ZGVzdHJveSgpe3JldHVybiB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKX1nZXQgbG9hZGluZ1BhcmFtcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1BhcmFtc31nZXQgbG9hZGluZ1Rhc2soKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrfWdldEZpZWxkT2JqZWN0cygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RmllbGRPYmplY3RzKCl9aGFzSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5oYXNKU0FjdGlvbnMoKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl9fWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1QREZEb2N1bWVudFByb3h5O2NsYXNzIFBERlBhZ2VQcm94eXtjb25zdHJ1Y3Rvcih0LGUscyxpLG49ITEpe3RoaXMuX3BhZ2VJbmRleD10O3RoaXMuX3BhZ2VJbmZvPWU7dGhpcy5fb3duZXJEb2N1bWVudD1pO3RoaXMuX3RyYW5zcG9ydD1zO3RoaXMuX3N0YXRzPW4/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsO3RoaXMuX3BkZkJ1Zz1uO3RoaXMuY29tbW9uT2Jqcz1zLmNvbW1vbk9ianM7dGhpcy5vYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuX2JpdG1hcHM9bmV3IFNldDt0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLnBlbmRpbmdDbGVhbnVwPSExO3RoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcz1uZXcgTWFwO3RoaXMuZGVzdHJveWVkPSExfWdldCBwYWdlTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfWdldCByb3RhdGUoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfWdldCByZWYoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfWdldCB1c2VyVW5pdCgpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH1nZXQgdmlldygpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fWdldFZpZXdwb3J0KHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpzPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpzLG9mZnNldFk6aSxkb250RmxpcDpufSl9Z2V0QW5ub3RhdGlvbnMoe2ludGVudDp0PSJkaXNwbGF5In09e30pe2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0KTtsZXQgcz10aGlzLl9hbm5vdGF0aW9uUHJvbWlzZXMuZ2V0KGUuY2FjaGVLZXkpO2lmKCFzKXtzPXRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsZS5yZW5kZXJpbmdJbnRlbnQpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5zZXQoZS5jYWNoZUtleSxzKX1yZXR1cm4gc31nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fanNBY3Rpb25zUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCl9YXN5bmMgZ2V0WGZhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYT8uY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XXx8bnVsbH1yZW5kZXIoe2NhbnZhc0NvbnRleHQ6dCx2aWV3cG9ydDplLGludGVudDpzPSJkaXNwbGF5Iixhbm5vdGF0aW9uTW9kZTppPV91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSx0cmFuc2Zvcm06bj1udWxsLGNhbnZhc0ZhY3Rvcnk6cj1udWxsLGJhY2tncm91bmQ6YT1udWxsLG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6bz1udWxsLGFubm90YXRpb25DYW52YXNNYXA6bD1udWxsLHBhZ2VDb2xvcnM6Yz1udWxsLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6aD1udWxsfSl7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyxpLGgpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7b3x8KG89dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTtsZXQgdT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO2lmKCF1KXt1PU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW50ZW50U3RhdGVzLnNldChkLmNhY2hlS2V5LHUpfWlmKHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCl7Y2xlYXJUaW1lb3V0KHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCk7dS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9Y29uc3QgcD1yfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLGc9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3Uub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH07dGhpcy5fc3RhdHM/LnRpbWUoIlBhZ2UgUmVxdWVzdCIpO3RoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCl9Y29uc3QgY29tcGxldGU9dD0+e3UucmVuZGVyVGFza3MuZGVsZXRlKG0pOyh0aGlzLmNsZWFudXBBZnRlclJlbmRlcnx8ZykmJih0aGlzLnBlbmRpbmdDbGVhbnVwPSEwKTt0aGlzLl90cnlDbGVhbnVwKCk7aWYodCl7bS5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBtLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxtPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDp0LHZpZXdwb3J0OmUsdHJhbnNmb3JtOm4sYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpwLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohZyxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKG0pO2NvbnN0IGY9bS50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigoKFt0LGVdKT0+e2lmKHRoaXMucGVuZGluZ0NsZWFudXApY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTttLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KTttLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBmfWdldE9wZXJhdG9yTGlzdCh7aW50ZW50OnQ9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOmU9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsfT17fSl7Y29uc3QgaT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQsZSxzLCEwKTtsZXQgbixyPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoaS5jYWNoZUtleSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGkuY2FjaGVLZXkscil9aWYoIXIub3BMaXN0UmVhZENhcGFiaWxpdHkpe249T2JqZWN0LmNyZWF0ZShudWxsKTtuLm9wZXJhdG9yTGlzdENoYW5nZWQ9ZnVuY3Rpb24gb3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHIub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7ci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHIub3BlcmF0b3JMaXN0KTtyLnJlbmRlclRhc2tzLmRlbGV0ZShuKX19O3Iub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7KHIucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQobik7ci5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KHtkaXNhYmxlQ29tYmluZVRleHRJdGVtczp0PSExLGluY2x1ZGVNYXJrZWRDb250ZW50OmU9ITF9PXt9KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRUZXh0Q29udGVudCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY29tYmluZVRleHRJdGVtczohMCE9PXQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KHQ9e30pe2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscyl7Y29uc3QgaT1lLmdldFJlYWRlcigpLG49e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6c30pe2lmKHMpdChuKTtlbHNle09iamVjdC5hc3NpZ24obi5zdHlsZXMsZS5zdHlsZXMpO24uaXRlbXMucHVzaCguLi5lLml0ZW1zKTtwdW1wKCl9fSkscyl9KCl9KSl9Z2V0U3RydWN0VHJlZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRTdHJ1Y3RUcmVlKHRoaXMuX3BhZ2VJbmRleCl9X2Rlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSl7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm5ldyBFcnJvcigiUGFnZSB3YXMgZGVzdHJveWVkLiIpLGZvcmNlOiEwfSk7aWYoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpZm9yKGNvbnN0IHMgb2YgZS5yZW5kZXJUYXNrcyl7dC5wdXNoKHMuY29tcGxldGVkKTtzLmNhbmNlbCgpfX10aGlzLm9ianMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9iaXRtYXBzKXQuY2xvc2UoKTt0aGlzLl9iaXRtYXBzLmNsZWFyKCk7dGhpcy5fYW5ub3RhdGlvblByb21pc2VzLmNsZWFyKCk7dGhpcy5fanNBY3Rpb25zUHJvbWlzZT1udWxsO3RoaXMuX3N0cnVjdFRyZWVQcm9taXNlPW51bGw7dGhpcy5wZW5kaW5nQ2xlYW51cD0hMTtyZXR1cm4gUHJvbWlzZS5hbGwodCl9Y2xlYW51cCh0PSExKXt0aGlzLnBlbmRpbmdDbGVhbnVwPSEwO3JldHVybiB0aGlzLl90cnlDbGVhbnVwKHQpfV90cnlDbGVhbnVwKHQ9ITEpe2lmKCF0aGlzLnBlbmRpbmdDbGVhbnVwKXJldHVybiExO2Zvcihjb25zdHtyZW5kZXJUYXNrczp0LG9wZXJhdG9yTGlzdDplfW9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSlpZih0LnNpemU+MHx8IWUubGFzdENodW5rKXJldHVybiExO3RoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO3RoaXMub2Jqcy5jbGVhcigpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5jbGVhcigpO3RoaXMuX2pzQWN0aW9uc1Byb21pc2U9bnVsbDt0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZT1udWxsO3QmJnRoaXMuX3N0YXRzJiYodGhpcy5fc3RhdHM9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fYml0bWFwcyl0LmNsb3NlKCk7dGhpcy5fYml0bWFwcy5jbGVhcigpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7cmV0dXJuITB9X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihzKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7cy5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cysrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W3NdKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtzXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy5fdHJ5Q2xlYW51cCgpfV9wdW1wT3BlcmF0b3JMaXN0KHtyZW5kZXJpbmdJbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlTWFwOnN9KXtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlOnN9KS5nZXRSZWFkZXIoKSxuPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoZSk7bi5zdHJlYW1SZWFkZXI9aTtjb25zdCBwdW1wPSgpPT57aS5yZWFkKCkudGhlbigoKHt2YWx1ZTp0LGRvbmU6ZX0pPT57aWYoZSluLnN0cmVhbVJlYWRlcj1udWxsO2Vsc2UgaWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe3RoaXMuX3JlbmRlclBhZ2VDaHVuayh0LG4pO3B1bXAoKX19KSwodD0+e24uc3RyZWFtUmVhZGVyPW51bGw7aWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe2lmKG4ub3BlcmF0b3JMaXN0KXtuLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bms9ITA7Zm9yKGNvbnN0IHQgb2Ygbi5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0aGlzLl90cnlDbGVhbnVwKCl9aWYobi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW4uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighbi5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O24ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOnQscmVhc29uOmUsZm9yY2U6cz0hMX0pe2lmKHQuc3RyZWFtUmVhZGVyKXtpZighcyl7aWYodC5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe3Quc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTp0LHJlYXNvbjplLGZvcmNlOiEwfSk7dC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9KSxSRU5ERVJJTkdfQ0FOQ0VMTEVEX1RJTUVPVVQpO3JldHVybn19dC5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7dC5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W2Usc11vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYocz09PXQpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUoZSk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2U9W107I3M9UHJvbWlzZS5yZXNvbHZlKCk7cG9zdE1lc3NhZ2UodCxlKXtjb25zdCBzPXtkYXRhOnN0cnVjdHVyZWRDbG9uZSh0LGUpfTt0aGlzLiNzLnRoZW4oKCgpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy4jZSl0LmNhbGwodGhpcyxzKX0pKX1hZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jZS5wdXNoKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtjb25zdCBzPXRoaXMuI2UuaW5kZXhPZihlKTt0aGlzLiNlLnNwbGljZShzLDEpfXRlcm1pbmF0ZSgpe3RoaXMuI2UubGVuZ3RoPTB9fWV4cG9ydHMuTG9vcGJhY2tQb3J0PUxvb3BiYWNrUG9ydDtjb25zdCBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2V4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7UERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkPSEwO1BERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9Ii4vcGRmLndvcmtlci5qcyJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50KXtjb25zdCB0PWRvY3VtZW50Py5jdXJyZW50U2NyaXB0Py5zcmM7dCYmKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9dC5yZXBsYWNlKC8oXC4oPzptaW5cLik/anMpKFw/LiopPyQvaSwiLndvcmtlciQxJDIiKSl9UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW49ZnVuY3Rpb24odCxlKXtsZXQgczt0cnl7cz1uZXcgVVJMKHQpO2lmKCFzLm9yaWdpbnx8Im51bGwiPT09cy5vcmlnaW4pcmV0dXJuITF9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1uZXcgVVJMKGUscyk7cmV0dXJuIHMub3JpZ2luPT09aS5vcmlnaW59O1BERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXtjb25zdCBlPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKX07Y2xhc3MgUERGV29ya2Vye3N0YXRpYyNpPW5ldyBXZWFrTWFwO2NvbnN0cnVjdG9yKHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6cz0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09e30pe2lmKGUmJlBERldvcmtlci4jaS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3BvcnQ9bnVsbDt0aGlzLl93ZWJXb3JrZXI9bnVsbDt0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsO2lmKGUpe1BERldvcmtlci4jaS5zZXQoZSx0aGlzKTt0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSl9ZWxzZSB0aGlzLl9pbml0aWFsaXplKCl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2V9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fcG9ydH1nZXQgbWVzc2FnZUhhbmRsZXIoKXtyZXR1cm4gdGhpcy5fbWVzc2FnZUhhbmRsZXJ9X2luaXRpYWxpemVGcm9tUG9ydCh0KXt0aGlzLl9wb3J0PXQ7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLHQpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLm9uKCJyZWFkeSIsKGZ1bmN0aW9uKCl7fSkpO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7dGhpcy5fbWVzc2FnZUhhbmRsZXIuc2VuZCgiY29uZmlndXJlIix7dmVyYm9zaXR5OnRoaXMudmVyYm9zaXR5fSl9X2luaXRpYWxpemUoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe2xldHt3b3JrZXJTcmM6dH09UERGV29ya2VyO3RyeXtQREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbih3aW5kb3cubG9jYXRpb24uaHJlZix0KXx8KHQ9UERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCx3aW5kb3cubG9jYXRpb24pLmhyZWYpKTtjb25zdCBlPW5ldyBXb3JrZXIodCkscz1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsZSksdGVybWluYXRlRWFybHk9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtzLmRlc3Ryb3koKTtlLnRlcm1pbmF0ZSgpO3RoaXMuZGVzdHJveWVkP3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTp0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX0sb25Xb3JrZXJFcnJvcj0oKT0+e3RoaXMuX3dlYldvcmtlcnx8dGVybWluYXRlRWFybHkoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7cy5vbigidGVzdCIsKHQ9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtpZih0aGlzLmRlc3Ryb3llZCl0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYodCl7dGhpcy5fbWVzc2FnZUhhbmRsZXI9czt0aGlzLl9wb3J0PWU7dGhpcy5fd2ViV29ya2VyPWU7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtzLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfWVsc2V7dGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7cy5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKX19KSk7cy5vbigicmVhZHkiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeXtzZW5kVGVzdCgpfWNhdGNoKHQpe3RoaXMuX3NldHVwRmFrZVdvcmtlcigpfX0pKTtjb25zdCBzZW5kVGVzdD0oKT0+e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXk7cy5zZW5kKCJ0ZXN0Iix0LFt0LmJ1ZmZlcl0pfTtzZW5kVGVzdCgpO3JldHVybn1jYXRjaCh0KXsoMCxfdXRpbC5pbmZvKSgiVGhlIHdvcmtlciBoYXMgYmVlbiBkaXNhYmxlZC4iKX19dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9X3NldHVwRmFrZVdvcmtlcigpe2lmKCFQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQpeygwLF91dGlsLndhcm4pKCJTZXR0aW5nIHVwIGZha2Ugd29ya2VyLiIpO1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMH1QREZXb3JrZXIuX3NldHVwRmFrZVdvcmtlckdsb2JhbC50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtyZXR1cm59Y29uc3QgZT1uZXcgTG9vcGJhY2tQb3J0O3RoaXMuX3BvcnQ9ZTtjb25zdCBzPSJmYWtlIitQREZXb3JrZXJVdGlsLmZha2VXb3JrZXJJZCsrLGk9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIocysiX3dvcmtlciIscyxlKTt0LnNldHVwKGksZSk7Y29uc3Qgbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihzLHMrIl93b3JrZXIiLGUpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfSkpLmNhdGNoKCh0PT57dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoYFNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJHt0Lm1lc3NhZ2V9Ii5gKSl9KSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2lmKHRoaXMuX3dlYldvcmtlcil7dGhpcy5fd2ViV29ya2VyLnRlcm1pbmF0ZSgpO3RoaXMuX3dlYldvcmtlcj1udWxsfVBERldvcmtlci4jaS5kZWxldGUodGhpcy5fcG9ydCk7dGhpcy5fcG9ydD1udWxsO2lmKHRoaXMuX21lc3NhZ2VIYW5kbGVyKXt0aGlzLl9tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbH19c3RhdGljIGZyb21Qb3J0KHQpe2lmKCF0Py5wb3J0KXRocm93IG5ldyBFcnJvcigiUERGV29ya2VyLmZyb21Qb3J0IC0gaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlLiIpO3JldHVybiB0aGlzLiNpLmhhcyh0LnBvcnQpP3RoaXMuI2kuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX1zdGF0aWMgZ2V0IHdvcmtlclNyYygpe2lmKF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYylyZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO2lmKG51bGwhPT1QREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKXtfaXNfbm9kZS5pc05vZGVKU3x8KDAsX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpO3JldHVybiBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjfXRocm93IG5ldyBFcnJvcignTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyl9c3RhdGljIGdldCBfbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKCl7dHJ5e3JldHVybiBnbG9iYWxUaGlzLnBkZmpzV29ya2VyPy5Xb3JrZXJNZXNzYWdlSGFuZGxlcnx8bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19c3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCl7Y29uc3QgbG9hZGVyPWFzeW5jKCk9Pntjb25zdCBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI9dGhpcy5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcilyZXR1cm4gbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7Y29uc3Qgd29ya2VyPWV2YWwoInJlcXVpcmUiKSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn1hd2FpdCgwLF9kaXNwbGF5X3V0aWxzLmxvYWRTY3JpcHQpKHRoaXMud29ya2VyU3JjKTtyZXR1cm4gd2luZG93LnBkZmpzV29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyfTtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsIl9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGxvYWRlcigpKX19ZXhwb3J0cy5QREZXb3JrZXI9UERGV29ya2VyO2NsYXNzIFdvcmtlclRyYW5zcG9ydHsjbj1udWxsOyNyPW5ldyBNYXA7I2E9bmV3IE1hcDsjbz1udWxsO2NvbnN0cnVjdG9yKHQsZSxzLGkpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnRoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlLmJpbmQodGhpcyksb3duZXJEb2N1bWVudDppLm93bmVyRG9jdW1lbnQsc3R5bGVFbGVtZW50Omkuc3R5bGVFbGVtZW50fSk7dGhpcy5fcGFyYW1zPWk7aWYoIWkudXNlV29ya2VyRmV0Y2gpe3RoaXMuQ01hcFJlYWRlckZhY3Rvcnk9bmV3IGkuQ01hcFJlYWRlckZhY3Rvcnkoe2Jhc2VVcmw6aS5jTWFwVXJsLGlzQ29tcHJlc3NlZDppLmNNYXBQYWNrZWR9KTt0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5PW5ldyBpLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5KHtiYXNlVXJsOmkuc3RhbmRhcmRGb250RGF0YVVybH0pfXRoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPXM7dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuI259Z2V0UmVuZGVyaW5nSW50ZW50KHQsZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscz1udWxsLGk9ITEpe2xldCBuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxyPW51bGw7c3dpdGNoKHQpe2Nhc2UiYW55IjpuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6bj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6bis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOm4rPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtyPShuJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJnMgaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/czp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpuLGNhY2hlS2V5OmAke259XyR7X2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKHIpfWAsYW5ub3RhdGlvblN0b3JhZ2VNYXA6cn19ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eSYmdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrIikpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy4jci52YWx1ZXMoKSl0LnB1c2goZS5fZGVzdHJveSgpKTt0aGlzLiNyLmNsZWFyKCk7dGhpcy4jYS5jbGVhcigpO3RoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO2NvbnN0IGU9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlRlcm1pbmF0ZSIsbnVsbCk7dC5wdXNoKGUpO1Byb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGw7dGhpcy5fbmV0d29ya1N0cmVhbSYmdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7aWYodGhpcy5tZXNzYWdlSGFuZGxlcil7dGhpcy5tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5tZXNzYWdlSGFuZGxlcj1udWxsfXRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpfSksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5yZWplY3QpO3JldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2V9c2V0dXBNZXNzYWdlSGFuZGxlcigpe2NvbnN0e21lc3NhZ2VIYW5kbGVyOnQsbG9hZGluZ1Rhc2s6ZX09dGhpczt0Lm9uKCJHZXRSZWFkZXIiLCgodCxlKT0+eygwLF91dGlsLmFzc2VydCkodGhpcy5fbmV0d29ya1N0cmVhbSwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt0aGlzLl9mdWxsUmVhZGVyPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlcigpO3RoaXMuX2Z1bGxSZWFkZXIub25Qcm9ncmVzcz10PT57dGhpcy5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH19O2Uub25QdWxsPSgpPT57dGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oe3ZhbHVlOnQsZG9uZTpzfSl7aWYocyllLmNsb3NlKCk7ZWxzZXsoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodCksMSxbdF0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IHM9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10aGlzLl9mdWxsUmVhZGVyO2kuaGVhZGVyc1JlYWR5LnRoZW4oKCgpPT57aWYoIWkuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fCFpLmlzUmFuZ2VTdXBwb3J0ZWQpe3RoaXMuX2xhc3RQcm9ncmVzcyYmZS5vblByb2dyZXNzPy4odGhpcy5fbGFzdFByb2dyZXNzKTtpLm9uUHJvZ3Jlc3M9dD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfX1zLnJlc29sdmUoe2lzU3RyZWFtaW5nU3VwcG9ydGVkOmkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsaXNSYW5nZVN1cHBvcnRlZDppLmlzUmFuZ2VTdXBwb3J0ZWQsY29udGVudExlbmd0aDppLmNvbnRlbnRMZW5ndGh9KX0pLHMucmVqZWN0KTtyZXR1cm4gcy5wcm9taXNlfSkpO3Qub24oIkdldFJhbmdlUmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTtjb25zdCBzPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIodC5iZWdpbix0LmVuZCk7aWYocyl7ZS5vblB1bGw9KCk9PntzLnJlYWQoKS50aGVuKChmdW5jdGlvbih7dmFsdWU6dCxkb25lOnN9KXtpZihzKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCksIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHQpLDEsW3RdKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntzLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKCh7cGRmSW5mbzp0fSk9Pnt0aGlzLl9udW1QYWdlcz10Lm51bVBhZ2VzO3RoaXMuX2h0bWxGb3JYZmE9dC5odG1sRm9yWGZhO2RlbGV0ZSB0Lmh0bWxGb3JYZmE7ZS5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KHQsdGhpcykpfSkpO3Qub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe2xldCBzO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnM9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpzPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfWUuX2NhcGFiaWxpdHkucmVqZWN0KHMpfSkpO3Qub24oIlBhc3N3b3JkUmVxdWVzdCIsKHQ9Pnt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7aWYoZS5vblBhc3N3b3JkKXtjb25zdCB1cGRhdGVQYXNzd29yZD10PT57dCBpbnN0YW5jZW9mIEVycm9yP3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCk6dGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCl9fWVsc2UgdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSkpO3JldHVybiB0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI3IuZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKChbZSxzLGldKT0+e2lmKCF0aGlzLmRlc3Ryb3llZCYmIXRoaXMuY29tbW9uT2Jqcy5oYXMoZSkpc3dpdGNoKHMpe2Nhc2UiRm9udCI6Y29uc3Qgbj10aGlzLl9wYXJhbXM7aWYoImVycm9yImluIGkpe2NvbnN0IHQ9aS5lcnJvcjsoMCxfdXRpbC53YXJuKShgRXJyb3IgZHVyaW5nIGZvbnQgbG9hZGluZzogJHt0fWApO3RoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsdCk7YnJlYWt9bGV0IHI9bnVsbDtuLnBkZkJ1ZyYmZ2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yPy5lbmFibGVkJiYocj17cmVnaXN0ZXJGb250KHQsZSl7Z2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yLmZvbnRBZGRlZCh0LGUpfX0pO2NvbnN0IGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChpLHtpc0V2YWxTdXBwb3J0ZWQ6bi5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOm4uZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpuLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpLGZvbnRSZWdpc3RyeTpyfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKHM9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDplfSkpKS5maW5hbGx5KCgoKT0+eyFuLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShlLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOnRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEdvdCB1bmtub3duIGNvbW1vbiBvYmplY3QgdHlwZSAke3N9YCl9fSkpO3Qub24oIm9iaiIsKChbdCxlLHMsaV0pPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy4jci5nZXQoZSk7aWYoIW4ub2Jqcy5oYXModCkpc3dpdGNoKHMpe2Nhc2UiSW1hZ2UiOm4ub2Jqcy5yZXNvbHZlKHQsaSk7Y29uc3QgZT04ZTY7aWYoaSl7bGV0IHQ7aWYoaS5iaXRtYXApe2NvbnN0e2JpdG1hcDplLHdpZHRoOnMsaGVpZ2h0OnJ9PWk7dD1zKnIqNDtuLl9iaXRtYXBzLmFkZChlKX1lbHNlIHQ9aS5kYXRhPy5sZW5ndGh8fDA7dD5lJiYobi5jbGVhbnVwQWZ0ZXJSZW5kZXI9ITApfWJyZWFrO2Nhc2UiUGF0dGVybiI6bi5vYmpzLnJlc29sdmUodCxpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gb2JqZWN0IHR5cGUgJHtzfWApfX0pKTt0Lm9uKCJEb2NQcm9ncmVzcyIsKHQ9Pnt0aGlzLmRlc3Ryb3llZHx8ZS5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9KSk7dC5vbigiRG9jU3RhdHMiLCh0PT57dGhpcy5kZXN0cm95ZWR8fCh0aGlzLiNuPU9iamVjdC5mcmVlemUoe3N0cmVhbVR5cGVzOk9iamVjdC5mcmVlemUodC5zdHJlYW1UeXBlcyksZm9udFR5cGVzOk9iamVjdC5mcmVlemUodC5mb250VHlwZXMpfSkpfSkpO3Qub24oIlVuc3VwcG9ydGVkRmVhdHVyZSIsdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSk7dC5vbigiRmV0Y2hCdWlsdEluQ01hcCIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuQ01hcFJlYWRlckZhY3Rvcnk/dGhpcy5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKTt0Lm9uKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLCh0PT50aGlzLmRlc3Ryb3llZD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkLiIpKTp0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5P3RoaXMuU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuIikpKSl9X29uVW5zdXBwb3J0ZWRGZWF0dXJlKHtmZWF0dXJlSWQ6dH0pe3RoaXMuZGVzdHJveWVkfHx0aGlzLmxvYWRpbmdUYXNrLm9uVW5zdXBwb3J0ZWRGZWF0dXJlPy4odCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9c2F2ZURvY3VtZW50KCl7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zaXplPD0wJiYoMCxfdXRpbC53YXJuKSgic2F2ZURvY3VtZW50IGNhbGxlZCB3aGlsZSBgYW5ub3RhdGlvblN0b3JhZ2VgIGlzIGVtcHR5LCBwbGVhc2UgdXNlIHRoZSBnZXREYXRhLW1ldGhvZCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTp0aGlzLl9mdWxsUmVhZGVyPy5maWxlbmFtZT8/bnVsbH0pLmZpbmFsbHkoKCgpPT57dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5yZXNldE1vZGlmaWVkKCl9KSl9Z2V0UGFnZSh0KXtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7Y29uc3QgZT10LTEscz10aGlzLiNhLmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6ZX0pLnRoZW4oKHQ9PntpZih0aGlzLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zcG9ydCBkZXN0cm95ZWQiKTtjb25zdCBzPW5ldyBQREZQYWdlUHJveHkoZSx0LHRoaXMsdGhpcy5fcGFyYW1zLm93bmVyRG9jdW1lbnQsdGhpcy5fcGFyYW1zLnBkZkJ1Zyk7dGhpcy4jci5zZXQoZSxzKTtyZXR1cm4gc30pKTt0aGlzLiNhLnNldChlLGkpO3JldHVybiBpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10fHwhTnVtYmVyLmlzSW50ZWdlcih0Lm51bSl8fHQubnVtPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKHQuZ2VuKXx8dC5nZW48MD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgcGFnZUluZGV4IHJlcXVlc3QuIikpOnRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSW5kZXgiLHtudW06dC5udW0sZ2VuOnQuZ2VufSl9Z2V0QW5ub3RhdGlvbnModCxlKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEFubm90YXRpb25zIix7cGFnZUluZGV4OnQsaW50ZW50OmV9KX1nZXRGaWVsZE9iamVjdHMoKXtyZXR1cm4gdGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZXx8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRGaWVsZE9iamVjdHMiLG51bGwpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlfHw9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkhhc0pTQWN0aW9ucyIsbnVsbCl9Z2V0Q2FsY3VsYXRpb25PcmRlcklkcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREZXN0aW5hdGlvbnMiLG51bGwpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgZGVzdGluYXRpb24gcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9uIix7aWQ6dH0pfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYWJlbHMiLG51bGwpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYXlvdXQiLG51bGwpfWdldFBhZ2VNb2RlKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlTW9kZSIsbnVsbCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFZpZXdlclByZWZlcmVuY2VzIixudWxsKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcGVuQWN0aW9uIixudWxsKX1nZXRBdHRhY2htZW50cygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QXR0YWNobWVudHMiLG51bGwpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEphdmFTY3JpcHQiLG51bGwpfWdldERvY0pTQWN0aW9ucygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jSlNBY3Rpb25zIixudWxsKX1nZXRQYWdlSlNBY3Rpb25zKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUpTQWN0aW9ucyIse3BhZ2VJbmRleDp0fSl9Z2V0U3RydWN0VHJlZSh0KXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFN0cnVjdFRyZWUiLHtwYWdlSW5kZXg6dH0pfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE91dGxpbmUiLG51bGwpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKS50aGVuKCh0PT5uZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSkpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQZXJtaXNzaW9ucyIsbnVsbCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy4jb3x8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRNZXRhZGF0YSIsbnVsbCkudGhlbigodD0+KHtpbmZvOnRbMF0sbWV0YWRhdGE6dFsxXT9uZXcgX21ldGFkYXRhLk1ldGFkYXRhKHRbMV0pOm51bGwsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6dGhpcy5fZnVsbFJlYWRlcj8uZmlsZW5hbWU/P251bGwsY29udGVudExlbmd0aDp0aGlzLl9mdWxsUmVhZGVyPy5jb250ZW50TGVuZ3RoPz9udWxsfSkpKX1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCh0PSExKXtpZighdGhpcy5kZXN0cm95ZWQpe2F3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJDbGVhbnVwIixudWxsKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNyLnZhbHVlcygpKXtpZighdC5jbGVhbnVwKCkpdGhyb3cgbmV3IEVycm9yKGBzdGFydENsZWFudXA6IFBhZ2UgJHt0LnBhZ2VOdW1iZXJ9IGlzIGN1cnJlbnRseSByZW5kZXJpbmcuYCl9dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dHx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGx9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3QgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fWNsYXNzIFBERk9iamVjdHN7I2w9T2JqZWN0LmNyZWF0ZShudWxsKTsjYyh0KXtjb25zdCBlPXRoaXMuI2xbdF07cmV0dXJuIGV8fCh0aGlzLiNsW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfWdldCh0LGU9bnVsbCl7aWYoZSl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKHMuZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBzPXRoaXMuI2xbdF07aWYoIXM/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIHMuZGF0YX1oYXModCl7cmV0dXJuIHRoaXMuI2xbdF0/LmNhcGFiaWxpdHkuc2V0dGxlZHx8ITF9cmVzb2x2ZSh0LGU9bnVsbCl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuZGF0YT1lO3MuY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXt0aGlzLiNsPU9iamVjdC5jcmVhdGUobnVsbCl9fWNsYXNzIFJlbmRlclRhc2t7I2g9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLiNoPXQ7dGhpcy5vbkNvbnRpbnVlPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy4jaC5jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy4jaC5jYW5jZWwoKX1nZXQgc2VwYXJhdGVBbm5vdHMoKXtjb25zdHtzZXBhcmF0ZUFubm90czp0fT10aGlzLiNoLm9wZXJhdG9yTGlzdDtpZighdClyZXR1cm4hMTtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmV9PXRoaXMuI2g7cmV0dXJuIHQuZm9ybXx8dC5jYW52YXMmJmU/LnNpemU+MH19ZXhwb3J0cy5SZW5kZXJUYXNrPVJlbmRlclRhc2s7Y2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNre3N0YXRpYyNkPW5ldyBXZWFrU2V0O2NvbnN0cnVjdG9yKHtjYWxsYmFjazp0LHBhcmFtczplLG9ianM6cyxjb21tb25PYmpzOmksYW5ub3RhdGlvbkNhbnZhc01hcDpuLG9wZXJhdG9yTGlzdDpyLHBhZ2VJbmRleDphLGNhbnZhc0ZhY3Rvcnk6byx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bD0hMSxwZGZCdWc6Yz0hMSxwYWdlQ29sb3JzOmg9bnVsbH0pe3RoaXMuY2FsbGJhY2s9dDt0aGlzLnBhcmFtcz1lO3RoaXMub2Jqcz1zO3RoaXMuY29tbW9uT2Jqcz1pO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcD1uO3RoaXMub3BlcmF0b3JMaXN0SWR4PW51bGw7dGhpcy5vcGVyYXRvckxpc3Q9cjt0aGlzLl9wYWdlSW5kZXg9YTt0aGlzLmNhbnZhc0ZhY3Rvcnk9bzt0aGlzLl9wZGZCdWc9Yzt0aGlzLnBhZ2VDb2xvcnM9aDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9bnVsbDt0aGlzLmdyYXBoaWNzUmVhZHk9ITE7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPSEwPT09bCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c7dGhpcy5jYW5jZWxsZWQ9ITE7dGhpcy5jYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMudGFzaz1uZXcgUmVuZGVyVGFzayh0aGlzKTt0aGlzLl9jYW5jZWxCb3VuZD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpO3RoaXMuX2NvbnRpbnVlQm91bmQ9dGhpcy5fY29udGludWUuYmluZCh0aGlzKTt0aGlzLl9zY2hlZHVsZU5leHRCb3VuZD10aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTt0aGlzLl9uZXh0Qm91bmQ9dGhpcy5fbmV4dC5iaW5kKHRoaXMpO3RoaXMuX2NhbnZhcz1lLmNhbnZhc0NvbnRleHQuY2FudmFzfWdldCBjb21wbGV0ZWQoKXtyZXR1cm4gdGhpcy5jYXBhYmlsaXR5LnByb21pc2UuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfWluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQ9ITEsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KXtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2QuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jZC5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDpzLHZpZXdwb3J0OmksdHJhbnNmb3JtOm4sYmFja2dyb3VuZDpyfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhzLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LGUsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyk7dGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06bix2aWV3cG9ydDppLHRyYW5zcGFyZW5jeTp0LGJhY2tncm91bmQ6cn0pO3RoaXMub3BlcmF0b3JMaXN0SWR4PTA7dGhpcy5ncmFwaGljc1JlYWR5PSEwO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPy4oKX1jYW5jZWwodD1udWxsKXt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jZC5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLCJjYW52YXMiKSl9b3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuZ3JhcGhpY3NSZWFkeSl7dGhpcy5zdGVwcGVyPy51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpO3RoaXMucnVubmluZ3x8dGhpcy5fY29udGludWUoKX1lbHNlIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9X2NvbnRpbnVlKCl7dGhpcy5ydW5uaW5nPSEwO3RoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX1fc2NoZWR1bGVOZXh0KCl7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fbmV4dEJvdW5kKCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5fbmV4dEJvdW5kKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCl9YXN5bmMgX25leHQoKXtpZighdGhpcy5jYW5jZWxsZWQpe3RoaXMub3BlcmF0b3JMaXN0SWR4PXRoaXMuZ2Z4LmV4ZWN1dGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QsdGhpcy5vcGVyYXRvckxpc3RJZHgsdGhpcy5fY29udGludWVCb3VuZCx0aGlzLnN0ZXBwZXIpO2lmKHRoaXMub3BlcmF0b3JMaXN0SWR4PT09dGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCl7dGhpcy5ydW5uaW5nPSExO2lmKHRoaXMub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7dGhpcy5nZnguZW5kRHJhd2luZygpO3RoaXMuX2NhbnZhcyYmSW50ZXJuYWxSZW5kZXJUYXNrLiNkLmRlbGV0ZSh0aGlzLl9jYW52YXMpO3RoaXMuY2FsbGJhY2soKX19fX19Y29uc3QgdmVyc2lvbj0iMy4wLjI3OSI7ZXhwb3J0cy52ZXJzaW9uPXZlcnNpb247Y29uc3QgYnVpbGQ9ImQwODIzMDY2YyI7ZXhwb3J0cy5idWlsZD1idWlsZH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7dmFyIGk9cygxKSxuPXMoNCkscj1zKDgpO2NsYXNzIEFubm90YXRpb25TdG9yYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmFnZT1uZXcgTWFwO3RoaXMuX21vZGlmaWVkPSExO3RoaXMub25TZXRNb2RpZmllZD1udWxsO3RoaXMub25SZXNldE1vZGlmaWVkPW51bGw7dGhpcy5vbkFubm90YXRpb25FZGl0b3I9bnVsbH1nZXRWYWx1ZSh0LGUpe2NvbnN0IHM9dGhpcy5fc3RvcmFnZS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXM/ZTpPYmplY3QuYXNzaWduKGUscyl9Z2V0UmF3VmFsdWUodCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0KHQpfXJlbW92ZSh0KXt0aGlzLl9zdG9yYWdlLmRlbGV0ZSh0KTswPT09dGhpcy5fc3RvcmFnZS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0b3JhZ2UudmFsdWVzKCkpaWYodCBpbnN0YW5jZW9mIG4uQW5ub3RhdGlvbkVkaXRvcilyZXR1cm47dGhpcy5vbkFubm90YXRpb25FZGl0b3IobnVsbCl9fXNldFZhbHVlKHQsZSl7Y29uc3Qgcz10aGlzLl9zdG9yYWdlLmdldCh0KTtsZXQgaT0hMTtpZih2b2lkIDAhPT1zKXtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKHNbdF0hPT1uKXtpPSEwO3NbdF09bn19ZWxzZXtpPSEwO3RoaXMuX3N0b3JhZ2Uuc2V0KHQsZSl9aSYmdGhpcy4jdSgpO2UgaW5zdGFuY2VvZiBuLkFubm90YXRpb25FZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQW5ub3RhdGlvbkVkaXRvciYmdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSl9aGFzKHQpe3JldHVybiB0aGlzLl9zdG9yYWdlLmhhcyh0KX1nZXRBbGwoKXtyZXR1cm4gdGhpcy5fc3RvcmFnZS5zaXplPjA/KDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLl9zdG9yYWdlKTpudWxsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2l6ZX0jdSgpe2lmKCF0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITE7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25SZXNldE1vZGlmaWVkJiZ0aGlzLm9uUmVzZXRNb2RpZmllZCgpfX1nZXQgcHJpbnQoKXtyZXR1cm4gbmV3IFByaW50QW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9Z2V0IHNlcmlhbGl6YWJsZSgpe2lmKDA9PT10aGlzLl9zdG9yYWdlLnNpemUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtlLHNdb2YgdGhpcy5fc3RvcmFnZSl7Y29uc3QgaT1zIGluc3RhbmNlb2Ygbi5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCk6cztpJiZ0LnNldChlLGkpfXJldHVybiB0fXN0YXRpYyBnZXRIYXNoKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IGU9bmV3IHIuTXVybXVySGFzaDNfNjQ7Zm9yKGNvbnN0W3MsaV1vZiB0KWUudXBkYXRlKGAke3N9OiR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7cmV0dXJuIGUuaGV4ZGlnZXN0KCl9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNwPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLiNwPXN0cnVjdHVyZWRDbG9uZSh0LnNlcmlhbGl6YWJsZSl9Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNwfX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpO2NsYXNzIEFubm90YXRpb25FZGl0b3J7I2c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I209dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNmPSExOyNiPSExOyNBPSExOyNfPUFubm90YXRpb25FZGl0b3IuX3pJbmRleCsrO3N0YXRpYyBfY29sb3JNYW5hZ2VyPW5ldyBpLkNvbG9yTWFuYWdlcjtzdGF0aWMgX3pJbmRleD0xO2NvbnN0cnVjdG9yKHQpe3RoaXMuY29uc3RydWN0b3I9PT1Bbm5vdGF0aW9uRWRpdG9yJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci4iKTt0aGlzLnBhcmVudD10LnBhcmVudDt0aGlzLmlkPXQuaWQ7dGhpcy53aWR0aD10aGlzLmhlaWdodD1udWxsO3RoaXMucGFnZUluZGV4PXQucGFyZW50LnBhZ2VJbmRleDt0aGlzLm5hbWU9dC5uYW1lO3RoaXMuZGl2PW51bGw7Y29uc3RbZSxzXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMueD10LngvZTt0aGlzLnk9dC55L3M7dGhpcy5yb3RhdGlvbj10aGlzLnBhcmVudC52aWV3cG9ydC5yb3RhdGlvbjt0aGlzLmlzQXR0YWNoZWRUb0RPTT0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zZXRJbkJhY2tncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9MH1zZXRJbkZvcmVncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9dGhpcy4jX31mb2N1c2luKHQpe3RoaXMuI2Y/dGhpcy4jZj0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2lmKCF0LnJlbGF0ZWRUYXJnZXQ/LmNsb3Nlc3QoYCMke3RoaXMuaWR9YCkpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLnBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9ufHx0aGlzLmNvbW1pdE9yUmVtb3ZlKCl9fWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy5pc0VtcHR5KCk/dGhpcy5yZW1vdmUoKTp0aGlzLmNvbW1pdCgpfWNvbW1pdCgpe3RoaXMucGFyZW50LmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9ZHJhZ3N0YXJ0KHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RhcnRYPXQuY2xpZW50WC1lLng7dGhpcy5zdGFydFk9dC5jbGllbnRZLWUueTt0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0aGlzLmlkKTt0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIn1zZXRBdCh0LGUscyxpKXtjb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7W3MsaV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihzLGkpO3RoaXMueD0odCtzKS9uO3RoaXMueT0oZStpKS9yO3RoaXMuZGl2LnN0eWxlLmxlZnQ9MTAwKnRoaXMueCsiJSI7dGhpcy5kaXYuc3R5bGUudG9wPTEwMCp0aGlzLnkrIiUifXRyYW5zbGF0ZSh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztbdCxlXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSk7dGhpcy54Kz10L3M7dGhpcy55Kz1lL2k7dGhpcy5kaXYuc3R5bGUubGVmdD0xMDAqdGhpcy54KyIlIjt0aGlzLmRpdi5zdHlsZS50b3A9MTAwKnRoaXMueSsiJSJ9c2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCxlKXtjb25zdHtyb3RhdGlvbjpzfT10aGlzLnBhcmVudC52aWV3cG9ydDtzd2l0Y2gocyl7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19c2V0RGltcyh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD0xMDAqdC9zKyIlIjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9MTAwKmUvaSsiJSJ9Zml4RGltcygpe2NvbnN0e3N0eWxlOnR9PXRoaXMuZGl2LHtoZWlnaHQ6ZSx3aWR0aDpzfT10LGk9cy5lbmRzV2l0aCgiJSIpLG49ZS5lbmRzV2l0aCgiJSIpO2lmKGkmJm4pcmV0dXJuO2NvbnN0W3IsYV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztpfHwodC53aWR0aD0xMDAqcGFyc2VGbG9hdChzKS9yKyIlIik7bnx8KHQuaGVpZ2h0PTEwMCpwYXJzZUZsb2F0KGUpL2ErIiUiKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bMCwwXX1yZW5kZXIoKXt0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImRhdGEtZWRpdG9yLXJvdGF0aW9uIiwoMzYwLXRoaXMucm90YXRpb24pJTM2MCk7dGhpcy5kaXYuY2xhc3NOYW1lPXRoaXMubmFtZTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmlkKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwwKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNtKTtjb25zdFt0LGVdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7dGhpcy50cmFuc2xhdGUodCxlKTsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKTtyZXR1cm4gdGhpcy5kaXZ9cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt0LmN0cmxLZXkmJiFlfHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXkmJmU/dGhpcy5wYXJlbnQudG9nZ2xlU2VsZWN0ZWQodGhpcyk6dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy4jZj0hMH19Z2V0UmVjdCh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxbbixyXT10aGlzLnBhcmVudC5wYWdlRGltZW5zaW9ucyxhPW4qdC9zLG89ciplL2ksbD10aGlzLngqbixjPXRoaXMueSpyLGg9dGhpcy53aWR0aCpuLGQ9dGhpcy5oZWlnaHQqcjtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltsK2Esci1jLW8tZCxsK2EraCxyLWMtb107Y2FzZSA5MDpyZXR1cm5bbCtvLHItYythLGwrbytkLHItYythK2hdO2Nhc2UgMTgwOnJldHVybltsLWEtaCxyLWMrbyxsLWEsci1jK28rZF07Y2FzZSAyNzA6cmV0dXJuW2wtby1kLHItYy1hLWgsbC1vLHItYy1hXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQsZSl7Y29uc3RbcyxpLG4scl09dCxhPW4tcyxvPXItaTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltzLGUtcixhLG9dO2Nhc2UgOTA6cmV0dXJuW3MsZS1pLG8sYV07Y2FzZSAxODA6cmV0dXJuW24sZS1pLGEsb107Y2FzZSAyNzA6cmV0dXJuW24sZS1yLG8sYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19b25jZUFkZGVkKCl7fWlzRW1wdHkoKXtyZXR1cm4hMX1lbmFibGVFZGl0TW9kZSgpe3RoaXMuI0E9ITB9ZGlzYWJsZUVkaXRNb2RlKCl7dGhpcy4jQT0hMX1pc0luRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy4jQX1zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpe3JldHVybiExfW5lZWRzVG9CZVJlYnVpbHQoKXtyZXR1cm4gdGhpcy5kaXYmJiF0aGlzLmlzQXR0YWNoZWRUb0RPTX1yZWJ1aWxkKCl7dGhpcy5kaXY/LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpfXNlcmlhbGl6ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKX0pO3Mucm90YXRpb249dC5yb3RhdGlvbjtjb25zdFtpLG5dPWUucGFnZURpbWVuc2lvbnMsW3IsYSxvLGxdPXMuZ2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LnJlY3Qsbik7cy54PXIvaTtzLnk9YS9uO3Mud2lkdGg9by9pO3MuaGVpZ2h0PWwvbjtyZXR1cm4gc31yZW1vdmUoKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiNnKTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy4jbSk7dGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCk7dGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpfXNlbGVjdCgpe3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIil9dXBkYXRlUGFyYW1zKHQsZSl7fWRpc2FibGVFZGl0aW5nKCl7fWVuYWJsZUVkaXRpbmcoKXt9Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybnt9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZGl2fWdldCBpc0VkaXRpbmcoKXtyZXR1cm4gdGhpcy4jYn1zZXQgaXNFZGl0aW5nKHQpe3RoaXMuI2I9dDtpZih0KXt0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKTt0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IodGhpcyl9ZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCl9fWUuQW5ub3RhdGlvbkVkaXRvcj1Bbm5vdGF0aW9uRWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMDtlLmJpbmRFdmVudHM9ZnVuY3Rpb24gYmluZEV2ZW50cyh0LGUscyl7Zm9yKGNvbnN0IGkgb2YgcyllLmFkZEV2ZW50TGlzdGVuZXIoaSx0W2ldLmJpbmQodCkpfTtlLm9wYWNpdHlUb0hleD1mdW5jdGlvbiBvcGFjaXR5VG9IZXgodCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMjU1LE1hdGgubWF4KDEsMjU1KnQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX07dmFyIGk9cygxKSxuPXMoNik7Y2xhc3MgSWRNYW5hZ2VyeyN2PTA7Z2V0SWQoKXtyZXR1cm5gJHtpLkFubm90YXRpb25FZGl0b3JQcmVmaXh9JHt0aGlzLiN2Kyt9YH19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I3k9W107I1M9ITE7I3g7I0U9LTE7Y29uc3RydWN0b3IodD0xMjgpe3RoaXMuI3g9dH1hZGQoe2NtZDp0LHVuZG86ZSxtdXN0RXhlYzpzLHR5cGU6aT1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpuPSExLGtlZXBVbmRvOnI9ITF9KXtzJiZ0KCk7aWYodGhpcy4jUylyZXR1cm47Y29uc3QgYT17Y21kOnQsdW5kbzplLHR5cGU6aX07aWYoLTE9PT10aGlzLiNFKXt0aGlzLiN5Lmxlbmd0aD4wJiYodGhpcy4jeS5sZW5ndGg9MCk7dGhpcy4jRT0wO3RoaXMuI3kucHVzaChhKTtyZXR1cm59aWYobiYmdGhpcy4jeVt0aGlzLiNFXS50eXBlPT09aSl7ciYmKGEudW5kbz10aGlzLiN5W3RoaXMuI0VdLnVuZG8pO3RoaXMuI3lbdGhpcy4jRV09YTtyZXR1cm59Y29uc3Qgbz10aGlzLiNFKzE7aWYobz09PXRoaXMuI3gpdGhpcy4jeS5zcGxpY2UoMCwxKTtlbHNle3RoaXMuI0U9bztvPHRoaXMuI3kubGVuZ3RoJiZ0aGlzLiN5LnNwbGljZShvKX10aGlzLiN5LnB1c2goYSl9dW5kbygpe2lmKC0xIT09dGhpcy4jRSl7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLnVuZG8oKTt0aGlzLiNTPSExO3RoaXMuI0UtPTF9fXJlZG8oKXtpZih0aGlzLiNFPHRoaXMuI3kubGVuZ3RoLTEpe3RoaXMuI0UrPTE7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLmNtZCgpO3RoaXMuI1M9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jRX1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jRTx0aGlzLiN5Lmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiN5PW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3QgZT1LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7Zm9yKGNvbnN0W3MsaV1vZiB0KWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IHM9dC5zdGFydHNXaXRoKCJtYWMrIik7aWYoZSYmcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQuc2xpY2UoNCksaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX1lbHNlIGlmKCFlJiYhcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQsaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX19fXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5wbGF0Zm9ybToiIjtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGxhdGZvcm0iLHtpc1dpbjp0LmluY2x1ZGVzKCJXaW4iKSxpc01hYzp0LmluY2x1ZGVzKCJNYWMiKX0pfSNDKHQpe3QuYWx0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJhbHQiKTt0LmN0cmxLZXkmJnRoaXMuYnVmZmVyLnB1c2goImN0cmwiKTt0Lm1ldGFLZXkmJnRoaXMuYnVmZmVyLnB1c2goIm1ldGEiKTt0LnNoaWZ0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJzaGlmdCIpO3RoaXMuYnVmZmVyLnB1c2godC5rZXkpO2NvbnN0IGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3RoaXMuYnVmZmVyLmxlbmd0aD0wO3JldHVybiBlfWV4ZWModCxlKXtpZighdGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpcmV0dXJuO2NvbnN0IHM9dGhpcy5jYWxsYmFja3MuZ2V0KHRoaXMuI0MoZSkpO2lmKHMpe3MuYmluZCh0KSgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19ZS5LZXlib2FyZE1hbmFnZXI9S2V5Ym9hcmRNYW5hZ2VyO2NsYXNzIENvbG9yTWFuYWdlcntzdGF0aWMgX2NvbG9yc01hcHBpbmc9bmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKTtnZXQgX2NvbG9ycygpe2NvbnN0IHQ9bmV3IE1hcChbWyJDYW52YXNUZXh0IixudWxsXSxbIkNhbnZhcyIsbnVsbF1dKTsoMCxuLmdldENvbG9yVmFsdWVzKSh0KTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbG9ycyIsdCl9Y29udmVydCh0KXtjb25zdCBlPSgwLG4uZ2V0UkdCKSh0KTtpZighd2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcylyZXR1cm4gZTtmb3IoY29uc3RbdCxzXW9mIHRoaXMuX2NvbG9ycylpZihzLmV2ZXJ5KCgodCxzKT0+dD09PWVbc10pKSlyZXR1cm4gQ29sb3JNYW5hZ2VyLl9jb2xvcnNNYXBwaW5nLmdldCh0KTtyZXR1cm4gZX1nZXRIZXhDb2RlKHQpe2NvbnN0IGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yKC4uLmUpOnR9fWUuQ29sb3JNYW5hZ2VyPUNvbG9yTWFuYWdlcjtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyeyNQPW51bGw7I1Q9bmV3IE1hcDsjdz1uZXcgTWFwOyNrPW5ldyBDb21tYW5kTWFuYWdlcjsjRj0wOyNNPW51bGw7I1I9bnVsbDsjRD1uZXcgSWRNYW5hZ2VyOyNJPSExOyNPPWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORTsjTD1uZXcgU2V0OyNOPXRoaXMuY29weS5iaW5kKHRoaXMpOyNCPXRoaXMuY3V0LmJpbmQodGhpcyk7I2o9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNVPXRoaXMua2V5ZG93bi5iaW5kKHRoaXMpOyNxPXRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcyk7I1c9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyNHPXtpc0VkaXRpbmc6ITEsaXNFbXB0eTohMCxoYXNTb21ldGhpbmdUb1VuZG86ITEsaGFzU29tZXRoaW5nVG9SZWRvOiExLGhhc1NlbGVjdGVkRWRpdG9yOiExfTsjSD1udWxsO3N0YXRpYyBfa2V5Ym9hcmRNYW5hZ2VyPW5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5zZWxlY3RBbGxdLFtbImN0cmwreiIsIm1hYyttZXRhK3oiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bmRvXSxbWyJjdHJsK3kiLCJjdHJsK3NoaWZ0K1oiLCJtYWMrbWV0YStzaGlmdCtaIl0sQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5kZWxldGVdLFtbIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bnNlbGVjdEFsbF1dKTtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuI0g9dDt0aGlzLiNSPWU7dGhpcy4jUi5fb24oImVkaXRpbmdhY3Rpb24iLHRoaXMuI3EpO3RoaXMuI1IuX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI1cpfWRlc3Ryb3koKXt0aGlzLiN6KCk7dGhpcy4jUi5fb2ZmKCJlZGl0aW5nYWN0aW9uIix0aGlzLiNxKTt0aGlzLiNSLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jVyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jdy52YWx1ZXMoKSl0LmRlc3Ryb3koKTt0aGlzLiN3LmNsZWFyKCk7dGhpcy4jVC5jbGVhcigpO3RoaXMuI1A9bnVsbDt0aGlzLiNMLmNsZWFyKCk7dGhpcy4jay5kZXN0cm95KCl9b25QYWdlQ2hhbmdpbmcoe3BhZ2VOdW1iZXI6dH0pe3RoaXMuI0Y9dC0xfWZvY3VzTWFpbkNvbnRhaW5lcigpe3RoaXMuI0guZm9jdXMoKX0jVigpe3RoaXMuI0guYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy4jVSl9I3ooKXt0aGlzLiNILnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI1UpfSNYKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jTik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0Iix0aGlzLiNCKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsdGhpcy4jail9IyQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5Iix0aGlzLiNOKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXQiLHRoaXMuI0IpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNqKX1jb3B5KHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNQJiZ0aGlzLiNQLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuI0wpdC5pc0VtcHR5KCl8fGUucHVzaCh0LnNlcmlhbGl6ZSgpKTswIT09ZS5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkoZSkpfWN1dCh0KXt0aGlzLmNvcHkodCk7dGhpcy5kZWxldGUoKX1wYXN0ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7bGV0IGU9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYoIWUpcmV0dXJuO3RyeXtlPUpTT04ucGFyc2UoZSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApO3JldHVybn1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47dGhpcy51bnNlbGVjdEFsbCgpO2NvbnN0IHM9dGhpcy4jdy5nZXQodGhpcy4jRik7dHJ5e2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1zLmRlc2VyaWFsaXplKGkpO2lmKCFlKXJldHVybjt0LnB1c2goZSl9Y29uc3QgY21kPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpO3RoaXMuI0sodCl9LHVuZG89KCk9Pntmb3IoY29uc3QgZSBvZiB0KWUucmVtb3ZlKCl9O3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpjbWQsdW5kbzp1bmRvLG11c3RFeGVjOiEwfSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApfX1rZXlkb3duKHQpe3RoaXMuZ2V0QWN0aXZlKCk/LnNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl8fEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9b25FZGl0aW5nQWN0aW9uKHQpe1sidW5kbyIsInJlZG8iLCJkZWxldGUiLCJzZWxlY3RBbGwiXS5pbmNsdWRlcyh0Lm5hbWUpJiZ0aGlzW3QubmFtZV0oKX0jSih0KXtPYmplY3QuZW50cmllcyh0KS5zb21lKCgoW3QsZV0pPT50aGlzLiNHW3RdIT09ZSkpJiZ0aGlzLiNSLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbih0aGlzLiNHLHQpfSl9I1EodCl7dGhpcy4jUi5kaXNwYXRjaCgiYW5ub3RhdGlvbmVkaXRvcnBhcmFtc2NoYW5nZWQiLHtzb3VyY2U6dGhpcyxkZXRhaWxzOnR9KX1zZXRFZGl0aW5nU3RhdGUodCl7aWYodCl7dGhpcy4jVigpO3RoaXMuI1goKTt0aGlzLiNKKHtpc0VkaXRpbmc6dGhpcy4jTyE9PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSxpc0VtcHR5OnRoaXMuI1ooKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jeigpO3RoaXMuIyQoKTt0aGlzLiNKKHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jTSl7dGhpcy4jTT10O2Zvcihjb25zdCB0IG9mIHRoaXMuI00pdGhpcy4jUSh0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpfX1nZXRJZCgpe3JldHVybiB0aGlzLiNELmdldElkKCl9YWRkTGF5ZXIodCl7dGhpcy4jdy5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jST90LmVuYWJsZSgpOnQuZGlzYWJsZSgpfXJlbW92ZUxheWVyKHQpe3RoaXMuI3cuZGVsZXRlKHQucGFnZUluZGV4KX11cGRhdGVNb2RlKHQpe3RoaXMuI089dDtpZih0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FKXt0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy4jdHQoKX1lbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNldCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI3cudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpfX11cGRhdGVUb29sYmFyKHQpe3QhPT10aGlzLiNPJiZ0aGlzLiNSLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI00pe2Zvcihjb25zdCBzIG9mIHRoaXMuI0wpcy51cGRhdGVQYXJhbXModCxlKTtmb3IoY29uc3QgcyBvZiB0aGlzLiNNKXMudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfX0jZXQoKXtpZighdGhpcy4jSSl7dGhpcy4jST0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiN3LnZhbHVlcygpKXQuZW5hYmxlKCl9fSN0dCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNJKXt0aGlzLiNJPSExO2Zvcihjb25zdCB0IG9mIHRoaXMuI3cudmFsdWVzKCkpdC5kaXNhYmxlKCl9fWdldEVkaXRvcnModCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0aGlzLiNULnZhbHVlcygpKXMucGFnZUluZGV4PT09dCYmZS5wdXNoKHMpO3JldHVybiBlfWdldEVkaXRvcih0KXtyZXR1cm4gdGhpcy4jVC5nZXQodCl9YWRkRWRpdG9yKHQpe3RoaXMuI1Quc2V0KHQuaWQsdCl9cmVtb3ZlRWRpdG9yKHQpe3RoaXMuI1QuZGVsZXRlKHQuaWQpO3RoaXMudW5zZWxlY3QodCl9I1kodCl7Y29uc3QgZT10aGlzLiN3LmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jUCE9PXQpe3RoaXMuI1A9dDt0JiZ0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKX19dG9nZ2xlU2VsZWN0ZWQodCl7aWYodGhpcy4jTC5oYXModCkpe3RoaXMuI0wuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfWVsc2V7dGhpcy4jTC5hZGQodCk7dC5zZWxlY3QoKTt0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjohMH0pfX1zZXRTZWxlY3RlZCh0KXtmb3IoY29uc3QgZSBvZiB0aGlzLiNMKWUhPT10JiZlLnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0wuYWRkKHQpO3Quc2VsZWN0KCk7dGhpcy4jUSh0LnByb3BlcnRpZXNUb1VwZGF0ZSk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNMLmhhcyh0KX11bnNlbGVjdCh0KXt0LnVuc2VsZWN0KCk7dGhpcy4jTC5kZWxldGUodCk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNMLnNpemV9dW5kbygpe3RoaXMuI2sudW5kbygpO3RoaXMuI0ooe2hhc1NvbWV0aGluZ1RvVW5kbzp0aGlzLiNrLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OnRoaXMuI1ooKX0pfXJlZG8oKXt0aGlzLiNrLnJlZG8oKTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOnRoaXMuI2suaGFzU29tZXRoaW5nVG9SZWRvKCksaXNFbXB0eTp0aGlzLiNaKCl9KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNrLmFkZCh0KTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jWigpfSl9I1ooKXtpZigwPT09dGhpcy4jVC5zaXplKXJldHVybiEwO2lmKDE9PT10aGlzLiNULnNpemUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jVC52YWx1ZXMoKSlyZXR1cm4gdC5pc0VtcHR5KCk7cmV0dXJuITF9ZGVsZXRlKCl7dGhpcy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgdD1bLi4udGhpcy4jTF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpfSxtdXN0RXhlYzohMH0pfWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy4jUD8uY29tbWl0T3JSZW1vdmUoKX0jSyh0KXt0aGlzLiNMLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdClpZighZS5pc0VtcHR5KCkpe3RoaXMuI0wuYWRkKGUpO2Uuc2VsZWN0KCl9dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNMKXQuY29tbWl0KCk7dGhpcy4jSyh0aGlzLiNULnZhbHVlcygpKX11bnNlbGVjdEFsbCgpe2lmKHRoaXMuI1ApdGhpcy4jUC5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PXRoaXMuI0wuc2l6ZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jTCl0LnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0ooe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fWlzQWN0aXZlKHQpe3JldHVybiB0aGlzLiNQPT09dH1nZXRBY3RpdmUoKXtyZXR1cm4gdGhpcy4jUH1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuI099fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhdFRpbWVyPWUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uPWUuUGl4ZWxzUGVySW5jaD1lLlBhZ2VWaWV3cG9ydD1lLlBERkRhdGVTdHJpbmc9ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1lLkRPTVNWR0ZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBzIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPXM7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChzLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6cyxjOmksZDpuLGU6cixmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpzLGM6aSxkOm4sZTpyLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIjIikscz10LmluZGV4T2YoIj8iKSxpPU1hdGgubWluKGU+MD9lOnQubGVuZ3RoLHM+MD9zOnQubGVuZ3RoKTtyZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIsaSkrMSxpKX07ZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0UGRmRmlsZW5hbWVGcm9tVXJsKHQsZT0iZG9jdW1lbnQucGRmIil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsbi53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgcz0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcj1zLmV4ZWMoaVsxXSl8fHMuZXhlYyhpWzJdKXx8cy5leGVjKGlbM10pO2lmKHIpe3I9clswXTtpZihyLmluY2x1ZGVzKCIlIikpdHJ5e3I9cy5leGVjKGRlY29kZVVSSUNvbXBvbmVudChyKSlbMF19Y2F0Y2godCl7fX1yZXR1cm4gcnx8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LHtzY2FsZTplPTEscm90YXRpb246cz0wfSl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6bn09dC5hdHRyaWJ1dGVzLnN0eWxlLHI9WzAsMCxwYXJzZUludChpKSxwYXJzZUludChuKV07cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6cixzY2FsZTplLHJvdGF0aW9uOnN9KX07ZS5pc0RhdGFTY2hlbWU9aXNEYXRhU2NoZW1lO2UuaXNQZGZGaWxlPWZ1bmN0aW9uIGlzUGRmRmlsZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9cLnBkZiQvaS50ZXN0KHQpfTtlLmlzVmFsaWRGZXRjaFVybD1pc1ZhbGlkRmV0Y2hVcmw7ZS5sb2FkU2NyaXB0PWZ1bmN0aW9uIGxvYWRTY3JpcHQodCxlPSExKXtyZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz10O24ub25sb2FkPWZ1bmN0aW9uKHQpe2UmJm4ucmVtb3ZlKCk7cyh0KX07bi5vbmVycm9yPWZ1bmN0aW9uKCl7aShuZXcgRXJyb3IoYENhbm5vdCBsb2FkIHNjcmlwdCBhdDogJHtuLnNyY31gKSl9Oyhkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZChuKX0pKX07dmFyIGk9cyg3KSxuPXMoMSk7ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO2NsYXNzIFBpeGVsc1BlckluY2h7c3RhdGljIENTUz05NjtzdGF0aWMgUERGPTcyO3N0YXRpYyBQREZfVE9fQ1NTX1VOSVRTPXRoaXMuQ1NTL3RoaXMuUERGfWUuUGl4ZWxzUGVySW5jaD1QaXhlbHNQZXJJbmNoO2NsYXNzIERPTUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e2NvbnN0cnVjdG9yKHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09e30pe3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPXQ7cy5oZWlnaHQ9ZTtyZXR1cm4gc319ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQsZT0hMSl7aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IHM9YXdhaXQgZmV0Y2godCk7aWYoIXMub2spdGhyb3cgbmV3IEVycm9yKHMuc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgcy5hcnJheUJ1ZmZlcigpKTooMCxuLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IHMudGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKCJHRVQiLHQsITApO2UmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHIucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXIuc3RhdHVzfHwwPT09ci5zdGF0dXMpe2xldCB0O2UmJnIucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShyLnJlc3BvbnNlKTohZSYmci5yZXNwb25zZVRleHQmJih0PSgwLG4uc3RyaW5nVG9CeXRlcykoci5yZXNwb25zZVRleHQpKTtpZih0KXtzKHQpO3JldHVybn19aShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9fTtyLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3Ioe3ZpZXdCb3g6dCxzY2FsZTplLHJvdGF0aW9uOnMsb2Zmc2V0WDppPTAsb2Zmc2V0WTpuPTAsZG9udEZsaXA6cj0hMX0pe3RoaXMudmlld0JveD10O3RoaXMuc2NhbGU9ZTt0aGlzLnJvdGF0aW9uPXM7dGhpcy5vZmZzZXRYPWk7dGhpcy5vZmZzZXRZPW47Y29uc3QgYT0odFsyXSt0WzBdKS8yLG89KHRbM10rdFsxXSkvMjtsZXQgbCxjLGgsZCx1LHAsZyxtOyhzJT0zNjApPDAmJihzKz0zNjApO3N3aXRjaChzKXtjYXNlIDE4MDpsPS0xO2M9MDtoPTA7ZD0xO2JyZWFrO2Nhc2UgOTA6bD0wO2M9MTtoPTE7ZD0wO2JyZWFrO2Nhc2UgMjcwOmw9MDtjPS0xO2g9LTE7ZD0wO2JyZWFrO2Nhc2UgMDpsPTE7Yz0wO2g9MDtkPS0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLiIpfWlmKHIpe2g9LWg7ZD0tZH1pZigwPT09bCl7dT1NYXRoLmFicyhvLXRbMV0pKmUraTtwPU1hdGguYWJzKGEtdFswXSkqZStuO2c9TWF0aC5hYnModFszXS10WzFdKSplO209TWF0aC5hYnModFsyXS10WzBdKSplfWVsc2V7dT1NYXRoLmFicyhhLXRbMF0pKmUraTtwPU1hdGguYWJzKG8tdFsxXSkqZStuO2c9TWF0aC5hYnModFsyXS10WzBdKSplO209TWF0aC5hYnModFszXS10WzFdKSplfXRoaXMudHJhbnNmb3JtPVtsKmUsYyplLGgqZSxkKmUsdS1sKmUqYS1oKmUqbyxwLWMqZSphLWQqZSpvXTt0aGlzLndpZHRoPWc7dGhpcy5oZWlnaHQ9bX1jbG9uZSh7c2NhbGU6dD10aGlzLnNjYWxlLHJvdGF0aW9uOmU9dGhpcy5yb3RhdGlvbixvZmZzZXRYOnM9dGhpcy5vZmZzZXRYLG9mZnNldFk6aT10aGlzLm9mZnNldFksZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlld0JveC5zbGljZSgpLHNjYWxlOnQscm90YXRpb246ZSxvZmZzZXRYOnMsb2Zmc2V0WTppLGRvbnRGbGlwOm59KX1jb252ZXJ0VG9WaWV3cG9ydFBvaW50KHQsZSl7cmV0dXJuIG4uVXRpbC5hcHBseVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9Y29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUodCl7Y29uc3QgZT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFsxXV0sdGhpcy50cmFuc2Zvcm0pLHM9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbM11dLHRoaXMudHJhbnNmb3JtKTtyZXR1cm5bZVswXSxlWzFdLHNbMF0sc1sxXV19Y29udmVydFRvUGRmUG9pbnQodCxlKXtyZXR1cm4gbi5VdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9fWUuUGFnZVZpZXdwb3J0PVBhZ2VWaWV3cG9ydDtjbGFzcyBSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24gZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLnR5cGU9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGUmJiIiPT09dFtzXS50cmltKCk7KXMrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocyxzKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFydGVkPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy50aW1lcz1bXX10aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxuLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxuLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy50aW1lcyl7Y29uc3Qgcz10Lm5hbWU7cy5sZW5ndGg+ZSYmKGU9cy5sZW5ndGgpfWZvcihjb25zdCBzIG9mIHRoaXMudGltZXMpe2NvbnN0IGk9cy5lbmQtcy5zdGFydDt0LnB1c2goYCR7cy5uYW1lLnBhZEVuZChlKX0gJHtpfW1zXG5gKX1yZXR1cm4gdC5qb2luKCIiKX19O2Z1bmN0aW9uIGlzVmFsaWRGZXRjaFVybCh0LGUpe3RyeXtjb25zdHtwcm90b2NvbDpzfT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1zfHwiaHR0cHM6Ij09PXN9Y2F0Y2godCl7cmV0dXJuITF9fWxldCByO2UuUERGRGF0ZVN0cmluZz1jbGFzcyBQREZEYXRlU3RyaW5ne3N0YXRpYyB0b0RhdGVPYmplY3QodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtyfHwocj1uZXcgUmVnRXhwKCJeRDooXFxkezR9KShcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhbWnwrfC1dKT8oXFxkezJ9KT8nPyhcXGR7Mn0pPyc/IikpO2NvbnN0IGU9ci5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9cGFyc2VJbnQoZVsxXSwxMCk7bGV0IGk9cGFyc2VJbnQoZVsyXSwxMCk7aT1pPj0xJiZpPD0xMj9pLTE6MDtsZXQgbj1wYXJzZUludChlWzNdLDEwKTtuPW4+PTEmJm48PTMxP246MTtsZXQgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDtsZXQgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDtsZXQgbD1wYXJzZUludChlWzZdLDEwKTtsPWw+PTAmJmw8PTU5P2w6MDtjb25zdCBjPWVbN118fCJaIjtsZXQgaD1wYXJzZUludChlWzhdLDEwKTtoPWg+PTAmJmg8PTIzP2g6MDtsZXQgZD1wYXJzZUludChlWzldLDEwKXx8MDtkPWQ+PTAmJmQ8PTU5P2Q6MDtpZigiLSI9PT1jKXthKz1oO28rPWR9ZWxzZSBpZigiKyI9PT1jKXthLT1oO28tPWR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHMsaSxuLGEsbyxsKSl9fTtmdW5jdGlvbiBnZXRSR0IodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe2NvbnN0IGU9cGFyc2VJbnQodC5zbGljZSgxKSwxNik7cmV0dXJuWygxNjcxMTY4MCZlKT4+MTYsKDY1MjgwJmUpPj44LDI1NSZlXX1pZih0LnN0YXJ0c1dpdGgoInJnYigiKSlyZXR1cm4gdC5zbGljZSg0LC0xKS5zcGxpdCgiLCIpLm1hcCgodD0+cGFyc2VJbnQodCkpKTtpZih0LnN0YXJ0c1dpdGgoInJnYmEoIikpcmV0dXJuIHQuc2xpY2UoNSwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSkuc2xpY2UoMCwzKTsoMCxuLndhcm4pKGBOb3QgYSB2YWxpZCBjb2xvciBmb3JtYXQ6ICIke3R9ImApO3JldHVyblswLDAsMF19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuQmFzZVNWR0ZhY3Rvcnk9ZS5CYXNlQ2FudmFzRmFjdG9yeT1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7dmFyIGk9cygxKTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgcz10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOnMsY29udGV4dDpzLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxzKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fHM8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9c31kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbCxpc0NvbXByZXNzZWQ6ZT0hMX0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ01hcFJlYWRlckZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlQ01hcFJlYWRlckZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXQ7dGhpcy5pc0NvbXByZXNzZWQ9ZX1hc3luYyBmZXRjaCh7bmFtZTp0fSl7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDTWFwICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAiY01hcFVybCIgYW5kICJjTWFwUGFja2VkIiBBUEkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuJyk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDTWFwIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3QgZT10aGlzLmJhc2VVcmwrdCsodGhpcy5pc0NvbXByZXNzZWQ/Ii5iY21hcCI6IiIpLHM9dGhpcy5pc0NvbXByZXNzZWQ/aS5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWTppLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUscykuY2F0Y2goKHQ9Pnt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkICR7dGhpcy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIifUNNYXAgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQsZSl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT1CYXNlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbH0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXR9YXN5bmMgZmV0Y2goe2ZpbGVuYW1lOnR9KXtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJzdGFuZGFyZEZvbnREYXRhVXJsIiBBUEkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiRm9udCBmaWxlbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBlPWAke3RoaXMuYmFzZVVybH0ke3R9YDtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUpLmNhdGNoKCh0PT57dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmb250IGRhdGEgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9mZXRjaERhdGFgIGNhbGxlZC4iKX19ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9QmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIEJhc2VTVkdGYWN0b3J5e2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTVkdGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9Y3JlYXRlKHQsZSxzPSExKXtpZih0PD0wfHxlPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZGltZW5zaW9ucyIpO2NvbnN0IGk9dGhpcy5fY3JlYXRlU1ZHKCJzdmc6c3ZnIik7aS5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKTtpZighcyl7aS5zZXRBdHRyaWJ1dGUoIndpZHRoIixgJHt0fXB4YCk7aS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYCR7ZX1weGApfWkuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwibm9uZSIpO2kuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixgMCAwICR7dH0gJHtlfWApO3JldHVybiBpfWNyZWF0ZUVsZW1lbnQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX1fY3JlYXRlU1ZHKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19ZS5CYXNlU1ZHRmFjdG9yeT1CYXNlU1ZHRmFjdG9yeX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgaT1zKDEpO2NvbnN0IG49MzI4NTM3NzUyMCxyPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6bjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om59dXBkYXRlKHQpe2xldCBlLHM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO3M9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGkpO2lmKG48PTI1NSllW3MrK109bjtlbHNle2VbcysrXT1uPj4+ODtlW3MrK109MjU1Jm59fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO3M9ZS5ieXRlTGVuZ3RofWNvbnN0IG49cz4+MixvPXMtNCpuLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsbik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcsbT0xMTYwMSxmPTEzNzE1O2ZvcihsZXQgdD0wO3Q8bjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmcnxjKm0mYTtjPWM8PDE1fGM+Pj4xNztjPWMqZyZyfGMqZiZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZyfGgqbSZhO2g9aDw8MTV8aD4+PjE3O2g9aCpnJnJ8aCpmJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpuKzJdPDwxNjtjYXNlIDI6Y149ZVs0Km4rMV08PDg7Y2FzZSAxOmNePWVbNCpuXTtjPWMqcCZyfGMqbSZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypnJnJ8YypmJmE7MSZuP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnJ8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnJ8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnJ8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnJ8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTtjb25zdCBzPSh0Pj4+MCkudG9TdHJpbmcoMTYpLGk9KGU+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIHMucGFkU3RhcnQoOCwiMCIpK2kucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Gb250TG9hZGVyPWUuRm9udEZhY2VPYmplY3Q9dm9pZCAwO3ZhciBpPXMoMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7Y29uc3RydWN0b3Ioe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnQsc3R5bGVFbGVtZW50OnM9bnVsbH0pe3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1bXTt0aGlzLnN0eWxlRWxlbWVudD1udWxsO3RoaXMubG9hZGluZ1JlcXVlc3RzPVtdO3RoaXMubG9hZFRlc3RGb250SWQ9MH1hZGROYXRpdmVGb250RmFjZSh0KXt0aGlzLm5hdGl2ZUZvbnRGYWNlcy5wdXNoKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmFkZCh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmxlbmd0aD0wO2lmKHRoaXMuc3R5bGVFbGVtZW50KXt0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTt0aGlzLnN0eWxlRWxlbWVudD1udWxsfX1hc3luYyBiaW5kKHQpe2lmKHQuYXR0YWNoZWR8fHQubWlzc2luZ0ZpbGUpcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChzKXt0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOmkuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZE5hdGl2ZX0pOygwLGkud2FybikoYEZhaWxlZCB0byBsb2FkIGZvbnQgJyR7ZS5mYW1pbHl9JzogJyR7c30nLmApO3QuZGlzYWJsZUZvbnRGYWNlPSEwO3Rocm93IHN9fXJldHVybn1jb25zdCBlPXQuY3JlYXRlRm9udEZhY2VSdWxlKCk7aWYoZSl7dGhpcy5pbnNlcnRSdWxlKGUpO2lmKHRoaXMuaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKChlPT57Y29uc3Qgcz10aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTt0aGlzLl9wcmVwYXJlRm9udExvYWRFdmVudCh0LHMpfSkpfX1nZXQgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCgpe2NvbnN0IHQ9ISF0aGlzLl9kb2N1bWVudD8uZm9udHM7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLHQpfWdldCBpc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCgpe2xldCB0PSExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yKXQ9ITA7ZWxzZXsvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk/LlsxXT49MTQmJih0PSEwKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfV9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KXtjb25zdHtsb2FkaW5nUmVxdWVzdHM6ZX09dGhpcyxzPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlUmVxdWVzdCgpeygwLGkuYXNzZXJ0KSghcy5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3MuZG9uZT0hMDtmb3IoO2UubGVuZ3RoPjAmJmVbMF0uZG9uZTspe2NvbnN0IHQ9ZS5zaGlmdCgpO3NldFRpbWVvdXQodC5jYWxsYmFjaywwKX19LGNhbGxiYWNrOnR9O2UucHVzaChzKTtyZXR1cm4gc31nZXQgX2xvYWRUZXN0Rm9udCgpe2NvbnN0IHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9X3ByZXBhcmVGb250TG9hZEV2ZW50KHQsZSl7ZnVuY3Rpb24gaW50MzIodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpPDwyNHx0LmNoYXJDb2RlQXQoZSsxKTw8MTZ8dC5jaGFyQ29kZUF0KGUrMik8PDh8MjU1JnQuY2hhckNvZGVBdChlKzMpfWZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LGUscyxpKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStpK3Quc3Vic3RyaW5nKGUrcyl9bGV0IHMsbjtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Iud2lkdGg9MTtyLmhlaWdodD0xO2NvbnN0IGE9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBvPTA7Y29uc3QgbD1gbHQke0RhdGUubm93KCl9JHt0aGlzLmxvYWRUZXN0Rm9udElkKyt9YDtsZXQgYz10aGlzLl9sb2FkVGVzdEZvbnQ7Yz1zcGxpY2VTdHJpbmcoYyw5NzYsbC5sZW5ndGgsbCk7Y29uc3QgaD0xNDgyMTg0NzkyO2xldCBkPWludDMyKGMsMTYpO2ZvcihzPTAsbj1sLmxlbmd0aC0zO3M8bjtzKz00KWQ9ZC1oK2ludDMyKGwscyl8MDtzPGwubGVuZ3RoJiYoZD1kLWgraW50MzIobCsiWFhYIixzKXwwKTtjPXNwbGljZVN0cmluZyhjLDE2LDQsKDAsaS5zdHJpbmczMikoZCkpO2NvbnN0IHU9YEBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiIke2x9IjtzcmM6JHtgdXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsJHtidG9hKGMpfSk7YH19YDt0aGlzLmluc2VydFJ1bGUodSk7Y29uc3QgcD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7cC5zdHlsZS53aWR0aD1wLnN0eWxlLmhlaWdodD0iMTBweCI7cC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Auc3R5bGUudG9wPXAuc3R5bGUubGVmdD0iMHB4Ijtmb3IoY29uc3QgZSBvZlt0LmxvYWRlZE5hbWUsbF0pe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9IkhpIjt0LnN0eWxlLmZvbnRGYW1pbHk9ZTtwLmFwcGVuZCh0KX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTshZnVuY3Rpb24gaXNGb250UmVhZHkodCxlKXtpZigrK28+MzApeygwLGkud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKTtlKCk7cmV0dXJufWEuZm9udD0iMzBweCAiK3Q7YS5maWxsVGV4dCgiLiIsMCwyMCk7YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXT4wP2UoKTpzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCx0LGUpKX0obCwoKCk9PntwLnJlbW92ZSgpO2UuY29tcGxldGUoKX0pKX19O2UuRm9udEZhY2VPYmplY3Q9Y2xhc3MgRm9udEZhY2VPYmplY3R7Y29uc3RydWN0b3IodCx7aXNFdmFsU3VwcG9ydGVkOmU9ITAsZGlzYWJsZUZvbnRGYWNlOnM9ITEsaWdub3JlRXJyb3JzOmk9ITEsb25VbnN1cHBvcnRlZEZlYXR1cmU6bixmb250UmVnaXN0cnk6cj1udWxsfSl7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHQpdGhpc1tlXT10W2VdO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09ZTt0aGlzLmRpc2FibGVGb250RmFjZT0hMD09PXM7dGhpcy5pZ25vcmVFcnJvcnM9ITA9PT1pO3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPW47dGhpcy5mb250UmVnaXN0cnk9cn1jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5mb250UmVnaXN0cnk/LnJlZ2lzdGVyRm9udCh0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBzO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7cz1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBzPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuZm9udFJlZ2lzdHJ5Py5yZWdpc3RlckZvbnQodGhpcyxlKTtyZXR1cm4gc31nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgczt0cnl7cz10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDppLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEdldFBhdGh9KTsoMCxpLndhcm4pKGBnZXRQYXRoR2VuZXJhdG9yIC0gaWdub3JpbmcgY2hhcmFjdGVyOiAiJHt0fSIuYCk7cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXt9fWlmKHRoaXMuaXNFdmFsU3VwcG9ydGVkJiZpLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBzPXZvaWQgMCE9PWUuYXJncz9lLmFyZ3Muam9pbigiLCIpOiIiO3QucHVzaCgiYy4iLGUuY21kLCIoIixzLCIpO1xuIil9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09bmV3IEZ1bmN0aW9uKCJjIiwic2l6ZSIsdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgaSBvZiBzKXsic2NhbGUiPT09aS5jbWQmJihpLmFyZ3M9W2UsLWVdKTt0W2kuY21kXS5hcHBseSh0LGkuYXJncyl9fX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpLHI9cygxMSksYT1zKDEzKSxvPXMoMTIpO2NvbnN0IGw9NDA5NixjPW8uaXNOb2RlSlMmJiJ1bmRlZmluZWQiPT10eXBlb2YgUGF0aDJEPy0xOjFlMyxoPTE2O2NsYXNzIENhY2hlZENhbnZhc2Vze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FudmFzRmFjdG9yeT10O3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRDYW52YXModCxlLHMpe2xldCBpO2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVbdF0pe2k9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkucmVzZXQoaSxlLHMpfWVsc2V7aT10aGlzLmNhbnZhc0ZhY3RvcnkuY3JlYXRlKGUscyk7dGhpcy5jYWNoZVt0XT1pfXJldHVybiBpfWRlbGV0ZSh0KXtkZWxldGUgdGhpcy5jYWNoZVt0XX1jbGVhcigpe2Zvcihjb25zdCB0IGluIHRoaXMuY2FjaGUpe2NvbnN0IGU9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkuZGVzdHJveShlKTtkZWxldGUgdGhpcy5jYWNoZVt0XX19fWZ1bmN0aW9uIGRyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh0LGUscyxpLHIsYSxvLGwsYyxoKXtjb25zdFtkLHUscCxnLG0sZl09KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtpZigwPT09dSYmMD09PXApe2NvbnN0IG49bypkK20sYj1NYXRoLnJvdW5kKG4pLEE9bCpnK2YsXz1NYXRoLnJvdW5kKEEpLHY9KG8rYykqZCttLHk9TWF0aC5hYnMoTWF0aC5yb3VuZCh2KS1iKXx8MSxTPShsK2gpKmcrZix4PU1hdGguYWJzKE1hdGgucm91bmQoUyktXyl8fDE7dC5zZXRUcmFuc2Zvcm0oTWF0aC5zaWduKGQpLDAsMCxNYXRoLnNpZ24oZyksYixfKTt0LmRyYXdJbWFnZShlLHMsaSxyLGEsMCwwLHkseCk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZyxtLGYpO3JldHVyblt5LHhdfWlmKDA9PT1kJiYwPT09Zyl7Y29uc3Qgbj1sKnArbSxiPU1hdGgucm91bmQobiksQT1vKnUrZixfPU1hdGgucm91bmQoQSksdj0obCtoKSpwK20seT1NYXRoLmFicyhNYXRoLnJvdW5kKHYpLWIpfHwxLFM9KG8rYykqdStmLHg9TWF0aC5hYnMoTWF0aC5yb3VuZChTKS1fKXx8MTt0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbih1KSxNYXRoLnNpZ24ocCksMCxiLF8pO3QuZHJhd0ltYWdlKGUscyxpLHIsYSwwLDAseCx5KTt0LnNldFRyYW5zZm9ybShkLHUscCxnLG0sZik7cmV0dXJuW3gseV19dC5kcmF3SW1hZ2UoZSxzLGkscixhLG8sbCxjLGgpO3JldHVybltNYXRoLmh5cG90KGQsdSkqYyxNYXRoLmh5cG90KHAsZykqaF19Y2xhc3MgQ2FudmFzRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYWxwaGFJc1NoYXBlPSExO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmZvbnRNYXRyaXg9aS5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLmxlYWRpbmc9MDt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPSIjMDAwMDAwIjt0aGlzLnN0cm9rZUNvbG9yPSIjMDAwMDAwIjt0aGlzLnBhdHRlcm5GaWxsPSExO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5hY3RpdmVTTWFzaz1udWxsO3RoaXMudHJhbnNmZXJNYXBzPW51bGw7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLHMpe1tlLHNdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblkscyk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHMpfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBzPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLG49aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxzWzBdLG5bMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksc1sxXSxuWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHNbMF0sblswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxzWzFdLG5bMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLHMsbixyLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLG4scixhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe2NvbnN0IHM9W3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV07aWYodD09PXIuUGF0aFR5cGUuU1RST0tFKXtlfHwoMCxpLnVucmVhY2hhYmxlKSgiU3Ryb2tlIGJvdW5kaW5nIGJveCBtdXN0IGluY2x1ZGUgdHJhbnNmb3JtLiIpO2NvbnN0IHQ9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG49dFswXSp0aGlzLmxpbmVXaWR0aC8yLHI9dFsxXSp0aGlzLmxpbmVXaWR0aC8yO3NbMF0tPW47c1sxXS09cjtzWzJdKz1uO3NbM10rPXJ9cmV0dXJuIHN9dXBkYXRlQ2xpcEZyb21QYXRoKCl7Y29uc3QgdD1pLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godHx8WzAsMCwwLDBdKX1pc0VtcHR5Q2xpcCgpe3JldHVybiB0aGlzLm1pblg9PT0xLzB9c3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KXt0aGlzLmNsaXBCb3g9dDt0aGlzLm1pblg9MS8wO3RoaXMubWluWT0xLzA7dGhpcy5tYXhYPTA7dGhpcy5tYXhZPTB9Z2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe3JldHVybiBpLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCh0LGUpKX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsZSxzPW51bGwpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXt0LnB1dEltYWdlRGF0YShlLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQscj1lLndpZHRoLGE9biVoLG89KG4tYSkvaCxsPTA9PT1hP286bysxLGM9dC5jcmVhdGVJbWFnZURhdGEocixoKTtsZXQgZCx1PTA7Y29uc3QgcD1lLmRhdGEsZz1jLmRhdGE7bGV0IG0sZixiLEEsXyx2LHksUztpZihzKXN3aXRjaChzLmxlbmd0aCl7Y2FzZSAxOl89c1swXTt2PXNbMF07eT1zWzBdO1M9c1swXTticmVhaztjYXNlIDQ6Xz1zWzBdO3Y9c1sxXTt5PXNbMl07Uz1zWzNdfWlmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXAuYnl0ZUxlbmd0aCxzPW5ldyBVaW50MzJBcnJheShnLmJ1ZmZlciwwLGcuYnl0ZUxlbmd0aD4+Miksbj1zLmxlbmd0aCxBPXIrNz4+MztsZXQgXz00Mjk0OTY3Mjk1LHY9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtTJiYyNTU9PT1TWzBdJiYwPT09U1syNTVdJiYoW18sdl09W3YsX10pO2ZvcihtPTA7bTxsO20rKyl7Yj1tPG8/aDphO2Q9MDtmb3IoZj0wO2Y8YjtmKyspe2NvbnN0IHQ9ZS11O2xldCBpPTA7Y29uc3Qgbj10PkE/cjo4KnQtNyxhPS04Jm47bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD1wW3UrK107c1tkKytdPTEyOCZsP186djtzW2QrK109NjQmbD9fOnY7c1tkKytdPTMyJmw/Xzp2O3NbZCsrXT0xNiZsP186djtzW2QrK109OCZsP186djtzW2QrK109NCZsP186djtzW2QrK109MiZsP186djtzW2QrK109MSZsP186dn1mb3IoO2k8bjtpKyspe2lmKDA9PT1vKXtsPXBbdSsrXTtvPTEyOH1zW2QrK109bCZvP186djtvPj49MX19Zm9yKDtkPG47KXNbZCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxtKmgpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2NvbnN0IGU9ISEoX3x8dnx8eSk7Zj0wO0E9cipoKjQ7Zm9yKG09MDttPG87bSsrKXtnLnNldChwLnN1YmFycmF5KHUsdStBKSk7dSs9QTtpZihlKWZvcihsZXQgdD0wO3Q8QTt0Kz00KXtfJiYoZ1t0KzBdPV9bZ1t0KzBdXSk7diYmKGdbdCsxXT12W2dbdCsxXV0pO3kmJihnW3QrMl09eVtnW3QrMl1dKX10LnB1dEltYWdlRGF0YShjLDAsZik7Zis9aH1pZihtPGwpe0E9ciphKjQ7Zy5zZXQocC5zdWJhcnJheSh1LHUrQSkpO2lmKGUpZm9yKGxldCB0PTA7dDxBO3QrPTQpe18mJihnW3QrMF09X1tnW3QrMF1dKTt2JiYoZ1t0KzFdPXZbZ1t0KzFdXSk7eSYmKGdbdCsyXT15W2dbdCsyXV0pfXQucHV0SW1hZ2VEYXRhKGMsMCxmKX19ZWxzZXtpZihlLmtpbmQhPT1pLkltYWdlS2luZC5SR0JfMjRCUFApdGhyb3cgbmV3IEVycm9yKGBiYWQgaW1hZ2Uga2luZDogJHtlLmtpbmR9YCk7e2NvbnN0IGU9ISEoX3x8dnx8eSk7Yj1oO0E9cipiO2ZvcihtPTA7bTxsO20rKyl7aWYobT49byl7Yj1hO0E9cipifWQ9MDtmb3IoZj1BO2YtLTspe2dbZCsrXT1wW3UrK107Z1tkKytdPXBbdSsrXTtnW2QrK109cFt1KytdO2dbZCsrXT0yNTV9aWYoZSlmb3IobGV0IHQ9MDt0PGQ7dCs9NCl7XyYmKGdbdCswXT1fW2dbdCswXV0pO3YmJihnW3QrMV09dltnW3QrMV1dKTt5JiYoZ1t0KzJdPXlbZ1t0KzJdXSl9dC5wdXRJbWFnZURhdGEoYywwLG0qaCl9fX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IHM9ZS5oZWlnaHQsaT1lLndpZHRoLG49cyVoLHI9KHMtbikvaCxvPTA9PT1uP3I6cisxLGw9dC5jcmVhdGVJbWFnZURhdGEoaSxoKTtsZXQgYz0wO2NvbnN0IGQ9ZS5kYXRhLHU9bC5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHM9ZTxyP2g6bjsoe3NyY1BvczpjfT0oMCxhLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzpkLHNyY1BvczpjLGRlc3Q6dSx3aWR0aDppLGhlaWdodDpzfSkpO3QucHV0SW1hZ2VEYXRhKGwsMCxlKmgpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBzPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtmb3IoY29uc3QgaSBvZiBzKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQsZSl7dC5zdHJva2VTdHlsZT10LmZpbGxTdHlsZT1lfHwiIzAwMDAwMCI7dC5maWxsUnVsZT0ibm9uemVybyI7dC5nbG9iYWxBbHBoYT0xO3QubGluZVdpZHRoPTE7dC5saW5lQ2FwPSJidXR0Ijt0LmxpbmVKb2luPSJtaXRlciI7dC5taXRlckxpbWl0PTEwO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5mb250PSIxMHB4IHNhbnMtc2VyaWYiO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3Quc2V0TGluZURhc2goW10pO3QubGluZURhc2hPZmZzZXQ9MH19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQmFja2Ryb3AodCxlLHMsaSl7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IHI9MztyPG47cis9NCl7Y29uc3Qgbj10W3JdO2lmKDA9PT1uKXt0W3ItM109ZTt0W3ItMl09czt0W3ItMV09aX1lbHNlIGlmKG48MjU1KXtjb25zdCBhPTI1NS1uO3Rbci0zXT10W3ItM10qbitlKmE+Pjg7dFtyLTJdPXRbci0yXSpuK3MqYT4+ODt0W3ItMV09dFtyLTFdKm4raSphPj44fX19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQWxwaGEodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9cz9zW3Rbbl1dOnRbbl07ZVtuXT1lW25dKmkqLjAwMzkyMTU2ODYyNzQ1MDk4fDB9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9NzcqdFtuLTNdKzE1Mip0W24tMl0rMjgqdFtuLTFdO2Vbbl09cz9lW25dKnNbaT4+OF0+Pjg6ZVtuXSppPj4xNn19ZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsZSxzLGkpe2NvbnN0IG49aVswXSxyPWlbMV0sYT1pWzJdLW4sbz1pWzNdLXI7aWYoMCE9PWEmJjAhPT1vKXshZnVuY3Rpb24gZ2VuZXJpY0NvbXBvc2VTTWFzayh0LGUscyxpLG4scixhLG8sbCxjLGgpe2NvbnN0IGQ9ISFyLHU9ZD9yWzBdOjAscD1kP3JbMV06MCxnPWQ/clsyXTowO2xldCBtO209Ikx1bWlub3NpdHkiPT09bj9jb21wb3NlU01hc2tMdW1pbm9zaXR5OmNvbXBvc2VTTWFza0FscGhhO2NvbnN0IGY9TWF0aC5taW4oaSxNYXRoLmNlaWwoMTA0ODU3Ni9zKSk7Zm9yKGxldCBuPTA7bjxpO24rPWYpe2NvbnN0IHI9TWF0aC5taW4oZixpLW4pLGI9dC5nZXRJbWFnZURhdGEoby1jLG4rKGwtaCkscyxyKSxBPWUuZ2V0SW1hZ2VEYXRhKG8sbitsLHMscik7ZCYmY29tcG9zZVNNYXNrQmFja2Ryb3AoYi5kYXRhLHUscCxnKTttKGIuZGF0YSxBLmRhdGEsYSk7ZS5wdXRJbWFnZURhdGEoQSxvLG4rbCl9fShlLmNvbnRleHQscyxhLG8sZS5zdWJ0eXBlLGUuYmFja2Ryb3AsZS50cmFuc2Zlck1hcCxuLHIsZS5vZmZzZXRYLGUub2Zmc2V0WSk7dC5zYXZlKCk7dC5nbG9iYWxBbHBoYT0xO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3QuZHJhd0ltYWdlKHMuY2FudmFzLDAsMCk7dC5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdldEltYWdlU21vb3RoaW5nRW5hYmxlZCh0LGUpe2NvbnN0IHM9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpO3NbMF09TWF0aC5mcm91bmQoc1swXSk7c1sxXT1NYXRoLmZyb3VuZChzWzFdKTtjb25zdCByPU1hdGguZnJvdW5kKChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpKm4uUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKTtyZXR1cm4gdm9pZCAwIT09ZT9lOnNbMF08PXJ8fHNbMV08PXJ9Y29uc3QgZD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLHU9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxwPXt9LGc9e307Y2xhc3MgQ2FudmFzR3JhcGhpY3N7Y29uc3RydWN0b3IodCxlLHMsaSxuLHIsYSl7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1zO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPVtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPW47dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPXI7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMuYmFja2dyb3VuZENvbG9yPWE/LmJhY2tncm91bmR8fG51bGw7dGhpcy5mb3JlZ3JvdW5kQ29sb3I9YT8uZm9yZWdyb3VuZHx8bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXA9bmV3IE1hcH1nZXRPYmplY3QodCxlPW51bGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06dCx2aWV3cG9ydDplLHRyYW5zcGFyZW5jeTpzPSExLGJhY2tncm91bmQ6aT1udWxsfSl7Y29uc3Qgcj10aGlzLmN0eC5jYW52YXMud2lkdGgsYT10aGlzLmN0eC5jYW52YXMuaGVpZ2h0LG89aXx8IiNmZmZmZmYiO3RoaXMuY3R4LnNhdmUoKTtpZih0aGlzLmZvcmVncm91bmRDb2xvciYmdGhpcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmZvcmVncm91bmRDb2xvcjtjb25zdCB0PXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3I7Y29uc3QgZT10aGlzLmJhY2tncm91bmRDb2xvcj10aGlzLmN0eC5maWxsU3R5bGU7bGV0IHM9ITAsaT1vO3RoaXMuY3R4LmZpbGxTdHlsZT1vO2k9dGhpcy5jdHguZmlsbFN0eWxlO3M9InN0cmluZyI9PXR5cGVvZiBpJiYvXiNbMC05QS1GYS1mXXs2fSQvLnRlc3QoaSk7aWYoIiMwMDAwMDAiPT09dCYmIiNmZmZmZmYiPT09ZXx8dD09PWV8fCFzKXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7ZWxzZXtjb25zdFtzLHIsYV09KDAsbi5nZXRSR0IpKGkpLG5ld0NvbXA9dD0+KHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOigodCsuMDU1KS8xLjA1NSkqKjIuNCxvPU1hdGgucm91bmQoLjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKHIpKy4wNzIyKm5ld0NvbXAoYSkpO3RoaXMuc2VsZWN0Q29sb3I9KHMsaSxuKT0+e2NvbnN0IHI9LjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKGkpKy4wNzIyKm5ld0NvbXAobik7cmV0dXJuIE1hdGgucm91bmQocik9PT1vP2U6dH19fXRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8bzt0aGlzLmN0eC5maWxsUmVjdCgwLDAscixhKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYocyl7Y29uc3QgdD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLHIsYSk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHg7dGhpcy50cmFuc3BhcmVudENhbnZhcz10LmNhbnZhczt0aGlzLmN0eD10LmNvbnRleHQ7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY29tcG9zaXRlQ3R4KSl9dGhpcy5jdHguc2F2ZSgpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTtpZih0KXt0aGlzLmN0eC50cmFuc2Zvcm0oLi4udCk7dGhpcy5vdXRwdXRTY2FsZVg9dFswXTt0aGlzLm91dHB1dFNjYWxlWT10WzBdfXRoaXMuY3R4LnRyYW5zZm9ybSguLi5lLnRyYW5zZm9ybSk7dGhpcy52aWV3cG9ydFNjYWxlPWUuc2NhbGU7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpfWV4ZWN1dGVPcGVyYXRvckxpc3QodCxlLHMsbil7Y29uc3Qgcj10LmFyZ3NBcnJheSxhPXQuZm5BcnJheTtsZXQgbz1lfHwwO2NvbnN0IGw9ci5sZW5ndGg7aWYobD09PW8pcmV0dXJuIG87Y29uc3QgYz1sLW8+MTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLGg9Yz9EYXRlLm5vdygpKzE1OjA7bGV0IGQ9MDtjb25zdCB1PXRoaXMuY29tbW9uT2JqcyxwPXRoaXMub2JqcztsZXQgZztmb3IoOzspe2lmKHZvaWQgMCE9PW4mJm89PT1uLm5leHRCcmVha1BvaW50KXtuLmJyZWFrSXQobyxzKTtyZXR1cm4gb31nPWFbb107aWYoZyE9PWkuT1BTLmRlcGVuZGVuY3kpdGhpc1tnXS5hcHBseSh0aGlzLHJbb10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgcltvXSl7Y29uc3QgZT10LnN0YXJ0c1dpdGgoImdfIik/dTpwO2lmKCFlLmhhcyh0KSl7ZS5nZXQodCxzKTtyZXR1cm4gb319bysrO2lmKG89PT1sKXJldHVybiBvO2lmKGMmJisrZD4xMCl7aWYoRGF0ZS5ub3coKT5oKXtzKCk7cmV0dXJuIG99ZD0wfX19I3N0KCl7Zm9yKDt0aGlzLnN0YXRlU3RhY2subGVuZ3RofHx0aGlzLmluU01hc2tNb2RlOyl0aGlzLnJlc3RvcmUoKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYodGhpcy50cmFuc3BhcmVudENhbnZhcyl7dGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHg7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKTt0aGlzLmN0eC5yZXN0b3JlKCk7dGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsfX1lbmREcmF3aW5nKCl7dGhpcy4jc3QoKTt0aGlzLmNhY2hlZENhbnZhc2VzLmNsZWFyKCk7dGhpcy5jYWNoZWRQYXR0ZXJucy5jbGVhcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50JiYoZS53aWR0aD1lLmhlaWdodD0wKTt0LmNsZWFyKCl9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5jbGVhcigpfV9zY2FsZUltYWdlKHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQ7bGV0IG4scixhPU1hdGgubWF4KE1hdGguaHlwb3QoZVswXSxlWzFdKSwxKSxvPU1hdGgubWF4KE1hdGguaHlwb3QoZVsyXSxlWzNdKSwxKSxsPXMsYz1pLGg9InByZXNjYWxlMSI7Zm9yKDthPjImJmw+MXx8bz4yJiZjPjE7KXtsZXQgZT1sLHM9YztpZihhPjImJmw+MSl7ZT1NYXRoLmNlaWwobC8yKTthLz1sL2V9aWYobz4yJiZjPjEpe3M9TWF0aC5jZWlsKGMvMik7by89Yy9zfW49dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoaCxlLHMpO3I9bi5jb250ZXh0O3IuY2xlYXJSZWN0KDAsMCxlLHMpO3IuZHJhd0ltYWdlKHQsMCwwLGwsYywwLDAsZSxzKTt0PW4uY2FudmFzO2w9ZTtjPXM7aD0icHJlc2NhbGUxIj09PWg/InByZXNjYWxlMiI6InByZXNjYWxlMSJ9cmV0dXJue2ltZzp0LHBhaW50V2lkdGg6bCxwYWludEhlaWdodDpjfX1fY3JlYXRlTWFza0NhbnZhcyh0KXtjb25zdCBlPXRoaXMuY3R4LHt3aWR0aDpzLGhlaWdodDphfT10LG89dGhpcy5jdXJyZW50LmZpbGxDb2xvcixsPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7bGV0IGgsZCx1LHA7aWYoKHQuYml0bWFwfHx0LmRhdGEpJiZ0LmNvdW50PjEpe2NvbnN0IGU9dC5iaXRtYXB8fHQuZGF0YS5idWZmZXI7ZD1KU09OLnN0cmluZ2lmeShsP2M6W2Muc2xpY2UoMCw0KSxvXSk7aD10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldChlKTtpZighaCl7aD1uZXcgTWFwO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXAuc2V0KGUsaCl9Y29uc3Qgcz1oLmdldChkKTtpZihzJiYhbCl7cmV0dXJue2NhbnZhczpzLG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihjWzBdLGNbMl0pK2NbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLGNbM10pK2NbNV0pfX11PXN9aWYoIXUpe3A9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoIm1hc2tDYW52YXMiLHMsYSk7cHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCx0KX1sZXQgZz1pLlV0aWwudHJhbnNmb3JtKGMsWzEvcywwLDAsLTEvYSwwLDBdKTtnPWkuVXRpbC50cmFuc2Zvcm0oZyxbMSwwLDAsMSwwLC1hXSk7Y29uc3QgbT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sZyksZj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsYV0sZyksYj1pLlV0aWwubm9ybWFsaXplUmVjdChbbVswXSxtWzFdLGZbMF0sZlsxXV0pLEE9TWF0aC5yb3VuZChiWzJdLWJbMF0pfHwxLF89TWF0aC5yb3VuZChiWzNdLWJbMV0pfHwxLHY9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImZpbGxDYW52YXMiLEEsXykseT12LmNvbnRleHQsUz1NYXRoLm1pbihtWzBdLGZbMF0pLHg9TWF0aC5taW4obVsxXSxmWzFdKTt5LnRyYW5zbGF0ZSgtUywteCk7eS50cmFuc2Zvcm0oLi4uZyk7aWYoIXUpe3U9dGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKSh5KSk7dT11LmltZztoJiZsJiZoLnNldChkLHUpfXkuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh5LHUsMCwwLHUud2lkdGgsdS5oZWlnaHQsMCwwLHMsYSk7eS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7Y29uc3QgRT1pLlV0aWwudHJhbnNmb3JtKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHkpLFsxLDAsMCwxLC1TLC14XSk7eS5maWxsU3R5bGU9bD9vLmdldFBhdHRlcm4oZSx0aGlzLEUsci5QYXRoVHlwZS5GSUxMKTpvO3kuZmlsbFJlY3QoMCwwLHMsYSk7aWYoaCYmIWwpe3RoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIik7aC5zZXQoZCx2LmNhbnZhcyl9cmV0dXJue2NhbnZhczp2LmNhbnZhcyxvZmZzZXRYOk1hdGgucm91bmQoUyksb2Zmc2V0WTpNYXRoLnJvdW5kKHgpfX1zZXRMaW5lV2lkdGgodCl7dCE9PXRoaXMuY3VycmVudC5saW5lV2lkdGgmJih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwpO3RoaXMuY3VycmVudC5saW5lV2lkdGg9dDt0aGlzLmN0eC5saW5lV2lkdGg9dH1zZXRMaW5lQ2FwKHQpe3RoaXMuY3R4LmxpbmVDYXA9ZFt0XX1zZXRMaW5lSm9pbih0KXt0aGlzLmN0eC5saW5lSm9pbj11W3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdHgubWl0ZXJMaW1pdD10fXNldERhc2godCxlKXtjb25zdCBzPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXMuc2V0TGluZURhc2gpe3Muc2V0TGluZURhc2godCk7cy5saW5lRGFzaE9mZnNldD1lfX1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usc11vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChzKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAocyk7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihzKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQocyk7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goc1swXSxzWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChzKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKHMpO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJDQSI6dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhPXM7YnJlYWs7Y2FzZSJjYSI6dGhpcy5jdXJyZW50LmZpbGxBbHBoYT1zO3RoaXMuY3R4Lmdsb2JhbEFscGhhPXM7YnJlYWs7Y2FzZSJCTSI6dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXM7YnJlYWs7Y2FzZSJTTWFzayI6dGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPXM/dGhpcy50ZW1wU01hc2s6bnVsbDt0aGlzLnRlbXBTTWFzaz1udWxsO3RoaXMuY2hlY2tTTWFza1N0YXRlKCk7YnJlYWs7Y2FzZSJUUiI6dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz1zfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscz0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhzLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHI9dGhpcy5jdHg7ci5zZXRUcmFuc2Zvcm0oLi4uKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxyKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQscyl7ZS50cmFuc2xhdGUodCxzKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxzKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LHMpe2Uuc2NhbGUodCxzKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LHMpfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxzLGksbixyLGEpe2UudHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpe2Uuc2V0VHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQscyl7ZS5tb3ZlVG8odCxzKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxzKX07dC5saW5lVG89ZnVuY3Rpb24odCxzKXtlLmxpbmVUbyh0LHMpO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LHMpfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxzLGksbixyLGEpe2UuYmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSl9O3QucmVjdD1mdW5jdGlvbih0LHMsaSxuKXtlLnJlY3QodCxzLGksbik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LHMsaSxuKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShyLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfX10cmFuc2Zvcm0odCxlLHMsaSxuLHIpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscyxpLG4scik7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH1jb25zdHJ1Y3RQYXRoKHQsZSxzKXtjb25zdCByPXRoaXMuY3R4LGE9dGhpcy5jdXJyZW50O2xldCBvLGwsYz1hLngsaD1hLnk7Y29uc3QgZD0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHIpLHU9MD09PWRbMF0mJjA9PT1kWzNdfHwwPT09ZFsxXSYmMD09PWRbMl0scD11P3Muc2xpY2UoMCk6bnVsbDtmb3IobGV0IHM9MCxuPTAsZz10Lmxlbmd0aDtzPGc7cysrKXN3aXRjaCgwfHRbc10pe2Nhc2UgaS5PUFMucmVjdGFuZ2xlOmM9ZVtuKytdO2g9ZVtuKytdO2NvbnN0IHQ9ZVtuKytdLHM9ZVtuKytdLGc9Yyt0LG09aCtzO3IubW92ZVRvKGMsaCk7aWYoMD09PXR8fDA9PT1zKXIubGluZVRvKGcsbSk7ZWxzZXtyLmxpbmVUbyhnLGgpO3IubGluZVRvKGcsbSk7ci5saW5lVG8oYyxtKX11fHxhLnVwZGF0ZVJlY3RNaW5NYXgoZCxbYyxoLGcsbV0pO3IuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBpLk9QUy5tb3ZlVG86Yz1lW24rK107aD1lW24rK107ci5tb3ZlVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMubGluZVRvOmM9ZVtuKytdO2g9ZVtuKytdO3IubGluZVRvKGMsaCk7dXx8YS51cGRhdGVQYXRoTWluTWF4KGQsYyxoKTticmVhaztjYXNlIGkuT1BTLmN1cnZlVG86bz1jO2w9aDtjPWVbbis0XTtoPWVbbis1XTtyLmJlemllckN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10sYyxoLHApO24rPTY7YnJlYWs7Y2FzZSBpLk9QUy5jdXJ2ZVRvMjpvPWM7bD1oO3IuYmV6aWVyQ3VydmVUbyhjLGgsZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsYyxoLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10scCk7Yz1lW24rMl07aD1lW24rM107bis9NDticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8zOm89YztsPWg7Yz1lW24rMl07aD1lW24rM107ci5iZXppZXJDdXJ2ZVRvKGVbbl0sZVtuKzFdLGMsaCxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGMsaCxjLGgscCk7bis9NDticmVhaztjYXNlIGkuT1BTLmNsb3NlUGF0aDpyLmNsb3NlUGF0aCgpfXUmJmEudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoZCxwKTthLnNldEN1cnJlbnRQb2ludChjLGgpfWNsb3NlUGF0aCgpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfXN0cm9rZSh0KXt0PXZvaWQgMD09PXR8fHQ7Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKWlmKCJvYmplY3QiPT10eXBlb2YgcyYmcz8uZ2V0UGF0dGVybil7ZS5zYXZlKCk7ZS5zdHJva2VTdHlsZT1zLmdldFBhdHRlcm4oZSx0aGlzLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLHIuUGF0aFR5cGUuU1RST0tFKTt0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO2UucmVzdG9yZSgpfWVsc2UgdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKTt0JiZ0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LmZpbGxBbHBoYX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1maWxsKHQpe3Q9dm9pZCAwPT09dHx8dDtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LmZpbGxDb2xvcjtsZXQgaT0hMTtpZih0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwpe2Uuc2F2ZSgpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTtpPSEwfWNvbnN0IGE9dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09YSlpZih0aGlzLnBlbmRpbmdFT0ZpbGwpe2UuZmlsbCgiZXZlbm9kZCIpO3RoaXMucGVuZGluZ0VPRmlsbD0hMX1lbHNlIGUuZmlsbCgpO2kmJmUucmVzdG9yZSgpO3QmJnRoaXMuY29uc3VtZVBhdGgoYSl9ZW9GaWxsKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbCgpfWZpbGxTdHJva2UoKXt0aGlzLmZpbGwoITEpO3RoaXMuc3Ryb2tlKCExKTt0aGlzLmNvbnN1bWVQYXRoKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1lbmRQYXRoKCl7dGhpcy5jb25zdW1lUGF0aCgpfWNsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXB9ZW9DbGlwKCl7dGhpcy5wZW5kaW5nQ2xpcD1nfWJlZ2luVGV4dCgpe3RoaXMuY3VycmVudC50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKTtlLmJlZ2luUGF0aCgpO2Zvcihjb25zdCBzIG9mIHQpe2Uuc2V0VHJhbnNmb3JtKC4uLnMudHJhbnNmb3JtKTtlLnRyYW5zbGF0ZShzLngscy55KTtzLmFkZFRvUGF0aChlLHMuZm9udFNpemUpfWUucmVzdG9yZSgpO2UuY2xpcCgpO2UuYmVnaW5QYXRoKCk7ZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRoc31lbHNlIGUuYmVnaW5QYXRoKCl9c2V0Q2hhclNwYWNpbmcodCl7dGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nPXR9c2V0V29yZFNwYWNpbmcodCl7dGhpcy5jdXJyZW50LndvcmRTcGFjaW5nPXR9c2V0SFNjYWxlKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfXNldExlYWRpbmcodCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9c2V0Rm9udCh0LGUpe2NvbnN0IHM9dGhpcy5jb21tb25PYmpzLmdldCh0KSxuPXRoaXMuY3VycmVudDtpZighcyl0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgZm9udCBmb3IgJHt0fWApO24uZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVg7MCE9PW4uZm9udE1hdHJpeFswXSYmMCE9PW4uZm9udE1hdHJpeFszXXx8KDAsaS53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpO2lmKGU8MCl7ZT0tZTtuLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBuLmZvbnREaXJlY3Rpb249MTt0aGlzLmN1cnJlbnQuZm9udD1zO3RoaXMuY3VycmVudC5mb250U2l6ZT1lO2lmKHMuaXNUeXBlM0ZvbnQpcmV0dXJuO2NvbnN0IHI9cy5sb2FkZWROYW1lfHwic2Fucy1zZXJpZiI7bGV0IGE9Im5vcm1hbCI7cy5ibGFjaz9hPSI5MDAiOnMuYm9sZCYmKGE9ImJvbGQiKTtjb25zdCBvPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiLGw9YCIke3J9IiwgJHtzLmZhbGxiYWNrTmFtZX1gO2xldCBjPWU7ZTwxNj9jPTE2OmU+MTAwJiYoYz0xMDApO3RoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvYzt0aGlzLmN0eC5mb250PWAke299ICR7YX0gJHtjfXB4ICR7bH1gfXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fW1vdmVUZXh0KHQsZSl7dGhpcy5jdXJyZW50Lng9dGhpcy5jdXJyZW50LmxpbmVYKz10O3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWSs9ZX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1zZXRUZXh0TWF0cml4KHQsZSxzLGksbixyKXt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeD1bdCxlLHMsaSxuLHJdO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1wYWludENoYXIodCxlLHMscil7Y29uc3QgYT10aGlzLmN0eCxvPXRoaXMuY3VycmVudCxsPW8uZm9udCxjPW8udGV4dFJlbmRlcmluZ01vZGUsaD1vLmZvbnRTaXplL28uZm9udFNpemVTY2FsZSxkPWMmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLLHU9ISEoYyZpLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpLHA9by5wYXR0ZXJuRmlsbCYmIWwubWlzc2luZ0ZpbGU7bGV0IGc7KGwuZGlzYWJsZUZvbnRGYWNlfHx1fHxwKSYmKGc9bC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2Jqcyx0KSk7aWYobC5kaXNhYmxlRm9udEZhY2V8fHApe2Euc2F2ZSgpO2EudHJhbnNsYXRlKGUscyk7YS5iZWdpblBhdGgoKTtnKGEsaCk7ciYmYS5zZXRUcmFuc2Zvcm0oLi4ucik7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbCgpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlKCk7YS5yZXN0b3JlKCl9ZWxzZXtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5maWxsVGV4dCh0LGUscyk7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5zdHJva2VUZXh0KHQsZSxzKX1pZih1KXsodGhpcy5wZW5kaW5nVGV4dFBhdGhzfHwodGhpcy5wZW5kaW5nVGV4dFBhdGhzPVtdKSkucHVzaCh7dHJhbnNmb3JtOigwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoYSkseDplLHk6cyxmb250U2l6ZTpoLGFkZFRvUGF0aDpnfSl9fWdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpe2NvbnN0e2NvbnRleHQ6dH09dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIiwxMCwxMCk7dC5zY2FsZSgxLjUsMSk7dC5maWxsVGV4dCgiSSIsMCwxMCk7Y29uc3QgZT10LmdldEltYWdlRGF0YSgwLDAsMTAsMTApLmRhdGE7bGV0IHM9ITE7Zm9yKGxldCB0PTM7dDxlLmxlbmd0aDt0Kz00KWlmKGVbdF0+MCYmZVt0XTwyNTUpe3M9ITA7YnJlYWt9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIixzKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxzPWUuZm9udDtpZihzLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7Y29uc3QgYT1lLmZvbnRTaXplO2lmKDA9PT1hKXJldHVybjtjb25zdCBvPXRoaXMuY3R4LGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPXQubGVuZ3RoLGc9cy52ZXJ0aWNhbCxtPWc/MTotMSxmPXMuZGVmYXVsdFZNZXRyaWNzLGI9YSplLmZvbnRNYXRyaXhbMF0sQT1lLnRleHRSZW5kZXJpbmdNb2RlPT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiYhcy5kaXNhYmxlRm9udEZhY2UmJiFlLnBhdHRlcm5GaWxsO28uc2F2ZSgpO28udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7by50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKTtkPjA/by5zY2FsZSh1LC0xKTpvLnNjYWxlKHUsMSk7bGV0IF87aWYoZS5wYXR0ZXJuRmlsbCl7by5zYXZlKCk7Y29uc3QgdD1lLmZpbGxDb2xvci5nZXRQYXR0ZXJuKG8sdGhpcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShvKSxyLlBhdGhUeXBlLkZJTEwpO189KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShvKTtvLnJlc3RvcmUoKTtvLmZpbGxTdHlsZT10fWxldCB2PWUubGluZVdpZHRoO2NvbnN0IHk9ZS50ZXh0TWF0cml4U2NhbGU7aWYoMD09PXl8fDA9PT12KXtjb25zdCB0PWUudGV4dFJlbmRlcmluZ01vZGUmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO3QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmdCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fCh2PXRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpKX1lbHNlIHYvPXk7aWYoMSE9PWwpe28uc2NhbGUobCxsKTt2Lz1sfW8ubGluZVdpZHRoPXY7bGV0IFMseD0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7eCs9bSplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IG49KGUuaXNTcGFjZT9oOjApK2Mscj1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsdix5LEU9ZS53aWR0aDtpZihnKXtjb25zdCB0PWUudm1ldHJpY3x8ZixzPS0oZS52bWV0cmljP3RbMV06LjUqRSkqYixpPXRbMl0qYjtFPXQ/LXRbMF06RTtwPXMvbDt2PSh4K2kpL2x9ZWxzZXtwPXgvbDt2PTB9aWYocy5yZW1lYXN1cmUmJkU+MCl7Y29uc3QgdD0xZTMqby5tZWFzdXJlVGV4dChyKS53aWR0aC9hKmw7aWYoRTx0JiZ0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKXtjb25zdCBlPUUvdDtpPSEwO28uc2F2ZSgpO28uc2NhbGUoZSwxKTtwLz1lfWVsc2UgRSE9PXQmJihwKz0oRS10KS8yZTMqYS9sKX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlJiYoZS5pc0luRm9udHx8cy5taXNzaW5nRmlsZSkpaWYoQSYmIXUpby5maWxsVGV4dChyLHAsdik7ZWxzZXt0aGlzLnBhaW50Q2hhcihyLHAsdixfKTtpZih1KXtjb25zdCB0PXArYSp1Lm9mZnNldC54L2wsZT12LWEqdS5vZmZzZXQueS9sO3RoaXMucGFpbnRDaGFyKHUuZm9udENoYXIsdCxlLF8pfX15PWc/RSpiLW4qZDpFKmIrbipkO3grPXk7aSYmby5yZXN0b3JlKCl9Zz9lLnktPXg6ZS54Kz14KnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LG49cy5mb250LHI9cy5mb250U2l6ZSxhPXMuZm9udERpcmVjdGlvbixvPW4udmVydGljYWw/MTotMSxsPXMuY2hhclNwYWNpbmcsYz1zLndvcmRTcGFjaW5nLGg9cy50ZXh0SFNjYWxlKmEsZD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxnLG0sZjtpZighKHMudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1yKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO2Uuc2F2ZSgpO2UudHJhbnNmb3JtKC4uLnMudGV4dE1hdHJpeCk7ZS50cmFuc2xhdGUocy54LHMueSk7ZS5zY2FsZShoLGEpO2ZvcihwPTA7cDx1OysrcCl7Zz10W3BdO2lmKCJudW1iZXIiPT10eXBlb2YgZyl7Zj1vKmcqci8xZTM7dGhpcy5jdHgudHJhbnNsYXRlKGYsMCk7cy54Kz1mKmg7Y29udGludWV9Y29uc3QgYT0oZy5pc1NwYWNlP2M6MCkrbCx1PW4uY2hhclByb2NPcGVyYXRvckxpc3RbZy5vcGVyYXRvckxpc3RJZF07aWYoIXUpeygwLGkud2FybikoYFR5cGUzIGNoYXJhY3RlciAiJHtnLm9wZXJhdG9yTGlzdElkfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb250aW51ZX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0aGlzLnByb2Nlc3NpbmdUeXBlMz1nO3RoaXMuc2F2ZSgpO2Uuc2NhbGUocixyKTtlLnRyYW5zZm9ybSguLi5kKTt0aGlzLmV4ZWN1dGVPcGVyYXRvckxpc3QodSk7dGhpcy5yZXN0b3JlKCl9bT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2cud2lkdGgsMF0sZClbMF0qcithO2UudHJhbnNsYXRlKG0sMCk7cy54Kz1tKmh9ZS5yZXN0b3JlKCk7dGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19c2V0Q2hhcldpZHRoKHQsZSl7fXNldENoYXJXaWR0aEFuZEJvdW5kcyh0LGUscyxpLG4scil7dGhpcy5jdHgucmVjdChzLGksbi1zLHItaSk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfWdldENvbG9yTl9QYXR0ZXJuKHQpe2xldCBlO2lmKCJUaWxpbmdQYXR0ZXJuIj09PXRbMF0pe2NvbnN0IHM9dFsxXSxpPXRoaXMuYmFzZVRyYW5zZm9ybXx8KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksYT17Y3JlYXRlQ2FudmFzR3JhcGhpY3M6dD0+bmV3IENhbnZhc0dyYXBoaWNzKHQsdGhpcy5jb21tb25PYmpzLHRoaXMub2Jqcyx0aGlzLmNhbnZhc0ZhY3RvcnkpfTtlPW5ldyByLlRpbGluZ1BhdHRlcm4odCxzLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9bjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9bn1zZXRGaWxsUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguZmlsbFN0eWxlPW47dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1uO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0LGU9bnVsbCl7bGV0IHM7aWYodGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCkpcz10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTtlbHNle3M9KDAsci5nZXRTaGFkaW5nUGF0dGVybikodGhpcy5vYmpzLmdldCh0KSk7dGhpcy5jYWNoZWRQYXR0ZXJucy5zZXQodCxzKX1lJiYocy5tYXRyaXg9ZSk7cmV0dXJuIHN9c2hhZGluZ0ZpbGwodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dGhpcy5jdHg7dGhpcy5zYXZlKCk7Y29uc3Qgcz10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5TSEFESU5HKTtjb25zdCBhPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO2lmKGEpe2NvbnN0IHQ9ZS5jYW52YXMscz10LndpZHRoLG49dC5oZWlnaHQscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sYSksbz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsbl0sYSksbD1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsMF0sYSksYz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3Msbl0sYSksaD1NYXRoLm1pbihyWzBdLG9bMF0sbFswXSxjWzBdKSxkPU1hdGgubWluKHJbMV0sb1sxXSxsWzFdLGNbMV0pLHU9TWF0aC5tYXgoclswXSxvWzBdLGxbMF0sY1swXSkscD1NYXRoLm1heChyWzFdLG9bMV0sbFsxXSxjWzFdKTt0aGlzLmN0eC5maWxsUmVjdChoLGQsdS1oLHAtZCl9ZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwtMWUxMCwyZTEwLDJlMTApO3RoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnJlc3RvcmUoKX1iZWdpbklubGluZUltYWdlKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9YmVnaW5JbWFnZURhdGEoKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCk7dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pO0FycmF5LmlzQXJyYXkodCkmJjY9PT10Lmxlbmd0aCYmdGhpcy50cmFuc2Zvcm0oLi4udCk7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO2lmKGUpe2NvbnN0IHQ9ZVsyXS1lWzBdLHM9ZVszXS1lWzFdO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHQscyk7dGhpcy5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksZSk7dGhpcy5jbGlwKCk7dGhpcy5lbmRQYXRoKCl9fX1wYWludEZvcm1YT2JqZWN0RW5kKCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5yZXN0b3JlKCk7dGhpcy5iYXNlVHJhbnNmb3JtPXRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpfX1iZWdpbkdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLnNhdmUoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLmVuZFNNYXNrTW9kZSgpO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzaz1udWxsfWNvbnN0IGU9dGhpcy5jdHg7dC5pc29sYXRlZHx8KDAsaS5pbmZvKSgiVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLiIpO3Qua25vY2tvdXQmJigwLGkud2FybikoIktub2Nrb3V0IGdyb3VwcyBub3Qgc3VwcG9ydGVkLiIpO2NvbnN0IHM9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTt0Lm1hdHJpeCYmZS50cmFuc2Zvcm0oLi4udC5tYXRyaXgpO2lmKCF0LmJib3gpdGhyb3cgbmV3IEVycm9yKCJCb3VuZGluZyBib3ggaXMgcmVxdWlyZWQuIik7bGV0IHI9aS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQuYmJveCwoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtjb25zdCBhPVswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XTtyPWkuVXRpbC5pbnRlcnNlY3QocixhKXx8WzAsMCwwLDBdO2NvbnN0IG89TWF0aC5mbG9vcihyWzBdKSxjPU1hdGguZmxvb3IoclsxXSk7bGV0IGg9TWF0aC5tYXgoTWF0aC5jZWlsKHJbMl0pLW8sMSksZD1NYXRoLm1heChNYXRoLmNlaWwoclszXSktYywxKSx1PTEscD0xO2lmKGg+bCl7dT1oL2w7aD1sfWlmKGQ+bCl7cD1kL2w7ZD1sfXRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsaCxkXSk7bGV0IGc9Imdyb3VwQXQiK3RoaXMuZ3JvdXBMZXZlbDt0LnNtYXNrJiYoZys9Il9zbWFza18iK3RoaXMuc21hc2tDb3VudGVyKyslMik7Y29uc3QgbT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhnLGgsZCksZj1tLmNvbnRleHQ7Zi5zY2FsZSgxL3UsMS9wKTtmLnRyYW5zbGF0ZSgtbywtYyk7Zi50cmFuc2Zvcm0oLi4ucyk7aWYodC5zbWFzayl0aGlzLnNtYXNrU3RhY2sucHVzaCh7Y2FudmFzOm0uY2FudmFzLGNvbnRleHQ6ZixvZmZzZXRYOm8sb2Zmc2V0WTpjLHNjYWxlWDp1LHNjYWxlWTpwLHN1YnR5cGU6dC5zbWFzay5zdWJ0eXBlLGJhY2tkcm9wOnQuc21hc2suYmFja2Ryb3AsdHJhbnNmZXJNYXA6dC5zbWFzay50cmFuc2Zlck1hcHx8bnVsbCxzdGFydFRyYW5zZm9ybUludmVyc2U6bnVsbH0pO2Vsc2V7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UudHJhbnNsYXRlKG8sYyk7ZS5zY2FsZSh1LHApO2Uuc2F2ZSgpfWNvcHlDdHhTdGF0ZShlLGYpO3RoaXMuY3R4PWY7dGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSk7dGhpcy5ncm91cFN0YWNrLnB1c2goZSk7dGhpcy5ncm91cExldmVsKyt9ZW5kR3JvdXAodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO3RoaXMuZ3JvdXBMZXZlbC0tO2NvbnN0IGU9dGhpcy5jdHgscz10aGlzLmdyb3VwU3RhY2sucG9wKCk7dGhpcy5jdHg9czt0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7aWYodC5zbWFzayl7dGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpO3RoaXMucmVzdG9yZSgpfWVsc2V7dGhpcy5jdHgucmVzdG9yZSgpO2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7dGhpcy5yZXN0b3JlKCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50KTtjb25zdCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF0sdCk7dGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMuY29tcG9zZShzKX19YmVnaW5Bbm5vdGF0aW9uKHQsZSxzLHIsYSl7dGhpcy4jc3QoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvcik7dGhpcy5jdHguc2F2ZSgpO3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybSYmdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnRoaXMuYmFzZVRyYW5zZm9ybSk7aWYoQXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoKXtjb25zdCByPWVbMl0tZVswXSxvPWVbM10tZVsxXTtpZihhJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhzPXMuc2xpY2UoKSlbNF0tPWVbMF07c1s1XS09ZVsxXTsoZT1lLnNsaWNlKCkpWzBdPWVbMV09MDtlWzJdPXI7ZVszXT1vO2NvbnN0W2EsbF09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSx7dmlld3BvcnRTY2FsZTpjfT10aGlzLGg9TWF0aC5jZWlsKHIqdGhpcy5vdXRwdXRTY2FsZVgqYyksZD1NYXRoLmNlaWwobyp0aGlzLm91dHB1dFNjYWxlWSpjKTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLGQpO2NvbnN0e2NhbnZhczp1LGNvbnRleHQ6cH09dGhpcy5hbm5vdGF0aW9uQ2FudmFzO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCx1KTt0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9cDt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oYSwwLDAsLWwsMCxvKmwpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKX1lbHNle3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSxyLG8pO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX19dGhpcy5jdXJyZW50PW5ldyBDYW52YXNFeHRyYVN0YXRlKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTt0aGlzLnRyYW5zZm9ybSguLi5zKTt0aGlzLnRyYW5zZm9ybSguLi5yKX1lbmRBbm5vdGF0aW9uKCl7aWYodGhpcy5hbm5vdGF0aW9uQ2FudmFzKXt0aGlzLmN0eD10aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7ZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzfX1wYWludEltYWdlTWFza1hPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC5jb3VudDsodD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCkpLmNvdW50PWU7Y29uc3Qgcz10aGlzLmN0eCxpPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKGkpe3ZvaWQgMD09PWkuY29tcGlsZWQmJihpLmNvbXBpbGVkPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnN9PXQ7aWYoZT5jfHxzPmMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxuPWUrMTtsZXQgcixhLG8sbD1uZXcgVWludDhBcnJheShuKihzKzEpKTtjb25zdCBoPWUrNyYtODtsZXQgZD1uZXcgVWludDhBcnJheShoKnMpLHU9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2RbdSsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCBwPTA7dT0wO2lmKDAhPT1kW3VdKXtsWzBdPTE7KytwfWZvcihhPTE7YTxlO2ErKyl7aWYoZFt1XSE9PWRbdSsxXSl7bFthXT1kW3VdPzI6MTsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW2FdPTI7KytwfWZvcihyPTE7cjxzO3IrKyl7dT1yKmg7bz1yKm47aWYoZFt1LWhdIT09ZFt1XSl7bFtvXT1kW3VdPzE6ODsrK3B9bGV0IHQ9KGRbdV0/NDowKSsoZFt1LWhdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoZFt1KzFdPzQ6MCkrKGRbdS1oKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07KytwfXUrK31pZihkW3UtaF0hPT1kW3VdKXtsW28rYV09ZFt1XT8yOjQ7KytwfWlmKHA+MWUzKXJldHVybiBudWxsfXU9aCoocy0xKTtvPXIqbjtpZigwIT09ZFt1XSl7bFtvXT04OysrcH1mb3IoYT0xO2E8ZTthKyspe2lmKGRbdV0hPT1kW3UrMV0pe2xbbythXT1kW3VdPzQ6ODsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW28rYV09NDsrK3B9aWYocD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZz1uZXcgSW50MzJBcnJheShbMCxuLC0xLDAsLW4sMCwwLDAsMV0pLG09bmV3IFBhdGgyRDtmb3Iocj0wO3AmJnI8PXM7cisrKXtsZXQgdD1yKm47Y29uc3Qgcz10K2U7Zm9yKDt0PHMmJiFsW3RdOyl0Kys7aWYodD09PXMpY29udGludWU7bS5tb3ZlVG8odCVuLHIpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9Z1thXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBzPWxbdF07aWYoNSE9PXMmJjEwIT09cyl7YT1zO2xbdF09MH1lbHNle2E9cyY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1tLmxpbmVUbyh0JW4sdC9ufDApO2xbdF18fC0tcH13aGlsZShpIT09dCk7LS1yfWQ9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL3MpO3QudHJhbnNsYXRlKDAsLXMpO3QuZmlsbChtKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQocyk7cmV0dXJufX1jb25zdCBuPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscj1uLmNhbnZhcztzLnNhdmUoKTtzLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7cy5kcmF3SW1hZ2UocixuLm9mZnNldFgsbi5vZmZzZXRZKTtzLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlLHM9MCxyPTAsYSxvKXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxzLHIsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCs9Mil7Y29uc3Qgbj1pLlV0aWwudHJhbnNmb3JtKGMsW2UscyxyLGEsb1t0XSxvW3QrMV1dKSxbZCx1XT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbik7bC5kcmF3SW1hZ2UoaC5jYW52YXMsZCx1KX1sLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5maWxsQ29sb3IsaT10aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3R7ZGF0YTp0LHdpZHRoOm8saGVpZ2h0OmwsdHJhbnNmb3JtOmN9PWEsaD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsbyxsKSxkPWguY29udGV4dDtkLnNhdmUoKTtwdXRCaW5hcnlJbWFnZU1hc2soZCx0aGlzLmdldE9iamVjdCh0LGEpKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIjtkLmZpbGxTdHlsZT1pP3MuZ2V0UGF0dGVybihkLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTpzO2QuZmlsbFJlY3QoMCwwLG8sbCk7ZC5yZXN0b3JlKCk7ZS5zYXZlKCk7ZS50cmFuc2Zvcm0oLi4uYyk7ZS5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSxoLmNhbnZhcywwLDAsbyxsLDAsLTEsMSwxKTtlLnJlc3RvcmUoKX10aGlzLmNvbXBvc2UoKX1wYWludEltYWdlWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsaS53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfXBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsZSxzLG4pe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCByPXRoaXMuZ2V0T2JqZWN0KHQpO2lmKCFyKXsoMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iik7cmV0dXJufWNvbnN0IGE9ci53aWR0aCxvPXIuaGVpZ2h0LGw9W107Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCs9MilsLnB1c2goe3RyYW5zZm9ybTpbZSwwLDAscyxuW3RdLG5bdCsxXV0seDowLHk6MCx3OmEsaDpvfSk7dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHIsbCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC53aWR0aCxzPXQuaGVpZ2h0LGk9dGhpcy5jdHg7dGhpcy5zYXZlKCk7aS5zY2FsZSgxL2UsLTEvcyk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpcj10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUscyk7cHV0QmluYXJ5SW1hZ2VEYXRhKGkuY29udGV4dCx0LHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpO3I9aS5jYW52YXN9Y29uc3QgYT10aGlzLl9zY2FsZUltYWdlKHIsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoaSkpO2kuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhpLGEuaW1nLDAsMCxhLnBhaW50V2lkdGgsYS5wYWludEhlaWdodCwwLC1zLGUscyk7dGhpcy5jb21wb3NlKCk7dGhpcy5yZXN0b3JlKCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LGUpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBzPXRoaXMuY3R4LGk9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixpLG4pO3B1dEJpbmFyeUltYWdlRGF0YShyLmNvbnRleHQsdCx0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzKTtmb3IoY29uc3QgdCBvZiBlKXtzLnNhdmUoKTtzLnRyYW5zZm9ybSguLi50LnRyYW5zZm9ybSk7cy5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMocyxyLmNhbnZhcyx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO3MucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgcz10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWc/cy5jbGlwKCJldmVub2RkIik6cy5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7cy5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHM9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocyxpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe2NvbnN0e2xpbmVXaWR0aDp0fT10aGlzLmN1cnJlbnQsZT0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtsZXQgcyxpO2lmKDA9PT1lWzFdJiYwPT09ZVsyXSl7Y29uc3Qgbj1NYXRoLmFicyhlWzBdKSxyPU1hdGguYWJzKGVbM10pO2lmKDA9PT10KXtzPTEvbjtpPTEvcn1lbHNle2NvbnN0IGU9bip0LGE9cip0O3M9ZTwxPzEvZToxO2k9YTwxPzEvYToxfX1lbHNle2NvbnN0IG49TWF0aC5hYnMoZVswXSplWzNdLWVbMl0qZVsxXSkscj1NYXRoLmh5cG90KGVbMF0sZVsxXSksYT1NYXRoLmh5cG90KGVbMl0sZVszXSk7aWYoMD09PXQpe3M9YS9uO2k9ci9ufWVsc2V7Y29uc3QgZT10Km47cz1hPmU/YS9lOjE7aT1yPmU/ci9lOjF9fXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9W3MsaV19cmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmd9cmVzY2FsZUFuZFN0cm9rZSh0KXtjb25zdHtjdHg6ZX09dGhpcyx7bGluZVdpZHRoOnN9PXRoaXMuY3VycmVudCxbaSxyXT10aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtlLmxpbmVXaWR0aD1zfHwxO2lmKDE9PT1pJiYxPT09cil7ZS5zdHJva2UoKTtyZXR1cm59bGV0IGEsbyxsO2lmKHQpe2E9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTtvPWUuZ2V0TGluZURhc2goKS5zbGljZSgpO2w9ZS5saW5lRGFzaE9mZnNldH1lLnNjYWxlKGkscik7Y29uc3QgYz1NYXRoLm1heChpLHIpO2Uuc2V0TGluZURhc2goZS5nZXRMaW5lRGFzaCgpLm1hcCgodD0+dC9jKSkpO2UubGluZURhc2hPZmZzZXQvPWM7ZS5zdHJva2UoKTtpZih0KXtlLnNldFRyYW5zZm9ybSguLi5hKTtlLnNldExpbmVEYXNoKG8pO2UubGluZURhc2hPZmZzZXQ9bH19aXNDb250ZW50VmlzaWJsZSgpe2ZvcihsZXQgdD10aGlzLm1hcmtlZENvbnRlbnRTdGFjay5sZW5ndGgtMTt0Pj0wO3QtLSlpZighdGhpcy5tYXJrZWRDb250ZW50U3RhY2tbdF0udmlzaWJsZSlyZXR1cm4hMTtyZXR1cm4hMH19ZS5DYW52YXNHcmFwaGljcz1DYW52YXNHcmFwaGljcztmb3IoY29uc3QgdCBpbiBpLk9QUyl2b2lkIDAhPT1DYW52YXNHcmFwaGljcy5wcm90b3R5cGVbdF0mJihDYW52YXNHcmFwaGljcy5wcm90b3R5cGVbaS5PUFNbdF1dPUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTt2YXIgaT1zKDEpLG49cyg2KSxyPXMoMTIpO2NvbnN0IGE9e0ZJTEw6IkZpbGwiLFNUUk9LRToiU3Ryb2tlIixTSEFESU5HOiJTaGFkaW5nIn07ZS5QYXRoVHlwZT1hO2Z1bmN0aW9uIGFwcGx5Qm91bmRpbmdCb3godCxlKXtpZighZXx8ci5pc05vZGVKUylyZXR1cm47Y29uc3Qgcz1lWzJdLWVbMF0saT1lWzNdLWVbMV0sbj1uZXcgUGF0aDJEO24ucmVjdChlWzBdLGVbMV0scyxpKTt0LmNsaXAobil9Y2xhc3MgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nUGF0dGVybiYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1nZXRQYXR0ZXJuKCl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fdHlwZT10WzFdO3RoaXMuX2Jib3g9dFsyXTt0aGlzLl9jb2xvclN0b3BzPXRbM107dGhpcy5fcDA9dFs0XTt0aGlzLl9wMT10WzVdO3RoaXMuX3IwPXRbNl07dGhpcy5fcjE9dFs3XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVHcmFkaWVudCh0KXtsZXQgZTsiYXhpYWwiPT09dGhpcy5fdHlwZT9lPXQuY3JlYXRlTGluZWFyR3JhZGllbnQodGhpcy5fcDBbMF0sdGhpcy5fcDBbMV0sdGhpcy5fcDFbMF0sdGhpcy5fcDFbMV0pOiJyYWRpYWwiPT09dGhpcy5fdHlwZSYmKGU9dC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9yMCx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSx0aGlzLl9yMSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpZS5hZGRDb2xvclN0b3AodFswXSx0WzFdKTtyZXR1cm4gZX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2xldCBvO2lmKHI9PT1hLlNUUk9LRXx8cj09PWEuRklMTCl7Y29uc3QgYT1lLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChyLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpfHxbMCwwLDAsMF0sbD1NYXRoLmNlaWwoYVsyXS1hWzBdKXx8MSxjPU1hdGguY2VpbChhWzNdLWFbMV0pfHwxLGg9ZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInBhdHRlcm4iLGwsYywhMCksZD1oLmNvbnRleHQ7ZC5jbGVhclJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC5iZWdpblBhdGgoKTtkLnJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC50cmFuc2xhdGUoLWFbMF0sLWFbMV0pO3M9aS5VdGlsLnRyYW5zZm9ybShzLFsxLDAsMCwxLGFbMF0sYVsxXV0pO2QudHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJmQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTthcHBseUJvdW5kaW5nQm94KGQsdGhpcy5fYmJveCk7ZC5maWxsU3R5bGU9dGhpcy5fY3JlYXRlR3JhZGllbnQoZCk7ZC5maWxsKCk7bz10LmNyZWF0ZVBhdHRlcm4oaC5jYW52YXMsIm5vLXJlcGVhdCIpO2NvbnN0IHU9bmV3IERPTU1hdHJpeChzKTtvLnNldFRyYW5zZm9ybSh1KX1lbHNle2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtvPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpfXJldHVybiBvfX1mdW5jdGlvbiBkcmF3VHJpYW5nbGUodCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPWUuY29vcmRzLGM9ZS5jb2xvcnMsaD10LmRhdGEsZD00KnQud2lkdGg7bGV0IHU7aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9aWYobFtpKzFdPmxbbisxXSl7dT1pO2k9bjtuPXU7dT1hO2E9bztvPXV9aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9Y29uc3QgcD0obFtzXStlLm9mZnNldFgpKmUuc2NhbGVYLGc9KGxbcysxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KGxbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxmPShsW2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWSxiPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsQT0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVk7aWYoZz49QSlyZXR1cm47Y29uc3QgXz1jW3JdLHY9Y1tyKzFdLHk9Y1tyKzJdLFM9Y1thXSx4PWNbYSsxXSxFPWNbYSsyXSxDPWNbb10sUD1jW28rMV0sVD1jW28rMl0sdz1NYXRoLnJvdW5kKGcpLGs9TWF0aC5yb3VuZChBKTtsZXQgRixNLFIsRCxJLE8sTCxOO2ZvcihsZXQgdD13O3Q8PWs7dCsrKXtpZih0PGYpe2xldCBlO2U9dDxnPzA6KGctdCkvKGctZik7Rj1wLShwLW0pKmU7TT1fLShfLVMpKmU7Uj12LSh2LXgpKmU7RD15LSh5LUUpKmV9ZWxzZXtsZXQgZTtlPXQ+QT8xOmY9PT1BPzA6KGYtdCkvKGYtQSk7Rj1tLShtLWIpKmU7TT1TLShTLUMpKmU7Uj14LSh4LVApKmU7RD1FLShFLVQpKmV9bGV0IGU7ZT10PGc/MDp0PkE/MTooZy10KS8oZy1BKTtJPXAtKHAtYikqZTtPPV8tKF8tQykqZTtMPXYtKHYtUCkqZTtOPXktKHktVCkqZTtjb25zdCBzPU1hdGgucm91bmQoTWF0aC5taW4oRixJKSksaT1NYXRoLnJvdW5kKE1hdGgubWF4KEYsSSkpO2xldCBuPWQqdCs0KnM7Zm9yKGxldCB0PXM7dDw9aTt0Kyspe2U9KEYtdCkvKEYtSSk7ZTwwP2U9MDplPjEmJihlPTEpO2hbbisrXT1NLShNLU8pKmV8MDtoW24rK109Ui0oUi1MKSplfDA7aFtuKytdPUQtKEQtTikqZXwwO2hbbisrXT0yNTV9fX1mdW5jdGlvbiBkcmF3RmlndXJlKHQsZSxzKXtjb25zdCBpPWUuY29vcmRzLG49ZS5jb2xvcnM7bGV0IHIsYTtzd2l0Y2goZS50eXBlKXtjYXNlImxhdHRpY2UiOmNvbnN0IG89ZS52ZXJ0aWNlc1BlclJvdyxsPU1hdGguZmxvb3IoaS5sZW5ndGgvbyktMSxjPW8tMTtmb3Iocj0wO3I8bDtyKyspe2xldCBlPXIqbztmb3IobGV0IHI9MDtyPGM7cisrLGUrKyl7ZHJhd1RyaWFuZ2xlKHQscyxpW2VdLGlbZSsxXSxpW2Urb10sbltlXSxuW2UrMV0sbltlK29dKTtkcmF3VHJpYW5nbGUodCxzLGlbZStvKzFdLGlbZSsxXSxpW2Urb10sbltlK28rMV0sbltlKzFdLG5bZStvXSl9fWJyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iocj0wLGE9aS5sZW5ndGg7cjxhO3IrPTMpZHJhd1RyaWFuZ2xlKHQscyxpW3JdLGlbcisxXSxpW3IrMl0sbltyXSxuW3IrMV0sbltyKzJdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBmaWd1cmUiKX19Y2xhc3MgTWVzaFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fY29vcmRzPXRbMl07dGhpcy5fY29sb3JzPXRbM107dGhpcy5fZmlndXJlcz10WzRdO3RoaXMuX2JvdW5kcz10WzVdO3RoaXMuX2Jib3g9dFs3XTt0aGlzLl9iYWNrZ3JvdW5kPXRbOF07dGhpcy5tYXRyaXg9bnVsbH1fY3JlYXRlTWVzaENhbnZhcyh0LGUscyl7Y29uc3QgaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSkscj1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1pLGE9TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktbixvPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhyKnRbMF0qMS4xKSksM2UzKSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMV0qMS4xKSksM2UzKSxjPXIvbyxoPWEvbCxkPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotaSxvZmZzZXRZOi1uLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sdT1vKzQscD1sKzQsZz1zLmdldENhbnZhcygibWVzaCIsdSxwLCExKSxtPWcuY29udGV4dCxmPW0uY3JlYXRlSW1hZ2VEYXRhKG8sbCk7aWYoZSl7Y29uc3QgdD1mLmRhdGE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cys9NCl7dFtzXT1lWzBdO3RbcysxXT1lWzFdO3RbcysyXT1lWzJdO3RbcyszXT0yNTV9fWZvcihjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpZHJhd0ZpZ3VyZShmLHQsZCk7bS5wdXRJbWFnZURhdGEoZiwyLDIpO3JldHVybntjYW52YXM6Zy5jYW52YXMsb2Zmc2V0WDppLTIqYyxvZmZzZXRZOm4tMipoLHNjYWxlWDpjLHNjYWxlWTpofX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtsZXQgbztpZihyPT09YS5TSEFESU5HKW89aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpO2Vsc2V7bz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZS5iYXNlVHJhbnNmb3JtKTtpZih0aGlzLm1hdHJpeCl7Y29uc3QgdD1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpO289W29bMF0qdFswXSxvWzFdKnRbMV1dfX1jb25zdCBsPXRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobyxyPT09YS5TSEFESU5HP251bGw6dGhpcy5fYmFja2dyb3VuZCxlLmNhY2hlZENhbnZhc2VzKTtpZihyIT09YS5TSEFESU5HKXt0LnNldFRyYW5zZm9ybSguLi5lLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiZ0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCl9dC50cmFuc2xhdGUobC5vZmZzZXRYLGwub2Zmc2V0WSk7dC5zY2FsZShsLnNjYWxlWCxsLnNjYWxlWSk7cmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywibm8tcmVwZWF0Iil9fWNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Z2V0UGF0dGVybigpe3JldHVybiJob3RwaW5rIn19Y29uc3Qgbz0xLGw9MjtjbGFzcyBUaWxpbmdQYXR0ZXJue3N0YXRpYyBnZXQgTUFYX1BBVFRFUk5fU0laRSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJNQVhfUEFUVEVSTl9TSVpFIiwzZTMpfWNvbnN0cnVjdG9yKHQsZSxzLGksbil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9czt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1ufWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxzPXRoaXMuYmJveCxyPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPXNbMF0sdT1zWzFdLHA9c1syXSxnPXNbM10sbT1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLGY9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bbVswXSpmWzBdLG1bMV0qZlsxXV0sQT10aGlzLmdldFNpemVBbmRTY2FsZShyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSxfPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSx2PXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixBLnNpemUsXy5zaXplLCEwKSx5PXYuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoeSk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IHg9ZCxFPXUsQz1wLFA9ZztpZihkPDApe3g9MDtDKz1NYXRoLmFicyhkKX1pZih1PDApe0U9MDtQKz1NYXRoLmFicyh1KX15LnRyYW5zbGF0ZSgtQS5zY2FsZSp4LC1fLnNjYWxlKkUpO1MudHJhbnNmb3JtKEEuc2NhbGUsMCwwLF8uc2NhbGUsMCwwKTt5LnNhdmUoKTt0aGlzLmNsaXBCYm94KFMseCxFLEMsUCk7Uy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOnYuY2FudmFzLHNjYWxlWDpBLnNjYWxlLHNjYWxlWTpfLnNjYWxlLG9mZnNldFg6eCxvZmZzZXRZOkV9fWdldFNpemVBbmRTY2FsZSh0LGUscyl7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgbj1NYXRoLmNlaWwodCpzKTtuPj1pP249aTpzPW4vdDtyZXR1cm57c2NhbGU6cyxzaXplOm59fWNsaXBCYm94KHQsZSxzLGkscil7Y29uc3QgYT1pLWUsbz1yLXM7dC5jdHgucmVjdChlLHMsYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxzLGkscl0pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUscyl7Y29uc3Qgbj10LmN0eCxyPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBvOmNvbnN0IHQ9dGhpcy5jdHg7bi5maWxsU3R5bGU9dC5maWxsU3R5bGU7bi5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3IuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Iuc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIGw6Y29uc3QgYT1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtuLmZpbGxTdHlsZT1hO24uc3Ryb2tlU3R5bGU9YTtyLmZpbGxDb2xvcj1hO3Iuc3Ryb2tlQ29sb3I9YTticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLHMsbil7bGV0IHI9cztpZihuIT09YS5TSEFESU5HKXtyPWkuVXRpbC50cmFuc2Zvcm0ocixlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYocj1pLlV0aWwudHJhbnNmb3JtKHIsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KHIpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5pc05vZGVKUz12b2lkIDA7Y29uc3Qgcz0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1zfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuYXBwbHlNYXNrSW1hZ2VEYXRhPWZ1bmN0aW9uIGFwcGx5TWFza0ltYWdlRGF0YSh7c3JjOnQsc3JjUG9zOmU9MCxkZXN0OnMsZGVzdFBvczpuPTAsd2lkdGg6cixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBsPWkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsaF09bz9bMCxsXTpbbCwwXSxkPXI+PjMsdT03JnIscD10Lmxlbmd0aDtzPW5ldyBVaW50MzJBcnJheShzLmJ1ZmZlcik7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGNvbnN0IGk9ZStkO2U8aTtlKyspe2NvbnN0IGk9ZTxwP3RbZV06MjU1O3NbbisrXT0xMjgmaT9oOmM7c1tuKytdPTY0Jmk/aDpjO3NbbisrXT0zMiZpP2g6YztzW24rK109MTYmaT9oOmM7c1tuKytdPTgmaT9oOmM7c1tuKytdPTQmaT9oOmM7c1tuKytdPTImaT9oOmM7c1tuKytdPTEmaT9oOmN9aWYoMD09PXUpY29udGludWU7Y29uc3QgaT1lPHA/dFtlKytdOjI1NTtmb3IobGV0IHQ9MDt0PHU7dCsrKXNbbisrXT1pJjE8PDctdD9oOmN9cmV0dXJue3NyY1BvczplLGRlc3RQb3M6bn19O3ZhciBpPXMoMSl9LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1zO3Mud29ya2VyUG9ydD12b2lkIDA9PT1zLndvcmtlclBvcnQ/bnVsbDpzLndvcmtlclBvcnQ7cy53b3JrZXJTcmM9dm9pZCAwPT09cy53b3JrZXJTcmM/IiI6cy53b3JrZXJTcmN9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIGk9cygxKTtjb25zdCBuPTEscj0yLGE9MSxvPTIsbD0zLGM9NCxoPTUsZD02LHU9NyxwPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbih0KXt0IGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCgwLGkudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlVua25vd25FcnJvckV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQudG9TdHJpbmcoKSl9fWUuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuc291cmNlTmFtZT10O3RoaXMudGFyZ2V0TmFtZT1lO3RoaXMuY29tT2JqPXM7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPXQ9Pntjb25zdCBlPXQuZGF0YTtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQscz10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1uKXMucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtzLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgdD10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QoaShlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnQsdGFyZ2V0TmFtZTphLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTppfSl9KSwoZnVuY3Rpb24oaSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKGkpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6aShlLmRhdGEpfTtzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbih0LGUpe2NvbnN0IHM9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKHNbdF0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke3R9ImApO3NbdF09ZX1zZW5kKHQsZSxzKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOnQsZGF0YTplfSxzKX1zZW5kV2l0aFByb21pc2UodCxlLHMpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKysscj0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6bixkYXRhOmV9LHMpfWNhdGNoKHQpe3IucmVqZWN0KHQpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLHMsbil7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpzPT57Y29uc3QgYT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6cyxzdGFydENhbGw6YSxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxhY3Rpb246dCxzdHJlYW1JZDpyLGRhdGE6ZSxkZXNpcmVkU2l6ZTpzLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gYS5wcm9taXNlfSxwdWxsOnQ9Pntjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD1lO2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsc3RyZWFtOmQsc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSk7cmV0dXJuIGUucHJvbWlzZX0sY2FuY2VsOnQ9PnsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgZT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LHMpfV9jcmVhdGVTdHJlYW1TaW5rKHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxzPXRoaXMuc291cmNlTmFtZSxuPXQuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLGE9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sZD17ZW5xdWV1ZSh0LGE9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpjLHN0cmVhbUlkOmUsY2h1bms6dH0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDplfSk7ZGVsZXRlIGEuc3RyZWFtU2lua3NbZV19fSxlcnJvcih0KXsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX19LHNpbmtDYXBhYmlsaXR5OigwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O2Quc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2QucmVhZHk9ZC5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbZV09ZDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShvKHQuZGF0YSxkKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpwLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnAsc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KXtjb25zdCBlPXQuc3RyZWFtSWQscz10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV0sbT10aGlzLnN0cmVhbVNpbmtzW2VdO3N3aXRjaCh0LnN0cmVhbSl7Y2FzZSBwOnQuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIHU6dC5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIGQ6aWYoIW0pe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnUsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSk7YnJlYWt9bS5kZXNpcmVkU2l6ZTw9MCYmdC5kZXNpcmVkU2l6ZT4wJiZtLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTttLmRlc2lyZWRTaXplPXQuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobS5vblB1bGwmJm0ub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgaDooMCxpLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyxlKTticmVhaztjYXNlIG86dC5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgYTppZighbSlicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShtLm9uQ2FuY2VsJiZtLm9uQ2FuY2VsKHdyYXBSZWFzb24odC5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpO20uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTttLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKHQsZSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFt0LnN0YXJ0Q2FsbCYmdC5zdGFydENhbGwucHJvbWlzZSx0LnB1bGxDYWxsJiZ0LnB1bGxDYWxsLnByb21pc2UsdC5jYW5jZWxDYWxsJiZ0LmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1zKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I2l0OyNudDtjb25zdHJ1Y3Rvcih7cGFyc2VkRGF0YTp0LHJhd0RhdGE6ZX0pe3RoaXMuI2l0PXQ7dGhpcy4jbnQ9ZX1nZXRSYXcoKXtyZXR1cm4gdGhpcy4jbnR9Z2V0KHQpe3JldHVybiB0aGlzLiNpdC5nZXQodCk/P251bGx9Z2V0QWxsKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLiNpdCl9aGFzKHQpe3JldHVybiB0aGlzLiNpdC5oYXModCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cygxKSxuPXMoOCk7Y29uc3Qgcj1TeW1ib2woIklOVEVSTkFMIik7Y2xhc3MgT3B0aW9uYWxDb250ZW50R3JvdXB7I3J0PSEwO2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQ7dGhpcy5pbnRlbnQ9ZX1nZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNydH1fc2V0VmlzaWJsZSh0LGUpe3QhPT1yJiYoMCxpLnVucmVhY2hhYmxlKSgiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLiIpO3RoaXMuI3J0PWV9fWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPWNsYXNzIE9wdGlvbmFsQ29udGVudENvbmZpZ3sjYXQ9bnVsbDsjb3Q9bmV3IE1hcDsjbHQ9bnVsbDsjY3Q9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hbWU9bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDtpZihudWxsIT09dCl7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmNyZWF0b3I9dC5jcmVhdG9yO3RoaXMuI2N0PXQub3JkZXI7Zm9yKGNvbnN0IGUgb2YgdC5ncm91cHMpdGhpcy4jb3Quc2V0KGUuaWQsbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSxlLmludGVudCkpO2lmKCJPRkYiPT09dC5iYXNlU3RhdGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jb3QudmFsdWVzKCkpdC5fc2V0VmlzaWJsZShyLCExKTtmb3IoY29uc3QgZSBvZiB0Lm9uKXRoaXMuI290LmdldChlKS5fc2V0VmlzaWJsZShyLCEwKTtmb3IoY29uc3QgZSBvZiB0Lm9mZil0aGlzLiNvdC5nZXQoZSkuX3NldFZpc2libGUociwhMSk7dGhpcy4jbHQ9dGhpcy5nZXRIYXNoKCl9fSNodCh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4hMDtjb25zdCBzPXRbMF07Zm9yKGxldCBuPTE7bjxlO24rKyl7Y29uc3QgZT10W25dO2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSkpcj10aGlzLiNodChlKTtlbHNle2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9cj10aGlzLiNvdC5nZXQoZSkudmlzaWJsZX1zd2l0Y2gocyl7Y2FzZSJBbmQiOmlmKCFyKXJldHVybiExO2JyZWFrO2Nhc2UiT3IiOmlmKHIpcmV0dXJuITA7YnJlYWs7Y2FzZSJOb3QiOnJldHVybiFyO2RlZmF1bHQ6cmV0dXJuITB9fXJldHVybiJBbmQiPT09c31pc1Zpc2libGUodCl7aWYoMD09PXRoaXMuI290LnNpemUpcmV0dXJuITA7aWYoIXQpeygwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuIik7cmV0dXJuITB9aWYoIk9DRyI9PT10LnR5cGUpe2lmKCF0aGlzLiNvdC5oYXModC5pZCkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3QuaWR9YCk7cmV0dXJuITB9cmV0dXJuIHRoaXMuI290LmdldCh0LmlkKS52aXNpYmxlfWlmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB0aGlzLiNodCh0LmV4cHJlc3Npb24pO2lmKCF0LnBvbGljeXx8IkFueU9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZih0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMH1yZXR1cm4hMX1pZigiQWxsT24iPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jb3QuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKCF0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSAke3QucG9saWN5fS5gKTtyZXR1cm4hMH0oMCxpLndhcm4pKGBVbmtub3duIGdyb3VwIHR5cGUgJHt0LnR5cGV9LmApO3JldHVybiEwfXNldFZpc2liaWxpdHkodCxlPSEwKXtpZih0aGlzLiNvdC5oYXModCkpe3RoaXMuI290LmdldCh0KS5fc2V0VmlzaWJsZShyLCEhZSk7dGhpcy4jYXQ9bnVsbH1lbHNlKDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7dH1gKX1nZXQgaGFzSW5pdGlhbFZpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5nZXRIYXNoKCk9PT10aGlzLiNsdH1nZXRPcmRlcigpe3JldHVybiB0aGlzLiNvdC5zaXplP3RoaXMuI2N0P3RoaXMuI2N0LnNsaWNlKCk6Wy4uLnRoaXMuI290LmtleXMoKV06bnVsbH1nZXRHcm91cHMoKXtyZXR1cm4gdGhpcy4jb3Quc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jb3QpOm51bGx9Z2V0R3JvdXAodCl7cmV0dXJuIHRoaXMuI290LmdldCh0KXx8bnVsbH1nZXRIYXNoKCl7aWYobnVsbCE9PXRoaXMuI2F0KXJldHVybiB0aGlzLiNhdDtjb25zdCB0PW5ldyBuLk11cm11ckhhc2gzXzY0O2Zvcihjb25zdFtlLHNdb2YgdGhpcy4jb3QpdC51cGRhdGUoYCR7ZX06JHtzLnZpc2libGV9YCk7cmV0dXJuIHRoaXMuI2F0PXQuaGV4ZGlnZXN0KCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkRhdGFUcmFuc3BvcnRTdHJlYW09dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7KDAsaS5hc3NlcnQpKGUsJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkICJwZGZEYXRhUmFuZ2VUcmFuc3BvcnQiIGFyZ3VtZW50LicpO3RoaXMuX3F1ZXVlZENodW5rcz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmU9dC5wcm9ncmVzc2l2ZURvbmV8fCExO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXQuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV8fG51bGw7Y29uc3Qgcz10LmluaXRpYWxEYXRhO2lmKHM/Lmxlbmd0aD4wKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KHMpLmJ1ZmZlcjt0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KX10aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hdC5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IXQuZGlzYWJsZVJhbmdlO3RoaXMuX2NvbnRlbnRMZW5ndGg9dC5sZW5ndGg7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlYWRlcnM9W107dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25SZWNlaXZlRGF0YSh7YmVnaW46dCxjaHVuazplfSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25Qcm9ncmVzcyh7bG9hZGVkOnQsdG90YWw6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcigodD0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2NodW5rOnR9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIoKCgpPT57dGhpcy5fb25Qcm9ncmVzc2l2ZURvbmUoKX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKX1fb25SZWNlaXZlRGF0YSh0KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7Y29uc3Qgcz10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24ocyl7aWYocy5fYmVnaW4hPT10LmJlZ2luKXJldHVybiExO3MuX2VucXVldWUoZSk7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHMsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMuX3N0cmVhbT10O3RoaXMuX2RvbmU9c3x8ITE7dGhpcy5fZmlsZW5hbWU9KDAsbi5pc1BkZkZpbGUpKGkpP2k6bnVsbDt0aGlzLl9xdWV1ZWRDaHVua3M9ZXx8W107dGhpcy5fbG9hZGVkPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcXVldWVkQ2h1bmtzKXRoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKTt0Ll9mdWxsUmVxdWVzdFJlYWRlcj10aGlzO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KX1lbHNlIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RofX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5fY29udGVudExlbmd0aH1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfXByb2dyZXNzaXZlRG9uZSgpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9iZWdpbj1lO3RoaXMuX2VuZD1zO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fZG9uZT0hMTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMDt0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmspe2NvbnN0IHQ9dGhpcy5fcXVldWVkQ2h1bms7dGhpcy5fcXVldWVkQ2h1bms9bnVsbDtyZXR1cm57dmFsdWU6dCxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYVRleHQ9dm9pZCAwO2NsYXNzIFhmYVRleHR7c3RhdGljIHRleHRDb250ZW50KHQpe2NvbnN0IGU9W10scz17aXRlbXM6ZSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07IWZ1bmN0aW9uIHdhbGsodCl7aWYoIXQpcmV0dXJuO2xldCBzPW51bGw7Y29uc3QgaT10Lm5hbWU7aWYoIiN0ZXh0Ij09PWkpcz10LnZhbHVlO2Vsc2V7aWYoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKXJldHVybjt0Py5hdHRyaWJ1dGVzPy50ZXh0Q29udGVudD9zPXQuYXR0cmlidXRlcy50ZXh0Q29udGVudDp0LnZhbHVlJiYocz10LnZhbHVlKX1udWxsIT09cyYmZS5wdXNoKHtzdHI6c30pO2lmKHQuY2hpbGRyZW4pZm9yKGNvbnN0IGUgb2YgdC5jaGlsZHJlbil3YWxrKGUpfSh0KTtyZXR1cm4gc31zdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fWUuWGZhVGV4dD1YZmFUZXh0fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXMoNyk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUscyk9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6cyhuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnl7X2NyZWF0ZUNhbnZhcyh0LGUpe3JldHVybiByZXF1aXJlKCJjYW52YXMiKS5jcmVhdGVDYW52YXModCxlKX19ZS5Ob2RlQ2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeTtjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0KS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1Ob2RlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQpfX1lLk5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpLHI9cygyMiksYT1zKDIzKTtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXJ7I2R0OyN1dD0hMTsjcHQ9dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKTsjZ3Q9dGhpcy5wb2ludGVyZG93bi5iaW5kKHRoaXMpOyNtdD1uZXcgTWFwOyNmdD0hMTsjYnQ9ITE7I0F0O3N0YXRpYyBfaW5pdGlhbGl6ZWQ9ITE7Y29uc3RydWN0b3IodCl7aWYoIUFubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQpe0Fubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQ9ITA7ci5GcmVlVGV4dEVkaXRvci5pbml0aWFsaXplKHQubDEwbik7YS5JbmtFZGl0b3IuaW5pdGlhbGl6ZSh0LmwxMG4pfXQudWlNYW5hZ2VyLnJlZ2lzdGVyRWRpdG9yVHlwZXMoW3IuRnJlZVRleHRFZGl0b3IsYS5JbmtFZGl0b3JdKTt0aGlzLiNBdD10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25TdG9yYWdlPXQuYW5ub3RhdGlvblN0b3JhZ2U7dGhpcy5wYWdlSW5kZXg9dC5wYWdlSW5kZXg7dGhpcy5kaXY9dC5kaXY7dGhpcy4jZHQ9dC5hY2Nlc3NpYmlsaXR5TWFuYWdlcjt0aGlzLiNBdC5hZGRMYXllcih0aGlzKX11cGRhdGVUb29sYmFyKHQpe3RoaXMuI0F0LnVwZGF0ZVRvb2xiYXIodCl9dXBkYXRlTW9kZSh0PXRoaXMuI0F0LmdldE1vZGUoKSl7dGhpcy4jX3QoKTtpZih0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspe3RoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO3RoaXMuZGlzYWJsZUNsaWNrKCl9ZWxzZSB0aGlzLmVuYWJsZUNsaWNrKCk7dGhpcy4jQXQudW5zZWxlY3RBbGwoKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHQ9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJpbmtFZGl0aW5nIix0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspfWFkZElua0VkaXRvcklmTmVlZGVkKHQpe2lmKCF0JiZ0aGlzLiNBdC5nZXRNb2RlKCkhPT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSylyZXR1cm47aWYoIXQpZm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpaWYodC5pc0VtcHR5KCkpe3Quc2V0SW5CYWNrZ3JvdW5kKCk7cmV0dXJufXRoaXMuI3Z0KHtvZmZzZXRYOjAsb2Zmc2V0WTowfSkuc2V0SW5CYWNrZ3JvdW5kKCl9c2V0RWRpdGluZ1N0YXRlKHQpe3RoaXMuI0F0LnNldEVkaXRpbmdTdGF0ZSh0KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNBdC5hZGRDb21tYW5kcyh0KX1lbmFibGUoKXt0aGlzLmRpdi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIjtmb3IoY29uc3QgdCBvZiB0aGlzLiNtdC52YWx1ZXMoKSl0LmVuYWJsZUVkaXRpbmcoKX1kaXNhYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5kaXNhYmxlRWRpdGluZygpfXNldEFjdGl2ZUVkaXRvcih0KXt0aGlzLiNBdC5nZXRBY3RpdmUoKSE9PXQmJnRoaXMuI0F0LnNldEFjdGl2ZUVkaXRvcih0KX1lbmFibGVDbGljaygpe3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNndCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNwdCl9ZGlzYWJsZUNsaWNrKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2d0KTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI3B0KX1hdHRhY2godCl7dGhpcy4jbXQuc2V0KHQuaWQsdCl9ZGV0YWNoKHQpe3RoaXMuI210LmRlbGV0ZSh0LmlkKTt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdil9cmVtb3ZlKHQpe3RoaXMuI0F0LnJlbW92ZUVkaXRvcih0KTt0aGlzLmRldGFjaCh0KTt0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlbW92ZSh0LmlkKTt0LmRpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtzZXRUaW1lb3V0KCgoKT0+e3QuZGl2LnN0eWxlLmRpc3BsYXk9IiI7dC5kaXYucmVtb3ZlKCk7dC5pc0F0dGFjaGVkVG9ET009ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkmJnRoaXMuI0F0LmZvY3VzTWFpbkNvbnRhaW5lcigpfSksMCk7dGhpcy4jYnR8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfSN5dCh0KXtpZih0LnBhcmVudCE9PXRoaXMpe3RoaXMuYXR0YWNoKHQpO3QucGFnZUluZGV4PXRoaXMucGFnZUluZGV4O3QucGFyZW50Py5kZXRhY2godCk7dC5wYXJlbnQ9dGhpcztpZih0LmRpdiYmdC5pc0F0dGFjaGVkVG9ET00pe3QuZGl2LnJlbW92ZSgpO3RoaXMuZGl2LmFwcGVuZCh0LmRpdil9fX1hZGQodCl7dGhpcy4jeXQodCk7dGhpcy4jQXQuYWRkRWRpdG9yKHQpO3RoaXMuYXR0YWNoKHQpO2lmKCF0LmlzQXR0YWNoZWRUb0RPTSl7Y29uc3QgZT10LnJlbmRlcigpO3RoaXMuZGl2LmFwcGVuZChlKTt0LmlzQXR0YWNoZWRUb0RPTT0hMH10aGlzLm1vdmVFZGl0b3JJbkRPTSh0KTt0Lm9uY2VBZGRlZCgpO3RoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jZHQ/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpe3QuaXNFbXB0eSgpfHx0aGlzLmFubm90YXRpb25TdG9yYWdlLmhhcyh0LmlkKXx8dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmlkLHQpfWFkZE9yUmVidWlsZCh0KXt0Lm5lZWRzVG9CZVJlYnVpbHQoKT90LnJlYnVpbGQoKTp0aGlzLmFkZCh0KX1hZGRBTmV3RWRpdG9yKHQpe3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOigpPT57dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX1hZGRVbmRvYWJsZUVkaXRvcih0KXt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFkZE9yUmVidWlsZCh0KX0sdW5kbzooKT0+e3QucmVtb3ZlKCl9LG11c3RFeGVjOiExfSl9Z2V0TmV4dElkKCl7cmV0dXJuIHRoaXMuI0F0LmdldElkKCl9I1N0KHQpe3N3aXRjaCh0aGlzLiNBdC5nZXRNb2RlKCkpe2Nhc2Ugbi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IHIuRnJlZVRleHRFZGl0b3IodCk7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpyZXR1cm4gbmV3IGEuSW5rRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIHIuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzKTtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBhLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMpfXJldHVybiBudWxsfSN2dCh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCkscz10aGlzLiNTdCh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0pO3MmJnRoaXMuYWRkKHMpO3JldHVybiBzfXNldFNlbGVjdGVkKHQpe3RoaXMuI0F0LnNldFNlbGVjdGVkKHQpfXRvZ2dsZVNlbGVjdGVkKHQpe3RoaXMuI0F0LnRvZ2dsZVNlbGVjdGVkKHQpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuI0F0LmlzU2VsZWN0ZWQodCl9dW5zZWxlY3QodCl7dGhpcy4jQXQudW5zZWxlY3QodCl9cG9pbnRlcnVwKHQpe2NvbnN0IGU9aS5LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7aWYoISgwIT09dC5idXR0b258fHQuY3RybEtleSYmZSkmJnQudGFyZ2V0PT09dGhpcy5kaXYmJnRoaXMuI2Z0KXt0aGlzLiNmdD0hMTt0aGlzLiN1dD90aGlzLiN2dCh0KTp0aGlzLiN1dD0hMH19cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jZnQ9ITA7Y29uc3Qgcz10aGlzLiNBdC5nZXRBY3RpdmUoKTt0aGlzLiN1dD0hc3x8cy5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxzPXRoaXMuI0F0LmdldEVkaXRvcihlKTtpZighcylyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI3l0KHMpO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtaS54LHI9dC5jbGllbnRZLWkueTtzLnRyYW5zbGF0ZShuLXMuc3RhcnRYLHItcy5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKHMpO3MuZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNBdC5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jQXQuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI210LnZhbHVlcygpKXt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCk7dC5wYXJlbnQ9bnVsbH10aGlzLmRpdj1udWxsO3RoaXMuI210LmNsZWFyKCk7dGhpcy4jQXQucmVtb3ZlTGF5ZXIodGhpcyl9I190KCl7dGhpcy4jYnQ9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5pc0VtcHR5KCkmJnQucmVtb3ZlKCk7dGhpcy4jYnQ9ITF9cmVuZGVyKHQpe3RoaXMudmlld3BvcnQ9dC52aWV3cG9ydDsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dGhpcy5zZXREaW1lbnNpb25zKCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQXQuZ2V0RWRpdG9ycyh0aGlzLnBhZ2VJbmRleCkpdGhpcy5hZGQodCk7dGhpcy51cGRhdGVNb2RlKCl9dXBkYXRlKHQpe3RoaXMuI0F0LmNvbW1pdE9yUmVtb3ZlKCk7dGhpcy52aWV3cG9ydD10LnZpZXdwb3J0O3RoaXMuc2V0RGltZW5zaW9ucygpO3RoaXMudXBkYXRlTW9kZSgpfWdldCBzY2FsZUZhY3Rvcigpe3JldHVybiB0aGlzLnZpZXdwb3J0LnNjYWxlfWdldCBwYWdlRGltZW5zaW9ucygpe2NvbnN0W3QsZSxzLGldPXRoaXMudmlld3BvcnQudmlld0JveDtyZXR1cm5bcy10LGktZV19Z2V0IHZpZXdwb3J0QmFzZURpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQ7cmV0dXJuIHMlMTgwPT0wP1t0LGVdOltlLHRdfXNldERpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQsaT1zJTE4MCE9MCxuPU1hdGguZmxvb3IodCkrInB4IixyPU1hdGguZmxvb3IoZSkrInB4Ijt0aGlzLmRpdi5zdHlsZS53aWR0aD1pP3I6bjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9aT9uOnI7dGhpcy5kaXYuc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLHMpfX1lLkFubm90YXRpb25FZGl0b3JMYXllcj1Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNSkscj1zKDQpO2NsYXNzIEZyZWVUZXh0RWRpdG9yIGV4dGVuZHMgci5Bbm5vdGF0aW9uRWRpdG9yeyN4dD10aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKTsjRXQ9dGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpOyNDdD10aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcyk7I1B0PXRoaXMuZWRpdG9yRGl2S2V5ZG93bi5iaW5kKHRoaXMpOyNUdDsjd3Q9IiI7I2t0PWAke3RoaXMuaWR9LWVkaXRvcmA7I0Z0PSExOyNNdDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIF9rZXlib2FyZE1hbmFnZXI9bmV3IG4uS2V5Ym9hcmRNYW5hZ2VyKFtbWyJjdHJsK0VudGVyIiwibWFjK21ldGErRW50ZXIiLCJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLmNvbW1pdE9yUmVtb3ZlXV0pO3N0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1R0PXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiNNdD10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1J0KGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNEdChlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI010XSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNUdF1dfSNSdCh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik7dGhpcy4jTXQ9dDt0aGlzLiNJdCgpfSxlPXRoaXMuI010O3RoaXMucGFyZW50LmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRGb250c2l6ZSh0KX0sdW5kbzooKT0+e3NldEZvbnRzaXplKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy4jVHQ7dGhpcy5wYXJlbnQuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1R0PXQ7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9dH0sdW5kbzooKT0+e3RoaXMuI1R0PWU7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9ZX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bLUZyZWVUZXh0RWRpdG9yLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnQuc2NhbGVGYWN0b3IsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcl19cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtudWxsIT09dGhpcy5kaXYmJih0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMucGFyZW50LnVwZGF0ZVRvb2xiYXIoaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCk7c3VwZXIuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZSgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KX19ZGlzYWJsZUVkaXRNb2RlKCl7aWYodGhpcy5pc0luRWRpdE1vZGUoKSl7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LmFkZCgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdGhpcy4ja3QpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KTt0aGlzLmRpdi5mb2N1cygpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3QudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9b25jZUFkZGVkKCl7aWYoIXRoaXMud2lkdGgpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLmVkaXRvckRpdi5mb2N1cygpfX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9cmVtb3ZlKCl7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIik7c3VwZXIucmVtb3ZlKCl9I090KCl7Y29uc3QgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCB0PXMuZmlyc3RDaGlsZDsiI3RleHQiPT09dD8ubm9kZU5hbWU/ZS5wdXNoKHQuZGF0YSk6ZS5wdXNoKCIiKX1yZXR1cm4gZS5qb2luKCJcbiIpfSNJdCgpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxzPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9cy53aWR0aC90O3RoaXMuaGVpZ2h0PXMuaGVpZ2h0L2V9Y29tbWl0KCl7c3VwZXIuY29tbWl0KCk7aWYoIXRoaXMuI0Z0KXt0aGlzLiNGdD0hMDt0aGlzLnBhcmVudC5hZGRVbmRvYWJsZUVkaXRvcih0aGlzKX10aGlzLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuI3d0PXRoaXMuI090KCkudHJpbUVuZCgpO3RoaXMuI0l0KCl9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4gdGhpcy5pc0luRWRpdE1vZGUoKX1kYmxjbGljayh0KXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1rZXlkb3duKHQpe2lmKHQudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fWVkaXRvckRpdktleWRvd24odCl7RnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9ZWRpdG9yRGl2Rm9jdXModCl7dGhpcy5pc0VkaXRpbmc9ITB9ZWRpdG9yRGl2Qmx1cih0KXt0aGlzLmlzRWRpdGluZz0hMX1lZGl0b3JEaXZJbnB1dCh0KXt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgiZnJlZVRleHRFZGl0aW5nIix0aGlzLmlzRW1wdHkoKSl9ZGlzYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dGhpcy5lZGl0b3JEaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIpfWVuYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZXh0Ym94Iik7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIsITApfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO3RoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuI2t0KTt0aGlzLmVuYWJsZUVkaXRpbmcoKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5lZGl0b3JEaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtY29udGVudCIsdCkpKTt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITA7Y29uc3R7c3R5bGU6c309dGhpcy5lZGl0b3JEaXY7cy5mb250U2l6ZT1gY2FsYygke3RoaXMuI010fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3MuY29sb3I9dGhpcy4jVHQ7dGhpcy5kaXYuYXBwZW5kKHRoaXMuZWRpdG9yRGl2KTt0aGlzLm92ZXJsYXlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoIm92ZXJsYXkiLCJlbmFibGVkIik7dGhpcy5kaXYuYXBwZW5kKHRoaXMub3ZlcmxheURpdik7KDAsbi5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZGJsY2xpY2siLCJrZXlkb3duIl0pO2lmKHRoaXMud2lkdGgpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLnNldEF0KHQqcyxlKmksdGhpcy53aWR0aCpzLHRoaXMuaGVpZ2h0KmkpO2Zvcihjb25zdCB0IG9mIHRoaXMuI3d0LnNwbGl0KCJcbiIpKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuYXBwZW5kKHQ/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7dGhpcy5lZGl0b3JEaXYuYXBwZW5kKGUpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZXt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwfXJldHVybiB0aGlzLmRpdn1nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmVkaXRvckRpdn1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPXN1cGVyLmRlc2VyaWFsaXplKHQsZSk7cy4jTXQ9dC5mb250U2l6ZTtzLiNUdD1pLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO3MuI3d0PXQudmFsdWU7cmV0dXJuIHN9c2VyaWFsaXplKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIG51bGw7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50LnNjYWxlRmFjdG9yLGU9dGhpcy5nZXRSZWN0KHQsdCkscz1yLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpzLGZvbnRTaXplOnRoaXMuI010LHZhbHVlOnRoaXMuI3d0LHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLkZyZWVUZXh0RWRpdG9yPUZyZWVUZXh0RWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuSW5rRWRpdG9yPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZml0Q3VydmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpdEN1cnZlfX0pO3ZhciBpPXMoMSksbj1zKDQpLHI9cygyNCksYT1zKDUpO2NvbnN0IG89MTY7Y2xhc3MgSW5rRWRpdG9yIGV4dGVuZHMgbi5Bbm5vdGF0aW9uRWRpdG9yeyNMdD0wOyNOdD0wOyNCdD0wOyNqdD10aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcyk7I1V0PXRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcyk7I3F0PXRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcyk7I1d0PXRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKTsjR3Q9ITE7I0h0PSExOyN6dD1udWxsOyNWdD1udWxsOyNYdD0wOyMkdD0wOyNZdD1udWxsO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0T3BhY2l0eT0xO3N0YXRpYyBfZGVmYXVsdFRoaWNrbmVzcz0xO3N0YXRpYyBfbDEwblByb21pc2U7c3RhdGljIF90eXBlPSJpbmsiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6Imlua0VkaXRvciJ9KTt0aGlzLmNvbG9yPXQuY29sb3J8fG51bGw7dGhpcy50aGlja25lc3M9dC50aGlja25lc3N8fG51bGw7dGhpcy5vcGFjaXR5PXQub3BhY2l0eXx8bnVsbDt0aGlzLnBhdGhzPVtdO3RoaXMuYmV6aWVyUGF0aDJEPVtdO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy5zY2FsZUZhY3Rvcj0xO3RoaXMudHJhbnNsYXRpb25YPXRoaXMudHJhbnNsYXRpb25ZPTA7dGhpcy54PTA7dGhpcy55PTB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jS3QoZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNEdChlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jSnQoZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxuLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jS3QodCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy50aGlja25lc3M9dDt0aGlzLiNRdCgpfSx1bmRvOigpPT57dGhpcy50aGlja25lc3M9ZTt0aGlzLiNRdCgpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy5jb2xvcjt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5jb2xvcj10O3RoaXMuI1p0KCl9LHVuZG86KCk9Pnt0aGlzLmNvbG9yPWU7dGhpcy4jWnQoKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0p0KHQpe3QvPTEwMDtjb25zdCBlPXRoaXMub3BhY2l0eTt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jWnQoKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1p0KCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4jdGUoKTt0aGlzLiNlZSgpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI3NlKCl9dGhpcy4jUXQoKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI1Z0LmRpc2Nvbm5lY3QoKTt0aGlzLiNWdD1udWxsO3N1cGVyLnJlbW92ZSgpfX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiNHdCYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jV3QpO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jcXQpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNXdCk7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNxdCl9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNpZSgpe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmUscm90YXRpb246c309dGhpcy5wYXJlbnQudmlld3BvcnQ7c3dpdGNoKHMpe2Nhc2UgOTA6cmV0dXJuWzAsdCx0LGVdO2Nhc2UgMTgwOnJldHVyblt0LGUsdCxlXTtjYXNlIDI3MDpyZXR1cm5bZSwwLHQsZV07ZGVmYXVsdDpyZXR1cm5bMCwwLHQsZV19fSNuZSgpe3RoaXMuY3R4LmxpbmVXaWR0aD10aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvci90aGlzLnNjYWxlRmFjdG9yO3RoaXMuY3R4LmxpbmVDYXA9InJvdW5kIjt0aGlzLmN0eC5saW5lSm9pbj0icm91bmQiO3RoaXMuY3R4Lm1pdGVyTGltaXQ9MTA7dGhpcy5jdHguc3Ryb2tlU3R5bGU9YCR7dGhpcy5jb2xvcn0keygwLGEub3BhY2l0eVRvSGV4KSh0aGlzLm9wYWNpdHkpfWB9I3JlKHQsZSl7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0h0KXt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN6dD1udWxsO3RoaXMuI25lKCk7dGhpcy5jdHguYmVnaW5QYXRoKCk7dGhpcy5jdHgubW92ZVRvKHQsZSk7dGhpcy4jWXQ9KCk9PntpZih0aGlzLiNZdCl7aWYodGhpcy4jenQpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KX1lbHNlIHRoaXMuI1p0KCk7dGhpcy5jdHgubGluZVRvKC4uLnRoaXMuI3p0KTt0aGlzLiN6dD1udWxsO3RoaXMuY3R4LnN0cm9rZSgpfXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jWXQpfX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiNZdCl9I2FlKHQsZSl7Y29uc3RbcyxpXT10aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtpZih0IT09c3x8ZSE9PWkpe3RoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSk7dGhpcy4jenQ9W3QsZV19fSNvZSh0LGUpe3RoaXMuY3R4LmNsb3NlUGF0aCgpO3RoaXMuI1l0PW51bGw7dD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKTtlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTtjb25zdFtzLGldPXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3Q9PT1zJiZlPT09aXx8dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTtsZXQgbjtpZigxIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpbj0oMCxyLmZpdEN1cnZlKSh0aGlzLmN1cnJlbnRQYXRoLDMwLG51bGwpO2Vsc2V7Y29uc3Qgcz1bdCxlXTtuPVtbcyxzLnNsaWNlKCkscy5zbGljZSgpLHNdXX1jb25zdCBhPUlua0VkaXRvci4jbGUobik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MDt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goYSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLnBhdGhzLnBvcCgpO3RoaXMuYmV6aWVyUGF0aDJELnBvcCgpO2lmKDA9PT10aGlzLnBhdGhzLmxlbmd0aCl0aGlzLnJlbW92ZSgpO2Vsc2V7aWYoIXRoaXMuY2FudmFzKXt0aGlzLiN0ZSgpO3RoaXMuI2VlKCl9dGhpcy4jUXQoKX19LG11c3RFeGVjOiEwfSl9I1p0KCl7aWYodGhpcy5pc0VtcHR5KCkpe3RoaXMuI2NlKCk7cmV0dXJufXRoaXMuI25lKCk7Y29uc3R7Y2FudmFzOnQsY3R4OmV9PXRoaXM7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KTt0aGlzLiNjZSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKWUuc3Ryb2tlKHQpfWNvbW1pdCgpe2lmKCF0aGlzLiNHdCl7c3VwZXIuY29tbWl0KCk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuI0d0PSEwO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIik7dGhpcy4jUXQoITApO3RoaXMucGFyZW50LmFkZElua0VkaXRvcklmTmVlZGVkKCEwKTt0aGlzLnBhcmVudC5tb3ZlRWRpdG9ySW5ET00odGhpcyk7dGhpcy5kaXYuZm9jdXMoKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3RoaXMuZW5hYmxlRWRpdE1vZGUoKX1jYW52YXNQb2ludGVyZG93bih0KXtpZigwPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiF0aGlzLiNHdCl7dGhpcy5zZXRJbkZvcmVncm91bmQoKTsibW91c2UiIT09dC50eXBlJiZ0aGlzLmRpdi5mb2N1cygpO3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix0aGlzLiNVdCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuI2p0KTt0aGlzLiNyZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX19Y2FudmFzUG9pbnRlcm1vdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLiNhZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX1jYW52YXNQb2ludGVydXAodCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYwIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy4jaGUodCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX19Y2FudmFzUG9pbnRlcmxlYXZlKHQpe3RoaXMuI2hlKHQpO3RoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9I2hlKHQpe3RoaXMuI29lKHQub2Zmc2V0WCx0Lm9mZnNldFkpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jVXQpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNqdCk7dGhpcy5wYXJlbnQuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0aGlzKX0jdGUoKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jZWUoKXtsZXQgdD1udWxsO3RoaXMuI1Z0PW5ldyBSZXNpemVPYnNlcnZlcigoZT0+e2NvbnN0IHM9ZVswXS5jb250ZW50UmVjdDtpZihzLndpZHRoJiZzLmhlaWdodCl7bnVsbCE9PXQmJmNsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5maXhEaW1zKCk7dD1udWxsfSksMTAwKTt0aGlzLnNldERpbWVuc2lvbnMocy53aWR0aCxzLmhlaWdodCl9fSkpO3RoaXMuI1Z0Lm9ic2VydmUodGhpcy5kaXYpfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtzLGksbixyXT10aGlzLiNpZSgpO3RoaXMuc2V0QXQocyxpLDAsMCk7dGhpcy5zZXREaW1zKG4scik7dGhpcy4jdGUoKTtpZih0aGlzLndpZHRoKXtjb25zdFtzLGldPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy5zZXRBdCh0KnMsZSppLHRoaXMud2lkdGgqcyx0aGlzLmhlaWdodCppKTt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMuc2V0RGltcyh0aGlzLndpZHRoKnMsdGhpcy5oZWlnaHQqaSk7dGhpcy4jWnQoKTt0aGlzLiNkZSgpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI2VlKCk7cmV0dXJuIHRoaXMuZGl2fSNzZSgpe2lmKCF0aGlzLiNIdClyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMuY2FudmFzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKnQpO3RoaXMuY2FudmFzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQqZSk7dGhpcy4jY2UoKX1zZXREaW1lbnNpb25zKHQsZSl7Y29uc3Qgcz1NYXRoLnJvdW5kKHQpLGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLiNYdD09PXMmJnRoaXMuIyR0PT09aSlyZXR1cm47dGhpcy4jWHQ9czt0aGlzLiMkdD1pO3RoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7aWYodGhpcy4jTHQmJk1hdGguYWJzKHRoaXMuI0x0LXQvZSk+LjAxKXtlPU1hdGguY2VpbCh0L3RoaXMuI0x0KTt0aGlzLnNldERpbXModCxlKX1jb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy53aWR0aD10L247dGhpcy5oZWlnaHQ9ZS9yO3RoaXMuI0d0JiZ0aGlzLiN1ZSh0LGUpO3RoaXMuI3NlKCk7dGhpcy4jWnQoKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn0jdWUodCxlKXtjb25zdCBzPXRoaXMuI3BlKCksaT0odC1zKS90aGlzLiNCdCxuPShlLXMpL3RoaXMuI050O3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxuKX0jY2UoKXtjb25zdCB0PXRoaXMuI3BlKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjbGUodCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3RbaSxuLHIsYV09dFtzXTswPT09cyYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKG5bMF0sblsxXSxyWzBdLHJbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX0jZ2UodCxlLHMsaSl7Y29uc3Qgbj1bXSxyPXRoaXMudGhpY2tuZXNzLzI7bGV0IGEsbztmb3IoY29uc3QgbCBvZiB0aGlzLnBhdGhzKXthPVtdO289W107Zm9yKGxldCBuPTAsYz1sLmxlbmd0aDtuPGM7bisrKXtjb25zdFtjLGgsZCx1XT1sW25dLHA9dCooY1swXStlKStyLGc9aS10KihjWzFdK3MpLXIsbT10KihoWzBdK2UpK3IsZj1pLXQqKGhbMV0rcyktcixiPXQqKGRbMF0rZSkrcixBPWktdCooZFsxXStzKS1yLF89dCoodVswXStlKStyLHY9aS10Kih1WzFdK3MpLXI7aWYoMD09PW4pe2EucHVzaChwLGcpO28ucHVzaChwLGcpfWEucHVzaChtLGYsYixBLF8sdik7dGhpcy4jbWUocCxnLG0sZixiLEEsXyx2LDQsbyl9bi5wdXNoKHtiZXppZXI6YSxwb2ludHM6b30pfXJldHVybiBufSNtZSh0LGUscyxpLG4scixhLG8sbCxjKXtpZih0aGlzLiNmZSh0LGUscyxpLG4scixhLG8pKWMucHVzaChhLG8pO2Vsc2V7Zm9yKGxldCBoPTE7aDxsLTE7aCsrKXtjb25zdCBkPWgvbCx1PTEtZDtsZXQgcD1kKnQrdSpzLGc9ZCplK3UqaSxtPWQqcyt1Km4sZj1kKmkrdSpyO3A9ZCpwK3UqbTtnPWQqZyt1KmY7bT1kKm0rdSooZCpuK3UqYSk7Zj1kKmYrdSooZCpyK3Uqbyk7cD1kKnArdSptO2c9ZCpnK3UqZjtjLnB1c2gocCxnKX1jLnB1c2goYSxvKX19I2ZlKHQsZSxzLGksbixyLGEsbyl7Y29uc3QgbD0oMypzLTIqdC1hKSoqMixjPSgzKmktMiplLW8pKioyLGg9KDMqbi10LTIqYSkqKjIsZD0oMypyLWUtMipvKSoqMjtyZXR1cm4gTWF0aC5tYXgobCxoKStNYXRoLm1heChjLGQpPD0xMH0jYmUoKXtsZXQgdD0xLzAsZT0tMS8wLHM9MS8wLG49LTEvMDtmb3IoY29uc3QgciBvZiB0aGlzLnBhdGhzKWZvcihjb25zdFthLG8sbCxjXW9mIHIpe2NvbnN0IHI9aS5VdGlsLmJlemllckJvdW5kaW5nQm94KC4uLmEsLi4ubywuLi5sLC4uLmMpO3Q9TWF0aC5taW4odCxyWzBdKTtzPU1hdGgubWluKHMsclsxXSk7ZT1NYXRoLm1heChlLHJbMl0pO249TWF0aC5tYXgobixyWzNdKX1yZXR1cm5bdCxzLGUsbl19I3BlKCl7cmV0dXJuIHRoaXMuI0d0P01hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik6MH0jUXQodD0hMSl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuO2lmKCF0aGlzLiNHdCl7dGhpcy4jWnQoKTtyZXR1cm59Y29uc3QgZT10aGlzLiNiZSgpLHM9dGhpcy4jcGUoKTt0aGlzLiNCdD1NYXRoLm1heChvLGVbMl0tZVswXSk7dGhpcy4jTnQ9TWF0aC5tYXgobyxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKHMrdGhpcy4jQnQqdGhpcy5zY2FsZUZhY3Rvciksbj1NYXRoLmNlaWwocyt0aGlzLiNOdCp0aGlzLnNjYWxlRmFjdG9yKSxbcixhXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMud2lkdGg9aS9yO3RoaXMuaGVpZ2h0PW4vYTt0aGlzLiNMdD1pL247dGhpcy4jZGUoKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jc2UoKTt0aGlzLiNadCgpO3RoaXMuI1h0PWk7dGhpcy4jJHQ9bjt0aGlzLnNldERpbXMoaSxuKTtjb25zdCBoPXQ/cy90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX0jZGUoKXtjb25zdHtzdHlsZTp0fT10aGlzLmRpdjtpZih0aGlzLiNMdD49MSl7dC5taW5IZWlnaHQ9IjE2cHgiO3QubWluV2lkdGg9YCR7TWF0aC5yb3VuZCh0aGlzLiNMdCpvKX1weGB9ZWxzZXt0Lm1pbldpZHRoPSIxNnB4Ijt0Lm1pbkhlaWdodD1gJHtNYXRoLnJvdW5kKG8vdGhpcy4jTHQpfXB4YH19c3RhdGljIGRlc2VyaWFsaXplKHQsZSl7Y29uc3Qgcz1zdXBlci5kZXNlcmlhbGl6ZSh0LGUpO3MudGhpY2tuZXNzPXQudGhpY2tuZXNzO3MuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W24scl09ZS5wYWdlRGltZW5zaW9ucyxhPXMud2lkdGgqbixsPXMuaGVpZ2h0KnIsYz1lLnNjYWxlRmFjdG9yLGg9dC50aGlja25lc3MvMjtzLiNMdD1hL2w7cy4jR3Q9ITA7cy4jWHQ9TWF0aC5yb3VuZChhKTtzLiMkdD1NYXRoLnJvdW5kKGwpO2Zvcihjb25zdHtiZXppZXI6ZX1vZiB0LnBhdGhzKXtjb25zdCB0PVtdO3MucGF0aHMucHVzaCh0KTtsZXQgaT1jKihlWzBdLWgpLG49YyoobC1lWzFdLWgpO2ZvcihsZXQgcz0yLHI9ZS5sZW5ndGg7czxyO3MrPTYpe2NvbnN0IHI9YyooZVtzXS1oKSxhPWMqKGwtZVtzKzFdLWgpLG89YyooZVtzKzJdLWgpLGQ9YyoobC1lW3MrM10taCksdT1jKihlW3MrNF0taCkscD1jKihsLWVbcys1XS1oKTt0LnB1c2goW1tpLG5dLFtyLGFdLFtvLGRdLFt1LHBdXSk7aT11O249cH1jb25zdCByPXRoaXMuI2xlKHQpO3MuYmV6aWVyUGF0aDJELnB1c2gocil9Y29uc3QgZD1zLiNiZSgpO3MuI0J0PU1hdGgubWF4KG8sZFsyXS1kWzBdKTtzLiNOdD1NYXRoLm1heChvLGRbM10tZFsxXSk7cy4jdWUoYSxsKTtyZXR1cm4gc31zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9dGhpcy5yb3RhdGlvbiUxODA9PTA/dFszXS10WzFdOnRbMl0tdFswXSxzPW4uQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyxjb2xvcjpzLHRoaWNrbmVzczp0aGlzLnRoaWNrbmVzcyxvcGFjaXR5OnRoaXMub3BhY2l0eSxwYXRoczp0aGlzLiNnZSh0aGlzLnNjYWxlRmFjdG9yL3RoaXMucGFyZW50LnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5maXRDdXJ2ZT12b2lkIDA7Y29uc3QgaT1zKDI1KTtlLmZpdEN1cnZlPWl9LHQ9PntmdW5jdGlvbiBmaXRDdWJpYyh0LGUscyxpLG4pe3ZhciByLGEsbyxsLGMsaCxkLHUscCxnLG0sZixiO2lmKDI9PT10Lmxlbmd0aCl7Zj1tYXRocy52ZWN0b3JMZW4obWF0aHMuc3VidHJhY3QodFswXSx0WzFdKSkvMztyZXR1cm5bcj1bdFswXSxtYXRocy5hZGRBcnJheXModFswXSxtYXRocy5tdWxJdGVtcyhlLGYpKSxtYXRocy5hZGRBcnJheXModFsxXSxtYXRocy5tdWxJdGVtcyhzLGYpKSx0WzFdXV19YT1mdW5jdGlvbiBjaG9yZExlbmd0aFBhcmFtZXRlcml6ZSh0KXt2YXIgZSxzLGksbj1bXTt0LmZvckVhY2goKCh0LHIpPT57ZT1yP3MrbWF0aHMudmVjdG9yTGVuKG1hdGhzLnN1YnRyYWN0KHQsaSkpOjA7bi5wdXNoKGUpO3M9ZTtpPXR9KSk7cmV0dXJuIG49bi5tYXAoKHQ9PnQvcykpfSh0KTtbcixsLGhdPWdlbmVyYXRlQW5kUmVwb3J0KHQsYSxhLGUscyxuKTtpZigwPT09bHx8bDxpKXJldHVybltyXTtpZihsPGkqaSl7bz1hO2M9bDtkPWg7Zm9yKGI9MDtiPDIwO2IrKyl7bz1yZXBhcmFtZXRlcml6ZShyLHQsbyk7W3IsbCxoXT1nZW5lcmF0ZUFuZFJlcG9ydCh0LGEsbyxlLHMsbik7aWYobDxpKXJldHVybltyXTtpZihoPT09ZCl7bGV0IHQ9bC9jO2lmKHQ+Ljk5OTkmJnQ8MS4wMDAxKWJyZWFrfWM9bDtkPWh9fW09W107aWYoKHU9bWF0aHMuc3VidHJhY3QodFtoLTFdLHRbaCsxXSkpLmV2ZXJ5KCh0PT4wPT09dCkpKXt1PW1hdGhzLnN1YnRyYWN0KHRbaC0xXSx0W2hdKTtbdVswXSx1WzFdXT1bLXVbMV0sdVswXV19cD1tYXRocy5ub3JtYWxpemUodSk7Zz1tYXRocy5tdWxJdGVtcyhwLC0xKTtyZXR1cm4gbT0obT1tLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKDAsaCsxKSxlLHAsaSxuKSkpLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKGgpLGcscyxpLG4pKX1mdW5jdGlvbiBnZW5lcmF0ZUFuZFJlcG9ydCh0LGUscyxpLG4scil7dmFyIGEsbyxsO2E9ZnVuY3Rpb24gZ2VuZXJhdGVCZXppZXIodCxlLHMsaSl7dmFyIG4scixhLG8sbCxjLGgsZCx1LHAsZyxtLGYsYixBLF8sdix5PXRbMF0sUz10W3QubGVuZ3RoLTFdO249W3ksbnVsbCxudWxsLFNdO3I9bWF0aHMuemVyb3NfWHgyeDIoZS5sZW5ndGgpO2ZvcihmPTAsYj1lLmxlbmd0aDtmPGI7ZisrKXt2PTEtKF89ZVtmXSk7KGE9cltmXSlbMF09bWF0aHMubXVsSXRlbXMocywzKl8qKHYqdikpO2FbMV09bWF0aHMubXVsSXRlbXMoaSwzKnYqKF8qXykpfW89W1swLDBdLFswLDBdXTtsPVswLDBdO2ZvcihmPTAsYj10Lmxlbmd0aDtmPGI7ZisrKXtfPWVbZl07YT1yW2ZdO29bMF1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMF0pO29bMF1bMV0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMV0rPW1hdGhzLmRvdChhWzFdLGFbMV0pO0E9bWF0aHMuc3VidHJhY3QodFtmXSxiZXppZXIucShbeSx5LFMsU10sXykpO2xbMF0rPW1hdGhzLmRvdChhWzBdLEEpO2xbMV0rPW1hdGhzLmRvdChhWzFdLEEpfWM9b1swXVswXSpvWzFdWzFdLW9bMV1bMF0qb1swXVsxXTtoPW9bMF1bMF0qbFsxXS1vWzFdWzBdKmxbMF07ZD1sWzBdKm9bMV1bMV0tbFsxXSpvWzBdWzFdO3U9MD09PWM/MDpkL2M7cD0wPT09Yz8wOmgvYzttPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdCh5LFMpKTtpZih1PChnPTFlLTYqbSl8fHA8Zyl7blsxXT1tYXRocy5hZGRBcnJheXMoeSxtYXRocy5tdWxJdGVtcyhzLG0vMykpO25bMl09bWF0aHMuYWRkQXJyYXlzKFMsbWF0aHMubXVsSXRlbXMoaSxtLzMpKX1lbHNle25bMV09bWF0aHMuYWRkQXJyYXlzKHksbWF0aHMubXVsSXRlbXMocyx1KSk7blsyXT1tYXRocy5hZGRBcnJheXMoUyxtYXRocy5tdWxJdGVtcyhpLHApKX1yZXR1cm4gbn0odCxzLGksbik7W28sbF09ZnVuY3Rpb24gY29tcHV0ZU1heEVycm9yKHQsZSxzKXt2YXIgaSxuLHIsYSxvLGwsYyxoO249MDtyPU1hdGguZmxvb3IodC5sZW5ndGgvMik7Y29uc3QgZD1tYXBUdG9SZWxhdGl2ZURpc3RhbmNlcyhlLDEwKTtmb3Iobz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Yz10W29dO2g9ZmluZF90KGUsc1tvXSxkLDEwKTtpZigoaT0oYT1tYXRocy5zdWJ0cmFjdChiZXppZXIucShlLGgpLGMpKVswXSphWzBdK2FbMV0qYVsxXSk+bil7bj1pO3I9b319cmV0dXJuW24scl19KHQsYSxlKTtyJiZyKHtiZXo6YSxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6byxtYXhQb2ludDpsfSk7cmV0dXJuW2EsbyxsXX1mdW5jdGlvbiByZXBhcmFtZXRlcml6ZSh0LGUscyl7cmV0dXJuIHMubWFwKCgocyxpKT0+bmV3dG9uUmFwaHNvblJvb3RGaW5kKHQsZVtpXSxzKSkpfWZ1bmN0aW9uIG5ld3RvblJhcGhzb25Sb290RmluZCh0LGUscyl7dmFyIGk9bWF0aHMuc3VidHJhY3QoYmV6aWVyLnEodCxzKSxlKSxuPWJlemllci5xcHJpbWUodCxzKSxyPW1hdGhzLm11bE1hdHJpeChpLG4pLGE9bWF0aHMuc3VtKG1hdGhzLnNxdWFyZUl0ZW1zKG4pKSsyKm1hdGhzLm11bE1hdHJpeChpLGJlemllci5xcHJpbWVwcmltZSh0LHMpKTtyZXR1cm4gMD09PWE/czpzLXIvYX12YXIgbWFwVHRvUmVsYXRpdmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHMsaT1bMF0sbj10WzBdLHI9MCxhPTE7YTw9ZTthKyspe3M9YmV6aWVyLnEodCxhL2UpO3IrPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdChzLG4pKTtpLnB1c2gocik7bj1zfXJldHVybiBpPWkubWFwKCh0PT50L3IpKX07ZnVuY3Rpb24gZmluZF90KHQsZSxzLGkpe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBuLHIsYSxvLGw9MTtsPD1pO2wrKylpZihlPD1zW2xdKXthPShsLTEpL2k7cj1sL2k7bz0oZS0obj1zW2wtMV0pKS8oc1tsXS1uKSooci1hKSthO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIGNyZWF0ZVRhbmdlbnQodCxlKXtyZXR1cm4gbWF0aHMubm9ybWFsaXplKG1hdGhzLnN1YnRyYWN0KHQsZSkpfWNsYXNzIG1hdGhze3N0YXRpYyB6ZXJvc19YeDJ4Mih0KXtmb3IodmFyIGU9W107dC0tOyllLnB1c2goWzAsMF0pO3JldHVybiBlfXN0YXRpYyBtdWxJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dCplKSl9c3RhdGljIG11bE1hdHJpeCh0LGUpe3JldHVybiB0LnJlZHVjZSgoKHQscyxpKT0+dCtzKmVbaV0pLDApfXN0YXRpYyBzdWJ0cmFjdCh0LGUpe3JldHVybiB0Lm1hcCgoKHQscyk9PnQtZVtzXSkpfXN0YXRpYyBhZGRBcnJheXModCxlKXtyZXR1cm4gdC5tYXAoKCh0LHMpPT50K2Vbc10pKX1zdGF0aWMgYWRkSXRlbXModCxlKXtyZXR1cm4gdC5tYXAoKHQ9PnQrZSkpfXN0YXRpYyBzdW0odCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+dCtlKSl9c3RhdGljIGRvdCh0LGUpe3JldHVybiBtYXRocy5tdWxNYXRyaXgodCxlKX1zdGF0aWMgdmVjdG9yTGVuKHQpe3JldHVybiBNYXRoLmh5cG90KC4uLnQpfXN0YXRpYyBkaXZJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dC9lKSl9c3RhdGljIHNxdWFyZUl0ZW1zKHQpe3JldHVybiB0Lm1hcCgodD0+dCp0KSl9c3RhdGljIG5vcm1hbGl6ZSh0KXtyZXR1cm4gdGhpcy5kaXZJdGVtcyh0LHRoaXMudmVjdG9yTGVuKHQpKX19Y2xhc3MgYmV6aWVye3N0YXRpYyBxKHQsZSl7dmFyIHM9MS1lLGk9bWF0aHMubXVsSXRlbXModFswXSxzKnMqcyksbj1tYXRocy5tdWxJdGVtcyh0WzFdLDMqcypzKmUpLHI9bWF0aHMubXVsSXRlbXModFsyXSwzKnMqZSplKSxhPW1hdGhzLm11bEl0ZW1zKHRbM10sZSplKmUpO3JldHVybiBtYXRocy5hZGRBcnJheXMobWF0aHMuYWRkQXJyYXlzKGksbiksbWF0aHMuYWRkQXJyYXlzKHIsYSkpfXN0YXRpYyBxcHJpbWUodCxlKXt2YXIgcz0xLWUsaT1tYXRocy5tdWxJdGVtcyhtYXRocy5zdWJ0cmFjdCh0WzFdLHRbMF0pLDMqcypzKSxuPW1hdGhzLm11bEl0ZW1zKG1hdGhzLnN1YnRyYWN0KHRbMl0sdFsxXSksNipzKmUpLHI9bWF0aHMubXVsSXRlbXMobWF0aHMuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIG1hdGhzLmFkZEFycmF5cyhtYXRocy5hZGRBcnJheXMoaSxuKSxyKX1zdGF0aWMgcXByaW1lcHJpbWUodCxlKXtyZXR1cm4gbWF0aHMuYWRkQXJyYXlzKG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzJdLG1hdGhzLm11bEl0ZW1zKHRbMV0sMikpLHRbMF0pLDYqKDEtZSkpLG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzNdLG1hdGhzLm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX10LmV4cG9ydHM9ZnVuY3Rpb24gZml0Q3VydmUodCxlLHMpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3QuZm9yRWFjaCgoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLnNvbWUoKHQ9PiJudW1iZXIiIT10eXBlb2YgdCkpfHxlLmxlbmd0aCE9PXRbMF0ubGVuZ3RoKXRocm93IEVycm9yKCJFYWNoIHBvaW50IHNob3VsZCBiZSBhbiBhcnJheSBvZiBudW1iZXJzLiBFYWNoIHBvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBudW1iZXJzLiIpfSkpO2lmKCh0PXQuZmlsdGVyKCgoZSxzKT0+MD09PXN8fCFlLmV2ZXJ5KCgoZSxpKT0+ZT09PXRbcy0xXVtpXSkpKSkpLmxlbmd0aDwyKXJldHVybltdO2NvbnN0IGk9dC5sZW5ndGgsbj1jcmVhdGVUYW5nZW50KHRbMV0sdFswXSkscj1jcmVhdGVUYW5nZW50KHRbaS0yXSx0W2ktMV0pO3JldHVybiBmaXRDdWJpYyh0LG4scixlLHMpfTt0LmV4cG9ydHMuZml0Q3ViaWM9Zml0Q3ViaWM7dC5leHBvcnRzLmNyZWF0ZVRhbmdlbnQ9Y3JlYXRlVGFuZ2VudH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25MYXllcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNikscj1zKDMpLGE9cygyNyksbz1zKDI4KTtjb25zdCBsPTFlMyxjPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIGdldFJlY3REaW1zKHQpe3JldHVybnt3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5e3N0YXRpYyBjcmVhdGUodCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlRFWFQ6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLldJREdFVDpzd2l0Y2godC5kYXRhLmZpZWxkVHlwZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk6dC5kYXRhLmNoZWNrQm94P25ldyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpOm5ldyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KX1yZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkZSRUVURVhUOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuTElORTpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNJUkNMRTpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNBUkVUOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuSU5LOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlBPTFlHT046cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RBTVA6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbkVsZW1lbnQodCk7ZGVmYXVsdDpyZXR1cm4gbmV3IEFubm90YXRpb25FbGVtZW50KHQpfX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCx7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOnM9ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09e30pe3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5wYWdlPXQucGFnZTt0aGlzLnZpZXdwb3J0PXQudmlld3BvcnQ7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5fbW91c2VTdGF0ZT10Lm1vdXNlU3RhdGU7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihzKSk7aSYmKHRoaXMucXVhZHJpbGF0ZXJhbHM9dGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMocykpfV9jcmVhdGVDb250YWluZXIodD0hMSl7Y29uc3QgZT10aGlzLmRhdGEscz10aGlzLnBhZ2Usbj10aGlzLnZpZXdwb3J0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpLHt3aWR0aDphLGhlaWdodDpvfT1nZXRSZWN0RGltcyhlLnJlY3QpLFtsLGMsaCxkXT1uLnZpZXdCb3gsdT1oLWwscD1kLWM7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYW5ub3RhdGlvbi1pZCIsZS5pZCk7Y29uc3QgZz1pLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLHMudmlld1szXS1lLnJlY3RbMV0rcy52aWV3WzFdLGUucmVjdFsyXSxzLnZpZXdbM10tZS5yZWN0WzNdK3Mudmlld1sxXV0pO2lmKCF0JiZlLmJvcmRlclN0eWxlLndpZHRoPjApe3Iuc3R5bGUuYm9yZGVyV2lkdGg9YCR7ZS5ib3JkZXJTdHlsZS53aWR0aH1weGA7Y29uc3QgdD1lLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMscz1lLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO2lmKHQ+MHx8cz4wKXtjb25zdCBlPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke3N9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9ZX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KXtjb25zdCB0PWBjYWxjKCR7YX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke299cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9dH1zd2l0Y2goZS5ib3JkZXJTdHlsZS5zdHlsZSl7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ6ci5zdHlsZS5ib3JkZXJTdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpyLnN0eWxlLmJvcmRlclN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGJldmVsZWQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDooMCxpLndhcm4pKCJVbmltcGxlbWVudGVkIGJvcmRlciBzdHlsZTogaW5zZXQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkU6ci5zdHlsZS5ib3JkZXJCb3R0b21TdHlsZT0ic29saWQifWNvbnN0IG49ZS5ib3JkZXJDb2xvcnx8bnVsbDtuP3Iuc3R5bGUuYm9yZGVyQ29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvcigwfG5bMF0sMHxuWzFdLDB8blsyXSk6ci5zdHlsZS5ib3JkZXJXaWR0aD0wfXIuc3R5bGUubGVmdD0xMDAqKGdbMF0tbCkvdSsiJSI7ci5zdHlsZS50b3A9MTAwKihnWzFdLWMpL3ArIiUiO2NvbnN0e3JvdGF0aW9uOm19PWU7aWYoZS5oYXNPd25DYW52YXN8fDA9PT1tKXtyLnN0eWxlLndpZHRoPTEwMCphL3UrIiUiO3Iuc3R5bGUuaGVpZ2h0PTEwMCpvL3ArIiUifWVsc2UgdGhpcy5zZXRSb3RhdGlvbihtLHIpO3JldHVybiByfXNldFJvdGF0aW9uKHQsZT10aGlzLmNvbnRhaW5lcil7Y29uc3RbcyxpLG4scl09dGhpcy52aWV3cG9ydC52aWV3Qm94LGE9bi1zLG89ci1pLHt3aWR0aDpsLGhlaWdodDpjfT1nZXRSZWN0RGltcyh0aGlzLmRhdGEucmVjdCk7bGV0IGgsZDtpZih0JTE4MD09MCl7aD0xMDAqbC9hO2Q9MTAwKmMvb31lbHNle2g9MTAwKmMvYTtkPTEwMCpsL299ZS5zdHlsZS53aWR0aD1gJHtofSVgO2Uuc3R5bGUuaGVpZ2h0PWAke2R9JWA7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfWdldCBfY29tbW9uQWN0aW9ucygpe2NvbnN0IHNldENvbG9yPSh0LGUscyk9Pntjb25zdCBpPXMuZGV0YWlsW3RdO3MudGFyZ2V0LnN0eWxlW2VdPWEuQ29sb3JDb252ZXJ0ZXJzW2Ake2lbMF19X0hUTUxgXShpLnNsaWNlKDEpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9jb21tb25BY3Rpb25zIix7ZGlzcGxheTp0PT57Y29uc3QgZT10LmRldGFpbC5kaXNwbGF5JTI9PTE7dGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1lPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOmUscHJpbnQ6MD09PXQuZGV0YWlsLmRpc3BsYXl8fDM9PT10LmRldGFpbC5kaXNwbGF5fSl9LHByaW50OnQ9Pnt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7cHJpbnQ6dC5kZXRhaWwucHJpbnR9KX0saGlkZGVuOnQ9Pnt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXQuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSI7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse2hpZGRlbjp0LmRldGFpbC5oaWRkZW59KX0sZm9jdXM6dD0+e3NldFRpbWVvdXQoKCgpPT50LnRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMX0pKSwwKX0sdXNlck5hbWU6dD0+e3QudGFyZ2V0LnRpdGxlPXQuZGV0YWlsLnVzZXJOYW1lfSxyZWFkb25seTp0PT57dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6dD0+e3RoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LHQuZGV0YWlsLnJlcXVpcmVkKX0sYmdDb2xvcjp0PT57c2V0Q29sb3IoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6dD0+e3NldENvbG9yKCJmaWxsQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmZ0NvbG9yOnQ9PntzZXRDb2xvcigiZmdDb2xvciIsImNvbG9yIix0KX0sdGV4dENvbG9yOnQ9PntzZXRDb2xvcigidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjp0PT57c2V0Q29sb3IoImJvcmRlckNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxzdHJva2VDb2xvcjp0PT57c2V0Q29sb3IoInN0cm9rZUNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxyb3RhdGlvbjp0PT57Y29uc3QgZT10LmRldGFpbC5yb3RhdGlvbjt0aGlzLnNldFJvdGF0aW9uKGUpO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtyb3RhdGlvbjplfSl9fSl9X2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh0LGUpe2NvbnN0IHM9dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlLmRldGFpbCkpeyh0W2ldfHxzW2ldKT8uKGUpfX1fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCl7aWYoIXRoaXMuZW5hYmxlU2NyaXB0aW5nKXJldHVybjtjb25zdCBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZighZSlyZXR1cm47Y29uc3Qgcz10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdFtpLG5db2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IHI9c1tpXTtpZihyKXtyKHtkZXRhaWw6e1tpXTpufSx0YXJnZXQ6dH0pO2RlbGV0ZSBlW2ldfX19X2NyZWF0ZVF1YWRyaWxhdGVyYWxzKHQ9ITEpe2lmKCF0aGlzLmRhdGEucXVhZFBvaW50cylyZXR1cm4gbnVsbDtjb25zdCBlPVtdLHM9dGhpcy5kYXRhLnJlY3Q7Zm9yKGNvbnN0IHMgb2YgdGhpcy5kYXRhLnF1YWRQb2ludHMpe3RoaXMuZGF0YS5yZWN0PVtzWzJdLngsc1syXS55LHNbMV0ueCxzWzFdLnldO2UucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfXRoaXMuZGF0YS5yZWN0PXM7cmV0dXJuIGV9X2NyZWF0ZVBvcHVwKHQsZSl7bGV0IHM9dGhpcy5jb250YWluZXI7aWYodGhpcy5xdWFkcmlsYXRlcmFscyl7dD10fHx0aGlzLnF1YWRyaWxhdGVyYWxzO3M9dGhpcy5xdWFkcmlsYXRlcmFsc1swXX1pZighdCl7KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7cy5hcHBlbmQodCl9Y29uc3QgaT1uZXcgUG9wdXBFbGVtZW50KHtjb250YWluZXI6cyx0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO2kuc3R5bGUubGVmdD0iMTAwJSI7cy5hcHBlbmQoaSl9X3JlbmRlclF1YWRyaWxhdGVyYWxzKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMucXVhZHJpbGF0ZXJhbHMpZS5jbGFzc05hbWU9dDtyZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc31yZW5kZXIoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfV9nZXRFbGVtZW50c0J5TmFtZSh0LGU9bnVsbCl7Y29uc3Qgcz1bXTtpZih0aGlzLl9maWVsZE9iamVjdHMpe2NvbnN0IG49dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKG4pZm9yKGNvbnN0e3BhZ2U6dCxpZDpyLGV4cG9ydFZhbHVlczphfW9mIG4pe2lmKC0xPT09dCljb250aW51ZTtpZihyPT09ZSljb250aW51ZTtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgYT9hOm51bGwsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke3J9Il1gKTshb3x8Yy5oYXMobyk/cy5wdXNoKHtpZDpyLGV4cG9ydFZhbHVlOm4sZG9tRWxlbWVudDpvfSk6KDAsaS53YXJuKShgX2dldEVsZW1lbnRzQnlOYW1lIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtyfWApfXJldHVybiBzfWZvcihjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKXtjb25zdHtleHBvcnRWYWx1ZTp0fT1pLG49aS5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO24hPT1lJiYoYy5oYXMoaSkmJnMucHVzaCh7aWQ6bixleHBvcnRWYWx1ZTp0LGRvbUVsZW1lbnQ6aX0pKX1yZXR1cm4gc31zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IucGxhdGZvcm06IiI7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBsYXRmb3JtIix7aXNXaW46dC5pbmNsdWRlcygiV2luIiksaXNNYWM6dC5pbmNsdWRlcygiTWFjIil9KX19Y2xhc3MgTGlua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCxlPW51bGwpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMocyx0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24ocyx0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQocyx0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNBZShzLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKHMsdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKHMsdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihzLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsocywiIik7aT0hMH19aWYodGhpcy5xdWFkcmlsYXRlcmFscylyZXR1cm4gdGhpcy5fcmVuZGVyUXVhZHJpbGF0ZXJhbHMoImxpbmtBbm5vdGF0aW9uIikubWFwKCgodCxlKT0+e2NvbnN0IGk9MD09PWU/czpzLmNsb25lTm9kZSgpO3QuYXBwZW5kKGkpO3JldHVybiB0fSkpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ibGlua0Fubm90YXRpb24iO2kmJnRoaXMuY29udGFpbmVyLmFwcGVuZChzKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmKHQuY2xhc3NOYW1lPSJpbnRlcm5hbExpbmsiKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRBdHRhY2htZW50KHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLGUuY29udGVudCxlLmZpbGVuYW1lKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9I0FlKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgcz1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IG49cy5nZXQoaSk7biYmKHRbbl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIn1fYmluZFJlc2V0Rm9ybUFjdGlvbih0LGUpe2NvbnN0IHM9dC5vbmNsaWNrO3N8fCh0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIjtpZih0aGlzLl9maWVsZE9iamVjdHMpdC5vbmNsaWNrPSgpPT57cz8uKCk7Y29uc3R7ZmllbGRzOnQscmVmczpuLGluY2x1ZGU6cn09ZSxhPVtdO2lmKDAhPT10Lmxlbmd0aHx8MCE9PW4ubGVuZ3RoKXtjb25zdCBlPW5ldyBTZXQobik7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgdD10aGlzLl9maWVsZE9iamVjdHNbc118fFtdO2Zvcihjb25zdHtpZDpzfW9mIHQpZS5hZGQocyl9Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWZvcihjb25zdCBzIG9mIHQpZS5oYXMocy5pZCk9PT1yJiZhLnB1c2gocyl9ZWxzZSBmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpYS5wdXNoKC4uLnQpO2NvbnN0IG89dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0e2lkOmV9PXQ7bC5wdXNoKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6e2NvbnN0IHM9dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6c30pO2JyZWFrfWNhc2UiY2hlY2tib3giOmNhc2UicmFkaW9idXR0b24iOntjb25zdCBzPXQuZGVmYXVsdFZhbHVlPT09dC5leHBvcnRWYWx1ZXM7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9Y2FzZSJjb21ib2JveCI6Y2FzZSJsaXN0Ym94Ijp7Y29uc3Qgcz10LmRlZmF1bHRWYWx1ZXx8IiI7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9ZGVmYXVsdDpjb250aW51ZX1jb25zdCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWVsZW1lbnQtaWQ9IiR7ZX0iXWApO3MmJihjLmhhcyhzKT9zLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsaS53YXJuKShgX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAke2V9YCkpfXRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ImFwcCIsaWRzOmwsbmFtZToiUmVzZXRGb3JtIn19KTtyZXR1cm4hMX07ZWxzZXsoMCxpLndhcm4pKCdfYmluZFJlc2V0Rm9ybUFjdGlvbiAtICJyZXNldEZvcm0iIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO3N8fCh0Lm9uY2xpY2s9KCk9PiExKX19fWNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKHQsdGhpcy5kYXRhKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e3JlbmRlcigpe3RoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2dldEtleU1vZGlmaWVyKHQpe2NvbnN0e2lzV2luOmUsaXNNYWM6c309QW5ub3RhdGlvbkVsZW1lbnQucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8cyYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxzLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUscyl7Zm9yKGNvbnN0W2ksbl1vZiBlKSgiQWN0aW9uIj09PW58fHRoaXMuZGF0YS5hY3Rpb25zPy5bbl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxuLHMpfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxyPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKm4pKXx8MSk7YT1NYXRoLm1pbihuLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKG4scm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9ci5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihyLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLHMsaSl7Y29uc3Qgbj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCByIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7ci5kb21FbGVtZW50JiYoci5kb21FbGVtZW50W2VdPXMpO24uc2V0VmFsdWUoci5pZCx7W2ldOnN9KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idGV4dFdpZGdldEFubm90YXRpb24iO2xldCBzPW51bGw7aWYodGhpcy5yZW5kZXJGb3Jtcyl7Y29uc3QgaT10LmdldFZhbHVlKGUse3ZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfSk7bGV0IG49aS5mb3JtYXR0ZWRWYWx1ZXx8aS52YWx1ZXx8IiI7Y29uc3Qgcj10LmdldFZhbHVlKGUse2NoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVufSkuY2hhckxpbWl0O3ImJm4ubGVuZ3RoPnImJihuPW4uc2xpY2UoMCxyKSk7Y29uc3QgYT17dXNlclZhbHVlOm4sZm9ybWF0dGVkVmFsdWU6bnVsbCx2YWx1ZU9uRm9jdXM6IiJ9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtzLnRleHRDb250ZW50PW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYocy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpfWVsc2V7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3MudHlwZT0idGV4dCI7cy5zZXRBdHRyaWJ1dGUoInZhbHVlIixuKTt0aGlzLmRhdGEuZG9Ob3RTY3JvbGwmJihzLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIil9Yy5hZGQocyk7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7cy5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7cy5uYW1lPXRoaXMuZGF0YS5maWVsZE5hbWU7cy50YWJJbmRleD1sO3RoaXMuX3NldFJlcXVpcmVkKHMsdGhpcy5kYXRhLnJlcXVpcmVkKTtyJiYocy5tYXhMZW5ndGg9cik7cy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGk9Pnt0LnNldFZhbHVlKGUse3ZhbHVlOmkudGFyZ2V0LnZhbHVlfSk7dGhpcy5zZXRQcm9wZXJ0eU9uU2libGluZ3MocywidmFsdWUiLGkudGFyZ2V0LnZhbHVlLCJ2YWx1ZSIpfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPz8iIjtzLnZhbHVlPWEudXNlclZhbHVlPWU7YS5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO2xldCBibHVyTGlzdGVuZXI9dD0+e2NvbnN0e2Zvcm1hdHRlZFZhbHVlOmV9PWE7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpO3QudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwodD0+e2EudXNlclZhbHVlJiYodC50YXJnZXQudmFsdWU9YS51c2VyVmFsdWUpO2EudmFsdWVPbkZvY3VzPXQudGFyZ2V0LnZhbHVlfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChzPT57Y29uc3QgaT17dmFsdWUocyl7YS51c2VyVmFsdWU9cy5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6YS51c2VyVmFsdWUudG9TdHJpbmcoKX0pO3MudGFyZ2V0LnZhbHVlPWEudXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShzKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1zLmRldGFpbDthLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmcy50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYocy50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0OnM9Pntjb25zdHtjaGFyTGltaXQ6aX09cy5kZXRhaWwse3RhcmdldDpufT1zO2lmKDA9PT1pKXtuLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufW4uc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCByPWEudXNlclZhbHVlO2lmKHImJiEoci5sZW5ndGg8PWkpKXtyPXIuc2xpY2UoMCxpKTtuLnZhbHVlPWEudXNlclZhbHVlPXI7dC5zZXRWYWx1ZShlLHt2YWx1ZTpyfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpyLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6bi5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6bi5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscyl9KSk7cy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e2xldCBzPS0xOyJFc2NhcGUiPT09dC5rZXk/cz0wOiJFbnRlciIhPT10LmtleXx8dGhpcy5kYXRhLm11bHRpTGluZT8iVGFiIj09PXQua2V5JiYocz0zKTpzPTI7aWYoLTE9PT1zKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihhLnZhbHVlT25Gb2N1cyE9PWkpe2EudXNlclZhbHVlPWk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OnMsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KX19KSk7Y29uc3QgaT1ibHVyTGlzdGVuZXI7Ymx1ckxpc3RlbmVyPW51bGw7cy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwodD0+e2NvbnN0e3ZhbHVlOnN9PXQudGFyZ2V0O2EudXNlclZhbHVlPXM7dGhpcy5fbW91c2VTdGF0ZS5pc0Rvd24mJmEudmFsdWVPbkZvY3VzIT09cyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KTtpKHQpfSkpO3RoaXMuZGF0YS5hY3Rpb25zPy5LZXlzdHJva2UmJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCh0PT57Y29uc3R7ZGF0YTpzLHRhcmdldDppfT10LHt2YWx1ZTpuLHNlbGVjdGlvblN0YXJ0OnIsc2VsZWN0aW9uRW5kOmF9PWk7bGV0IG89cixsPWE7c3dpdGNoKHQuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcoMCxyKS5tYXRjaCgvXHcqW15cd10qJC8pO3QmJihvLT10WzBdLmxlbmd0aCk7YnJlYWt9Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcocikubWF0Y2goL15bXlx3XSpcdyovKTt0JiYobCs9dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpyPT09YSYmKG8tPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOnI9PT1hJiYobCs9MSl9dC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2U6c3x8IiIsd2lsbENvbW1pdDohMSxzZWxTdGFydDpvLHNlbEVuZDpsfX0pfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHMsW1siZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1ibHVyTGlzdGVuZXImJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYmx1ckxpc3RlbmVyKTtpZih0aGlzLmRhdGEuY29tYil7Y29uc3QgdD0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL3I7cy5jbGFzc0xpc3QuYWRkKCJjb21iIik7cy5zdHlsZS5sZXR0ZXJTcGFjaW5nPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpYH19ZWxzZXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWU7cy5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiO3Muc3R5bGUuZGlzcGxheT0idGFibGUtY2VsbCJ9dGhpcy5fc2V0VGV4dFN0eWxlKHMpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihzKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQocyk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXtjb25zdCB0PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsZT10aGlzLmRhdGEscz1lLmlkO2xldCBpPXQuZ2V0VmFsdWUocyx7dmFsdWU6ZS5leHBvcnRWYWx1ZT09PWUuZmllbGRWYWx1ZX0pLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aT0iT2ZmIiE9PWk7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIGNoZWNrQm94Ijtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscyk7bi5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKG4sdGhpcy5kYXRhLnJlcXVpcmVkKTtuLnR5cGU9ImNoZWNrYm94IjtuLm5hbWU9ZS5maWVsZE5hbWU7aSYmbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtuLnNldEF0dHJpYnV0ZSgiZXhwb3J0VmFsdWUiLGUuZXhwb3J0VmFsdWUpO24udGFiSW5kZXg9bDtuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGk9Pntjb25zdHtuYW1lOm4sY2hlY2tlZDpyfT1pLnRhcmdldDtmb3IoY29uc3QgaSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShuLHMpKXtjb25zdCBzPXImJmkuZXhwb3J0VmFsdWU9PT1lLmV4cG9ydFZhbHVlO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPXMpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6c30pfXQuc2V0VmFsdWUocyx7dmFsdWU6cn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZXx8Ik9mZiI7dC50YXJnZXQuY2hlY2tlZD1zPT09ZS5leHBvcnRWYWx1ZX0pKTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3QgaT17dmFsdWUoZSl7ZS50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PWUuZGV0YWlsLnZhbHVlO3Quc2V0VmFsdWUocyx7dmFsdWU6ZS50YXJnZXQuY2hlY2tlZH0pfX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKG4pO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKG4pO3RoaXMuY29udGFpbmVyLmFwcGVuZChuKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiByYWRpb0J1dHRvbiI7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLHM9ZS5pZDtsZXQgaT10LmdldFZhbHVlKHMse3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2MuYWRkKG4pO24uc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO24uZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7bi50eXBlPSJyYWRpbyI7bi5uYW1lPWUuZmllbGROYW1lO2kmJm4uc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCk7bi50YWJJbmRleD1sO24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZT0+e2NvbnN0e25hbWU6aSxjaGVja2VkOm59PWUudGFyZ2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGkscykpdC5zZXRWYWx1ZShlLmlkLHt2YWx1ZTohMX0pO3Quc2V0VmFsdWUocyx7dmFsdWU6bn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPXMmJnM9PT1lLmJ1dHRvblZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7Y29uc3QgaT1lLmJ1dHRvblZhbHVlO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3Qgbj17dmFsdWU6ZT0+e2NvbnN0IG49aT09PWUuZGV0YWlsLnZhbHVlO2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGUudGFyZ2V0Lm5hbWUpKXtjb25zdCBlPW4mJmkuaWQ9PT1zO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPWUpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6ZX0pfX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLGUpfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKG4sW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQuY2hlY2tlZCkpfXRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBMaW5rQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aWdub3JlQm9yZGVyOnQuZGF0YS5oYXNBcHBlYXJhbmNlfSl9cmVuZGVyKCl7Y29uc3QgdD1zdXBlci5yZW5kZXIoKTt0LmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBwdXNoQnV0dG9uIjt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNob2ljZVdpZGdldEFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YS5pZCxzPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2MuYWRkKGkpO2kuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLGUpO2kuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKTtpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWw7bGV0IG49dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKHMudmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO249ITF9aS5hcHBlbmQoZSl9bGV0IHI9bnVsbDtpZihuKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cj0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscik7cj1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKX1jb25zdCBnZXRWYWx1ZT0odCxlKT0+e2NvbnN0IHM9ZT8idmFsdWUiOiJ0ZXh0Q29udGVudCIsaT10LnRhcmdldC5vcHRpb25zO3JldHVybiB0LnRhcmdldC5tdWx0aXBsZT9BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoaSwodD0+dC5zZWxlY3RlZCkpLm1hcCgodD0+dFtzXSkpOi0xPT09aS5zZWxlY3RlZEluZGV4P251bGw6aVtpLnNlbGVjdGVkSW5kZXhdW3NdfSxnZXRJdGVtcz10PT57Y29uc3QgZT10LnRhcmdldC5vcHRpb25zO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwodD0+KHtkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfSkpKX07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtpLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94Iiwocz0+e2NvbnN0IG49e3ZhbHVlKHMpe3I/LigpO2NvbnN0IG49cy5kZXRhaWwudmFsdWUsYT1uZXcgU2V0KEFycmF5LmlzQXJyYXkobik/bjpbbl0pO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPWEuaGFzKHQudmFsdWUpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUocywhMCl9KX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKHMpe2NvbnN0IG49aS5vcHRpb25zLHI9cy5kZXRhaWwucmVtb3ZlO25bcl0uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocik7aWYobi5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwodD0+dC5zZWxlY3RlZCkpJiYoblswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxjbGVhcihzKXtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpudWxsLGl0ZW1zOltdfSl9LGluc2VydChzKXtjb25zdHtpbmRleDpuLGRpc3BsYXlWYWx1ZTpyLGV4cG9ydFZhbHVlOmF9PXMuZGV0YWlsLmluc2VydCxvPWkuY2hpbGRyZW5bbl0sbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtsLnRleHRDb250ZW50PXI7bC52YWx1ZT1hO28/by5iZWZvcmUobCk6aS5hcHBlbmQobCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxpdGVtcyhzKXtjb25zdHtpdGVtczpufT1zLmRldGFpbDtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3R7ZGlzcGxheVZhbHVlOmUsZXhwb3J0VmFsdWU6c309dCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO24udGV4dENvbnRlbnQ9ZTtuLnZhbHVlPXM7aS5hcHBlbmQobil9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApLGl0ZW1zOmdldEl0ZW1zKHMpfSl9LGluZGljZXMocyl7Y29uc3QgaT1uZXcgU2V0KHMuZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIHMudGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApfSl9LGVkaXRhYmxlKHQpe3QudGFyZ2V0LmRpc2FibGVkPSF0LmRldGFpbC5lZGl0YWJsZX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLHMpfSkpO2kuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChzPT57Y29uc3QgaT1nZXRWYWx1ZShzLCEwKSxuPWdldFZhbHVlKHMsITEpO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2VFeDppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9ZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24ocyl7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7c3RhdGljIElHTk9SRV9UWVBFUz1uZXcgU2V0KFsiTGluZSIsIlNxdWFyZSIsIkNpcmNsZSIsIlBvbHlMaW5lIiwiUG9seWdvbiIsIkluayJdKTtjb25zdHJ1Y3Rvcih0KXtjb25zdHtkYXRhOmV9PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiFQb3B1cEFubm90YXRpb25FbGVtZW50LklHTk9SRV9UWVBFUy5oYXMoZS5wYXJlbnRUeXBlKSYmISEoZS50aXRsZU9iaj8uc3RyfHxlLmNvbnRlbnRzT2JqPy5zdHJ8fGUucmljaFRleHQ/LnN0cil9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmxheWVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7dGhpcy5kYXRhLnBhcmVudElkfSJdYCk7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmNvbnRhaW5lcjtjb25zdCBlPW5ldyBQb3B1cEVsZW1lbnQoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxzPXRoaXMucGFnZSxuPWkuVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxzLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rcy52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHMudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStzLnZpZXdbMV1dKSxyPW5bMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sYT1uWzFdLFtvLGwsYyxoXT10aGlzLnZpZXdwb3J0LnZpZXdCb3gsZD1jLW8sdT1oLWw7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0xMDAqKHItbykvZCsiJSI7dGhpcy5jb250YWluZXIuc3R5bGUudG9wPTEwMCooYS1sKS91KyIlIjt0aGlzLmNvbnRhaW5lci5hcHBlbmQoZS5yZW5kZXIoKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7Y29uc3RydWN0b3IodCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXI7dGhpcy50cmlnZ2VyPXQudHJpZ2dlcjt0aGlzLmNvbG9yPXQuY29sb3I7dGhpcy50aXRsZU9iaj10LnRpdGxlT2JqO3RoaXMubW9kaWZpY2F0aW9uRGF0ZT10Lm1vZGlmaWNhdGlvbkRhdGU7dGhpcy5jb250ZW50c09iaj10LmNvbnRlbnRzT2JqO3RoaXMucmljaFRleHQ9dC5yaWNoVGV4dDt0aGlzLmhpZGVXcmFwcGVyPXQuaGlkZVdyYXBwZXJ8fCExO3RoaXMucGlubmVkPSExfXJlbmRlcigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InBvcHVwV3JhcHBlciI7dGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3Q6dGhpcy5jb250YWluZXI7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0icG9wdXAiO2NvbnN0IHM9dGhpcy5jb2xvcjtpZihzKXtjb25zdCB0PS43KigyNTUtc1swXSkrc1swXSxuPS43KigyNTUtc1sxXSkrc1sxXSxyPS43KigyNTUtc1syXSkrc1syXTtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8dCwwfG4sMHxyKX1jb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7ci5kaXI9dGhpcy50aXRsZU9iai5kaXI7ci50ZXh0Q29udGVudD10aGlzLnRpdGxlT2JqLnN0cjtlLmFwcGVuZChyKTtjb25zdCBhPW4uUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QodGhpcy5tb2RpZmljYXRpb25EYXRlKTtpZihhKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTmFtZT0icG9wdXBEYXRlIjt0LnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iO3QuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciO3QuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTphLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6YS50b0xvY2FsZVRpbWVTdHJpbmcoKX0pO2UuYXBwZW5kKHQpfWlmKCF0aGlzLnJpY2hUZXh0Py5zdHJ8fHRoaXMuY29udGVudHNPYmo/LnN0ciYmdGhpcy5jb250ZW50c09iai5zdHIhPT10aGlzLnJpY2hUZXh0LnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTtlLmFwcGVuZCh0KX1lbHNle28uWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6ZX0pO2UubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50In1BcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO2Zvcihjb25zdCB0IG9mIHRoaXMudHJpZ2dlcil7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fdG9nZ2xlLmJpbmQodGhpcykpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9zaG93LmJpbmQodGhpcywhMSkpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSl9ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITApKTt0LmFwcGVuZChlKTtyZXR1cm4gdH1fZm9ybWF0Q29udGVudHMoe3N0cjp0LGRpcjplfSl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cy5jbGFzc05hbWU9InBvcHVwQ29udGVudCI7cy5kaXI9ZTtjb25zdCBpPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS8pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlOysrdCl7Y29uc3Qgbj1pW3RdO3MuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKTt0PGUtMSYmcy5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIHN9X3RvZ2dsZSgpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfV9zaG93KHQ9ITEpe3QmJih0aGlzLnBpbm5lZD0hMCk7aWYodGhpcy5oaWRlRWxlbWVudC5oaWRkZW4pe3RoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExO3RoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlM319X2hpZGUodD0hMCl7dCYmKHRoaXMucGlubmVkPSExKTtpZighdGhpcy5oaWRlRWxlbWVudC5oaWRkZW4mJiF0aGlzLnBpbm5lZCl7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzfX19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMudGV4dENvbnRlbnQ9dC5kYXRhLnRleHRDb250ZW50fXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iZnJlZVRleHRBbm5vdGF0aW9uIjtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJhbm5vdGF0aW9uVGV4dENvbnRlbnQiO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO2Zvcihjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MudGV4dENvbnRlbnQ9ZTt0LmFwcGVuZChzKX10aGlzLmNvbnRhaW5lci5hcHBlbmQodCl9dGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKSxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6bGluZSIpO24uc2V0QXR0cmlidXRlKCJ4MSIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzBdKTtuLnNldEF0dHJpYnV0ZSgieTEiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1sxXSk7bi5zZXRBdHRyaWJ1dGUoIngyIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMl0pO24uc2V0QXR0cmlidXRlKCJ5MiIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzNdKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LmJvcmRlclN0eWxlLndpZHRofHwxKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtuLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQobik7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUscywhMCksbj10LmJvcmRlclN0eWxlLndpZHRoLHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7ci5zZXRBdHRyaWJ1dGUoIngiLG4vMik7ci5zZXRBdHRyaWJ1dGUoInkiLG4vMik7ci5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLW4pO3Iuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMtbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsbnx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApLG49dC5ib3JkZXJTdHlsZS53aWR0aCxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZWxsaXBzZSIpO3Iuc2V0QXR0cmlidXRlKCJjeCIsZS8yKTtyLnNldEF0dHJpYnV0ZSgiY3kiLHMvMik7ci5zZXRBdHRyaWJ1dGUoInJ4IixlLzItbi8yKTtyLnNldEF0dHJpYnV0ZSgicnkiLHMvMi1uLzIpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG58fDEpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Iuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChyKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dGhpcy5fY3JlYXRlUG9wdXAocix0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIjt0aGlzLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUifXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKTtsZXQgbj1bXTtmb3IoY29uc3QgZSBvZiB0LnZlcnRpY2VzKXtjb25zdCBzPWUueC10LnJlY3RbMF0saT10LnJlY3RbM10tZS55O24ucHVzaChzKyIsIitpKX1uPW4uam9pbigiICIpO2NvbnN0IHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUG9seWdvbkFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWdvbkFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5Z29uIn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2FyZXRBbm5vdGF0aW9uIjt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIElua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApO2Zvcihjb25zdCBlIG9mIHQuaW5rTGlzdHMpe2xldCBzPVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9aS54LXQucmVjdFswXSxuPXQucmVjdFszXS1pLnk7cy5wdXNoKGAke2V9LCR7bn1gKX1zPXMuam9pbigiICIpO2NvbnN0IG49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7bi5zZXRBdHRyaWJ1dGUoInBvaW50cyIscyk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7bi5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7aS5hcHBlbmQobil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO2lmKHRoaXMucXVhZHJpbGF0ZXJhbHMpcmV0dXJuIHRoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ1bmRlcmxpbmVBbm5vdGF0aW9uIjtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3F1aWdnbHlBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3RyaWtlb3V0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTdGFtcEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iO3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMH0pO2NvbnN0e2ZpbGVuYW1lOmUsY29udGVudDpzfT10aGlzLmRhdGEuZmlsZTt0aGlzLmZpbGVuYW1lPSgwLG4uZ2V0RmlsZW5hbWVGcm9tVXJsKShlKTt0aGlzLmNvbnRlbnQ9czt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZmlsZWF0dGFjaG1lbnRhbm5vdGF0aW9uIix7c291cmNlOnRoaXMsZmlsZW5hbWU6ZSxjb250ZW50OnN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsdGhpcy5fZG93bmxvYWQuYmluZCh0aGlzKSk7IXRoaXMuZGF0YS5oYXNQb3B1cCYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpO3RoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2Rvd25sb2FkKCl7dGhpcy5kb3dubG9hZE1hbmFnZXI/Lm9wZW5PckRvd25sb2FkRGF0YSh0aGlzLmNvbnRhaW5lcix0aGlzLmNvbnRlbnQsdGhpcy5maWxlbmFtZSl9fWNsYXNzIEFubm90YXRpb25MYXllcntzdGF0aWMjX2UodCxlLHMsaSl7Y29uc3Qgcj10LmZpcnN0Q2hpbGR8fHQ7ci5pZD1gJHtuLkFubm90YXRpb25QcmVmaXh9JHtlfWA7cy5hcHBlbmQodCk7aT8ubW92ZUVsZW1lbnRJbkRPTShzLHQsciwhMSl9c3RhdGljIHJlbmRlcih0KXtjb25zdHthbm5vdGF0aW9uczplLGRpdjpzLHZpZXdwb3J0OmEsYWNjZXNzaWJpbGl0eU1hbmFnZXI6b309dDt0aGlzLiN2ZShzLGEpO2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgZSl7aWYoYy5hbm5vdGF0aW9uVHlwZSE9PWkuQW5ub3RhdGlvblR5cGUuUE9QVVApe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmV9PWdldFJlY3REaW1zKGMucmVjdCk7aWYodDw9MHx8ZTw9MCljb250aW51ZX1jb25zdCBlPUFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUoe2RhdGE6YyxsYXllcjpzLHBhZ2U6dC5wYWdlLHZpZXdwb3J0OmEsbGlua1NlcnZpY2U6dC5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6dC5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOnQuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PXQucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgbi5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOnQuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyByLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzp0LmVuYWJsZVNjcmlwdGluZyxoYXNKU0FjdGlvbnM6dC5oYXNKU0FjdGlvbnMsZmllbGRPYmplY3RzOnQuZmllbGRPYmplY3RzLG1vdXNlU3RhdGU6dC5tb3VzZVN0YXRlfHx7aXNEb3duOiExfX0pO2lmKGUuaXNSZW5kZXJhYmxlKXtjb25zdCB0PWUucmVuZGVyKCk7Yy5oaWRkZW4mJih0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdCl7ZS5zdHlsZS56SW5kZXg9bCsrO0Fubm90YXRpb25MYXllci4jX2UoZSxjLmlkLHMsbyl9ZWxzZXt0LnN0eWxlLnpJbmRleD1sKys7ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQ/cy5wcmVwZW5kKHQpOkFubm90YXRpb25MYXllci4jX2UodCxjLmlkLHMsbyl9fX10aGlzLiN5ZShzLHQuYW5ub3RhdGlvbkNhbnZhc01hcCl9c3RhdGljIHVwZGF0ZSh0KXtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmUsZGl2OnMsdmlld3BvcnQ6aX09dDt0aGlzLiN2ZShzLGkpO3RoaXMuI3llKHMsZSk7cy5oaWRkZW49ITF9c3RhdGljI3ZlKHQse3dpZHRoOmUsaGVpZ2h0OnMscm90YXRpb246aX0pe2NvbnN0e3N0eWxlOm59PXQscj1pJTE4MCE9MCxhPU1hdGguZmxvb3IoZSkrInB4IixvPU1hdGguZmxvb3IocykrInB4IjtuLndpZHRoPXI/bzphO24uaGVpZ2h0PXI/YTpvO3Quc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLGkpfXN0YXRpYyN5ZSh0LGUpe2lmKGUpe2Zvcihjb25zdFtzLGldb2YgZSl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7c30iXWApO2lmKCFlKWNvbnRpbnVlO2NvbnN0e2ZpcnN0Q2hpbGQ6bn09ZTtuPyJDQU5WQVMiPT09bi5ub2RlTmFtZT9uLnJlcGxhY2VXaXRoKGkpOm4uYmVmb3JlKGkpOmUuYXBwZW5kKGkpfWUuY2xlYXIoKX19fWUuQW5ub3RhdGlvbkxheWVyPUFubm90YXRpb25MYXllcn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Db2xvckNvbnZlcnRlcnM9dm9pZCAwO2Z1bmN0aW9uIG1ha2VDb2xvckNvbXAodCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9ZS5Db2xvckNvbnZlcnRlcnM9Y2xhc3MgQ29sb3JDb252ZXJ0ZXJze3N0YXRpYyBDTVlLX0coW3QsZSxzLGldKXtyZXR1cm5bIkciLDEtTWF0aC5taW4oMSwuMyp0Ky41OSpzKy4xMSplK2kpXX1zdGF0aWMgR19DTVlLKFt0XSl7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLXRdfXN0YXRpYyBHX1JHQihbdF0pe3JldHVyblsiUkdCIix0LHQsdF19c3RhdGljIEdfSFRNTChbdF0pe2NvbnN0IGU9bWFrZUNvbG9yQ29tcCh0KTtyZXR1cm5gIyR7ZX0ke2V9JHtlfWB9c3RhdGljIFJHQl9HKFt0LGUsc10pe3JldHVyblsiRyIsLjMqdCsuNTkqZSsuMTEqc119c3RhdGljIFJHQl9IVE1MKFt0LGUsc10pe3JldHVybmAjJHttYWtlQ29sb3JDb21wKHQpfSR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAocyl9YH1zdGF0aWMgVF9IVE1MKCl7cmV0dXJuIiMwMDAwMDAwMCJ9c3RhdGljIENNWUtfUkdCKFt0LGUscyxpXSl7cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSx0K2kpLDEtTWF0aC5taW4oMSxzK2kpLDEtTWF0aC5taW4oMSxlK2kpXX1zdGF0aWMgQ01ZS19IVE1MKHQpe2NvbnN0IGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX1zdGF0aWMgUkdCX0NNWUsoW3QsZSxzXSl7Y29uc3QgaT0xLXQsbj0xLWUscj0xLXM7cmV0dXJuWyJDTVlLIixpLG4scixNYXRoLm1pbihpLG4scildfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5YZmFMYXllcj12b2lkIDA7dmFyIGk9cygxOSk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxzLGksbil7Y29uc3Qgcj1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gocy5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09ci52YWx1ZSYmKHQudGV4dENvbnRlbnQ9ci52YWx1ZSk7aWYoInByaW50Ij09PW4pYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXMuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09cy5hdHRyaWJ1dGVzLnR5cGUpe3IudmFsdWU9PT1zLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpyLnZhbHVlPT09cy5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09bilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1yLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIudmFsdWUpO2lmKCJwcmludCI9PT1uKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09ci52YWx1ZSlmb3IoY29uc3QgdCBvZiBzLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXIudmFsdWUmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9ITApO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57Y29uc3Qgcz10LnRhcmdldC5vcHRpb25zLG49LTE9PT1zLnNlbGVjdGVkSW5kZXg/IiI6c1tzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2kuc2V0VmFsdWUoZSx7dmFsdWU6bn0pfSkpfX1zdGF0aWMgc2V0QXR0cmlidXRlcyh7aHRtbDp0LGVsZW1lbnQ6ZSxzdG9yYWdlOnM9bnVsbCxpbnRlbnQ6aSxsaW5rU2VydmljZTpufSl7Y29uc3R7YXR0cmlidXRlczpyfT1lLGE9dCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50OyJyYWRpbyI9PT1yLnR5cGUmJihyLm5hbWU9YCR7ci5uYW1lfS0ke2l9YCk7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhyKSlpZihudWxsIT1zKXN3aXRjaChlKXtjYXNlImNsYXNzIjpzLmxlbmd0aCYmdC5zZXRBdHRyaWJ1dGUoZSxzLmpvaW4oIiAiKSk7YnJlYWs7Y2FzZSJkYXRhSWQiOmJyZWFrO2Nhc2UiaWQiOnQuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO2JyZWFrO2Nhc2Uic3R5bGUiOk9iamVjdC5hc3NpZ24odC5zdHlsZSxzKTticmVhaztjYXNlInRleHRDb250ZW50Ijp0LnRleHRDb250ZW50PXM7YnJlYWs7ZGVmYXVsdDooIWF8fCJocmVmIiE9PWUmJiJuZXdXaW5kb3ciIT09ZSkmJnQuc2V0QXR0cmlidXRlKGUscyl9YSYmbi5hZGRMaW5rQXR0cmlidXRlcyh0LHIuaHJlZixyLm5ld1dpbmRvdyk7cyYmci5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKHQsci5kYXRhSWQsZSxzKX1zdGF0aWMgcmVuZGVyKHQpe2NvbnN0IGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxzPXQubGlua1NlcnZpY2Usbj10LnhmYUh0bWwscj10LmludGVudHx8ImRpc3BsYXkiLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLm5hbWUpO24uYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmEsZWxlbWVudDpuLGludGVudDpyLGxpbmtTZXJ2aWNlOnN9KTtjb25zdCBvPVtbbiwtMSxhXV0sbD10LmRpdjtsLmFwcGVuZChhKTtpZih0LnZpZXdwb3J0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7bC5zdHlsZS50cmFuc2Zvcm09ZX0icmljaFRleHQiIT09ciYmbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwieGZhTGF5ZXIgeGZhRm9udCIpO2NvbnN0IGM9W107Zm9yKDtvLmxlbmd0aD4wOyl7Y29uc3RbdCxuLGFdPW8uYXQoLTEpO2lmKG4rMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtvLnBvcCgpO2NvbnRpbnVlfWNvbnN0IGw9dC5jaGlsZHJlblsrK28uYXQoLTEpWzFdXTtpZihudWxsPT09bCljb250aW51ZTtjb25zdHtuYW1lOmh9PWw7aWYoIiN0ZXh0Ij09PWgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7Yy5wdXNoKHQpO2EuYXBwZW5kKHQpO2NvbnRpbnVlfWxldCBkO2Q9bD8uYXR0cmlidXRlcz8ueG1sbnM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuYXR0cmlidXRlcy54bWxucyxoKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGgpO2EuYXBwZW5kKGQpO2wuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmQsZWxlbWVudDpsLHN0b3JhZ2U6ZSxpbnRlbnQ6cixsaW5rU2VydmljZTpzfSk7aWYobC5jaGlsZHJlbiYmbC5jaGlsZHJlbi5sZW5ndGg+MClvLnB1c2goW2wsLTEsZF0pO2Vsc2UgaWYobC52YWx1ZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtpLlhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGgpJiZjLnB1c2godCk7ZC5hcHBlbmQodCl9fWZvcihjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSl0LnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCEwKTtyZXR1cm57dGV4dERpdnM6Y319c3RhdGljIHVwZGF0ZSh0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7dC5kaXYuc3R5bGUudHJhbnNmb3JtPWU7dC5kaXYuaGlkZGVuPSExfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UZXh0TGF5ZXJSZW5kZXJUYXNrPXZvaWQgMDtlLnJlbmRlclRleHRMYXllcj1mdW5jdGlvbiByZW5kZXJUZXh0TGF5ZXIodCl7Y29uc3QgZT1uZXcgVGV4dExheWVyUmVuZGVyVGFzayh7dGV4dENvbnRlbnQ6dC50ZXh0Q29udGVudCx0ZXh0Q29udGVudFN0cmVhbTp0LnRleHRDb250ZW50U3RyZWFtLGNvbnRhaW5lcjp0LmNvbnRhaW5lcix2aWV3cG9ydDp0LnZpZXdwb3J0LHRleHREaXZzOnQudGV4dERpdnMsdGV4dENvbnRlbnRJdGVtc1N0cjp0LnRleHRDb250ZW50SXRlbXNTdHJ9KTtlLl9yZW5kZXIodC50aW1lb3V0KTtyZXR1cm4gZX07dmFyIGk9cygxKTtjb25zdCBuPTMwLHI9bmV3IE1hcDtmdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxzLGEpe2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGw9e2FuZ2xlOjAsY2FudmFzV2lkdGg6MCxoYXNUZXh0OiIiIT09ZS5zdHIsaGFzRU9MOmUuaGFzRU9MLGZvbnRTaXplOjB9O3QuX3RleHREaXZzLnB1c2gobyk7Y29uc3QgYz1pLlV0aWwudHJhbnNmb3JtKHQuX3ZpZXdwb3J0LnRyYW5zZm9ybSxlLnRyYW5zZm9ybSk7bGV0IGg9TWF0aC5hdGFuMihjWzFdLGNbMF0pO2NvbnN0IGQ9c1tlLmZvbnROYW1lXTtkLnZlcnRpY2FsJiYoaCs9TWF0aC5QSS8yKTtjb25zdCB1PU1hdGguaHlwb3QoY1syXSxjWzNdKSxwPXUqZnVuY3Rpb24gZ2V0QXNjZW50KHQsZSl7Y29uc3Qgcz1yLmdldCh0KTtpZihzKXJldHVybiBzO2Uuc2F2ZSgpO2UuZm9udD1gMzBweCAke3R9YDtjb25zdCBpPWUubWVhc3VyZVRleHQoIiIpO2xldCBhPWkuZm9udEJvdW5kaW5nQm94QXNjZW50LG89TWF0aC5hYnMoaS5mb250Qm91bmRpbmdCb3hEZXNjZW50KTtpZihhKXtlLnJlc3RvcmUoKTtjb25zdCBzPWEvKGErbyk7ci5zZXQodCxzKTtyZXR1cm4gc31lLnN0cm9rZVN0eWxlPSJyZWQiO2UuY2xlYXJSZWN0KDAsMCxuLG4pO2Uuc3Ryb2tlVGV4dCgiZyIsMCwwKTtsZXQgbD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO289MDtmb3IobGV0IHQ9bC5sZW5ndGgtMS0zO3Q+PTA7dC09NClpZihsW3RdPjApe289TWF0aC5jZWlsKHQvNC9uKTticmVha31lLmNsZWFyUmVjdCgwLDAsbixuKTtlLnN0cm9rZVRleHQoIkEiLDAsbik7bD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO2E9MDtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kz00KWlmKGxbdF0+MCl7YT1uLU1hdGguZmxvb3IodC80L24pO2JyZWFrfWUucmVzdG9yZSgpO2lmKGEpe2NvbnN0IGU9YS8oYStvKTtyLnNldCh0LGUpO3JldHVybiBlfXIuc2V0KHQsLjgpO3JldHVybi44fShkLmZvbnRGYW1pbHksYSk7bGV0IGcsbTtpZigwPT09aCl7Zz1jWzRdO209Y1s1XS1wfWVsc2V7Zz1jWzRdK3AqTWF0aC5zaW4oaCk7bT1jWzVdLXAqTWF0aC5jb3MoaCl9by5zdHlsZS5sZWZ0PWAke2d9cHhgO28uc3R5bGUudG9wPWAke219cHhgO28uc3R5bGUuZm9udFNpemU9YCR7dX1weGA7by5zdHlsZS5mb250RmFtaWx5PWQuZm9udEZhbWlseTtsLmZvbnRTaXplPXU7by5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtvLnRleHRDb250ZW50PWUuc3RyO28uZGlyPWUuZGlyO3QuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYoby5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpOzAhPT1oJiYobC5hbmdsZT1oKigxODAvTWF0aC5QSSkpO2xldCBmPSExO2lmKGUuc3RyLmxlbmd0aD4xKWY9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7Y29uc3QgdD1NYXRoLmFicyhlLnRyYW5zZm9ybVswXSkscz1NYXRoLmFicyhlLnRyYW5zZm9ybVszXSk7dCE9PXMmJk1hdGgubWF4KHQscykvTWF0aC5taW4odCxzKT4xLjUmJihmPSEwKX1mJiYoZC52ZXJ0aWNhbD9sLmNhbnZhc1dpZHRoPWUuaGVpZ2h0KnQuX3ZpZXdwb3J0LnNjYWxlOmwuY2FudmFzV2lkdGg9ZS53aWR0aCp0Ll92aWV3cG9ydC5zY2FsZSk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KG8sbCk7dC5fdGV4dENvbnRlbnRTdHJlYW0mJnQuX2xheW91dFRleHQobyl9ZnVuY3Rpb24gcmVuZGVyKHQpe2lmKHQuX2NhbmNlbGVkKXJldHVybjtjb25zdCBlPXQuX3RleHREaXZzLHM9dC5fY2FwYWJpbGl0eTtpZihlLmxlbmd0aD4xZTUpe3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9ZWxzZXtpZighdC5fdGV4dENvbnRlbnRTdHJlYW0pZm9yKGNvbnN0IHMgb2YgZSl0Ll9sYXlvdXRUZXh0KHMpO3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9fWNsYXNzIFRleHRMYXllclJlbmRlclRhc2t7Y29uc3RydWN0b3Ioe3RleHRDb250ZW50OnQsdGV4dENvbnRlbnRTdHJlYW06ZSxjb250YWluZXI6cyx2aWV3cG9ydDpuLHRleHREaXZzOnIsdGV4dENvbnRlbnRJdGVtc1N0cjphfSl7dGhpcy5fdGV4dENvbnRlbnQ9dDt0aGlzLl90ZXh0Q29udGVudFN0cmVhbT1lO3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2RvY3VtZW50PXMub3duZXJEb2N1bWVudDt0aGlzLl92aWV3cG9ydD1uO3RoaXMuX3RleHREaXZzPXJ8fFtdO3RoaXMuX3RleHRDb250ZW50SXRlbXNTdHI9YXx8W107dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZT1udWxsO3RoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseT1udWxsO3RoaXMuX2xheW91dFRleHRDdHg9bnVsbDt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1uZXcgV2Vha01hcDt0aGlzLl9yZW5kZXJpbmdEb25lPSExO3RoaXMuX2NhbmNlbGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsO3RoaXMuX2JvdW5kcz1bXTt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPWdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYXBhYmlsaXR5LnByb21pc2UuZmluYWxseSgoKCk9Pnt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1udWxsO2lmKHRoaXMuX2xheW91dFRleHRDdHgpe3RoaXMuX2xheW91dFRleHRDdHguY2FudmFzLndpZHRoPTA7dGhpcy5fbGF5b3V0VGV4dEN0eC5jYW52YXMuaGVpZ2h0PTA7dGhpcy5fbGF5b3V0VGV4dEN0eD1udWxsfX0pKS5jYXRjaCgoKCk9Pnt9KSl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWNhbmNlbCgpe3RoaXMuX2NhbmNlbGVkPSEwO2lmKHRoaXMuX3JlYWRlcil7dGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoKCk9Pnt9KSk7dGhpcy5fcmVhZGVyPW51bGx9aWYobnVsbCE9PXRoaXMuX3JlbmRlclRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy5fcmVuZGVyVGltZXIpO3RoaXMuX3JlbmRlclRpbWVyPW51bGx9dGhpcy5fY2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfV9wcm9jZXNzSXRlbXModCxlKXtmb3IoY29uc3QgcyBvZiB0KWlmKHZvaWQgMCE9PXMuc3RyKXt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyLnB1c2gocy5zdHIpO2FwcGVuZFRleHQodGhpcyxzLGUsdGhpcy5fbGF5b3V0VGV4dEN0eCl9ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09cy50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PXMudHlwZSl7Y29uc3QgdD10aGlzLl9jb250YWluZXI7dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFya2VkQ29udGVudCIpO251bGwhPT1zLmlkJiZ0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsYCR7cy5pZH1gKTt0LmFwcGVuZCh0aGlzLl9jb250YWluZXIpfWVsc2UiZW5kTWFya2VkQ29udGVudCI9PT1zLnR5cGUmJih0aGlzLl9jb250YWluZXI9dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUpfV9sYXlvdXRUZXh0KHQpe2NvbnN0IGU9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO2xldCBzPSIiO2lmKDAhPT1lLmNhbnZhc1dpZHRoJiZlLmhhc1RleHQpe2NvbnN0e2ZvbnRGYW1pbHk6aX09dC5zdHlsZSx7Zm9udFNpemU6bn09ZTtpZihuIT09dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZXx8aSE9PXRoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseSl7dGhpcy5fbGF5b3V0VGV4dEN0eC5mb250PWAke24qdGhpcy5fZGV2aWNlUGl4ZWxSYXRpb31weCAke2l9YDt0aGlzLl9sYXlvdXRUZXh0TGFzdEZvbnRTaXplPW47dGhpcy5fbGF5b3V0VGV4dExhc3RGb250RmFtaWx5PWl9Y29uc3R7d2lkdGg6cn09dGhpcy5fbGF5b3V0VGV4dEN0eC5tZWFzdXJlVGV4dCh0LnRleHRDb250ZW50KTtyPjAmJihzPWBzY2FsZVgoJHt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvKmUuY2FudmFzV2lkdGgvcn0pYCl9MCE9PWUuYW5nbGUmJihzPWByb3RhdGUoJHtlLmFuZ2xlfWRlZykgJHtzfWApO3MubGVuZ3RoPjAmJih0LnN0eWxlLnRyYW5zZm9ybT1zKTtlLmhhc1RleHQmJnRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7aWYoZS5oYXNFT0wpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTt0LnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodCl9fV9yZW5kZXIodD0wKXtjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7bGV0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3IuaGVpZ2h0PXIud2lkdGg9bjt0aGlzLl9sYXlvdXRUZXh0Q3R4PXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2lmKHRoaXMuX3RleHRDb250ZW50KXtjb25zdCB0PXRoaXMuX3RleHRDb250ZW50Lml0ZW1zLHM9dGhpcy5fdGV4dENvbnRlbnQuc3R5bGVzO3RoaXMuX3Byb2Nlc3NJdGVtcyh0LHMpO2UucmVzb2x2ZSgpfWVsc2V7aWYoIXRoaXMuX3RleHRDb250ZW50U3RyZWFtKXRocm93IG5ldyBFcnJvcignTmVpdGhlciAidGV4dENvbnRlbnQiIG5vciAidGV4dENvbnRlbnRTdHJlYW0iIHBhcmFtZXRlcnMgc3BlY2lmaWVkLicpO3tjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKCgoe3ZhbHVlOnQsZG9uZTppfSk9PntpZihpKWUucmVzb2x2ZSgpO2Vsc2V7T2JqZWN0LmFzc2lnbihzLHQuc3R5bGVzKTt0aGlzLl9wcm9jZXNzSXRlbXModC5pdGVtcyxzKTtwdW1wKCl9fSksZS5yZWplY3QpfTt0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTdHJlYW0uZ2V0UmVhZGVyKCk7cHVtcCgpfX1lLnByb21pc2UudGhlbigoKCk9PntzPW51bGw7dD90aGlzLl9yZW5kZXJUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3JlbmRlcih0aGlzKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsfSksdCk6cmVuZGVyKHRoaXMpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1lLlRleHRMYXllclJlbmRlclRhc2s9VGV4dExheWVyUmVuZGVyVGFza30sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1zKDYpLG49cygxKSxyPXMoMTIpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKCl7KDAsbi51bnJlYWNoYWJsZSkoIk5vdCBpbXBsZW1lbnRlZDogU1ZHR3JhcGhpY3MiKX19O2UuU1ZHR3JhcGhpY3M9YTt7Y29uc3Qgbz17Zm9udFN0eWxlOiJub3JtYWwiLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZmlsbENvbG9yOiIjMDAwMDAwIn0sbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixoPVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sZD1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0LGU9IiIscz0hMSl7aWYoVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYhcylyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbdF0se3R5cGU6ZX0pKTtjb25zdCBpPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7bGV0IG49YGRhdGE6JHtlfTtiYXNlNjQsYDtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKz0zKXtjb25zdCByPTI1NSZ0W2VdLGE9MjU1JnRbZSsxXSxvPTI1NSZ0W2UrMl07bis9aVtyPj4yXStpWygzJnIpPDw0fGE+PjRdK2lbZSsxPHM/KDE1JmEpPDwyfG8+PjY6NjRdK2lbZSsyPHM/NjMmbzo2NF19cmV0dXJuIG59LHU9ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KFsxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdKSxlPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcz10O2ZvcihsZXQgdD0wO3Q8ODt0Kyspcz0xJnM/Mzk4ODI5MjM4NF5zPj4xJjIxNDc0ODM2NDc6cz4+MSYyMTQ3NDgzNjQ3O2VbdF09c31mdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQscyxpLG4pe2xldCByPW47Y29uc3QgYT1zLmxlbmd0aDtpW3JdPWE+PjI0JjI1NTtpW3IrMV09YT4+MTYmMjU1O2lbcisyXT1hPj44JjI1NTtpW3IrM109MjU1JmE7cis9NDtpW3JdPTI1NSZ0LmNoYXJDb2RlQXQoMCk7aVtyKzFdPTI1NSZ0LmNoYXJDb2RlQXQoMSk7aVtyKzJdPTI1NSZ0LmNoYXJDb2RlQXQoMik7aVtyKzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyk7cis9NDtpLnNldChzLHIpO3IrPXMubGVuZ3RoO2NvbnN0IG89ZnVuY3Rpb24gY3JjMzIodCxzLGkpe2xldCBuPS0xO2ZvcihsZXQgcj1zO3I8aTtyKyspe2NvbnN0IHM9MjU1JihuXnRbcl0pO249bj4+PjheZVtzXX1yZXR1cm4tMV5ufShpLG4rNCxyKTtpW3JdPW8+PjI0JjI1NTtpW3IrMV09bz4+MTYmMjU1O2lbcisyXT1vPj44JjI1NTtpW3IrM109MjU1Jm99ZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl7bGV0IGU9dC5sZW5ndGg7Y29uc3Qgcz02NTUzNSxpPU1hdGguY2VpbChlL3MpLG49bmV3IFVpbnQ4QXJyYXkoMitlKzUqaSs0KTtsZXQgcj0wO25bcisrXT0xMjA7bltyKytdPTE1NjtsZXQgYT0wO2Zvcig7ZT5zOyl7bltyKytdPTA7bltyKytdPTI1NTtuW3IrK109MjU1O25bcisrXT0wO25bcisrXT0wO24uc2V0KHQuc3ViYXJyYXkoYSxhK3MpLHIpO3IrPXM7YSs9cztlLT1zfW5bcisrXT0xO25bcisrXT0yNTUmZTtuW3IrK109ZT4+OCYyNTU7bltyKytdPTI1NSZ+ZTtuW3IrK109KDY1NTM1Jn5lKT4+OCYyNTU7bi5zZXQodC5zdWJhcnJheShhKSxyKTtyKz10Lmxlbmd0aC1hO2NvbnN0IG89ZnVuY3Rpb24gYWRsZXIzMih0LGUscyl7bGV0IGk9MSxuPTA7Zm9yKGxldCByPWU7cjxzOysrcil7aT0oaSsoMjU1JnRbcl0pKSU2NTUyMTtuPShuK2kpJTY1NTIxfXJldHVybiBuPDwxNnxpfSh0LDAsdC5sZW5ndGgpO25bcisrXT1vPj4yNCYyNTU7bltyKytdPW8+PjE2JjI1NTtuW3IrK109bz4+OCYyNTU7bltyKytdPTI1NSZvO3JldHVybiBufWZ1bmN0aW9uIGVuY29kZShlLHMsaSxhKXtjb25zdCBvPWUud2lkdGgsbD1lLmhlaWdodDtsZXQgYyxoLGQ7Y29uc3QgdT1lLmRhdGE7c3dpdGNoKHMpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6aD0wO2M9MTtkPW8rNz4+MzticmVhaztjYXNlIG4uSW1hZ2VLaW5kLlJHQl8yNEJQUDpoPTI7Yz04O2Q9MypvO2JyZWFrO2Nhc2Ugbi5JbWFnZUtpbmQuUkdCQV8zMkJQUDpoPTY7Yz04O2Q9NCpvO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWNvbnN0IHA9bmV3IFVpbnQ4QXJyYXkoKDErZCkqbCk7bGV0IGc9MCxtPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7cFtnKytdPTA7cC5zZXQodS5zdWJhcnJheShtLG0rZCksZyk7bSs9ZDtnKz1kfWlmKHM9PT1uLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmYSl7Zz0wO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2crKztmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbZysrXV49MjU1fX1jb25zdCBmPW5ldyBVaW50OEFycmF5KFtvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsYyxoLDAsMCwwXSksYj1mdW5jdGlvbiBkZWZsYXRlU3luYyh0KXtpZighci5pc05vZGVKUylyZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7dHJ5e2xldCBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO2NvbnN0IHM9cmVxdWlyZSgiemxpYiIpLmRlZmxhdGVTeW5jKGUse2xldmVsOjl9KTtyZXR1cm4gcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKX1jYXRjaCh0KXsoMCxuLndhcm4pKCJOb3QgY29tcHJlc3NpbmcgUE5HIGJlY2F1c2UgemxpYi5kZWZsYXRlU3luYyBpcyB1bmF2YWlsYWJsZTogIit0KX1yZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl9KHApLEE9dC5sZW5ndGgrMzYrZi5sZW5ndGgrYi5sZW5ndGgsXz1uZXcgVWludDhBcnJheShBKTtsZXQgdj0wO18uc2V0KHQsdik7dis9dC5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUhEUiIsZixfLHYpO3YrPTEyK2YubGVuZ3RoO3dyaXRlUG5nQ2h1bmsoIklEQVRBIixiLF8sdik7dis9MTIrYi5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUVORCIsbmV3IFVpbnQ4QXJyYXkoMCksXyx2KTtyZXR1cm4gY3JlYXRlT2JqZWN0VVJMKF8sImltYWdlL3BuZyIsaSl9cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcodCxlLHMpe3JldHVybiBlbmNvZGUodCx2b2lkIDA9PT10LmtpbmQ/bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6dC5raW5kLGUscyl9fSgpO2NsYXNzIFNWR0V4dHJhU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLmZvbnRXZWlnaHQ9by5mb250V2VpZ2h0O3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1uLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW8uZmlsbENvbG9yO3RoaXMuc3Ryb2tlQ29sb3I9IiMwMDAwMDAiO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5saW5lSm9pbj0iIjt0aGlzLmxpbmVDYXA9IiI7dGhpcy5taXRlckxpbWl0PTA7dGhpcy5kYXNoQXJyYXk9W107dGhpcy5kYXNoUGhhc2U9MDt0aGlzLmRlcGVuZGVuY2llcz1bXTt0aGlzLmFjdGl2ZUNsaXBVcmw9bnVsbDt0aGlzLmNsaXBHcm91cD1udWxsO3RoaXMubWFza0lkPSIifWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9c2V0Q3VycmVudFBvaW50KHQsZSl7dGhpcy54PXQ7dGhpcy55PWV9fWZ1bmN0aW9uIG9wTGlzdFRvVHJlZSh0KXtsZXQgZT1bXTtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpaWYoInNhdmUiIT09aS5mbikicmVzdG9yZSI9PT1pLmZuP2U9cy5wb3AoKTplLnB1c2goaSk7ZWxzZXtlLnB1c2goe2ZuSWQ6OTIsZm46Imdyb3VwIixpdGVtczpbXX0pO3MucHVzaChlKTtlPWUuYXQoLTEpLml0ZW1zfXJldHVybiBlfWZ1bmN0aW9uIHBmKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTtjb25zdCBlPXQudG9GaXhlZCgxMCk7bGV0IHM9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3NdKXJldHVybiBlO2Rve3MtLX13aGlsZSgiMCI9PT1lW3NdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3NdP3M6cysxKX1mdW5jdGlvbiBwbSh0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOmBzY2FsZSgke3BmKHRbMF0pfSAke3BmKHRbM10pfSlgO2lmKHRbMF09PT10WzNdJiZ0WzFdPT09LXRbMl0pe3JldHVybmByb3RhdGUoJHtwZigxODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEkpfSlgfX1lbHNlIGlmKDE9PT10WzBdJiYwPT09dFsxXSYmMD09PXRbMl0mJjE9PT10WzNdKXJldHVybmB0cmFuc2xhdGUoJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYDtyZXR1cm5gbWF0cml4KCR7cGYodFswXSl9ICR7cGYodFsxXSl9ICR7cGYodFsyXSl9ICR7cGYodFszXSl9ICR7cGYodFs0XSl9ICR7cGYodFs1XSl9KWB9bGV0IHA9MCxnPTAsbT0wO2UuU1ZHR3JhcGhpY3M9YT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscz0hMSl7KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFzO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIG4uT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW24uT1BTW3RdXT10fWdldE9iamVjdCh0LGU9bnVsbCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMudHJhbnNmb3JtTWF0cml4KTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpO3RoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCk7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO3RoaXMudGdycD1udWxsfWdyb3VwKHQpe3RoaXMuc2F2ZSgpO3RoaXMuZXhlY3V0ZU9wVHJlZSh0KTt0aGlzLnJlc3RvcmUoKX1sb2FkRGVwZW5kZW5jaWVzKHQpe2NvbnN0IGU9dC5mbkFycmF5LHM9dC5hcmdzQXJyYXk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKGVbdF09PT1uLk9QUy5kZXBlbmRlbmN5KWZvcihjb25zdCBlIG9mIHNbdF0pe2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqczp0aGlzLm9ianMscz1uZXcgUHJvbWlzZSgocz0+e3QuZ2V0KGUscyl9KSk7dGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHMpfXJldHVybiBQcm9taXNlLmFsbCh0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzKX10cmFuc2Zvcm0odCxlLHMsaSxyLGEpe2NvbnN0IG89W3QsZSxzLGkscixhXTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLlV0aWwudHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4LG8pO3RoaXMudGdycD1udWxsfWdldFNWRyh0LGUpe3RoaXMudmlld3BvcnQ9ZTtjb25zdCBzPXRoaXMuX2luaXRpYWxpemUoZSk7cmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyh0KS50aGVuKCgoKT0+e3RoaXMudHJhbnNmb3JtTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3RoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QodCkpO3JldHVybiBzfSkpfWNvbnZlcnRPcExpc3QodCl7Y29uc3QgZT10aGlzLl9vcGVyYXRvcklkTWFwcGluZyxzPXQuYXJnc0FycmF5LGk9dC5mbkFycmF5LG49W107Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWlbdF07bi5wdXNoKHtmbklkOnIsZm46ZVtyXSxhcmdzOnNbdF19KX1yZXR1cm4gb3BMaXN0VG9UcmVlKG4pfWV4ZWN1dGVPcFRyZWUodCl7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmZuLHM9ZS5mbklkLGk9ZS5hcmdzO3N3aXRjaCgwfHMpe2Nhc2Ugbi5PUFMuYmVnaW5UZXh0OnRoaXMuYmVnaW5UZXh0KCk7YnJlYWs7Y2FzZSBuLk9QUy5kZXBlbmRlbmN5OmJyZWFrO2Nhc2Ugbi5PUFMuc2V0TGVhZGluZzp0aGlzLnNldExlYWRpbmcoaSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6dGhpcy5zZXRMZWFkaW5nTW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldEZvbnQ6dGhpcy5zZXRGb250KGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1RleHQ6Y2FzZSBuLk9QUy5zaG93U3BhY2VkVGV4dDp0aGlzLnNob3dUZXh0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp0aGlzLmVuZFRleHQoKTticmVhaztjYXNlIG4uT1BTLm1vdmVUZXh0OnRoaXMubW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldENoYXJTcGFjaW5nOnRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRXb3JkU3BhY2luZzp0aGlzLnNldFdvcmRTcGFjaW5nKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOnRoaXMuc2V0SFNjYWxlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dE1hdHJpeDp0aGlzLnNldFRleHRNYXRyaXgoaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6dGhpcy5zZXRUZXh0UmlzZShpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOnRoaXMuc2V0VGV4dFJlbmRlcmluZ01vZGUoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lV2lkdGg6dGhpcy5zZXRMaW5lV2lkdGgoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lSm9pbjp0aGlzLnNldExpbmVKb2luKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0TGluZUNhcDp0aGlzLnNldExpbmVDYXAoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRNaXRlckxpbWl0OnRoaXMuc2V0TWl0ZXJMaW1pdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxSR0JDb2xvcjp0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLGlbMV0saVsyXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VSR0JDb2xvcjp0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yTjp0aGlzLnNldFN0cm9rZUNvbG9yTihpKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46dGhpcy5zZXRGaWxsQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hhZGluZ0ZpbGw6dGhpcy5zaGFkaW5nRmlsbChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldERhc2g6dGhpcy5zZXREYXNoKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGbGF0bmVzczp0aGlzLnNldEZsYXRuZXNzKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOnRoaXMuc2V0R1N0YXRlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZmlsbDp0aGlzLmZpbGwoKTticmVhaztjYXNlIG4uT1BTLmVvRmlsbDp0aGlzLmVvRmlsbCgpO2JyZWFrO2Nhc2Ugbi5PUFMuc3Ryb2tlOnRoaXMuc3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5maWxsU3Ryb2tlOnRoaXMuZmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9GaWxsU3Ryb2tlOnRoaXMuZW9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbGlwOnRoaXMuY2xpcCgibm9uemVybyIpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9DbGlwOnRoaXMuY2xpcCgiZXZlbm9kZCIpO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOnRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludEltYWdlWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VNYXNrWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbjp0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRGb3JtWE9iamVjdEVuZDp0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDp0aGlzLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VTdHJva2U6dGhpcy5jbG9zZVN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VGaWxsU3Ryb2tlOnRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbG9zZUVPRmlsbFN0cm9rZTp0aGlzLmNsb3NlRU9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTp0aGlzLm5leHRMaW5lKCk7YnJlYWs7Y2FzZSBuLk9QUy50cmFuc2Zvcm06dGhpcy50cmFuc2Zvcm0oaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuY29uc3RydWN0UGF0aDp0aGlzLmNvbnN0cnVjdFBhdGgoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLmVuZFBhdGg6dGhpcy5lbmRQYXRoKCk7YnJlYWs7Y2FzZSA5Mjp0aGlzLmdyb3VwKGUuaXRlbXMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBvcGVyYXRvciAke3R9YCl9fX1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9c2V0VGV4dE1hdHJpeCh0LGUscyxpLG4scil7Y29uc3QgYT10aGlzLmN1cnJlbnQ7YS50ZXh0TWF0cml4PWEubGluZU1hdHJpeD1bdCxlLHMsaSxuLHJdO2EudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTthLng9YS5saW5lWD0wO2EueT1hLmxpbmVZPTA7YS54Y29vcmRzPVtdO2EueWNvb3Jkcz1bXTthLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTthLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixhLmZvbnRGYW1pbHkpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihhLmZvbnRTaXplKX1weGApO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWEueSkpO2EudHh0RWxlbWVudD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRleHQiKTthLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pfWJlZ2luVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QueD10LmxpbmVYPTA7dC55PXQubGluZVk9MDt0LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dC5saW5lTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3QudGV4dE1hdHJpeFNjYWxlPTE7dC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dC50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO3QudHh0Z3JwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3QueGNvb3Jkcz1bXTt0Lnljb29yZHM9W119bW92ZVRleHQodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtzLng9cy5saW5lWCs9dDtzLnk9cy5saW5lWSs9ZTtzLnhjb29yZHM9W107cy55Y29vcmRzPVtdO3MudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO3MudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHMuZm9udEZhbWlseSk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKHMuZm9udFNpemUpfXB4YCk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtcy55KSl9c2hvd1RleHQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz1lLmZvbnQsaT1lLmZvbnRTaXplO2lmKDA9PT1pKXJldHVybjtjb25zdCByPWUuZm9udFNpemVTY2FsZSxhPWUuY2hhclNwYWNpbmcsYz1lLndvcmRTcGFjaW5nLGg9ZS5mb250RGlyZWN0aW9uLGQ9ZS50ZXh0SFNjYWxlKmgsdT1zLnZlcnRpY2FsLHA9dT8xOi0xLGc9cy5kZWZhdWx0Vk1ldHJpY3MsbT1pKmUuZm9udE1hdHJpeFswXTtsZXQgZj0wO2Zvcihjb25zdCBuIG9mIHQpe2lmKG51bGw9PT1uKXtmKz1oKmM7Y29udGludWV9aWYoIm51bWJlciI9PXR5cGVvZiBuKXtmKz1wKm4qaS8xZTM7Y29udGludWV9Y29uc3QgdD0obi5pc1NwYWNlP2M6MCkrYSxvPW4uZm9udENoYXI7bGV0IGwsZCxiLEE9bi53aWR0aDtpZih1KXtsZXQgdDtjb25zdCBlPW4udm1ldHJpY3x8Zzt0PW4udm1ldHJpYz9lWzFdOi41KkE7dD0tdCptO2NvbnN0IHM9ZVsyXSptO0E9ZT8tZVswXTpBO2w9dC9yO2Q9KGYrcykvcn1lbHNle2w9Zi9yO2Q9MH1pZihuLmlzSW5Gb250fHxzLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrbCk7dSYmZS55Y29vcmRzLnB1c2goLWUueStkKTtlLnRzcGFuLnRleHRDb250ZW50Kz1vfWI9dT9BKm0tdCpoOkEqbSt0Kmg7Zis9Yn1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk7dT9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7dT9lLnktPWY6ZS54Kz1mKmQ7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYoZS5mb250U2l6ZSl9cHhgKTtlLmZvbnRTdHlsZSE9PW8uZm9udFN0eWxlJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc3R5bGUiLGUuZm9udFN0eWxlKTtlLmZvbnRXZWlnaHQhPT1vLmZvbnRXZWlnaHQmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCk7Y29uc3QgYj1lLnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSl7ZS5maWxsQ29sb3IhPT1vLmZpbGxDb2xvciYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIixlLmZpbGxDb2xvcik7ZS5maWxsQWxwaGE8MSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLGUuZmlsbEFscGhhKX1lbHNlIGUudGV4dFJlbmRlcmluZ01vZGU9PT1uLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsInRyYW5zcGFyZW50Iik6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO2lmKGI9PT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRXx8Yj09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0Upe2NvbnN0IHQ9MS8oZS50ZXh0TWF0cml4U2NhbGV8fDEpO3RoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXMoZS50c3Bhbix0KX1sZXQgQT1lLnRleHRNYXRyaXg7aWYoMCE9PWUudGV4dFJpc2Upe0E9QS5zbGljZSgpO0FbNV0rPWUudGV4dFJpc2V9ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsYCR7cG0oQSl9IHNjYWxlKCR7cGYoZCl9LCAtMSlgKTtlLnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobCwieG1sOnNwYWNlIiwicHJlc2VydmUiKTtlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pO2UudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9YWRkRm9udFN0eWxlKHQpe2lmKCF0LmRhdGEpdGhyb3cgbmV3IEVycm9yKCdhZGRGb250U3R5bGU6IE5vIGZvbnQgZGF0YSBhdmFpbGFibGUsIGVuc3VyZSB0aGF0IHRoZSAiZm9udEV4dHJhUHJvcGVydGllcyIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7aWYoIXRoaXMuY3NzU3R5bGUpe3RoaXMuY3NzU3R5bGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdHlsZSIpO3RoaXMuY3NzU3R5bGUuc2V0QXR0cmlidXRlTlMobnVsbCwidHlwZSIsInRleHQvY3NzIik7dGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKX1jb25zdCBlPWNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsdC5taW1ldHlwZSx0aGlzLmZvcmNlRGF0YVNjaGVtYSk7dGhpcy5jc3NTdHlsZS50ZXh0Q29udGVudCs9YEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIiR7dC5sb2FkZWROYW1lfSI7IHNyYzogdXJsKCR7ZX0pOyB9XG5gfXNldEZvbnQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz10aGlzLmNvbW1vbk9ianMuZ2V0KHRbMF0pO2xldCBpPXRbMV07ZS5mb250PXM7aWYodGhpcy5lbWJlZEZvbnRzJiYhcy5taXNzaW5nRmlsZSYmIXRoaXMuZW1iZWRkZWRGb250c1tzLmxvYWRlZE5hbWVdKXt0aGlzLmFkZEZvbnRTdHlsZShzKTt0aGlzLmVtYmVkZGVkRm9udHNbcy5sb2FkZWROYW1lXT1zfWUuZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVg7bGV0IHI9Im5vcm1hbCI7cy5ibGFjaz9yPSI5MDAiOnMuYm9sZCYmKHI9ImJvbGQiKTtjb25zdCBhPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO2lmKGk8MCl7aT0taTtlLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBlLmZvbnREaXJlY3Rpb249MTtlLmZvbnRTaXplPWk7ZS5mb250RmFtaWx5PXMubG9hZGVkTmFtZTtlLmZvbnRXZWlnaHQ9cjtlLmZvbnRTdHlsZT1hO2UudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWUueSkpO2UueGNvb3Jkcz1bXTtlLnljb29yZHM9W119ZW5kVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQudGV4dFJlbmRlcmluZ01vZGUmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHJiZ0LnR4dEVsZW1lbnQ/Lmhhc0NoaWxkTm9kZXMoKSl7dC5lbGVtZW50PXQudHh0RWxlbWVudDt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19c2V0TGluZVdpZHRoKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9c2V0TGluZUNhcCh0KXt0aGlzLmN1cnJlbnQubGluZUNhcD1oW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1kW3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH1zZXRTdHJva2VBbHBoYSh0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH1zZXRTdHJva2VSR0JDb2xvcih0LGUscyl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpfXNldEZpbGxBbHBoYSh0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9c2V0RmlsbFJHQkNvbG9yKHQsZSxzKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpO3RoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dGhpcy5jdXJyZW50Lnhjb29yZHM9W107dGhpcy5jdXJyZW50Lnljb29yZHM9W119c2V0U3Ryb2tlQ29sb3JOKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9c2V0RmlsbENvbG9yTih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zaGFkaW5nRmlsbCh0KXtjb25zdCBlPXRoaXMudmlld3BvcnQud2lkdGgscz10aGlzLnZpZXdwb3J0LmhlaWdodCxpPW4uVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxyPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxpKSxhPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCxzXSxpKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSwwXSxpKSxsPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSxpKSxjPU1hdGgubWluKHJbMF0sYVswXSxvWzBdLGxbMF0pLGg9TWF0aC5taW4oclsxXSxhWzFdLG9bMV0sbFsxXSksZD1NYXRoLm1heChyWzBdLGFbMF0sb1swXSxsWzBdKSx1PU1hdGgubWF4KHJbMV0sYVsxXSxvWzFdLGxbMV0pLHA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixjKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGgpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLGQtYyk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHUtaCk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO3RoaXMuY3VycmVudC5maWxsQWxwaGE8MSYmcC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHRoaXMuY3VycmVudC5maWxsQWxwaGEpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHApfV9tYWtlQ29sb3JOX1BhdHRlcm4odCl7cmV0dXJuIlRpbGluZ1BhdHRlcm4iPT09dFswXT90aGlzLl9tYWtlVGlsaW5nUGF0dGVybih0KTp0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCl9X21ha2VUaWxpbmdQYXR0ZXJuKHQpe2NvbnN0IGU9dFsxXSxzPXRbMl0saT10WzNdfHxuLklERU5USVRZX01BVFJJWCxbcixhLG8sbF09dFs0XSxjPXRbNV0saD10WzZdLGQ9dFs3XSx1PSJzaGFkaW5nIittKyssW3AsZyxmLGJdPW4uVXRpbC5ub3JtYWxpemVSZWN0KFsuLi5uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3IsYV0saSksLi4ubi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLGxdLGkpXSksW0EsX109bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLHY9YypBLHk9aCpfLFM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpwYXR0ZXJuIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsdSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJwYXR0ZXJuVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHYpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGAke3B9YCk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixgJHtnfWApO2NvbnN0IHg9dGhpcy5zdmcsRT10aGlzLnRyYW5zZm9ybU1hdHJpeCxDPXRoaXMuY3VycmVudC5maWxsQ29sb3IsUD10aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IsVD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGYtcCxiLWcpO3RoaXMuc3ZnPVQ7dGhpcy50cmFuc2Zvcm1NYXRyaXg9aTtpZigyPT09ZCl7Y29uc3QgdD1uLlV0aWwubWFrZUhleENvbG9yKC4uLmUpO3RoaXMuY3VycmVudC5maWxsQ29sb3I9dDt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dH10aGlzLmV4ZWN1dGVPcFRyZWUodGhpcy5jb252ZXJ0T3BMaXN0KHMpKTt0aGlzLnN2Zz14O3RoaXMudHJhbnNmb3JtTWF0cml4PUU7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1DO3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj1QO1MuYXBwZW5kKFQuY2hpbGROb2Rlc1swXSk7dGhpcy5kZWZzLmFwcGVuZChTKTtyZXR1cm5gdXJsKCMke3V9KWB9X21ha2VTaGFkaW5nUGF0dGVybih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpO3N3aXRjaCh0WzBdKXtjYXNlIlJhZGlhbEF4aWFsIjpjb25zdCBlPSJzaGFkaW5nIittKysscz10WzNdO2xldCBpO3N3aXRjaCh0WzFdKXtjYXNlImF4aWFsIjpjb25zdCBzPXRbNF0sbj10WzVdO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MSIsc1swXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MSIsc1sxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MiIsblswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MiIsblsxXSk7YnJlYWs7Y2FzZSJyYWRpYWwiOmNvbnN0IHI9dFs0XSxhPXRbNV0sbz10WzZdLGw9dFs3XTtpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmFkaWFsR3JhZGllbnQiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGFbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGFbMV0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsbCk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsclswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsclsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogJHt0WzFdfWApfWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdG9wIik7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvZmZzZXQiLHRbMF0pO2Uuc2V0QXR0cmlidXRlTlMobnVsbCwic3RvcC1jb2xvciIsdFsxXSk7aS5hcHBlbmQoZSl9dGhpcy5kZWZzLmFwcGVuZChpKTtyZXR1cm5gdXJsKCMke2V9KWA7Y2FzZSJNZXNoIjooMCxuLndhcm4pKCJVbmltcGxlbWVudGVkIHBhdHRlcm4gTWVzaCIpO3JldHVybiBudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBJUiB0eXBlOiAke3RbMF19YCl9fXNldERhc2godCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQ7dGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfWNvbnN0cnVjdFBhdGgodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtsZXQgaT1zLngscj1zLnksYT1bXSxvPTA7Zm9yKGNvbnN0IHMgb2YgdClzd2l0Y2goMHxzKXtjYXNlIG4uT1BTLnJlY3RhbmdsZTppPWVbbysrXTtyPWVbbysrXTtjb25zdCB0PWkrZVtvKytdLHM9citlW28rK107YS5wdXNoKCJNIixwZihpKSxwZihyKSwiTCIscGYodCkscGYociksIkwiLHBmKHQpLHBmKHMpLCJMIixwZihpKSxwZihzKSwiWiIpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTSIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTCIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzppPWVbbys0XTtyPWVbbys1XTthLnB1c2goIkMiLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pLHBmKGkpLHBmKHIpKTtvKz02O2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzI6YS5wdXNoKCJDIixwZihpKSxwZihyKSxwZihlW29dKSxwZihlW28rMV0pLHBmKGVbbysyXSkscGYoZVtvKzNdKSk7aT1lW28rMl07cj1lW28rM107bys9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmk9ZVtvKzJdO3I9ZVtvKzNdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihpKSxwZihyKSxwZihpKSxwZihyKSk7bys9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDphLnB1c2goIloiKX1hPWEuam9pbigiICIpO2lmKHMucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PW4uT1BTLnJlY3RhbmdsZSYmdFswXSE9PW4uT1BTLm1vdmVUbylhPXMucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrYTtlbHNle3MucGF0aD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdGgiKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChzLnBhdGgpfXMucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixhKTtzLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtzLmVsZW1lbnQ9cy5wYXRoO3Muc2V0Q3VycmVudFBvaW50KGkscil9ZW5kUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QucGF0aD1udWxsO2lmKCF0aGlzLnBlbmRpbmdDbGlwKXJldHVybjtpZighdC5lbGVtZW50KXt0aGlzLnBlbmRpbmdDbGlwPW51bGw7cmV0dXJufWNvbnN0IGU9ImNsaXBwYXRoIitwKysscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmNsaXBQYXRoIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7Y29uc3QgaT10LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTsiZXZlbm9kZCI9PT10aGlzLnBlbmRpbmdDbGlwP2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwiZXZlbm9kZCIpOmkuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwibm9uemVybyIpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDtzLmFwcGVuZChpKTt0aGlzLmRlZnMuYXBwZW5kKHMpO2lmKHQuYWN0aXZlQ2xpcFVybCl7dC5jbGlwR3JvdXA9bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLmV4dHJhU3RhY2spdC5jbGlwR3JvdXA9bnVsbDtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdC5hY3RpdmVDbGlwVXJsKX10LmFjdGl2ZUNsaXBVcmw9YHVybCgjJHtlfSlgO3RoaXMudGdycD1udWxsfWNsaXAodCl7dGhpcy5wZW5kaW5nQ2xpcD10fWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7Y29uc3QgZT1gJHt0LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwiZCIpfVpgO3QucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlKX19c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0UmVuZGVyaW5nSW50ZW50KHQpe31zZXRGbGF0bmVzcyh0KXt9c2V0R1N0YXRlKHQpe2Zvcihjb25zdFtlLHNdb2YgdClzd2l0Y2goZSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgocyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKHMpO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4ocyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KHMpO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQocyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhzKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKHMpO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKHMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICR7ZX1gKX19ZmlsbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHQuZmlsbENvbG9yKTt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0LmZpbGxBbHBoYSk7dGhpcy5lbmRQYXRoKCl9fXN0cm9rZSgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO3RoaXMuZW5kUGF0aCgpfX1fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LGU9MSl7Y29uc3Qgcz10aGlzLmN1cnJlbnQ7bGV0IGk9cy5kYXNoQXJyYXk7MSE9PWUmJmkubGVuZ3RoPjAmJihpPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSp0fSkpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIscy5zdHJva2VDb2xvcik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utb3BhY2l0eSIscy5zdHJva2VBbHBoYSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbWl0ZXJsaW1pdCIscGYocy5taXRlckxpbWl0KSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIscy5saW5lQ2FwKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIscy5saW5lSm9pbik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHBmKGUqcy5saW5lV2lkdGgpKyJweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hhcnJheSIsaS5tYXAocGYpLmpvaW4oIiAiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaG9mZnNldCIscGYoZSpzLmRhc2hQaGFzZSkrInB4Iil9ZW9GaWxsKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGwoKX1maWxsU3Ryb2tlKCl7dGhpcy5zdHJva2UoKTt0aGlzLmZpbGwoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLmN1cnJlbnQuZWxlbWVudD8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZW9GaWxsU3Ryb2tlKCl9cGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCl7Y29uc3QgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvcik7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9cGFpbnRJbWFnZVhPYmplY3QodCl7Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKShgRGVwZW5kZW50IGltYWdlIHdpdGggb2JqZWN0IElEICR7dH0gaXMgbm90IHJlYWR5IHlldGApfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQsbj11KHQsdGhpcy5mb3JjZURhdGFTY2hlbWEsISFlKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIik7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihpKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9cjt0aGlzLmNsaXAoIm5vbnplcm8iKTtjb25zdCBhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6aW1hZ2UiKTthLnNldEF0dHJpYnV0ZU5TKGMsInhsaW5rOmhyZWYiLG4pO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL3MpfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsbi53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgcz10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHI9ZS5oZWlnaHQsYT1zLmZpbGxDb2xvcjtzLm1hc2tJZD0ibWFzayIrZysrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIscy5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHIpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtzLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0scz1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihzKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChzKTt0aGlzLmRlZnM9cztjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7dmFyIGk9cygxKSxuPXMoMzIpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKSxhPXJlcXVpcmUoImh0dHAiKSxvPXJlcXVpcmUoImh0dHBzIiksbD1yZXF1aXJlKCJ1cmwiKSxjPS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy87ZS5QREZOb2RlU3RyZWFtPWNsYXNzIFBERk5vZGVTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLnVybD1mdW5jdGlvbiBwYXJzZVVybCh0KXtjb25zdCBlPWwucGFyc2UodCk7aWYoImZpbGU6Ij09PWUucHJvdG9jb2x8fGUuaG9zdClyZXR1cm4gZTtpZigvXlthLXpdOlsvXFxdL2kudGVzdCh0KSlyZXR1cm4gbC5wYXJzZShgZmlsZTovLy8ke3R9YCk7ZS5ob3N0fHwoZS5wcm90b2NvbD0iZmlsZToiKTtyZXR1cm4gZX0odC51cmwpO3RoaXMuaXNIdHRwPSJodHRwOiI9PT10aGlzLnVybC5wcm90b2NvbHx8Imh0dHBzOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmlzRnNVcmw9ImZpbGU6Ij09PXRoaXMudXJsLnByb3RvY29sO3RoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJnQuaHR0cEhlYWRlcnN8fHt9O3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTm9kZVN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzRnVsbFJlYWRlcih0aGlzKTpuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5pc0ZzVXJsP25ldyBQREZOb2RlU3RyZWFtRnNSYW5nZVJlYWRlcih0aGlzLHQsZSk6bmV3IFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIEJhc2VGdWxsUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3VybD10LnVybDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl9jb250ZW50TGVuZ3RoPWUubGVuZ3RoO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5fcmVhZGFibGVTdHJlYW09bnVsbDt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGFibGVTdHJlYW0/dGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KTp0aGlzLl9lcnJvcih0KX1fZXJyb3IodCl7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9X3NldFJlYWRhYmxlU3RyZWFtKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQ7dC5vbigicmVhZGFibGUiLCgoKT0+e3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlbmQiLCgoKT0+e3QuZGVzdHJveSgpO3RoaXMuX2RvbmU9ITA7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpO3Qub24oImVycm9yIiwodD0+e3RoaXMuX2Vycm9yKHQpfSkpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5fZXJyb3IobmV3IGkuQWJvcnRFeGNlcHRpb24oInN0cmVhbWluZyBpcyBkaXNhYmxlZCIpKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWNsYXNzIEJhc2VSYW5nZVJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtjb25zdCBlPXQuc291cmNlO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW19Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOnMsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9czt0aGlzLl9jb250ZW50TGVuZ3RoPXJ8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsbi5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDsiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sP3RoaXMuX3JlcXVlc3Q9YS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHQuaHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKTt0aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KX0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3N1cGVyKHQpO3RoaXMuX2h0dHBIZWFkZXJzPXt9O2Zvcihjb25zdCBlIGluIHQuaHR0cEhlYWRlcnMpe2NvbnN0IHM9dC5odHRwSGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYodGhpcy5faHR0cEhlYWRlcnNbZV09cyl9dGhpcy5faHR0cEhlYWRlcnMuUmFuZ2U9YGJ5dGVzPSR7ZX0tJHtzLTF9YDtjb25zdCBoYW5kbGVSZXNwb25zZT10PT57aWYoNDA0IT09dC5zdGF0dXNDb2RlKXRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHQpO2Vsc2V7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10fX07dGhpcy5fcmVxdWVzdD1udWxsOyJodHRwOiI9PT10aGlzLl91cmwucHJvdG9jb2w/dGhpcy5fcmVxdWVzdD1hLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk7dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dH0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtRnNGdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7bGV0IGU9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuX3VybC5wYXRoKTtjLnRlc3QodGhpcy5fdXJsLmhyZWYpJiYoZT1lLnJlcGxhY2UoL15cLy8sIiIpKTtyLmxzdGF0KGUsKCh0LHMpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXMuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO2MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLHtzdGFydDplLGVuZDpzLTF9KSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxuLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaCh0KXt9aWYoKDAsci5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHtnZXRSZXNwb25zZUhlYWRlcjp0LGlzSHR0cDplLHJhbmdlQ2h1bmtTaXplOnMsZGlzYWJsZVJhbmdlOml9KXtjb25zdCBuPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0scj1wYXJzZUludCh0KCJDb250ZW50LUxlbmd0aCIpLDEwKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4gbjtuLnN1Z2dlc3RlZExlbmd0aD1yO2lmKHI8PTIqcylyZXR1cm4gbjtpZihpfHwhZSlyZXR1cm4gbjtpZigiYnl0ZXMiIT09dCgiQWNjZXB0LVJhbmdlcyIpKXJldHVybiBuO2lmKCJpZGVudGl0eSIhPT0odCgiQ29udGVudC1FbmNvZGluZyIpfHwiaWRlbnRpdHkiKSlyZXR1cm4gbjtuLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMDtyZXR1cm4gbn07ZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VTdGF0dXModCl7cmV0dXJuIDIwMD09PXR8fDIwNj09PXR9O3ZhciBpPXMoMSksbj1zKDMzKSxyPXMoNil9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5nZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXI9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKHQpe2xldCBlPSEwLHM9dG9QYXJhbVJlZ0V4cCgiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihzKXtzPXNbMV07bGV0IHQ9cmZjMjYxNnVucXVvdGUocyk7dD11bmVzY2FwZSh0KTt0PXJmYzU5ODdkZWNvZGUodCk7dD1yZmMyMDQ3ZGVjb2RlKHQpO3JldHVybiBmaXh1cEVuY29kaW5nKHQpfXM9ZnVuY3Rpb24gcmZjMjIzMWdldHBhcmFtKHQpe2NvbnN0IGU9W107bGV0IHM7Y29uc3QgaT10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtmb3IoO251bGwhPT0ocz1pLmV4ZWModCkpOyl7bGV0Wyx0LGksbl09czt0PXBhcnNlSW50KHQsMTApO2lmKHQgaW4gZSl7aWYoMD09PXQpYnJlYWt9ZWxzZSBlW3RdPVtpLG5dfWNvbnN0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aCYmdCBpbiBlOysrdCl7bGV0W3MsaV09ZVt0XTtpPXJmYzI2MTZ1bnF1b3RlKGkpO2lmKHMpe2k9dW5lc2NhcGUoaSk7MD09PXQmJihpPXJmYzU5ODdkZWNvZGUoaSkpfW4ucHVzaChpKX1yZXR1cm4gbi5qb2luKCIiKX0odCk7aWYocyl7cmV0dXJuIGZpeHVwRW5jb2RpbmcocmZjMjA0N2RlY29kZShzKSl9cz10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZSIsImkiKS5leGVjKHQpO2lmKHMpe3M9c1sxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShzKTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9ZnVuY3Rpb24gdG9QYXJhbVJlZ0V4cCh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiB0ZXh0ZGVjb2RlKHQscyl7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChzKSlyZXR1cm4gczt0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPSgwLGkuc3RyaW5nVG9CeXRlcykocyk7cz1uLmRlY29kZShyKTtlPSExfWNhdGNoKHQpe319cmV0dXJuIHN9ZnVuY3Rpb24gZml4dXBFbmNvZGluZyh0KXtpZihlJiYvW1x4ODAtXHhmZl0vLnRlc3QodCkpe3Q9dGV4dGRlY29kZSgidXRmLTgiLHQpO2UmJih0PXRleHRkZWNvZGUoImlzby04ODU5LTEiLHQpKX1yZXR1cm4gdH1mdW5jdGlvbiByZmMyNjE2dW5xdW90ZSh0KXtpZih0LnN0YXJ0c1dpdGgoJyInKSl7Y29uc3QgZT10LnNsaWNlKDEpLnNwbGl0KCdcXCInKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgcz1lW3RdLmluZGV4T2YoJyInKTtpZigtMSE9PXMpe2VbdF09ZVt0XS5zbGljZSgwLHMpO2UubGVuZ3RoPXQrMX1lW3RdPWVbdF0ucmVwbGFjZSgvXFwoLikvZywiJDEiKX10PWUuam9pbignIicpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzU5ODdkZWNvZGUodCl7Y29uc3QgZT10LmluZGV4T2YoIiciKTtpZigtMT09PWUpcmV0dXJuIHQ7cmV0dXJuIHRleHRkZWNvZGUodC5zbGljZSgwLGUpLHQuc2xpY2UoZSsxKS5yZXBsYWNlKC9eW14nXSonLywiIikpfWZ1bmN0aW9uIHJmYzIwNDdkZWNvZGUodCl7cmV0dXJuIXQuc3RhcnRzV2l0aCgiPT8iKXx8L1tceDAwLVx4MTlceDgwLVx4ZmZdLy50ZXN0KHQpP3Q6dC5yZXBsYWNlKC89XD8oW1x3LV0qKVw/KFtRcUJiXSlcPygoPzpbXj9dfFw/KD8hPSkpKilcPz0vZywoZnVuY3Rpb24odCxlLHMsaSl7aWYoInEiPT09c3x8IlEiPT09cylyZXR1cm4gdGV4dGRlY29kZShlLGk9KGk9aS5yZXBsYWNlKC9fL2csIiAiKSkucmVwbGFjZSgvPShbMC05YS1mQS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpO3RyeXtpPWF0b2IoaSl9Y2F0Y2godCl7fXJldHVybiB0ZXh0ZGVjb2RlKGUsaSl9KSl9cmV0dXJuIiJ9O3ZhciBpPXMoMSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7Y2xhc3MgTmV0d29ya01hbmFnZXJ7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5nZXRYaHI9ZS5nZXRYaHJ8fGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2dldFhocigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O3RoaXMuY3VyclhocklkPTA7dGhpcy5wZW5kaW5nUmVxdWVzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXF1ZXN0UmFuZ2UodCxlLHMpe2NvbnN0IGk9e2JlZ2luOnQsZW5kOmV9O2Zvcihjb25zdCB0IGluIHMpaVt0XT1zW3RdO3JldHVybiB0aGlzLnJlcXVlc3QoaSl9cmVxdWVzdEZ1bGwodCl7cmV0dXJuIHRoaXMucmVxdWVzdCh0KX1yZXF1ZXN0KHQpe2NvbnN0IGU9dGhpcy5nZXRYaHIoKSxzPXRoaXMuY3VyclhocklkKyssaT10aGlzLnBlbmRpbmdSZXF1ZXN0c1tzXT17eGhyOmV9O2Uub3BlbigiR0VUIix0aGlzLnVybCk7ZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7Zm9yKGNvbnN0IHQgaW4gdGhpcy5odHRwSGVhZGVycyl7Y29uc3Qgcz10aGlzLmh0dHBIZWFkZXJzW3RdO3ZvaWQgMCE9PXMmJmUuc2V0UmVxdWVzdEhlYWRlcih0LHMpfWlmKHRoaXMuaXNIdHRwJiYiYmVnaW4iaW4gdCYmImVuZCJpbiB0KXtlLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIixgYnl0ZXM9JHt0LmJlZ2lufS0ke3QuZW5kLTF9YCk7aS5leHBlY3RlZFN0YXR1cz0yMDZ9ZWxzZSBpLmV4cGVjdGVkU3RhdHVzPTIwMDtlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Qub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihzKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSk7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxzKTtlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxzKTtpLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQ7aS5vbkRvbmU9dC5vbkRvbmU7aS5vbkVycm9yPXQub25FcnJvcjtpLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzO2Uuc2VuZChudWxsKTtyZXR1cm4gc31vblByb2dyZXNzKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtzJiZzLm9uUHJvZ3Jlc3M/LihlKX1vblN0YXRlQ2hhbmdlKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZighcylyZXR1cm47Y29uc3Qgbj1zLnhocjtpZihuLnJlYWR5U3RhdGU+PTImJnMub25IZWFkZXJzUmVjZWl2ZWQpe3Mub25IZWFkZXJzUmVjZWl2ZWQoKTtkZWxldGUgcy5vbkhlYWRlcnNSZWNlaXZlZH1pZig0IT09bi5yZWFkeVN0YXRlKXJldHVybjtpZighKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKXJldHVybjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoMD09PW4uc3RhdHVzJiZ0aGlzLmlzSHR0cCl7cy5vbkVycm9yPy4obi5zdGF0dXMpO3JldHVybn1jb25zdCByPW4uc3RhdHVzfHwyMDA7aWYoISgyMDA9PT1yJiYyMDY9PT1zLmV4cGVjdGVkU3RhdHVzKSYmciE9PXMuZXhwZWN0ZWRTdGF0dXMpe3Mub25FcnJvcj8uKG4uc3RhdHVzKTtyZXR1cm59Y29uc3QgYT1mdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KXtjb25zdCBlPXQucmVzcG9uc2U7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6KDAsaS5zdHJpbmdUb0J5dGVzKShlKS5idWZmZXJ9KG4pO2lmKDIwNj09PXIpe2NvbnN0IHQ9bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1SYW5nZSIpLGU9L2J5dGVzIChcZCspLShcZCspXC8oXGQrKS8uZXhlYyh0KTtzLm9uRG9uZSh7YmVnaW46cGFyc2VJbnQoZVsxXSwxMCksY2h1bms6YX0pfWVsc2UgYT9zLm9uRG9uZSh7YmVnaW46MCxjaHVuazphfSk6cy5vbkVycm9yPy4obi5zdGF0dXMpfWdldFJlcXVlc3RYaHIodCl7cmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocn1pc1BlbmRpbmdSZXF1ZXN0KHQpe3JldHVybiB0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzfWFib3J0UmVxdWVzdCh0KXtjb25zdCBlPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07ZS5hYm9ydCgpfX1lLlBERk5ldHdvcmtTdHJlYW09Y2xhc3MgUERGTmV0d29ya1N0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zb3VyY2U9dDt0aGlzLl9tYW5hZ2VyPW5ldyBOZXR3b3JrTWFuYWdlcih0LnVybCx7aHR0cEhlYWRlcnM6dC5odHRwSGVhZGVycyx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9KTt0aGlzLl9yYW5nZUNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0aGlzLl9zb3VyY2UpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2NvbnN0IHM9bmV3IFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0LGUpO3Mub25DbG9zZWQ9dGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IHM9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmw7dGhpcy5fZnVsbFJlcXVlc3RJZD10LnJlcXVlc3RGdWxsKHMpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9kaXNhYmxlUmFuZ2U9ZS5kaXNhYmxlUmFuZ2V8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2NhY2hlZENodW5rcz1bXTt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsfV9vbkhlYWRlcnNSZWNlaXZlZCgpe2NvbnN0IHQ9dGhpcy5fZnVsbFJlcXVlc3RJZCxlPXRoaXMuX21hbmFnZXIuZ2V0UmVxdWVzdFhocih0KSxnZXRSZXNwb25zZUhlYWRlcj10PT5lLmdldFJlc3BvbnNlSGVhZGVyKHQpLHthbGxvd1JhbmdlUmVxdWVzdHM6cyxzdWdnZXN0ZWRMZW5ndGg6aX09KDAsbi52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9tYW5hZ2VyLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7cyYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApO3RoaXMuX2NvbnRlbnRMZW5ndGg9aXx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKX1fb25Eb25lKHQpe2lmKHQpaWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSl9ZWxzZSB0aGlzLl9jYWNoZWRDaHVua3MucHVzaCh0LmNodW5rKTt0aGlzLl9kb25lPSEwO2lmKCEodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX1fb25FcnJvcih0KXt0aGlzLl9zdG9yZWRFcnJvcj0oMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsdGhpcy5fdXJsKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX2NhY2hlZENodW5rcy5sZW5ndGg9MH1fb25Qcm9ncmVzcyh0KXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fY2FjaGVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscyl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLHMsaSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO3RoaXMuX2Nsb3NlKCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxzKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6cy5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBzIGluIHQpe2NvbnN0IGk9dFtzXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChzLGkpfXJldHVybiBlfWUuUERGRmV0Y2hTdHJlYW09Y2xhc3MgUERGRmV0Y2hTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLmlzSHR0cD0vXmh0dHBzPzovaS50ZXN0KHQudXJsKTt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERkZldGNoU3RyZWFtUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGRmV0Y2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fc3RyZWFtPXQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbG9hZGVkPTA7dGhpcy5fZmlsZW5hbWU9bnVsbDtjb25zdCBlPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX2hlYWRlcnM9Y3JlYXRlSGVhZGVycyh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO2NvbnN0IHM9ZS51cmw7ZmV0Y2gocyxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxuLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMscyk7dGhpcy5fcmVhZGVyPXQuYm9keS5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Y29uc3QgZ2V0UmVzcG9uc2VIZWFkZXI9ZT0+dC5oZWFkZXJzLmdldChlKSx7YWxsb3dSYW5nZVJlcXVlc3RzOmUsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dGhpcy5fc3RyZWFtLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9cnx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJTdHJlYW1pbmcgaXMgZGlzYWJsZWQuIikpfSkpLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGVyPy5jYW5jZWwodCk7dGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fWNsYXNzIFBERkZldGNoU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO2NvbnN0IHI9dC5zb3VyY2U7dGhpcy5fd2l0aENyZWRlbnRpYWxzPXIud2l0aENyZWRlbnRpYWxzfHwhMTt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFyLmRpc2FibGVTdHJlYW07dGhpcy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7dGhpcy5faGVhZGVycy5hcHBlbmQoIlJhbmdlIixgYnl0ZXM9JHtlfS0ke3MtMX1gKTtjb25zdCBhPXIudXJsO2ZldGNoKGEsY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsdGhpcy5fd2l0aENyZWRlbnRpYWxzLHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4oKHQ9PntpZighKDAsbi52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGEpO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX19XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciBzPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1t0XShzLHMuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gcy5leHBvcnRzfXZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9OygoKT0+e3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFubm90YXRpb25FZGl0b3JMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25MYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTW9kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbk1vZGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNNYXBDb21wcmVzc2lvblR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkdsb2JhbFdvcmtlck9wdGlvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkdsb2JhbFdvcmtlck9wdGlvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkludmFsaWRQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkludmFsaWRQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk1pc3NpbmdQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk1pc3NpbmdQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk9QUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuT1BTfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRhUmFuZ2VUcmFuc3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlBERkRhdGFSYW5nZVRyYW5zcG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0ZVN0cmluZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUERGRGF0ZVN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGV29ya2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5QREZXb3JrZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBhc3N3b3JkUmVzcG9uc2VzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QYXNzd29yZFJlc3BvbnNlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGVybWlzc2lvbkZsYWciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBlcm1pc3Npb25GbGFnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQaXhlbHNQZXJJbmNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QaXhlbHNQZXJJbmNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiU1ZHR3JhcGhpY3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLlNWR0dyYXBoaWNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVTlNVUFBPUlRFRF9GRUFUVVJFUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVU5TVVBQT1JURURfRkVBVFVSRVN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVdGlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VdGlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJWZXJib3NpdHlMZXZlbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlhmYUxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5YZmFMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYnVpbGQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1aWxkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNQZGZGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc1BkZkZpbGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRTY3JpcHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmxvYWRTY3JpcHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbmRlclRleHRMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVuZGVyVGV4dExheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMudmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLHM9X193X3BkZmpzX3JlcXVpcmVfXygyKSxpPV9fd19wZGZqc19yZXF1aXJlX18oNiksbj1fX3dfcGRmanNfcmVxdWlyZV9fKDIxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oNSksYT1fX3dfcGRmanNfcmVxdWlyZV9fKDI2KSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTQpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxMiksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDI5KSxoPV9fd19wZGZqc19yZXF1aXJlX18oMzApLGQ9X193X3BkZmpzX3JlcXVpcmVfXygyOCk7aWYobC5pc05vZGVKUyl7Y29uc3R7UERGTm9kZVN0cmVhbTp0fT1fX3dfcGRmanNfcmVxdWlyZV9fKDMxKTsoMCxzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5KSgoZT0+bmV3IHQoZSkpKX1lbHNle2NvbnN0e1BERk5ldHdvcmtTdHJlYW06dH09X193X3BkZmpzX3JlcXVpcmVfXygzNCkse1BERkZldGNoU3RyZWFtOmV9PV9fd19wZGZqc19yZXF1aXJlX18oMzUpOygwLHMuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChzPT4oMCxpLmlzVmFsaWRGZXRjaFVybCkocy51cmwpP25ldyBlKHMpOm5ldyB0KHMpKSl9fSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=";function a(t){return new Promise(((l,e)=>{let i=document.createElement("script");i.src=t,i.onload=function(){l()},i.onerror=function(){e()},document.body.append(i)}))}const u=`data:text/javascript;base64,${d}`,o=`data:text/javascript;base64,${s}`;var r={name:"VueOfficePdf",props:{src:{type:[String]},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"}},data(){return{document:"",numPages:0}},watch:{src(){this.checkPdfLib().then(this.init)}},mounted(){this.src&&this.checkPdfLib().then(this.init)},methods:{checkPdfLib(){return window.pdfjsLib?Promise.resolve():this.installPdfScript()},installPdfScript(){return a(u).then((()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=o}))},init(){if(!this.src)return void(this.numPages=0);const t=window.pdfjsLib.getDocument({url:this.src,cMapUrl:`${this.staticFileUrl.endsWith("/")?this.staticFileUrl:this.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0});t.promise.then((t=>{this.document=t,this.numPages=t.numPages,this.renderPage(1)})).catch((t=>{this.$emit("error",t)}))},renderPage(t){this.document.getPage(t).then((l=>{const e=l.getViewport({scale:window.devicePixelRatio}),i=this.$refs["canvas"+t][0];i.width=e.width,i.height=e.height;const n=i.getContext("2d"),c=l.render({canvasContext:n,viewport:e});c.promise.then((()=>{this.numPages>t?this.renderPage(t+1):this.$emit("rendered")})).catch((t=>{this.$emit("error",t)}))})).catch((t=>{this.$emit("error",t)}))}}},b=r;function h(t,l,e,i,n,c,s,d){var a,u="function"===typeof t?t.options:t;if(l&&(u.render=l,u.staticRenderFns=e,u._compiled=!0),i&&(u.functional=!0),c&&(u._scopeId="data-v-"+c),s?(a=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},u._ssrRegister=a):n&&(a=d?function(){n.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:n),a)if(u.functional){u._injectStyles=a;var o=u.render;u.render=function(t,l){return a.call(l),o(t,l)}}else{var r=u.beforeCreate;u.beforeCreate=r?[].concat(r,a):[a]}return{exports:t,options:u}}var Z=h(b,n,c,!1,null,"583a839a",null),m=Z.exports;m.install=function(t){t.component(m.name,m)};var y=m,p=y;return l}()}))}},l={};function e(i){var n=l[i];if(void 0!==n)return n.exports;var c=l[i]={id:i,loaded:!1,exports:{}};return t[i].call(c.exports,c,c.exports,e),c.loaded=!0,c.exports}e.m=t,function(){var t=[];e.O=function(l,i,n,c){if(!i){var s=1/0;for(o=0;o<t.length;o++){i=t[o][0],n=t[o][1],c=t[o][2];for(var d=!0,a=0;a<i.length;a++)(!1&c||s>=c)&&Object.keys(e.O).every((function(t){return e.O[t](i[a])}))?i.splice(a--,1):(d=!1,c<s&&(s=c));if(d){t.splice(o--,1);var u=n();void 0!==u&&(l=u)}}return l}c=c||0;for(var o=t.length;o>0&&t[o-1][2]>c;o--)t[o]=t[o-1];t[o]=[i,n,c]}}(),function(){e.n=function(t){var l=t&&t.__esModule?function(){return t["default"]}:function(){return t};return e.d(l,{a:l}),l}}(),function(){e.d=function(t,l){for(var i in l)e.o(l,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:l[i]})}}(),function(){e.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){e.o=function(t,l){return Object.prototype.hasOwnProperty.call(t,l)}}(),function(){e.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}}(),function(){e.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t}}(),function(){var t={826:0};e.O.j=function(l){return 0===t[l]};var l=function(l,i){var n,c,s=i[0],d=i[1],a=i[2],u=0;if(s.some((function(l){return 0!==t[l]}))){for(n in d)e.o(d,n)&&(e.m[n]=d[n]);if(a)var o=a(e)}for(l&&l(i);u<s.length;u++)c=s[u],e.o(t,c)&&t[c]&&t[c][0](),t[c]=0;return e.O(o)},i=self["webpackChunkvue_office"]=self["webpackChunkvue_office"]||[];i.forEach(l.bind(null,0)),i.push=l.bind(null,i.push.bind(i))}();var i=e.O(void 0,[998],(function(){return e(4811)}));i=e.O(i)})();
//# sourceMappingURL=index.7df5482e.js.map