| Server IP : 82.208.35.60 / Your IP : 216.73.216.89 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/ |
Upload File : |
/*! For license information please see main.bundle.js.LICENSE.txt */
(()=>{var __webpack_modules__={57208:e=>{"use strict";e.exports=JSON.parse('{"base_url":"","routes":{"admin_common_notifications":{"tokens":[["text","/common/notifications"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_product_form":{"tokens":[["variable","/","\\\\d+","id"],["text","/sell/catalog/products"]],"defaults":[],"requirements":{"id":"\\\\d+"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_feature_get_feature_values":{"tokens":[["variable","/","\\\\d+","idFeature"],["text","/sell/catalog/products/features"]],"defaults":{"idFeature":0},"requirements":{"idFeature":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_products_combinations":{"tokens":[["text","/combinations"],["variable","/","[^/]++","productId"],["text","/sell/catalog/products-v2"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_products_combinations_ids":{"tokens":[["text","/combinations/ids"],["variable","/","[^/]++","productId"],["text","/sell/catalog/products-v2"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_products_combinations_update_combination_from_listing":{"tokens":[["text","/update-combination-from-listing"],["variable","/","\\\\d+","combinationId"],["text","/sell/catalog/products-v2/combinations"]],"defaults":[],"requirements":{"combinationId":"\\\\d+"},"hosttokens":[],"methods":["PATCH"],"schemes":[]},"admin_products_combinations_edit_combination":{"tokens":[["text","/edit"],["variable","/","\\\\d+","combinationId"],["text","/sell/catalog/products-v2/combinations"]],"defaults":[],"requirements":{"combinationId":"\\\\d+"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_products_combinations_remove_combination":{"tokens":[["text","/remove"],["variable","/","\\\\d+","combinationId"],["text","/sell/catalog/products-v2/combinations"]],"defaults":[],"requirements":{"combinationId":"\\\\d+"},"hosttokens":[],"methods":["DELETE"],"schemes":[]},"admin_products_attribute_groups":{"tokens":[["text","/attribute-groups"],["variable","/","[^/]++","productId"],["text","/sell/catalog/products-v2"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_all_attribute_groups":{"tokens":[["text","/sell/catalog/products-v2/all-attribute-groups"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_products_combinations_generate":{"tokens":[["variable","/","[^/]++","productId"],["text","/sell/catalog/products-v2/generate-combinations"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_products_v2_get_images":{"tokens":[["text","/images"],["variable","/","\\\\d+","productId"],["text","/sell/catalog/products-v2"]],"defaults":[],"requirements":{"productId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_products_v2_add_image":{"tokens":[["text","/sell/catalog/products-v2/images/add"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_products_v2_update_image":{"tokens":[["text","/update"],["variable","/","\\\\d+","productImageId"],["text","/sell/catalog/products-v2/images"]],"defaults":[],"requirements":{"productImageId":"\\\\d+"},"hosttokens":[],"methods":["PATCH"],"schemes":[]},"admin_products_v2_delete_image":{"tokens":[["text","/delete"],["variable","/","\\\\d+","productImageId"],["text","/sell/catalog/products-v2/images"]],"defaults":[],"requirements":{"productImageId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_categories_get_categories_tree":{"tokens":[["text","/sell/catalog/categories/tree"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_cart_rules_search":{"tokens":[["text","/sell/catalog/cart-rules/search"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_customers_view":{"tokens":[["text","/view"],["variable","/","\\\\d+","customerId"],["text","/sell/customers"]],"defaults":[],"requirements":{"customerId":"\\\\d+"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_customers_search":{"tokens":[["text","/sell/customers/search"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_customers_carts":{"tokens":[["text","/carts"],["variable","/","\\\\d+","customerId"],["text","/sell/customers"]],"defaults":[],"requirements":{"customerId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_customers_orders":{"tokens":[["text","/orders"],["variable","/","\\\\d+","customerId"],["text","/sell/customers"]],"defaults":[],"requirements":{"customerId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_addresses_create":{"tokens":[["text","/sell/addresses/new"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_addresses_edit":{"tokens":[["text","/edit"],["variable","/","\\\\d+","addressId"],["text","/sell/addresses"]],"defaults":[],"requirements":{"addressId":"\\\\d+"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_order_addresses_edit":{"tokens":[["text","/edit"],["variable","/","delivery|invoice","addressType"],["variable","/","\\\\d+","orderId"],["text","/sell/addresses/order"]],"defaults":[],"requirements":{"orderId":"\\\\d+","addressType":"delivery|invoice"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_cart_addresses_edit":{"tokens":[["text","/edit"],["variable","/","delivery|invoice","addressType"],["variable","/","\\\\d+","cartId"],["text","/sell/addresses/cart"]],"defaults":[],"requirements":{"cartId":"\\\\d+","addressType":"delivery|invoice"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_carts_view":{"tokens":[["text","/view"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_carts_info":{"tokens":[["text","/info"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_carts_create":{"tokens":[["text","/sell/orders/carts/new"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_addresses":{"tokens":[["text","/addresses"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_carrier":{"tokens":[["text","/carrier"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_currency":{"tokens":[["text","/currency"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_language":{"tokens":[["text","/language"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_set_delivery_settings":{"tokens":[["text","/rules/delivery-settings"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_add_cart_rule":{"tokens":[["text","/cart-rules"],["variable","/","[^/]++","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_delete_cart_rule":{"tokens":[["text","/delete"],["variable","/","[^/]++","cartRuleId"],["text","/cart-rules"],["variable","/","[^/]++","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_add_product":{"tokens":[["text","/products"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_product_price":{"tokens":[["text","/price"],["variable","/","\\\\d+","productId"],["text","/products"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+","productId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_edit_product_quantity":{"tokens":[["text","/quantity"],["variable","/","\\\\d+","productId"],["text","/products"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+","productId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_carts_delete_product":{"tokens":[["text","/delete-product"],["variable","/","\\\\d+","cartId"],["text","/sell/orders/carts"]],"defaults":[],"requirements":{"cartId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_place":{"tokens":[["text","/sell/orders/place"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_view":{"tokens":[["text","/view"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET","POST"],"schemes":[]},"admin_orders_duplicate_cart":{"tokens":[["text","/duplicate-cart"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_update_product":{"tokens":[["variable","/","\\\\d+","orderDetailId"],["text","/products"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+","orderDetailId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_partial_refund":{"tokens":[["text","/partial-refund"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_standard_refund":{"tokens":[["text","/standard-refund"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_return_product":{"tokens":[["text","/return-product"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_send_process_order_email":{"tokens":[["text","/sell/orders/process-order-email"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_add_product":{"tokens":[["text","/products"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_delete_product":{"tokens":[["text","/delete"],["variable","/","\\\\d+","orderDetailId"],["text","/products"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+","orderDetailId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_get_discounts":{"tokens":[["text","/discounts"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_prices":{"tokens":[["text","/prices"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_payments":{"tokens":[["text","/payments"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_products":{"tokens":[["text","/products"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_invoices":{"tokens":[["text","/invoices"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_documents":{"tokens":[["text","/documents"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_get_shipping":{"tokens":[["text","/shipping"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_cancellation":{"tokens":[["text","/cancellation"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_configure_product_pagination":{"tokens":[["text","/sell/orders/configure-product-pagination"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["POST"],"schemes":[]},"admin_orders_product_prices":{"tokens":[["text","/products/prices"],["variable","/","\\\\d+","orderId"],["text","/sell/orders"]],"defaults":[],"requirements":{"orderId":"\\\\d+"},"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_orders_products_search":{"tokens":[["text","/sell/orders/products/search"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]},"admin_shops_search":{"tokens":[["variable","/","[^/]++","searchTerm"],["text","/configure/advanced/shops/search"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":["GET"],"schemes":[]}},"prefix":"","host":"localhost","port":"","scheme":"http","locale":[]}')},73544:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,s=(i=n(88902))&&i.__esModule?i:{default:i};t.default=function(e,t){var n=document.createElement("element"),i=e.charAt(0).toUpperCase()+e.substring(1),r=t.charAt(0).toUpperCase()+t.substring(1),a={transition:""+e+t,OTransition:"o"+i+r,MozTransition:""+e+t,WebkitTransition:"webkit"+i+r},o=(0,s.default)(a).find((function(e){return void 0!==n.style[e]}));return void 0!==o&&a[o]}},54563:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(38264);var i=window.$,s=function e(){var t=i("body").find(".bootstrap-datetimepicker-widget:last");if(!(t.length<=0)){var n=t.offset(),s=t.outerHeight(),r=(t.outerHeight(!0)-s)/2;t.appendTo("body");var a=n.top+r;t.hasClass("top")&&(a+=s-t.outerHeight(!0)-r),t.css({position:"absolute",top:a,bottom:"auto",left:n.left,right:"auto"}),i(window).on("resize",e)}};t.default=function(){var e=i('.datepicker input[type="text"]');i.each(e,(function(e,t){i(t).datetimepicker({locale:window.full_language_code,format:i(t).data("format")?i(t).data("format"):"YYYY-MM-DD",sideBySide:!0,icons:{time:"time",date:"date",up:"up",down:"down"}}).on("dp.show",s).on("dp.hide",(function(){i(window).off("resize",s)})).on("dp.change",(function(e){var t=new CustomEvent("datepickerChange",e);window.document.dispatchEvent(t)}))}))}},5847:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,s=(i=n(3689))&&i.__esModule?i:{default:i},r=window.$;t.default=function(e){var t=r(e);r.each(t,(function(e,t){if(!t.checkValidity()){var n=t.value.split("@");s.default.toASCII(n[0])===n[0]&&(t.value=s.default.toASCII(t.value))}}))}},77120:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=window.$;t.default=function(){n("input,select,textarea").on("invalid",(function(){this.scrollIntoView(!1)}))}},58015:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=I(n(88239)),s=I(n(34162)),r=I(n(92526)),a=I(n(77672)),o=I(n(52666)),l=I(n(34684)),u=I(n(19078)),d=I(n(84668)),c=I(n(44089)),h=I(n(30850)),p=I(n(53021)),f=I(n(9400)),m=I(n(2598)),_=I(n(43027)),g=n(76544),v=I(n(53277)),y=I(n(95778)),b=I(n(51964)),w=I(n(5595)),k=I(n(93757)),M=I(n(69077)),L=I(n(4499)),D=I(n(2573)),T=I(n(96803)),x=I(n(91137)),S=I(n(58899)),Y=I(n(46446)),C=I(n(92448)),E=I(n(76897)),O=I(n(37758)),A=I(n(58630)),H=I(n(17868)),j=I(n(36188)),P=I(n(91781));function I(e){return e&&e.__esModule?e:{default:e}}var F={AsyncToggleColumnExtension:b.default,BulkActionCheckboxExtension:w.default,BulkOpenTabsExtension:k.default,ChoiceExtension:M.default,ColumnTogglingExtension:L.default,ExportToSqlManagerExtension:D.default,FiltersResetExtension:T.default,FiltersSubmitButtonEnablerExtension:x.default,LinkRowActionExtension:S.default,ModalFormSubmitExtension:Y.default,PositionExtension:C.default,PreviewExtension:E.default,ReloadListExtension:O.default,SortingExtension:A.default,SubmitBulkActionExtension:H.default,SubmitGridActionExtension:j.default,SubmitRowActionExtension:P.default};t.default=function(){window.prestashop=(0,i.default)({},window.prestashop),window.prestashop.instance||(window.prestashop.instance={}),window.prestashop.component={initComponents:function(e){e.forEach((function(e){if(void 0!==window.prestashop.component[e]){var t=e.charAt(0).toLowerCase()+e.slice(1);void 0===window.prestashop.instance[t]?window.prestashop.instance[t]="EventEmitter"!==e?new window.prestashop.component[e]:window.prestashop.component[e]:console.warn('Failed to initialize PrestaShop component "'+e+'". This component is already initialized.')}else console.error('Failed to initialize PrestaShop component "'+e+"\". This component doesn't exist.")})),g.EventEmitter.emit("PSComponentsInitiated")},TranslatableField:s.default,TinyMCEEditor:a.default,TranslatableInput:r.default,TaggableField:o.default,ChoiceTable:l.default,EventEmitter:g.EventEmitter,ChoiceTree:u.default,MultipleChoiceTable:d.default,GeneratableInput:c.default,CountryStateSelectionToggler:h.default,CountryDniRequiredToggler:p.default,TextWithLengthCounter:f.default,MultistoreConfigField:_.default,PreviewOpener:m.default,Grid:v.default,GridExtensions:F,Router:y.default}}},8064:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transform=void 0;var i=r(n(9527)),s=r(n(85315));function r(e){return e&&e.__esModule?e:{default:e}}var a=/(?:(?!^-\d+))[^\d]+(?=.*[^\d])/g,o=/(?:(?!^-\d+))([^\d]+)/g,l=t.transform=function(e){var t=e,n=t.match(o);return null===n?t:n.length>1&&1===[].concat((0,s.default)(new i.default(n))).length?t.replace(o,""):t.replace(a,"").replace(o,".")};t.default=function(e){document.addEventListener("change",(function(t){!function(e,t){if(e.target.matches(t)){var n=e.target.value;e.target.value=l(n)}}(t,e)}),!0)}},4110:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=window.$;t.default=function(e,t){n.post(e).then((function(){return window.location.assign(t)}))}},61353:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t){(0,i.default)(this,e),this.selector=".ps-sortable-column",this.columns=a(t).find(this.selector)}return(0,s.default)(e,[{key:"attach",value:function(){var e=this;this.columns.on("click",(function(t){var n=a(t.delegateTarget);e.sortByColumn(n,e.getToggledSortDirection(n))}))}},{key:"sortBy",value:function(e,t){var n=this.columns.is('[data-sort-col-name="'+e+'"]');if(!n)throw new Error('Cannot sort by "'+e+'": invalid column');this.sortByColumn(n,t)}},{key:"sortByColumn",value:function(e,t){window.location=this.getUrl(e.data("sortColName"),"desc"===t?"desc":"asc",e.data("sortPrefix"))}},{key:"getToggledSortDirection",value:function(e){return"asc"===e.data("sortDirection")?"desc":"asc"}},{key:"getUrl",value:function(e,t,n){var i=new URL(window.location.href),s=i.searchParams;return n?(s.set(n+"[orderBy]",e),s.set(n+"[sortOrder]",t)):(s.set("orderBy",e),s.set("sortOrder",t)),i.toString()}}]),e}();t.default=o},87850:()=>{"use strict";var e;(e=window.$).fn.clickableDropdown=function(){return e(document).on("click",".dropdown-clickable .dropdown-menu",(function(e){e.stopPropagation()})),this},e((function(){e(document).clickableDropdown()}))},34684:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){var t=this;(0,i.default)(this,e),a(document).on("change",".js-choice-table-select-all",(function(e){t.handleSelectAll(e)}))}return(0,s.default)(e,[{key:"handleSelectAll",value:function(e){var t=a(e.target),n=t.is(":checked");t.closest("table").find("tbody input:checkbox").prop("checked",n)}}]),e}();t.default=o},53021:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t,n,s){var r=this;(0,i.default)(this,e),this.$countryDniInput=a(n),this.$countryDniInputLabel=a(s),this.$countryInput=a(t),this.countryInputSelectedSelector=t+">option:selected",this.countryDniInputLabelDangerSelector=s+">span.text-danger",this.$countryDniInput.attr("required")||(this.$countryInput.on("change",(function(){return r.toggle()})),this.toggle())}return(0,s.default)(e,[{key:"toggle",value:function(){a(this.countryDniInputLabelDangerSelector).remove(),this.$countryDniInput.prop("required",!1),1===parseInt(a(this.countryInputSelectedSelector).attr("need_dni"),10)&&(this.$countryDniInput.prop("required",!0),this.$countryDniInputLabel.prepend(a('<span class="text-danger">*</span>')))}}]),e}();t.default=o},30850:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(88902)),s=a(n(99663)),r=a(n(22600));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(t,n,i){var r=this;return(0,s.default)(this,e),this.$stateSelectionBlock=o(i),this.$countryStateSelector=o(n),this.$countryInput=o(t),this.$countryInput.on("change",(function(){return r.change()})),{}}return(0,r.default)(e,[{key:"change",value:function(){var e=this,t=this.$countryInput.val();""!==t&&o.get({url:this.$countryInput.data("states-url"),dataType:"json",data:{id_country:t}}).then((function(t){e.$countryStateSelector.empty(),(0,i.default)(t.states).forEach((function(n){e.$countryStateSelector.append(o("<option></option>").attr("value",t.states[n]).text(n))})),e.toggle()})).catch((function(e){void 0!==e.responseJSON&&window.showErrorMessage(e.responseJSON.message)}))}},{key:"toggle",value:function(){this.$stateSelectionBlock.toggleClass("d-none",!this.$countryStateSelector.find("option").length>0)}}]),e}();t.default=l},76544:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventEmitter=void 0;var i,s=(i=n(17187))&&i.__esModule?i:{default:i},r=t.EventEmitter=new s.default;t.default=r},19078:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t){var n=this;return(0,i.default)(this,e),this.$container=a(t),this.$container.on("click",".js-input-wrapper",(function(e){var t=a(e.currentTarget);n.toggleChildTree(t)})),this.$container.on("click",".js-toggle-choice-tree-action",(function(e){var t=a(e.currentTarget);n.toggleTree(t)})),{enableAutoCheckChildren:function(){return n.enableAutoCheckChildren()},enableAllInputs:function(){return n.enableAllInputs()},disableAllInputs:function(){return n.disableAllInputs()}}}return(0,s.default)(e,[{key:"enableAutoCheckChildren",value:function(){this.$container.on("change",'input[type="checkbox"]',(function(e){var t=a(e.currentTarget);t.closest("li").find('ul input[type="checkbox"]').prop("checked",t.is(":checked"))}))}},{key:"enableAllInputs",value:function(){this.$container.find("input").removeAttr("disabled")}},{key:"disableAllInputs",value:function(){this.$container.find("input").attr("disabled","disabled")}},{key:"toggleChildTree",value:function(e){var t=e.closest("li");t.hasClass("expanded")?t.removeClass("expanded").addClass("collapsed"):t.hasClass("collapsed")&&t.removeClass("collapsed").addClass("expanded")}},{key:"toggleTree",value:function(e){var t=e.closest(".js-choice-tree-container"),n=e.data("action"),i={addClass:{expand:"expanded",collapse:"collapsed"},removeClass:{expand:"collapsed",collapse:"expanded"},nextAction:{expand:"collapse",collapse:"expand"},text:{expand:"collapsed-text",collapse:"expanded-text"},icon:{expand:"collapsed-icon",collapse:"expanded-icon"}};t.find("li").each((function(e,t){var s=a(t);s.hasClass(i.removeClass[n])&&s.removeClass(i.removeClass[n]).addClass(i.addClass[n])})),e.data("action",i.nextAction[n]),e.find(".material-icons").text(e.data(i.icon[n])),e.find(".js-toggle-text").text(e.data(i.text[n]))}}]),e}();t.default=o},43027:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e),this.updateMultistoreFieldOnChange()}return(0,s.default)(e,[{key:"updateMultistoreFieldOnChange",value:function(){a(document).on("change",".multistore-checkbox",(function(){var e=a(this).closest(".form-group").find(":input:not(.multistore-checkbox)"),t=a(this).closest(".form-group").find(".input-container"),n=a(this).closest(".form-group").find(".form-control-label"),i=a(this).is(":checked");t.toggleClass("disabled",!i),n.toggleClass("disabled",!i),e.prop("disabled",!i)}))}}]),e}();t.default=o},2598:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t){return(0,i.default)(this,e),this.previewUrl=a(t).data("preview-url"),this.open(),{}}return(0,s.default)(e,[{key:"open",value:function(){var e=new URLSearchParams(window.location.search);this.previewUrl&&e.has("open_preview")&&window.open(this.previewUrl,"_blank")}}]),e}();t.default=o},9400:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,s=(i=n(99663))&&i.__esModule?i:{default:i},r=window.$;t.default=function e(){var t=this;(0,s.default)(this,e),this.wrapperSelector=".js-text-with-length-counter",this.textSelector=".js-countable-text",this.inputSelector=".js-countable-input",r(document).on("input",this.wrapperSelector+" "+this.inputSelector,(function(e){var n=r(e.currentTarget),i=n.data("max-length")-n.val().length;n.closest(t.wrapperSelector).find(t.textSelector).text(i)}))}},44089:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){var t=this;return(0,i.default)(this,e),{attachOn:function(e){return t.attachOn(e)}}}return(0,s.default)(e,[{key:"attachOn",value:function(e){var t=this,n=document.querySelector(e);null!==n&&n.addEventListener("click",(function(e){var n=e.currentTarget.attributes,i=n.getNamedItem("data-target-input-id").value,s=parseInt(n.getNamedItem("data-generated-value-length").value,10);document.querySelector("#"+i).value=t.generateValue(s)}))}},{key:"generateValue",value:function(e){for(var t="123456789ABCDEFGHIJKLMNPQRSTUVWXYZ",n="",i=1;i<=e;i+=1)n+=t.charAt(Math.floor(Math.random()*t.length));return n}}]),e}();t.default=a},91781:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(68840));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().on("click",".js-submit-row-action",(function(n){n.preventDefault();var i=o(n.currentTarget),s=i.data("confirmMessage"),r=i.data("title"),a=i.data("method");if(r)t.showConfirmModal(i,e,s,r,a);else{if(s.length&&!window.confirm(s))return;t.postForm(i,a)}}))}},{key:"postForm",value:function(e,t){var n=["GET","POST"].includes(t),i=o("<form>",{action:e.data("url"),method:n?t:"POST"}).appendTo("body");n||i.append(o("<input>",{type:"_hidden",name:"_method",value:t})),i.submit()}},{key:"showConfirmModal",value:function(e,t,n,i,s){var a=this,o=e.data("confirmButtonLabel"),l=e.data("closeButtonLabel"),u=e.data("confirmButtonClass");new r.default({id:t.getId()+"-grid-confirm-modal",confirmTitle:i,confirmMessage:n,confirmButtonLabel:o,closeButtonLabel:l,confirmButtonClass:u},(function(){return a.postForm(e,s)})).show()}}]),e}();t.default=l},5595:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){this.handleBulkActionCheckboxSelect(e),this.handleBulkActionSelectAllCheckbox(e)}},{key:"handleBulkActionSelectAllCheckbox",value:function(e){var t=this;e.getContainer().on("change",".js-bulk-action-select-all",(function(n){var i=a(n.currentTarget).is(":checked");i?t.enableBulkActionsBtn(e):t.disableBulkActionsBtn(e),e.getContainer().find(".js-bulk-action-checkbox").prop("checked",i)}))}},{key:"handleBulkActionCheckboxSelect",value:function(e){var t=this;e.getContainer().on("change",".js-bulk-action-checkbox",(function(){e.getContainer().find(".js-bulk-action-checkbox:checked").length>0?t.enableBulkActionsBtn(e):t.disableBulkActionsBtn(e)}))}},{key:"enableBulkActionsBtn",value:function(e){e.getContainer().find(".js-bulk-actions-btn").prop("disabled",!1)}},{key:"disableBulkActionsBtn",value:function(e){e.getContainer().find(".js-bulk-actions-btn").prop("disabled",!0)}}]),e}();t.default=o},93757:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(95778));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(){var t=this;return(0,i.default)(this,e),this.router=new r.default,{extend:function(e){return t.extend(e)}}}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().on("click",".js-bulk-action-btn.open_tabs",(function(n){t.openTabs(n,e)}))}},{key:"openTabs",value:function(e,t){var n=this,i=o(e.currentTarget),s=i.data("route"),r=i.data("routeParamName"),a=i.data("tabsBlockedMessage"),l=t.getContainer().find(".js-bulk-action-checkbox:checked"),u=!0;l.each((function(e,t){var i=o(t),l={};l[r]=i.val();var d=window.open(n.router.generate(s,l));d?(d.blur(),window.focus()):u=!1,u||alert(a)}))}}]),e}();t.default=l},69077:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e),this.locks=[]}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().find("table.table .js-choice-options").find(".js-dropdown-item").on("click",(function(e){e.preventDefault();var n=a(e.currentTarget),i=n.closest(".js-choice-options").data("url");t.submitForm(i,n)}))}},{key:"submitForm",value:function(e,t){var n=t.data("value");if(!this.isLocked(e)){var i=a("<form>",{action:e,method:"POST"}).append(a("<input>",{name:"value",value:n,type:"hidden"}));i.appendTo("body"),i.submit(),this.lock(e)}}},{key:"isLocked",value:function(e){return this.locks.includes(e)}},{key:"lock",value:function(e){this.locks.push(e)}}]),e}();t.default=o},4499:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().find("table.table").find(".ps-togglable-row").on("click",(function(e){e.preventDefault(),t.toggleValue(a(e.delegateTarget))}))}},{key:"toggleValue",value:function(e){var t=e.data("toggleUrl");this.submitAsForm(t)}},{key:"submitAsForm",value:function(e){a("<form>",{action:e,method:"POST"}).appendTo("body").submit()}}]),e}();t.default=o},51964:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){var t=this;return(0,i.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().find(".js-grid-table").on("click",".ps-togglable-row",(function(e){var n=a(e.currentTarget);n.hasClass("ps-switch")||e.preventDefault(),a.post({url:n.data("toggle-url")}).then((function(e){if(e.status)return window.showSuccessMessage(e.message),void t.toggleButtonDisplay(n);window.showErrorMessage(e.message)})).catch((function(e){var t=e.responseJSON;window.showErrorMessage(t.message)}))}))}},{key:"toggleButtonDisplay",value:function(e){var t=e.hasClass("grid-toggler-icon-valid"),n=t?"grid-toggler-icon-not-valid":"grid-toggler-icon-valid",i=t?"grid-toggler-icon-valid":"grid-toggler-icon-not-valid",s=t?"clear":"check";e.removeClass(i),e.addClass(n),e.hasClass("material-icons")&&e.text(s)}}]),e}();t.default=o},2573:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getHeaderContainer().on("click",".js-common_show_query-grid-action",(function(){return t.onShowSqlQueryClick(e)})),e.getHeaderContainer().on("click",".js-common_export_sql_manager-grid-action",(function(){return t.onExportSqlManagerClick(e)}))}},{key:"onShowSqlQueryClick",value:function(e){var t=a("#"+e.getId()+"_common_show_query_modal_form");this.fillExportForm(t,e);var n=a("#"+e.getId()+"_grid_common_show_query_modal");n.modal("show"),n.on("click",".btn-sql-submit",(function(){return t.submit()}))}},{key:"onExportSqlManagerClick",value:function(e){var t=a("#"+e.getId()+"_common_show_query_modal_form");this.fillExportForm(t,e),t.submit()}},{key:"fillExportForm",value:function(e,t){var n=t.getContainer().find(".js-grid-table").data("query");e.find('textarea[name="sql"]').val(n),e.find('input[name="name"]').val(this.getNameFromBreadcrumb())}},{key:"getNameFromBreadcrumb",value:function(){var e=a(".header-toolbar").find(".breadcrumb-item"),t="";return e.each((function(e,n){var i=a(n),s=i.find("a").length>0?i.find("a").text():i.text();t.length>0&&(t=t.concat(" > ")),t=t.concat(s)})),t}}]),e}();t.default=o},96803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(4110));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){e.getContainer().on("click",".js-reset-search",(function(e){(0,r.default)(o(e.currentTarget).data("url"),o(e.currentTarget).data("redirect"))}))}}]),e}();t.default=l},91137:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){var t=e.getContainer().find(".column-filters");t.find(".grid-search-button").prop("disabled",!0),t.find("input:not(.js-bulk-action-select-all), select").on("input dp.change",(function(){t.find(".grid-search-button").prop("disabled",!1),t.find(".js-grid-reset-button").prop("hidden",!1)}))}}]),e}();t.default=a},58899:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){this.initRowLinks(e),this.initConfirmableActions(e)}},{key:"initConfirmableActions",value:function(e){e.getContainer().on("click",".js-link-row-action",(function(e){var t=a(e.currentTarget).data("confirm-message");t.length&&!window.confirm(t)&&e.preventDefault()}))}},{key:"initRowLinks",value:function(e){a("tr",e.getContainer()).each((function(){var e=a(this);a(".js-link-row-action[data-clickable-row=1]:first",e).each((function(){var t=a(this),n=t.closest("td"),i=a("td.clickable",e).not(n),s=!1;i.addClass("cursor-pointer").mousedown((function(){a(window).mousemove((function(){s=!0,a(window).unbind("mousemove")}))})),i.mouseup((function(){var e=s;if(s=!1,a(window).unbind("mousemove"),!e){var n=t.data("confirm-message");n.length&&!window.confirm(n)||(document.location=t.attr("href"))}}))}))}))}}]),e}();t.default=o},46446:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){e.getContainer().on("click",".js-bulk-modal-form-submit-btn",(function(t){var n=a(t.target).data("modal-id"),i=a("#"+n);i.modal("show"),i.find(".js-submit-modal-form-btn").on("click",(function(){var t=i.find("form"),n=t.find("#"+t.data("bulk-inputs-id"));e.getContainer().find(".js-bulk-action-checkbox:checked").each((function(e,i){var s=a(i),r=n.data("prototype").replace(/__name__/g,s.val()),o=a(a.parseHTML(r)[0]);o.val(s.val()),t.append(o)})),t.submit()}))}))}}]),e}();t.default=o},92448:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(12424)),s=a(n(99663)),r=a(n(22600));function a(e){return e&&e.__esModule?e:{default:e}}n(73867);var o=window.$,l=function(){function e(){var t=this;return(0,s.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,r.default)(e,[{key:"extend",value:function(e){var t=this;this.grid=e,this.addIdsToGridTableRows(),e.getContainer().find(".js-grid-table").tableDnD({onDragClass:"position-row-while-drag",dragHandle:".js-drag-handle",onDrop:function(e,n){return t.handlePositionChange(n)}}),e.getContainer().find(".js-drag-handle").hover((function(){o(this).closest("tr").addClass("hover")}),(function(){o(this).closest("tr").removeClass("hover")}))}},{key:"handlePositionChange",value:function(e){var t=o(e).find(".js-"+this.grid.getId()+"-position:first"),n=t.data("update-url"),i=t.data("update-method"),s={positions:this.getRowsPositions()};this.updatePosition(n,s,i)}},{key:"getRowsPositions",value:function(){for(var e=JSON.parse(o.tableDnD.jsonize())[this.grid.getId()+"_grid_table"],t=[],n=void 0,i=0;i<e.length;i+=1)n=this.grid.getContainer().find("#"+e[i]),t.push({rowMarker:e[i],offset:n.data("dragAndDropOffset")});return this.computeMappingBetweenOldAndNewPositions(t)}},{key:"addIdsToGridTableRows",value:function(){var e=0;this.grid.getContainer().find(".js-grid-table .js-"+this.grid.getId()+"-position").each((function(t,n){var i=o(n),s="row_"+i.data("id")+"_"+i.data("position");i.closest("tr").attr("id",s),i.closest("td").addClass("js-drag-handle"),i.closest("tr").data("dragAndDropOffset",e),e+=1}))}},{key:"updatePosition",value:function(e,t,n){for(var i=["GET","POST"].includes(n),s=o("<form>",{action:e,method:i?n:"POST"}).appendTo("body"),r=t.positions.length,a=void 0,l=0;l<r;l+=1)a=t.positions[l],s.append(o("<input>",{type:"hidden",name:"positions["+l+"][rowId]",value:a.rowId}),o("<input>",{type:"hidden",name:"positions["+l+"][oldPosition]",value:a.oldPosition}),o("<input>",{type:"hidden",name:"positions["+l+"][newPosition]",value:a.newPosition}));i||s.append(o("<input>",{type:"hidden",name:"_method",value:n})),s.submit()}},{key:"computeMappingBetweenOldAndNewPositions",value:function(e){for(var t=/^row_(\d+)_(\d+)$/,n=Array(e.length).fill().map(Object),s=0;s<e.length;s+=1){var r=t.exec(e[s].rowMarker),a=(0,i.default)(r,3),o=a[1],l=a[2];n[s].rowId=o,n[s].oldPosition=parseInt(l,10),n[e[s].offset].newPosition=n[s].oldPosition}return n}}]),e}();t.default=l},76897:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t){(0,i.default)(this,e),this.locks=[],this.expandSelector=".js-expand",this.collapseSelector=".js-collapse",this.previewOpenClass="preview-open",this.previewToggleSelector=".preview-toggle",this.previewCustomization=t}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;this.$gridContainer=a(e.getContainer),this.$gridContainer.find("tbody tr").on("mouseover mouseleave",(function(e){return t.handleIconHovering(e)})),this.$gridContainer.find(this.previewToggleSelector).on("click",(function(e){return t.togglePreview(e)}))}},{key:"handleIconHovering",value:function(e){var t=a(e.currentTarget).find(this.previewToggleSelector);"mouseover"!==e.type||a(e.currentTarget).hasClass(this.previewOpenClass)?this.hideExpandIcon(t):this.showExpandIcon(t)}},{key:"togglePreview",value:function(e){var t=this,n=a(e.currentTarget).closest("tr");if(n.hasClass(this.previewOpenClass))return n.next(".preview-row").remove(),n.removeClass(this.previewOpenClass),this.showExpandIcon(n),void this.hideCollapseIcon(n);this.closeOpenedPreviews();var i=a(e.currentTarget).data("preview-data-url");this.isLocked(i)||(this.lock(i),a.ajax({url:i,method:"GET",dataType:"json",complete:function(){t.unlock(i)}}).then((function(e){t.renderPreviewContent(n,e.preview)})).catch((function(e){window.showErrorMessage(e.responseJSON.message)})))}},{key:"renderPreviewContent",value:function(e,t){var n=e.find("td").length,i=a('\n <tr class="preview-row">\n <td colspan="'+n+'">'+t+"</td>\n </tr>\n ");e.addClass(this.previewOpenClass),this.showCollapseIcon(e),this.hideExpandIcon(e),"function"==typeof this.previewCustomization&&this.previewCustomization(i),e.after(i)}},{key:"showExpandIcon",value:function(e){e.find(this.expandSelector).removeClass("d-none")}},{key:"hideExpandIcon",value:function(e){e.find(this.expandSelector).addClass("d-none")}},{key:"showCollapseIcon",value:function(e){e.find(this.collapseSelector).removeClass("d-none")}},{key:"hideCollapseIcon",value:function(e){e.find(this.collapseSelector).addClass("d-none")}},{key:"isLocked",value:function(e){return-1!==this.locks.indexOf(e)}},{key:"lock",value:function(e){this.isLocked(e)||this.locks.push(e)}},{key:"unlock",value:function(e){var t=this.locks.indexOf(e);-1!==t&&this.locks.splice(t,1)}},{key:"closeOpenedPreviews",value:function(){var e=this,t=this.$gridContainer.find(".grid-table tbody").find("tr:not(.preview-row)");a.each(t,(function(t,n){var i=a(n);if(i.hasClass(e.previewOpenClass)){var s=i.next();s.hasClass("preview-row")&&(s.remove(),i.removeClass(e.previewOpenClass),e.hideCollapseIcon(i))}}))}}]),e}();t.default=o},37758:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){e.getHeaderContainer().on("click",".js-common_refresh_list-grid-action",(function(){window.location.reload()}))}}]),e}();t.default=a},58630:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(61353));function a(e){return e&&e.__esModule?e:{default:e}}var o=function(){function e(){(0,i.default)(this,e)}return(0,s.default)(e,[{key:"extend",value:function(e){var t=e.getContainer().find("table.table");new r.default(t).attach()}}]),e}();t.default=o},17868:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(68840));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(){var t=this;return(0,i.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getContainer().on("click",".js-bulk-action-submit-btn",(function(n){t.submit(n,e)}))}},{key:"submit",value:function(e,t){var n=o(e.currentTarget),i=n.data("confirm-message"),s=n.data("confirmTitle");void 0!==i&&i.length>0?void 0!==s?this.showConfirmModal(n,t,i,s):window.confirm(i)&&this.postForm(n,t):this.postForm(n,t)}},{key:"showConfirmModal",value:function(e,t,n,i){var s=this,a=e.data("confirmButtonLabel"),o=e.data("closeButtonLabel"),l=e.data("confirmButtonClass");new r.default({id:t.getId()+"-grid-confirm-modal",confirmTitle:i,confirmMessage:n,confirmButtonLabel:a,closeButtonLabel:o,confirmButtonClass:l},(function(){return s.postForm(e,t)})).show()}},{key:"postForm",value:function(e,t){var n=o("#"+t.getId()+"_filter_form");n.attr("action",e.data("form-url")),n.attr("method",e.data("form-method")),n.submit()}}]),e}();t.default=l},36188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){var t=this;return(0,i.default)(this,e),{extend:function(e){return t.extend(e)}}}return(0,s.default)(e,[{key:"extend",value:function(e){var t=this;e.getHeaderContainer().on("click",".js-grid-action-submit-btn",(function(n){t.handleSubmit(n,e)}))}},{key:"handleSubmit",value:function(e,t){var n=a(e.currentTarget),i=n.data("confirm-message");if(!(void 0!==i&&i.length>0)||window.confirm(i)){var s=a("#"+t.getId()+"_filter_form");s.attr("action",n.data("url")),s.attr("method",n.data("method")),s.find('input[name="'+t.getId()+'[_token]"]').val(n.data("csrf")),s.submit()}}}]),e}();t.default=o},53277:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(t){(0,i.default)(this,e),this.id=t,this.$container=a("#"+this.id+"_grid")}return(0,s.default)(e,[{key:"getId",value:function(){return this.id}},{key:"getContainer",value:function(){return this.$container}},{key:"getHeaderContainer",value:function(){return this.$container.closest(".js-grid-panel").find(".js-grid-header")}},{key:"addExtension",value:function(e){e.extend(this)}}]),e}();t.default=o},68840:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,s=(i=n(85315))&&i.__esModule?i:{default:i};t.default=function(e,t,n){var i=this,a=e.id,o=e.closable;this.modal=function(e){var t,n=e.id,i=void 0===n?"confirm-modal":n,r=e.confirmTitle,a=e.confirmMessage,o=void 0===a?"":a,l=e.closeButtonLabel,u=void 0===l?"Close":l,d=e.confirmButtonLabel,c=void 0===d?"Accept":d,h=e.confirmButtonClass,p=void 0===h?"btn-primary":h,f=e.customButtons,m=void 0===f?[]:f,_={};return _.container=document.createElement("div"),_.container.classList.add("modal","fade"),_.container.id=i,_.dialog=document.createElement("div"),_.dialog.classList.add("modal-dialog"),_.content=document.createElement("div"),_.content.classList.add("modal-content"),_.header=document.createElement("div"),_.header.classList.add("modal-header"),r&&(_.title=document.createElement("h4"),_.title.classList.add("modal-title"),_.title.innerHTML=r),_.closeIcon=document.createElement("button"),_.closeIcon.classList.add("close"),_.closeIcon.setAttribute("type","button"),_.closeIcon.dataset.dismiss="modal",_.closeIcon.innerHTML="×",_.body=document.createElement("div"),_.body.classList.add("modal-body","text-left","font-weight-normal"),_.message=document.createElement("p"),_.message.classList.add("confirm-message"),_.message.innerHTML=o,_.footer=document.createElement("div"),_.footer.classList.add("modal-footer"),_.closeButton=document.createElement("button"),_.closeButton.setAttribute("type","button"),_.closeButton.classList.add("btn","btn-outline-secondary","btn-lg"),_.closeButton.dataset.dismiss="modal",_.closeButton.innerHTML=u,_.confirmButton=document.createElement("button"),_.confirmButton.setAttribute("type","button"),_.confirmButton.classList.add("btn",p,"btn-lg","btn-confirm-submit"),_.confirmButton.dataset.dismiss="modal",_.confirmButton.innerHTML=c,r?_.header.append(_.title,_.closeIcon):_.header.appendChild(_.closeIcon),_.body.appendChild(_.message),(t=_.footer).append.apply(t,[_.closeButton].concat((0,s.default)(m),[_.confirmButton])),_.content.append(_.header,_.body,_.footer),_.dialog.appendChild(_.content),_.container.appendChild(_.dialog),_}(e),this.$modal=r(this.modal.container),this.show=function(){i.$modal.modal()},this.modal.confirmButton.addEventListener("click",t),this.$modal.modal({backdrop:!!o||"static",keyboard:void 0===o||o,closable:void 0===o||o,show:!1}),this.$modal.on("hidden.bs.modal",(function(){document.querySelector("#"+a).remove(),n&&n()})),document.body.appendChild(this.modal.container)};var r=window.$},84668:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(n(99663)),s=r(n(22600));function r(e){return e&&e.__esModule?e:{default:e}}var a=window.$,o=function(){function e(){var t=this;(0,i.default)(this,e),a(document).on("click",".js-multiple-choice-table-select-column",(function(e){return t.handleSelectColumn(e)}))}return(0,s.default)(e,[{key:"handleSelectColumn",value:function(e){e.preventDefault();var t=a(e.target),n=t.data("column-checked");t.data("column-checked",!n),t.closest("table").find("tbody tr td:nth-child("+t.data("column-num")+") input[type=checkbox]").prop("checked",!n)}}]),e}();t.default=o},62710:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,i){var s=this;this.$body=i,this.transitionFired=!1,this.$navBar=e.get(0),this.$mainMenu=t,this.endTransitionEvent=n,this.showNavBarContent=function(e){if("width"===e.propertyName){s.$navBar.removeEventListener(s.endTransitionEvent,s.showNavBarContent);var t=s.$body.hasClass("page-sidebar-closed");s.$mainMenu.toggleClass("sidebar-closed",t),s.transitionFired=!1}},this.toggle=function(){s.transitionFired?s.$navBar.removeEventListener(s.endTransitionEvent,s.showNavBarContent):s.$navBar.addEventListener(s.endTransitionEvent,s.showNavBarContent.bind(s)),s.transitionFired=!s.transitionFired}}},95778:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=l(n(52945)),s=l(n(99663)),r=l(n(22600)),a=l(n(2564)),o=l(n(57208));function l(e){return e&&e.__esModule?e:{default:e}}var u=window.$,d=function(){function e(){return(0,s.default)(this,e),window.prestashop&&window.prestashop.customRoutes&&(0,i.default)(o.default.routes,window.prestashop.customRoutes),a.default.setData(o.default),a.default.setBaseUrl(u(document).find("body").data("base-url")),this}return(0,r.default)(e,[{key:"generate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,i.default)(t,{_token:u(document).find("body").data("token")});return a.default.generate(e,n)}}]),e}();t.default=d},52666:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,s=(i=n(99663))&&i.__esModule?i:{default:i},r=window.$;t.default=function e(t){var n=t.tokenFieldSelector,i=t.options,a=void 0===i?{}:i;(0,s.default)(this,e),r(n).tokenfield(a)}},77672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=l(n(52945)),s=l(n(88239)),r=l(n(99663)),a=l(n(22600)),o=n(76544);function l(e){return e&&e.__esModule?e:{default:e}}var u=window.$,d=function(){function e(t){(0,r.default)(this,e);var n=t||{};this.tinyMCELoaded=!1,void 0===n.baseAdminUrl&&(void 0!==window.baseAdminDir?n.baseAdminUrl=window.baseAdminDir:window.location.pathname.split("/").every((function(e){return""===e||(n.baseAdminUrl="/"+e+"/",!1)}))),void 0===n.langIsRtl&&(n.langIsRtl=void 0!==window.lang_is_rtl&&"1"===window.lang_is_rtl),this.setupTinyMCE(n)}return(0,a.default)(e,[{key:"setupTinyMCE",value:function(e){"undefined"==typeof tinyMCE?this.loadAndInitTinyMCE(e):this.initTinyMCE(e)}},{key:"initTinyMCE",value:function(e){var t=this,n=(0,s.default)({selector:".rte",plugins:"align colorpicker link image filemanager table media placeholder lists advlist code table autoresize",browser_spellcheck:!0,toolbar1:"code,colorpicker,bold,italic,underline,strikethrough,blockquote,link,align,bullist,numlist,table,image,media,formatselect",toolbar2:"",language:window.iso_user,external_filemanager_path:e.baseAdminUrl+"filemanager/",filemanager_title:"File manager",external_plugins:{filemanager:e.baseAdminUrl+"filemanager/plugin.min.js"},content_style:e.langIsRtl?"body {direction:rtl;}":"",skin:"prestashop",mobile:{theme:"mobile",plugins:["lists","align","link","table","placeholder","advlist","code"],toolbar:"undo code colorpicker bold italic underline strikethrough blockquote link align bullist numlist table formatselect styleselect"},menubar:!1,statusbar:!1,relative_urls:!1,convert_urls:!1,entity_encoding:"raw",extended_valid_elements:"em[class|name|id],@[role|data-*|aria-*]",valid_children:"+*[*]",valid_elements:"*[*]",rel_list:[{title:"nofollow",value:"nofollow"}],editor_selector:"autoload_rte",init_instance_callback:function(){t.changeToMaterial()},setup:function(e){t.setupEditor(e)}},e);void 0!==window.defaultTinyMceConfig&&(0,i.default)(n,window.defaultTinyMceConfig),void 0!==n.editor_selector&&(n.selector="."+n.editor_selector),u("body").on("click",".mce-btn, .mce-open, .mce-menu-item",(function(){t.changeToMaterial()})),window.tinyMCE.init(n),this.watchTabChanges(n)}},{key:"setupEditor",value:function(e){var t=this;e.on("loadContent",(function(e){t.handleCounterTiny(e.target.id)})),e.on("change",(function(e){window.tinyMCE.triggerSave(),t.handleCounterTiny(e.target.id)})),e.on("blur",(function(){window.tinyMCE.triggerSave()})),o.EventEmitter.emit("tinymceEditorSetup",{editor:e})}},{key:"watchTabChanges",value:function(e){u(e.selector).each((function(e,t){var n=u(t).closest(".translation-field"),i=u(t).closest(".translations.tabbable");if(n.length&&i.length){var s=n.data("locale");u('.nav-item a[data-locale="'+s+'"]',i).on("shown.bs.tab",(function(){var e=u(t).closest("form"),n=window.tinyMCE.get(t.id);n&&n.setContent(n.getContent()),o.EventEmitter.emit("languageSelected",{selectedLocale:s,form:e})}))}})),o.EventEmitter.on("languageSelected",(function(e){var t='.nav-item a[data-locale="'+e.selectedLocale+'"]';u(t).click()}))}},{key:"loadAndInitTinyMCE",value:function(e){var t=this;if(!this.tinyMCELoaded){this.tinyMCELoaded=!0;var n=e.baseAdminUrl.split("/");n.splice(n.length-2,2);var i=n.join("/");window.tinyMCEPreInit={},window.tinyMCEPreInit.base=i+"/js/tiny_mce",window.tinyMCEPreInit.suffix=".min",u.getScript(i+"/js/tiny_mce/tinymce.min.js",(function(){t.setupTinyMCE(e)}))}}},{key:"changeToMaterial",value:function(){u.each({"mce-i-code":'<i class="material-icons">code</i>',"mce-i-none":'<i class="material-icons">format_color_text</i>',"mce-i-bold":'<i class="material-icons">format_bold</i>',"mce-i-italic":'<i class="material-icons">format_italic</i>',"mce-i-underline":'<i class="material-icons">format_underlined</i>',"mce-i-strikethrough":'<i class="material-icons">format_strikethrough</i>',"mce-i-blockquote":'<i class="material-icons">format_quote</i>',"mce-i-link":'<i class="material-icons">link</i>',"mce-i-alignleft":'<i class="material-icons">format_align_left</i>',"mce-i-aligncenter":'<i class="material-icons">format_align_center</i>',"mce-i-alignright":'<i class="material-icons">format_align_right</i>',"mce-i-alignjustify":'<i class="material-icons">format_align_justify</i>',"mce-i-bullist":'<i class="material-icons">format_list_bulleted</i>',"mce-i-numlist":'<i class="material-icons">format_list_numbered</i>',"mce-i-image":'<i class="material-icons">image</i>',"mce-i-table":'<i class="material-icons">grid_on</i>',"mce-i-media":'<i class="material-icons">video_library</i>',"mce-i-browse":'<i class="material-icons">attachment</i>',"mce-i-checkbox":'<i class="mce-ico mce-i-checkbox"></i>'},(function(e,t){u("."+e).replaceWith(t)}))}},{key:"handleCounterTiny",value:function(e){var t=u("#"+e),n=t.attr("counter"),i=t.attr("counter_type"),s=window.tinyMCE.get(e),r=s.getBody()?s.getBody().textContent.length:0;t.parent().find("span.currentLength").text(r),"recommended"!==i&&r>n?t.parent().find("span.maxLength").addClass("text-danger"):t.parent().find("span.maxLength").removeClass("text-danger")}}]),e}();t.default=d},34162:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=n(76544);function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(t){var n=this;(0,i.default)(this,e);var s=t||{};return this.localeButtonSelector=s.localeButtonSelector||'.translationsLocales.nav .nav-item a[data-toggle="tab"]',this.localeNavigationSelector=s.localeNavigationSelector||".translationsLocales.nav",this.translationFieldSelector=s.translationFieldSelector||".translation-field",this.selectedLocale=o(".nav-item a.active",o(this.localeNavigationSelector)).data("locale"),o("body").on("shown.bs.tab",this.localeButtonSelector,this.toggleLanguage.bind(this)),r.EventEmitter.on("languageSelected",this.toggleFields.bind(this)),{localeButtonSelector:this.localeButtonSelector,localeNavigationSelector:this.localeNavigationSelector,translationFieldSelector:this.translationFieldSelector,refreshFormInputs:function(e){n.refreshInputs(e)},getSelectedLocale:function(){return n.selectedLocale}}}return(0,s.default)(e,[{key:"refreshInputs",value:function(e){r.EventEmitter.emit("languageSelected",{selectedLocale:this.selectedLocale,form:e})}},{key:"toggleLanguage",value:function(e){var t=o(e.target),n=t.closest("form");this.selectedLocale=t.data("locale"),this.refreshInputs(n)}},{key:"toggleFields",value:function(e){var t=this;this.selectedLocale=e.selectedLocale,o(this.localeNavigationSelector).each((function(e,n){var i=o(".nav-item a.active",n).data("locale");t.selectedLocale!==i&&o('.nav-item a[data-locale="'+t.selectedLocale+'"]',n).tab("show")}))}}]),e}();t.default=l},92526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=n(76544);function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(t){var n=this;(0,i.default)(this,e);var s=t||{};return this.localeItemSelector=s.localeItemSelector||".js-locale-item",this.localeButtonSelector=s.localeButtonSelector||".js-locale-btn",this.localeInputSelector=s.localeInputSelector||".js-locale-input",this.selectedLocale=o(this.localeItemSelector).data("locale"),o("body").on("click",this.localeItemSelector,this.toggleLanguage.bind(this)),r.EventEmitter.on("languageSelected",this.toggleInputs.bind(this)),{localeItemSelector:this.localeItemSelector,localeButtonSelector:this.localeButtonSelector,localeInputSelector:this.localeInputSelector,refreshFormInputs:function(e){n.refreshInputs(e)},getSelectedLocale:function(){return n.selectedLocale}}}return(0,s.default)(e,[{key:"refreshInputs",value:function(e){this.selectedLocale&&r.EventEmitter.emit("languageSelected",{selectedLocale:this.selectedLocale,form:e})}},{key:"toggleLanguage",value:function(e){var t=o(e.target),n=t.closest("form");this.selectedLocale=t.data("locale"),this.refreshInputs(n)}},{key:"toggleInputs",value:function(e){var t=e.form;this.selectedLocale=e.selectedLocale;var n=t.find(this.localeButtonSelector),i=n.data("change-language-url");n.text(this.selectedLocale),t.find(this.localeInputSelector).addClass("d-none"),t.find(this.localeInputSelector+".js-locale-"+this.selectedLocale).removeClass("d-none"),i&&this.saveSelectedLanguage(i,this.selectedLocale)}},{key:"saveSelectedLanguage",value:function(e,t){o.post({url:e,data:{language_iso_code:t}})}}]),e}();t.default=l},39801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(n(99663)),s=a(n(22600)),r=a(n(29917));function a(e){return e&&e.__esModule?e:{default:e}}var o=window.$,l=function(){function e(){var t=this;(0,i.default)(this,e),o((function(){t.initQuickAccess(),t.initMultiStores(),t.initNotificationsToggle(),t.initSearch(),t.initContentDivOffset(),(0,r.default)()}))}return(0,s.default)(e,[{key:"initQuickAccess",value:function(){o(".js-quick-link").on("click",(function(e){e.preventDefault();var t=o(e.target).data("method"),n=null;if("add"===t){var i=o(e.target).data("prompt-text"),s=o(e.target).data("link");n=prompt(i,s)}if("add"===t&&n||"remove"===t){var r=o(e.target).data("post-link"),a=o(e.target).data("quicklink-id"),l=o(e.target).data("rand"),u=o(e.target).data("url"),d=o(e.target).data("icon");o.ajax({type:"POST",headers:{"cache-control":"no-cache"},async:!0,url:r+"&action=GetUrl&rand="+l+"&ajax=1&method="+t+"&id_quick_access="+a,data:{url:u,name:n,icon:d},dataType:"json",success:function(t){var n="";o.each(t,(function(e){void 0!==t[e].name&&(n+='<li><a href="'+t[e].link+"&token="+t[e].token+'"><i class="icon-chevron-right"></i> '+t[e].name+"</a></li>")})),void 0!==t.has_errors&&t.has_errors?o.each(t,(function(e){"string"==typeof t[e]&&o.growl.error({title:"",message:t[e]})})):n&&(o("#header_quick ul.dropdown-menu .divider").prevAll().remove(),o("#header_quick ul.dropdown-menu").prepend(n),o(e.target).remove(),window.showSuccessMessage(window.update_success_msg))}})}}))}},{key:"initMultiStores",value:function(){o(".js-link").on("click",(function(e){window.open(o(e.target).parents(".link").attr("href"),"_blank")}))}},{key:"initNotificationsToggle",value:function(){var e=this;o(".notification.dropdown-toggle").on("click",(function(){o(".mobile-nav").hasClass("expanded")||e.updateEmployeeNotifications()})),o("body").on("click",(function(e){o("div.notification-center.dropdown").is(e.target)||0!==o("div.notification-center.dropdown").has(e.target).length||0!==o(".open").has(e.target).length||o("div.notification-center.dropdown").hasClass("open")&&(o(".mobile-layer").removeClass("expanded"),(0,r.default)())})),o(".notification-center .nav-link").on("shown.bs.tab",(function(){e.updateEmployeeNotifications()}))}},{key:"initSearch",value:function(){o(".js-items-list").on("click",(function(e){o(".js-form-search").attr("placeholder",o(e.target).data("placeholder")),o(".js-search-type").val(o(e.target).data("value")),o(".js-dropdown-toggle").text(o(e.target).data("item"))}))}},{key:"updateEmployeeNotifications",value:function(){o.post(window.adminNotificationPushLink,{type:o(".notification-center .nav-link.active").attr("data-type")})}},{key:"initContentDivOffset",value:function(){var e=function(){var e=o(".header-toolbar").last(),t=o(".main-header"),n=o(".content-div");e.length&&t.length&&n.length&&n.css("padding-top",e.outerHeight()+t.outerHeight()+15)};e(),o(window).resize(e),o(document).on("vueHeaderMounted",e)}}]),e}();t.default=l},869:(e,t,n)=>{"use strict";var i,s=(i=n(32097))&&i.__esModule?i:{default:i};(0,window.$)((function(){window.location.pathname.match("/configure/shop/maintenance\\b")&&s.default.init()}))},32097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=window.$,i={addRemoteAddr:function(e){var t=n(e.target).prev("input"),i=t.val()||"",s=e.target.dataset.ip||"";i.length>0?t.val().indexOf(s)<0&&t.val(t.val()+","+s):t.val(s)},init:function(){n("body").on("click",".add_ip_button",i.addRemoteAddr)}};t.default=i},37099:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=l(n(99663)),s=l(n(22600)),r=l(n(84772));n(43345);var a=l(n(73544)),o=l(n(62710));function l(e){return e&&e.__esModule?e:{default:e}}var u=window.$,d=function(){function e(){var t=this;(0,i.default)(this,e),u((function(){var e=u(".main-menu"),n=u(".nav-bar"),i=u("body");if(n.length>0){var s=u(".nav-bar-overflow"),l=new o.default(n,e,(0,a.default)("transition","end"),i);s.length>0&&(new r.default(".nav-bar-overflow"),s.on("scroll",(function(){var e=u(".main-menu .link-levelone.has_submenu.ul-open");u(e).each((function(e,t){var n=u(t).position().top;u(t).find("ul.submenu").css("top",n)}))}))),n.find(".link-levelone").hover((function(){var e=u(this).position().top;u(this).addClass("link-hover"),u(this).find("ul.submenu").css("top",e)}),(function(){u(this).removeClass("link-hover")})),u(".nav-bar li.link-levelone.has_submenu > a").on("click",(function(e){e.preventDefault(),e.stopPropagation(),l.toggle();var t=u(this).parent();u(".nav-bar li.link-levelone.has_submenu a > i.material-icons.sub-tabs-arrow").text("keyboard_arrow_down");var n=u(e.currentTarget).parent().hasClass("ul-open");if(u("body").is(".page-sidebar-closed:not(.mobile)")?(u(".nav-bar li.link-levelone.has_submenu.ul-open").removeClass("ul-open open submenu-hover"),u(".nav-bar li.link-levelone.has_submenu.ul-open ul.submenu").removeAttr("style")):u(".nav-bar li.link-levelone.has_submenu.ul-open ul.submenu").slideUp({complete:function(){u(this).parent().removeClass("ul-open open"),u(this).removeAttr("style")}}),!n){t.addClass("ul-open"),u("body").is(".page-sidebar-closed:not(.mobile)")?(t.addClass("submenu-hover"),t.find("ul.submenu").removeAttr("style")):t.find("ul.submenu").slideDown({complete:function(){t.addClass("open"),u(this).removeAttr("style")}}),t.find("i.material-icons.sub-tabs-arrow").text("keyboard_arrow_up");var i=t.position().top;t.find("ul.submenu").css("top",i)}})),n.on("click",".menu-collapse",(function(){u("body").toggleClass("page-sidebar-closed"),l.toggle(),u(".popover.show").remove(),u(".help-box[aria-describedby]").removeAttr("aria-describedby"),u("body").hasClass("page-sidebar-closed")?(u("nav.nav-bar ul.main-menu > li").removeClass("ul-open open").find("a > i.material-icons.sub-tabs-arrow").text("keyboard_arrow_down"),c()):(u("nav.nav-bar ul.main-menu > li.link-active").addClass("ul-open open").find("a > i.material-icons.sub-tabs-arrow").text("keyboard_arrow_up"),u("body").off("click.mobile")),u.post({url:u(this).data("toggle-url"),cache:!1,data:{shouldCollapse:Number(u("body").hasClass("page-sidebar-closed"))}})})),c();var d=1023;u(window).width()<=d&&t.mobileNav(d),u(window).on("resize",(function(){u("body").hasClass("mobile")&&u(window).width()>d?t.unbuildMobileMenu():!u("body").hasClass("mobile")&&u(window).width()<=d&&t.mobileNav(d)}))}function c(){u("body").is(".page-sidebar-closed:not(.mobile)")&&u("body").on("click.mobile",(function(){u("ul.main-menu li.ul-open").length>0&&(u(".nav-bar li.link-levelone.has_submenu.ul-open").removeClass("ul-open open submenu-hover"),u(".nav-bar li.link-levelone.has_submenu.ul-open ul.submenu").removeAttr("style"))}))}}))}return(0,s.default)(e,[{key:"mobileNav",value:function(){var e=u("#header_logout").addClass("link").removeClass("m-t-1").prop("outerHTML"),t=u(".employee_avatar").prop("outerHTML"),n=u(".profile-link").attr("href"),i=u(".main-menu");u(".nav-bar li.link-levelone.has_submenu:not(.open) a > i.material-icons.sub-tabs-arrow").text("keyboard_arrow_down"),u("body").addClass("mobile"),u(".nav-bar").addClass("mobile-nav").attr("style","margin-left: -100%;"),u(".panel-collapse").addClass("collapse"),u(".link-levelone a").each((function(e,t){var n=u(t).parent().find(".collapse").attr("id");n&&u(t).attr("href","#"+n).attr("data-toggle","collapse")})),i.append("<li class='link-levelone' data-submenu=''>"+e+"</li>"),i.prepend("<li class='link-levelone'>"+t+"</li>"),u(".collapse").collapse({toggle:!1}),i.find(".employee_avatar .material-icons, .employee_avatar span").wrap("<a href='"+n+"'></a>"),u(".js-mobile-menu").on("click",(function e(){if(!u("div.notification-center.dropdown").hasClass("open"))return u(".mobile-nav").hasClass("expanded")?(u(".mobile-nav").animate({"margin-left":"-100%"},{complete:function(){u(".nav-bar, .mobile-layer").removeClass("expanded"),u(".nav-bar, .mobile-layer").addClass("d-none")}}),void u(".mobile-layer").off()):(u(".nav-bar, .mobile-layer").addClass("expanded"),u(".nav-bar, .mobile-layer").removeClass("d-none"),u(".mobile-layer").on("click",e),void u(".mobile-nav").animate({"margin-left":0}))})),u(".js-notifs_dropdown").css({height:window.innerHeight})}},{key:"unbuildMobileMenu",value:function(){u("body").removeClass("mobile"),u("body.page-sidebar-closed .nav-bar .link-levelone.open").removeClass("ul-open open"),u(".main-menu li:first, .main-menu li:last").remove(),u(".js-notifs_dropdown").removeAttr("style"),u(".nav-bar").removeClass("mobile-nav expanded").addClass("d-none").css("margin-left",0),u(".js-mobile-menu").off(),u(".panel-collapse").removeClass("collapse").addClass("submenu"),u(".shop-list-title").remove(),u(".js-non-responsive").hide(),u(".mobile-layer").addClass("d-none").removeClass("expanded")}}]),e}();t.default=d},29917:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0});var s,r=(s=n(95778))&&s.__esModule?s:{default:s},a=function(e,t,n){t.children(".notification-elements").empty(),0!==e.length?(t.removeClass("empty"),i.each(e,(function(e,i){void 0!==n&&t.children(".notification-elements").append(n.replace(/_id_order_/g,parseInt(i.id_order,10)).replace(/_customer_name_/g,i.customer_name).replace(/_iso_code_/g,i.iso_code).replace(/_carrier_/g,""!==i.carrier?" - "+i.carrier:"").replace(/_total_paid_/g,i.total_paid).replace(/_id_customer_/g,parseInt(i.id_customer,10)).replace(/_company_/g,""!==i.company?" ("+i.company+") ":"").replace(/_date_add_/g,i.date_add).replace(/_status_/g,i.status).replace(/order_url/g,window.baseAdminDir+"index.php?tab=AdminOrders&token="+window.tokenAdminOrders+"&vieworder&id_order="+i.id_order).replace(/customer_url/g,window.baseAdminDir+"index.php?tab=AdminCustomers&token="+window.tokenAdminCustomers+"&viewcustomer&id_customer="+i.id_customer).replace(/message_url/g,window.baseAdminDir+"index.php?tab=AdminCustomerThreads&token="+window.tokenAdminCustomerThreads+"&viewcustomer_thread&id_customer_thread="+i.id_customer_thread))}))):t.addClass("empty")},o=function(e,t){t>0?i("#"+e).text(" ("+t+")"):i("#"+e).text("")};t.default=function e(){var t=null,n=new r.default;i.ajax({type:"POST",headers:{"cache-control":"no-cache"},url:n.generate("admin_common_notifications"),async:!0,cache:!1,dataType:"json",success:function(n){if(n){var s=parseInt(n.order.total,10),r=parseInt(n.customer.total,10),l=parseInt(n.customer_message.total,10),u=s+r+l;a(n.order.results,i("#orders-notifications"),i("#order-notification-template").html()),a(n.customer.results,i("#customers-notifications"),i("#customer-notification-template").html()),a(n.customer_message.results,i("#messages-notifications"),i("#message-notification-template").html()),o("_nb_new_orders_",s),o("_nb_new_customers_",r),o("_nb_new_messages_",l),u?i("#notifications-total").removeClass("hide").html(u):i("#notifications-total").hasClass("hide")||i("#notifications-total").addClass("hide")}t=setTimeout(e,12e4)}}),clearTimeout(t)}},38012:(e,t,n)=>{"use strict";var i=n(73609),s=u(n(54121)),r=u(n(45188)),a=u(n(14302)),o=u(n(11389)),l=u(n(48379));function u(e){return e&&e.__esModule?e:{default:e}}i((function(){(0,s.default)(a.default);var e=(0,l.default)();(0,r.default)(e),(0,o.default)()}))},45188:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){i(".reset-translation-value").each((function(e,t){var n=i(t).parents("form"),s=n.find("*[name=default]").val();i(t).click((function(){n.find("*[name=translation_value]").val(s),n.submit()}))})),i("#jetsContent form, .translation-domain form").each((function(t,n){!function(t){i(t).submit((function(t){t.preventDefault();var n=i(t.target),s=n.attr("action");return i.post(s,n.serialize(),(function(t){var s=void 0;if(t.successful_update){s=n.find(".alert-info");var r=n.data("hash"),a=i("[data-hash="+r+"]");i(a.find("textarea")).val(n.find("textarea").val()),a.removeAttr("data-jets"),e.update()}else s=n.find(".alert-danger");s.removeClass("hide"),setTimeout((function(){s.addClass("hide")}),4e3)})),!1}))}(n)}))}},14302:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=i(".header-toolbar").height()+i(".main-header").height(),t=function(t){var n=t.getBoundingClientRect().top;window.scrollTo(window.pageXOffset,window.pageYOffset+n-e)};i(".translation-domain .go-to-pagination-bar").click((function(e){var n=i(e.target).parents(".translation-domain").find(".pagination")[0];return t(n),!1})),i(".translation-domains nav").each((function(e,n){!function(e){var t=i(e).find(".tpl");t.removeClass("tpl");var n=t.clone();t.remove(),n.removeClass("hide");var s=void 0,r=void 0,a=i(e).parents(".translation-domains").find(".page").length;if(1===a)return i(".pagination").addClass("hide");i(".pagination").removeClass("hide");var o=void 0;for(o=1;o<a;o+=1)s=o+1,(r=n.clone()).attr("data-page-index",s),r.find("a").html(s),i(e).find(".pagination").append(r)}(n),i(n).find(".page-link").click((function(e){var n=i(e.target).parents(".pagination")[0];t(n)})),i(n).find(".page-item").click((function(e){var t=i(e.target),n=t.parents(".translation-domains").find(".translation-forms"),s=t.parent(),r=s.data("page-index");return i("[data-page-index="+r+"]").addClass("active"),i("[data-page-index="+r+"]").siblings().removeClass("active"),s.parent().find(".active").removeClass("active"),s.addClass("active"),function(e){var t=e.find(".page[data-status=active]");i(t).addClass("hide"),i(t).attr("data-status","inactive")}(n),function(e,t){var n=t.find(".page[data-page-index="+e+"]");i(n).removeClass("hide"),i(n).attr("data-status","active")}(r,n),!1}))})),i(".translation-domains").find(".page").length>20&&(i(".page-item.hide").removeClass("hide"),i(".pagination").each((function(e,t){var n=i(t).find(".page-item:last-child");i(t).find(".js-next-arrow").insertAfter(n).removeClass("hide"),(0,r.default)(i(t))})))};var s,r=(s=n(11797))&&s.__esModule?s:{default:s}},48379:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return i((function(){var e=".search-translation";i(e+" form").submit((function(t){t.preventDefault(),i("#jetsContent form").addClass("hide");var n='#jetsContent > [data-jets*="'+i("#jetsSearch").val().toLowerCase()+'"]';if(0===i(n).length){var s=i(e+"> .alert")[0];i(s).removeClass("hide"),setTimeout((function(){i(s).addClass("hide")}),2e3)}else i(n).removeClass("hide");return i(n).length&&i(".js-results").show().addClass("card").find("h2").removeClass("hide"),!1})),i(e+" input[type=reset]").click((function(e){return e.preventDefault(),i("#jetsSearch").val(""),i("#jetsContent form").addClass("hide"),!1}))})),i("#jetsSearch").length>0&&new r.default({searchTag:"#jetsSearch",contentTag:"#jetsContent",callSearchManually:!0,manualContentHandling:function(e){return i(e).find(".verbatim")[0].innerText+i(e).find("textarea")[0].value}})};var s,r=(s=n(68855))&&s.__esModule?s:{default:s}},11389:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=0;i(".domain-first-part").each((function(t,n){var s=i(n).find(".domain-actions");e+=function(e){var t=e.parent().next(".subdomains").find("[data-missing-translations]"),n=0;if(i(t).each((function(e,t){n+=parseInt(i(t).attr("data-missing-translations"),10)})),n>0){var s=e.find(".missing-translations"),r=s.text();r=r.replace("%d",n),s.text(r),s.removeClass("hide")}return n}(s),i(n).click((function(e){var t=void 0;return(t=i(e.target).hasClass("domain-first-part")?i(e.target):i(e.target).parent()).find("i").toggleClass("expanded"),i(t.nextAll().filter(".subdomains")[0]).toggleClass("hide"),function(e){var t=e.find(".visibility-off"),n=e.find(".visibility-on"),i=e.find(".btn-show-messages"),s=e.find(".btn-hide-messages");t.hasClass("hide")?(t.removeClass("hide"),n.addClass("hide"),i.addClass("hide"),s.removeClass("hide")):(n.removeClass("hide"),t.addClass("hide"),i.removeClass("hide"),s.addClass("hide"))}(s),e.stopPropagation(),!1}))})),function(e,t){var n=i(".summary .total-translations").attr("data-template"),s=i(".summary .total-remaining-translations").attr("data-template");if(t>0){var r=s.replace("%d",t);i(".total-remaining-translations").text(r),i(".summary .separator").removeClass("hide")}if(n){var a=n.replace("%d",e);i(".summary .total-translations").text(a)}}(i("#jetsContent form").length,e),i(".domain-actions").click((function(e){var t=i(e.target);i(e.target).hasClass("domain-actions")||(t=i(e.target).parent()),t.prev().click()})),i(".btn-expand").click((function(){i(".domain-first-part").each((function(e,t){var n=i(t);n.find("i").hasClass("expanded")||i(n.find("i")).click()}))})),i(".btn-reduce").click((function(){i(".domain-first-part").each((function(e,t){var n=i(t);n.find("i").hasClass("expanded")&&i(n.find("i")).click()}))})),i(i(".domain-first-part")[0]).click(),i(i(".domain-part .delegate-toggle-messages")[0]).click()}},54121:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t="translation-messages",n="hide";i(".show-"+t).each((function(t,s){i(s).click((function(t){var s=i(t.target),r=s.parent(),a=r.find(".translation-forms"),o=i(".forms-container");return 0!==a.length&&(function(e){i(".domain-first-part").removeClass("active");var t=i(i(e.parents(".subdomains")[0]).prevAll().filter(".domain-first-part"))[0];i(t).addClass("active")}(s),function(e){var t=e.parents(".translation-domain").prev().find(".missing-translations-short-message"),n=i("#domain .missing-translations"),s=i("#domain .total-expressions"),r=i("#domain .separator");s.text(e.data("total-translations")),t.length>0?(n.text(t.text()),r.removeClass("hide")):(n.text(""),r.addClass("hide")),r.first().removeClass("hide");var a=i("#domain .name"),o=e.attr("data-domain");a.text(o)}(a),function(e,t){var s=i(".navbar-container:first"),r=e.find("nav");r.parent().attr("data-navigation-parent-of",t.attr("id")),r.attr("data-navigation-of",t.attr("id")),function(e){var t=e.find("nav");if(t.length>0){var s=t.attr("data-navigation-of"),r=i('[data-navigation-parent-of="'+s+'"]');t.addClass(n),r.append(t)}}(s),s.append(r),i(s.find("nav")).removeClass(n),i(".forms-container + .navbar-container").remove(),i(".forms-container").after(s.clone())}(r,a),function(e,t){!function(e){var t=e.find(".translation-forms");if(t.length>0){var s=i('[data-parent-of="'+t.attr("id")+'"]');t.find("form").addClass(n),s.append(t)}}(e),e.append(t),i(e.find(".translation-forms form")).removeClass(n)}(o,a),e(),!0)}))})),i(".domain-part .delegate-toggle-messages").each((function(e,n){i(n).click((function(e){var n=i(e.target);i(e.target).hasClass("domain-part")||(n=i(e.target).parent()),function(e){var t=e.find(".missing-translations-long-message");t.text().length>0?i(".translation-domains .missing-translations-paragraph").text(t.text()):i(".translation-domains .missing-translations-paragraph").text("")}(n),n.next().find(".show-"+t).click()}))}))}},11797:(e,t,n)=>{"use strict";var i=n(73609);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.find(".js-page-link").length,n='<li class="page-item js-multi"><span class="page-link">...</span></li>',s=e.data("display-number"),r=e.find(".page-item.active").data("page-index");function a(e){i(".pagination").each((function(r,a){var o=i(a),l=o.find("[data-page-index=1]").next(".js-multi"),u=o.find("[data-page-index="+t+"]").prev(".js-multi"),d=Math.round(s);o.find(".js-page-link").each((function(r,a){e>=s+1&&0===r&&0===l.length&&i(a).parent().after(n),e>=s+1?r>=e-d&&r<=e+d?(i(a).show(),t-e>=d&&r>e&&r!==t-1?i(a).hide():0===u.length&&r===t-1&&t-e>s&&i(a).parent().before(n)):0!==r&&r!==t-1&&t-1-r>s?(i(a).hide(),u.length&&t-s<=e&&u.remove()):e===t&&(u.remove(),r<=s&&0!==r?i(a).hide():i(a).show()):e&&r>s&&r!==t-1&&e<s?i(a).hide():r===t-1&&1===e&&0===u.length?i(a).parent().before(n):r>s&&r!==t-1?i(a).hide():r===t-1&&0===u.length&&e>1?i(a).parent().before(n):(i(a).show(),0===r&&0!==l.length&&l.remove())}))}))}a(r),e.find(".js-page-link").on("click",(function(t){t.preventDefault(),e.find(".active").removeClass("active"),i(t.currentTarget).parent().addClass("active"),a(r=i(t.currentTarget).parent().data("page-index"))})),e.find(".js-arrow").on("click",(function(t){r=e.find(".page-item.active").data("page-index"),t.preventDefault();var n=i(t.currentTarget).data("direction");return"prev"!==n||i(t.currentTarget).parent().next().hasClass("active")?"next"!==n||i(t.currentTarget).parent().prev().hasClass("active")||(i(".page[data-page-index="+(r+1)+"]").removeClass("hide"),i(".page[data-page-index="+r+"]").addClass("hide"),i(".page-item[data-page-index="+(r+1)+"]").addClass("active"),i(".page-item[data-page-index="+r+"]").removeClass("active"),r+=1):(i(".page[data-page-index="+(r-1)+"]").removeClass("hide"),i(".page[data-page-index="+r+"]").addClass("hide"),i(".page-item[data-page-index="+(r-1)+"]").addClass("active"),i(".page-item[data-page-index="+r+"]").removeClass("active"),r-=1),("prev"!==i(t.currentTarget).data("direction")||1!==r)&&(a(r),!0)}))}},24043:(e,t,n)=>{e.exports={default:n(47185),__esModule:!0}},26378:(e,t,n)=>{e.exports={default:n(3597),__esModule:!0}},40863:(e,t,n)=>{e.exports={default:n(21035),__esModule:!0}},52945:(e,t,n)=>{e.exports={default:n(56981),__esModule:!0}},32242:(e,t,n)=>{e.exports={default:n(33391),__esModule:!0}},88902:(e,t,n)=>{e.exports={default:n(98613),__esModule:!0}},9527:(e,t,n)=>{e.exports={default:n(32720),__esModule:!0}},99663:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},22600:(e,t,n)=>{"use strict";t.__esModule=!0;var i,s=(i=n(32242))&&i.__esModule?i:{default:i};t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),(0,s.default)(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}()},88239:(e,t,n)=>{"use strict";t.__esModule=!0;var i,s=(i=n(52945))&&i.__esModule?i:{default:i};t.default=s.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}},12424:(e,t,n)=>{"use strict";t.__esModule=!0;var i=r(n(40863)),s=r(n(26378));function r(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if(Array.isArray(e))return e;if((0,i.default)(Object(e)))return function(e,t){var n=[],i=!0,r=!1,a=void 0;try{for(var o,l=(0,s.default)(e);!(i=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,a=e}finally{try{!i&&l.return&&l.return()}finally{if(r)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},85315:(e,t,n)=>{"use strict";t.__esModule=!0;var i,s=(i=n(24043))&&i.__esModule?i:{default:i};t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,s.default)(e)}},47185:(e,t,n)=>{n(91867),n(2586),e.exports=n(34579).Array.from},3597:(e,t,n)=>{n(73871),n(91867),e.exports=n(46459)},21035:(e,t,n)=>{n(73871),n(91867),e.exports=n(89553)},56981:(e,t,n)=>{n(72699),e.exports=n(34579).Object.assign},33391:(e,t,n)=>{n(31477);var i=n(34579).Object;e.exports=function(e,t,n){return i.defineProperty(e,t,n)}},98613:(e,t,n)=>{n(40961),e.exports=n(34579).Object.keys},32720:(e,t,n)=>{n(94058),n(91867),n(73871),n(61003),n(48408),n(31749),n(59806),e.exports=n(34579).Set},85663:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},79003:e=>{e.exports=function(){}},29142:e=>{e.exports=function(e,t,n,i){if(!(e instanceof t)||void 0!==i&&i in e)throw TypeError(n+": incorrect invocation!");return e}},12159:(e,t,n)=>{var i=n(36727);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},37259:(e,t,n)=>{var i=n(45576);e.exports=function(e,t){var n=[];return i(e,!1,n.push,n,t),n}},57428:(e,t,n)=>{var i=n(7932),s=n(78728),r=n(16531);e.exports=function(e){return function(t,n,a){var o,l=i(t),u=s(l.length),d=r(a,u);if(e&&n!=n){for(;u>d;)if((o=l[d++])!=o)return!0}else for(;u>d;d++)if((e||d in l)&&l[d]===n)return e||d||0;return!e&&-1}}},1523:(e,t,n)=>{var i=n(19216),s=n(50799),r=n(66530),a=n(78728),o=n(87745);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,d=4==e,c=6==e,h=5==e||c,p=t||o;return function(t,o,f){for(var m,_,g=r(t),v=s(g),y=i(o,f,3),b=a(v.length),w=0,k=n?p(t,b):l?p(t,0):void 0;b>w;w++)if((h||w in v)&&(_=y(m=v[w],w,g),e))if(n)k[w]=_;else if(_)switch(e){case 3:return!0;case 5:return m;case 6:return w;case 2:k.push(m)}else if(d)return!1;return c?-1:u||d?d:k}}},80161:(e,t,n)=>{var i=n(36727),s=n(71421),r=n(22939)("species");e.exports=function(e){var t;return s(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!s(t.prototype)||(t=void 0),i(t)&&null===(t=t[r])&&(t=void 0)),void 0===t?Array:t}},87745:(e,t,n)=>{var i=n(80161);e.exports=function(e,t){return new(i(e))(t)}},14677:(e,t,n)=>{var i=n(32894),s=n(22939)("toStringTag"),r="Arguments"==i(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),s))?n:r?i(t):"Object"==(a=i(t))&&"function"==typeof t.callee?"Arguments":a}},32894:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},56175:(e,t,n)=>{"use strict";var i=n(4743).f,s=n(98989),r=n(48144),a=n(19216),o=n(29142),l=n(45576),u=n(45700),d=n(85084),c=n(39967),h=n(89666),p=n(77177).fastKey,f=n(20765),m=h?"_s":"size",_=function(e,t){var n,i=p(t);if("F"!==i)return e._i[i];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var d=e((function(e,i){o(e,d,t,"_i"),e._t=t,e._i=s(null),e._f=void 0,e._l=void 0,e[m]=0,null!=i&&l(i,n,e[u],e)}));return r(d.prototype,{clear:function(){for(var e=f(this,t),n=e._i,i=e._f;i;i=i.n)i.r=!0,i.p&&(i.p=i.p.n=void 0),delete n[i.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var n=f(this,t),i=_(n,e);if(i){var s=i.n,r=i.p;delete n._i[i.i],i.r=!0,r&&(r.n=s),s&&(s.p=r),n._f==i&&(n._f=s),n._l==i&&(n._l=r),n[m]--}return!!i},forEach:function(e){f(this,t);for(var n,i=a(e,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(i(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!_(f(this,t),e)}}),h&&i(d.prototype,"size",{get:function(){return f(this,t)[m]}}),d},def:function(e,t,n){var i,s,r=_(e,t);return r?r.v=n:(e._l=r={i:s=p(t,!0),k:t,v:n,p:i=e._l,n:void 0,r:!1},e._f||(e._f=r),i&&(i.n=r),e[m]++,"F"!==s&&(e._i[s]=r)),e},getEntry:_,setStrong:function(e,t,n){u(e,t,(function(e,n){this._t=f(e,t),this._k=n,this._l=void 0}),(function(){for(var e=this,t=e._k,n=e._l;n&&n.r;)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?d(0,"keys"==t?n.k:"values"==t?n.v:[n.k,n.v]):(e._t=void 0,d(1))}),n?"entries":"values",!n,!0),c(t)}}},61718:(e,t,n)=>{var i=n(14677),s=n(37259);e.exports=function(e){return function(){if(i(this)!=e)throw TypeError(e+"#toJSON isn't generic");return s(this)}}},32269:(e,t,n)=>{"use strict";var i=n(33938),s=n(83856),r=n(77177),a=n(7929),o=n(41818),l=n(48144),u=n(45576),d=n(29142),c=n(36727),h=n(25378),p=n(4743).f,f=n(1523)(0),m=n(89666);e.exports=function(e,t,n,_,g,v){var y=i[e],b=y,w=g?"set":"add",k=b&&b.prototype,M={};return m&&"function"==typeof b&&(v||k.forEach&&!a((function(){(new b).entries().next()})))?(b=t((function(t,n){d(t,b,e,"_c"),t._c=new y,null!=n&&u(n,g,t[w],t)})),f("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),(function(e){var t="add"==e||"set"==e;!(e in k)||v&&"clear"==e||o(b.prototype,e,(function(n,i){if(d(this,b,e),!t&&v&&!c(n))return"get"==e&&void 0;var s=this._c[e](0===n?0:n,i);return t?this:s}))})),v||p(b.prototype,"size",{get:function(){return this._c.size}})):(b=_.getConstructor(t,e,g,w),l(b.prototype,n),r.NEED=!0),h(b,e),M[e]=b,s(s.G+s.W+s.F,M),v||_.setStrong(b,e,g),b}},34579:e=>{var t=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=t)},52445:(e,t,n)=>{"use strict";var i=n(4743),s=n(83101);e.exports=function(e,t,n){t in e?i.f(e,t,s(0,n)):e[t]=n}},19216:(e,t,n)=>{var i=n(85663);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,s){return e.call(t,n,i,s)}}return function(){return e.apply(t,arguments)}}},8333:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},89666:(e,t,n)=>{e.exports=!n(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(e,t,n)=>{var i=n(36727),s=n(33938).document,r=i(s)&&i(s.createElement);e.exports=function(e){return r?s.createElement(e):{}}},73338:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(e,t,n)=>{var i=n(33938),s=n(34579),r=n(19216),a=n(41818),o=n(27069),l=function(e,t,n){var u,d,c,h=e&l.F,p=e&l.G,f=e&l.S,m=e&l.P,_=e&l.B,g=e&l.W,v=p?s:s[t]||(s[t]={}),y=v.prototype,b=p?i:f?i[t]:(i[t]||{}).prototype;for(u in p&&(n=t),n)(d=!h&&b&&void 0!==b[u])&&o(v,u)||(c=d?b[u]:n[u],v[u]=p&&"function"!=typeof b[u]?n[u]:_&&d?r(c,i):g&&b[u]==c?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):m&&"function"==typeof c?r(Function.call,c):c,m&&((v.virtual||(v.virtual={}))[u]=c,e&l.R&&y&&!y[u]&&a(y,u,c)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},7929:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},45576:(e,t,n)=>{var i=n(19216),s=n(95602),r=n(45991),a=n(12159),o=n(78728),l=n(83728),u={},d={},c=e.exports=function(e,t,n,c,h){var p,f,m,_,g=h?function(){return e}:l(e),v=i(n,c,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(r(g)){for(p=o(e.length);p>y;y++)if((_=t?v(a(f=e[y])[0],f[1]):v(e[y]))===u||_===d)return _}else for(m=g.call(e);!(f=m.next()).done;)if((_=s(m,v,f.value,t))===u||_===d)return _};c.BREAK=u,c.RETURN=d},33938:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},27069:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},41818:(e,t,n)=>{var i=n(4743),s=n(83101);e.exports=n(89666)?function(e,t,n){return i.f(e,t,s(1,n))}:function(e,t,n){return e[t]=n,e}},54881:(e,t,n)=>{var i=n(33938).document;e.exports=i&&i.documentElement},33758:(e,t,n)=>{e.exports=!n(89666)&&!n(7929)((function(){return 7!=Object.defineProperty(n(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(e,t,n)=>{var i=n(32894);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},45991:(e,t,n)=>{var i=n(15449),s=n(22939)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||r[s]===e)}},71421:(e,t,n)=>{var i=n(32894);e.exports=Array.isArray||function(e){return"Array"==i(e)}},36727:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},95602:(e,t,n)=>{var i=n(12159);e.exports=function(e,t,n,s){try{return s?t(i(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&i(r.call(e)),t}}},33945:(e,t,n)=>{"use strict";var i=n(98989),s=n(83101),r=n(25378),a={};n(41818)(a,n(22939)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=i(a,{next:s(1,n)}),r(e,t+" Iterator")}},45700:(e,t,n)=>{"use strict";var i=n(16227),s=n(83856),r=n(57470),a=n(41818),o=n(15449),l=n(33945),u=n(25378),d=n(95089),c=n(22939)("iterator"),h=!([].keys&&"next"in[].keys()),p="keys",f="values",m=function(){return this};e.exports=function(e,t,n,_,g,v,y){l(n,t,_);var b,w,k,M=function(e){if(!h&&e in x)return x[e];switch(e){case p:case f:return function(){return new n(this,e)}}return function(){return new n(this,e)}},L=t+" Iterator",D=g==f,T=!1,x=e.prototype,S=x[c]||x["@@iterator"]||g&&x[g],Y=S||M(g),C=g?D?M("entries"):Y:void 0,E="Array"==t&&x.entries||S;if(E&&(k=d(E.call(new e)))!==Object.prototype&&k.next&&(u(k,L,!0),i||"function"==typeof k[c]||a(k,c,m)),D&&S&&S.name!==f&&(T=!0,Y=function(){return S.call(this)}),i&&!y||!h&&!T&&x[c]||a(x,c,Y),o[t]=Y,o[L]=m,g)if(b={values:D?Y:M(f),keys:v?Y:M(p),entries:C},y)for(w in b)w in x||r(x,w,b[w]);else s(s.P+s.F*(h||T),t,b);return b}},96630:(e,t,n)=>{var i=n(22939)("iterator"),s=!1;try{var r=[7][i]();r.return=function(){s=!0},Array.from(r,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!s)return!1;var n=!1;try{var r=[7],a=r[i]();a.next=function(){return{done:n=!0}},r[i]=function(){return a},e(r)}catch(e){}return n}},85084:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},15449:e=>{e.exports={}},16227:e=>{e.exports=!0},77177:(e,t,n)=>{var i=n(65730)("meta"),s=n(36727),r=n(27069),a=n(4743).f,o=0,l=Object.isExtensible||function(){return!0},u=!n(7929)((function(){return l(Object.preventExtensions({}))})),d=function(e){a(e,i,{value:{i:"O"+ ++o,w:{}}})},c=e.exports={KEY:i,NEED:!1,fastKey:function(e,t){if(!s(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!r(e,i)){if(!l(e))return"F";if(!t)return"E";d(e)}return e[i].i},getWeak:function(e,t){if(!r(e,i)){if(!l(e))return!0;if(!t)return!1;d(e)}return e[i].w},onFreeze:function(e){return u&&c.NEED&&l(e)&&!r(e,i)&&d(e),e}}},88082:(e,t,n)=>{"use strict";var i=n(89666),s=n(46162),r=n(48195),a=n(86274),o=n(66530),l=n(50799),u=Object.assign;e.exports=!u||n(7929)((function(){var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach((function(e){t[e]=e})),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=i}))?function(e,t){for(var n=o(e),u=arguments.length,d=1,c=r.f,h=a.f;u>d;)for(var p,f=l(arguments[d++]),m=c?s(f).concat(c(f)):s(f),_=m.length,g=0;_>g;)p=m[g++],i&&!h.call(f,p)||(n[p]=f[p]);return n}:u},98989:(e,t,n)=>{var i=n(12159),s=n(57856),r=n(73338),a=n(58989)("IE_PROTO"),o=function(){},l=function(){var e,t=n(97467)("iframe"),i=r.length;for(t.style.display="none",n(54881).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;i--;)delete l.prototype[r[i]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(o.prototype=i(e),n=new o,o.prototype=null,n[a]=e):n=l(),void 0===t?n:s(n,t)}},4743:(e,t,n)=>{var i=n(12159),s=n(33758),r=n(33206),a=Object.defineProperty;t.f=n(89666)?Object.defineProperty:function(e,t,n){if(i(e),t=r(t,!0),i(n),s)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},57856:(e,t,n)=>{var i=n(4743),s=n(12159),r=n(46162);e.exports=n(89666)?Object.defineProperties:function(e,t){s(e);for(var n,a=r(t),o=a.length,l=0;o>l;)i.f(e,n=a[l++],t[n]);return e}},48195:(e,t)=>{t.f=Object.getOwnPropertySymbols},95089:(e,t,n)=>{var i=n(27069),s=n(66530),r=n(58989)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=s(e),i(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},12963:(e,t,n)=>{var i=n(27069),s=n(7932),r=n(57428)(!1),a=n(58989)("IE_PROTO");e.exports=function(e,t){var n,o=s(e),l=0,u=[];for(n in o)n!=a&&i(o,n)&&u.push(n);for(;t.length>l;)i(o,n=t[l++])&&(~r(u,n)||u.push(n));return u}},46162:(e,t,n)=>{var i=n(12963),s=n(73338);e.exports=Object.keys||function(e){return i(e,s)}},86274:(e,t)=>{t.f={}.propertyIsEnumerable},12584:(e,t,n)=>{var i=n(83856),s=n(34579),r=n(7929);e.exports=function(e,t){var n=(s.Object||{})[e]||Object[e],a={};a[e]=t(n),i(i.S+i.F*r((function(){n(1)})),"Object",a)}},83101:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},48144:(e,t,n)=>{var i=n(41818);e.exports=function(e,t,n){for(var s in t)n&&e[s]?e[s]=t[s]:i(e,s,t[s]);return e}},57470:(e,t,n)=>{e.exports=n(41818)},6237:(e,t,n)=>{"use strict";var i=n(83856),s=n(85663),r=n(19216),a=n(45576);e.exports=function(e){i(i.S,e,{from:function(e){var t,n,i,o,l=arguments[1];return s(this),(t=void 0!==l)&&s(l),null==e?new this:(n=[],t?(i=0,o=r(l,arguments[2],2),a(e,!1,(function(e){n.push(o(e,i++))}))):a(e,!1,n.push,n),new this(n))}})}},46730:(e,t,n)=>{"use strict";var i=n(83856);e.exports=function(e){i(i.S,e,{of:function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},39967:(e,t,n)=>{"use strict";var i=n(33938),s=n(34579),r=n(4743),a=n(89666),o=n(22939)("species");e.exports=function(e){var t="function"==typeof s[e]?s[e]:i[e];a&&t&&!t[o]&&r.f(t,o,{configurable:!0,get:function(){return this}})}},25378:(e,t,n)=>{var i=n(4743).f,s=n(27069),r=n(22939)("toStringTag");e.exports=function(e,t,n){e&&!s(e=n?e:e.prototype,r)&&i(e,r,{configurable:!0,value:t})}},58989:(e,t,n)=>{var i=n(20250)("keys"),s=n(65730);e.exports=function(e){return i[e]||(i[e]=s(e))}},20250:(e,t,n)=>{var i=n(34579),s=n(33938),r="__core-js_shared__",a=s[r]||(s[r]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(e,t,n)=>{var i=n(11052),s=n(8333);e.exports=function(e){return function(t,n){var r,a,o=String(s(t)),l=i(n),u=o.length;return l<0||l>=u?e?"":void 0:(r=o.charCodeAt(l))<55296||r>56319||l+1===u||(a=o.charCodeAt(l+1))<56320||a>57343?e?o.charAt(l):r:e?o.slice(l,l+2):a-56320+(r-55296<<10)+65536}}},16531:(e,t,n)=>{var i=n(11052),s=Math.max,r=Math.min;e.exports=function(e,t){return(e=i(e))<0?s(e+t,0):r(e,t)}},11052:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},7932:(e,t,n)=>{var i=n(50799),s=n(8333);e.exports=function(e){return i(s(e))}},78728:(e,t,n)=>{var i=n(11052),s=Math.min;e.exports=function(e){return e>0?s(i(e),9007199254740991):0}},66530:(e,t,n)=>{var i=n(8333);e.exports=function(e){return Object(i(e))}},33206:(e,t,n)=>{var i=n(36727);e.exports=function(e,t){if(!i(e))return e;var n,s;if(t&&"function"==typeof(n=e.toString)&&!i(s=n.call(e)))return s;if("function"==typeof(n=e.valueOf)&&!i(s=n.call(e)))return s;if(!t&&"function"==typeof(n=e.toString)&&!i(s=n.call(e)))return s;throw TypeError("Can't convert object to primitive value")}},65730:e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},20765:(e,t,n)=>{var i=n(36727);e.exports=function(e,t){if(!i(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},22939:(e,t,n)=>{var i=n(20250)("wks"),s=n(65730),r=n(33938).Symbol,a="function"==typeof r;(e.exports=function(e){return i[e]||(i[e]=a&&r[e]||(a?r:s)("Symbol."+e))}).store=i},83728:(e,t,n)=>{var i=n(14677),s=n(22939)("iterator"),r=n(15449);e.exports=n(34579).getIteratorMethod=function(e){if(null!=e)return e[s]||e["@@iterator"]||r[i(e)]}},46459:(e,t,n)=>{var i=n(12159),s=n(83728);e.exports=n(34579).getIterator=function(e){var t=s(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return i(t.call(e))}},89553:(e,t,n)=>{var i=n(14677),s=n(22939)("iterator"),r=n(15449);e.exports=n(34579).isIterable=function(e){var t=Object(e);return void 0!==t[s]||"@@iterator"in t||r.hasOwnProperty(i(t))}},2586:(e,t,n)=>{"use strict";var i=n(19216),s=n(83856),r=n(66530),a=n(95602),o=n(45991),l=n(78728),u=n(52445),d=n(83728);s(s.S+s.F*!n(96630)((function(e){Array.from(e)})),"Array",{from:function(e){var t,n,s,c,h=r(e),p="function"==typeof this?this:Array,f=arguments.length,m=f>1?arguments[1]:void 0,_=void 0!==m,g=0,v=d(h);if(_&&(m=i(m,f>2?arguments[2]:void 0,2)),null==v||p==Array&&o(v))for(n=new p(t=l(h.length));t>g;g++)u(n,g,_?m(h[g],g):h[g]);else for(c=v.call(h),n=new p;!(s=c.next()).done;g++)u(n,g,_?a(c,m,[s.value,g],!0):s.value);return n.length=g,n}})},3882:(e,t,n)=>{"use strict";var i=n(79003),s=n(85084),r=n(15449),a=n(7932);e.exports=n(45700)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,s(1)):s(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),r.Arguments=r.Array,i("keys"),i("values"),i("entries")},72699:(e,t,n)=>{var i=n(83856);i(i.S+i.F,"Object",{assign:n(88082)})},31477:(e,t,n)=>{var i=n(83856);i(i.S+i.F*!n(89666),"Object",{defineProperty:n(4743).f})},40961:(e,t,n)=>{var i=n(66530),s=n(46162);n(12584)("keys",(function(){return function(e){return s(i(e))}}))},94058:()=>{},61003:(e,t,n)=>{"use strict";var i=n(56175),s=n(20765);e.exports=n(32269)("Set",(function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(e){return i.def(s(this,"Set"),e=0===e?0:e,e)}},i)},91867:(e,t,n)=>{"use strict";var i=n(90510)(!0);n(45700)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})}))},59806:(e,t,n)=>{n(6237)("Set")},31749:(e,t,n)=>{n(46730)("Set")},48408:(e,t,n)=>{var i=n(83856);i(i.P+i.R,"Set",{toJSON:n(61718)("Set")})},73871:(e,t,n)=>{n(3882);for(var i=n(33938),s=n(41818),r=n(15449),a=n(22939)("toStringTag"),o="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<o.length;l++){var u=o[l],d=i[u],c=d&&d.prototype;c&&!c[a]&&s(c,a,u),r[u]=r.Array}},17187:e=>{"use strict";var t,n="object"==typeof Reflect?Reflect:null,i=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var s=Number.isNaN||function(e){return e!=e};function r(){r.init.call(this)}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var a=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function u(e,t,n,i){var s,r,a,u;if(o(n),void 0===(r=e._events)?(r=e._events=Object.create(null),e._eventsCount=0):(void 0!==r.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),r=e._events),a=r[t]),void 0===a)a=r[t]=n,++e._eventsCount;else if("function"==typeof a?a=r[t]=i?[n,a]:[a,n]:i?a.unshift(n):a.push(n),(s=l(e))>0&&a.length>s&&!a.warned){a.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=a.length,u=d,console&&console.warn&&console.warn(u)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(e,t,n){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},s=d.bind(i);return s.listener=n,i.wrapFn=s,s}function h(e,t,n){var i=e._events;if(void 0===i)return[];var s=i[t];return void 0===s?[]:"function"==typeof s?n?[s.listener||s]:[s]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(s):f(s,s.length)}function p(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function f(e,t){for(var n=new Array(t),i=0;i<t;++i)n[i]=e[i];return n}Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||s(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),r.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||s(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},r.prototype.getMaxListeners=function(){return l(this)},r.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var s="error"===e,r=this._events;if(void 0!==r)s=s&&void 0===r.error;else if(!s)return!1;if(s){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var o=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw o.context=a,o}var l=r[e];if(void 0===l)return!1;if("function"==typeof l)i(l,this,t);else{var u=l.length,d=f(l,u);for(n=0;n<u;++n)i(d[n],this,t)}return!0},r.prototype.addListener=function(e,t){return u(this,e,t,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(e,t){return u(this,e,t,!0)},r.prototype.once=function(e,t){return o(t),this.on(e,c(this,e,t)),this},r.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,c(this,e,t)),this},r.prototype.removeListener=function(e,t){var n,i,s,r,a;if(o(t),void 0===(i=this._events))return this;if(void 0===(n=i[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(s=-1,r=n.length-1;r>=0;r--)if(n[r]===t||n[r].listener===t){a=n[r].listener,s=r;break}if(s<0)return this;0===s?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,s),1===n.length&&(i[e]=n[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(e){var t,n,i;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var s,r=Object.keys(n);for(i=0;i<r.length;++i)"removeListener"!==(s=r[i])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},r.prototype.listeners=function(e){return h(this,e,!0)},r.prototype.rawListeners=function(e){return h(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},r.prototype.listenerCount=p,r.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},59761:(e,t,n)=>{var i=n(60885),s=n(27672);void 0===s.Bloodhound&&(s.Bloodhound=i),e.exports=i},27672:(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},2564:e=>{"use strict";var t=Object.assign||function(e){for(var t,n=1;n<arguments.length;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=new function e(){var i=this;(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),this.setRoutes=function(e){i.routesRouting=e||[]},this.getRoutes=function(){return i.routesRouting},this.setBaseUrl=function(e){i.contextRouting.base_url=e},this.getBaseUrl=function(){return i.contextRouting.base_url},this.setPrefix=function(e){i.contextRouting.prefix=e},this.setScheme=function(e){i.contextRouting.scheme=e},this.getScheme=function(){return i.contextRouting.scheme},this.setHost=function(e){i.contextRouting.host=e},this.getHost=function(){return i.contextRouting.host},this.buildQueryParams=function(e,t,s){var r=new RegExp(/\[]$/);t instanceof Array?t.forEach((function(t,a){r.test(e)?s(e,t):i.buildQueryParams(e+"["+("object"===(void 0===t?"undefined":n(t))?a:"")+"]",t,s)})):"object"===(void 0===t?"undefined":n(t))?Object.keys(t).forEach((function(n){return i.buildQueryParams(e+"["+n+"]",t[n],s)})):s(e,t)},this.getRoute=function(e){var t=i.contextRouting.prefix+e;if(i.routesRouting[t])return i.routesRouting[t];if(!i.routesRouting[e])throw new Error('The route "'+e+'" does not exist.');return i.routesRouting[e]},this.generate=function(e,n,s){var r=i.getRoute(e),a=n||{},o=t({},a),l="_scheme",u="",d=!0,c="";if((r.tokens||[]).forEach((function(t){if("text"===t[0])return u=t[1]+u,void(d=!1);if("variable"!==t[0])throw new Error('The token type "'+t[0]+'" is not supported.');var n=(r.defaults||{})[t[3]];if(0==d||!n||(a||{})[t[3]]&&a[t[3]]!==r.defaults[t[3]]){var i;if((a||{})[t[3]])i=a[t[3]],delete o[t[3]];else{if(!n){if(d)return;throw new Error('The route "'+e+'" requires the parameter "'+t[3]+'".')}i=r.defaults[t[3]]}if(!0!==i&&!1!==i&&""!==i||!d){var s=encodeURIComponent(i).replace(/%2F/g,"/");"null"===s&&null===i&&(s=""),u=t[1]+s+u}d=!1}else n&&delete o[t[3]]})),""==u&&(u="/"),(r.hosttokens||[]).forEach((function(e){var t;return"text"===e[0]?void(c=e[1]+c):void("variable"===e[0]&&((a||{})[e[3]]?(t=a[e[3]],delete o[e[3]]):r.defaults[e[3]]&&(t=r.defaults[e[3]]),c=e[1]+t+c))})),u=i.contextRouting.base_url+u,r.requirements[l]&&i.getScheme()!==r.requirements[l]?u=r.requirements[l]+"://"+(c||i.getHost())+u:c&&i.getHost()!==c?u=i.getScheme()+"://"+c+u:!0===s&&(u=i.getScheme()+"://"+i.getHost()+u),0<Object.keys(o).length){var h=[],p=function(e,t){var n=t;n=null===(n="function"==typeof n?n():n)?"":n,h.push(encodeURIComponent(e)+"="+encodeURIComponent(n))};Object.keys(o).forEach((function(e){return i.buildQueryParams(e,o[e],p)})),u=u+"?"+h.join("&").replace(/%20/g,"+")}return u},this.setData=function(e){i.setBaseUrl(e.base_url),i.setRoutes(e.routes),"prefix"in e&&i.setPrefix(e.prefix),i.setHost(e.host),i.setScheme(e.scheme)},this.contextRouting={base_url:"",prefix:"",host:"",scheme:""}}},97549:()=>{(function(e){!function(e,t){var i,s,r=e.document,a=e.jQuery||e.Zepto||e.ender||r,o="keydown";function l(e,t){return null===e?"null"===t:void 0===e?"undefined"===t:e.is&&e instanceof a?"element"===t:Object.prototype.toString.call(e).toLowerCase().indexOf(t)>7}a===r?(i=function(e,t){return e?a.querySelector(e,t||a):a},s=function(e,t){e.addEventListener(o,t,!1)},$f=function(e,t){var n,i=document.createEvent("Event");for(n in i.initEvent(o,!0,!0),t)i[n]=t[n];return(e||a).dispatchEvent(i)}):(i=function(e,t,n){return a(e||r,t)},s=function(e,t){a(e).bind(o+".jwerty",t)},$f=function(e,t){a(e||r).trigger(a.Event(o,t))});var u={16:"shiftKey",17:"ctrlKey",18:"altKey",91:"metaKey"},d={mods:{"⇧":16,shift:16,"⌃":17,ctrl:17,"⌥":18,alt:18,option:18,"⌘":91,meta:91,cmd:91,super:91,win:91},keys:{"⌫":8,backspace:8,"⇥":9,"⇆":9,tab:9,"↩":13,return:13,enter:13,"⌅":13,pause:19,"pause-break":19,"⇪":20,caps:20,"caps-lock":20,"⎋":27,escape:27,esc:27,space:32,"↖":33,pgup:33,"page-up":33,"↘":34,pgdown:34,"page-down":34,"⇟":35,end:35,"⇞":36,home:36,ins:45,insert:45,del:46,delete:46,"←":37,left:37,"arrow-left":37,"↑":38,up:38,"arrow-up":38,"→":39,right:39,"arrow-right":39,"↓":40,down:40,"arrow-down":40,"*":106,star:106,asterisk:106,multiply:106,"+":107,plus:107,"-":109,subtract:109,";":186,semicolon:186,"=":187,equals:187,",":188,comma:188,".":190,period:190,"full-stop":190,"/":191,slash:191,"forward-slash":191,"`":192,tick:192,"back-quote":192,"[":219,"open-bracket":219,"\\":220,"back-slash":220,"]":221,"close-bracket":221,"'":222,quote:222,apostraphe:222}};for(c=95,n=0;++c<106;)d.keys["num-"+n]=c,++n;for(c=47,n=0;++c<58;)d.keys[n]=c,++n;for(c=111,n=1;++c<136;)d.keys["f"+n]=c,++n;for(var c=64;++c<91;)d.keys[String.fromCharCode(c).toLowerCase()]=c;function h(e){var t,n,i,s,r,a,o,c;if(e instanceof h)return e;for(l(e,"array")||(e=String(e).replace(/\s/g,"").toLowerCase().match(/(?:\+,|[^,])+/g)),t=0,n=e.length;t<n;++t){for(l(e[t],"array")||(e[t]=String(e[t]).match(/(?:\+\/|[^\/])+/g)),a=[],i=e[t].length;i--;){var p=e[t][i];for(r={jwertyCombo:String(p),shiftKey:!1,ctrlKey:!1,altKey:!1,metaKey:!1},l(p,"array")||(p=String(p).toLowerCase().match(/(?:(?:[^\+])+|\+\+|^\+$)/g)),s=p.length;s--;)"++"===p[s]&&(p[s]="+"),p[s]in d.mods?r[u[d.mods[p[s]]]]=!0:p[s]in d.keys?r.keyCode=d.keys[p[s]]:o=p[s].match(/^\[([^-]+\-?[^-]*)-([^-]+\-?[^-]*)\]$/);if(l(r.keyCode,"undefined"))if(o&&o[1]in d.keys&&o[2]in d.keys){for(o[2]=d.keys[o[2]],o[1]=d.keys[o[1]],c=o[1];c<o[2];++c)a.push({altKey:r.altKey,shiftKey:r.shiftKey,metaKey:r.metaKey,ctrlKey:r.ctrlKey,keyCode:c,jwertyCombo:String(p)});r.keyCode=c}else r.keyCode=0;a.push(r)}this[t]=a}return this.length=t,this}var p=t.jwerty={event:function(e,t,n){if(l(t,"boolean")){var i=t;t=function(){return i}}e=new h(e);var s,r=0,a=e.length-1;return function(i){if(s=p.is(e,i,r))return r<a?void++r:(!1===t.call(n||this,i,s)&&i.preventDefault(),void(r=0));r=p.is(e,i)?1:0}},is:function(e,t,n){e=(e=new h(e))[n=n||0],t=t.originalEvent||t;for(var i=e.length,s=!1;i--;){for(var r in s=e[i].jwertyCombo,e[i])"jwertyCombo"!==r&&t[r]!=e[i][r]&&(s=!1);if(!1!==s)return s}return s},key:function(t,n,r,a,o){var u=l(r,"element")||l(r,"string")?r:a,d=u===r?e:r,c=u===r?a:o;s(l(u,"element")?u:i(u,c),p.event(t,n,d))},fire:function(e,t,n,s){e=new h(e);var r=l(n,"number")?n:s;$f(l(t,"element")?t:i(t,n),e[r||0][0])},KEYS:d}}(this,void 0!==e&&e.exports?e.exports:this)}).call(window,!1)},10278:(e,t,n)=>{var i=n(73609);(function(e){var t;t=function(e){e.ui=e.ui||{},e.ui.version="1.12.1";var t,n=0,i=Array.prototype.slice;e.cleanData=(t=e.cleanData,function(n){var i,s,r;for(r=0;null!=(s=n[r]);r++)try{(i=e._data(s,"events"))&&i.remove&&e(s).triggerHandler("remove")}catch(e){}t(n)}),e.widget=function(t,n,i){var s,r,a,o={},l=t.split(".")[0],u=l+"-"+(t=t.split(".")[1]);return i||(i=n,n=e.Widget),e.isArray(i)&&(i=e.extend.apply(null,[{}].concat(i))),e.expr[":"][u.toLowerCase()]=function(t){return!!e.data(t,u)},e[l]=e[l]||{},s=e[l][t],r=e[l][t]=function(e,t){if(!this._createWidget)return new r(e,t);arguments.length&&this._createWidget(e,t)},e.extend(r,s,{version:i.version,_proto:e.extend({},i),_childConstructors:[]}),(a=new n).options=e.widget.extend({},a.options),e.each(i,(function(t,i){e.isFunction(i)?o[t]=function(){function e(){return n.prototype[t].apply(this,arguments)}function s(e){return n.prototype[t].apply(this,e)}return function(){var t,n=this._super,r=this._superApply;return this._super=e,this._superApply=s,t=i.apply(this,arguments),this._super=n,this._superApply=r,t}}():o[t]=i})),r.prototype=e.widget.extend(a,{widgetEventPrefix:s&&a.widgetEventPrefix||t},o,{constructor:r,namespace:l,widgetName:t,widgetFullName:u}),s?(e.each(s._childConstructors,(function(t,n){var i=n.prototype;e.widget(i.namespace+"."+i.widgetName,r,n._proto)})),delete s._childConstructors):n._childConstructors.push(r),e.widget.bridge(t,r),r},e.widget.extend=function(t){for(var n,s,r=i.call(arguments,1),a=0,o=r.length;a<o;a++)for(n in r[a])s=r[a][n],r[a].hasOwnProperty(n)&&void 0!==s&&(e.isPlainObject(s)?t[n]=e.isPlainObject(t[n])?e.widget.extend({},t[n],s):e.widget.extend({},s):t[n]=s);return t},e.widget.bridge=function(t,n){var s=n.prototype.widgetFullName||t;e.fn[t]=function(r){var a="string"==typeof r,o=i.call(arguments,1),l=this;return a?this.length||"instance"!==r?this.each((function(){var n,i=e.data(this,s);return"instance"===r?(l=i,!1):i?e.isFunction(i[r])&&"_"!==r.charAt(0)?(n=i[r].apply(i,o))!==i&&void 0!==n?(l=n&&n.jquery?l.pushStack(n.get()):n,!1):void 0:e.error("no such method '"+r+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; attempted to call method '"+r+"'")})):l=void 0:(o.length&&(r=e.widget.extend.apply(null,[r].concat(o))),this.each((function(){var t=e.data(this,s);t?(t.option(r||{}),t._init&&t._init()):e.data(this,s,new n(r,this))}))),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),this.classesElementLookup={},i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){var t=this;this._destroy(),e.each(this.classesElementLookup,(function(e,n){t._removeClass(n,e)})),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:e.noop,widget:function(){return this.element},option:function(t,n){var i,s,r,a=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(a={},i=t.split("."),t=i.shift(),i.length){for(s=a[t]=e.widget.extend({},this.options[t]),r=0;r<i.length-1;r++)s[i[r]]=s[i[r]]||{},s=s[i[r]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=n}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];a[t]=n}return this._setOptions(a),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return"classes"===e&&this._setOptionClasses(t),this.options[e]=t,"disabled"===e&&this._setOptionDisabled(t),this},_setOptionClasses:function(t){var n,i,s;for(n in t)s=this.classesElementLookup[n],t[n]!==this.options.classes[n]&&s&&s.length&&(i=e(s.get()),this._removeClass(s,n),i.addClass(this._classes({element:i,keys:n,classes:t,add:!0})))},_setOptionDisabled:function(e){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!e),e&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(t){var n=[],i=this;function s(s,r){var a,o;for(o=0;o<s.length;o++)a=i.classesElementLookup[s[o]]||e(),a=t.add?e(e.unique(a.get().concat(t.element.get()))):e(a.not(t.element).get()),i.classesElementLookup[s[o]]=a,n.push(s[o]),r&&t.classes[s[o]]&&n.push(t.classes[s[o]])}return t=e.extend({element:this.element,classes:this.options.classes||{}},t),this._on(t.element,{remove:"_untrackClassesElement"}),t.keys&&s(t.keys.match(/\S+/g)||[],!0),t.extra&&s(t.extra.match(/\S+/g)||[]),n.join(" ")},_untrackClassesElement:function(t){var n=this;e.each(n.classesElementLookup,(function(i,s){-1!==e.inArray(t.target,s)&&(n.classesElementLookup[i]=e(s.not(t.target).get()))}))},_removeClass:function(e,t,n){return this._toggleClass(e,t,n,!1)},_addClass:function(e,t,n){return this._toggleClass(e,t,n,!0)},_toggleClass:function(e,t,n,i){i="boolean"==typeof i?i:n;var s="string"==typeof e||null===e,r={extra:s?t:n,keys:s?e:t,element:s?this.element:e,add:i};return r.element.toggleClass(this._classes(r),i),this},_on:function(t,n,i){var s,r=this;"boolean"!=typeof t&&(i=n,n=t,t=!1),i?(n=s=e(n),this.bindings=this.bindings.add(n)):(i=n,n=this.element,s=this.widget()),e.each(i,(function(i,a){function o(){if(t||!0!==r.options.disabled&&!e(this).hasClass("ui-state-disabled"))return("string"==typeof a?r[a]:a).apply(r,arguments)}"string"!=typeof a&&(o.guid=a.guid=a.guid||o.guid||e.guid++);var l=i.match(/^([\w:-]*)\s*(.*)$/),u=l[1]+r.eventNamespace,d=l[2];d?s.on(u,d,o):n.on(u,o)}))},_off:function(t,n){n=(n||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(n).off(n),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){var n=this;return setTimeout((function(){return("string"==typeof e?n[e]:e).apply(n,arguments)}),t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(e(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(e(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,n,i){var s,r,a=this.options[t];if(i=i||{},(n=e.Event(n)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],r=n.originalEvent)for(s in r)s in n||(n[s]=r[s]);return this.element.trigger(n,i),!(e.isFunction(a)&&!1===a.apply(this.element[0],[n].concat(i))||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},(function(t,n){e.Widget.prototype["_"+t]=function(i,s,r){var a;"string"==typeof s&&(s={effect:s});var o=s?!0===s||"number"==typeof s?n:s.effect||n:t;"number"==typeof(s=s||{})&&(s={duration:s}),a=!e.isEmptyObject(s),s.complete=r,s.delay&&i.delay(s.delay),a&&e.effects&&e.effects.effect[o]?i[t](s):o!==t&&i[o]?i[o](s.duration,s.easing,r):i.queue((function(n){e(this)[t](),r&&r.call(i[0]),n()}))}})),e.widget,function(){var t,n=Math.max,i=Math.abs,s=/left|center|right/,r=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,o=/^\w+/,l=/%$/,u=e.fn.position;function d(e,t,n){return[parseFloat(e[0])*(l.test(e[0])?t/100:1),parseFloat(e[1])*(l.test(e[1])?n/100:1)]}function c(t,n){return parseInt(e.css(t,n),10)||0}function h(t){var n=t[0];return 9===n.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.position={scrollbarWidth:function(){if(void 0!==t)return t;var n,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=s.children()[0];return e("body").append(s),n=r.offsetWidth,s.css("overflow","scroll"),n===(i=r.offsetWidth)&&(i=s[0].clientWidth),s.remove(),t=n-i},getScrollInfo:function(t){var n=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),s="scroll"===n||"auto"===n&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),i=e.isWindow(n[0]),s=!!n[0]&&9===n[0].nodeType;return{element:n,isWindow:i,isDocument:s,offset:i||s?{left:0,top:0}:e(t).offset(),scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:n.outerWidth(),height:n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return u.apply(this,arguments);t=e.extend({},t);var l,p,f,m,_,g,v=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=(t.collision||"flip").split(" "),k={};return g=h(v),v[0].preventDefault&&(t.at="left top"),p=g.width,f=g.height,m=g.offset,_=e.extend({},m),e.each(["my","at"],(function(){var e,n,i=(t[this]||"").split(" ");1===i.length&&(i=s.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]),i[0]=s.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",e=a.exec(i[0]),n=a.exec(i[1]),k[this]=[e?e[0]:0,n?n[0]:0],t[this]=[o.exec(i[0])[0],o.exec(i[1])[0]]})),1===w.length&&(w[1]=w[0]),"right"===t.at[0]?_.left+=p:"center"===t.at[0]&&(_.left+=p/2),"bottom"===t.at[1]?_.top+=f:"center"===t.at[1]&&(_.top+=f/2),l=d(k.at,p,f),_.left+=l[0],_.top+=l[1],this.each((function(){var s,r,a=e(this),o=a.outerWidth(),u=a.outerHeight(),h=c(this,"marginLeft"),g=c(this,"marginTop"),M=o+h+c(this,"marginRight")+b.width,L=u+g+c(this,"marginBottom")+b.height,D=e.extend({},_),T=d(k.my,a.outerWidth(),a.outerHeight());"right"===t.my[0]?D.left-=o:"center"===t.my[0]&&(D.left-=o/2),"bottom"===t.my[1]?D.top-=u:"center"===t.my[1]&&(D.top-=u/2),D.left+=T[0],D.top+=T[1],s={marginLeft:h,marginTop:g},e.each(["left","top"],(function(n,i){e.ui.position[w[n]]&&e.ui.position[w[n]][i](D,{targetWidth:p,targetHeight:f,elemWidth:o,elemHeight:u,collisionPosition:s,collisionWidth:M,collisionHeight:L,offset:[l[0]+T[0],l[1]+T[1]],my:t.my,at:t.at,within:y,elem:a})})),t.using&&(r=function(e){var s=m.left-D.left,r=s+p-o,l=m.top-D.top,d=l+f-u,c={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:a,left:D.left,top:D.top,width:o,height:u},horizontal:r<0?"left":s>0?"right":"center",vertical:d<0?"top":l>0?"bottom":"middle"};p<o&&i(s+r)<p&&(c.horizontal="center"),f<u&&i(l+d)<f&&(c.vertical="middle"),n(i(s),i(r))>n(i(l),i(d))?c.important="horizontal":c.important="vertical",t.using.call(this,e,c)}),a.offset(e.extend(D,{using:r}))}))},e.ui.position={fit:{left:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,o=e.left-t.collisionPosition.marginLeft,l=r-o,u=o+t.collisionWidth-a-r;t.collisionWidth>a?l>0&&u<=0?(i=e.left+l+t.collisionWidth-a-r,e.left+=l-i):e.left=u>0&&l<=0?r:l>u?r+a-t.collisionWidth:r:l>0?e.left+=l:u>0?e.left-=u:e.left=n(e.left-o,e.left)},top:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,o=e.top-t.collisionPosition.marginTop,l=r-o,u=o+t.collisionHeight-a-r;t.collisionHeight>a?l>0&&u<=0?(i=e.top+l+t.collisionHeight-a-r,e.top+=l-i):e.top=u>0&&l<=0?r:l>u?r+a-t.collisionHeight:r:l>0?e.top+=l:u>0?e.top-=u:e.top=n(e.top-o,e.top)}},flip:{left:function(e,t){var n,s,r=t.within,a=r.offset.left+r.scrollLeft,o=r.width,l=r.isWindow?r.scrollLeft:r.offset.left,u=e.left-t.collisionPosition.marginLeft,d=u-l,c=u+t.collisionWidth-o-l,h="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];d<0?((n=e.left+h+p+f+t.collisionWidth-o-a)<0||n<i(d))&&(e.left+=h+p+f):c>0&&((s=e.left-t.collisionPosition.marginLeft+h+p+f-l)>0||i(s)<c)&&(e.left+=h+p+f)},top:function(e,t){var n,s,r=t.within,a=r.offset.top+r.scrollTop,o=r.height,l=r.isWindow?r.scrollTop:r.offset.top,u=e.top-t.collisionPosition.marginTop,d=u-l,c=u+t.collisionHeight-o-l,h="top"===t.my[1]?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,p="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,f=-2*t.offset[1];d<0?((s=e.top+h+p+f+t.collisionHeight-o-a)<0||s<i(d))&&(e.top+=h+p+f):c>0&&((n=e.top-t.collisionPosition.marginTop+h+p+f-l)>0||i(n)<c)&&(e.top+=h+p+f)}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}}}(),e.ui.position,e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo((function(t){return function(n){return!!e.data(n,t)}})):function(t,n,i){return!!e.data(t,i[3])}}),e.fn.extend({disableSelection:(s="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(s+".ui-disableSelection",(function(e){e.preventDefault()}))}),enableSelection:function(){return this.off(".ui-disableSelection")}});var s,r,a,o,l="ui-effects-",u="ui-effects-style",d="ui-effects-animated",c=e;e.effects={effect:{}},function(e,t){var n,i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],r=e.Color=function(t,n,i,s){return new e.Color.fn.parse(t,n,i,s)},a={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},o={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},l=r.support={},u=e("<p>")[0],d=e.each;function c(e,t,n){var i=o[t.type]||{};return null==e?n||!t.def?null:t.def:(e=i.floor?~~e:parseFloat(e),isNaN(e)?t.def:i.mod?(e+i.mod)%i.mod:0>e?0:i.max<e?i.max:e)}function h(t){var i=r(),o=i._rgba=[];return t=t.toLowerCase(),d(s,(function(e,n){var s,r=n.re.exec(t),l=r&&n.parse(r),u=n.space||"rgba";if(l)return s=i[u](l),i[a[u].cache]=s[a[u].cache],o=i._rgba=s._rgba,!1})),o.length?("0,0,0,0"===o.join()&&e.extend(o,n.transparent),i):n[t]}function p(e,t,n){return 6*(n=(n+1)%1)<1?e+(t-e)*n*6:2*n<1?t:3*n<2?e+(t-e)*(2/3-n)*6:e}u.style.cssText="background-color:rgba(1,1,1,.5)",l.rgba=u.style.backgroundColor.indexOf("rgba")>-1,d(a,(function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}})),r.fn=e.extend(r.prototype,{parse:function(i,s,o,l){if(i===t)return this._rgba=[null,null,null,null],this;(i.jquery||i.nodeType)&&(i=e(i).css(s),s=t);var u=this,p=e.type(i),f=this._rgba=[];return s!==t&&(i=[i,s,o,l],p="array"),"string"===p?this.parse(h(i)||n._default):"array"===p?(d(a.rgba.props,(function(e,t){f[t.idx]=c(i[t.idx],t)})),this):"object"===p?(d(a,i instanceof r?function(e,t){i[t.cache]&&(u[t.cache]=i[t.cache].slice())}:function(t,n){var s=n.cache;d(n.props,(function(e,t){if(!u[s]&&n.to){if("alpha"===e||null==i[e])return;u[s]=n.to(u._rgba)}u[s][t.idx]=c(i[e],t,!0)})),u[s]&&e.inArray(null,u[s].slice(0,3))<0&&(u[s][3]=1,n.from&&(u._rgba=n.from(u[s])))}),this):void 0},is:function(e){var t=r(e),n=!0,i=this;return d(a,(function(e,s){var r,a=t[s.cache];return a&&(r=i[s.cache]||s.to&&s.to(i._rgba)||[],d(s.props,(function(e,t){if(null!=a[t.idx])return n=a[t.idx]===r[t.idx]}))),n})),n},_space:function(){var e=[],t=this;return d(a,(function(n,i){t[i.cache]&&e.push(n)})),e.pop()},transition:function(e,t){var n=r(e),i=n._space(),s=a[i],l=0===this.alpha()?r("transparent"):this,u=l[s.cache]||s.to(l._rgba),h=u.slice();return n=n[s.cache],d(s.props,(function(e,i){var s=i.idx,r=u[s],a=n[s],l=o[i.type]||{};null!==a&&(null===r?h[s]=a:(l.mod&&(a-r>l.mod/2?r+=l.mod:r-a>l.mod/2&&(r-=l.mod)),h[s]=c((a-r)*t+r,i)))})),this[i](h)},blend:function(t){if(1===this._rgba[3])return this;var n=this._rgba.slice(),i=n.pop(),s=r(t)._rgba;return r(e.map(n,(function(e,t){return(1-i)*s[t]+i*e})))},toRgbaString:function(){var t="rgba(",n=e.map(this._rgba,(function(e,t){return null==e?t>2?1:0:e}));return 1===n[3]&&(n.pop(),t="rgb("),t+n.join()+")"},toHslaString:function(){var t="hsla(",n=e.map(this.hsla(),(function(e,t){return null==e&&(e=t>2?1:0),t&&t<3&&(e=Math.round(100*e)+"%"),e}));return 1===n[3]&&(n.pop(),t="hsl("),t+n.join()+")"},toHexString:function(t){var n=this._rgba.slice(),i=n.pop();return t&&n.push(~~(255*i)),"#"+e.map(n,(function(e){return 1===(e=(e||0).toString(16)).length?"0"+e:e})).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),r.fn.parse.prototype=r.fn,a.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,n,i=e[0]/255,s=e[1]/255,r=e[2]/255,a=e[3],o=Math.max(i,s,r),l=Math.min(i,s,r),u=o-l,d=o+l,c=.5*d;return t=l===o?0:i===o?60*(s-r)/u+360:s===o?60*(r-i)/u+120:60*(i-s)/u+240,n=0===u?0:c<=.5?u/d:u/(2-d),[Math.round(t)%360,n,c,null==a?1:a]},a.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,n=e[1],i=e[2],s=e[3],r=i<=.5?i*(1+n):i+n-i*n,a=2*i-r;return[Math.round(255*p(a,r,t+1/3)),Math.round(255*p(a,r,t)),Math.round(255*p(a,r,t-1/3)),s]},d(a,(function(n,s){var a=s.props,o=s.cache,l=s.to,u=s.from;r.fn[n]=function(n){if(l&&!this[o]&&(this[o]=l(this._rgba)),n===t)return this[o].slice();var i,s=e.type(n),h="array"===s||"object"===s?n:arguments,p=this[o].slice();return d(a,(function(e,t){var n=h["object"===s?e:t.idx];null==n&&(n=p[t.idx]),p[t.idx]=c(n,t)})),u?((i=r(u(p)))[o]=p,i):r(p)},d(a,(function(t,s){r.fn[t]||(r.fn[t]=function(r){var a,o=e.type(r),l="alpha"===t?this._hsla?"hsla":"rgba":n,u=this[l](),d=u[s.idx];return"undefined"===o?d:("function"===o&&(r=r.call(this,d),o=e.type(r)),null==r&&s.empty?this:("string"===o&&(a=i.exec(r))&&(r=d+parseFloat(a[2])*("+"===a[1]?1:-1)),u[s.idx]=r,this[l](u)))})}))})),r.hook=function(t){var n=t.split(" ");d(n,(function(t,n){e.cssHooks[n]={set:function(t,i){var s,a,o="";if("transparent"!==i&&("string"!==e.type(i)||(s=h(i)))){if(i=r(s||i),!l.rgba&&1!==i._rgba[3]){for(a="backgroundColor"===n?t.parentNode:t;(""===o||"transparent"===o)&&a&&a.style;)try{o=e.css(a,"backgroundColor"),a=a.parentNode}catch(e){}i=i.blend(o&&"transparent"!==o?o:"_default")}i=i.toRgbaString()}try{t.style[n]=i}catch(e){}}},e.fx.step[n]=function(t){t.colorInit||(t.start=r(t.elem,n),t.end=r(t.end),t.colorInit=!0),e.cssHooks[n].set(t.elem,t.start.transition(t.end,t.pos))}}))},r.hook("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor"),e.cssHooks.borderColor={expand:function(e){var t={};return d(["Top","Right","Bottom","Left"],(function(n,i){t["border"+i+"Color"]=e})),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(c),function(){var t=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function i(t){var n,i,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,r={};if(s&&s.length&&s[0]&&s[s[0]])for(i=s.length;i--;)"string"==typeof s[n=s[i]]&&(r[e.camelCase(n)]=s[n]);else for(n in s)"string"==typeof s[n]&&(r[n]=s[n]);return r}e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],(function(t,n){e.fx.step[n]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(c.style(e.elem,n,e.end),e.setAttr=!0)}})),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(s,r,a,o){var l=e.speed(r,a,o);return this.queue((function(){var r,a=e(this),o=a.attr("class")||"",u=l.children?a.find("*").addBack():a;u=u.map((function(){return{el:e(this),start:i(this)}})),(r=function(){e.each(t,(function(e,t){s[t]&&a[t+"Class"](s[t])}))})(),u=u.map((function(){return this.end=i(this.el[0]),this.diff=function(t,i){var s,r,a={};for(s in i)r=i[s],t[s]!==r&&(n[s]||!e.fx.step[s]&&isNaN(parseFloat(r))||(a[s]=r));return a}(this.start,this.end),this})),a.attr("class",o),u=u.map((function(){var t=this,n=e.Deferred(),i=e.extend({},l,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,i),n.promise()})),e.when.apply(e,u.get()).done((function(){r(),e.each(arguments,(function(){var t=this.el;e.each(this.diff,(function(e){t.css(e,"")}))})),l.complete.call(a[0])}))}))},e.fn.extend({addClass:function(t){return function(n,i,s,r){return i?e.effects.animateClass.call(this,{add:n},i,s,r):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(n,i,s,r){return arguments.length>1?e.effects.animateClass.call(this,{remove:n},i,s,r):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(n,i,s,r,a){return"boolean"==typeof i||void 0===i?s?e.effects.animateClass.call(this,i?{add:n}:{remove:n},s,r,a):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:n},i,s,r)}}(e.fn.toggleClass),switchClass:function(t,n,i,s,r){return e.effects.animateClass.call(this,{add:n,remove:t},i,s,r)}})}(),function(){function t(t,n,i,s){return e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},null==n&&(n={}),e.isFunction(n)&&(s=n,i=null,n={}),("number"==typeof n||e.fx.speeds[n])&&(s=i,i=n,n={}),e.isFunction(i)&&(s=i,i=null),n&&e.extend(t,n),i=i||n.duration,t.duration=e.fx.off?0:"number"==typeof i?i:i in e.fx.speeds?e.fx.speeds[i]:e.fx.speeds._default,t.complete=s||n.complete,t}function n(t){return!(t&&"number"!=typeof t&&!e.fx.speeds[t])||"string"==typeof t&&!e.effects.effect[t]||!!e.isFunction(t)||"object"==typeof t&&!t.effect}function i(e,t){var n=t.outerWidth(),i=t.outerHeight(),s=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/.exec(e)||["",0,n,i,0];return{top:parseFloat(s[1])||0,right:"auto"===s[2]?n:parseFloat(s[2]),bottom:"auto"===s[3]?i:parseFloat(s[3]),left:parseFloat(s[4])||0}}e.expr&&e.expr.filters&&e.expr.filters.animated&&(e.expr.filters.animated=function(t){return function(n){return!!e(n).data(d)||t(n)}}(e.expr.filters.animated)),!1!==e.uiBackCompat&&e.extend(e.effects,{save:function(e,t){for(var n=0,i=t.length;n<i;n++)null!==t[n]&&e.data(l+t[n],e[0].style[t[n]])},restore:function(e,t){for(var n,i=0,s=t.length;i<s;i++)null!==t[i]&&(n=e.data(l+t[i]),e.css(t[i],n))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),float:t.css("float")},i=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),s={width:t.width(),height:t.height()},r=document.activeElement;try{r.id}catch(e){r=document.body}return t.wrap(i),(t[0]===r||e.contains(t[0],r))&&e(r).trigger("focus"),i=t.parent(),"static"===t.css("position")?(i.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],(function(e,i){n[i]=t.css(i),isNaN(parseInt(n[i],10))&&(n[i]="auto")})),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(s),i.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).trigger("focus")),t}}),e.extend(e.effects,{version:"1.12.1",define:function(t,n,i){return i||(i=n,n="effect"),e.effects.effect[t]=i,e.effects.effect[t].mode=n,i},scaledDimensions:function(e,t,n){if(0===t)return{height:0,width:0,outerHeight:0,outerWidth:0};var i="horizontal"!==n?(t||100)/100:1,s="vertical"!==n?(t||100)/100:1;return{height:e.height()*s,width:e.width()*i,outerHeight:e.outerHeight()*s,outerWidth:e.outerWidth()*i}},clipToBox:function(e){return{width:e.clip.right-e.clip.left,height:e.clip.bottom-e.clip.top,left:e.clip.left,top:e.clip.top}},unshift:function(e,t,n){var i=e.queue();t>1&&i.splice.apply(i,[1,0].concat(i.splice(t,n))),e.dequeue()},saveStyle:function(e){e.data(u,e[0].style.cssText)},restoreStyle:function(e){e[0].style.cssText=e.data(u)||"",e.removeData(u)},mode:function(e,t){var n=e.is(":hidden");return"toggle"===t&&(t=n?"show":"hide"),(n?"hide"===t:"show"===t)&&(t="none"),t},getBaseline:function(e,t){var n,i;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":i=0;break;case"center":i=.5;break;case"right":i=1;break;default:i=e[1]/t.width}return{x:i,y:n}},createPlaceholder:function(t){var n,i=t.css("position"),s=t.position();return t.css({marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()),/^(static|relative)/.test(i)&&(i="absolute",n=e("<"+t[0].nodeName+">").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(l+"placeholder",n)),t.css({position:i,left:s.left,top:s.top}),n},removePlaceholder:function(e){var t=l+"placeholder",n=e.data(t);n&&(n.remove(),e.removeData(t))},cleanUp:function(t){e.effects.restoreStyle(t),e.effects.removePlaceholder(t)},setTransition:function(t,n,i,s){return s=s||{},e.each(n,(function(e,n){var r=t.cssUnit(n);r[0]>0&&(s[n]=r[0]*i+r[1])})),s}}),e.fn.extend({effect:function(){var n=t.apply(this,arguments),i=e.effects.effect[n.effect],s=i.mode,r=n.queue,a=r||"fx",o=n.complete,l=n.mode,u=[],c=function(t){var n=e(this),i=e.effects.mode(n,l)||s;n.data(d,!0),u.push(i),s&&("show"===i||i===s&&"hide"===i)&&n.show(),s&&"none"===i||e.effects.saveStyle(n),e.isFunction(t)&&t()};if(e.fx.off||!i)return l?this[l](n.duration,o):this.each((function(){o&&o.call(this)}));function h(t){var r=e(this);function a(){e.isFunction(o)&&o.call(r[0]),e.isFunction(t)&&t()}n.mode=u.shift(),!1===e.uiBackCompat||s?"none"===n.mode?(r[l](),a()):i.call(r[0],n,(function(){r.removeData(d),e.effects.cleanUp(r),"hide"===n.mode&&r.hide(),a()})):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):i.call(r[0],n,a)}return!1===r?this.each(c).each(h):this.queue(a,c).queue(a,h)},show:function(e){return function(i){if(n(i))return e.apply(this,arguments);var s=t.apply(this,arguments);return s.mode="show",this.effect.call(this,s)}}(e.fn.show),hide:function(e){return function(i){if(n(i))return e.apply(this,arguments);var s=t.apply(this,arguments);return s.mode="hide",this.effect.call(this,s)}}(e.fn.hide),toggle:function(e){return function(i){if(n(i)||"boolean"==typeof i)return e.apply(this,arguments);var s=t.apply(this,arguments);return s.mode="toggle",this.effect.call(this,s)}}(e.fn.toggle),cssUnit:function(t){var n=this.css(t),i=[];return e.each(["em","px","%","pt"],(function(e,t){n.indexOf(t)>0&&(i=[parseFloat(n),t])})),i},cssClip:function(e){return e?this.css("clip","rect("+e.top+"px "+e.right+"px "+e.bottom+"px "+e.left+"px)"):i(this.css("clip"),this)},transfer:function(t,n){var i=e(this),s=e(t.to),r="fixed"===s.css("position"),a=e("body"),o=r?a.scrollTop():0,l=r?a.scrollLeft():0,u=s.offset(),d={top:u.top-o,left:u.left-l,height:s.innerHeight(),width:s.innerWidth()},c=i.offset(),h=e("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(t.className).css({top:c.top-o,left:c.left-l,height:i.innerHeight(),width:i.innerWidth(),position:r?"fixed":"absolute"}).animate(d,t.duration,t.easing,(function(){h.remove(),e.isFunction(n)&&n()}))}}),e.fx.step.clip=function(t){t.clipInit||(t.start=e(t.elem).cssClip(),"string"==typeof t.end&&(t.end=i(t.end,t.elem)),t.clipInit=!0),e(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})}}(),r={},e.each(["Quad","Cubic","Quart","Quint","Expo"],(function(e,t){r[t]=function(t){return Math.pow(t,e+2)}})),e.extend(r,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(r,(function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(2*e)/2:1-n(-2*e+2)/2}})),e.effects,e.effects.define("blind","hide",(function(t,n){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=e(this),r=t.direction||"up",a=s.cssClip(),o={clip:e.extend({},a)},l=e.effects.createPlaceholder(s);o.clip[i[r][0]]=o.clip[i[r][1]],"show"===t.mode&&(s.cssClip(o.clip),l&&l.css(e.effects.clipToBox(o)),o.clip=a),l&&l.animate(e.effects.clipToBox(o),t.duration,t.easing),s.animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),e.effects.define("bounce",(function(t,n){var i,s,r,a=e(this),o=t.mode,l="hide"===o,u="show"===o,d=t.direction||"up",c=t.distance,h=t.times||5,p=2*h+(u||l?1:0),f=t.duration/p,m=t.easing,_="up"===d||"down"===d?"top":"left",g="up"===d||"left"===d,v=0,y=a.queue().length;for(e.effects.createPlaceholder(a),r=a.css(_),c||(c=a["top"===_?"outerHeight":"outerWidth"]()/3),u&&((s={opacity:1})[_]=r,a.css("opacity",0).css(_,g?2*-c:2*c).animate(s,f,m)),l&&(c/=Math.pow(2,h-1)),(s={})[_]=r;v<h;v++)(i={})[_]=(g?"-=":"+=")+c,a.animate(i,f,m).animate(s,f,m),c=l?2*c:c/2;l&&((i={opacity:0})[_]=(g?"-=":"+=")+c,a.animate(i,f,m)),a.queue(n),e.effects.unshift(a,y,p+1)})),e.effects.define("clip","hide",(function(t,n){var i,s={},r=e(this),a=t.direction||"vertical",o="both"===a,l=o||"horizontal"===a,u=o||"vertical"===a;i=r.cssClip(),s.clip={top:u?(i.bottom-i.top)/2:i.top,right:l?(i.right-i.left)/2:i.right,bottom:u?(i.bottom-i.top)/2:i.bottom,left:l?(i.right-i.left)/2:i.left},e.effects.createPlaceholder(r),"show"===t.mode&&(r.cssClip(s.clip),s.clip=i),r.animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),e.effects.define("drop","hide",(function(t,n){var i,s=e(this),r="show"===t.mode,a=t.direction||"left",o="up"===a||"down"===a?"top":"left",l="up"===a||"left"===a?"-=":"+=",u="+="===l?"-=":"+=",d={opacity:0};e.effects.createPlaceholder(s),i=t.distance||s["top"===o?"outerHeight":"outerWidth"](!0)/2,d[o]=l+i,r&&(s.css(d),d[o]=u+i,d.opacity=1),s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),e.effects.define("explode","hide",(function(t,n){var i,s,r,a,o,l,u=t.pieces?Math.round(Math.sqrt(t.pieces)):3,d=u,c=e(this),h="show"===t.mode,p=c.show().css("visibility","hidden").offset(),f=Math.ceil(c.outerWidth()/d),m=Math.ceil(c.outerHeight()/u),_=[];function g(){_.push(this),_.length===u*d&&(c.css({visibility:"visible"}),e(_).remove(),n())}for(i=0;i<u;i++)for(a=p.top+i*m,l=i-(u-1)/2,s=0;s<d;s++)r=p.left+s*f,o=s-(d-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-s*f,top:-i*m}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:m,left:r+(h?o*f:0),top:a+(h?l*m:0),opacity:h?0:1}).animate({left:r+(h?0:o*f),top:a+(h?0:l*m),opacity:h?1:0},t.duration||500,t.easing,g)})),e.effects.define("fade","toggle",(function(t,n){var i="show"===t.mode;e(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),e.effects.define("fold","hide",(function(t,n){var i=e(this),s=t.mode,r="show"===s,a="hide"===s,o=t.size||15,l=/([0-9]+)%/.exec(o),u=t.horizFirst?["right","bottom"]:["bottom","right"],d=t.duration/2,c=e.effects.createPlaceholder(i),h=i.cssClip(),p={clip:e.extend({},h)},f={clip:e.extend({},h)},m=[h[u[0]],h[u[1]]],_=i.queue().length;l&&(o=parseInt(l[1],10)/100*m[a?0:1]),p.clip[u[0]]=o,f.clip[u[0]]=o,f.clip[u[1]]=0,r&&(i.cssClip(f.clip),c&&c.css(e.effects.clipToBox(f)),f.clip=h),i.queue((function(n){c&&c.animate(e.effects.clipToBox(p),d,t.easing).animate(e.effects.clipToBox(f),d,t.easing),n()})).animate(p,d,t.easing).animate(f,d,t.easing).queue(n),e.effects.unshift(i,_,4)})),e.effects.define("highlight","show",(function(t,n){var i=e(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),e.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),e.effects.define("size",(function(t,n){var i,s,r,a=e(this),o=["fontSize"],l=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],u=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],d=t.mode,c="effect"!==d,h=t.scale||"both",p=t.origin||["middle","center"],f=a.css("position"),m=a.position(),_=e.effects.scaledDimensions(a),g=t.from||_,v=t.to||e.effects.scaledDimensions(a,0);e.effects.createPlaceholder(a),"show"===d&&(r=g,g=v,v=r),s={from:{y:g.height/_.height,x:g.width/_.width},to:{y:v.height/_.height,x:v.width/_.width}},"box"!==h&&"both"!==h||(s.from.y!==s.to.y&&(g=e.effects.setTransition(a,l,s.from.y,g),v=e.effects.setTransition(a,l,s.to.y,v)),s.from.x!==s.to.x&&(g=e.effects.setTransition(a,u,s.from.x,g),v=e.effects.setTransition(a,u,s.to.x,v))),"content"!==h&&"both"!==h||s.from.y!==s.to.y&&(g=e.effects.setTransition(a,o,s.from.y,g),v=e.effects.setTransition(a,o,s.to.y,v)),p&&(i=e.effects.getBaseline(p,_),g.top=(_.outerHeight-g.outerHeight)*i.y+m.top,g.left=(_.outerWidth-g.outerWidth)*i.x+m.left,v.top=(_.outerHeight-v.outerHeight)*i.y+m.top,v.left=(_.outerWidth-v.outerWidth)*i.x+m.left),a.css(g),"content"!==h&&"both"!==h||(l=l.concat(["marginTop","marginBottom"]).concat(o),u=u.concat(["marginLeft","marginRight"]),a.find("*[width]").each((function(){var n=e(this),i=e.effects.scaledDimensions(n),r={height:i.height*s.from.y,width:i.width*s.from.x,outerHeight:i.outerHeight*s.from.y,outerWidth:i.outerWidth*s.from.x},a={height:i.height*s.to.y,width:i.width*s.to.x,outerHeight:i.height*s.to.y,outerWidth:i.width*s.to.x};s.from.y!==s.to.y&&(r=e.effects.setTransition(n,l,s.from.y,r),a=e.effects.setTransition(n,l,s.to.y,a)),s.from.x!==s.to.x&&(r=e.effects.setTransition(n,u,s.from.x,r),a=e.effects.setTransition(n,u,s.to.x,a)),c&&e.effects.saveStyle(n),n.css(r),n.animate(a,t.duration,t.easing,(function(){c&&e.effects.restoreStyle(n)}))}))),a.animate(v,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){var t=a.offset();0===v.opacity&&a.css("opacity",g.opacity),c||(a.css("position","static"===f?"relative":f).offset(t),e.effects.saveStyle(a)),n()}})})),e.effects.define("scale",(function(t,n){var i=e(this),s=t.mode,r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),a=e.extend(!0,{from:e.effects.scaledDimensions(i),to:e.effects.scaledDimensions(i,r,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(a.from.opacity=1,a.to.opacity=0),e.effects.effect.size.call(this,a,n)})),e.effects.define("puff","hide",(function(t,n){var i=e.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});e.effects.effect.scale.call(this,i,n)})),e.effects.define("pulsate","show",(function(t,n){var i=e(this),s=t.mode,r="show"===s,a=r||"hide"===s,o=2*(t.times||5)+(a?1:0),l=t.duration/o,u=0,d=1,c=i.queue().length;for(!r&&i.is(":visible")||(i.css("opacity",0).show(),u=1);d<o;d++)i.animate({opacity:u},l,t.easing),u=1-u;i.animate({opacity:u},l,t.easing),i.queue(n),e.effects.unshift(i,c,o+1)})),e.effects.define("shake",(function(t,n){var i=1,s=e(this),r=t.direction||"left",a=t.distance||20,o=t.times||3,l=2*o+1,u=Math.round(t.duration/l),d="up"===r||"down"===r?"top":"left",c="up"===r||"left"===r,h={},p={},f={},m=s.queue().length;for(e.effects.createPlaceholder(s),h[d]=(c?"-=":"+=")+a,p[d]=(c?"+=":"-=")+2*a,f[d]=(c?"-=":"+=")+2*a,s.animate(h,u,t.easing);i<o;i++)s.animate(p,u,t.easing).animate(f,u,t.easing);s.animate(p,u,t.easing).animate(h,u/2,t.easing).queue(n),e.effects.unshift(s,m,l+1)})),e.effects.define("slide","show",(function(t,n){var i,s,r=e(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},o=t.mode,l=t.direction||"left",u="up"===l||"down"===l?"top":"left",d="up"===l||"left"===l,c=t.distance||r["top"===u?"outerHeight":"outerWidth"](!0),h={};e.effects.createPlaceholder(r),i=r.cssClip(),s=r.position()[u],h[u]=(d?-1:1)*c+s,h.clip=r.cssClip(),h.clip[a[l][1]]=h.clip[a[l][0]],"show"===o&&(r.cssClip(h.clip),r.css(u,h[u]),h.clip=i,h[u]=s),r.animate(h,{queue:!1,duration:t.duration,easing:t.easing,complete:n})})),!1!==e.uiBackCompat&&e.effects.define("transfer",(function(t,n){e(this).transfer(t,n)})),e.ui.focusable=function(t,n){var i,s,r,a,o,l=t.nodeName.toLowerCase();return"area"===l?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(r=e("img[usemap='#"+s+"']")).length>0&&r.is(":visible")):(/^(input|select|textarea|button|object)$/.test(l)?(a=!t.disabled)&&(o=e(t).closest("fieldset")[0])&&(a=!o.disabled):a="a"===l&&t.href||n,a&&e(t).is(":visible")&&function(e){for(var t=e.css("visibility");"inherit"===t;)t=(e=e.parent()).css("visibility");return"hidden"!==t}(e(t)))},e.extend(e.expr[":"],{focusable:function(t){return e.ui.focusable(t,null!=e.attr(t,"tabindex"))}}),e.ui.focusable,e.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):e(this[0].form)},e.ui.formResetMixin={_formResetHandler:function(){var t=e(this);setTimeout((function(){var n=t.data("ui-form-reset-instances");e.each(n,(function(){this.refresh()}))}))},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var e=this.form.data("ui-form-reset-instances")||[];e.length||this.form.on("reset.ui-form-reset",this._formResetHandler),e.push(this),this.form.data("ui-form-reset-instances",e)}},_unbindFormResetHandler:function(){if(this.form.length){var t=this.form.data("ui-form-reset-instances");t.splice(e.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===e.fn.jquery.substring(0,3)&&(e.each(["Width","Height"],(function(t,n){var i="Width"===n?["Left","Right"]:["Top","Bottom"],s=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};function a(t,n,s,r){return e.each(i,(function(){n-=parseFloat(e.css(t,"padding"+this))||0,s&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),r&&(n-=parseFloat(e.css(t,"margin"+this))||0)})),n}e.fn["inner"+n]=function(t){return void 0===t?r["inner"+n].call(this):this.each((function(){e(this).css(s,a(this,t)+"px")}))},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each((function(){e(this).css(s,a(this,t,!0,i)+"px")}))}})),e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},e.ui.escapeSelector=(a=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g,function(e){return e.replace(a,"\\$1")}),e.fn.labels=function(){var t,n,i,s,r;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(s=this.eq(0).parents("label"),(i=this.attr("id"))&&(r=(t=this.eq(0).parents().last()).add(t.length?t.siblings():this.siblings()),n="label[for='"+e.ui.escapeSelector(i)+"']",s=s.add(r.find(n).addBack(n))),this.pushStack(s))},e.fn.scrollParent=function(t){var n=this.css("position"),i="absolute"===n,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter((function(){var t=e(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))})).eq(0);return"fixed"!==n&&r.length?r:e(this[0].ownerDocument||document)},e.extend(e.expr[":"],{tabbable:function(t){var n=e.attr(t,"tabindex"),i=null!=n;return(!i||n>=0)&&e.ui.focusable(t,i)}}),e.fn.extend({uniqueId:(o=0,function(){return this.each((function(){this.id||(this.id="ui-id-"+ ++o)}))}),removeUniqueId:function(){return this.each((function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")}))}}),e.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t,n,i=this.options.icons;i&&(t=e("<span>"),this._addClass(t,"ui-accordion-header-icon","ui-icon "+i.header),t.prependTo(this.headers),n=this.active.children(".ui-accordion-header-icon"),this._removeClass(n,i.header)._addClass(n,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){"active"!==e?("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||!1!==this.options.active||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons())):this._activate(t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!e)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var n=e.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),r=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:r=this.headers[(s+1)%i];break;case n.LEFT:case n.UP:r=this.headers[(s-1+i)%i];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:r=this.headers[0];break;case n.END:r=this.headers[i-1]}r&&(e(t.target).attr("tabIndex",-1),e(r).attr("tabIndex",0),e(r).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=e()):!1===t.active?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,n=this.options,i=n.heightStyle,s=this.element.parent();this.active=this._findActive(n.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each((function(){var t=e(this),n=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",n)})).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(n.event),"fill"===i?(t=s.height(),this.element.siblings(":visible").each((function(){var n=e(this),i=n.css("position");"absolute"!==i&&"fixed"!==i&&(t-=n.outerHeight(!0))})),this.headers.each((function(){t-=e(this).outerHeight(!0)})),this.headers.next().each((function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))})).css("overflow","auto")):"auto"===i&&(t=0,this.headers.next().each((function(){var n=e(this).is(":visible");n||e(this).show(),t=Math.max(t,e(this).css("height","").height()),n||e(this).hide()})).height(t))},_activate:function(t){var n=this._findActive(t)[0];n!==this.active[0]&&(n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var n={keydown:"_keydown"};t&&e.each(t.split(" "),(function(e,t){n[t]="_eventHandler"})),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var n,i,s=this.options,r=this.active,a=e(t.currentTarget),o=a[0]===r[0],l=o&&s.collapsible,u=l?e():a.next(),d=r.next(),c={oldHeader:r,oldPanel:d,newHeader:l?e():a,newPanel:u};t.preventDefault(),o&&!s.collapsible||!1===this._trigger("beforeActivate",t,c)||(s.active=!l&&this.headers.index(a),this.active=o?e():a,this._toggle(c),this._removeClass(r,"ui-accordion-header-active","ui-state-active"),s.icons&&(n=r.children(".ui-accordion-header-icon"),this._removeClass(n,null,s.icons.activeHeader)._addClass(n,null,s.icons.header)),o||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),s.icons&&(i=a.children(".ui-accordion-header-icon"),this._removeClass(i,null,s.icons.header)._addClass(i,null,s.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(t){var n=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=i,this.options.animate?this._animate(n,i,t):(i.hide(),n.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):n.length&&this.headers.filter((function(){return 0===parseInt(e(this).attr("tabIndex"),10)})).attr("tabIndex",-1),n.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,n){var i,s,r,a=this,o=0,l=e.css("box-sizing"),u=e.length&&(!t.length||e.index()<t.index()),d=this.options.animate||{},c=u&&d.down||d,h=function(){a._toggleComplete(n)};return"number"==typeof c&&(r=c),"string"==typeof c&&(s=c),s=s||c.easing||d.easing,r=r||c.duration||d.duration,t.length?e.length?(i=e.show().outerHeight(),t.animate(this.hideProps,{duration:r,easing:s,step:function(e,t){t.now=Math.round(e)}}),void e.hide().animate(this.showProps,{duration:r,easing:s,complete:h,step:function(e,n){n.now=Math.round(e),"height"!==n.prop?"content-box"===l&&(o+=n.now):"content"!==a.options.heightStyle&&(n.now=Math.round(i-t.outerHeight()-o),o=0)}})):t.animate(this.hideProps,r,s,h):e.animate(this.showProps,r,s,h)},_toggleComplete:function(e){var t=e.oldPanel,n=t.prev();this._removeClass(t,"ui-accordion-content-active"),this._removeClass(n,"ui-accordion-header-active")._addClass(n,"ui-accordion-header-collapsed"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.ui.safeActiveElement=function(e){var t;try{t=e.activeElement}catch(n){t=e.body}return t||(t=e.body),t.nodeName||(t=e.body),t},e.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var n=e(t.target),i=e(e.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),n.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var n=e(t.target).closest(".ui-menu-item"),i=e(t.currentTarget);n[0]===i[0]&&(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,n)},blur:function(t){this._delay((function(){!e.contains(this.element[0],e.ui.safeActiveElement(this.document[0]))&&this.collapseAll(t)}))},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each((function(){var t=e(this);t.data("ui-menu-submenu-caret")&&t.remove()}))},_keydown:function(t){var n,i,s,r,a=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:a=!1,i=this.previousFilter||"",r=!1,s=t.keyCode>=96&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),s===i?r=!0:s=i+s,n=this._filterMenuItems(s),(n=r&&-1!==n.index(this.active.next())?this.active.nextAll(".ui-menu-item"):n).length||(s=String.fromCharCode(t.keyCode),n=this._filterMenuItems(s)),n.length?(this.focus(t,n),this.previousFilter=s,this.filterTimer=this._delay((function(){delete this.previousFilter}),1e3)):delete this.previousFilter}a&&t.preventDefault()},_activate:function(e){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n,i,s,r=this,a=this.options.icons.submenu,o=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),n=o.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each((function(){var t=e(this),n=t.prev(),i=e("<span>").data("ui-menu-submenu-caret",!0);r._addClass(i,"ui-menu-icon","ui-icon "+a),n.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",n.attr("id"))})),this._addClass(n,"ui-menu","ui-widget ui-widget-content ui-front"),(t=o.add(this.element).find(this.options.items)).not(".ui-menu-item").each((function(){var t=e(this);r._isDivider(t)&&r._addClass(t,"ui-menu-divider","ui-widget-content")})),s=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(s,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){if("icons"===e){var n=this.element.find(".ui-menu-icon");this._removeClass(n,null,this.options.icons.submenu)._addClass(n,null,t.submenu)}this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",String(e)),this._toggleClass(null,"ui-state-disabled",!!e)},focus:function(e,t){var n,i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),s=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay((function(){this._close()}),this.delay),(n=t.children(".ui-menu")).length&&e&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,i,s,r,a,o;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,s=t.offset().top-this.activeMenu.offset().top-n-i,r=this.activeMenu.scrollTop(),a=this.activeMenu.height(),o=t.outerHeight(),s<0?this.activeMenu.scrollTop(r+s):s+o>a&&this.activeMenu.scrollTop(r+s-a+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",e,{item:this.active}),this.active=null)},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay((function(){this._close(),this._open(e)}),this.delay))},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay((function(){var i=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));i.length||(i=this.element),this._close(i),this.blur(t),this._removeClass(i.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=i}),this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay((function(){this.focus(e,t)})))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var i;this.active&&(i="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),i&&i.length&&this.active||(i=this.activeMenu.find(this.options.items)[t]()),this.focus(n,i)},nextPage:function(t){var n,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.nextAll(".ui-menu-item").each((function(){return(n=e(this)).offset().top-i-s<0})),this.focus(t,n)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var n,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.height(),this.active.prevAll(".ui-menu-item").each((function(){return(n=e(this)).offset().top-i+s>0})),this.focus(t,n)):this.focus(t,this.activeMenu.find(this.options.items).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)},_filterMenuItems:function(t){var n=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),i=new RegExp("^"+n,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter((function(){return i.test(e.trim(e(this).children(".ui-menu-item-wrapper").text()))}))}}),e.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,n,i,s=this.element[0].nodeName.toLowerCase(),r="textarea"===s,a="input"===s;this.isMultiLine=r||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[r||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))return t=!0,i=!0,void(n=!0);t=!1,i=!1,n=!1;var r=e.ui.keyCode;switch(s.keyCode){case r.PAGE_UP:t=!0,this._move("previousPage",s);break;case r.PAGE_DOWN:t=!0,this._move("nextPage",s);break;case r.UP:t=!0,this._keyEvent("previous",s);break;case r.DOWN:t=!0,this._keyEvent("next",s);break;case r.ENTER:this.menu.active&&(t=!0,s.preventDefault(),this.menu.select(s));break;case r.TAB:this.menu.active&&this.menu.select(s);break;case r.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(s),s.preventDefault());break;default:n=!0,this._searchTimeout(s)}},keypress:function(i){if(t)return t=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||i.preventDefault());if(!n){var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:this._move("previousPage",i);break;case s.PAGE_DOWN:this._move("nextPage",i);break;case s.UP:this._keyEvent("previous",i);break;case s.DOWN:this._keyEvent("next",i)}}},input:function(e){if(i)return i=!1,void e.preventDefault();this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(e),this._change(e))}}),this._initSource(),this.menu=e("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay((function(){delete this.cancelBlur,this.element[0]!==e.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")}))},menufocus:function(t,n){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",(function(){e(t.target).trigger(t.originalEvent)}));s=n.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=n.item.attr("aria-label")||s.value)&&e.trim(i).length&&(this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))},menuselect:function(t,n){var i=n.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==e.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay((function(){this.previous=s,this.selectedItem=i}))),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=e("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var n=this.menu.element[0];return t.target===this.element[0]||t.target===n||e.contains(n,t.target)},_closeOnClickOutside:function(e){this._isEventTargetInWidget(e)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,n,i=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,i){i(e.ui.autocomplete.filter(t,n.term))}):"string"==typeof this.options.source?(n=this.options.source,this.source=function(t,s){i.xhr&&i.xhr.abort(),i.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){s(e)},error:function(){s([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay((function(){var t=this.term===this._value(),n=this.menu.element.is(":visible"),i=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;t&&(!t||n||i)||(this.selectedItem=null,this.search(null,e))}),this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):!1!==this._trigger("search",t)?this._search(e):void 0},_search:function(e){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy((function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}),this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,(function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})}))},_suggest:function(t){var n=this.menu.element.empty();this._renderMenu(n,t),this.isNewMenu=!0,this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var i=this;e.each(n,(function(e,n){i._renderItemData(t,n)}))},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<div>").text(n.label)).appendTo(t)},_move:function(e,t){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[e](t);this.search(null,t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(e,t),t.preventDefault())},_isContentEditable:function(e){if(!e.length)return!1;var t=e.prop("contentEditable");return"inherit"===t?this._isContentEditable(e.parent()):"true"===t}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var i=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,(function(e){return i.test(e.label||e.value||e)}))}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var n;this._superApply(arguments),this.options.disabled||this.cancelSearch||(n=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(n).appendTo(this.liveRegion))}}),e.ui.autocomplete;var h,p=/ui-corner-([a-z]){2,6}/g;function f(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=m(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function m(t){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.on("mouseout",n,(function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")})).on("mouseover",n,_)}function _(){e.datepicker._isDisabledDatepicker(h.inline?h.dpDiv.parent()[0]:h.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function g(t,n){for(var i in e.extend(t,n),n)null==n[i]&&(t[i]=n[i]);return t}e.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var t=this,n=[];e.each(this.options.items,(function(i,s){var r,a={};if(s)return"controlgroupLabel"===i?((r=t.element.find(s)).each((function(){var t=e(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")})),t._addClass(r,null,"ui-widget ui-widget-content ui-state-default"),void(n=n.concat(r.get()))):void(e.fn[i]&&(a=t["_"+i+"Options"]?t["_"+i+"Options"]("middle"):{classes:{}},t.element.find(s).each((function(){var s=e(this),r=s[i]("instance"),o=e.widget.extend({},a);if("button"!==i||!s.parent(".ui-spinner").length){r||(r=s[i]()[i]("instance")),r&&(o.classes=t._resolveClassesValues(o.classes,r)),s[i](o);var l=s[i]("widget");e.data(l[0],"ui-controlgroup-data",r||s[i]("instance")),n.push(l[0])}}))))})),this.childWidgets=e(e.unique(n)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(t){this.childWidgets.each((function(){var n=e(this).data("ui-controlgroup-data");n&&n[t]&&n[t]()}))},_updateCornerClass:function(e,t){var n=this._buildSimpleOptions(t,"label").classes.label;this._removeClass(e,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(e,null,n)},_buildSimpleOptions:function(e,t){var n="vertical"===this.options.direction,i={classes:{}};return i.classes[t]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[e],i},_spinnerOptions:function(e){var t=this._buildSimpleOptions(e,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(e){return this._buildSimpleOptions(e,"ui-button")},_checkboxradioOptions:function(e){return this._buildSimpleOptions(e,"ui-checkboxradio-label")},_selectmenuOptions:function(e){var t="vertical"===this.options.direction;return{width:!!t&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(t?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(t?"top":"left")},last:{"ui-selectmenu-button-open":t?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(t?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[e]}},_resolveClassesValues:function(t,n){var i={};return e.each(t,(function(s){var r=n.options.classes[s]||"";r=e.trim(r.replace(p,"")),i[s]=(r+" "+t[s]).replace(/\s+/g," ")})),i},_setOption:function(e,t){"direction"===e&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(e,t),"disabled"!==e?this.refresh():this._callChildMethod(t?"disable":"enable")},refresh:function(){var t,n=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),t=this.childWidgets,this.options.onlyVisible&&(t=t.filter(":visible")),t.length&&(e.each(["first","last"],(function(e,i){var s=t[i]().data("ui-controlgroup-data");if(s&&n["_"+s.widgetName+"Options"]){var r=n["_"+s.widgetName+"Options"](1===t.length?"only":i);r.classes=n._resolveClassesValues(r.classes,s),s.element[s.widgetName](r)}else n._updateCornerClass(t[i](),i)})),this._callChildMethod("refresh"))}}),e.widget("ui.checkboxradio",[e.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,n,i=this,s=this._super()||{};return this._readType(),n=this.element.labels(),this.label=e(n[n.length-1]),this.label.length||e.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each((function(){i.originalLabel+=3===this.nodeType?e(this).text():this.outerHTML})),this.originalLabel&&(s.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(s.disabled=t),s},_create:function(){var e=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),e&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||e.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,n="input[name='"+e.ui.escapeSelector(t)+"']";return t?(this.form.length?e(this.form[0].elements).filter(n):e(n).filter((function(){return 0===e(this).form().length}))).not(this.element):e([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each((function(){var t=e(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")}))},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(e,t){if("label"!==e||t){if(this._super(e,t),"disabled"===e)return this._toggleClass(this.label,null,"ui-state-disabled",t),void(this.element[0].disabled=t);this.refresh()}},_updateIcon:function(t){var n="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=e("<span>"),this.iconSpace=e("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(n+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):n+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",n),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var e=this.label.contents().not(this.element[0]);this.icon&&(e=e.not(this.icon[0])),this.iconSpace&&(e=e.not(this.iconSpace[0])),e.remove(),this.label.append(this.options.label)},refresh:function(){var e=this.element[0].checked,t=this.element[0].disabled;this._updateIcon(e),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),null!==this.options.label&&this._updateLabel(),t!==this.options.disabled&&this._setOptions({disabled:t})}}]),e.ui.checkboxradio,e.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var e,t=this._super()||{};return this.isInput=this.element.is("input"),null!=(e=this.element[0].disabled)&&(t.disabled=e),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(t.label=this.originalLabel),t},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(t){t.keyCode===e.ui.keyCode.SPACE&&(t.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(t,n){var i="iconPosition"!==t,s=i?this.options.iconPosition:n,r="top"===s||"bottom"===s;this.icon?i&&this._removeClass(this.icon,null,this.options.icon):(this.icon=e("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),i&&this._addClass(this.icon,null,n),this._attachIcon(s),r?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=e("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(e){this.icon[/^(?:end|bottom)/.test(e)?"before":"after"](this.iconSpace)},_attachIcon:function(e){this.element[/^(?:end|bottom)/.test(e)?"append":"prepend"](this.icon)},_setOptions:function(e){var t=void 0===e.showLabel?this.options.showLabel:e.showLabel,n=void 0===e.icon?this.options.icon:e.icon;t||n||(e.showLabel=!0),this._super(e)},_setOption:function(e,t){"icon"===e&&(t?this._updateIcon(e,t):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===e&&this._updateIcon(e,t),"showLabel"===e&&(this._toggleClass("ui-button-icon-only",null,!t),this._updateTooltip()),"label"===e&&(this.isInput?this.element.val(t):(this.element.html(t),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(e,t),"disabled"===e&&(this._toggleClass(null,"ui-state-disabled",t),this.element[0].disabled=t,t&&this.element.blur())},refresh:function(){var e=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOptions({disabled:e}),this._updateTooltip()}}),!1!==e.uiBackCompat&&(e.widget("ui.button",e.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(e,t){"text"!==e?("showLabel"===e&&(this.options.text=t),"icon"===e&&(this.options.icons.primary=t),"icons"===e&&(t.primary?(this._super("icon",t.primary),this._super("iconPosition","beginning")):t.secondary&&(this._super("icon",t.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",t)}}),e.fn.button=function(t){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?t.apply(this,arguments):(e.ui.checkboxradio||e.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(e.fn.button),e.fn.buttonset=function(){return e.ui.controlgroup||e.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.12.1"}}),e.extend(f.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return g(this._defaults,e||{}),this},_attachDatepicker:function(t,n){var i,s,r;s="div"===(i=t.nodeName.toLowerCase())||"span"===i,t.id||(this.uuid+=1,t.id="dp"+this.uuid),(r=this._newInst(e(t),s)).settings=e.extend({},n||{}),"input"===i?this._connectDatepicker(t,r):s&&this._inlineDatepicker(t,r)},_newInst:function(t,n){return{id:t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:n,dpDiv:n?m(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,n){var i=e(t);n.append=e([]),n.trigger=e([]),i.hasClass(this.markerClassName)||(this._attachments(i,n),i.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(n),e.data(t,"datepicker",n),n.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,n){var i,s,r,a=this._get(n,"appendText"),o=this._get(n,"isRTL");n.append&&n.append.remove(),a&&(n.append=e("<span class='"+this._appendClass+"'>"+a+"</span>"),t[o?"before":"after"](n.append)),t.off("focus",this._showDatepicker),n.trigger&&n.trigger.remove(),"focus"!==(i=this._get(n,"showOn"))&&"both"!==i||t.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(s=this._get(n,"buttonText"),r=this._get(n,"buttonImage"),n.trigger=e(this._get(n,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:r,alt:s,title:s}):e("<button type='button'></button>").addClass(this._triggerClass).html(r?e("<img/>").attr({src:r,alt:s,title:s}):s)),t[o?"before":"after"](n.trigger),n.trigger.on("click",(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1})))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,n,i,s,r=new Date(2009,11,20),a=this._get(e,"dateFormat");a.match(/[DM]/)&&(t=function(e){for(n=0,i=0,s=0;s<e.length;s++)e[s].length>n&&(n=e[s].length,i=s);return i},r.setMonth(t(this._get(e,a.match(/MM/)?"monthNames":"monthNamesShort"))),r.setDate(t(this._get(e,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-r.getDay())),e.input.attr("size",this._formatDate(e,r).length)}},_inlineDatepicker:function(t,n){var i=e(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(n.dpDiv),e.data(t,"datepicker",n),this._setDate(n,this._getDefaultDate(n),!0),this._updateDatepicker(n),this._updateAlternate(n),n.settings.disabled&&this._disableDatepicker(t),n.dpDiv.css("display","block"))},_dialogDatepicker:function(t,n,i,s,r){var a,o,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+a+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),e("body").append(this._dialogInput),(c=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},e.data(this._dialogInput[0],"datepicker",c)),g(c.settings,s||{}),n=n&&n.constructor===Date?this._formatDate(c,n):n,this._dialogInput.val(n),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(o=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[o/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var n,i=e(t),s=e.data(t,"datepicker");i.hasClass(this.markerClassName)&&(n=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===n?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==n&&"span"!==n||i.removeClass(this.markerClassName).empty(),h===s&&(h=null))},_enableDatepicker:function(t){var n,i,s=e(t),r=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&("input"===(n=t.nodeName.toLowerCase())?(t.disabled=!1,r.trigger.filter("button").each((function(){this.disabled=!1})).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==n&&"span"!==n||((i=s.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,(function(e){return e===t?null:e})))},_disableDatepicker:function(t){var n,i,s=e(t),r=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&("input"===(n=t.nodeName.toLowerCase())?(t.disabled=!0,r.trigger.filter("button").each((function(){this.disabled=!0})).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==n&&"span"!==n||((i=s.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,(function(e){return e===t?null:e})),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(e){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,n,i){var s,r,a,o,l=this._getInst(t);if(2===arguments.length&&"string"==typeof n)return"defaults"===n?e.extend({},e.datepicker._defaults):l?"all"===n?e.extend({},l.settings):this._get(l,n):null;s=n||{},"string"==typeof n&&((s={})[n]=i),l&&(this._curInst===l&&this._hideDatepicker(),r=this._getDateDatepicker(t,!0),a=this._getMinMaxDate(l,"min"),o=this._getMinMaxDate(l,"max"),g(l.settings,s),null!==a&&void 0!==s.dateFormat&&void 0===s.minDate&&(l.settings.minDate=this._formatDate(l,a)),null!==o&&void 0!==s.dateFormat&&void 0===s.maxDate&&(l.settings.maxDate=this._formatDate(l,o)),"disabled"in s&&(s.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,r),this._updateAlternate(l),this._updateDatepicker(l))},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(t){var n,i,s,r=e.datepicker._getInst(t.target),a=!0,o=r.dpDiv.is(".ui-datepicker-rtl");if(r._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),a=!1;break;case 13:return(s=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",r.dpDiv))[0]&&e.datepicker._selectDay(t.target,r.selectedMonth,r.selectedYear,s[0]),(n=e.datepicker._get(r,"onSelect"))?(i=e.datepicker._formatDate(r),n.apply(r.input?r.input[0]:null,[i,r])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(r,"stepBigMonths"):-e.datepicker._get(r,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(r,"stepBigMonths"):+e.datepicker._get(r,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),a=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),a=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),a=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(r,"stepBigMonths"):-e.datepicker._get(r,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),a=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),a=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(r,"stepBigMonths"):+e.datepicker._get(r,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),a=t.ctrlKey||t.metaKey;break;default:a=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):a=!1;a&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var n,i,s=e.datepicker._getInst(t.target);if(e.datepicker._get(s,"constrainInput"))return n=e.datepicker._possibleChars(e.datepicker._get(s,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||i<" "||!n||n.indexOf(i)>-1},_doKeyUp:function(t){var n=e.datepicker._getInst(t.target);if(n.input.val()!==n.lastVal)try{e.datepicker.parseDate(e.datepicker._get(n,"dateFormat"),n.input?n.input.val():null,e.datepicker._getFormatConfig(n))&&(e.datepicker._setDateFromField(n),e.datepicker._updateAlternate(n),e.datepicker._updateDatepicker(n))}catch(e){}return!0},_showDatepicker:function(t){var n,i,s,r,a,o,l;"input"!==(t=t.target||t).nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),e.datepicker._isDisabledDatepicker(t)||e.datepicker._lastInput===t||(n=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==n&&(e.datepicker._curInst.dpDiv.stop(!0,!0),n&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),!1!==(s=(i=e.datepicker._get(n,"beforeShow"))?i.apply(t,[t,n]):{})&&(g(n.settings,s),n.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(n),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each((function(){return!(r|="fixed"===e(this).css("position"))})),a={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(n),a=e.datepicker._checkOffset(n,a,r),n.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:a.left+"px",top:a.top+"px"}),n.inline||(o=e.datepicker._get(n,"showAnim"),l=e.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(e){for(var t,n;e.length&&e[0]!==document;){if(("absolute"===(t=e.css("position"))||"relative"===t||"fixed"===t)&&(n=parseInt(e.css("zIndex"),10),!isNaN(n)&&0!==n))return n;e=e.parent()}return 0}(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[o]?n.dpDiv.show(o,e.datepicker._get(n,"showOptions"),l):n.dpDiv[o||"show"](o?l:null),e.datepicker._shouldFocusInput(n)&&n.input.trigger("focus"),e.datepicker._curInst=n)))},_updateDatepicker:function(t){this.maxRows=4,h=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var n,i=this._getNumberOfMonths(t),s=i[1],r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&_.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.trigger("focus"),t.yearshtml&&(n=t.yearshtml,setTimeout((function(){n===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),n=t.yearshtml=null}),0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,n,i){var s=t.dpDiv.outerWidth(),r=t.dpDiv.outerHeight(),a=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,l=document.documentElement.clientWidth+(i?0:e(document).scrollLeft()),u=document.documentElement.clientHeight+(i?0:e(document).scrollTop());return n.left-=this._get(t,"isRTL")?s-a:0,n.left-=i&&n.left===t.input.offset().left?e(document).scrollLeft():0,n.top-=i&&n.top===t.input.offset().top+o?e(document).scrollTop():0,n.left-=Math.min(n.left,n.left+s>l&&l>s?Math.abs(n.left+s-l):0),n.top-=Math.min(n.top,n.top+r>u&&u>r?Math.abs(r+o):0),n},_findPos:function(t){for(var n,i=this._getInst(t),s=this._get(i,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[s?"previousSibling":"nextSibling"];return[(n=e(t).offset()).left,n.top]},_hideDatepicker:function(t){var n,i,s,r,a=this._curInst;!a||t&&a!==e.data(t,"datepicker")||this._datepickerShowing&&(n=this._get(a,"showAnim"),i=this._get(a,"duration"),s=function(){e.datepicker._tidyDialog(a)},e.effects&&(e.effects.effect[n]||e.effects[n])?a.dpDiv.hide(n,e.datepicker._get(a,"showOptions"),i,s):a.dpDiv["slideDown"===n?"slideUp":"fadeIn"===n?"fadeOut":"hide"](n?i:null,s),n||s(),this._datepickerShowing=!1,(r=this._get(a,"onClose"))&&r.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var n=e(t.target),i=e.datepicker._getInst(n[0]);(n[0].id===e.datepicker._mainDivId||0!==n.parents("#"+e.datepicker._mainDivId).length||n.hasClass(e.datepicker.markerClassName)||n.closest("."+e.datepicker._triggerClass).length||!e.datepicker._datepickerShowing||e.datepicker._inDialog&&e.blockUI)&&(!n.hasClass(e.datepicker.markerClassName)||e.datepicker._curInst===i)||e.datepicker._hideDatepicker()}},_adjustDate:function(t,n,i){var s=e(t),r=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(r,n+("M"===i?this._get(r,"showCurrentAtPos"):0),i),this._updateDatepicker(r))},_gotoToday:function(t){var n,i=e(t),s=this._getInst(i[0]);this._get(s,"gotoCurrent")&&s.currentDay?(s.selectedDay=s.currentDay,s.drawMonth=s.selectedMonth=s.currentMonth,s.drawYear=s.selectedYear=s.currentYear):(n=new Date,s.selectedDay=n.getDate(),s.drawMonth=s.selectedMonth=n.getMonth(),s.drawYear=s.selectedYear=n.getFullYear()),this._notifyChange(s),this._adjustDate(i)},_selectMonthYear:function(t,n,i){var s=e(t),r=this._getInst(s[0]);r["selected"+("M"===i?"Month":"Year")]=r["draw"+("M"===i?"Month":"Year")]=parseInt(n.options[n.selectedIndex].value,10),this._notifyChange(r),this._adjustDate(s)},_selectDay:function(t,n,i,s){var r,a=e(t);e(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||((r=this._getInst(a[0])).selectedDay=r.currentDay=e("a",s).html(),r.selectedMonth=r.currentMonth=n,r.selectedYear=r.currentYear=i,this._selectDate(t,this._formatDate(r,r.currentDay,r.currentMonth,r.currentYear)))},_clearDate:function(t){var n=e(t);this._selectDate(n,"")},_selectDate:function(t,n){var i,s=e(t),r=this._getInst(s[0]);n=null!=n?n:this._formatDate(r),r.input&&r.input.val(n),this._updateAlternate(r),(i=this._get(r,"onSelect"))?i.apply(r.input?r.input[0]:null,[n,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],"object"!=typeof r.input[0]&&r.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(t){var n,i,s,r=this._get(t,"altField");r&&(n=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),s=this.formatDate(n,i,this._getFormatConfig(t)),e(r).val(s))},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t,n=new Date(e.getTime());return n.setDate(n.getDate()+4-(n.getDay()||7)),t=n.getTime(),n.setMonth(0),n.setDate(1),Math.floor(Math.round((t-n)/864e5)/7)+1},parseDate:function(t,n,i){if(null==t||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?n.toString():n+""))return null;var s,r,a,o,l=0,u=(i?i.shortYearCutoff:null)||this._defaults.shortYearCutoff,d="string"!=typeof u?u:(new Date).getFullYear()%100+parseInt(u,10),c=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,h=(i?i.dayNames:null)||this._defaults.dayNames,p=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,f=(i?i.monthNames:null)||this._defaults.monthNames,m=-1,_=-1,g=-1,v=-1,y=!1,b=function(e){var n=s+1<t.length&&t.charAt(s+1)===e;return n&&s++,n},w=function(e){var t=b(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,s=new RegExp("^\\d{"+("y"===e?i:1)+","+i+"}"),r=n.substring(l).match(s);if(!r)throw"Missing number at position "+l;return l+=r[0].length,parseInt(r[0],10)},k=function(t,i,s){var r=-1,a=e.map(b(t)?s:i,(function(e,t){return[[t,e]]})).sort((function(e,t){return-(e[1].length-t[1].length)}));if(e.each(a,(function(e,t){var i=t[1];if(n.substr(l,i.length).toLowerCase()===i.toLowerCase())return r=t[0],l+=i.length,!1})),-1!==r)return r+1;throw"Unknown name at position "+l},M=function(){if(n.charAt(l)!==t.charAt(s))throw"Unexpected literal at position "+l;l++};for(s=0;s<t.length;s++)if(y)"'"!==t.charAt(s)||b("'")?M():y=!1;else switch(t.charAt(s)){case"d":g=w("d");break;case"D":k("D",c,h);break;case"o":v=w("o");break;case"m":_=w("m");break;case"M":_=k("M",p,f);break;case"y":m=w("y");break;case"@":m=(o=new Date(w("@"))).getFullYear(),_=o.getMonth()+1,g=o.getDate();break;case"!":m=(o=new Date((w("!")-this._ticksTo1970)/1e4)).getFullYear(),_=o.getMonth()+1,g=o.getDate();break;case"'":b("'")?M():y=!0;break;default:M()}if(l<n.length&&(a=n.substr(l),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===m?m=(new Date).getFullYear():m<100&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(m<=d?0:-100)),v>-1)for(_=1,g=v;!(g<=(r=this._getDaysInMonth(m,_-1)));)_++,g-=r;if((o=this._daylightSavingAdjust(new Date(m,_-1,g))).getFullYear()!==m||o.getMonth()+1!==_||o.getDate()!==g)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var i,s=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,r=(n?n.dayNames:null)||this._defaults.dayNames,a=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,l=function(t){var n=i+1<e.length&&e.charAt(i+1)===t;return n&&i++,n},u=function(e,t,n){var i=""+t;if(l(e))for(;i.length<n;)i="0"+i;return i},d=function(e,t,n,i){return l(e)?i[t]:n[t]},c="",h=!1;if(t)for(i=0;i<e.length;i++)if(h)"'"!==e.charAt(i)||l("'")?c+=e.charAt(i):h=!1;else switch(e.charAt(i)){case"d":c+=u("d",t.getDate(),2);break;case"D":c+=d("D",t.getDay(),s,r);break;case"o":c+=u("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":c+=u("m",t.getMonth()+1,2);break;case"M":c+=d("M",t.getMonth(),a,o);break;case"y":c+=l("y")?t.getFullYear():(t.getFullYear()%100<10?"0":"")+t.getFullYear()%100;break;case"@":c+=t.getTime();break;case"!":c+=1e4*t.getTime()+this._ticksTo1970;break;case"'":l("'")?c+="'":h=!0;break;default:c+=e.charAt(i)}return c},_possibleChars:function(e){var t,n="",i=!1,s=function(n){var i=t+1<e.length&&e.charAt(t+1)===n;return i&&t++,i};for(t=0;t<e.length;t++)if(i)"'"!==e.charAt(t)||s("'")?n+=e.charAt(t):i=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":n+="0123456789";break;case"D":case"M":return null;case"'":s("'")?n+="'":i=!0;break;default:n+=e.charAt(t)}return n},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var n=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),r=s,a=this._getFormatConfig(e);try{r=this.parseDate(n,i,a)||s}catch(e){i=t?"":i}e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),e.currentDay=i?r.getDate():0,e.currentMonth=i?r.getMonth():0,e.currentYear=i?r.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,n,i){var s=null==n||""===n?i:"string"==typeof n?function(n){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),n,e.datepicker._getFormatConfig(t))}catch(e){}for(var i=(n.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=i.getFullYear(),r=i.getMonth(),a=i.getDate(),o=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=o.exec(n);l;){switch(l[2]||"d"){case"d":case"D":a+=parseInt(l[1],10);break;case"w":case"W":a+=7*parseInt(l[1],10);break;case"m":case"M":r+=parseInt(l[1],10),a=Math.min(a,e.datepicker._getDaysInMonth(s,r));break;case"y":case"Y":s+=parseInt(l[1],10),a=Math.min(a,e.datepicker._getDaysInMonth(s,r))}l=o.exec(n)}return new Date(s,r,a)}(n):"number"==typeof n?isNaN(n)?i:function(e){var t=new Date;return t.setDate(t.getDate()+e),t}(n):new Date(n.getTime());return(s=s&&"Invalid Date"===s.toString()?i:s)&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var i=!t,s=e.selectedMonth,r=e.selectedYear,a=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=a.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=a.getMonth(),e.drawYear=e.selectedYear=e.currentYear=a.getFullYear(),s===e.selectedMonth&&r===e.selectedYear||n||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){return!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay))},_attachHandlers:function(t){var n=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map((function(){var t={prev:function(){e.datepicker._adjustDate(i,-n,"M")},next:function(){e.datepicker._adjustDate(i,+n,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(i)},selectDay:function(){return e.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).on(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])}))},_generateHTML:function(e){var t,n,i,s,r,a,o,l,u,d,c,h,p,f,m,_,g,v,y,b,w,k,M,L,D,T,x,S,Y,C,E,O,A,H,j,P,I,F,N,W=new Date,z=this._daylightSavingAdjust(new Date(W.getFullYear(),W.getMonth(),W.getDate())),R=this._get(e,"isRTL"),$=this._get(e,"showButtonPanel"),q=this._get(e,"hideIfNoPrevNext"),B=this._get(e,"navigationAsDateFormat"),U=this._getNumberOfMonths(e),K=this._get(e,"showCurrentAtPos"),G=this._get(e,"stepMonths"),V=1!==U[0]||1!==U[1],J=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(e,"min"),X=this._getMinMaxDate(e,"max"),Z=e.drawMonth-K,ee=e.drawYear;if(Z<0&&(Z+=12,ee--),X)for(t=this._daylightSavingAdjust(new Date(X.getFullYear(),X.getMonth()-U[0]*U[1]+1,X.getDate())),t=Q&&t<Q?Q:t;this._daylightSavingAdjust(new Date(ee,Z,1))>t;)--Z<0&&(Z=11,ee--);for(e.drawMonth=Z,e.drawYear=ee,n=this._get(e,"prevText"),n=B?this.formatDate(n,this._daylightSavingAdjust(new Date(ee,Z-G,1)),this._getFormatConfig(e)):n,i=this._canAdjustMonth(e,-1,ee,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(R?"e":"w")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(R?"e":"w")+"'>"+n+"</span></a>",s=this._get(e,"nextText"),s=B?this.formatDate(s,this._daylightSavingAdjust(new Date(ee,Z+G,1)),this._getFormatConfig(e)):s,r=this._canAdjustMonth(e,1,ee,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(R?"w":"e")+"'>"+s+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(R?"w":"e")+"'>"+s+"</span></a>",a=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?J:z,a=B?this.formatDate(a,o,this._getFormatConfig(e)):a,l=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",u=$?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(R?l:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(R?"":l)+"</div>":"",d=parseInt(this._get(e,"firstDay"),10),d=isNaN(d)?0:d,c=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),_=this._get(e,"beforeShowDay"),g=this._get(e,"showOtherMonths"),v=this._get(e,"selectOtherMonths"),y=this._getDefaultDate(e),b="",k=0;k<U[0];k++){for(M="",this.maxRows=4,L=0;L<U[1];L++){if(D=this._daylightSavingAdjust(new Date(ee,Z,e.selectedDay)),T=" ui-corner-all",x="",V){if(x+="<div class='ui-datepicker-group",U[1]>1)switch(L){case 0:x+=" ui-datepicker-group-first",T=" ui-corner-"+(R?"right":"left");break;case U[1]-1:x+=" ui-datepicker-group-last",T=" ui-corner-"+(R?"left":"right");break;default:x+=" ui-datepicker-group-middle",T=""}x+="'>"}for(x+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+T+"'>"+(/all|left/.test(T)&&0===k?R?r:i:"")+(/all|right/.test(T)&&0===k?R?i:r:"")+this._generateMonthYearHeader(e,Z,ee,Q,X,k>0||L>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead><tr>",S=c?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",w=0;w<7;w++)S+="<th scope='col'"+((w+d+6)%7>=5?" class='ui-datepicker-week-end'":"")+"><span title='"+h[Y=(w+d)%7]+"'>"+p[Y]+"</span></th>";for(x+=S+"</tr></thead><tbody>",C=this._getDaysInMonth(ee,Z),ee===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,C)),E=(this._getFirstDayOfMonth(ee,Z)-d+7)%7,O=Math.ceil((E+C)/7),A=V&&this.maxRows>O?this.maxRows:O,this.maxRows=A,H=this._daylightSavingAdjust(new Date(ee,Z,1-E)),j=0;j<A;j++){for(x+="<tr>",P=c?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",w=0;w<7;w++)I=_?_.apply(e.input?e.input[0]:null,[H]):[!0,""],N=(F=H.getMonth()!==Z)&&!v||!I[0]||Q&&H<Q||X&&H>X,P+="<td class='"+((w+d+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||y.getTime()===H.getTime()&&y.getTime()===D.getTime()?" "+this._dayOverClass:"")+(N?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!g?"":" "+I[1]+(H.getTime()===J.getTime()?" "+this._currentClass:"")+(H.getTime()===z.getTime()?" ui-datepicker-today":""))+"'"+(F&&!g||!I[2]?"":" title='"+I[2].replace(/'/g,"'")+"'")+(N?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(F&&!g?" ":N?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===z.getTime()?" ui-state-highlight":"")+(H.getTime()===J.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);x+=P+"</tr>"}++Z>11&&(Z=0,ee++),M+=x+="</tbody></table>"+(V?"</div>"+(U[0]>0&&L===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}b+=M}return b+=u,e._keyEvent=!1,b},_generateMonthYearHeader:function(e,t,n,i,s,r,a,o){var l,u,d,c,h,p,f,m,_=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),v=this._get(e,"showMonthAfterYear"),y="<div class='ui-datepicker-title'>",b="";if(r||!_)b+="<span class='ui-datepicker-month'>"+a[t]+"</span>";else{for(l=i&&i.getFullYear()===n,u=s&&s.getFullYear()===n,b+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",d=0;d<12;d++)(!l||d>=i.getMonth())&&(!u||d<=s.getMonth())&&(b+="<option value='"+d+"'"+(d===t?" selected='selected'":"")+">"+o[d]+"</option>");b+="</select>"}if(v||(y+=b+(!r&&_&&g?"":" ")),!e.yearshtml)if(e.yearshtml="",r||!g)y+="<span class='ui-datepicker-year'>"+n+"</span>";else{for(c=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),f=(p=function(e){var t=e.match(/c[+\-].*/)?n+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t})(c[0]),m=Math.max(f,p(c[1]||"")),f=i?Math.max(f,i.getFullYear()):f,m=s?Math.min(m,s.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";f<=m;f++)e.yearshtml+="<option value='"+f+"'"+(f===n?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",y+=e.yearshtml,e.yearshtml=null}return y+=this._get(e,"yearSuffix"),v&&(y+=(!r&&_&&g?"":" ")+b),y+"</div>"},_adjustInstDate:function(e,t,n){var i=e.selectedYear+("Y"===n?t:0),s=e.selectedMonth+("M"===n?t:0),r=Math.min(e.selectedDay,this._getDaysInMonth(i,s))+("D"===n?t:0),a=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,s,r)));e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),"M"!==n&&"Y"!==n||this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),i=this._getMinMaxDate(e,"max"),s=n&&t<n?n:t;return i&&s>i?i:s},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,n,i){var s=this._getNumberOfMonths(e),r=this._daylightSavingAdjust(new Date(n,i+(t<0?t:s[0]*s[1]),1));return t<0&&r.setDate(this._getDaysInMonth(r.getFullYear(),r.getMonth())),this._isInRange(e,r)},_isInRange:function(e,t){var n,i,s=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),a=null,o=null,l=this._get(e,"yearRange");return l&&(n=l.split(":"),i=(new Date).getFullYear(),a=parseInt(n[0],10),o=parseInt(n[1],10),n[0].match(/[+\-].*/)&&(a+=i),n[1].match(/[+\-].*/)&&(o+=i)),(!s||t.getTime()>=s.getTime())&&(!r||t.getTime()<=r.getTime())&&(!a||t.getFullYear()>=a)&&(!o||t.getFullYear()<=o)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return{shortYearCutoff:t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var s=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),s,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).on("mousedown",e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n)):this.each((function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(n)):e.datepicker._attachDatepicker(this,t)})):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n))},e.datepicker=new f,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.12.1",e.datepicker,e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var v=!1;e(document).on("mouseup",(function(){v=!1})),e.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,(function(e){return t._mouseDown(e)})).on("click."+this.widgetName,(function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1})),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!v){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var n=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&e(t.target).closest(this.options.cancel).length;return!(i&&!s&&this._mouseCapture(t)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout((function(){n.mouseDelayMet=!0}),this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return n._mouseMove(e)},this._mouseUpDelegate=function(e){return n._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),v=!0,0)))}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,v=!1,t.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.ui.plugin={add:function(t,n,i){var s,r=e.ui[t].prototype;for(s in i)r.plugins[s]=r.plugins[s]||[],r.plugins[s].push([n,i[s]])},call:function(e,t,n,i){var s,r=e.plugins[t];if(r&&(i||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(s=0;s<r.length;s++)e.options[r[s][0]]&&r[s][1].apply(e.element,n)}},e.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&e(t).trigger("blur")},e.widget("ui.draggable",e.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(t){var n=this.options;return!(this.helper||n.disabled||e(t.target).closest(".ui-resizable-handle").length>0||(this.handle=this._getHandle(t),!this.handle||(this._blurActiveElement(t),this._blockFrames(!0===n.iframeFix?"iframe":n.iframeFix),0)))},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map((function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var n=e.ui.safeActiveElement(this.document[0]);e(t.target).closest(n).length||e.ui.safeBlur(n)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter((function(){return"fixed"===e(this).css("position")})).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this._setContainment(),!1===this._trigger("start",t)?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,n){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!n){var i=this._uiHash();if(!1===this._trigger("drag",t,i))return this._mouseUp(new e.Event("mouseup",t)),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=this,i=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(i=e.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||!0===this.options.revert||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),(function(){!1!==n._trigger("stop",t)&&n._clear()})):!1!==this._trigger("stop",t)&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.trigger("focus"),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new e.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(t){return!this.options.handle||!!e(t.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(t){var n=this.options,i=e.isFunction(n.helper),s=i?e(n.helper.apply(this.element[0],[t])):"clone"===n.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===n.appendTo?this.element[0].parentNode:n.appendTo),i&&s[0]===this.element[0]&&this._setPositionRelative(),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),n=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==n&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,i,s=this.options,r=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(i=(n=e(s.containment))[0])&&(t=/(scroll|auto)/.test(n.css("overflow")),this.containment=[(parseInt(n.css("borderLeftWidth"),10)||0)+(parseInt(n.css("paddingLeft"),10)||0),(parseInt(n.css("borderTopWidth"),10)||0)+(parseInt(n.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(n.css("borderRightWidth"),10)||0)-(parseInt(n.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(n.css("borderBottomWidth"),10)||0)-(parseInt(n.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=n)):this.containment=s.containment:this.containment=[0,0,e(r).width()-this.helperProportions.width-this.margins.left,(e(r).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(e,t){t||(t=this.position);var n="absolute"===e?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*n+this.offset.parent.top*n-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*n,left:t.left+this.offset.relative.left*n+this.offset.parent.left*n-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*n}},_generatePosition:function(e,t){var n,i,s,r,a=this.options,o=this._isRootNode(this.scrollParent[0]),l=e.pageX,u=e.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(i=this.relativeContainer.offset(),n=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):n=this.containment,e.pageX-this.offset.click.left<n[0]&&(l=n[0]+this.offset.click.left),e.pageY-this.offset.click.top<n[1]&&(u=n[1]+this.offset.click.top),e.pageX-this.offset.click.left>n[2]&&(l=n[2]+this.offset.click.left),e.pageY-this.offset.click.top>n[3]&&(u=n[3]+this.offset.click.top)),a.grid&&(s=a.grid[1]?this.originalPageY+Math.round((u-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,u=n?s-this.offset.click.top>=n[1]||s-this.offset.click.top>n[3]?s:s-this.offset.click.top>=n[1]?s-a.grid[1]:s+a.grid[1]:s,r=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=n?r-this.offset.click.left>=n[0]||r-this.offset.click.left>n[2]?r:r-this.offset.click.left>=n[0]?r-a.grid[0]:r+a.grid[0]:r),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(u=this.originalPageY)),{top:u-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,n,i){return i=i||this._uiHash(),e.ui.plugin.call(this,t,[n,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,n,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n,i){var s=e.extend({},n,{item:i.element});i.sortables=[],e(i.options.connectToSortable).each((function(){var n=e(this).sortable("instance");n&&!n.options.disabled&&(i.sortables.push(n),n.refreshPositions(),n._trigger("activate",t,s))}))},stop:function(t,n,i){var s=e.extend({},n,{item:i.element});i.cancelHelperRemoval=!1,e.each(i.sortables,(function(){var e=this;e.isOver?(e.isOver=0,i.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,s))}))},drag:function(t,n,i){e.each(i.sortables,(function(){var s=!1,r=this;r.positionAbs=i.positionAbs,r.helperProportions=i.helperProportions,r.offset.click=i.offset.click,r._intersectsWith(r.containerCache)&&(s=!0,e.each(i.sortables,(function(){return this.positionAbs=i.positionAbs,this.helperProportions=i.helperProportions,this.offset.click=i.offset.click,this!==r&&this._intersectsWith(this.containerCache)&&e.contains(r.element[0],this.element[0])&&(s=!1),s}))),s?(r.isOver||(r.isOver=1,i._parent=n.helper.parent(),r.currentItem=n.helper.appendTo(r.element).data("ui-sortable-item",!0),r.options._helper=r.options.helper,r.options.helper=function(){return n.helper[0]},t.target=r.currentItem[0],r._mouseCapture(t,!0),r._mouseStart(t,!0,!0),r.offset.click.top=i.offset.click.top,r.offset.click.left=i.offset.click.left,r.offset.parent.left-=i.offset.parent.left-r.offset.parent.left,r.offset.parent.top-=i.offset.parent.top-r.offset.parent.top,i._trigger("toSortable",t),i.dropped=r.element,e.each(i.sortables,(function(){this.refreshPositions()})),i.currentItem=i.element,r.fromOutside=i),r.currentItem&&(r._mouseDrag(t),n.position=r.position)):r.isOver&&(r.isOver=0,r.cancelHelperRemoval=!0,r.options._revert=r.options.revert,r.options.revert=!1,r._trigger("out",t,r._uiHash(r)),r._mouseStop(t,!0),r.options.revert=r.options._revert,r.options.helper=r.options._helper,r.placeholder&&r.placeholder.remove(),n.helper.appendTo(i._parent),i._refreshOffsets(t),n.position=i._generatePosition(t,!0),i._trigger("fromSortable",t),i.dropped=!1,e.each(i.sortables,(function(){this.refreshPositions()})))}))}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n,i){var s=e("body"),r=i.options;s.css("cursor")&&(r._cursor=s.css("cursor")),s.css("cursor",r.cursor)},stop:function(t,n,i){var s=i.options;s._cursor&&e("body").css("cursor",s._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n,i){var s=e(n.helper),r=i.options;s.css("opacity")&&(r._opacity=s.css("opacity")),s.css("opacity",r.opacity)},stop:function(t,n,i){var s=i.options;s._opacity&&e(n.helper).css("opacity",s._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,n){n.scrollParentNotHidden||(n.scrollParentNotHidden=n.helper.scrollParent(!1)),n.scrollParentNotHidden[0]!==n.document[0]&&"HTML"!==n.scrollParentNotHidden[0].tagName&&(n.overflowOffset=n.scrollParentNotHidden.offset())},drag:function(t,n,i){var s=i.options,r=!1,a=i.scrollParentNotHidden[0],o=i.document[0];a!==o&&"HTML"!==a.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+a.offsetHeight-t.pageY<s.scrollSensitivity?a.scrollTop=r=a.scrollTop+s.scrollSpeed:t.pageY-i.overflowOffset.top<s.scrollSensitivity&&(a.scrollTop=r=a.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+a.offsetWidth-t.pageX<s.scrollSensitivity?a.scrollLeft=r=a.scrollLeft+s.scrollSpeed:t.pageX-i.overflowOffset.left<s.scrollSensitivity&&(a.scrollLeft=r=a.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(t.pageY-e(o).scrollTop()<s.scrollSensitivity?r=e(o).scrollTop(e(o).scrollTop()-s.scrollSpeed):e(window).height()-(t.pageY-e(o).scrollTop())<s.scrollSensitivity&&(r=e(o).scrollTop(e(o).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(t.pageX-e(o).scrollLeft()<s.scrollSensitivity?r=e(o).scrollLeft(e(o).scrollLeft()-s.scrollSpeed):e(window).width()-(t.pageX-e(o).scrollLeft())<s.scrollSensitivity&&(r=e(o).scrollLeft(e(o).scrollLeft()+s.scrollSpeed)))),!1!==r&&e.ui.ddmanager&&!s.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n,i){var s=i.options;i.snapElements=[],e(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each((function(){var t=e(this),n=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})}))},drag:function(t,n,i){var s,r,a,o,l,u,d,c,h,p,f=i.options,m=f.snapTolerance,_=n.offset.left,g=_+i.helperProportions.width,v=n.offset.top,y=v+i.helperProportions.height;for(h=i.snapElements.length-1;h>=0;h--)u=(l=i.snapElements[h].left-i.margins.left)+i.snapElements[h].width,c=(d=i.snapElements[h].top-i.margins.top)+i.snapElements[h].height,g<l-m||_>u+m||y<d-m||v>c+m||!e.contains(i.snapElements[h].item.ownerDocument,i.snapElements[h].item)?(i.snapElements[h].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[h].item})),i.snapElements[h].snapping=!1):("inner"!==f.snapMode&&(s=Math.abs(d-y)<=m,r=Math.abs(c-v)<=m,a=Math.abs(l-g)<=m,o=Math.abs(u-_)<=m,s&&(n.position.top=i._convertPositionTo("relative",{top:d-i.helperProportions.height,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:c,left:0}).top),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left),o&&(n.position.left=i._convertPositionTo("relative",{top:0,left:u}).left)),p=s||r||a||o,"outer"!==f.snapMode&&(s=Math.abs(d-v)<=m,r=Math.abs(c-y)<=m,a=Math.abs(l-_)<=m,o=Math.abs(u-g)<=m,s&&(n.position.top=i._convertPositionTo("relative",{top:d,left:0}).top),r&&(n.position.top=i._convertPositionTo("relative",{top:c-i.helperProportions.height,left:0}).top),a&&(n.position.left=i._convertPositionTo("relative",{top:0,left:l}).left),o&&(n.position.left=i._convertPositionTo("relative",{top:0,left:u-i.helperProportions.width}).left)),!i.snapElements[h].snapping&&(s||r||a||o||p)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[h].item})),i.snapElements[h].snapping=s||r||a||o||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,n,i){var s,r=i.options,a=e.makeArray(e(r.stack)).sort((function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)}));a.length&&(s=parseInt(e(a[0]).css("zIndex"),10)||0,e(a).each((function(t){e(this).css("zIndex",s+t)})),this.css("zIndex",s+a.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n,i){var s=e(n.helper),r=i.options;s.css("zIndex")&&(r._zIndex=s.css("zIndex")),s.css("zIndex",r.zIndex)},stop:function(t,n,i){var s=i.options;s._zIndex&&e(n.helper).css("zIndex",s._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseFloat(e)||0},_isNumber:function(e){return!isNaN(parseFloat(e))},_hasScroll:function(t,n){if("hidden"===e(t).css("overflow"))return!1;var i,s=n&&"left"===n?"scrollLeft":"scrollTop";return t[s]>0||(t[s]=1,i=t[s]>0,t[s]=0,i)},_create:function(){var t,n=this.options,i=this;this._addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),n.autoHide&&e(this.element).on("mouseenter",(function(){n.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())})).on("mouseleave",(function(){n.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,n=function(t){e(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_setOption:function(e,t){switch(this._super(e,t),e){case"handles":this._removeHandles(),this._setupHandles()}},_setupHandles:function(){var t,n,i,s,r,a=this.options,o=this;if(this.handles=a.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},n=0;n<i.length;n++)s="ui-resizable-"+(t=e.trim(i[n])),r=e("<div>"),this._addClass(r,"ui-resizable-handle "+s),r.css({zIndex:a.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.append(r);this._renderAxis=function(t){var n,i,s,r;for(n in t=t||this.element,this.handles)this.handles[n].constructor===String?this.handles[n]=this.element.children(this.handles[n]).first().show():(this.handles[n].jquery||this.handles[n].nodeType)&&(this.handles[n]=e(this.handles[n]),this._on(this.handles[n],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=e(this.handles[n],this.element),r=/sw|ne|nw|se|n|s/.test(n)?i.outerHeight():i.outerWidth(),s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(s,r),this._proportionallyResize()),this._handles=this._handles.add(this.handles[n])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",(function(){o.resizing||(this.className&&(r=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=r&&r[1]?r[1]:"se")})),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var n,i,s=!1;for(n in this.handles)((i=e(this.handles[n])[0])===t.target||e.contains(i,t.target))&&(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var n,i,s,r=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),n=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),r.containment&&(n+=e(r.containment).scrollLeft()||0,i+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:n,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:n,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,i,s=this.originalMousePosition,r=this.axis,a=t.pageX-s.left||0,o=t.pageY-s.top||0,l=this._change[r];return this._updatePrevProperties(),!!l&&(n=l.apply(this,[t,a,o]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(n=this._updateRatio(n,t)),n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1)},_mouseStop:function(t){this.resizing=!1;var n,i,s,r,a,o,l,u=this.options,d=this;return this._helper&&(s=(i=(n=this._proportionallyResizeElements).length&&/textarea/i.test(n[0].nodeName))&&this._hasScroll(n[0],"left")?0:d.sizeDiff.height,r=i?0:d.sizeDiff.width,a={width:d.helper.width()-r,height:d.helper.height()-s},o=parseFloat(d.element.css("left"))+(d.position.left-d.originalPosition.left)||null,l=parseFloat(d.element.css("top"))+(d.position.top-d.originalPosition.top)||null,u.animate||this.element.css(e.extend(a,{top:l,left:o})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!u.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,n,i,s,r,a=this.options;r={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||e)&&(t=r.minHeight*this.aspectRatio,i=r.minWidth/this.aspectRatio,n=r.maxHeight*this.aspectRatio,s=r.maxWidth/this.aspectRatio,t>r.minWidth&&(r.minWidth=t),i>r.minHeight&&(r.minHeight=i),n<r.maxWidth&&(r.maxWidth=n),s<r.maxHeight&&(r.maxHeight=s)),this._vBoundaries=r},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,n=this.size,i=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===i&&(e.left=t.left+(n.width-e.width),e.top=null),"nw"===i&&(e.top=t.top+(n.height-e.height),e.left=t.left+(n.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,n=this.axis,i=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,s=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,r=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,a=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,o=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,u=/sw|nw|w/.test(n),d=/nw|ne|n/.test(n);return r&&(e.width=t.minWidth),a&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),s&&(e.height=t.maxHeight),r&&u&&(e.left=o-t.minWidth),i&&u&&(e.left=o-t.maxWidth),a&&d&&(e.top=l-t.minHeight),s&&d&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,n=[],i=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],s=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];t<4;t++)n[t]=parseFloat(i[t])||0,n[t]+=parseFloat(s[t])||0;return{height:n[0]+n[2],width:n[1]+n[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,n=this.helper||this.element;t<this._proportionallyResizeElements.length;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:n.height()-this.outerDimensions.height||0,width:n.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize;return{left:this.originalPosition.left+t,width:n.width-t}},n:function(e,t,n){var i=this.originalSize;return{top:this.originalPosition.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,i){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,i]))},sw:function(t,n,i){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,i]))},ne:function(t,n,i){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,i]))},nw:function(t,n,i){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,i]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),"resize"!==t&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).resizable("instance"),i=n.options,s=n._proportionallyResizeElements,r=s.length&&/textarea/i.test(s[0].nodeName),a=r&&n._hasScroll(s[0],"left")?0:n.sizeDiff.height,o=r?0:n.sizeDiff.width,l={width:n.size.width-o,height:n.size.height-a},u=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,d=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(l,d&&u?{top:d,left:u}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var i={width:parseFloat(n.element.css("width")),height:parseFloat(n.element.css("height")),top:parseFloat(n.element.css("top")),left:parseFloat(n.element.css("left"))};s&&s.length&&e(s[0]).css({width:i.width,height:i.height}),n._updateCache(i),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,n,i,s,r,a,o,l=e(this).resizable("instance"),u=l.options,d=l.element,c=u.containment,h=c instanceof e?c.get(0):/parent/.test(c)?d.parent().get(0):c;h&&(l.containerElement=e(h),/document/.test(c)||c===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(h),n=[],e(["Top","Right","Left","Bottom"]).each((function(e,i){n[e]=l._num(t.css("padding"+i))})),l.containerOffset=t.offset(),l.containerPosition=t.position(),l.containerSize={height:t.innerHeight()-n[3],width:t.innerWidth()-n[1]},i=l.containerOffset,s=l.containerSize.height,r=l.containerSize.width,a=l._hasScroll(h,"left")?h.scrollWidth:r,o=l._hasScroll(h)?h.scrollHeight:s,l.parentData={element:h,left:i.left,top:i.top,width:a,height:o}))},resize:function(t){var n,i,s,r,a=e(this).resizable("instance"),o=a.options,l=a.containerOffset,u=a.position,d=a._aspectRatio||t.shiftKey,c={top:0,left:0},h=a.containerElement,p=!0;h[0]!==document&&/static/.test(h.css("position"))&&(c=l),u.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-c.left),d&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=o.helper?l.left:0),u.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),d&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),s=a.containerElement.get(0)===a.element.parent().get(0),r=/relative|absolute/.test(a.containerElement.css("position")),s&&r?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),n=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-c.left:a.offset.left-l.left)),i=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-c.top:a.offset.top-l.top)),n+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-n,d&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),i+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-i,d&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),n=t.options,i=t.containerOffset,s=t.containerPosition,r=t.containerElement,a=e(t.helper),o=a.offset(),l=a.outerWidth()-t.sizeDiff.width,u=a.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(r.css("position"))&&e(this).css({left:o.left-s.left-i.left,width:l,height:u}),t._helper&&!n.animate&&/static/.test(r.css("position"))&&e(this).css({left:o.left-s.left-i.left,width:l,height:u})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance").options;e(t.alsoResize).each((function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})}))},resize:function(t,n){var i=e(this).resizable("instance"),s=i.options,r=i.originalSize,a=i.originalPosition,o={height:i.size.height-r.height||0,width:i.size.width-r.width||0,top:i.position.top-a.top||0,left:i.position.left-a.left||0};e(s.alsoResize).each((function(){var t=e(this),i=e(this).data("ui-resizable-alsoresize"),s={},r=t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,(function(e,t){var n=(i[t]||0)+(o[t]||0);n&&n>=0&&(s[t]=n||null)})),t.css(s)}))},stop:function(){e(this).removeData("ui-resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),n=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:n.height,width:n.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==e.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,n=e(this).resizable("instance"),i=n.options,s=n.size,r=n.originalSize,a=n.originalPosition,o=n.axis,l="number"==typeof i.grid?[i.grid,i.grid]:i.grid,u=l[0]||1,d=l[1]||1,c=Math.round((s.width-r.width)/u)*u,h=Math.round((s.height-r.height)/d)*d,p=r.width+c,f=r.height+h,m=i.maxWidth&&i.maxWidth<p,_=i.maxHeight&&i.maxHeight<f,g=i.minWidth&&i.minWidth>p,v=i.minHeight&&i.minHeight>f;i.grid=l,g&&(p+=u),v&&(f+=d),m&&(p-=u),_&&(f-=d),/^(se|s|e)$/.test(o)?(n.size.width=p,n.size.height=f):/^(ne)$/.test(o)?(n.size.width=p,n.size.height=f,n.position.top=a.top-h):/^(sw)$/.test(o)?(n.size.width=p,n.size.height=f,n.position.left=a.left-c):((f-d<=0||p-u<=0)&&(t=n._getPaddingPlusBorderDimensions(this)),f-d>0?(n.size.height=f,n.position.top=a.top-h):(f=d-t.height,n.size.height=f,n.position.top=a.top+r.height-f),p-u>0?(n.size.width=p,n.position.left=a.left-c):(p=u-t.width,n.size.width=p,n.position.left=a.left+r.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(e=t.parent.children().eq(t.index)).length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var n=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||e.ui.safeBlur(e.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,(function(){n._trigger("close",t)})))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,n){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map((function(){return+e(this).css("z-index")})).get(),r=Math.max.apply(null,s);return r>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",r+1),i=!0),i&&!n&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=e(e.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,(function(){t._focusTabbable(),t._trigger("focus")})),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).trigger("focus")},_keepFocus:function(t){function n(){var t=e.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||e.contains(this.uiDialog[0],t)||this._focusTabbable()}t.preventDefault(),n.call(this),this._delay(n)},_createWrapper:function(){this.uiDialog=e("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var n=this.uiDialog.find(":tabbable"),i=n.filter(":first"),s=n.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay((function(){s.trigger("focus")})),t.preventDefault()):(this._delay((function(){i.trigger("focus")})),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:e("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title?e.text(this.options.title):e.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var t=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(n)||e.isArray(n)&&!n.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(e.each(n,(function(n,i){var s,r;i=e.isFunction(i)?{click:i,text:n}:i,i=e.extend({type:"button"},i),s=i.click,r={icon:i.icon,iconPosition:i.iconPosition,showLabel:i.showLabel,icons:i.icons,text:i.text},delete i.click,delete i.icon,delete i.iconPosition,delete i.showLabel,delete i.icons,"boolean"==typeof i.text&&delete i.text,e("<button></button>",i).button(r).appendTo(t.uiButtonSet).on("click",(function(){s.apply(t.element[0],arguments)}))})),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var t=this,n=this.options;function i(e){return{position:e.position,offset:e.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,s){t._addClass(e(this),"ui-dialog-dragging"),t._blockFrames(),t._trigger("dragStart",n,i(s))},drag:function(e,n){t._trigger("drag",e,i(n))},stop:function(s,r){var a=r.offset.left-t.document.scrollLeft(),o=r.offset.top-t.document.scrollTop();n.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" top"+(o>=0?"+":"")+o,of:t.window},t._removeClass(e(this),"ui-dialog-dragging"),t._unblockFrames(),t._trigger("dragStop",s,i(r))}})},_makeResizable:function(){var t=this,n=this.options,i=n.resizable,s=this.uiDialog.css("position"),r="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";function a(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:r,start:function(n,i){t._addClass(e(this),"ui-dialog-resizing"),t._blockFrames(),t._trigger("resizeStart",n,a(i))},resize:function(e,n){t._trigger("resize",e,a(n))},stop:function(i,s){var r=t.uiDialog.offset(),o=r.left-t.document.scrollLeft(),l=r.top-t.document.scrollTop();n.height=t.uiDialog.height(),n.width=t.uiDialog.width(),n.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" top"+(l>=0?"+":"")+l,of:t.window},t._removeClass(e(this),"ui-dialog-resizing"),t._unblockFrames(),t._trigger("resizeStop",i,a(s))}}).css("position",s)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),n=e.inArray(this,t);-1!==n&&t.splice(n,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var n=this,i=!1,s={};e.each(t,(function(e,t){n._setOption(e,t),e in n.sizeRelatedOptions&&(i=!0),e in n.resizableRelatedOptions&&(s[e]=t)})),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,n){var i,s,r=this.uiDialog;"disabled"!==t&&(this._super(t,n),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:e("<a>").text(""+this.options.closeText).html()}),"draggable"===t&&((i=r.is(":data(ui-draggable)"))&&!n&&r.draggable("destroy"),!i&&n&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((s=r.is(":data(ui-resizable)"))&&!n&&r.resizable("destroy"),s&&"string"==typeof n&&r.resizable("option","handles",n),s||!1===n||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,n,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),e=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),t=Math.max(0,i.minHeight-e),n="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-e):"none","auto"===i.height?this.element.css({minHeight:t,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,i.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map((function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]}))},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!e(t.target).closest(".ui-dialog").length||!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay((function(){t=!1})),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==e.uiBackCompat&&e.widget("ui.dialog",e.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(e,t){"dialogClass"===e&&this.uiDialog.removeClass(this.options.dialogClass).addClass(t),this._superApply(arguments)}}),e.ui.dialog,e.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,n=this.options,i=n.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(n.scope),n.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;t<e.length;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t)},_setOption:function(t,n){if("accept"===t)this.accept=e.isFunction(n)?n:function(e){return e.is(n)};else if("scope"===t){var i=e.ui.ddmanager.droppables[this.options.scope];this._splice(i),this._addToManager(n)}this._super(t,n)},_activate:function(t){var n=e.ui.ddmanager.current;this._addActiveClass(),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this._removeActiveClass(),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;n&&(n.currentItem||n.element)[0]!==this.element[0]&&this.accept.call(this.element[0],n.currentItem||n.element)&&(this._addHoverClass(),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;n&&(n.currentItem||n.element)[0]!==this.element[0]&&this.accept.call(this.element[0],n.currentItem||n.element)&&(this._removeHoverClass(),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var i=n||e.ui.ddmanager.current,s=!1;return!(!i||(i.currentItem||i.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each((function(){var n=e(this).droppable("instance");if(n.options.greedy&&!n.options.disabled&&n.options.scope===i.options.scope&&n.accept.call(n.element[0],i.currentItem||i.element)&&b(i,e.extend(n,{offset:n.element.offset()}),n.options.tolerance,t))return s=!0,!1})),!s&&!!this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",t,this.ui(i)),this.element))},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var y,b=e.ui.intersect=function(){function e(e,t,n){return e>=t&&e<t+n}return function(t,n,i,s){if(!n.offset)return!1;var r=(t.positionAbs||t.position.absolute).left+t.margins.left,a=(t.positionAbs||t.position.absolute).top+t.margins.top,o=r+t.helperProportions.width,l=a+t.helperProportions.height,u=n.offset.left,d=n.offset.top,c=u+n.proportions().width,h=d+n.proportions().height;switch(i){case"fit":return u<=r&&o<=c&&d<=a&&l<=h;case"intersect":return u<r+t.helperProportions.width/2&&o-t.helperProportions.width/2<c&&d<a+t.helperProportions.height/2&&l-t.helperProportions.height/2<h;case"pointer":return e(s.pageY,d,n.proportions().height)&&e(s.pageX,u,n.proportions().width);case"touch":return(a>=d&&a<=h||l>=d&&l<=h||a<d&&l>h)&&(r>=u&&r<=c||o>=u&&o<=c||r<u&&o>c);default:return!1}}}();function w(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,n){var i,s,r=e.ui.ddmanager.droppables[t.options.scope]||[],a=n?n.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(i=0;i<r.length;i++)if(!(r[i].options.disabled||t&&!r[i].accept.call(r[i].element[0],t.currentItem||t.element))){for(s=0;s<o.length;s++)if(o[s]===r[i].element[0]){r[i].proportions().height=0;continue e}r[i].visible="none"!==r[i].element.css("display"),r[i].visible&&("mousedown"===a&&r[i]._activate.call(r[i],n),r[i].offset=r[i].element.offset(),r[i].proportions({width:r[i].element[0].offsetWidth,height:r[i].element[0].offsetHeight}))}},drop:function(t,n){var i=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),(function(){this.options&&(!this.options.disabled&&this.visible&&b(t,this,this.options.tolerance,n)&&(i=this._drop.call(this,n)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,n)))})),i},dragStart:function(t,n){t.element.parentsUntil("body").on("scroll.droppable",(function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}))},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],(function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var i,s,r,a=b(t,this,this.options.tolerance,n),o=!a&&this.isover?"isout":a&&!this.isover?"isover":null;o&&(this.options.greedy&&(s=this.options.scope,(r=this.element.parents(":data(ui-droppable)").filter((function(){return e(this).droppable("instance").options.scope===s}))).length&&((i=e(r[0]).droppable("instance")).greedyChild="isover"===o)),i&&"isover"===o&&(i.isover=!1,i.isout=!0,i._out.call(i,n)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,n),i&&"isout"===o&&(i.isout=!1,i.isover=!0,i._over.call(i,n)))}}))},dragStop:function(t,n){t.element.parentsUntil("body").off("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}},!1!==e.uiBackCompat&&e.widget("ui.droppable",e.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),e.ui.droppable,e.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=e("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(e){if(void 0===e)return this.options.value;this.options.value=this._constrainedValue(e),this._refreshValue()},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=!1===e,"number"!=typeof e&&(e=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this.element.attr("aria-disabled",e),this._toggleClass(null,"ui-state-disabled",!!e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(n.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t.elementPos=e(t.element[0]).offset(),t.selectees=e(t.options.filter,t.element[0]),t._addClass(t.selectees,"ui-selectee"),t.selectees.each((function(){var n=e(this),i=n.offset(),s={left:i.left-t.elementPos.left,top:i.top-t.elementPos.top};e.data(this,"selectable-item",{element:this,$element:n,left:s.left,top:s.top,right:s.left+n.outerWidth(),bottom:s.top+n.outerHeight(),startselected:!1,selected:n.hasClass("ui-selected"),selecting:n.hasClass("ui-selecting"),unselecting:n.hasClass("ui-unselecting")})}))},this.refresh(),this._mouseInit(),this.helper=e("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(t){var n=this,i=this.options;this.opos=[t.pageX,t.pageY],this.elementPos=e(this.element[0]).offset(),this.options.disabled||(this.selectees=e(i.filter,this.element[0]),this._trigger("start",t),e(i.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),i.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each((function(){var i=e.data(this,"selectable-item");i.startselected=!0,t.metaKey||t.ctrlKey||(n._removeClass(i.$element,"ui-selected"),i.selected=!1,n._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,n._trigger("unselecting",t,{unselecting:i.element}))})),e(t.target).parents().addBack().each((function(){var i,s=e.data(this,"selectable-item");if(s)return i=!t.metaKey&&!t.ctrlKey||!s.$element.hasClass("ui-selected"),n._removeClass(s.$element,i?"ui-unselecting":"ui-selected")._addClass(s.$element,i?"ui-selecting":"ui-unselecting"),s.unselecting=!i,s.selecting=i,s.selected=i,i?n._trigger("selecting",t,{selecting:s.element}):n._trigger("unselecting",t,{unselecting:s.element}),!1})))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var n,i=this,s=this.options,r=this.opos[0],a=this.opos[1],o=t.pageX,l=t.pageY;return r>o&&(n=o,o=r,r=n),a>l&&(n=l,l=a,a=n),this.helper.css({left:r,top:a,width:o-r,height:l-a}),this.selectees.each((function(){var n=e.data(this,"selectable-item"),u=!1,d={};n&&n.element!==i.element[0]&&(d.left=n.left+i.elementPos.left,d.right=n.right+i.elementPos.left,d.top=n.top+i.elementPos.top,d.bottom=n.bottom+i.elementPos.top,"touch"===s.tolerance?u=!(d.left>o||d.right<r||d.top>l||d.bottom<a):"fit"===s.tolerance&&(u=d.left>r&&d.right<o&&d.top>a&&d.bottom<l),u?(n.selected&&(i._removeClass(n.$element,"ui-selected"),n.selected=!1),n.unselecting&&(i._removeClass(n.$element,"ui-unselecting"),n.unselecting=!1),n.selecting||(i._addClass(n.$element,"ui-selecting"),n.selecting=!0,i._trigger("selecting",t,{selecting:n.element}))):(n.selecting&&((t.metaKey||t.ctrlKey)&&n.startselected?(i._removeClass(n.$element,"ui-selecting"),n.selecting=!1,i._addClass(n.$element,"ui-selected"),n.selected=!0):(i._removeClass(n.$element,"ui-selecting"),n.selecting=!1,n.startselected&&(i._addClass(n.$element,"ui-unselecting"),n.unselecting=!0),i._trigger("unselecting",t,{unselecting:n.element}))),n.selected&&(t.metaKey||t.ctrlKey||n.startselected||(i._removeClass(n.$element,"ui-selected"),n.selected=!1,i._addClass(n.$element,"ui-unselecting"),n.unselecting=!0,i._trigger("unselecting",t,{unselecting:n.element})))))})),!1}},_mouseStop:function(t){var n=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each((function(){var i=e.data(this,"selectable-item");n._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1,i.startselected=!1,n._trigger("unselected",t,{unselected:i.element})})),e(".ui-selecting",this.element[0]).each((function(){var i=e.data(this,"selectable-item");n._removeClass(i.$element,"ui-selecting")._addClass(i.$element,"ui-selected"),i.selecting=!1,i.selected=!0,i.startselected=!0,n._trigger("selected",t,{selected:i.element})})),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",[e.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=e()},_drawButton:function(){var t,n=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=e("<span>").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",(function(){n._rendered||n._refreshMenu()}))},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(e,n){e.preventDefault(),t._setSelection(),t._select(n.item.data("ui-selectmenu-item"),e)},focus:function(e,n){var i=n.item.data("ui-selectmenu-item");null!=t.focusIndex&&i.index!==t.focusIndex&&(t._trigger("focus",e,{item:i}),t.isOpen||t._select(i,e)),t.focusIndex=i.index,t.button.attr("aria-activedescendant",t.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var e,t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e)))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var n=e("<span>");return this._setText(n,t.label),this._addClass(n,"ui-selectmenu-text"),n},_renderMenu:function(t,n){var i=this,s="";e.each(n,(function(n,r){var a;r.optgroup!==s&&(a=e("<li>",{text:r.optgroup}),i._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(r.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(t),s=r.optgroup),i._renderItemData(t,r)}))},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,n){var i=e("<li>"),s=e("<div>",{title:n.element.attr("title")});return n.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,n.label),i.append(s).appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var n,i,s=".ui-menu-item";this.isOpen?n=this.menuItems.eq(this.focusIndex).parent("li"):(n=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(i="first"===e||"last"===e?n["first"===e?"prevAll":"nextAll"](s).eq(-1):n[e+"All"](s).eq(0)).length&&this.menuInstance.focus(t,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?((e=window.getSelection()).removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+e.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection()).rangeCount&&(this.range=e.getRangeAt(0)):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var n=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),n=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),n=!1}n&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex).parent("li");t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var n=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(e)),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==n&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){if("icons"===e){var n=this.button.find("span.ui-icon");this._removeClass(n,null,this.options.icons.button)._addClass(n,null,t.button)}this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"width"===e&&this._resizeButton()},_setOptionDisabled:function(e){this._super(e),this.menuInstance.option("disabled",e),this.button.attr("aria-disabled",e),this._toggleClass(this.button,null,"ui-state-disabled",e),this.element.prop("disabled",e),e?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;!1!==e?(null===e&&(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var e=this._super();return e.disabled=this.element.prop("disabled"),e},_parseOptions:function(t){var n=this,i=[];t.each((function(t,s){i.push(n._parseOption(e(s),t))})),this.items=i},_parseOption:function(e,t){var n=e.parent("optgroup");return{element:e,index:t,value:e.val(),label:e.text(),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||e.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),e.widget("ui.slider",e.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,n,i=this.options,s=this.element.find(".ui-slider-handle"),r=[];for(n=i.values&&i.values.length||1,s.length>n&&(s.slice(n).remove(),s=s.slice(0,n)),t=s.length;t<n;t++)r.push("<span tabindex='0'></span>");this.handles=s.add(e(r.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each((function(t){e(this).data("ui-slider-handle-index",t).attr("tabIndex",0)}))},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=e("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var n,i,s,r,a,o,l,u=this,d=this.options;return!d.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(n),s=this._valueMax()-this._valueMin()+1,this.handles.each((function(t){var n=Math.abs(i-u.values(t));(s>n||s===n&&(t===u._lastChangedValue||u.values(t)===d.min))&&(s=n,r=e(this),a=t)})),!1!==this._start(t,a)&&(this._mouseSliding=!0,this._handleIndex=a,this._addClass(r,null,"ui-state-active"),r.trigger("focus"),o=r.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-o.left-r.width()/2,top:t.pageY-o.top-r.height()/2-(parseInt(r.css("borderTopWidth"),10)||0)-(parseInt(r.css("borderBottomWidth"),10)||0)+(parseInt(r.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,a,i),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,i,s,r;return"horizontal"===this.orientation?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(i=n/t)>1&&(i=1),i<0&&(i=0),"vertical"===this.orientation&&(i=1-i),s=this._valueMax()-this._valueMin(),r=this._valueMin()+i*s,this._trimAlignValue(r)},_uiHash:function(e,t,n){var i={handle:this.handles[e],handleIndex:e,value:void 0!==t?t:this.value()};return this._hasMultipleValues()&&(i.value=void 0!==t?t:this.values(e),i.values=n||this.values()),i},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(e,t){return this._trigger("start",e,this._uiHash(t))},_slide:function(e,t,n){var i,s=this.value(),r=this.values();this._hasMultipleValues()&&(i=this.values(t?0:1),s=this.values(t),2===this.options.values.length&&!0===this.options.range&&(n=0===t?Math.min(i,n):Math.max(i,n)),r[t]=n),n!==s&&!1!==this._trigger("slide",e,this._uiHash(t,n,r))&&(this._hasMultipleValues()?this.values(t,n):this.value(n))},_stop:function(e,t){this._trigger("stop",e,this._uiHash(t))},_change:function(e,t){this._keySliding||this._mouseSliding||(this._lastChangedValue=t,this._trigger("change",e,this._uiHash(t)))},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,n){var i,s,r;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,s=arguments[0],r=0;r<i.length;r+=1)i[r]=this._trimAlignValue(s[r]),this._change(null,r);this._refreshValue()},_setOption:function(t,n){var i,s=0;switch("range"===t&&!0===this.options.range&&("min"===n?(this.options.value=this._values(0),this.options.values=null):"max"===n&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(s=this.options.values.length),this._super(t,n),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(n),this.handles.css("horizontal"===n?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=s-1;i>=0;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(e){this._super(e),this._toggleClass(null,"ui-state-disabled",!!e)},_value:function(){var e=this.options.value;return this._trimAlignValue(e)},_values:function(e){var t,n,i;if(arguments.length)return t=this.options.values[e],this._trimAlignValue(t);if(this._hasMultipleValues()){for(n=this.options.values.slice(),i=0;i<n.length;i+=1)n[i]=this._trimAlignValue(n[i]);return n}return[]},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,i=e-n;return 2*Math.abs(n)>=t&&(i+=n>0?t:-t),parseFloat(i.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),n=this.options.step;(e=Math.round((e-t)/n)*n+t)>this.options.max&&(e-=n),this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return-1===n?0:t.length-n-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(e){"vertical"===e&&this.range.css({width:"",left:""}),"horizontal"===e&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var t,n,i,s,r,a=this.options.range,o=this.options,l=this,u=!this._animateOff&&o.animate,d={};this._hasMultipleValues()?this.handles.each((function(i){n=(l.values(i)-l._valueMin())/(l._valueMax()-l._valueMin())*100,d["horizontal"===l.orientation?"left":"bottom"]=n+"%",e(this).stop(1,1)[u?"animate":"css"](d,o.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===i&&l.range.stop(1,1)[u?"animate":"css"]({left:n+"%"},o.animate),1===i&&l.range[u?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:o.animate})):(0===i&&l.range.stop(1,1)[u?"animate":"css"]({bottom:n+"%"},o.animate),1===i&&l.range[u?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:o.animate}))),t=n})):(i=this.value(),s=this._valueMin(),r=this._valueMax(),n=r!==s?(i-s)/(r-s)*100:0,d["horizontal"===this.orientation?"left":"bottom"]=n+"%",this.handle.stop(1,1)[u?"animate":"css"](d,o.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:n+"%"},o.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:100-n+"%"},o.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:n+"%"},o.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:100-n+"%"},o.animate))},_handleEvents:{keydown:function(t){var n,i,s,r=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(e(t.target),null,"ui-state-active"),!1===this._start(t,r)))return}switch(s=this.options.step,n=i=this._hasMultipleValues()?this.values(r):this.value(),t.keyCode){case e.ui.keyCode.HOME:i=this._valueMin();break;case e.ui.keyCode.END:i=this._valueMax();break;case e.ui.keyCode.PAGE_UP:i=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(n===this._valueMax())return;i=this._trimAlignValue(n+s);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(n===this._valueMin())return;i=this._trimAlignValue(n-s)}this._slide(t,r,i)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),this._removeClass(e(t.target),null,"ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,n){return e>=t&&e<t+n},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){var t=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),e.each(this.items,(function(){t._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")}))},_destroy:function(){this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,n){var i=null,s=!1,r=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(t),e(t.target).parents().each((function(){if(e.data(this,r.widgetName+"-item")===r)return i=e(this),!1})),e.data(t.target,r.widgetName+"-item")===r&&(i=e(t.target)),!i||this.options.handle&&!n&&(e(this.options.handle,i).find("*").addBack().each((function(){this===t.target&&(s=!0)})),!s)||(this.currentItem=i,this._removeCurrentsFromItems(),0)))},_mouseStart:function(t,n,i){var s,r,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(r=this.document.find("body"),this.storedCursor=r.css("cursor"),r.css("cursor",a.cursor),this.storedStylesheet=e("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(r)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var n,i,s,r,a=this.options,o=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+a.scrollSpeed:t.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+a.scrollSpeed:t.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(t.pageY-this.document.scrollTop()<a.scrollSensitivity?o=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<a.scrollSensitivity&&(o=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),t.pageX-this.document.scrollLeft()<a.scrollSensitivity?o=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(o=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),!1!==o&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),n=this.items.length-1;n>=0;n--)if(s=(i=this.items[n]).item[0],(r=this._intersectsWithPointer(i))&&i.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===r?"next":"prev"]()[0]===s||e.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&e.contains(this.element[0],s))){if(this.direction=1===r?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var i=this,s=this.placeholder.offset(),r=this.options.axis,a={};r&&"x"!==r||(a.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),r&&"y"!==r||(a.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(a,parseInt(this.options.revert,10)||500,(function(){i._clear(t)}))}else this._clear(t,n);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new e.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e(n).each((function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);n&&i.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))})),!i.length&&t.key&&i.push(t.key+"="),i.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},n.each((function(){i.push(e(t.item||this).attr(t.attribute||"id")||"")})),i},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,i=this.positionAbs.top,s=i+this.helperProportions.height,r=e.left,a=r+e.width,o=e.top,l=o+e.height,u=this.offset.click.top,d=this.offset.click.left,c="x"===this.options.axis||i+u>o&&i+u<l,h="y"===this.options.axis||t+d>r&&t+d<a,p=c&&h;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:r<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<a&&o<i+this.helperProportions.height/2&&s-this.helperProportions.height/2<l},_intersectsWithPointer:function(e){var t,n,i="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),s="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width);return!(!i||!s)&&(t=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection(),this.floating?"right"===n||"down"===t?2:1:t&&("down"===t?2:1))},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),n=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?"right"===s&&n||"left"===s&&!n:i&&("down"===i&&t||"up"===i&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n,i,s,r,a=[],o=[],l=this._connectWith();if(l&&t)for(n=l.length-1;n>=0;n--)for(i=(s=e(l[n],this.document[0])).length-1;i>=0;i--)(r=e.data(s[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&o.push([e.isFunction(r.options.items)?r.options.items.call(r.element):e(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);function u(){a.push(this)}for(o.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),n=o.length-1;n>=0;n--)o[n][0].each(u);return e(a)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,(function(e){for(var n=0;n<t.length;n++)if(t[n]===e.item[0])return!1;return!0}))},_refreshItems:function(t){this.items=[],this.containers=[this];var n,i,s,r,a,o,l,u,d=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(n=h.length-1;n>=0;n--)for(i=(s=e(h[n],this.document[0])).length-1;i>=0;i--)(r=e.data(s[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&(c.push([e.isFunction(r.options.items)?r.options.items.call(r.element[0],t,{item:this.currentItem}):e(r.options.items,r.element),r]),this.containers.push(r));for(n=c.length-1;n>=0;n--)for(a=c[n][1],i=0,u=(o=c[n][0]).length;i<u;i++)(l=e(o[i])).data(this.widgetName+"-item",a),d.push({item:l,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(t){var n,i,s,r;for(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),n=this.items.length-1;n>=0;n--)(i=this.items[n]).instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(s=this.options.toleranceElement?e(this.options.toleranceElement,i.item):i.item,t||(i.width=s.outerWidth(),i.height=s.outerHeight()),r=s.offset(),i.left=r.left,i.top=r.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(n=this.containers.length-1;n>=0;n--)r=this.containers[n].element.offset(),this.containers[n].containerCache.left=r.left,this.containers[n].containerCache.top=r.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight();return this},_createPlaceholder:function(t){var n,i=(t=t||this).options;i.placeholder&&i.placeholder.constructor!==String||(n=i.placeholder,i.placeholder={element:function(){var i=t.currentItem[0].nodeName.toLowerCase(),s=e("<"+i+">",t.document[0]);return t._addClass(s,"ui-sortable-placeholder",n||t.currentItem[0].className)._removeClass(s,"ui-sortable-helper"),"tbody"===i?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(s)):"tr"===i?t._createTrPlaceholder(t.currentItem,s):"img"===i&&s.attr("src",t.currentItem.attr("src")),n||s.css("visibility","hidden"),s},update:function(e,s){n&&!i.forcePlaceholderSize||(s.height()||s.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),s.width()||s.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(i.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),i.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,n){var i=this;t.children().each((function(){e("<td> </td>",i.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}))},_contactContainers:function(t){var n,i,s,r,a,o,l,u,d,c,h=null,p=null;for(n=this.containers.length-1;n>=0;n--)if(!e.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(h&&e.contains(this.containers[n].element[0],h.element[0]))continue;h=this.containers[n],p=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",t,this._uiHash(this)),this.containers[n].containerCache.over=0);if(h)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(s=1e4,r=null,a=(d=h.floating||this._isFloating(this.currentItem))?"left":"top",o=d?"width":"height",c=d?"pageX":"pageY",i=this.items.length-1;i>=0;i--)e.contains(this.containers[p].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(l=this.items[i].item.offset()[a],u=!1,t[c]-l>this.items[i][o]/2&&(u=!0),Math.abs(t[c]-l)<s&&(s=Math.abs(t[c]-l),r=this.items[i],this.direction=u?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return void(this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1));r?this._rearrange(t,r,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var n=this.options,i=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):"clone"===n.helper?this.currentItem.clone():this.currentItem;return i.parents("body").length||e("parent"!==n.appendTo?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(i[0]),i[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),i[0].style.width&&!n.forceHelperSize||i.width(this.currentItem.width()),i[0].style.height&&!n.forceHelperSize||i.height(this.currentItem.height()),i},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,i,s=this.options;"parent"===s.containment&&(s.containment=this.helper[0].parentNode),"document"!==s.containment&&"window"!==s.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===s.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===s.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(s.containment)||(t=e(s.containment)[0],n=e(s.containment).offset(),i="hidden"!==e(t).css("overflow"),this.containment=[n.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,n.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,n.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,n.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,n){n||(n=this.position);var i="absolute"===t?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:s.scrollTop())*i,left:n.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:s.scrollLeft())*i}},_generatePosition:function(t){var n,i,s=this.options,r=t.pageX,a=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(r=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(r=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),s.grid&&(n=this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1],a=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-s.grid[1]:n+s.grid[1]:n,i=this.originalPageX+Math.round((r-this.originalPageX)/s.grid[0])*s.grid[0],r=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-s.grid[0]:i+s.grid[0]:i)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():l?0:o.scrollTop()),left:r-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():l?0:o.scrollLeft())}},_rearrange:function(e,t,n,i){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var s=this.counter;this._delay((function(){s===this.counter&&this.refreshPositions(!i)}))},_clear:function(e,t){this.reverting=!1;var n,i=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(n in this._storedCSS)"auto"!==this._storedCSS[n]&&"static"!==this._storedCSS[n]||(this._storedCSS[n]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function s(e,t,n){return function(i){n._trigger(e,i,t._uiHash(t))}}for(this.fromOutside&&!t&&i.push((function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))})),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||i.push((function(e){this._trigger("update",e,this._uiHash())})),this!==this.currentContainer&&(t||(i.push((function(e){this._trigger("remove",e,this._uiHash())})),i.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),n=this.containers.length-1;n>=0;n--)t||i.push(s("deactivate",this,this.containers[n])),this.containers[n].containerCache.over&&(i.push(s("out",this,this.containers[n])),this.containers[n].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(n=0;n<i.length;n++)i[n].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===e.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t=this._super(),n=this.element;return e.each(["min","max","step"],(function(e,i){var s=n.attr(i);null!=s&&s.length&&(t[i]=s)})),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e))},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay((function(){this.spinning&&this._stop(e)}),100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){var n;function i(){this.element[0]===e.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=n,this._delay((function(){this.previous=n})))}n=this.element[0]===e.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay((function(){delete this.cancelBlur,i.call(this)})),!1!==this._start(t)&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(e(t.currentTarget).hasClass("ui-state-active"))return!1!==this._start(t)&&void this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(t){var n=this.options,i=e.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,n.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_start:function(e){return!(!this.spinning&&!1===this._trigger("start",e)||(this.counter||(this.counter=1),this.spinning=!0,0))},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay((function(){this._repeat(40,t,n)}),e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",t,{value:n})||(this._value(n),this.counter++)},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return-1===n?0:t.length-n-1},_adjustValue:function(e){var t,n,i=this.options;return n=e-(t=null!==i.min?i.min:0),e=t+(n=Math.round(n/i.step)*i.step),e=parseFloat(e.toFixed(this._precision())),null!==i.max&&e>i.max?i.max:null!==i.min&&e<i.min?i.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){var n,i,s;if("culture"===e||"numberFormat"===e)return n=this._parse(this.element.val()),this.options[e]=t,void this.element.val(this._format(n));"max"!==e&&"min"!==e&&"step"!==e||"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,t.up),s=this.buttons.last().find(".ui-icon"),this._removeClass(s,null,this.options.icons.down),this._addClass(s,null,t.down)),this._super(e,t)},_setOptionDisabled:function(e){this._super(e),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!e),this.element.prop("disabled",!!e),this.buttons.button(e?"disable":"enable")},_setOptions:w((function(e){this._super(e)})),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null!==e&&e===this._adjustValue(e)},_value:function(e,t){var n;""!==e&&null!==(n=this._parse(e))&&(t||(n=this._adjustValue(n)),e=this._format(n)),this.element.val(e),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:w((function(e){this._stepUp(e)})),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:w((function(e){this._stepDown(e)})),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:w((function(e){this._stepUp((e||1)*this.options.page)})),pageDown:w((function(e){this._stepDown((e||1)*this.options.page)})),value:function(e){if(!arguments.length)return this._parse(this.element.val());w(this._value).call(this,e)},widget:function(){return this.uiSpinner}}),!1!==e.uiBackCompat&&e.widget("ui.spinner",e.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),e.ui.spinner,e.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(y=/#.*$/,function(e){var t,n;t=e.href.replace(y,""),n=location.href.replace(y,"");try{t=decodeURIComponent(t)}catch(e){}try{n=decodeURIComponent(n)}catch(e){}return e.hash.length>1&&t===n}),_create:function(){var t=this,n=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,n.collapsible),this._processTabs(),n.active=this._initialActive(),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),(function(e){return t.tabs.index(e)})))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(n.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var t=this.options.active,n=this.options.collapsible,i=location.hash.substring(1);return null===t&&(i&&this.tabs.each((function(n,s){if(e(s).attr("aria-controls")===i)return t=n,!1})),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),null!==t&&-1!==t||(t=!!this.tabs.length&&0)),!1!==t&&-1===(t=this.tabs.index(this.tabs.eq(t)))&&(t=!n&&0),!n&&!1===t&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(e.ui.safeActiveElement(this.document[0])).closest("li"),i=this.tabs.index(n),s=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:i++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:s=!1,i--;break;case e.ui.keyCode.END:i=this.anchors.length-1;break;case e.ui.keyCode.HOME:i=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i!==this.options.active&&i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,s),t.ctrlKey||t.metaKey||(n.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay((function(){this.option("active",i)}),this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,n){for(var i=this.tabs.length-1;-1!==e.inArray((t>i&&(t=0),t<0&&(t=i),t),this.options.disabled);)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).trigger("focus"),e},_setOption:function(e,t){"active"!==e?(this._super(e,t),"collapsible"===e&&(this._toggleClass("ui-tabs-collapsible",null,t),t||!1!==this.options.active||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t)):this._activate(t)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),(function(e){return n.index(e)})),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,n=this.tabs,i=this.anchors,s=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",(function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()})).on("focus"+this.eventNamespace,".ui-tabs-anchor",(function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()})),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map((function(){return e("a",this)[0]})).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=e(),this.anchors.each((function(n,i){var s,r,a,o=e(i).uniqueId().attr("id"),l=e(i).closest("li"),u=l.attr("aria-controls");t._isLocal(i)?(a=(s=i.hash).substring(1),r=t.element.find(t._sanitizeSelector(s))):(s="#"+(a=l.attr("aria-controls")||e({}).uniqueId()[0].id),(r=t.element.find(s)).length||(r=t._createPanel(a)).insertAfter(t.panels[n-1]||t.tablist),r.attr("aria-live","polite")),r.length&&(t.panels=t.panels.add(r)),u&&l.data("ui-tabs-aria-controls",u),l.attr({"aria-controls":a,"aria-labelledby":o}),r.attr("aria-labelledby",o)})),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),n&&(this._off(n.not(this.tabs)),this._off(i.not(this.anchors)),this._off(s.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var n,i,s;for(e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),s=0;i=this.tabs[s];s++)n=e(i),!0===t||-1!==e.inArray(s,t)?(n.attr("aria-disabled","true"),this._addClass(n,null,"ui-state-disabled")):(n.removeAttr("aria-disabled"),this._removeClass(n,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var n={};t&&e.each(t.split(" "),(function(e,t){n[t]="_eventHandler"})),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,i=this.element.parent();"fill"===t?(n=i.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each((function(){var t=e(this),i=t.css("position");"absolute"!==i&&"fixed"!==i&&(n-=t.outerHeight(!0))})),this.element.children().not(this.panels).each((function(){n-=e(this).outerHeight(!0)})),this.panels.each((function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))})).css("overflow","auto")):"auto"===t&&(n=0,this.panels.each((function(){n=Math.max(n,e(this).height("").height())})).height(n))},_eventHandler:function(t){var n=this.options,i=this.active,s=e(t.currentTarget).closest("li"),r=s[0]===i[0],a=r&&n.collapsible,o=a?e():this._getPanelForTab(s),l=i.length?this._getPanelForTab(i):e(),u={oldTab:i,oldPanel:l,newTab:a?e():s,newPanel:o};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||r&&!n.collapsible||!1===this._trigger("beforeActivate",t,u)||(n.active=!a&&this.tabs.index(s),this.active=r?e():s,this.xhr&&this.xhr.abort(),l.length||o.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),o.length&&this.load(this.tabs.index(s),t),this._toggle(t,u))},_toggle:function(t,n){var i=this,s=n.newPanel,r=n.oldPanel;function a(){i.running=!1,i._trigger("activate",t,n)}function o(){i._addClass(n.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,a):(s.show(),a())}this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,(function(){i._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),o()})):(this._removeClass(n.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),o()),r.attr("aria-hidden","true"),n.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&r.length?n.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter((function(){return 0===e(this).attr("tabIndex")})).attr("tabIndex",-1),s.attr("aria-hidden","false"),n.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var n,i=this._findActive(t);i[0]!==this.active[0]&&(i.length||(i=this.active),n=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop}))},_findActive:function(t){return!1===t?e():this.tabs.eq(t)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+e.ui.escapeSelector(t)+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each((function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")})),this.tabs.each((function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")})),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var n=this.options.disabled;!1!==n&&(void 0===t?n=!1:(t=this._getIndex(t),n=e.isArray(n)?e.map(n,(function(e){return e!==t?e:null})):e.map(this.tabs,(function(e,n){return n!==t?n:null}))),this._setOptionDisabled(n))},disable:function(t){var n=this.options.disabled;if(!0!==n){if(void 0===t)n=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,n))return;n=e.isArray(n)?e.merge([t],n).sort():[t]}this._setOptionDisabled(n)}},load:function(t,n){t=this._getIndex(t);var i=this,s=this.tabs.eq(t),r=s.find(".ui-tabs-anchor"),a=this._getPanelForTab(s),o={tab:s,panel:a},l=function(e,t){"abort"===t&&i.panels.stop(!1,!0),i._removeClass(s,"ui-tabs-loading"),a.removeAttr("aria-busy"),e===i.xhr&&delete i.xhr};this._isLocal(r[0])||(this.xhr=e.ajax(this._ajaxSettings(r,n,o)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(s,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done((function(e,t,s){setTimeout((function(){a.html(e),i._trigger("load",n,o),l(s,t)}),1)})).fail((function(e,t){setTimeout((function(){l(e,t)}),1)}))))},_ajaxSettings:function(t,n,i){var s=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,r){return s._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:r},i))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),!1!==e.uiBackCompat&&e.widget("ui.tabs",e.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),e.ui.tabs,e.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,n){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(i.join(" ")))},_removeDescribedBy:function(t){var n=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),s=e.inArray(n,i);-1!==s&&i.splice(s,1),t.removeData("ui-tooltip-id"),(i=e.trim(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=e([])},_setOption:function(t,n){var i=this;this._super(t,n),"content"===t&&e.each(this.tooltips,(function(e,t){i._updateContent(t.element)}))},_setOptionDisabled:function(e){this[e?"_disable":"_enable"]()},_disable:function(){var t=this;e.each(this.tooltips,(function(n,i){var s=e.Event("blur");s.target=s.currentTarget=i.element[0],t.close(s,!0)})),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter((function(){var t=e(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})))},_enable:function(){this.disabledTitles.each((function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})),this.disabledTitles=e([])},open:function(t){var n=this,i=e(t?t.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&i.parents().each((function(){var t,i=e(this);i.data("ui-tooltip-open")&&((t=e.Event("blur")).target=t.currentTarget=this,n.close(t,!0)),i.attr("title")&&(i.uniqueId(),n.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))})),this._registerCloseHandlers(t,i),this._updateContent(i,t))},_updateContent:function(e,t){var n,i=this.options.content,s=this,r=t?t.type:null;if("string"==typeof i||i.nodeType||i.jquery)return this._open(t,e,i);(n=i.call(e[0],(function(n){s._delay((function(){e.data("ui-tooltip-open")&&(t&&(t.type=r),this._open(t,e,n))}))})))&&this._open(t,e,n)},_open:function(t,n,i){var s,r,a,o,l=e.extend({},this.options.position);function u(e){l.of=e,r.is(":hidden")||r.position(l)}i&&((s=this._find(n))?s.tooltip.find(".ui-tooltip-content").html(i):(n.is("[title]")&&(t&&"mouseover"===t.type?n.attr("title",""):n.removeAttr("title")),s=this._tooltip(n),r=s.tooltip,this._addDescribedBy(n,r.attr("id")),r.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=e("<div>").html(r.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:u}),u(t)):r.position(e.extend({of:n},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(a=this.delayedShow=setInterval((function(){r.is(":visible")&&(u(l.of),clearInterval(a))}),e.fx.interval)),this._trigger("open",t,{tooltip:r})))},_registerCloseHandlers:function(t,n){var i={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var i=e.Event(t);i.currentTarget=n[0],this.close(i,!0)}}};n[0]!==this.element[0]&&(i.remove=function(){this._removeTooltip(this._find(n).tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,n,i)},close:function(t){var n,i=this,s=e(t?t.currentTarget:this.element),r=this._find(s);r?(n=r.tooltip,r.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),r.hiding=!0,n.stop(!0),this._hide(n,this.options.hide,(function(){i._removeTooltip(e(this))})),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,(function(t,n){e(n.element).attr("title",n.title),delete i.parents[t]})),r.closing=!0,this._trigger("close",t,{tooltip:n}),r.hiding||(r.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var n=e("<div>").attr("role","tooltip"),i=e("<div>").appendTo(n),s=n.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(n,"ui-tooltip","ui-widget ui-widget-content"),n.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:n}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_appendTo:function(e){var t=e.closest(".ui-front, dialog");return t.length||(t=this.document[0].body),t},_destroy:function(){var t=this;e.each(this.tooltips,(function(n,i){var s=e.Event("blur"),r=i.element;s.target=s.currentTarget=r[0],t.close(s,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title")||r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})),this.liveRegion.remove()}}),!1!==e.uiBackCompat&&e.widget("ui.tooltip",e.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var e=this._superApply(arguments);return this.options.tooltipClass&&e.tooltip.addClass(this.options.tooltipClass),e}}),e.ui.tooltip},"function"==typeof e&&e.amd?e(["jquery"],t):t(i)}).call(window,!1)},37337:(e,t,n)=>{(function(e,t){var i;i=function(e){var t,n,i,s,r,a,o="Close",l="MarkupParse",u="Open",d="Change",c=".mfp",h="mfp-ready",p="mfp-prevent-close",f=function(){},m=!!window.jQuery,_=e(window),g=function(e,n){t.ev.on("mfp"+e+c,n)},v=function(t,n,i,s){var r=document.createElement("div");return r.className="mfp-"+t,i&&(r.innerHTML=i),s?n&&n.appendChild(r):(r=e(r),n&&r.appendTo(n)),r},y=function(n,i){t.ev.triggerHandler("mfp"+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},b=function(n){return n===a&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),a=n),t.currTemplate.closeBtn},w=function(){e.magnificPopup.instance||((t=new f).init(),e.magnificPopup.instance=t)};f.prototype={constructor:f,init:function(){var n=navigator.appVersion;t.isLowIE=t.isIE8=document.all&&!document.addEventListener,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1}(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),i=e(document),t.popupsCache={}},open:function(n){var s;if(!1===n.isObj){t.items=n.items.toArray(),t.index=0;var a,o=n.items;for(s=0;s<o.length;s++)if((a=o[s]).parsed&&(a=a.el[0]),a===n.el[0]){t.index=s;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(!t.isOpen){t.types=[],r="",n.mainEl&&n.mainEl.length?t.ev=n.mainEl.eq(0):t.ev=i,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=v("bg").on("click.mfp",(function(){t.close()})),t.wrap=v("wrap").attr("tabindex",-1).on("click.mfp",(function(e){t._checkIfClose(e.target)&&t.close()})),t.container=v("container",t.wrap)),t.contentContainer=v("content"),t.st.preloader&&(t.preloader=v("preloader",t.container,t.st.tLoading));var d=e.magnificPopup.modules;for(s=0;s<d.length;s++){var c=d[s];c=c.charAt(0).toUpperCase()+c.slice(1),t["init"+c].call(t)}y("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(g(l,(function(e,t,n,i){n.close_replaceWith=b(i.type)})),r+=" mfp-close-btn-in"):t.wrap.append(b())),t.st.alignTop&&(r+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:_.scrollTop(),position:"absolute"}),(!1===t.st.fixedBgPos||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:i.height(),position:"absolute"}),t.st.enableEscapeKey&&i.on("keyup.mfp",(function(e){27===e.keyCode&&t.close()})),_.on("resize.mfp",(function(){t.updateSize()})),t.st.closeOnContentClick||(r+=" mfp-auto-cursor"),r&&t.wrap.addClass(r);var p=t.wH=_.height(),f={};if(t.fixedContentPos&&t._hasScrollBar(p)){var m=t._getScrollbarSize();m&&(f.marginRight=m)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):f.overflow="hidden");var w=t.st.mainClass;return t.isIE7&&(w+=" mfp-ie7"),w&&t._addClassToMFP(w),t.updateItemHTML(),y("BuildControls"),e("html").css(f),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||e(document.body)),t._lastFocusedEl=document.activeElement,setTimeout((function(){t.content?(t._addClassToMFP(h),t._setFocus()):t.bgOverlay.addClass(h),i.on("focusin.mfp",t._onFocusIn)}),16),t.isOpen=!0,t.updateSize(p),y(u),n}t.updateItemHTML()},close:function(){t.isOpen&&(y("BeforeClose"),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP("mfp-removing"),setTimeout((function(){t._close()}),t.st.removalDelay)):t._close())},_close:function(){y(o);var n="mfp-removing mfp-ready ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var s={marginRight:""};t.isIE7?e("body, html").css("overflow",""):s.overflow="",e("html").css(s)}i.off("keyup.mfp focusin.mfp"),t.ev.off(c),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&!0!==t.currTemplate[t.currItem.type]||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t.st.autoFocusLast&&t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,y("AfterClose")},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else t.wH=e||_.height();t.fixedContentPos||t.wrap.css("height",t.wH),y("Resize")},updateItemHTML:function(){var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var i=n.type;if(y("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var r=!!t.st[i]&&t.st[i].markup;y("FirstMarkupParse",r),t.currTemplate[i]=!r||e(r)}s&&s!==n.type&&t.container.removeClass("mfp-"+s+"-holder");var a=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(a,i),n.preloaded=!0,y(d,n),s=n.type,t.container.prepend(t.contentContainer),y("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&!0===t.currTemplate[n]?t.content.find(".mfp-close").length||t.content.append(b()):t.content=e:t.content="",y("BeforeAppend"),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var i,s=t.items[n];if(s.tagName?s={el:e(s)}:(i=s.type,s={data:s,src:s.src}),s.el){for(var r=t.types,a=0;a<r.length;a++)if(s.el.hasClass("mfp-"+r[a])){i=r[a];break}s.src=s.el.attr("data-mfp-src"),s.src||(s.src=s.el.attr("href"))}return s.type=i||t.st.type||"inline",s.index=n,s.parsed=!0,t.items[n]=s,y("ElementParse",s),t.items[n]},addGroup:function(e,n){var i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var s="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(s).on(s,i)):(n.isObj=!1,n.delegate?e.off(s).on(s,n.delegate,i):(n.items=e,e.off(s).on(s,i)))},_openClick:function(n,i,s){if((void 0!==s.midClick?s.midClick:e.magnificPopup.defaults.midClick)||!(2===n.which||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey)){var r=void 0!==s.disableOn?s.disableOn:e.magnificPopup.defaults.disableOn;if(r)if(e.isFunction(r)){if(!r.call(t))return!0}else if(_.width()<r)return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),s.el=e(n.mfpEl),s.delegate&&(s.items=i.find(s.delegate)),t.open(s)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var s={status:e,text:i};y("UpdateStatus",s),e=s.status,i=s.text,t.preloader.html(i),t.preloader.find("a").on("click",(function(e){e.stopImmediatePropagation()})),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(p)){var i=t.st.closeOnContentClick,s=t.st.closeOnBgClick;if(i&&s)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else if(s&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?i.height():document.body.scrollHeight)>(e||_.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){if(n.target!==t.wrap[0]&&!e.contains(t.wrap[0],n.target))return t._setFocus(),!1},_parseMarkup:function(t,n,i){var s;i.data&&(n=e.extend(i.data,n)),y(l,[t,n,i]),e.each(n,(function(n,i){if(void 0===i||!1===i)return!0;if((s=n.split("_")).length>1){var r=t.find(".mfp-"+s[0]);if(r.length>0){var a=s[1];"replaceWith"===a?r[0]!==i[0]&&r.replaceWith(i):"img"===a?r.is("img")?r.attr("src",i):r.replaceWith(e("<img>").attr("src",i).attr("class",r.attr("class"))):r.attr(s[1],i)}}else t.find(".mfp-"+n).html(i)}))},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:f.prototype,modules:[],open:function(t,n){return w(),(t=t?e.extend(!0,{},t):{}).isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">×</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},e.fn.magnificPopup=function(n){w();var i=e(this);if("string"==typeof n)if("open"===n){var s,r=m?i.data("magnificPopup"):i[0].magnificPopup,a=parseInt(arguments[1],10)||0;r.items?s=r.items[a]:(s=i,r.delegate&&(s=s.find(r.delegate)),s=s.eq(a)),t._openClick({mfpEl:s},i,r)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),m?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return i};var k,M,L,D="inline",T=function(){L&&(M.after(L.addClass(k)).detach(),L=null)};e.magnificPopup.registerModule(D,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(D),g("Close.inline",(function(){T()}))},getInline:function(n,i){if(T(),n.src){var s=t.st.inline,r=e(n.src);if(r.length){var a=r[0].parentNode;a&&a.tagName&&(M||(k=s.hiddenClass,M=v(k),k="mfp-"+k),L=r.after(M).detach().removeClass(k)),t.updateStatus("ready")}else t.updateStatus("error",s.tNotFound),r=e("<div>");return n.inlineElement=r,r}return t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var x,S="ajax",Y=function(){x&&e(document.body).removeClass(x)},C=function(){Y(),t.req&&t.req.abort()};e.magnificPopup.registerModule(S,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(S),x=t.st.ajax.cursor,g("Close.ajax",C),g("BeforeChange.ajax",C)},getAjax:function(n){x&&e(document.body).addClass(x),t.updateStatus("loading");var i=e.extend({url:n.src,success:function(i,s,r){var a={data:i,xhr:r};y("ParseAjax",a),t.appendContent(e(a.data),S),n.finished=!0,Y(),t._setFocus(),setTimeout((function(){t.wrap.addClass(h)}),16),t.updateStatus("ready"),y("AjaxContentAdded")},error:function(){Y(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(i),""}}});var E,O,A=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,n);if(n.el)return n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var n=t.st.image;t.types.push("image"),g("Open.image",(function(){"image"===t.currItem.type&&n.cursor&&e(document.body).addClass(n.cursor)})),g("Close.image",(function(){n.cursor&&e(document.body).removeClass(n.cursor),_.off("resize.mfp")})),g("Resize.image",t.resizeImage),t.isLowIE&&g("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,E&&clearInterval(E),e.isCheckingImgSize=!1,y("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,i=e.img[0],s=function(r){E&&clearInterval(E),E=setInterval((function(){i.naturalWidth>0?t._onImageHasSize(e):(n>200&&clearInterval(E),3==++n?s(10):40===n?s(50):100===n&&s(500))}),r)};s(1)},getImage:function(n,i){var s=0,r=function(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,y("ImageLoadComplete")):++s<200?setTimeout(r,100):a())},a=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",o.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},o=t.st.image,l=i.find(".mfp-img");if(l.length){var u=document.createElement("img");u.className="mfp-img",n.el&&n.el.find("img").length&&(u.alt=n.el.find("img").attr("alt")),n.img=e(u).on("load.mfploader",r).on("error.mfploader",a),u.src=n.src,l.is("img")&&(n.img=n.img.clone()),(u=n.img[0]).naturalWidth>0?n.hasSize=!0:u.width||(n.hasSize=!1)}return t._parseMarkup(i,{title:A(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(E&&clearInterval(E),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",o.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}}),e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,n=t.st.zoom;if(n.enabled&&t.supportsTransition){var i,s,r=n.duration,a=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+n.duration/1e3+"s "+n.easing,s={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return s["-webkit-"+r]=s["-moz-"+r]=s["-o-"+r]=s[r]=i,t.css(s),t},o=function(){t.content.css("visibility","visible")};g("BuildControls.zoom",(function(){if(t._allowZoom()){if(clearTimeout(i),t.content.css("visibility","hidden"),!(e=t._getItemToZoom()))return void o();(s=a(e)).css(t._getOffset()),t.wrap.append(s),i=setTimeout((function(){s.css(t._getOffset(!0)),i=setTimeout((function(){o(),setTimeout((function(){s.remove(),e=s=null,y("ZoomAnimationEnded")}),16)}),r)}),16)}})),g("BeforeClose.zoom",(function(){if(t._allowZoom()){if(clearTimeout(i),t.st.removalDelay=r,!e){if(!(e=t._getItemToZoom()))return;s=a(e)}s.css(t._getOffset(!0)),t.wrap.append(s),t.content.css("visibility","hidden"),setTimeout((function(){s.css(t._getOffset())}),16)}})),g("Close.zoom",(function(){t._allowZoom()&&(o(),s&&s.remove(),e=null)}))}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return!!t.currItem.hasSize&&t.currItem.img},_getOffset:function(n){var i,s=(i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem)).offset(),r=parseInt(i.css("padding-top"),10),a=parseInt(i.css("padding-bottom"),10);s.top-=e(window).scrollTop()-r;var o={width:i.width(),height:(m?i.innerHeight():i[0].offsetHeight)-a-r};return void 0===O&&(O=void 0!==document.createElement("p").style.MozTransform),O?o["-moz-transform"]=o.transform="translate("+s.left+"px,"+s.top+"px)":(o.left=s.left,o.top=s.top),o}}});var H="iframe",j=function(e){if(t.currTemplate.iframe){var n=t.currTemplate.iframe.find("iframe");n.length&&(e||(n[0].src="//about:blank"),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(H,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(H),g("BeforeChange",(function(e,t,n){t!==n&&(t===H?j():n===H&&j(!0))})),g("Close.iframe",(function(){j()}))},getIframe:function(n,i){var s=n.src,r=t.st.iframe;e.each(r.patterns,(function(){if(s.indexOf(this.index)>-1)return this.id&&(s="string"==typeof this.id?s.substr(s.lastIndexOf(this.id)+this.id.length,s.length):this.id.call(this,s)),s=this.src.replace("%id%",s),!1}));var a={};return r.srcAction&&(a[r.srcAction]=s),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var P=function(e){var n=t.items.length;return e>n-1?e-n:e<0?n+e:e},I=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,s=".mfp-gallery";if(t.direction=!0,!n||!n.enabled)return!1;r+=" mfp-gallery",g(u+s,(function(){n.navigateByImgClick&&t.wrap.on("click"+s,".mfp-img",(function(){if(t.items.length>1)return t.next(),!1})),i.on("keydown"+s,(function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()}))})),g("UpdateStatus"+s,(function(e,n){n.text&&(n.text=I(n.text,t.currItem.index,t.items.length))})),g(l+s,(function(e,i,s,r){var a=t.items.length;s.counter=a>1?I(n.tCounter,r.index,a):""})),g("BuildControls"+s,(function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,s=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(p),r=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(p);s.click((function(){t.prev()})),r.click((function(){t.next()})),t.container.append(s.add(r))}})),g(d+s,(function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout((function(){t.preloadNearbyImages(),t._preloadTimeout=null}),16)})),g(o+s,(function(){i.off(s),t.wrap.off("click"+s),t.arrowRight=t.arrowLeft=null}))},next:function(){t.direction=!0,t.index=P(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=P(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),s=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?s:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:s);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=P(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),y("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",(function(){i.hasSize=!0})).on("error.mfploader",(function(){i.hasSize=!0,i.loadError=!0,y("LazyLoadError",i)})).attr("src",i.src)),i.preloaded=!0}}}});e.magnificPopup.registerModule("retina",{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,(function(e){return"@2x"+e}))},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;(n=isNaN(n)?n():n)>1&&(g("ImageHasSize.retina",(function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})})),g("ElementParse.retina",(function(t,i){i.src=e.replaceSrc(i,n)})))}}}}),w()},"function"==typeof e&&e.amd?e(["jquery"],i):i("object"==typeof t?n(73609):window.jQuery||window.Zepto)}).call(window,!1,!1)},98867:(e,t,n)=>{var i=n(73609);(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?r(e):n}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t){return(a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function u(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}var d=function(){function e(){o(this,e)}return u(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];var r=!0,a=!1,o=void 0;try{for(var l,u=t[Symbol.iterator]();!(r=(l=u.next()).done);r=!0){var d=l.value;d.apply(this,i)}}catch(e){a=!0,o=e}finally{try{r||null==u.return||u.return()}finally{if(a)throw o}}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var i=0;i<n.length;i++){var s=n[i];if(s===t){n.splice(i,1);break}}return this}}]),e}(),c=function(e){function t(e,i){var a,l,u;if(o(this,t),(a=n(this,s(t).call(this))).element=e,a.version=t.version,a.defaultOptions.previewTemplate=a.defaultOptions.previewTemplate.replace(/\n*/g,""),a.clickableElements=[],a.listeners=[],a.files=[],"string"==typeof a.element&&(a.element=document.querySelector(a.element)),!a.element||null==a.element.nodeType)throw new Error("Invalid dropzone element.");if(a.element.dropzone)throw new Error("Dropzone already attached.");t.instances.push(r(a)),a.element.dropzone=r(a);var d=null!=(u=t.optionsForElement(a.element))?u:{};if(a.options=t.extend({},a.defaultOptions,d,null!=i?i:{}),a.options.forceFallback||!t.isBrowserSupported())return n(a,a.options.fallback.call(r(a)));if(null==a.options.url&&(a.options.url=a.element.getAttribute("action")),!a.options.url)throw new Error("No URL provided.");if(a.options.acceptedFiles&&a.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(a.options.uploadMultiple&&a.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return a.options.acceptedMimeTypes&&(a.options.acceptedFiles=a.options.acceptedMimeTypes,delete a.options.acceptedMimeTypes),null!=a.options.renameFilename&&(a.options.renameFile=function(e){return a.options.renameFilename.call(r(a),e.name,e)}),a.options.method=a.options.method.toUpperCase(),(l=a.getExistingFallback())&&l.parentNode&&l.parentNode.removeChild(l),!1!==a.options.previewsContainer&&(a.options.previewsContainer?a.previewsContainer=t.getElement(a.options.previewsContainer,"previewsContainer"):a.previewsContainer=a.element),a.options.clickable&&(!0===a.options.clickable?a.clickableElements=[a.element]:a.clickableElements=t.getElements(a.options.clickable,"clickable")),a.init(),a}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}(t,e),u(t,null,[{key:"initClass",value:function(){this.prototype.Emitter=d,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,n){if(n)return{dzuuid:n.file.upload.uuid,dzchunkindex:n.index,dztotalfilesize:n.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:n.file.upload.totalChunkCount,dzchunkbyteoffset:n.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e;this.element.className="".concat(this.element.className," dz-browser-not-supported");var n=!0,i=!1,s=void 0;try{for(var r,a=this.element.getElementsByTagName("div")[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;if(/(^| )dz-message($| )/.test(o.className)){e=o,o.className="dz-message";break}}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}e||(e=t.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var l=e.getElementsByTagName("span")[0];return l&&(null!=l.textContent?l.textContent=this.options.dictFallbackMessage:null!=l.innerText&&(l.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,i){var s={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},r=e.width/e.height;null==t&&null==n?(t=s.srcWidth,n=s.srcHeight):null==t?t=n*r:null==n&&(n=t/r);var a=(t=Math.min(t,s.srcWidth))/(n=Math.min(n,s.srcHeight));if(s.srcWidth>t||s.srcHeight>n)if("crop"===i)r>a?(s.srcHeight=e.height,s.srcWidth=s.srcHeight*a):(s.srcWidth=e.width,s.srcHeight=s.srcWidth/a);else{if("contain"!==i)throw new Error("Unknown resizeMethod '".concat(i,"'"));r>a?n=t/r:t=n*r}return s.srcX=(e.width-s.srcWidth)/2,s.srcY=(e.height-s.srcHeight)/2,s.trgWidth=t,s.trgHeight=n,s},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Check</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Error</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var n=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){e.previewElement=t.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var i=!0,s=!1,r=void 0;try{for(var a,o=e.previewElement.querySelectorAll("[data-dz-name]")[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l=a.value;l.textContent=e.name}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}var u=!0,d=!1,c=void 0;try{for(var h,p=e.previewElement.querySelectorAll("[data-dz-size]")[Symbol.iterator]();!(u=(h=p.next()).done);u=!0)(l=h.value).innerHTML=this.filesize(e.size)}catch(e){d=!0,c=e}finally{try{u||null==p.return||p.return()}finally{if(d)throw c}}this.options.addRemoveLinks&&(e._removeLink=t.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile,"</a>")),e.previewElement.appendChild(e._removeLink));var f=function(i){return i.preventDefault(),i.stopPropagation(),e.status===t.UPLOADING?t.confirm(n.options.dictCancelUploadConfirmation,(function(){return n.removeFile(e)})):n.options.dictRemoveFileConfirmation?t.confirm(n.options.dictRemoveFileConfirmation,(function(){return n.removeFile(e)})):n.removeFile(e)},m=!0,_=!1,g=void 0;try{for(var v,y=e.previewElement.querySelectorAll("[data-dz-remove]")[Symbol.iterator]();!(m=(v=y.next()).done);m=!0)v.value.addEventListener("click",f)}catch(e){_=!0,g=e}finally{try{m||null==y.return||y.return()}finally{if(_)throw g}}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n=!0,i=!1,s=void 0;try{for(var r,a=e.previewElement.querySelectorAll("[data-dz-thumbnail]")[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;o.alt=e.name,o.src=t}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return setTimeout((function(){return e.previewElement.classList.add("dz-image-preview")}),1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"String"!=typeof t&&t.error&&(t=t.error);var n=!0,i=!1,s=void 0;try{for(var r,a=e.previewElement.querySelectorAll("[data-dz-errormessage]")[Symbol.iterator]();!(n=(r=a.next()).done);n=!0)r.value.textContent=t}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var i=!0,s=!1,r=void 0;try{for(var a,o=e.previewElement.querySelectorAll("[data-dz-uploadprogress]")[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l=a.value;"PROGRESS"===l.nodeName?l.value=t:l.style.width="".concat(t,"%")}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var s=0,r=n;s<r.length;s++){var a=r[s];for(var o in a){var l=a[o];e[o]=l}}return e}}]),u(t,[{key:"getAcceptedFiles",value:function(){return this.files.filter((function(e){return e.accepted})).map((function(e){return e}))}},{key:"getRejectedFiles",value:function(){return this.files.filter((function(e){return!e.accepted})).map((function(e){return e}))}},{key:"getFilesWithStatus",value:function(e){return this.files.filter((function(t){return t.status===e})).map((function(e){return e}))}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(t.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(t.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(t.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter((function(e){return e.status===t.UPLOADING||e.status===t.QUEUED})).map((function(e){return e}))}},{key:"init",value:function(){var e=this;"form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(t.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage,"</button></div>"))),this.clickableElements.length&&function n(){return e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",t.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",(function(){var t=e.hiddenFileInput.files;if(t.length){var i=!0,s=!1,r=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l=a.value;e.addFile(l)}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}}return e.emit("addedfiles",t),n()}))}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var n=!0,i=!1,s=void 0;try{for(var r,a=this.events[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;this.on(o,this.options[o])}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}this.on("uploadprogress",(function(){return e.updateTotalUploadProgress()})),this.on("removedfile",(function(){return e.updateTotalUploadProgress()})),this.on("canceled",(function(t){return e.emit("complete",t)})),this.on("complete",(function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout((function(){return e.emit("queuecomplete")}),0)}));var l=function(e){if(function(e){return e.dataTransfer.types&&e.dataTransfer.types.some((function(e){return"Files"==e}))}(e))return e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1};return this.listeners=[{element:this.element,events:{dragstart:function(t){return e.emit("dragstart",t)},dragenter:function(t){return l(t),e.emit("dragenter",t)},dragover:function(t){var n;try{n=t.dataTransfer.effectAllowed}catch(e){}return t.dataTransfer.dropEffect="move"===n||"linkMove"===n?"move":"copy",l(t),e.emit("dragover",t)},dragleave:function(t){return e.emit("dragleave",t)},drop:function(t){return l(t),e.drop(t)},dragend:function(t){return e.emit("dragend",t)}}}],this.clickableElements.forEach((function(n){return e.listeners.push({element:n,events:{click:function(i){return(n!==e.element||i.target===e.element||t.elementInside(i.target,e.element.querySelector(".dz-message")))&&e.hiddenFileInput.click(),!0}}})})),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),(null!=this.hiddenFileInput?this.hiddenFileInput.parentNode:void 0)&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,t.instances.splice(t.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e,t=0,n=0;if(this.getActiveFiles().length){var i=!0,s=!1,r=void 0;try{for(var a,o=this.getActiveFiles()[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l=a.value;t+=l.upload.bytesSent,n+=l.upload.total}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}e=100*t/n}else e=100;return this.emit("totaluploadprogress",e,n,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):"".concat(this.options.paramName).concat(this.options.uploadMultiple?"[".concat(e,"]"):"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,n;if(e=this.getExistingFallback())return e;var i='<div class="dz-fallback">';this.options.dictFallbackText&&(i+="<p>".concat(this.options.dictFallbackText,"</p>")),i+='<input type="file" name="'.concat(this._getParamName(0),'" ').concat(this.options.uploadMultiple?'multiple="multiple"':void 0,' /><input type="submit" value="Upload!"></div>');var s=t.createElement(i);return"FORM"!==this.element.tagName?(n=t.createElement('<form action="'.concat(this.options.url,'" enctype="multipart/form-data" method="').concat(this.options.method,'"></form>'))).appendChild(s):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=n?n:s}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t=!0,n=!1,i=void 0;try{for(var s,r=e[Symbol.iterator]();!(t=(s=r.next()).done);t=!0){var a=s.value;if(/(^| )fallback($| )/.test(a.className))return a}}catch(e){n=!0,i=e}finally{try{t||null==r.return||r.return()}finally{if(n)throw i}}},t=0,n=["div","form"];t<n.length;t++){var i,s=n[t];if(i=e(this.element.getElementsByTagName(s)))return i}}},{key:"setupEventListeners",value:function(){return this.listeners.map((function(e){return function(){var t=[];for(var n in e.events){var i=e.events[n];t.push(e.element.addEventListener(n,i,!1))}return t}()}))}},{key:"removeEventListeners",value:function(){return this.listeners.map((function(e){return function(){var t=[];for(var n in e.events){var i=e.events[n];t.push(e.element.removeEventListener(n,i,!1))}return t}()}))}},{key:"disable",value:function(){var e=this;return this.clickableElements.forEach((function(e){return e.classList.remove("dz-clickable")})),this.removeEventListeners(),this.disabled=!0,this.files.map((function(t){return e.cancelUpload(t)}))}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach((function(e){return e.classList.add("dz-clickable")})),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,n="b";if(e>0){for(var i=["tb","gb","mb","kb","b"],s=0;s<i.length;s++){var r=i[s];if(e>=Math.pow(this.options.filesizeBase,4-s)/10){t=e/Math.pow(this.options.filesizeBase,4-s),n=r;break}}t=Math.round(10*t)/10}return"<strong>".concat(t,"</strong> ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n<e.dataTransfer.files.length;n++)t[n]=e.dataTransfer.files[n];if(t.length){var i=e.dataTransfer.items;i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(t)}this.emit("addedfiles",t)}}},{key:"paste",value:function(e){if(null!=(null!=(t=null!=e?e.clipboardData:void 0)?function(e){return e.items}(t):void 0)){var t;this.emit("paste",e);var n=e.clipboardData.items;return n.length?this._addFilesFromItems(n):void 0}}},{key:"handleFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var s,r=e[Symbol.iterator]();!(t=(s=r.next()).done);t=!0){var a=s.value;this.addFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==r.return||r.return()}finally{if(n)throw i}}}},{key:"_addFilesFromItems",value:function(e){var t=this;return function(){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l,u=a.value;null!=u.webkitGetAsEntry&&(l=u.webkitGetAsEntry())?l.isFile?n.push(t.addFile(u.getAsFile())):l.isDirectory?n.push(t._addFilesFromDirectory(l,l.name)):n.push(void 0):null==u.getAsFile||null!=u.kind&&"file"!==u.kind?n.push(void 0):n.push(t.addFile(u.getAsFile()))}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}return n}()}},{key:"_addFilesFromDirectory",value:function(e,t){var n=this,i=e.createReader(),s=function(e){return"log",n=function(t){return t.log(e)},null!=(t=console)&&"function"==typeof t.log?n(t):void 0;var t,n};return function e(){return i.readEntries((function(i){if(i.length>0){var s=!0,r=!1,a=void 0;try{for(var o,l=i[Symbol.iterator]();!(s=(o=l.next()).done);s=!0){var u=o.value;u.isFile?u.file((function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)})):u.isDirectory&&n._addFilesFromDirectory(u,"".concat(t,"/").concat(u.name))}}catch(e){r=!0,a=e}finally{try{s||null==l.return||l.return()}finally{if(r)throw a}}e()}return null}),s)}()}},{key:"accept",value:function(e,n){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?n(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):t.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(n(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,n):n(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var n=this;e.upload={uuid:t.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=t.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,(function(t){t?(e.accepted=!1,n._errorProcessing([e],t)):(e.accepted=!0,n.options.autoQueue&&n.enqueueFile(e)),n._updateMaxFilesReachedClass()}))}},{key:"enqueueFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var s,r=e[Symbol.iterator]();!(t=(s=r.next()).done);t=!0){var a=s.value;this.enqueueFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==r.return||r.return()}finally{if(n)throw i}}return null}},{key:"enqueueFile",value:function(e){var n=this;if(e.status!==t.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=t.QUEUED,this.options.autoProcessQueue)return setTimeout((function(){return n.processQueue()}),0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout((function(){return t._processThumbnailQueue()}),0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,(function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()}))}}},{key:"removeFile",value:function(e){if(e.status===t.UPLOADING&&this.cancelUpload(e),this.files=h(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var n=!0,i=!1,s=void 0;try{for(var r,a=this.files.slice()[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;(o.status!==t.UPLOADING||e)&&this.removeFile(o)}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return null}},{key:"resizeImage",value:function(e,n,i,s,r){var a=this;return this.createThumbnail(e,n,i,s,!0,(function(n,i){if(null==i)return r(e);var s=a.options.resizeMimeType;null==s&&(s=e.type);var o=i.toDataURL(s,a.options.resizeQuality);return"image/jpeg"!==s&&"image/jpg"!==s||(o=m.restore(e.dataURL,o)),r(t.dataURItoBlob(o))}))}},{key:"createThumbnail",value:function(e,t,n,i,s,r){var a=this,o=new FileReader;o.onload=function(){e.dataURL=o.result,"image/svg+xml"!==e.type?a.createThumbnailFromUrl(e,t,n,i,s,r):null!=r&&r(o.result)},o.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,i){var s=this,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if(this.emit("addedfile",e),this.emit("complete",e),r){var a=function(t){s.emit("thumbnail",e,t),n&&n()};e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.resizeMethod,this.options.fixOrientation,a,i)}else this.emit("thumbnail",e,t),n&&n()}},{key:"createThumbnailFromUrl",value:function(e,t,n,i,s,r,a){var o=this,l=document.createElement("img");return a&&(l.crossOrigin=a),l.onload=function(){var a=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&s&&(a=function(e){return EXIF.getData(l,(function(){return e(EXIF.getTag(this,"Orientation"))}))}),a((function(s){e.width=l.width,e.height=l.height;var a=o.options.resize.call(o,e,t,n,i),u=document.createElement("canvas"),d=u.getContext("2d");switch(u.width=a.trgWidth,u.height=a.trgHeight,s>4&&(u.width=a.trgHeight,u.height=a.trgWidth),s){case 2:d.translate(u.width,0),d.scale(-1,1);break;case 3:d.translate(u.width,u.height),d.rotate(Math.PI);break;case 4:d.translate(0,u.height),d.scale(1,-1);break;case 5:d.rotate(.5*Math.PI),d.scale(1,-1);break;case 6:d.rotate(.5*Math.PI),d.translate(0,-u.width);break;case 7:d.rotate(.5*Math.PI),d.translate(u.height,-u.width),d.scale(-1,1);break;case 8:d.rotate(-.5*Math.PI),d.translate(-u.height,0)}f(d,l,null!=a.srcX?a.srcX:0,null!=a.srcY?a.srcY:0,a.srcWidth,a.srcHeight,null!=a.trgX?a.trgX:0,null!=a.trgY?a.trgY:0,a.trgWidth,a.trgHeight);var c=u.toDataURL("image/png");if(null!=r)return r(c,u)}))},null!=r&&(l.onerror=r),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var i=this.getQueuedFiles();if(i.length>0){if(this.options.uploadMultiple)return this.processFiles(i.slice(0,e-t));for(;n<e;){if(!i.length)return;this.processFile(i.shift()),n++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){var n=!0,i=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;o.processing=!0,o.status=t.UPLOADING,this.emit("processing",o)}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(e){return this.files.filter((function(t){return t.xhr===e})).map((function(e){return e}))}},{key:"cancelUpload",value:function(e){if(e.status===t.UPLOADING){var n=this._getFilesWithXhr(e.xhr),i=!0,s=!1,r=void 0;try{for(var a,o=n[Symbol.iterator]();!(i=(a=o.next()).done);i=!0)a.value.status=t.CANCELED}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}void 0!==e.xhr&&e.xhr.abort();var l=!0,u=!1,d=void 0;try{for(var c,h=n[Symbol.iterator]();!(l=(c=h.next()).done);l=!0){var p=c.value;this.emit("canceled",p)}}catch(e){u=!0,d=e}finally{try{l||null==h.return||h.return()}finally{if(u)throw d}}this.options.uploadMultiple&&this.emit("canceledmultiple",n)}else e.status!==t.ADDED&&e.status!==t.QUEUED||(e.status=t.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return e.apply(this,n)}return e}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(e){var n=this;this._transformFiles(e,(function(i){if(n.options.chunking){var s=i[0];e[0].upload.chunked=n.options.chunking&&(n.options.forceChunking||s.size>n.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(s.size/n.options.chunkSize)}if(e[0].upload.chunked){var r=e[0],a=i[0];r.upload.chunks=[];var o=function(){for(var i=0;void 0!==r.upload.chunks[i];)i++;if(!(i>=r.upload.totalChunkCount)){var s=i*n.options.chunkSize,o=Math.min(s+n.options.chunkSize,r.size),l={name:n._getParamName(0),data:a.webkitSlice?a.webkitSlice(s,o):a.slice(s,o),filename:r.upload.filename,chunkIndex:i};r.upload.chunks[i]={file:r,index:i,dataBlock:l,status:t.UPLOADING,progress:0,retries:0},n._uploadData(e,[l])}};if(r.upload.finishedChunkUpload=function(i){var s=!0;i.status=t.SUCCESS,i.dataBlock=null,i.xhr=null;for(var a=0;a<r.upload.totalChunkCount;a++){if(void 0===r.upload.chunks[a])return o();r.upload.chunks[a].status!==t.SUCCESS&&(s=!1)}s&&n.options.chunksUploaded(r,(function(){n._finished(e,"",null)}))},n.options.parallelChunkUploads)for(var l=0;l<r.upload.totalChunkCount;l++)o();else o()}else{for(var u=[],d=0;d<e.length;d++)u[d]={name:n._getParamName(d),data:i[d],filename:e[d].upload.filename};n._uploadData(e,u)}}))}},{key:"_getChunk",value:function(e,t){for(var n=0;n<e.upload.totalChunkCount;n++)if(void 0!==e.upload.chunks[n]&&e.upload.chunks[n].xhr===t)return e.upload.chunks[n]}},{key:"_uploadData",value:function(e,n){var i=this,s=new XMLHttpRequest,r=!0,a=!1,o=void 0;try{for(var l,u=e[Symbol.iterator]();!(r=(l=u.next()).done);r=!0)l.value.xhr=s}catch(e){a=!0,o=e}finally{try{r||null==u.return||u.return()}finally{if(a)throw o}}e[0].upload.chunked&&(e[0].upload.chunks[n[0].chunkIndex].xhr=s);var d=this.resolveOption(this.options.method,e),c=this.resolveOption(this.options.url,e);s.open(d,c,!0),s.timeout=this.resolveOption(this.options.timeout,e),s.withCredentials=!!this.options.withCredentials,s.onload=function(t){i._finishedUploading(e,s,t)},s.ontimeout=function(){i._handleUploadError(e,s,"Request timedout after ".concat(i.options.timeout," seconds"))},s.onerror=function(){i._handleUploadError(e,s)},(null!=s.upload?s.upload:s).onprogress=function(t){return i._updateFilesUploadProgress(e,s,t)};var h={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var p in this.options.headers&&t.extend(h,this.options.headers),h){var f=h[p];f&&s.setRequestHeader(p,f)}var m=new FormData;if(this.options.params){var _=this.options.params;for(var g in"function"==typeof _&&(_=_.call(this,e,s,e[0].upload.chunked?this._getChunk(e[0],s):null)),_){var v=_[g];m.append(g,v)}}var y=!0,b=!1,w=void 0;try{for(var k,M=e[Symbol.iterator]();!(y=(k=M.next()).done);y=!0){var L=k.value;this.emit("sending",L,s,m)}}catch(e){b=!0,w=e}finally{try{y||null==M.return||M.return()}finally{if(b)throw w}}this.options.uploadMultiple&&this.emit("sendingmultiple",e,s,m),this._addFormElementData(m);for(var D=0;D<n.length;D++){var T=n[D];m.append(T.name,T.data,T.filename)}this.submitRequest(s,m,e)}},{key:"_transformFiles",value:function(e,t){for(var n=this,i=[],s=0,r=function(r){n.options.transformFile.call(n,e[r],(function(n){i[r]=n,++s===e.length&&t(i)}))},a=0;a<e.length;a++)r(a)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName){var t=!0,n=!1,i=void 0;try{for(var s,r=this.element.querySelectorAll("input, textarea, select, button")[Symbol.iterator]();!(t=(s=r.next()).done);t=!0){var a=s.value,o=a.getAttribute("name"),l=a.getAttribute("type");if(l&&(l=l.toLowerCase()),null!=o)if("SELECT"===a.tagName&&a.hasAttribute("multiple")){var u=!0,d=!1,c=void 0;try{for(var h,p=a.options[Symbol.iterator]();!(u=(h=p.next()).done);u=!0){var f=h.value;f.selected&&e.append(o,f.value)}}catch(e){d=!0,c=e}finally{try{u||null==p.return||p.return()}finally{if(d)throw c}}}else(!l||"checkbox"!==l&&"radio"!==l||a.checked)&&e.append(o,a.value)}}catch(e){n=!0,i=e}finally{try{t||null==r.return||r.return()}finally{if(n)throw i}}}}},{key:"_updateFilesUploadProgress",value:function(e,t,n){var i;if(void 0!==n){if(i=100*n.loaded/n.total,e[0].upload.chunked){var s=e[0],r=this._getChunk(s,t);r.progress=i,r.total=n.total,r.bytesSent=n.loaded,s.upload.progress=0,s.upload.total=0,s.upload.bytesSent=0;for(var a=0;a<s.upload.totalChunkCount;a++)void 0!==s.upload.chunks[a]&&void 0!==s.upload.chunks[a].progress&&(s.upload.progress+=s.upload.chunks[a].progress,s.upload.total+=s.upload.chunks[a].total,s.upload.bytesSent+=s.upload.chunks[a].bytesSent);s.upload.progress=s.upload.progress/s.upload.totalChunkCount}else{var o=!0,l=!1,u=void 0;try{for(var d,c=e[Symbol.iterator]();!(o=(d=c.next()).done);o=!0){var h=d.value;h.upload.progress=i,h.upload.total=n.total,h.upload.bytesSent=n.loaded}}catch(e){l=!0,u=e}finally{try{o||null==c.return||c.return()}finally{if(l)throw u}}}var p=!0,f=!1,m=void 0;try{for(var _,g=e[Symbol.iterator]();!(p=(_=g.next()).done);p=!0){var v=_.value;this.emit("uploadprogress",v,v.upload.progress,v.upload.bytesSent)}}catch(e){f=!0,m=e}finally{try{p||null==g.return||g.return()}finally{if(f)throw m}}}else{var y=!0;i=100;var b=!0,w=!1,k=void 0;try{for(var M,L=e[Symbol.iterator]();!(b=(M=L.next()).done);b=!0){var D=M.value;100===D.upload.progress&&D.upload.bytesSent===D.upload.total||(y=!1),D.upload.progress=i,D.upload.bytesSent=D.upload.total}}catch(e){w=!0,k=e}finally{try{b||null==L.return||L.return()}finally{if(w)throw k}}if(y)return;var T=!0,x=!1,S=void 0;try{for(var Y,C=e[Symbol.iterator]();!(T=(Y=C.next()).done);T=!0){var E=Y.value;this.emit("uploadprogress",E,i,E.upload.bytesSent)}}catch(e){x=!0,S=e}finally{try{T||null==C.return||C.return()}finally{if(x)throw S}}}}},{key:"_finishedUploading",value:function(e,n,i){var s;if(e[0].status!==t.CANCELED&&4===n.readyState){if("arraybuffer"!==n.responseType&&"blob"!==n.responseType&&(s=n.responseText,n.getResponseHeader("content-type")&&~n.getResponseHeader("content-type").indexOf("application/json")))try{s=JSON.parse(s)}catch(e){i=e,s="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=n.status&&n.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],n)):this._finished(e,s,i):this._handleUploadError(e,n,s)}}},{key:"_handleUploadError",value:function(e,n,i){if(e[0].status!==t.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var s=this._getChunk(e[0],n);if(s.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[s.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}this._errorProcessing(e,i||this.options.dictResponseError.replace("{{statusCode}}",n.status),n)}}},{key:"submitRequest",value:function(e,t,n){e.send(t)}},{key:"_finished",value:function(e,n,i){var s=!0,r=!1,a=void 0;try{for(var o,l=e[Symbol.iterator]();!(s=(o=l.next()).done);s=!0){var u=o.value;u.status=t.SUCCESS,this.emit("success",u,n,i),this.emit("complete",u)}}catch(e){r=!0,a=e}finally{try{s||null==l.return||l.return()}finally{if(r)throw a}}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,n,i),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,n,i){var s=!0,r=!1,a=void 0;try{for(var o,l=e[Symbol.iterator]();!(s=(o=l.next()).done);s=!0){var u=o.value;u.status=t.ERROR,this.emit("error",u,n,i),this.emit("complete",u)}}catch(e){r=!0,a=e}finally{try{s||null==l.return||l.return()}finally{if(r)throw a}}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,n,i),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}}]),t}(d);c.initClass(),c.version="5.7.0",c.options={},c.optionsForElement=function(e){return e.getAttribute("id")?c.options[p(e.getAttribute("id"))]:void 0},c.instances=[],c.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},c.autoDiscover=!0,c.discover=function(){var e;if(document.querySelectorAll)e=document.querySelectorAll(".dropzone");else{e=[];var t=function(t){return function(){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=t[Symbol.iterator]();!(i=(a=o.next()).done);i=!0){var l=a.value;/(^| )dropzone($| )/.test(l.className)?n.push(e.push(l)):n.push(void 0)}}catch(e){s=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(s)throw r}}return n}()};t(document.getElementsByTagName("div")),t(document.getElementsByTagName("form"))}return function(){var t=[],n=!0,i=!1,s=void 0;try{for(var r,a=e[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var o=r.value;!1!==c.optionsForElement(o)?t.push(new c(o)):t.push(void 0)}}catch(e){i=!0,s=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw s}}return t}()},c.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],c.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a")){var t=!0,n=!1,i=void 0;try{for(var s,r=c.blacklistedBrowsers[Symbol.iterator]();!(t=(s=r.next()).done);t=!0)s.value.test(navigator.userAgent)&&(e=!1)}catch(e){n=!0,i=e}finally{try{t||null==r.return||r.return()}finally{if(n)throw i}}}else e=!1;else e=!1;return e},c.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],i=new ArrayBuffer(t.length),s=new Uint8Array(i),r=0,a=t.length,o=0<=a;o?r<=a:r>=a;o?r++:r--)s[r]=t.charCodeAt(r);return new Blob([i],{type:n})};var h=function(e,t){return e.filter((function(e){return e!==t})).map((function(e){return e}))},p=function(e){return e.replace(/[\-_](\w)/g,(function(e){return e.charAt(1).toUpperCase()}))};c.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},c.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},c.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},c.getElements=function(e,t){var n,i;if(e instanceof Array){i=[];try{var s=!0,r=!1,a=void 0;try{for(var o,l=e[Symbol.iterator]();!(s=(o=l.next()).done);s=!0)n=o.value,i.push(this.getElement(n,t))}catch(e){r=!0,a=e}finally{try{s||null==l.return||l.return()}finally{if(r)throw a}}}catch(e){i=null}}else if("string"==typeof e){i=[];var u=!0,d=!1,c=void 0;try{for(var h,p=document.querySelectorAll(e)[Symbol.iterator]();!(u=(h=p.next()).done);u=!0)n=h.value,i.push(n)}catch(e){d=!0,c=e}finally{try{u||null==p.return||p.return()}finally{if(d)throw c}}}else null!=e.nodeType&&(i=[e]);if(null==i||!i.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return i},c.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},c.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n=e.type,i=n.replace(/\/.*$/,""),s=!0,r=!1,a=void 0;try{for(var o,l=t[Symbol.iterator]();!(s=(o=l.next()).done);s=!0){var u=o.value;if("."===(u=u.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(u.toLowerCase(),e.name.length-u.length))return!0}else if(/\/\*$/.test(u)){if(i===u.replace(/\/.*$/,""))return!0}else if(n===u)return!0}}catch(e){r=!0,a=e}finally{try{s||null==l.return||l.return()}finally{if(r)throw a}}return!1},null!=i&&(i.fn.dropzone=function(e){return this.each((function(){return new c(this,e)}))}),null!=e?e.exports=c:window.Dropzone=c,c.ADDED="added",c.QUEUED="queued",c.ACCEPTED=c.QUEUED,c.UPLOADING="uploading",c.PROCESSING=c.UPLOADING,c.CANCELED="canceled",c.ERROR="error",c.SUCCESS="success";var f=function(e,t,n,i,s,r,a,o,l,u){var d=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var i=n.getContext("2d");i.drawImage(e,0,0);for(var s=i.getImageData(1,0,1,t).data,r=0,a=t,o=t;o>r;)0===s[4*(o-1)+3]?a=o:r=o,o=a+r>>1;var l=o/t;return 0===l?1:l}(t);return e.drawImage(t,n,i,s,r,a,o,l,u/d)},m=function(){function e(){o(this,e)}return u(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,i=void 0,s="",r=void 0,a=void 0,o=void 0,l="",u=0;r=(n=e[u++])>>2,a=(3&n)<<4|(i=e[u++])>>4,o=(15&i)<<2|(s=e[u++])>>6,l=63&s,isNaN(i)?o=l=64:isNaN(s)&&(l=64),t=t+this.KEY_STR.charAt(r)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(l),n=i=s="",r=a=o=l="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var n=this.decode64(e.replace("data:image/jpeg;base64,","")),i=this.slice2Segments(n),s=this.exifManipulation(t,i);return"data:image/jpeg;base64,".concat(this.encode64(s))}},{key:"exifManipulation",value:function(e,t){var n=this.getExifArray(t),i=this.insertExif(e,n);return new Uint8Array(i)}},{key:"getExifArray",value:function(e){for(var t=void 0,n=0;n<e.length;){if(255===(t=e[n])[0]&225===t[1])return t;n++}return[]}},{key:"insertExif",value:function(e,t){var n=e.replace("data:image/jpeg;base64,",""),i=this.decode64(n),s=i.indexOf(255,3),r=i.slice(0,s),a=i.slice(s),o=r;return(o=o.concat(t)).concat(a)}},{key:"slice2Segments",value:function(e){for(var t=0,n=[];!(255===e[t]&218===e[t+1]);){if(255===e[t]&216===e[t+1])t+=2;else{var i=t+(256*e[t+2]+e[t+3])+2,s=e.slice(t,i);n.push(s),t=i}if(t>e.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,i="",s=void 0,r=void 0,a="",o=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(o++))<<2|(s=this.KEY_STR.indexOf(e.charAt(o++)))>>4,n=(15&s)<<4|(r=this.KEY_STR.indexOf(e.charAt(o++)))>>2,i=(3&r)<<6|(a=this.KEY_STR.indexOf(e.charAt(o++))),l.push(t),64!==r&&l.push(n),64!==a&&l.push(i),t=n=i="",s=r=a="",o<e.length;);return l}}]),e}();m.initClass(),c._autoDiscoverFunction=function(){if(c.autoDiscover)return c.discover()},function(e,t){var n=!1,i=!0,s=e.document,r=s.documentElement,a=s.addEventListener?"addEventListener":"attachEvent",o=s.addEventListener?"removeEventListener":"detachEvent",l=s.addEventListener?"":"on",u=function i(r){if("readystatechange"!==r.type||"complete"===s.readyState)return("load"===r.type?e:s)[o](l+r.type,i,!1),!n&&(n=!0)?t.call(e,r.type||r):void 0};if("complete"!==s.readyState){if(s.createEventObject&&r.doScroll){try{i=!e.frameElement}catch(e){}i&&function e(){try{r.doScroll("left")}catch(t){return void setTimeout(e,50)}return u("poll")}()}s[a](l+"DOMContentLoaded",u,!1),s[a](l+"readystatechange",u,!1),e[a](l+"load",u,!1)}}(window,c._autoDiscoverFunction)}).call(window)},30664:(e,t,n)=>{e=n.nmd(e),function(t){e.exports=function(){"use strict";var t,i;function s(){return t.apply(null,arguments)}function r(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function a(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,i=[];for(n=0;n<e.length;++n)i.push(t(e[n],n));return i}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function h(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function p(e,t,n,i){return Lt(e,t,n,i,!0).utc()}function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function m(e){if(null==e._isValid){var t=f(e),n=i.call(t.parsedDateParts,(function(e){return null!=e})),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function _(e){var t=p(NaN);return null!=e?h(f(t),e):f(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,i=0;i<n;i++)if(i in t&&e.call(this,t[i],i,t))return!0;return!1};var g=s.momentProperties=[];function v(e,t){var n,i,s;if(o(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),o(t._i)||(e._i=t._i),o(t._f)||(e._f=t._f),o(t._l)||(e._l=t._l),o(t._strict)||(e._strict=t._strict),o(t._tzm)||(e._tzm=t._tzm),o(t._isUTC)||(e._isUTC=t._isUTC),o(t._offset)||(e._offset=t._offset),o(t._pf)||(e._pf=f(t)),o(t._locale)||(e._locale=t._locale),g.length>0)for(n=0;n<g.length;n++)o(s=t[i=g[n]])||(e[i]=s);return e}var y=!1;function b(e){v(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===y&&(y=!0,s.updateOffset(this),y=!1)}function w(e){return e instanceof b||null!=e&&null!=e._isAMomentObject}function k(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function M(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=k(t)),n}function L(e,t,n){var i,s=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(i=0;i<s;i++)(n&&e[i]!==t[i]||!n&&M(e[i])!==M(t[i]))&&a++;return a+r}function D(e){!1===s.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function T(e,t){var n=!0;return h((function(){if(null!=s.deprecationHandler&&s.deprecationHandler(null,e),n){for(var i,r=[],a=0;a<arguments.length;a++){if(i="","object"==typeof arguments[a]){for(var o in i+="\n["+a+"] ",arguments[0])i+=o+": "+arguments[0][o]+", ";i=i.slice(0,-2)}else i=arguments[a];r.push(i)}D(e+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var x,S={};function Y(e,t){null!=s.deprecationHandler&&s.deprecationHandler(e,t),S[e]||(D(t),S[e]=!0)}function C(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function E(e,t){var n,i=h({},e);for(n in t)c(t,n)&&(a(e[n])&&a(t[n])?(i[n]={},h(i[n],e[n]),h(i[n],t[n])):null!=t[n]?i[n]=t[n]:delete i[n]);for(n in e)c(e,n)&&!c(t,n)&&a(e[n])&&(i[n]=h({},i[n]));return i}function O(e){null!=e&&this.set(e)}s.suppressDeprecationWarnings=!1,s.deprecationHandler=null,x=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};var A={};function H(e,t){var n=e.toLowerCase();A[n]=A[n+"s"]=A[t]=e}function j(e){return"string"==typeof e?A[e]||A[e.toLowerCase()]:void 0}function P(e){var t,n,i={};for(n in e)c(e,n)&&(t=j(n))&&(i[t]=e[n]);return i}var I={};function F(e,t){I[e]=t}function N(e,t,n){var i=""+Math.abs(e),s=t-i.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+i}var W=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,z=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},$={};function q(e,t,n,i){var s=i;"string"==typeof i&&(s=function(){return this[i]()}),e&&($[e]=s),t&&($[t[0]]=function(){return N(s.apply(this,arguments),t[1],t[2])}),n&&($[n]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})}function B(e,t){return e.isValid()?(t=U(t,e.localeData()),R[t]=R[t]||function(e){var t,n,i,s=e.match(W);for(t=0,n=s.length;t<n;t++)$[s[t]]?s[t]=$[s[t]]:s[t]=(i=s[t]).match(/\[[\s\S]/)?i.replace(/^\[|\]$/g,""):i.replace(/\\/g,"");return function(t){var i,r="";for(i=0;i<n;i++)r+=C(s[i])?s[i].call(t,e):s[i];return r}}(t),R[t](e)):e.localeData().invalidDate()}function U(e,t){var n=5;function i(e){return t.longDateFormat(e)||e}for(z.lastIndex=0;n>=0&&z.test(e);)e=e.replace(z,i),z.lastIndex=0,n-=1;return e}var K=/\d/,G=/\d\d/,V=/\d{3}/,J=/\d{4}/,Q=/[+-]?\d{6}/,X=/\d\d?/,Z=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,ie=/[+-]?\d{1,6}/,se=/\d+/,re=/[+-]?\d+/,ae=/Z|[+-]\d\d:?\d\d/gi,oe=/Z|[+-]\d\d(?::?\d\d)?/gi,le=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function de(e,t,n){ue[e]=C(t)?t:function(e,i){return e&&n?n:t}}function ce(e,t){return c(ue,e)?ue[e](t._strict,t._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,i,s){return t||n||i||s}))))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var pe={};function fe(e,t){var n,i=t;for("string"==typeof e&&(e=[e]),l(t)&&(i=function(e,n){n[t]=M(e)}),n=0;n<e.length;n++)pe[e[n]]=i}function me(e,t){fe(e,(function(e,n,i,s){i._w=i._w||{},t(e,i._w,i,s)}))}function _e(e,t,n){null!=t&&c(pe,e)&&pe[e](t,n._a,n,e)}function ge(e){return ve(e)?366:365}function ve(e){return e%4==0&&e%100!=0||e%400==0}q("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),q(0,["YY",2],0,(function(){return this.year()%100})),q(0,["YYYY",4],0,"year"),q(0,["YYYYY",5],0,"year"),q(0,["YYYYYY",6,!0],0,"year"),H("year","y"),F("year",1),de("Y",re),de("YY",X,G),de("YYYY",ne,J),de("YYYYY",ie,Q),de("YYYYYY",ie,Q),fe(["YYYYY","YYYYYY"],0),fe("YYYY",(function(e,t){t[0]=2===e.length?s.parseTwoDigitYear(e):M(e)})),fe("YY",(function(e,t){t[0]=s.parseTwoDigitYear(e)})),fe("Y",(function(e,t){t[0]=parseInt(e,10)})),s.parseTwoDigitYear=function(e){return M(e)+(M(e)>68?1900:2e3)};var ye,be=we("FullYear",!0);function we(e,t){return function(n){return null!=n?(Me(this,e,n),s.updateOffset(this,t),this):ke(this,e)}}function ke(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Me(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ve(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Le(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Le(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-n)/12,1===n?ve(e)?29:28:31-n%7%2}ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},q("M",["MM",2],"Mo",(function(){return this.month()+1})),q("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),q("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),H("month","M"),F("month",8),de("M",X),de("MM",X,G),de("MMM",(function(e,t){return t.monthsShortRegex(e)})),de("MMMM",(function(e,t){return t.monthsRegex(e)})),fe(["M","MM"],(function(e,t){t[1]=M(e)-1})),fe(["MMM","MMMM"],(function(e,t,n,i){var s=n._locale.monthsParse(e,i,n._strict);null!=s?t[1]=s:f(n).invalidMonth=e}));var De=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Te="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var xe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Se(e,t,n){var i,s,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=p([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(s=ye.call(this._shortMonthsParse,a))?s:null:-1!==(s=ye.call(this._longMonthsParse,a))?s:null:"MMM"===t?-1!==(s=ye.call(this._shortMonthsParse,a))||-1!==(s=ye.call(this._longMonthsParse,a))?s:null:-1!==(s=ye.call(this._longMonthsParse,a))||-1!==(s=ye.call(this._shortMonthsParse,a))?s:null}function Ye(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=M(t);else if(!l(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Le(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Ce(e){return null!=e?(Ye(this,e),s.updateOffset(this,!0),this):ke(this,"Month")}var Ee=le;var Oe=le;function Ae(){function e(e,t){return t.length-e.length}var t,n,i=[],s=[],r=[];for(t=0;t<12;t++)n=p([2e3,t]),i.push(this.monthsShort(n,"")),s.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(i.sort(e),s.sort(e),r.sort(e),t=0;t<12;t++)i[t]=he(i[t]),s[t]=he(s[t]);for(t=0;t<24;t++)r[t]=he(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function He(e,t,n,i,s,r,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,n,i,s,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,i,s,r,a),o}function je(e){var t;if(e<100&&e>=0){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Pe(e,t,n){var i=7+t-n;return-(7+je(e,0,i).getUTCDay()-t)%7+i-1}function Ie(e,t,n,i,s){var r,a,o=1+7*(t-1)+(7+n-i)%7+Pe(e,i,s);return o<=0?a=ge(r=e-1)+o:o>ge(e)?(r=e+1,a=o-ge(e)):(r=e,a=o),{year:r,dayOfYear:a}}function Fe(e,t,n){var i,s,r=Pe(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?i=a+Ne(s=e.year()-1,t,n):a>Ne(e.year(),t,n)?(i=a-Ne(e.year(),t,n),s=e.year()+1):(s=e.year(),i=a),{week:i,year:s}}function Ne(e,t,n){var i=Pe(e,t,n),s=Pe(e+1,t,n);return(ge(e)-i+s)/7}q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),F("week",5),F("isoWeek",5),de("w",X),de("ww",X,G),de("W",X),de("WW",X,G),me(["w","ww","W","WW"],(function(e,t,n,i){t[i.substr(0,1)]=M(e)}));function We(e,t){return e.slice(t,7).concat(e.slice(0,t))}q("d",0,"do","day"),q("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),q("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),q("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),de("d",X),de("e",X),de("E",X),de("dd",(function(e,t){return t.weekdaysMinRegex(e)})),de("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),de("dddd",(function(e,t){return t.weekdaysRegex(e)})),me(["dd","ddd","dddd"],(function(e,t,n,i){var s=n._locale.weekdaysParse(e,i,n._strict);null!=s?t.d=s:f(n).invalidWeekday=e})),me(["d","e","E"],(function(e,t,n,i){t[i]=M(e)}));var ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function qe(e,t,n){var i,s,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=p([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(s=ye.call(this._weekdaysParse,a))?s:null:"ddd"===t?-1!==(s=ye.call(this._shortWeekdaysParse,a))?s:null:-1!==(s=ye.call(this._minWeekdaysParse,a))?s:null:"dddd"===t?-1!==(s=ye.call(this._weekdaysParse,a))||-1!==(s=ye.call(this._shortWeekdaysParse,a))||-1!==(s=ye.call(this._minWeekdaysParse,a))?s:null:"ddd"===t?-1!==(s=ye.call(this._shortWeekdaysParse,a))||-1!==(s=ye.call(this._weekdaysParse,a))||-1!==(s=ye.call(this._minWeekdaysParse,a))?s:null:-1!==(s=ye.call(this._minWeekdaysParse,a))||-1!==(s=ye.call(this._weekdaysParse,a))||-1!==(s=ye.call(this._shortWeekdaysParse,a))?s:null}var Be=le;var Ue=le;var Ke=le;function Ge(){function e(e,t){return t.length-e.length}var t,n,i,s,r,a=[],o=[],l=[],u=[];for(t=0;t<7;t++)n=p([2e3,1]).day(t),i=this.weekdaysMin(n,""),s=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(i),o.push(s),l.push(r),u.push(i),u.push(s),u.push(r);for(a.sort(e),o.sort(e),l.sort(e),u.sort(e),t=0;t<7;t++)o[t]=he(o[t]),l[t]=he(l[t]),u[t]=he(u[t]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Ve(){return this.hours()%12||12}function Je(e,t){q(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Qe(e,t){return t._meridiemParse}q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Ve),q("k",["kk",2],0,(function(){return this.hours()||24})),q("hmm",0,0,(function(){return""+Ve.apply(this)+N(this.minutes(),2)})),q("hmmss",0,0,(function(){return""+Ve.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)})),q("Hmm",0,0,(function(){return""+this.hours()+N(this.minutes(),2)})),q("Hmmss",0,0,(function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)})),Je("a",!0),Je("A",!1),H("hour","h"),F("hour",13),de("a",Qe),de("A",Qe),de("H",X),de("h",X),de("k",X),de("HH",X,G),de("hh",X,G),de("kk",X,G),de("hmm",Z),de("hmmss",ee),de("Hmm",Z),de("Hmmss",ee),fe(["H","HH"],3),fe(["k","kk"],(function(e,t,n){var i=M(e);t[3]=24===i?0:i})),fe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),fe(["h","hh"],(function(e,t,n){t[3]=M(e),f(n).bigHour=!0})),fe("hmm",(function(e,t,n){var i=e.length-2;t[3]=M(e.substr(0,i)),t[4]=M(e.substr(i)),f(n).bigHour=!0})),fe("hmmss",(function(e,t,n){var i=e.length-4,s=e.length-2;t[3]=M(e.substr(0,i)),t[4]=M(e.substr(i,2)),t[5]=M(e.substr(s)),f(n).bigHour=!0})),fe("Hmm",(function(e,t,n){var i=e.length-2;t[3]=M(e.substr(0,i)),t[4]=M(e.substr(i))})),fe("Hmmss",(function(e,t,n){var i=e.length-4,s=e.length-2;t[3]=M(e.substr(0,i)),t[4]=M(e.substr(i,2)),t[5]=M(e.substr(s))}));var Xe,Ze=we("Hours",!0),et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Te,monthsShort:xe,week:{dow:0,doy:6},weekdays:ze,weekdaysMin:$e,weekdaysShort:Re,meridiemParse:/[ap]\.?m?\.?/i},tt={},nt={};function it(e){return e?e.toLowerCase().replace("_","-"):e}function st(t){var i=null;if(!tt[t]&&e&&e.exports)try{i=Xe._abbr,n(46700)("./"+t),rt(i)}catch(e){}return tt[t]}function rt(e,t){var n;return e&&((n=o(t)?ot(e):at(e,t))?Xe=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Xe._abbr}function at(e,t){if(null!==t){var n,i=et;if(t.abbr=e,null!=tt[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=tt[e]._config;else if(null!=t.parentLocale)if(null!=tt[t.parentLocale])i=tt[t.parentLocale]._config;else{if(null==(n=st(t.parentLocale)))return nt[t.parentLocale]||(nt[t.parentLocale]=[]),nt[t.parentLocale].push({name:e,config:t}),null;i=n._config}return tt[e]=new O(E(i,t)),nt[e]&&nt[e].forEach((function(e){at(e.name,e.config)})),rt(e),tt[e]}return delete tt[e],null}function ot(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Xe;if(!r(e)){if(t=st(e))return t;e=[e]}return function(e){for(var t,n,i,s,r=0;r<e.length;){for(t=(s=it(e[r]).split("-")).length,n=(n=it(e[r+1]))?n.split("-"):null;t>0;){if(i=st(s.slice(0,t).join("-")))return i;if(n&&n.length>=t&&L(s,n,!0)>=t-1)break;t--}r++}return Xe}(e)}function lt(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>Le(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),f(e)._overflowWeeks&&-1===t&&(t=7),f(e)._overflowWeekday&&-1===t&&(t=8),f(e).overflow=t),e}function ut(e,t,n){return null!=e?e:null!=t?t:n}function dt(e){var t,n,i,r,a,o=[];if(!e._d){for(i=function(e){var t=new Date(s.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,i,s,r,a,o,l;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ut(t.GG,e._a[0],Fe(Dt(),1,4).year),i=ut(t.W,1),((s=ut(t.E,1))<1||s>7)&&(l=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var u=Fe(Dt(),r,a);n=ut(t.gg,e._a[0],u.year),i=ut(t.w,u.week),null!=t.d?((s=t.d)<0||s>6)&&(l=!0):null!=t.e?(s=t.e+r,(t.e<0||t.e>6)&&(l=!0)):s=r}i<1||i>Ne(n,r,a)?f(e)._overflowWeeks=!0:null!=l?f(e)._overflowWeekday=!0:(o=Ie(n,i,s,r,a),e._a[0]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(a=ut(e._a[0],i[0]),(e._dayOfYear>ge(a)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),n=je(a,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=i[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?je:He).apply(null,o),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(f(e).weekdayMismatch=!0)}}var ct=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ht=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/Z|[+-]\d\d(?::?\d\d)?/,ft=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],mt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],_t=/^\/?Date\((\-?\d+)/i;function gt(e){var t,n,i,s,r,a,o=e._i,l=ct.exec(o)||ht.exec(o);if(l){for(f(e).iso=!0,t=0,n=ft.length;t<n;t++)if(ft[t][1].exec(l[1])){s=ft[t][0],i=!1!==ft[t][2];break}if(null==s)return void(e._isValid=!1);if(l[3]){for(t=0,n=mt.length;t<n;t++)if(mt[t][1].exec(l[3])){r=(l[2]||" ")+mt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!i&&null!=r)return void(e._isValid=!1);if(l[4]){if(!pt.exec(l[4]))return void(e._isValid=!1);a="Z"}e._f=s+(r||"")+(a||""),kt(e)}else e._isValid=!1}var vt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function yt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}var bt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function wt(e){var t,n,i,s,r,a,o,l=vt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var u=(t=l[4],n=l[3],i=l[2],s=l[5],r=l[6],a=l[7],o=[yt(t),xe.indexOf(n),parseInt(i,10),parseInt(s,10),parseInt(r,10)],a&&o.push(parseInt(a,10)),o);if(!function(e,t,n){return!e||Re.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],u,e))return;e._a=u,e._tzm=function(e,t,n){if(e)return bt[e];if(t)return 0;var i=parseInt(n,10),s=i%100;return(i-s)/100*60+s}(l[8],l[9],l[10]),e._d=je.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==s.ISO_8601)if(e._f!==s.RFC_2822){e._a=[],f(e).empty=!0;var t,n,i,r,a,o=""+e._i,l=o.length,u=0;for(i=U(e._f,e._locale).match(W)||[],t=0;t<i.length;t++)r=i[t],(n=(o.match(ce(r,e))||[])[0])&&((a=o.substr(0,o.indexOf(n))).length>0&&f(e).unusedInput.push(a),o=o.slice(o.indexOf(n)+n.length),u+=n.length),$[r]?(n?f(e).empty=!1:f(e).unusedTokens.push(r),_e(r,n,e)):e._strict&&!n&&f(e).unusedTokens.push(r);f(e).charsLeftOver=l-u,o.length>0&&f(e).unusedInput.push(o),e._a[3]<=12&&!0===f(e).bigHour&&e._a[3]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var i;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((i=e.isPM(n))&&t<12&&(t+=12),i||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),dt(e),lt(e)}else wt(e);else gt(e)}function Mt(e){var t=e._i,n=e._f;return e._locale=e._locale||ot(e._l),null===t||void 0===n&&""===t?_({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new b(lt(t)):(u(t)?e._d=t:r(n)?function(e){var t,n,i,s,r;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(s=0;s<e._f.length;s++)r=0,t=v({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[s],kt(t),m(t)&&(r+=f(t).charsLeftOver,r+=10*f(t).unusedTokens.length,f(t).score=r,(null==i||r<i)&&(i=r,n=t));h(e,n||t)}(e):n?kt(e):function(e){var t=e._i;o(t)?e._d=new Date(s.now()):u(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=_t.exec(e._i);null===t?(gt(e),!1===e._isValid&&(delete e._isValid,wt(e),!1===e._isValid&&(delete e._isValid,s.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):r(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),dt(e)):a(t)?function(e){if(!e._d){var t=P(e._i);e._a=d([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),dt(e)}}(e):l(t)?e._d=new Date(t):s.createFromInputFallback(e)}(e),m(e)||(e._d=null),e))}function Lt(e,t,n,i,s){var o,l={};return!0!==n&&!1!==n||(i=n,n=void 0),(a(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||r(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=s,l._l=n,l._i=e,l._f=t,l._strict=i,(o=new b(lt(Mt(l))))._nextDay&&(o.add(1,"d"),o._nextDay=void 0),o}function Dt(e,t,n,i){return Lt(e,t,n,i,!1)}s.createFromInputFallback=T("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),s.ISO_8601=function(){},s.RFC_2822=function(){};var Tt=T("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Dt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:_()})),xt=T("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Dt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:_()}));function St(e,t){var n,i;if(1===t.length&&r(t[0])&&(t=t[0]),!t.length)return Dt();for(n=t[0],i=1;i<t.length;++i)t[i].isValid()&&!t[i][e](n)||(n=t[i]);return n}var Yt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ct(e){var t=P(e),n=t.year||0,i=t.quarter||0,s=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,l=t.minute||0,u=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===ye.call(Yt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,i=0;i<Yt.length;++i)if(e[Yt[i]]){if(n)return!1;parseFloat(e[Yt[i]])!==M(e[Yt[i]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*u+6e4*l+1e3*o*60*60,this._days=+a+7*r,this._months=+s+3*i+12*n,this._data={},this._locale=ot(),this._bubble()}function Et(e){return e instanceof Ct}function Ot(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function At(e,t){q(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)}))}At("Z",":"),At("ZZ",""),de("Z",oe),de("ZZ",oe),fe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=jt(oe,e)}));var Ht=/([\+\-]|\d\d)/gi;function jt(e,t){var n=(t||"").match(e);if(null===n)return null;var i=((n[n.length-1]||[])+"").match(Ht)||["-",0,0],s=60*i[1]+M(i[2]);return 0===s?0:"+"===i[0]?s:-s}function Pt(e,t){var n,i;return t._isUTC?(n=t.clone(),i=(w(e)||u(e)?e.valueOf():Dt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),s.updateOffset(n,!1),n):Dt(e).local()}function It(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ft(){return!!this.isValid()&&this._isUTC&&0===this._offset}s.updateOffset=function(){};var Nt=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Wt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function zt(e,t){var n,i,s,r,a,o,u=e,d=null;return Et(e)?u={ms:e._milliseconds,d:e._days,M:e._months}:l(e)?(u={},t?u[t]=e:u.milliseconds=e):(d=Nt.exec(e))?(n="-"===d[1]?-1:1,u={y:0,d:M(d[2])*n,h:M(d[3])*n,m:M(d[4])*n,s:M(d[5])*n,ms:M(Ot(1e3*d[6]))*n}):(d=Wt.exec(e))?(n="-"===d[1]?-1:1,u={y:Rt(d[2],n),M:Rt(d[3],n),w:Rt(d[4],n),d:Rt(d[5],n),h:Rt(d[6],n),m:Rt(d[7],n),s:Rt(d[8],n)}):null==u?u={}:"object"==typeof u&&("from"in u||"to"in u)&&(r=Dt(u.from),a=Dt(u.to),s=r.isValid()&&a.isValid()?(a=Pt(a,r),r.isBefore(a)?o=$t(r,a):((o=$t(a,r)).milliseconds=-o.milliseconds,o.months=-o.months),o):{milliseconds:0,months:0},(u={}).ms=s.milliseconds,u.M=s.months),i=new Ct(u),Et(e)&&c(e,"_locale")&&(i._locale=e._locale),i}function Rt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function $t(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function qt(e,t){return function(n,i){var s;return null===i||isNaN(+i)||(Y(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=n,n=i,i=s),Bt(this,zt(n="string"==typeof n?+n:n,i),e),this}}function Bt(e,t,n,i){var r=t._milliseconds,a=Ot(t._days),o=Ot(t._months);e.isValid()&&(i=null==i||i,o&&Ye(e,ke(e,"Month")+o*n),a&&Me(e,"Date",ke(e,"Date")+a*n),r&&e._d.setTime(e._d.valueOf()+r*n),i&&s.updateOffset(e,a||o))}zt.fn=Ct.prototype,zt.invalid=function(){return zt(NaN)};var Ut=qt(1,"add"),Kt=qt(-1,"subtract");function Gt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(n,"months");return-(n+(t-i<0?(t-i)/(i-e.clone().add(n-1,"months")):(t-i)/(e.clone().add(n+1,"months")-i)))||0}function Vt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ot(e))&&(this._locale=t),this)}s.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",s.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Jt=T("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function Qt(){return this._locale}var Xt=1e3,Zt=6e4,en=36e5,tn=126227808e5;function nn(e,t){return(e%t+t)%t}function sn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-tn:new Date(e,t,n).valueOf()}function rn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-tn:Date.UTC(e,t,n)}function an(e,t){q(0,[e,e.length],0,t)}function on(e,t,n,i,s){var r;return null==e?Fe(this,i,s).year:(t>(r=Ne(e,i,s))&&(t=r),ln.call(this,e,t,n,i,s))}function ln(e,t,n,i,s){var r=Ie(e,t,n,i,s),a=je(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}q(0,["gg",2],0,(function(){return this.weekYear()%100})),q(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),de("G",re),de("g",re),de("GG",X,G),de("gg",X,G),de("GGGG",ne,J),de("gggg",ne,J),de("GGGGG",ie,Q),de("ggggg",ie,Q),me(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,i){t[i.substr(0,2)]=M(e)})),me(["gg","GG"],(function(e,t,n,i){t[i]=s.parseTwoDigitYear(e)})),q("Q",0,"Qo","quarter"),H("quarter","Q"),F("quarter",7),de("Q",K),fe("Q",(function(e,t){t[1]=3*(M(e)-1)})),q("D",["DD",2],"Do","date"),H("date","D"),F("date",9),de("D",X),de("DD",X,G),de("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),fe(["D","DD"],2),fe("Do",(function(e,t){t[2]=M(e.match(X)[0])}));var un=we("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),F("dayOfYear",4),de("DDD",te),de("DDDD",V),fe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=M(e)})),q("m",["mm",2],0,"minute"),H("minute","m"),F("minute",14),de("m",X),de("mm",X,G),fe(["m","mm"],4);var dn=we("Minutes",!1);q("s",["ss",2],0,"second"),H("second","s"),F("second",15),de("s",X),de("ss",X,G),fe(["s","ss"],5);var cn,hn=we("Seconds",!1);for(q("S",0,0,(function(){return~~(this.millisecond()/100)})),q(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),q(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),q(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),q(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),q(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),q(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),H("millisecond","ms"),F("millisecond",16),de("S",te,K),de("SS",te,G),de("SSS",te,V),cn="SSSS";cn.length<=9;cn+="S")de(cn,se);function pn(e,t){t[6]=M(1e3*("0."+e))}for(cn="S";cn.length<=9;cn+="S")fe(cn,pn);var fn=we("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var mn=b.prototype;function _n(e){return e}mn.add=Ut,mn.calendar=function(e,t){var n=e||Dt(),i=Pt(n,this).startOf("day"),r=s.calendarFormat(this,i)||"sameElse",a=t&&(C(t[r])?t[r].call(this,n):t[r]);return this.format(a||this.localeData().calendar(r,this,Dt(n)))},mn.clone=function(){return new b(this)},mn.diff=function(e,t,n){var i,s,r;if(!this.isValid())return NaN;if(!(i=Pt(e,this)).isValid())return NaN;switch(s=6e4*(i.utcOffset()-this.utcOffset()),t=j(t)){case"year":r=Gt(this,i)/12;break;case"month":r=Gt(this,i);break;case"quarter":r=Gt(this,i)/3;break;case"second":r=(this-i)/1e3;break;case"minute":r=(this-i)/6e4;break;case"hour":r=(this-i)/36e5;break;case"day":r=(this-i-s)/864e5;break;case"week":r=(this-i-s)/6048e5;break;default:r=this-i}return n?r:k(r)},mn.endOf=function(e){var t;if(void 0===(e=j(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=en-nn(t+(this._isUTC?0:this.utcOffset()*Zt),en)-1;break;case"minute":t=this._d.valueOf(),t+=Zt-nn(t,Zt)-1;break;case"second":t=this._d.valueOf(),t+=Xt-nn(t,Xt)-1}return this._d.setTime(t),s.updateOffset(this,!0),this},mn.format=function(e){e||(e=this.isUtc()?s.defaultFormatUtc:s.defaultFormat);var t=B(this,e);return this.localeData().postformat(t)},mn.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Dt(e).isValid())?zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.fromNow=function(e){return this.from(Dt(),e)},mn.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Dt(e).isValid())?zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.toNow=function(e){return this.to(Dt(),e)},mn.get=function(e){return C(this[e=j(e)])?this[e]():this},mn.invalidAt=function(){return f(this).overflow},mn.isAfter=function(e,t){var n=w(e)?e:Dt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=j(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},mn.isBefore=function(e,t){var n=w(e)?e:Dt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=j(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},mn.isBetween=function(e,t,n,i){var s=w(e)?e:Dt(e),r=w(t)?t:Dt(t);return!!(this.isValid()&&s.isValid()&&r.isValid())&&("("===(i=i||"()")[0]?this.isAfter(s,n):!this.isBefore(s,n))&&(")"===i[1]?this.isBefore(r,n):!this.isAfter(r,n))},mn.isSame=function(e,t){var n,i=w(e)?e:Dt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=j(t)||"millisecond")?this.valueOf()===i.valueOf():(n=i.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},mn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},mn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},mn.isValid=function(){return m(this)},mn.lang=Jt,mn.locale=Vt,mn.localeData=Qt,mn.max=xt,mn.min=Tt,mn.parsingFlags=function(){return h({},f(this))},mn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:I[n]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=P(e)),i=0;i<n.length;i++)this[n[i].unit](e[n[i].unit]);else if(C(this[e=j(e)]))return this[e](t);return this},mn.startOf=function(e){var t;if(void 0===(e=j(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:this.utcOffset()*Zt),en);break;case"minute":t=this._d.valueOf(),t-=nn(t,Zt);break;case"second":t=this._d.valueOf(),t-=nn(t,Xt)}return this._d.setTime(t),s.updateOffset(this,!0),this},mn.subtract=Kt,mn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},mn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},mn.toDate=function(){return new Date(this.valueOf())},mn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?B(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",B(n,"Z")):B(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},mn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",s=t+'[")]';return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+s)},mn.toJSON=function(){return this.isValid()?this.toISOString():null},mn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},mn.unix=function(){return Math.floor(this.valueOf()/1e3)},mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},mn.year=be,mn.isLeapYear=function(){return ve(this.year())},mn.weekYear=function(e){return on.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},mn.isoWeekYear=function(e){return on.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},mn.quarter=mn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},mn.month=Ce,mn.daysInMonth=function(){return Le(this.year(),this.month())},mn.week=mn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},mn.isoWeek=mn.isoWeeks=function(e){var t=Fe(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},mn.weeksInYear=function(){var e=this.localeData()._week;return Ne(this.year(),e.dow,e.doy)},mn.isoWeeksInYear=function(){return Ne(this.year(),1,4)},mn.date=un,mn.day=mn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},mn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},mn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},mn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},mn.hour=mn.hours=Ze,mn.minute=mn.minutes=dn,mn.second=mn.seconds=hn,mn.millisecond=mn.milliseconds=fn,mn.utcOffset=function(e,t,n){var i,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=jt(oe,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(i=It(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==e&&(!t||this._changeInProgress?Bt(this,zt(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,s.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:It(this)},mn.utc=function(e){return this.utcOffset(0,e)},mn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(It(this),"m")),this},mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=jt(ae,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},mn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Dt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Ft,mn.isUTC=Ft,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=T("dates accessor is deprecated. Use date instead.",un),mn.months=T("months accessor is deprecated. Use month instead",Ce),mn.years=T("years accessor is deprecated. Use year instead",be),mn.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),mn.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(v(e,this),(e=Mt(e))._a){var t=e._isUTC?p(e._a):Dt(e._a);this._isDSTShifted=this.isValid()&&L(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var gn=O.prototype;function vn(e,t,n,i){var s=ot(),r=p().set(i,t);return s[n](r,e)}function yn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return vn(e,t,n,"month");var i,s=[];for(i=0;i<12;i++)s[i]=vn(e,i,n,"month");return s}function bn(e,t,n,i){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var s,r=ot(),a=e?r._week.dow:0;if(null!=n)return vn(t,(n+a)%7,i,"day");var o=[];for(s=0;s<7;s++)o[s]=vn(t,(s+a)%7,i,"day");return o}gn.calendar=function(e,t,n){var i=this._calendar[e]||this._calendar.sameElse;return C(i)?i.call(t,n):i},gn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},gn.invalidDate=function(){return this._invalidDate},gn.ordinal=function(e){return this._ordinal.replace("%d",e)},gn.preparse=_n,gn.postformat=_n,gn.relativeTime=function(e,t,n,i){var s=this._relativeTime[n];return C(s)?s(e,t,n,i):s.replace(/%d/i,e)},gn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return C(n)?n(t):n.replace(/%s/i,t)},gn.set=function(e){var t,n;for(n in e)C(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},gn.months=function(e,t){return e?r(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||De).test(t)?"format":"standalone"][e.month()]:r(this._months)?this._months:this._months.standalone},gn.monthsShort=function(e,t){return e?r(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[De.test(t)?"format":"standalone"][e.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},gn.monthsParse=function(e,t,n){var i,s,r;if(this._monthsParseExact)return Se.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(s=p([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(s,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(s,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(s,"")+"|^"+this.monthsShort(s,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[i].test(e))return i;if(n&&"MMM"===t&&this._shortMonthsParse[i].test(e))return i;if(!n&&this._monthsParse[i].test(e))return i}},gn.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ae.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Oe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},gn.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ae.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Ee),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},gn.week=function(e){return Fe(e,this._week.dow,this._week.doy).week},gn.firstDayOfYear=function(){return this._week.doy},gn.firstDayOfWeek=function(){return this._week.dow},gn.weekdays=function(e,t){var n=r(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?We(n,this._week.dow):e?n[e.day()]:n},gn.weekdaysMin=function(e){return!0===e?We(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},gn.weekdaysShort=function(e){return!0===e?We(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},gn.weekdaysParse=function(e,t,n){var i,s,r;if(this._weekdaysParseExact)return qe.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(s=p([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[i].test(e))return i;if(n&&"ddd"===t&&this._shortWeekdaysParse[i].test(e))return i;if(n&&"dd"===t&&this._minWeekdaysParse[i].test(e))return i;if(!n&&this._weekdaysParse[i].test(e))return i}},gn.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Ge.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Be),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},gn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Ge.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ue),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},gn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Ge.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ke),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},gn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},gn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},rt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===M(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),s.lang=T("moment.lang is deprecated. Use moment.locale instead.",rt),s.langData=T("moment.langData is deprecated. Use moment.localeData instead.",ot);var wn=Math.abs;function kn(e,t,n,i){var s=zt(t,n);return e._milliseconds+=i*s._milliseconds,e._days+=i*s._days,e._months+=i*s._months,e._bubble()}function Mn(e){return e<0?Math.floor(e):Math.ceil(e)}function Ln(e){return 4800*e/146097}function Dn(e){return 146097*e/4800}function Tn(e){return function(){return this.as(e)}}var xn=Tn("ms"),Sn=Tn("s"),Yn=Tn("m"),Cn=Tn("h"),En=Tn("d"),On=Tn("w"),An=Tn("M"),Hn=Tn("Q"),jn=Tn("y");function Pn(e){return function(){return this.isValid()?this._data[e]:NaN}}var In=Pn("milliseconds"),Fn=Pn("seconds"),Nn=Pn("minutes"),Wn=Pn("hours"),zn=Pn("days"),Rn=Pn("months"),$n=Pn("years");var qn=Math.round,Bn={ss:44,s:45,m:45,h:22,d:26,M:11};function Un(e,t,n,i,s){return s.relativeTime(t||1,!!n,e,i)}var Kn=Math.abs;function Gn(e){return(e>0)-(e<0)||+e}function Vn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Kn(this._milliseconds)/1e3,i=Kn(this._days),s=Kn(this._months);e=k(n/60),t=k(e/60),n%=60,e%=60;var r=k(s/12),a=s%=12,o=i,l=t,u=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var h=c<0?"-":"",p=Gn(this._months)!==Gn(c)?"-":"",f=Gn(this._days)!==Gn(c)?"-":"",m=Gn(this._milliseconds)!==Gn(c)?"-":"";return h+"P"+(r?p+r+"Y":"")+(a?p+a+"M":"")+(o?f+o+"D":"")+(l||u||d?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(d?m+d+"S":"")}var Jn=Ct.prototype;return Jn.isValid=function(){return this._isValid},Jn.abs=function(){var e=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),e.milliseconds=wn(e.milliseconds),e.seconds=wn(e.seconds),e.minutes=wn(e.minutes),e.hours=wn(e.hours),e.months=wn(e.months),e.years=wn(e.years),this},Jn.add=function(e,t){return kn(this,e,t,1)},Jn.subtract=function(e,t){return kn(this,e,t,-1)},Jn.as=function(e){if(!this.isValid())return NaN;var t,n,i=this._milliseconds;if("month"===(e=j(e))||"quarter"===e||"year"===e)switch(t=this._days+i/864e5,n=this._months+Ln(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Dn(this._months)),e){case"week":return t/7+i/6048e5;case"day":return t+i/864e5;case"hour":return 24*t+i/36e5;case"minute":return 1440*t+i/6e4;case"second":return 86400*t+i/1e3;case"millisecond":return Math.floor(864e5*t)+i;default:throw new Error("Unknown unit "+e)}},Jn.asMilliseconds=xn,Jn.asSeconds=Sn,Jn.asMinutes=Yn,Jn.asHours=Cn,Jn.asDays=En,Jn.asWeeks=On,Jn.asMonths=An,Jn.asQuarters=Hn,Jn.asYears=jn,Jn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*M(this._months/12):NaN},Jn._bubble=function(){var e,t,n,i,s,r=this._milliseconds,a=this._days,o=this._months,l=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*Mn(Dn(o)+a),a=0,o=0),l.milliseconds=r%1e3,e=k(r/1e3),l.seconds=e%60,t=k(e/60),l.minutes=t%60,n=k(t/60),l.hours=n%24,a+=k(n/24),o+=s=k(Ln(a)),a-=Mn(Dn(s)),i=k(o/12),o%=12,l.days=a,l.months=o,l.years=i,this},Jn.clone=function(){return zt(this)},Jn.get=function(e){return e=j(e),this.isValid()?this[e+"s"]():NaN},Jn.milliseconds=In,Jn.seconds=Fn,Jn.minutes=Nn,Jn.hours=Wn,Jn.days=zn,Jn.weeks=function(){return k(this.days()/7)},Jn.months=Rn,Jn.years=$n,Jn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var i=zt(e).abs(),s=qn(i.as("s")),r=qn(i.as("m")),a=qn(i.as("h")),o=qn(i.as("d")),l=qn(i.as("M")),u=qn(i.as("y")),d=s<=Bn.ss&&["s",s]||s<Bn.s&&["ss",s]||r<=1&&["m"]||r<Bn.m&&["mm",r]||a<=1&&["h"]||a<Bn.h&&["hh",a]||o<=1&&["d"]||o<Bn.d&&["dd",o]||l<=1&&["M"]||l<Bn.M&&["MM",l]||u<=1&&["y"]||["yy",u];return d[2]=t,d[3]=+e>0,d[4]=n,Un.apply(null,d)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},Jn.toISOString=Vn,Jn.toString=Vn,Jn.toJSON=Vn,Jn.locale=Vt,Jn.localeData=Qt,Jn.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Vn),Jn.lang=Jt,q("X",0,0,"unix"),q("x",0,0,"valueOf"),de("x",re),de("X",/[+-]?\d+(\.\d{1,3})?/),fe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))})),fe("x",(function(e,t,n){n._d=new Date(M(e))})),s.version="2.24.0",t=Dt,s.fn=mn,s.min=function(){return St("isBefore",[].slice.call(arguments,0))},s.max=function(){return St("isAfter",[].slice.call(arguments,0))},s.now=function(){return Date.now?Date.now():+new Date},s.utc=p,s.unix=function(e){return Dt(1e3*e)},s.months=function(e,t){return yn(e,t,"months")},s.isDate=u,s.locale=rt,s.invalid=_,s.duration=zt,s.isMoment=w,s.weekdays=function(e,t,n){return bn(e,t,n,"weekdays")},s.parseZone=function(){return Dt.apply(null,arguments).parseZone()},s.localeData=ot,s.isDuration=Et,s.monthsShort=function(e,t){return yn(e,t,"monthsShort")},s.weekdaysMin=function(e,t,n){return bn(e,t,n,"weekdaysMin")},s.defineLocale=at,s.updateLocale=function(e,t){if(null!=t){var n,i,s=et;null!=(i=st(e))&&(s=i._config),(n=new O(t=E(s,t))).parentLocale=tt[e],tt[e]=n,rt(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?tt[e]=tt[e].parentLocale:null!=tt[e]&&delete tt[e]);return tt[e]},s.locales=function(){return x(tt)},s.weekdaysShort=function(e,t,n){return bn(e,t,n,"weekdaysShort")},s.normalizeUnits=j,s.relativeTimeRounding=function(e){return void 0===e?qn:"function"==typeof e&&(qn=e,!0)},s.relativeTimeThreshold=function(e,t){return void 0!==Bn[e]&&(void 0===t?Bn[e]:(Bn[e]=t,"s"===e&&(Bn.ss=t-1),!0))},s.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},s.prototype=mn,s.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},s}()}.call(window,!1)},4231:(e,t,n)=>{var i=n(73609);(function(t,s){var r;r=function(e){var t=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(e){return!e||/^\s*$/.test(e)},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isArray:e.isArray,isFunction:e.isFunction,isObject:e.isPlainObject,isUndefined:function(e){return void 0===e},isElement:function(e){return!(!e||1!==e.nodeType)},isJQuery:function(t){return t instanceof e},toStr:function(e){return t.isUndefined(e)||null===e?"":e+""},bind:e.proxy,each:function(t,n){e.each(t,(function(e,t){return n(t,e)}))},map:e.map,filter:e.grep,every:function(t,n){var i=!0;return t?(e.each(t,(function(e,s){if(!(i=n.call(null,s,e,t)))return!1})),!!i):i},some:function(t,n){var i=!1;return t?(e.each(t,(function(e,s){if(i=n.call(null,s,e,t))return!1})),!!i):i},mixin:e.extend,identity:function(e){return e},clone:function(t){return e.extend(!0,{},t)},getIdGenerator:function(){var e=0;return function(){return e++}},templatify:function(t){return e.isFunction(t)?t:function(){return String(t)}},defer:function(e){setTimeout(e,0)},debounce:function(e,t,n){var i,s;return function(){var r,a,o=this,l=arguments;return r=function(){i=null,n||(s=e.apply(o,l))},a=n&&!i,clearTimeout(i),i=setTimeout(r,t),a&&(s=e.apply(o,l)),s}},throttle:function(e,t){var n,i,s,r,a,o;return a=0,o=function(){a=new Date,s=null,r=e.apply(n,i)},function(){var l=new Date,u=t-(l-a);return n=this,i=arguments,u<=0?(clearTimeout(s),s=null,a=l,r=e.apply(n,i)):s||(s=setTimeout(o,u)),r}},stringify:function(e){return t.isString(e)?e:JSON.stringify(e)},noop:function(){}}}(),n=function(){"use strict";var e={wrapper:"twitter-typeahead",input:"tt-input",hint:"tt-hint",menu:"tt-menu",dataset:"tt-dataset",suggestion:"tt-suggestion",selectable:"tt-selectable",empty:"tt-empty",open:"tt-open",cursor:"tt-cursor",highlight:"tt-highlight"};return function(i){var s,r,a,o;return r=t.mixin({},e,i),{css:(s={css:(o={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},menu:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:" 0"}},t.isMsie()&&t.mixin(o.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),o),classes:r,html:(a=r,{wrapper:'<span class="'+a.wrapper+'"></span>',menu:'<div class="'+a.menu+'"></div>'}),selectors:n(r)}).css,html:s.html,classes:s.classes,selectors:s.selectors,mixin:function(e){t.mixin(e,s)}}};function n(e){var n={};return t.each(e,(function(e,t){n[t]="."+e})),n}}(),i=function(){"use strict";var n;function i(t){t&&t.el||e.error("EventBus initialized without el"),this.$el=e(t.el)}return n={render:"rendered",cursorchange:"cursorchanged",select:"selected",autocomplete:"autocompleted"},t.mixin(i.prototype,{_trigger:function(t,n){var i;return i=e.Event("typeahead:"+t),(n=n||[]).unshift(i),this.$el.trigger.apply(this.$el,n),i},before:function(e){var t;return t=[].slice.call(arguments,1),this._trigger("before"+e,t).isDefaultPrevented()},trigger:function(e){var t;this._trigger(e,[].slice.call(arguments,1)),(t=n[e])&&this._trigger(t,[].slice.call(arguments,1))}}),i}(),s=function(){"use strict";var e=/\s+/,t=window.setImmediate?function(e){setImmediate((function(){e()}))}:function(e){setTimeout((function(){e()}),0)};return{onSync:function(e,t,i){return n.call(this,"sync",e,t,i)},onAsync:function(e,t,i){return n.call(this,"async",e,t,i)},off:function(t){var n;if(!this._callbacks)return this;for(t=t.split(e);n=t.shift();)delete this._callbacks[n];return this},trigger:function(n){var s,r,a,o,l;if(!this._callbacks)return this;for(n=n.split(e),a=[].slice.call(arguments,1);(s=n.shift())&&(r=this._callbacks[s]);)o=i(r.sync,this,[s].concat(a)),l=i(r.async,this,[s].concat(a)),o()&&t(l);return this}};function n(t,n,i,s){var r;if(!i)return this;for(n=n.split(e),i=s?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(i,s):i,this._callbacks=this._callbacks||{};r=n.shift();)this._callbacks[r]=this._callbacks[r]||{sync:[],async:[]},this._callbacks[r][t].push(i);return this}function i(e,t,n){return function(){for(var i,s=0,r=e.length;!i&&s<r;s+=1)i=!1===e[s].apply(t,n);return!i}}}(),r=function(e){"use strict";var n={node:null,pattern:null,tagName:"strong",className:null,wordsOnly:!1,caseSensitive:!1};return function(i){var s;(i=t.mixin({},n,i)).node&&i.pattern&&(i.pattern=t.isArray(i.pattern)?i.pattern:[i.pattern],s=function(e,n,i){for(var s,r=[],a=0,o=e.length;a<o;a++)r.push(t.escapeRegExChars(e[a]));return s=i?"\\b("+r.join("|")+")\\b":"("+r.join("|")+")",n?new RegExp(s):new RegExp(s,"i")}(i.pattern,i.caseSensitive,i.wordsOnly),function e(t,n){for(var i,s=0;s<t.childNodes.length;s++)3===(i=t.childNodes[s]).nodeType?s+=n(i)?1:0:e(i,n)}(i.node,(function(t){var n,r,a;return(n=s.exec(t.data))&&(a=e.createElement(i.tagName),i.className&&(a.className=i.className),(r=t.splitText(n.index)).splitText(n[0].length),a.appendChild(r.cloneNode(!0)),t.parentNode.replaceChild(a,r)),!!n})))}}(window.document),a=function(){"use strict";var n;function i(n,i){var s;(n=n||{}).input||e.error("input is missing"),i.mixin(this),this.$hint=e(n.hint),this.$input=e(n.input),this.query=this.$input.val(),this.queryWhenFocused=this.hasFocus()?this.query:null,this.$overflowHelper=(s=this.$input,e('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:s.css("font-family"),fontSize:s.css("font-size"),fontStyle:s.css("font-style"),fontVariant:s.css("font-variant"),fontWeight:s.css("font-weight"),wordSpacing:s.css("word-spacing"),letterSpacing:s.css("letter-spacing"),textIndent:s.css("text-indent"),textRendering:s.css("text-rendering"),textTransform:s.css("text-transform")}).insertAfter(s)),this._checkLanguageDirection(),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=t.noop)}return n={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},i.normalizeQuery=function(e){return t.toStr(e).replace(/^\s*/g,"").replace(/\s{2,}/g," ")},t.mixin(i.prototype,s,{_onBlur:function(){this.resetInputValue(),this.trigger("blurred")},_onFocus:function(){this.queryWhenFocused=this.query,this.trigger("focused")},_onKeydown:function(e){var t=n[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._setQuery(this.getInputValue()),this.clearHintIfInvalid(),this._checkLanguageDirection()},_managePreventDefault:function(e,t){var n;switch(e){case"up":case"down":n=!r(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;switch(e){case"tab":n=!r(t);break;default:n=!0}return n},_checkLanguageDirection:function(){var e=(this.$input.css("direction")||"ltr").toLowerCase();this.dir!==e&&(this.dir=e,this.$hint.attr("dir",e),this.trigger("langDirChanged",e))},_setQuery:function(e,t){var n,s,r,a;r=e,a=this.query,s=!!(n=i.normalizeQuery(r)===i.normalizeQuery(a))&&this.query.length!==e.length,this.query=e,t||n?!t&&s&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},bind:function(){var e,i,s,r,a=this;return e=t.bind(this._onBlur,this),i=t.bind(this._onFocus,this),s=t.bind(this._onKeydown,this),r=t.bind(this._onInput,this),this.$input.on("blur.tt",e).on("focus.tt",i).on("keydown.tt",s),!t.isMsie()||t.isMsie()>9?this.$input.on("input.tt",r):this.$input.on("keydown.tt keypress.tt cut.tt paste.tt",(function(e){n[e.which||e.keyCode]||t.defer(t.bind(a._onInput,a,e))})),this},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getLangDir:function(){return this.dir},getQuery:function(){return this.query||""},setQuery:function(e,t){this.setInputValue(e),this._setQuery(e,t)},hasQueryChangedSinceLastFocus:function(){return this.query!==this.queryWhenFocused},getInputValue:function(){return this.$input.val()},setInputValue:function(e){this.$input.val(e),this.clearHintIfInvalid(),this._checkLanguageDirection()},resetInputValue:function(){this.setInputValue(this.query)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),(""===e||!n||this.hasOverflow())&&this.clearHint()},hasFocus:function(){return this.$input.is(":focus")},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,n,i;return e=this.$input.val().length,n=this.$input[0].selectionStart,t.isNumber(n)?n===e:!document.selection||((i=document.selection.createRange()).moveStart("character",-e),e===i.text.length)},destroy:function(){this.$hint.off(".tt"),this.$input.off(".tt"),this.$overflowHelper.remove(),this.$hint=this.$input=this.$overflowHelper=e("<div>")}}),i;function r(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}}(),o=function(){"use strict";var n,i;function a(n,s){var r,a,o,l;(n=n||{}).templates=n.templates||{},n.templates.notFound=n.templates.notFound||n.templates.empty,n.source||e.error("missing source"),n.node||e.error("missing node"),n.name&&(r=n.name,!/^[_a-zA-Z0-9-]+$/.test(r))&&e.error("invalid dataset name: "+n.name),s.mixin(this),this.highlight=!!n.highlight,this.name=n.name||i(),this.limit=n.limit||5,this.displayFn=(l=(l=n.display||n.displayKey)||t.stringify,t.isFunction(l)?l:function(e){return e[l]}),this.templates=(a=n.templates,o=this.displayFn,{notFound:a.notFound&&t.templatify(a.notFound),pending:a.pending&&t.templatify(a.pending),header:a.header&&t.templatify(a.header),footer:a.footer&&t.templatify(a.footer),suggestion:a.suggestion||function(t){return e("<div>").text(o(t))}}),this.source=n.source.__ttAdapter?n.source.__ttAdapter():n.source,this.async=t.isUndefined(n.async)?this.source.length>2:!!n.async,this._resetLastSuggestion(),this.$el=e(n.node).addClass(this.classes.dataset).addClass(this.classes.dataset+"-"+this.name)}return n={val:"tt-selectable-display",obj:"tt-selectable-object"},i=t.getIdGenerator(),a.extractData=function(t){var i=e(t);return i.data(n.obj)?{val:i.data(n.val)||"",obj:i.data(n.obj)||null}:null},t.mixin(a.prototype,s,{_overwrite:function(e,t){(t=t||[]).length?this._renderSuggestions(e,t):this.async&&this.templates.pending?this._renderPending(e):!this.async&&this.templates.notFound?this._renderNotFound(e):this._empty(),this.trigger("rendered",this.name,t,!1)},_append:function(e,t){(t=t||[]).length&&this.$lastSuggestion.length?this._appendSuggestions(e,t):t.length?this._renderSuggestions(e,t):!this.$lastSuggestion.length&&this.templates.notFound&&this._renderNotFound(e),this.trigger("rendered",this.name,t,!0)},_renderSuggestions:function(e,t){var n;n=this._getSuggestionsFragment(e,t),this.$lastSuggestion=n.children().last(),this.$el.html(n).prepend(this._getHeader(e,t)).append(this._getFooter(e,t))},_appendSuggestions:function(e,t){var n,i;i=(n=this._getSuggestionsFragment(e,t)).children().last(),this.$lastSuggestion.after(n),this.$lastSuggestion=i},_renderPending:function(e){var t=this.templates.pending;this._resetLastSuggestion(),t&&this.$el.html(t({query:e,dataset:this.name}))},_renderNotFound:function(e){var t=this.templates.notFound;this._resetLastSuggestion(),t&&this.$el.html(t({query:e,dataset:this.name}))},_empty:function(){this.$el.empty(),this._resetLastSuggestion()},_getSuggestionsFragment:function(i,s){var a,o=this;return a=document.createDocumentFragment(),t.each(s,(function(t){var s,r;r=o._injectQuery(i,t),s=e(o.templates.suggestion(r)).data(n.obj,t).data(n.val,o.displayFn(t)).addClass(o.classes.suggestion+" "+o.classes.selectable),a.appendChild(s[0])})),this.highlight&&r({className:this.classes.highlight,node:a,pattern:i}),e(a)},_getFooter:function(e,t){return this.templates.footer?this.templates.footer({query:e,suggestions:t,dataset:this.name}):null},_getHeader:function(e,t){return this.templates.header?this.templates.header({query:e,suggestions:t,dataset:this.name}):null},_resetLastSuggestion:function(){this.$lastSuggestion=e()},_injectQuery:function(e,n){return t.isObject(n)?t.mixin({_query:e},n):n},update:function(t){var n=this,i=!1,s=!1,r=0;function a(e){s||(s=!0,e=(e||[]).slice(0,n.limit),r=e.length,n._overwrite(t,e),r<n.limit&&n.async&&n.trigger("asyncRequested",t))}this.cancel(),this.cancel=function(){i=!0,n.cancel=e.noop,n.async&&n.trigger("asyncCanceled",t)},this.source(t,a,(function(s){s=s||[],!i&&r<n.limit&&(n.cancel=e.noop,r+=s.length,n._append(t,s.slice(0,n.limit-r)),n.async&&n.trigger("asyncReceived",t))})),!s&&a([])},cancel:e.noop,clear:function(){this._empty(),this.cancel(),this.trigger("cleared")},isEmpty:function(){return this.$el.is(":empty")},destroy:function(){this.$el=e("<div>")}}),a}(),l=function(){"use strict";function n(n,i){var s=this;(n=n||{}).node||e.error("node is required"),i.mixin(this),this.$node=e(n.node),this.query=null,this.datasets=t.map(n.datasets,(function(t){var n=s.$node.find(t.node).first();return t.node=n.length?n:e("<div>").appendTo(s.$node),new o(t,i)}))}return t.mixin(n.prototype,s,{_onSelectableClick:function(t){this.trigger("selectableClicked",e(t.currentTarget))},_onRendered:function(e,t,n,i){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetRendered",t,n,i)},_onCleared:function(){this.$node.toggleClass(this.classes.empty,this._allDatasetsEmpty()),this.trigger("datasetCleared")},_propagate:function(){this.trigger.apply(this,arguments)},_allDatasetsEmpty:function(){return t.every(this.datasets,(function(e){return e.isEmpty()}))},_getSelectables:function(){return this.$node.find(this.selectors.selectable)},_removeCursor:function(){var e=this.getActiveSelectable();e&&e.removeClass(this.classes.cursor)},_ensureVisible:function(e){var t,n,i,s;n=(t=e.position().top)+e.outerHeight(!0),i=this.$node.scrollTop(),s=this.$node.height()+parseInt(this.$node.css("paddingTop"),10)+parseInt(this.$node.css("paddingBottom"),10),t<0?this.$node.scrollTop(i+t):s<n&&this.$node.scrollTop(i+(n-s))},bind:function(){var e,n=this;return e=t.bind(this._onSelectableClick,this),this.$node.on("click.tt",this.selectors.selectable,e),t.each(this.datasets,(function(e){e.onSync("asyncRequested",n._propagate,n).onSync("asyncCanceled",n._propagate,n).onSync("asyncReceived",n._propagate,n).onSync("rendered",n._onRendered,n).onSync("cleared",n._onCleared,n)})),this},isOpen:function(){return this.$node.hasClass(this.classes.open)},open:function(){this.$node.addClass(this.classes.open)},close:function(){this.$node.removeClass(this.classes.open),this._removeCursor()},setLanguageDirection:function(e){this.$node.attr("dir",e)},selectableRelativeToCursor:function(e){var t,n,i;return n=this.getActiveSelectable(),t=this._getSelectables(),-1===(i=(i=((i=(n?t.index(n):-1)+e)+1)%(t.length+1)-1)<-1?t.length-1:i)?null:t.eq(i)},setCursor:function(e){this._removeCursor(),(e=e&&e.first())&&(e.addClass(this.classes.cursor),this._ensureVisible(e))},getSelectableData:function(e){return e&&e.length?o.extractData(e):null},getActiveSelectable:function(){var e=this._getSelectables().filter(this.selectors.cursor).first();return e.length?e:null},getTopSelectable:function(){var e=this._getSelectables().first();return e.length?e:null},update:function(e){var n=e!==this.query;return n&&(this.query=e,t.each(this.datasets,(function(t){t.update(e)}))),n},empty:function(){t.each(this.datasets,(function(e){e.clear()})),this.query=null,this.$node.addClass(this.classes.empty)},destroy:function(){this.$node.off(".tt"),this.$node=e("<div>"),t.each(this.datasets,(function(e){e.destroy()}))}}),n}(),u=function(){"use strict";var e=l.prototype;function n(){l.apply(this,[].slice.call(arguments,0))}return t.mixin(n.prototype,l.prototype,{open:function(){return!this._allDatasetsEmpty()&&this._show(),e.open.apply(this,[].slice.call(arguments,0))},close:function(){return this._hide(),e.close.apply(this,[].slice.call(arguments,0))},_onRendered:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),e._onRendered.apply(this,[].slice.call(arguments,0))},_onCleared:function(){return this._allDatasetsEmpty()?this._hide():this.isOpen()&&this._show(),e._onCleared.apply(this,[].slice.call(arguments,0))},setLanguageDirection:function(t){return this.$node.css("ltr"===t?this.css.ltr:this.css.rtl),e.setLanguageDirection.apply(this,[].slice.call(arguments,0))},_hide:function(){this.$node.hide()},_show:function(){this.$node.css("display","block")}}),n}(),d=function(){"use strict";function n(n,s){var r,a,o,l,u,d,c,h,p,f,m;(n=n||{}).input||e.error("missing input"),n.menu||e.error("missing menu"),n.eventBus||e.error("missing event bus"),s.mixin(this),this.eventBus=n.eventBus,this.minLength=t.isNumber(n.minLength)?n.minLength:1,this.input=n.input,this.menu=n.menu,this.enabled=!0,this.active=!1,this.input.hasFocus()&&this.activate(),this.dir=this.input.getLangDir(),this._hacks(),this.menu.bind().onSync("selectableClicked",this._onSelectableClicked,this).onSync("asyncRequested",this._onAsyncRequested,this).onSync("asyncCanceled",this._onAsyncCanceled,this).onSync("asyncReceived",this._onAsyncReceived,this).onSync("datasetRendered",this._onDatasetRendered,this).onSync("datasetCleared",this._onDatasetCleared,this),r=i(this,"activate","open","_onFocused"),a=i(this,"deactivate","_onBlurred"),o=i(this,"isActive","isOpen","_onEnterKeyed"),l=i(this,"isActive","isOpen","_onTabKeyed"),u=i(this,"isActive","_onEscKeyed"),d=i(this,"isActive","open","_onUpKeyed"),c=i(this,"isActive","open","_onDownKeyed"),h=i(this,"isActive","isOpen","_onLeftKeyed"),p=i(this,"isActive","isOpen","_onRightKeyed"),f=i(this,"_openIfActive","_onQueryChanged"),m=i(this,"_openIfActive","_onWhitespaceChanged"),this.input.bind().onSync("focused",r,this).onSync("blurred",a,this).onSync("enterKeyed",o,this).onSync("tabKeyed",l,this).onSync("escKeyed",u,this).onSync("upKeyed",d,this).onSync("downKeyed",c,this).onSync("leftKeyed",h,this).onSync("rightKeyed",p,this).onSync("queryChanged",f,this).onSync("whitespaceChanged",m,this).onSync("langDirChanged",this._onLangDirChanged,this)}return t.mixin(n.prototype,{_hacks:function(){var n,i;n=this.input.$input||e("<div>"),i=this.menu.$node||e("<div>"),n.on("blur.tt",(function(e){var s,r,a;s=document.activeElement,r=i.is(s),a=i.has(s).length>0,t.isMsie()&&(r||a)&&(e.preventDefault(),e.stopImmediatePropagation(),t.defer((function(){n.focus()})))})),i.on("mousedown.tt",(function(e){e.preventDefault()}))},_onSelectableClicked:function(e,t){this.select(t)},_onDatasetCleared:function(){this._updateHint()},_onDatasetRendered:function(e,t,n,i){this._updateHint(),this.eventBus.trigger("render",n,i,t)},_onAsyncRequested:function(e,t,n){this.eventBus.trigger("asyncrequest",n,t)},_onAsyncCanceled:function(e,t,n){this.eventBus.trigger("asynccancel",n,t)},_onAsyncReceived:function(e,t,n){this.eventBus.trigger("asyncreceive",n,t)},_onFocused:function(){this._minLengthMet()&&this.menu.update(this.input.getQuery())},_onBlurred:function(){this.input.hasQueryChangedSinceLastFocus()&&this.eventBus.trigger("change",this.input.getQuery())},_onEnterKeyed:function(e,t){var n;(n=this.menu.getActiveSelectable())&&this.select(n)&&t.preventDefault()},_onTabKeyed:function(e,t){var n;(n=this.menu.getActiveSelectable())?this.select(n)&&t.preventDefault():(n=this.menu.getTopSelectable())&&this.autocomplete(n)&&t.preventDefault()},_onEscKeyed:function(){this.close()},_onUpKeyed:function(){this.moveCursor(-1)},_onDownKeyed:function(){this.moveCursor(1)},_onLeftKeyed:function(){"rtl"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onRightKeyed:function(){"ltr"===this.dir&&this.input.isCursorAtEnd()&&this.autocomplete(this.menu.getTopSelectable())},_onQueryChanged:function(e,t){this._minLengthMet(t)?this.menu.update(t):this.menu.empty()},_onWhitespaceChanged:function(){this._updateHint()},_onLangDirChanged:function(e,t){this.dir!==t&&(this.dir=t,this.menu.setLanguageDirection(t))},_openIfActive:function(){this.isActive()&&this.open()},_minLengthMet:function(e){return(e=t.isString(e)?e:this.input.getQuery()||"").length>=this.minLength},_updateHint:function(){var e,n,i,s,r,o;e=this.menu.getTopSelectable(),n=this.menu.getSelectableData(e),i=this.input.getInputValue(),!n||t.isBlankString(i)||this.input.hasOverflow()?this.input.clearHint():(s=a.normalizeQuery(i),r=t.escapeRegExChars(s),(o=new RegExp("^(?:"+r+")(.+$)","i").exec(n.val))&&this.input.setHint(i+o[1]))},isEnabled:function(){return this.enabled},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},isActive:function(){return this.active},activate:function(){return!!this.isActive()||!(!this.isEnabled()||this.eventBus.before("active"))&&(this.active=!0,this.eventBus.trigger("active"),!0)},deactivate:function(){return!this.isActive()||!this.eventBus.before("idle")&&(this.active=!1,this.close(),this.eventBus.trigger("idle"),!0)},isOpen:function(){return this.menu.isOpen()},open:function(){return this.isOpen()||this.eventBus.before("open")||(this.menu.open(),this._updateHint(),this.eventBus.trigger("open")),this.isOpen()},close:function(){return this.isOpen()&&!this.eventBus.before("close")&&(this.menu.close(),this.input.clearHint(),this.input.resetInputValue(),this.eventBus.trigger("close")),!this.isOpen()},setVal:function(e){this.input.setQuery(t.toStr(e))},getVal:function(){return this.input.getQuery()},select:function(e){var t=this.menu.getSelectableData(e);return!(!t||this.eventBus.before("select",t.obj)||(this.input.setQuery(t.val,!0),this.eventBus.trigger("select",t.obj),this.close(),0))},autocomplete:function(e){var t,n;return t=this.input.getQuery(),!(!(n=this.menu.getSelectableData(e))||t===n.val||this.eventBus.before("autocomplete",n.obj)||(this.input.setQuery(n.val),this.eventBus.trigger("autocomplete",n.obj),0))},moveCursor:function(e){var t,n,i,s;return t=this.input.getQuery(),n=this.menu.selectableRelativeToCursor(e),s=(i=this.menu.getSelectableData(n))?i.obj:null,!(this._minLengthMet()&&this.menu.update(t)||this.eventBus.before("cursorchange",s)||(this.menu.setCursor(n),i?this.input.setInputValue(i.val):(this.input.resetInputValue(),this._updateHint()),this.eventBus.trigger("cursorchange",s),0))},destroy:function(){this.input.destroy(),this.menu.destroy()}}),n;function i(e){var n=[].slice.call(arguments,1);return function(){var i=[].slice.call(arguments);t.each(n,(function(t){return e[t].apply(e,i)}))}}}();!function(){"use strict";var s,r,o;function c(t,n){t.each((function(){var t,i=e(this);(t=i.data(r.typeahead))&&n(t,i)}))}function h(e,t){return e.clone().addClass(t.classes.hint).removeData().css(t.css.hint).css((n=e,{backgroundAttachment:n.css("background-attachment"),backgroundClip:n.css("background-clip"),backgroundColor:n.css("background-color"),backgroundImage:n.css("background-image"),backgroundOrigin:n.css("background-origin"),backgroundPosition:n.css("background-position"),backgroundRepeat:n.css("background-repeat"),backgroundSize:n.css("background-size")})).prop("readonly",!0).removeAttr("id name placeholder required").attr({autocomplete:"off",spellcheck:"false",tabindex:-1});var n}function p(e,t){e.data(r.attrs,{dir:e.attr("dir"),autocomplete:e.attr("autocomplete"),spellcheck:e.attr("spellcheck"),style:e.attr("style")}),e.addClass(t.classes.input).attr({autocomplete:"off",spellcheck:!1});try{!e.attr("dir")&&e.attr("dir","auto")}catch(e){}return e}function f(n){var i;return(i=t.isJQuery(n)||t.isElement(n)?e(n).first():[]).length?i:null}s=e.fn.typeahead,r={www:"tt-www",attrs:"tt-attrs",typeahead:"tt-typeahead"},o={initialize:function(s,o){var c;return o=t.isArray(o)?o:[].slice.call(arguments,1),c=n((s=s||{}).classNames),this.each(m);function m(){var n,m,_,g,v,y,b,w,k,M,L;t.each(o,(function(e){e.highlight=!!s.highlight})),n=e(this),m=e(c.html.wrapper),_=f(s.hint),g=f(s.menu),v=!1!==s.hint&&!_,y=!1!==s.menu&&!g,v&&(_=h(n,c)),y&&(g=e(c.html.menu).css(c.css.menu)),_&&_.val(""),n=p(n,c),(v||y)&&(m.css(c.css.wrapper),n.css(v?c.css.input:c.css.inputWithNoHint),n.wrap(m).parent().prepend(v?_:null).append(y?g:null)),L=y?u:l,b=new i({el:n}),w=new a({hint:_,input:n},c),k=new L({node:g,datasets:o},c),M=new d({input:w,menu:k,eventBus:b,minLength:s.minLength},c),n.data(r.www,c),n.data(r.typeahead,M)}},isEnabled:function(){var e;return c(this.first(),(function(t){e=t.isEnabled()})),e},enable:function(){return c(this,(function(e){e.enable()})),this},disable:function(){return c(this,(function(e){e.disable()})),this},isActive:function(){var e;return c(this.first(),(function(t){e=t.isActive()})),e},activate:function(){return c(this,(function(e){e.activate()})),this},deactivate:function(){return c(this,(function(e){e.deactivate()})),this},isOpen:function(){var e;return c(this.first(),(function(t){e=t.isOpen()})),e},open:function(){return c(this,(function(e){e.open()})),this},close:function(){return c(this,(function(e){e.close()})),this},select:function(t){var n=!1,i=e(t);return c(this.first(),(function(e){n=e.select(i)})),n},autocomplete:function(t){var n=!1,i=e(t);return c(this.first(),(function(e){n=e.autocomplete(i)})),n},moveCursor:function(e){var t=!1;return c(this.first(),(function(n){t=n.moveCursor(e)})),t},val:function(e){var t;return arguments.length?(c(this,(function(t){t.setVal(e)})),this):(c(this.first(),(function(e){t=e.getVal()})),t)},destroy:function(){return c(this,(function(e,n){!function(e){var n,i;n=e.data(r.www),i=e.parent().filter(n.selectors.wrapper),t.each(e.data(r.attrs),(function(n,i){t.isUndefined(n)?e.removeAttr(i):e.attr(i,n)})),e.removeData(r.typeahead).removeData(r.www).removeData(r.attr).removeClass(n.classes.input),i.length&&(e.detach().insertAfter(i),i.remove())}(n),e.destroy()})),this}},e.fn.typeahead=function(e){return o[e]?o[e].apply(this,[].slice.call(arguments,1)):o.initialize.apply(this,arguments)},e.fn.typeahead.noConflict=function(){return e.fn.typeahead=s,this}}()},"function"==typeof t&&t.amd?t("typeahead.js",["jquery"],(function(e){return r(e)})):"object"==typeof s?e.exports=r(n(73609)):r(i)}).call(window,!1,!1)},96123:(e,t,n)=>{var i=n(73609);(function(t,s){var r;r=function(e,t){"use strict";var n=function(n,i){var s=this;this.$element=e(n),this.textDirection=this.$element.css("direction"),this.options=e.extend(!0,{},e.fn.tokenfield.defaults,{tokens:this.$element.val()},this.$element.data(),i),this._delimiters="string"==typeof this.options.delimiter?[this.options.delimiter]:this.options.delimiter,this._triggerKeys=e.map(this._delimiters,(function(e){return e.charCodeAt(0)})),this._firstDelimiter=this._delimiters[0];var r=e.inArray(" ",this._delimiters),a=e.inArray("-",this._delimiters);r>=0&&(this._delimiters[r]="\\s"),a>=0&&(delete this._delimiters[a],this._delimiters.unshift("-"));var o=["\\","$","[","{","^",".","|","?","*","+","(",")"];e.each(this._delimiters,(function(t,n){e.inArray(n,o)>=0&&(s._delimiters[t]="\\"+n)}));var l,u=t&&"function"==typeof t.getMatchedCSSRules?t.getMatchedCSSRules(n):null,d=n.style.width,c=this.$element.width();u&&e.each(u,(function(e,t){t.style.width&&(l=t.style.width)}));var h="rtl"===e("body").css("direction")?"right":"left",p={position:this.$element.css("position")};p[h]=this.$element.css(h),this.$element.data("original-styles",p).data("original-tabindex",this.$element.prop("tabindex")).css("position","absolute").css(h,"-10000px").prop("tabindex",-1),this.$wrapper=e('<div class="tokenfield form-control" />'),this.$element.hasClass("input-lg")&&this.$wrapper.addClass("input-lg"),this.$element.hasClass("input-sm")&&this.$wrapper.addClass("input-sm"),"rtl"===this.textDirection&&this.$wrapper.addClass("rtl");var f=this.$element.prop("id")||(new Date).getTime()+""+Math.floor(100*(1+Math.random()));this.$input=e('<input type="text" class="token-input" autocomplete="off" />').appendTo(this.$wrapper).prop("placeholder",this.$element.prop("placeholder")).prop("id",f+"-tokenfield").prop("tabindex",this.$element.data("original-tabindex"));var m=e('label[for="'+this.$element.prop("id")+'"]');if(m.length&&m.prop("for",this.$input.prop("id")),this.$copyHelper=e('<input type="text" />').css("position","absolute").css(h,"-10000px").prop("tabindex",-1).prependTo(this.$wrapper),d?this.$wrapper.css("width",d):l?this.$wrapper.css("width",l):this.$element.parents(".form-inline").length&&this.$wrapper.width(c),(this.$element.prop("disabled")||this.$element.parents("fieldset[disabled]").length)&&this.disable(),this.$element.prop("readonly")&&this.readonly(),this.$mirror=e('<span style="position:absolute; top:-999px; left:0; white-space:pre;"/>'),this.$input.css("min-width",this.options.minWidth+"px"),e.each(["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","textTransform","wordSpacing","textIndent"],(function(e,t){s.$mirror[0].style[t]=s.$input.css(t)})),this.$mirror.appendTo("body"),this.$wrapper.insertBefore(this.$element),this.$element.prependTo(this.$wrapper),this.update(),this.setTokens(this.options.tokens,!1,!1),this.listen(),!e.isEmptyObject(this.options.autocomplete)){var _="rtl"===this.textDirection?"right":"left",g=e.extend({minLength:this.options.showAutocompleteOnFocus?0:null,position:{my:_+" top",at:_+" bottom",of:this.$wrapper}},this.options.autocomplete);this.$input.autocomplete(g)}if(!e.isEmptyObject(this.options.typeahead)){var v=this.options.typeahead,y={minLength:this.options.showAutocompleteOnFocus?0:null},b=e.isArray(v)?v:[v,v];b[0]=e.extend({},y,b[0]),this.$input.typeahead.apply(this.$input,b),this.typeahead=!0}this.$element.trigger("tokenfield:initialize")};n.prototype={constructor:n,createToken:function(t,n){var i=this;if("string"==typeof t&&(t={value:t,label:t}),void 0===n&&(n=!0),t.value=e.trim(t.value),t.label=t.label&&t.label.length?e.trim(t.label):t.value,t.value.length&&t.label.length&&!(t.label.length<=this.options.minLength)&&!(this.options.limit&&this.getTokens().length>=this.options.limit)){var s=e.Event("tokenfield:createtoken",{attrs:t});if(this.$element.trigger(s),s.attrs&&!s.isDefaultPrevented()){var r=e('<div class="token" />').attr("data-value",t.value).append('<span class="token-label" />').append('<a href="#" class="close" tabindex="-1">×</a>');this.$input.hasClass("tt-input")?this.$input.parent().before(r):this.$input.before(r),this.$input.css("width",this.options.minWidth+"px");var a=r.find(".token-label"),o=r.find(".close");return this.maxTokenWidth||(this.maxTokenWidth=this.$wrapper.width()-o.outerWidth()-parseInt(o.css("margin-left"),10)-parseInt(o.css("margin-right"),10)-parseInt(r.css("border-left-width"),10)-parseInt(r.css("border-right-width"),10)-parseInt(r.css("padding-left"),10)-parseInt(r.css("padding-right"),10),parseInt(a.css("border-left-width"),10),parseInt(a.css("border-right-width"),10),parseInt(a.css("padding-left"),10),parseInt(a.css("padding-right"),10),parseInt(a.css("margin-left"),10),parseInt(a.css("margin-right"),10)),a.text(t.label).css("max-width",this.maxTokenWidth),r.on("mousedown",(function(e){if(i._disabled||i._readonly)return!1;i.preventDeactivation=!0})).on("click",(function(e){return!i._disabled&&!i._readonly&&(i.preventDeactivation=!1,e.ctrlKey||e.metaKey?(e.preventDefault(),i.toggle(r)):void i.activate(r,e.shiftKey,e.shiftKey))})).on("dblclick",(function(e){if(i._disabled||i._readonly||!i.options.allowEditing)return!1;i.edit(r)})),o.on("click",e.proxy(this.remove,this)),this.$element.trigger(e.Event("tokenfield:createdtoken",{attrs:t,relatedTarget:r.get(0)})),n&&this.$element.val(this.getTokensList()).trigger(e.Event("change",{initiator:"tokenfield"})),this.update(),this.$element.get(0)}}},setTokens:function(t,n,i){if(t){n||this.$wrapper.find(".token").remove(),void 0===i&&(i=!0),"string"==typeof t&&(t=this._delimiters.length?t.split(new RegExp("["+this._delimiters.join("")+"]")):[t]);var s=this;return e.each(t,(function(e,t){s.createToken(t,i)})),this.$element.get(0)}},getTokenData:function(t){var n=t.map((function(){var t=e(this);return{value:t.attr("data-value"),label:t.find(".token-label").text()}})).get();return 1==n.length&&(n=n[0]),n},getTokens:function(t){var n=this,i=[],s=t?".active":"";return this.$wrapper.find(".token"+s).each((function(){i.push(n.getTokenData(e(this)))})),i},getTokensList:function(t,n,i){var s=(t=t||this._firstDelimiter)+((n=null!=n?n:this.options.beautify)&&" "!==t?" ":"");return e.map(this.getTokens(i),(function(e){return e.value})).join(s)},getInput:function(){return this.$input.val()},listen:function(){var n=this;this.$element.on("change",e.proxy(this.change,this)),this.$wrapper.on("mousedown",e.proxy(this.focusInput,this)),this.$input.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("paste",e.proxy(this.paste,this)).on("keydown",e.proxy(this.keydown,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.$copyHelper.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keydown",e.proxy(this.keydown,this)).on("keyup",e.proxy(this.keyup,this)),this.$input.on("keypress",e.proxy(this.update,this)).on("keyup",e.proxy(this.update,this)),this.$input.on("autocompletecreate",(function(){var t=e(this).data("ui-autocomplete").menu.element,i=n.$wrapper.outerWidth()-parseInt(t.css("border-left-width"),10)-parseInt(t.css("border-right-width"),10);t.css("min-width",i+"px")})).on("autocompleteselect",(function(e,t){return n.createToken(t.item)&&(n.$input.val(""),n.$input.data("edit")&&n.unedit(!0)),!1})).on("typeahead:selected typeahead:autocompleted",(function(e,t,i){n.createToken(t)&&(n.$input.typeahead("val",""),n.$input.data("edit")&&n.unedit(!0))})),e(t).on("resize",e.proxy(this.update,this))},keydown:function(t){if(this.focused){var n=this;switch(t.keyCode){case 8:if(!this.$input.is(document.activeElement))break;this.lastInputValue=this.$input.val();break;case 37:i("rtl"===this.textDirection?"next":"prev");break;case 38:s("prev");break;case 39:i("rtl"===this.textDirection?"prev":"next");break;case 40:s("next");break;case 65:if(this.$input.val().length>0||!t.ctrlKey&&!t.metaKey)break;this.activateAll(),t.preventDefault();break;case 9:case 13:if(this.$input.data("ui-autocomplete")&&this.$input.data("ui-autocomplete").menu.element.find("li:has(a.ui-state-focus)").length)break;if(this.$input.hasClass("tt-input")&&this.$wrapper.find(".tt-cursor").length)break;if(this.$input.hasClass("tt-input")&&this.$wrapper.find(".tt-hint").val().length)break;if(this.$input.is(document.activeElement)&&this.$input.val().length||this.$input.data("edit"))return this.createTokensFromInput(t,this.$input.data("edit"));if(13===t.keyCode){if(!this.$copyHelper.is(document.activeElement)||1!==this.$wrapper.find(".token.active").length)break;if(!n.options.allowEditing)break;this.edit(this.$wrapper.find(".token.active"))}}this.lastKeyDown=t.keyCode}function i(e){if(n.$input.is(document.activeElement)){if(n.$input.val().length>0)return;e+="All";var i=n.$input.hasClass("tt-input")?n.$input.parent()[e](".token:first"):n.$input[e](".token:first");if(!i.length)return;n.preventInputFocus=!0,n.preventDeactivation=!0,n.activate(i),t.preventDefault()}else n[e](t.shiftKey),t.preventDefault()}function s(i){if(t.shiftKey){if(n.$input.is(document.activeElement)){if(n.$input.val().length>0)return;var s=n.$input.hasClass("tt-input")?n.$input.parent()[i+"All"](".token:first"):n.$input[i+"All"](".token:first");if(!s.length)return;n.activate(s)}var r="prev"===i?"next":"prev",a="prev"===i?"first":"last";n.firstActiveToken[r+"All"](".token").each((function(){n.deactivate(e(this))})),n.activate(n.$wrapper.find(".token:"+a),!0,!0),t.preventDefault()}}},keypress:function(t){if(this.lastKeyPressCode=t.keyCode,this.lastKeyPressCharCode=t.charCode,-1!==e.inArray(t.charCode,this._triggerKeys)&&this.$input.is(document.activeElement))return this.$input.val()&&this.createTokensFromInput(t),!1},keyup:function(e){if(this.preventInputFocus=!1,this.focused){switch(e.keyCode){case 8:if(this.$input.is(document.activeElement)){if(this.$input.val().length||this.lastInputValue.length&&8===this.lastKeyDown)break;this.preventDeactivation=!0;var t=this.$input.hasClass("tt-input")?this.$input.parent().prevAll(".token:first"):this.$input.prevAll(".token:first");if(!t.length)break;this.activate(t)}else this.remove(e);break;case 46:this.remove(e,"next")}this.lastKeyUp=e.keyCode}},focus:function(e){this.focused=!0,this.$wrapper.addClass("focus"),this.$input.is(document.activeElement)&&(this.$wrapper.find(".active").removeClass("active"),this.$firstActiveToken=null,this.options.showAutocompleteOnFocus&&this.search())},blur:function(e){this.focused=!1,this.$wrapper.removeClass("focus"),this.preventDeactivation||this.$element.is(document.activeElement)||(this.$wrapper.find(".active").removeClass("active"),this.$firstActiveToken=null),!this.preventCreateTokens&&(this.$input.data("edit")&&!this.$input.is(document.activeElement)||this.options.createTokensOnBlur)&&this.createTokensFromInput(e),this.preventDeactivation=!1,this.preventCreateTokens=!1},paste:function(e){var t=this;setTimeout((function(){t.createTokensFromInput(e)}),1)},change:function(e){"tokenfield"!==e.initiator&&this.setTokens(this.$element.val())},createTokensFromInput:function(e,t){if(!(this.$input.val().length<this.options.minLength)){var n=this.getTokensList();return this.setTokens(this.$input.val(),!0),n==this.getTokensList()&&this.$input.val().length||(this.$input.hasClass("tt-input")?this.$input.typeahead("val",""):this.$input.val(""),this.$input.data("edit")&&this.unedit(t)),!1}},next:function(e){if(e){var t=this.$wrapper.find(".active:first");if(t&&this.$firstActiveToken&&t.index()<this.$firstActiveToken.index())return this.deactivate(t)}var n=this.$wrapper.find(".active:last").nextAll(".token:first");n.length?this.activate(n,e):this.$input.focus()},prev:function(e){if(e){var t=this.$wrapper.find(".active:last");if(t&&this.$firstActiveToken&&t.index()>this.$firstActiveToken.index())return this.deactivate(t)}var n=this.$wrapper.find(".active:first").prevAll(".token:first");n.length||(n=this.$wrapper.find(".token:first")),n.length||e?this.activate(n,e):this.$input.focus()},activate:function(t,n,i,s){if(t){if(void 0===s&&(s=!0),i&&(n=!0),this.$copyHelper.focus(),n||(this.$wrapper.find(".active").removeClass("active"),s?this.$firstActiveToken=t:delete this.$firstActiveToken),i&&this.$firstActiveToken){var r=this.$firstActiveToken.index()-2,a=t.index()-2,o=this;this.$wrapper.find(".token").slice(Math.min(r,a)+1,Math.max(r,a)).each((function(){o.activate(e(this),!0)}))}t.addClass("active"),this.$copyHelper.val(this.getTokensList(null,null,!0)).select()}},activateAll:function(){var t=this;this.$wrapper.find(".token").each((function(n){t.activate(e(this),0!==n,!1,!1)}))},deactivate:function(e){e&&(e.removeClass("active"),this.$copyHelper.val(this.getTokensList(null,null,!0)).select())},toggle:function(e){e&&(e.toggleClass("active"),this.$copyHelper.val(this.getTokensList(null,null,!0)).select())},edit:function(t){if(t){var n={value:t.data("value"),label:t.find(".token-label").text()},i={attrs:n,relatedTarget:t.get(0)},s=e.Event("tokenfield:edittoken",i);if(this.$element.trigger(s),!s.isDefaultPrevented()){t.find(".token-label").text(n.value);var r=t.outerWidth(),a=this.$input.hasClass("tt-input")?this.$input.parent():this.$input;t.replaceWith(a),this.preventCreateTokens=!0,this.$input.val(n.value).select().data("edit",!0).width(r),this.update(),this.$element.trigger(e.Event("tokenfield:editedtoken",i))}}},unedit:function(e){if((this.$input.hasClass("tt-input")?this.$input.parent():this.$input).appendTo(this.$wrapper),this.$input.data("edit",!1),this.$mirror.text(""),this.update(),e){var t=this;setTimeout((function(){t.$input.focus()}),1)}},remove:function(t,n){if(!(this.$input.is(document.activeElement)||this._disabled||this._readonly)){var i="click"===t.type?e(t.target).closest(".token"):this.$wrapper.find(".token.active");if("click"!==t.type&&(n||(n="prev"),this[n](),"prev"===n))var s=0===i.first().prevAll(".token:first").length;var r={attrs:this.getTokenData(i),relatedTarget:i.get(0)},a=e.Event("tokenfield:removetoken",r);if(this.$element.trigger(a),!a.isDefaultPrevented()){var o=e.Event("tokenfield:removedtoken",r),l=e.Event("change",{initiator:"tokenfield"});i.remove(),this.$element.val(this.getTokensList()).trigger(o).trigger(l),this.$wrapper.find(".token").length&&"click"!==t.type&&!s||this.$input.focus(),this.$input.css("width",this.options.minWidth+"px"),this.update(),t.preventDefault(),t.stopPropagation()}}},update:function(e){var t=this.$input.val(),n=parseInt(this.$input.css("padding-left"),10)+parseInt(this.$input.css("padding-right"),10);if(this.$input.data("edit")){if(t||(t=this.$input.prop("placeholder")),t===this.$mirror.text())return;this.$mirror.text(t);var i=this.$mirror.width()+10;if(i>this.$wrapper.width())return this.$input.width(this.$wrapper.width());this.$input.width(i)}else{if(this.$input.css("width",this.options.minWidth+"px"),"rtl"===this.textDirection)return this.$input.width(this.$input.offset().left+this.$input.outerWidth()-this.$wrapper.offset().left-parseInt(this.$wrapper.css("padding-left"),10)-n-1);this.$input.width(this.$wrapper.offset().left+this.$wrapper.width()+parseInt(this.$wrapper.css("padding-left"),10)-this.$input.offset().left-n)}},focusInput:function(t){if(!(e(t.target).closest(".token").length||e(t.target).closest(".token-input").length||e(t.target).closest(".tt-dropdown-menu").length)){var n=this;setTimeout((function(){n.$input.focus()}),0)}},search:function(){this.$input.data("ui-autocomplete")&&this.$input.autocomplete("search")},disable:function(){this.setProperty("disabled",!0)},enable:function(){this.setProperty("disabled",!1)},readonly:function(){this.setProperty("readonly",!0)},writeable:function(){this.setProperty("readonly",!1)},setProperty:function(e,t){this["_"+e]=t,this.$input.prop(e,t),this.$element.prop(e,t),this.$wrapper[t?"addClass":"removeClass"](e)},destroy:function(){this.$element.val(this.getTokensList()),this.$element.css(this.$element.data("original-styles")),this.$element.prop("tabindex",this.$element.data("original-tabindex"));var t=e('label[for="'+this.$input.prop("id")+'"]');return t.length&&t.prop("for",this.$element.prop("id")),this.$element.insertBefore(this.$wrapper),this.$element.removeData("original-styles").removeData("original-tabindex").removeData("bs.tokenfield"),this.$wrapper.remove(),this.$element}};var i=e.fn.tokenfield;return e.fn.tokenfield=function(t,i){var s,r=[];Array.prototype.push.apply(r,arguments);var a=this.each((function(){var a=e(this),o=a.data("bs.tokenfield"),l="object"==typeof t&&t;"string"==typeof t&&o&&o[t]?(r.shift(),s=o[t].apply(o,r)):o||"string"==typeof t||i||a.data("bs.tokenfield",o=new n(this,l))}));return void 0!==s?s:a},e.fn.tokenfield.defaults={minWidth:60,minLength:0,allowEditing:!0,limit:0,autocomplete:{},typeahead:{},showAutocompleteOnFocus:!1,createTokensOnBlur:!1,delimiter:",",beautify:!0},e.fn.tokenfield.Constructor=n,e.fn.tokenfield.noConflict=function(){return e.fn.tokenfield=i,this},n},"function"==typeof t&&t.amd?t(["jquery"],r):"object"==typeof s?e.exports=n.g.window&&n.g.window.$?r(n.g.window.$):function(e){if(!e.$&&!e.fn)throw new Error("Tokenfield requires a window object with jQuery or a jQuery instance");return r(e.$||e)}:r(i)}).call(window,!1,!1)},99276:(e,t,n)=>{var i=n(73609),s=n(30664);(function(t,r){!function(a){"use strict";if("function"==typeof t&&t.amd)t(["jquery","moment"],a);else if("object"==typeof r)e.exports=a(n(73609),n(30664));else{if(void 0===i)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if(void 0===s)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(i,s)}}((function(e,t){"use strict";if(!t)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var n=function(n,i){var s,r,a,o,l,u,d,c,h,p={},f=!0,m=!1,_=!1,g=0,v=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],y=["days","months","years","decades"],b=["top","bottom","auto"],w=["left","right","auto"],k=["default","top","bottom"],M={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t",delete:46,46:"delete"},L={},D=function(){return void 0!==t.tz&&void 0!==i.timeZone&&null!==i.timeZone&&""!==i.timeZone},T=function(e){var n;return n=null==e?t():t.isDate(e)||t.isMoment(e)?t(e):D()?t.tz(e,u,i.useStrict,i.timeZone):t(e,u,i.useStrict),D()&&n.tz(i.timeZone),n},x=function(e){if("string"!=typeof e||e.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(e){case"y":return-1!==l.indexOf("Y");case"M":return-1!==l.indexOf("M");case"d":return-1!==l.toLowerCase().indexOf("d");case"h":case"H":return-1!==l.toLowerCase().indexOf("h");case"m":return-1!==l.indexOf("m");case"s":return-1!==l.indexOf("s");default:return!1}},S=function(){return x("h")||x("m")||x("s")},Y=function(){return x("y")||x("M")||x("d")},C=function(){var t,s=(m||n).position(),r=(m||n).offset(),a=i.widgetPositioning.vertical,o=i.widgetPositioning.horizontal;if(i.widgetParent)t=i.widgetParent.append(_);else if(n.is("input"))t=n.after(_).parent();else{if(i.inline)return void(t=n.append(_));t=n,n.children().first().after(_)}if("auto"===a&&(a=r.top+1.5*_.height()>=e(window).height()+e(window).scrollTop()&&_.height()+n.outerHeight()<r.top?"top":"bottom"),"auto"===o&&(o=t.width()<r.left+_.outerWidth()/2&&r.left+_.outerWidth()>e(window).width()?"right":"left"),"top"===a?_.addClass("top").removeClass("bottom"):_.addClass("bottom").removeClass("top"),"right"===o?_.addClass("pull-right"):_.removeClass("pull-right"),"static"===t.css("position")&&(t=t.parents().filter((function(){return"static"!==e(this).css("position")})).first()),0===t.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");_.css({top:"top"===a?"auto":s.top+n.outerHeight(),bottom:"top"===a?t.outerHeight()-(t===n?0:s.top):"auto",left:"left"===o?t===n?0:s.left:"auto",right:"left"===o?"auto":t.outerWidth()-n.outerWidth()-(t===n?0:s.left)})},E=function(e){"dp.change"===e.type&&(e.date&&e.date.isSame(e.oldDate)||!e.date&&!e.oldDate)||n.trigger(e)},O=function(e){"y"===e&&(e="YYYY"),E({type:"dp.update",change:e,viewDate:r.clone()})},A=function(e){_&&(e&&(d=Math.max(g,Math.min(3,d+e))),_.find(".datepicker > div").hide().filter(".datepicker-"+v[d].clsName).show())},H=function(t,n){if(!t.isValid())return!1;if(i.disabledDates&&"d"===n&&(s=t,!0===i.disabledDates[s.format("YYYY-MM-DD")]))return!1;var s;if(i.enabledDates&&"d"===n&&!function(e){return!0===i.enabledDates[e.format("YYYY-MM-DD")]}(t))return!1;if(i.minDate&&t.isBefore(i.minDate,n))return!1;if(i.maxDate&&t.isAfter(i.maxDate,n))return!1;if(i.daysOfWeekDisabled&&"d"===n&&-1!==i.daysOfWeekDisabled.indexOf(t.day()))return!1;if(i.disabledHours&&("h"===n||"m"===n||"s"===n)&&function(e){return!0===i.disabledHours[e.format("H")]}(t))return!1;if(i.enabledHours&&("h"===n||"m"===n||"s"===n)&&!function(e){return!0===i.enabledHours[e.format("H")]}(t))return!1;if(i.disabledTimeIntervals&&("h"===n||"m"===n||"s"===n)){var r=!1;if(e.each(i.disabledTimeIntervals,(function(){if(t.isBetween(this[0],this[1]))return r=!0,!1})),r)return!1}return!0},j=function(){var n,a,o,l=_.find(".datepicker-days"),u=l.find("th"),d=[],c=[];if(Y()){for(u.eq(0).find("span").attr("title",i.tooltips.prevMonth),u.eq(1).attr("title",i.tooltips.selectMonth),u.eq(2).find("span").attr("title",i.tooltips.nextMonth),l.find(".disabled").removeClass("disabled"),u.eq(1).text(r.format(i.dayViewHeaderFormat)),H(r.clone().subtract(1,"M"),"M")||u.eq(0).addClass("disabled"),H(r.clone().add(1,"M"),"M")||u.eq(2).addClass("disabled"),n=r.clone().startOf("M").startOf("w").startOf("d"),o=0;o<42;o++)0===n.weekday()&&(a=e("<tr>"),i.calendarWeeks&&a.append('<td class="cw">'+n.week()+"</td>"),d.push(a)),c=["day"],n.isBefore(r,"M")&&c.push("old"),n.isAfter(r,"M")&&c.push("new"),n.isSame(s,"d")&&!f&&c.push("active"),H(n,"d")||c.push("disabled"),n.isSame(T(),"d")&&c.push("today"),0!==n.day()&&6!==n.day()||c.push("weekend"),E({type:"dp.classify",date:n,classNames:c}),a.append('<td data-action="selectDay" data-day="'+n.format("L")+'" class="'+c.join(" ")+'">'+n.date()+"</td>"),n.add(1,"d");var h,p,m;l.find("tbody").empty().append(d),p=(h=_.find(".datepicker-months")).find("th"),m=h.find("tbody").find("span"),p.eq(0).find("span").attr("title",i.tooltips.prevYear),p.eq(1).attr("title",i.tooltips.selectYear),p.eq(2).find("span").attr("title",i.tooltips.nextYear),h.find(".disabled").removeClass("disabled"),H(r.clone().subtract(1,"y"),"y")||p.eq(0).addClass("disabled"),p.eq(1).text(r.year()),H(r.clone().add(1,"y"),"y")||p.eq(2).addClass("disabled"),m.removeClass("active"),s.isSame(r,"y")&&!f&&m.eq(s.month()).addClass("active"),m.each((function(t){H(r.clone().month(t),"M")||e(this).addClass("disabled")})),function(){var e=_.find(".datepicker-years"),t=e.find("th"),n=r.clone().subtract(5,"y"),a=r.clone().add(6,"y"),o="";for(t.eq(0).find("span").attr("title",i.tooltips.prevDecade),t.eq(1).attr("title",i.tooltips.selectDecade),t.eq(2).find("span").attr("title",i.tooltips.nextDecade),e.find(".disabled").removeClass("disabled"),i.minDate&&i.minDate.isAfter(n,"y")&&t.eq(0).addClass("disabled"),t.eq(1).text(n.year()+"-"+a.year()),i.maxDate&&i.maxDate.isBefore(a,"y")&&t.eq(2).addClass("disabled");!n.isAfter(a,"y");)o+='<span data-action="selectYear" class="year'+(n.isSame(s,"y")&&!f?" active":"")+(H(n,"y")?"":" disabled")+'">'+n.year()+"</span>",n.add(1,"y");e.find("td").html(o)}(),function(){var e,n=_.find(".datepicker-decades"),a=n.find("th"),o=t({y:r.year()-r.year()%100-1}),l=o.clone().add(100,"y"),u=o.clone(),d=!1,c=!1,h="";for(a.eq(0).find("span").attr("title",i.tooltips.prevCentury),a.eq(2).find("span").attr("title",i.tooltips.nextCentury),n.find(".disabled").removeClass("disabled"),(o.isSame(t({y:1900}))||i.minDate&&i.minDate.isAfter(o,"y"))&&a.eq(0).addClass("disabled"),a.eq(1).text(o.year()+"-"+l.year()),(o.isSame(t({y:2e3}))||i.maxDate&&i.maxDate.isBefore(l,"y"))&&a.eq(2).addClass("disabled");!o.isAfter(l,"y");)e=o.year()+12,d=i.minDate&&i.minDate.isAfter(o,"y")&&i.minDate.year()<=e,c=i.maxDate&&i.maxDate.isAfter(o,"y")&&i.maxDate.year()<=e,h+='<span data-action="selectDecade" class="decade'+(s.isAfter(o)&&s.year()<=e?" active":"")+(H(o,"y")||d||c?"":" disabled")+'" data-selection="'+(o.year()+6)+'">'+(o.year()+1)+" - "+(o.year()+12)+"</span>",o.add(12,"y");h+="<span></span><span></span><span></span>",n.find("td").html(h),a.eq(1).text(u.year()+1+"-"+o.year())}()}},P=function(){_&&(j(),function(){var t,n,a=_.find(".timepicker span[data-time-component]");o||(t=_.find(".timepicker [data-action=togglePeriod]"),n=s.clone().add(s.hours()>=12?-12:12,"h"),t.text(s.format("A")),H(n,"h")?t.removeClass("disabled"):t.addClass("disabled")),a.filter("[data-time-component=hours]").text(s.format(o?"HH":"hh")),a.filter("[data-time-component=minutes]").text(s.format("mm")),a.filter("[data-time-component=seconds]").text(s.format("ss")),function(){var t=_.find(".timepicker-hours table"),n=r.clone().startOf("d"),i=[],s=e("<tr>");for(r.hour()>11&&!o&&n.hour(12);n.isSame(r,"d")&&(o||r.hour()<12&&n.hour()<12||r.hour()>11);)n.hour()%4==0&&(s=e("<tr>"),i.push(s)),s.append('<td data-action="selectHour" class="hour'+(H(n,"h")?"":" disabled")+'">'+n.format(o?"HH":"hh")+"</td>"),n.add(1,"h");t.empty().append(i)}(),function(){for(var t=_.find(".timepicker-minutes table"),n=r.clone().startOf("h"),s=[],a=e("<tr>"),o=1===i.stepping?5:i.stepping;r.isSame(n,"h");)n.minute()%(4*o)==0&&(a=e("<tr>"),s.push(a)),a.append('<td data-action="selectMinute" class="minute'+(H(n,"m")?"":" disabled")+'">'+n.format("mm")+"</td>"),n.add(o,"m");t.empty().append(s)}(),function(){for(var t=_.find(".timepicker-seconds table"),n=r.clone().startOf("m"),i=[],s=e("<tr>");r.isSame(n,"m");)n.second()%20==0&&(s=e("<tr>"),i.push(s)),s.append('<td data-action="selectSecond" class="second'+(H(n,"s")?"":" disabled")+'">'+n.format("ss")+"</td>"),n.add(5,"s");t.empty().append(i)}()}())},I=function(e){var t=f?null:s;if(!e)return f=!0,a.val(""),n.data("date",""),E({type:"dp.change",date:!1,oldDate:t}),void P();if(e=e.clone().locale(i.locale),D()&&e.tz(i.timeZone),1!==i.stepping)for(e.minutes(Math.round(e.minutes()/i.stepping)*i.stepping).seconds(0);i.minDate&&e.isBefore(i.minDate);)e.add(i.stepping,"minutes");H(e)?(r=(s=e).clone(),a.val(s.format(l)),n.data("date",s.format(l)),f=!1,P(),E({type:"dp.change",date:s.clone(),oldDate:t})):(i.keepInvalid?E({type:"dp.change",date:e,oldDate:t}):a.val(f?"":s.format(l)),E({type:"dp.error",date:e,oldDate:t}))},F=function(){var t=!1;return _?(_.find(".collapse").each((function(){var n=e(this).data("collapse");return!n||!n.transitioning||(t=!0,!1)})),t||(m&&m.hasClass("btn")&&m.toggleClass("active"),_.hide(),e(window).off("resize",C),_.off("click","[data-action]"),_.off("mousedown",!1),_.remove(),_=!1,E({type:"dp.hide",date:s.clone()}),a.blur(),r=s.clone()),p):p},N=function(){I(null)},W=function(e){return void 0===i.parseInputDate?(!t.isMoment(e)||e instanceof Date)&&(e=T(e)):e=i.parseInputDate(e),e},z={next:function(){var e=v[d].navFnc;r.add(v[d].navStep,e),j(),O(e)},previous:function(){var e=v[d].navFnc;r.subtract(v[d].navStep,e),j(),O(e)},pickerSwitch:function(){A(1)},selectMonth:function(t){var n=e(t.target).closest("tbody").find("span").index(e(t.target));r.month(n),d===g?(I(s.clone().year(r.year()).month(r.month())),i.inline||F()):(A(-1),j()),O("M")},selectYear:function(t){var n=parseInt(e(t.target).text(),10)||0;r.year(n),d===g?(I(s.clone().year(r.year())),i.inline||F()):(A(-1),j()),O("YYYY")},selectDecade:function(t){var n=parseInt(e(t.target).data("selection"),10)||0;r.year(n),d===g?(I(s.clone().year(r.year())),i.inline||F()):(A(-1),j()),O("YYYY")},selectDay:function(t){var n=r.clone();e(t.target).is(".old")&&n.subtract(1,"M"),e(t.target).is(".new")&&n.add(1,"M"),I(n.date(parseInt(e(t.target).text(),10))),S()||i.keepOpen||i.inline||F()},incrementHours:function(){var e=s.clone().add(1,"h");H(e,"h")&&I(e)},incrementMinutes:function(){var e=s.clone().add(i.stepping,"m");H(e,"m")&&I(e)},incrementSeconds:function(){var e=s.clone().add(1,"s");H(e,"s")&&I(e)},decrementHours:function(){var e=s.clone().subtract(1,"h");H(e,"h")&&I(e)},decrementMinutes:function(){var e=s.clone().subtract(i.stepping,"m");H(e,"m")&&I(e)},decrementSeconds:function(){var e=s.clone().subtract(1,"s");H(e,"s")&&I(e)},togglePeriod:function(){I(s.clone().add(s.hours()>=12?-12:12,"h"))},togglePicker:function(t){var n,s=e(t.target),r=s.closest("ul"),a=r.find(".in"),o=r.find(".collapse:not(.in)");if(a&&a.length){if((n=a.data("collapse"))&&n.transitioning)return;a.collapse?(a.collapse("hide"),o.collapse("show")):(a.removeClass("in"),o.addClass("in")),s.is("span")?s.toggleClass(i.icons.time+" "+i.icons.date):s.find("span").toggleClass(i.icons.time+" "+i.icons.date)}},showPicker:function(){_.find(".timepicker > div:not(.timepicker-picker)").hide(),_.find(".timepicker .timepicker-picker").show()},showHours:function(){_.find(".timepicker .timepicker-picker").hide(),_.find(".timepicker .timepicker-hours").show()},showMinutes:function(){_.find(".timepicker .timepicker-picker").hide(),_.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){_.find(".timepicker .timepicker-picker").hide(),_.find(".timepicker .timepicker-seconds").show()},selectHour:function(t){var n=parseInt(e(t.target).text(),10);o||(s.hours()>=12?12!==n&&(n+=12):12===n&&(n=0)),I(s.clone().hours(n)),z.showPicker.call(p)},selectMinute:function(t){I(s.clone().minutes(parseInt(e(t.target).text(),10))),z.showPicker.call(p)},selectSecond:function(t){I(s.clone().seconds(parseInt(e(t.target).text(),10))),z.showPicker.call(p)},clear:N,today:function(){var e=T();H(e,"d")&&I(e)},close:F},R=function(t){return e(t.currentTarget).is(".disabled")||z[e(t.currentTarget).data("action")].apply(p,arguments),!1},$=function(){var t,n,s,l,u,d,c,h,g,v,y,b,w,k,M,L;return a.prop("disabled")||!i.ignoreReadonly&&a.prop("readonly")||_||(void 0!==a.val()&&0!==a.val().trim().length?I(W(a.val().trim())):f&&i.useCurrent&&(i.inline||a.is("input")&&0===a.val().trim().length)&&(t=T(),"string"==typeof i.useCurrent&&(t={year:function(e){return e.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(e){return e.date(1).hours(0).seconds(0).minutes(0)},day:function(e){return e.hours(0).seconds(0).minutes(0)},hour:function(e){return e.seconds(0).minutes(0)},minute:function(e){return e.seconds(0)}}[i.useCurrent](t)),I(t)),b=e("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),w=e("<div>").addClass("datepicker").append((v=e("<thead>").append(e("<tr>").append(e("<th>").addClass("prev").attr("data-action","previous").append(e("<span>").addClass(i.icons.previous))).append(e("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",i.calendarWeeks?"6":"5")).append(e("<th>").addClass("next").attr("data-action","next").append(e("<span>").addClass(i.icons.next)))),y=e("<tbody>").append(e("<tr>").append(e("<td>").attr("colspan",i.calendarWeeks?"8":"7"))),[e("<div>").addClass("datepicker-days").append(e("<table>").addClass("table-condensed").append(v).append(e("<tbody>"))),e("<div>").addClass("datepicker-months").append(e("<table>").addClass("table-condensed").append(v.clone()).append(y.clone())),e("<div>").addClass("datepicker-years").append(e("<table>").addClass("table-condensed").append(v.clone()).append(y.clone())),e("<div>").addClass("datepicker-decades").append(e("<table>").addClass("table-condensed").append(v.clone()).append(y.clone()))])),k=e("<div>").addClass("timepicker").append((d=e("<div>").addClass("timepicker-hours").append(e("<table>").addClass("table-condensed")),c=e("<div>").addClass("timepicker-minutes").append(e("<table>").addClass("table-condensed")),h=e("<div>").addClass("timepicker-seconds").append(e("<table>").addClass("table-condensed")),g=[(s=e("<tr>"),l=e("<tr>"),u=e("<tr>"),x("h")&&(s.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(e("<span>").addClass(i.icons.up)))),l.append(e("<td>").append(e("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:i.tooltips.pickHour}).attr("data-action","showHours"))),u.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(e("<span>").addClass(i.icons.down))))),x("m")&&(x("h")&&(s.append(e("<td>").addClass("separator")),l.append(e("<td>").addClass("separator").html(":")),u.append(e("<td>").addClass("separator"))),s.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(e("<span>").addClass(i.icons.up)))),l.append(e("<td>").append(e("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:i.tooltips.pickMinute}).attr("data-action","showMinutes"))),u.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(e("<span>").addClass(i.icons.down))))),x("s")&&(x("m")&&(s.append(e("<td>").addClass("separator")),l.append(e("<td>").addClass("separator").html(":")),u.append(e("<td>").addClass("separator"))),s.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(e("<span>").addClass(i.icons.up)))),l.append(e("<td>").append(e("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:i.tooltips.pickSecond}).attr("data-action","showSeconds"))),u.append(e("<td>").append(e("<a>").attr({href:"#",tabindex:"-1",title:i.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(e("<span>").addClass(i.icons.down))))),o||(s.append(e("<td>").addClass("separator")),l.append(e("<td>").append(e("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:i.tooltips.togglePeriod}))),u.append(e("<td>").addClass("separator"))),e("<div>").addClass("timepicker-picker").append(e("<table>").addClass("table-condensed").append([s,l,u])))],x("h")&&g.push(d),x("m")&&g.push(c),x("s")&&g.push(h),g)),M=e("<ul>").addClass("list-unstyled"),L=e("<li>").addClass("picker-switch"+(i.collapse?" accordion-toggle":"")).append((n=[],i.showTodayButton&&n.push(e("<td>").append(e("<a>").attr({"data-action":"today",title:i.tooltips.today}).append(e("<span>").addClass(i.icons.today)))),!i.sideBySide&&Y()&&S()&&n.push(e("<td>").append(e("<a>").attr({"data-action":"togglePicker",title:i.tooltips.selectTime}).append(e("<span>").addClass(i.icons.time)))),i.showClear&&n.push(e("<td>").append(e("<a>").attr({"data-action":"clear",title:i.tooltips.clear}).append(e("<span>").addClass(i.icons.clear)))),i.showClose&&n.push(e("<td>").append(e("<a>").attr({"data-action":"close",title:i.tooltips.close}).append(e("<span>").addClass(i.icons.close)))),e("<table>").addClass("table-condensed").append(e("<tbody>").append(e("<tr>").append(n))))),i.inline&&b.removeClass("dropdown-menu"),o&&b.addClass("usetwentyfour"),x("s")&&!o&&b.addClass("wider"),_=i.sideBySide&&Y()&&S()?(b.addClass("timepicker-sbs"),"top"===i.toolbarPlacement&&b.append(L),b.append(e("<div>").addClass("row").append(w.addClass("col-md-6")).append(k.addClass("col-md-6"))),"bottom"===i.toolbarPlacement&&b.append(L),b):("top"===i.toolbarPlacement&&M.append(L),Y()&&M.append(e("<li>").addClass(i.collapse&&S()?"collapse in":"").append(w)),"default"===i.toolbarPlacement&&M.append(L),S()&&M.append(e("<li>").addClass(i.collapse&&Y()?"collapse":"").append(k)),"bottom"===i.toolbarPlacement&&M.append(L),b.append(M)),function(){var t=e("<tr>"),n=r.clone().startOf("w").startOf("d");for(!0===i.calendarWeeks&&t.append(e("<th>").addClass("cw").text("#"));n.isBefore(r.clone().endOf("w"));)t.append(e("<th>").addClass("dow").text(n.format("dd"))),n.add(1,"d");_.find(".datepicker-days thead").append(t)}(),function(){for(var t=[],n=r.clone().startOf("y").startOf("d");n.isSame(r,"y");)t.push(e("<span>").attr("data-action","selectMonth").addClass("month").text(n.format("MMM"))),n.add(1,"M");_.find(".datepicker-months td").empty().append(t)}(),_.find(".timepicker-hours").hide(),_.find(".timepicker-minutes").hide(),_.find(".timepicker-seconds").hide(),P(),A(),e(window).on("resize",C),_.on("click","[data-action]",R),_.on("mousedown",!1),m&&m.hasClass("btn")&&m.toggleClass("active"),C(),_.show(),i.focusOnShow&&!a.is(":focus")&&a.focus(),E({type:"dp.show"})),p},q=function(){return _?F():$()},B=function(e){var t,n,s,r,a=null,o=[],l={},u=e.which;for(t in L[u]="p",L)L.hasOwnProperty(t)&&"p"===L[t]&&(o.push(t),parseInt(t,10)!==u&&(l[t]=!0));for(t in i.keyBinds)if(i.keyBinds.hasOwnProperty(t)&&"function"==typeof i.keyBinds[t]&&(s=t.split(" ")).length===o.length&&M[u]===s[s.length-1]){for(r=!0,n=s.length-2;n>=0;n--)if(!(M[s[n]]in l)){r=!1;break}if(r){a=i.keyBinds[t];break}}a&&(a.call(p,_),e.stopPropagation(),e.preventDefault())},U=function(e){L[e.which]="r",e.stopPropagation(),e.preventDefault()},K=function(t){var n=e(t.target).val().trim(),i=n?W(n):null;return I(i),t.stopImmediatePropagation(),!1},G=function(t){var n={};return e.each(t,(function(){var e=W(this);e.isValid()&&(n[e.format("YYYY-MM-DD")]=!0)})),!!Object.keys(n).length&&n},V=function(t){var n={};return e.each(t,(function(){n[this]=!0})),!!Object.keys(n).length&&n},J=function(){var e=i.format||"L LT";l=e.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,(function(e){return(s.localeData().longDateFormat(e)||e).replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,(function(e){return s.localeData().longDateFormat(e)||e}))})),(u=i.extraFormats?i.extraFormats.slice():[]).indexOf(e)<0&&u.indexOf(l)<0&&u.push(l),o=l.toLowerCase().indexOf("a")<1&&l.replace(/\[.*?\]/g,"").indexOf("h")<1,x("y")&&(g=2),x("M")&&(g=1),x("d")&&(g=0),d=Math.max(g,d),f||I(s)};if(p.destroy=function(){F(),a.off({change:K,blur,keydown:B,keyup:U,focus:i.allowInputToggle?F:""}),n.is("input")?a.off({focus:$}):m&&(m.off("click",q),m.off("mousedown",!1)),n.removeData("DateTimePicker"),n.removeData("date")},p.toggle=q,p.show=$,p.hide=F,p.disable=function(){return F(),m&&m.hasClass("btn")&&m.addClass("disabled"),a.prop("disabled",!0),p},p.enable=function(){return m&&m.hasClass("btn")&&m.removeClass("disabled"),a.prop("disabled",!1),p},p.ignoreReadonly=function(e){if(0===arguments.length)return i.ignoreReadonly;if("boolean"!=typeof e)throw new TypeError("ignoreReadonly () expects a boolean parameter");return i.ignoreReadonly=e,p},p.options=function(t){if(0===arguments.length)return e.extend(!0,{},i);if(!(t instanceof Object))throw new TypeError("options() options parameter should be an object");return e.extend(!0,i,t),e.each(i,(function(e,t){if(void 0===p[e])throw new TypeError("option "+e+" is not recognized!");p[e](t)})),p},p.date=function(e){if(0===arguments.length)return f?null:s.clone();if(!(null===e||"string"==typeof e||t.isMoment(e)||e instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return I(null===e?null:W(e)),p},p.format=function(e){if(0===arguments.length)return i.format;if("string"!=typeof e&&("boolean"!=typeof e||!1!==e))throw new TypeError("format() expects a string or boolean:false parameter "+e);return i.format=e,l&&J(),p},p.timeZone=function(e){if(0===arguments.length)return i.timeZone;if("string"!=typeof e)throw new TypeError("newZone() expects a string parameter");return i.timeZone=e,p},p.dayViewHeaderFormat=function(e){if(0===arguments.length)return i.dayViewHeaderFormat;if("string"!=typeof e)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return i.dayViewHeaderFormat=e,p},p.extraFormats=function(e){if(0===arguments.length)return i.extraFormats;if(!1!==e&&!(e instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return i.extraFormats=e,u&&J(),p},p.disabledDates=function(t){if(0===arguments.length)return i.disabledDates?e.extend({},i.disabledDates):i.disabledDates;if(!t)return i.disabledDates=!1,P(),p;if(!(t instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return i.disabledDates=G(t),i.enabledDates=!1,P(),p},p.enabledDates=function(t){if(0===arguments.length)return i.enabledDates?e.extend({},i.enabledDates):i.enabledDates;if(!t)return i.enabledDates=!1,P(),p;if(!(t instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return i.enabledDates=G(t),i.disabledDates=!1,P(),p},p.daysOfWeekDisabled=function(e){if(0===arguments.length)return i.daysOfWeekDisabled.splice(0);if("boolean"==typeof e&&!e)return i.daysOfWeekDisabled=!1,P(),p;if(!(e instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(i.daysOfWeekDisabled=e.reduce((function(e,t){return(t=parseInt(t,10))>6||t<0||isNaN(t)||-1===e.indexOf(t)&&e.push(t),e}),[]).sort(),i.useCurrent&&!i.keepInvalid){for(var t=0;!H(s,"d");){if(s.add(1,"d"),31===t)throw"Tried 31 times to find a valid date";t++}I(s)}return P(),p},p.maxDate=function(e){if(0===arguments.length)return i.maxDate?i.maxDate.clone():i.maxDate;if("boolean"==typeof e&&!1===e)return i.maxDate=!1,P(),p;"string"==typeof e&&("now"!==e&&"moment"!==e||(e=T()));var t=W(e);if(!t.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+e);if(i.minDate&&t.isBefore(i.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+t.format(l));return i.maxDate=t,i.useCurrent&&!i.keepInvalid&&s.isAfter(e)&&I(i.maxDate),r.isAfter(t)&&(r=t.clone().subtract(i.stepping,"m")),P(),p},p.minDate=function(e){if(0===arguments.length)return i.minDate?i.minDate.clone():i.minDate;if("boolean"==typeof e&&!1===e)return i.minDate=!1,P(),p;"string"==typeof e&&("now"!==e&&"moment"!==e||(e=T()));var t=W(e);if(!t.isValid())throw new TypeError("minDate() Could not parse date parameter: "+e);if(i.maxDate&&t.isAfter(i.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+t.format(l));return i.minDate=t,i.useCurrent&&!i.keepInvalid&&s.isBefore(e)&&I(i.minDate),r.isBefore(t)&&(r=t.clone().add(i.stepping,"m")),P(),p},p.defaultDate=function(e){if(0===arguments.length)return i.defaultDate?i.defaultDate.clone():i.defaultDate;if(!e)return i.defaultDate=!1,p;"string"==typeof e&&(e="now"===e||"moment"===e?T():T(e));var t=W(e);if(!t.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+e);if(!H(t))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return i.defaultDate=t,(i.defaultDate&&i.inline||""===a.val().trim())&&I(i.defaultDate),p},p.locale=function(e){if(0===arguments.length)return i.locale;if(!t.localeData(e))throw new TypeError("locale() locale "+e+" is not loaded from moment locales!");return i.locale=e,s.locale(i.locale),r.locale(i.locale),l&&J(),_&&(F(),$()),p},p.stepping=function(e){return 0===arguments.length?i.stepping:(e=parseInt(e,10),(isNaN(e)||e<1)&&(e=1),i.stepping=e,p)},p.useCurrent=function(e){var t=["year","month","day","hour","minute"];if(0===arguments.length)return i.useCurrent;if("boolean"!=typeof e&&"string"!=typeof e)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof e&&-1===t.indexOf(e.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+t.join(", "));return i.useCurrent=e,p},p.collapse=function(e){if(0===arguments.length)return i.collapse;if("boolean"!=typeof e)throw new TypeError("collapse() expects a boolean parameter");return i.collapse===e||(i.collapse=e,_&&(F(),$())),p},p.icons=function(t){if(0===arguments.length)return e.extend({},i.icons);if(!(t instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return e.extend(i.icons,t),_&&(F(),$()),p},p.tooltips=function(t){if(0===arguments.length)return e.extend({},i.tooltips);if(!(t instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return e.extend(i.tooltips,t),_&&(F(),$()),p},p.useStrict=function(e){if(0===arguments.length)return i.useStrict;if("boolean"!=typeof e)throw new TypeError("useStrict() expects a boolean parameter");return i.useStrict=e,p},p.sideBySide=function(e){if(0===arguments.length)return i.sideBySide;if("boolean"!=typeof e)throw new TypeError("sideBySide() expects a boolean parameter");return i.sideBySide=e,_&&(F(),$()),p},p.viewMode=function(e){if(0===arguments.length)return i.viewMode;if("string"!=typeof e)throw new TypeError("viewMode() expects a string parameter");if(-1===y.indexOf(e))throw new TypeError("viewMode() parameter must be one of ("+y.join(", ")+") value");return i.viewMode=e,d=Math.max(y.indexOf(e),g),A(),p},p.toolbarPlacement=function(e){if(0===arguments.length)return i.toolbarPlacement;if("string"!=typeof e)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===k.indexOf(e))throw new TypeError("toolbarPlacement() parameter must be one of ("+k.join(", ")+") value");return i.toolbarPlacement=e,_&&(F(),$()),p},p.widgetPositioning=function(t){if(0===arguments.length)return e.extend({},i.widgetPositioning);if("[object Object]"!=={}.toString.call(t))throw new TypeError("widgetPositioning() expects an object variable");if(t.horizontal){if("string"!=typeof t.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(t.horizontal=t.horizontal.toLowerCase(),-1===w.indexOf(t.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+w.join(", ")+")");i.widgetPositioning.horizontal=t.horizontal}if(t.vertical){if("string"!=typeof t.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(t.vertical=t.vertical.toLowerCase(),-1===b.indexOf(t.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+b.join(", ")+")");i.widgetPositioning.vertical=t.vertical}return P(),p},p.calendarWeeks=function(e){if(0===arguments.length)return i.calendarWeeks;if("boolean"!=typeof e)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return i.calendarWeeks=e,P(),p},p.showTodayButton=function(e){if(0===arguments.length)return i.showTodayButton;if("boolean"!=typeof e)throw new TypeError("showTodayButton() expects a boolean parameter");return i.showTodayButton=e,_&&(F(),$()),p},p.showClear=function(e){if(0===arguments.length)return i.showClear;if("boolean"!=typeof e)throw new TypeError("showClear() expects a boolean parameter");return i.showClear=e,_&&(F(),$()),p},p.widgetParent=function(t){if(0===arguments.length)return i.widgetParent;if("string"==typeof t&&(t=e(t)),null!==t&&"string"!=typeof t&&!(t instanceof e))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return i.widgetParent=t,_&&(F(),$()),p},p.keepOpen=function(e){if(0===arguments.length)return i.keepOpen;if("boolean"!=typeof e)throw new TypeError("keepOpen() expects a boolean parameter");return i.keepOpen=e,p},p.focusOnShow=function(e){if(0===arguments.length)return i.focusOnShow;if("boolean"!=typeof e)throw new TypeError("focusOnShow() expects a boolean parameter");return i.focusOnShow=e,p},p.inline=function(e){if(0===arguments.length)return i.inline;if("boolean"!=typeof e)throw new TypeError("inline() expects a boolean parameter");return i.inline=e,p},p.clear=function(){return N(),p},p.keyBinds=function(e){return 0===arguments.length?i.keyBinds:(i.keyBinds=e,p)},p.getMoment=function(e){return T(e)},p.debug=function(e){if("boolean"!=typeof e)throw new TypeError("debug() expects a boolean parameter");return i.debug=e,p},p.allowInputToggle=function(e){if(0===arguments.length)return i.allowInputToggle;if("boolean"!=typeof e)throw new TypeError("allowInputToggle() expects a boolean parameter");return i.allowInputToggle=e,p},p.showClose=function(e){if(0===arguments.length)return i.showClose;if("boolean"!=typeof e)throw new TypeError("showClose() expects a boolean parameter");return i.showClose=e,p},p.keepInvalid=function(e){if(0===arguments.length)return i.keepInvalid;if("boolean"!=typeof e)throw new TypeError("keepInvalid() expects a boolean parameter");return i.keepInvalid=e,p},p.datepickerInput=function(e){if(0===arguments.length)return i.datepickerInput;if("string"!=typeof e)throw new TypeError("datepickerInput() expects a string parameter");return i.datepickerInput=e,p},p.parseInputDate=function(e){if(0===arguments.length)return i.parseInputDate;if("function"!=typeof e)throw new TypeError("parseInputDate() sholud be as function");return i.parseInputDate=e,p},p.disabledTimeIntervals=function(t){if(0===arguments.length)return i.disabledTimeIntervals?e.extend({},i.disabledTimeIntervals):i.disabledTimeIntervals;if(!t)return i.disabledTimeIntervals=!1,P(),p;if(!(t instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return i.disabledTimeIntervals=t,P(),p},p.disabledHours=function(t){if(0===arguments.length)return i.disabledHours?e.extend({},i.disabledHours):i.disabledHours;if(!t)return i.disabledHours=!1,P(),p;if(!(t instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(i.disabledHours=V(t),i.enabledHours=!1,i.useCurrent&&!i.keepInvalid){for(var n=0;!H(s,"h");){if(s.add(1,"h"),24===n)throw"Tried 24 times to find a valid date";n++}I(s)}return P(),p},p.enabledHours=function(t){if(0===arguments.length)return i.enabledHours?e.extend({},i.enabledHours):i.enabledHours;if(!t)return i.enabledHours=!1,P(),p;if(!(t instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(i.enabledHours=V(t),i.disabledHours=!1,i.useCurrent&&!i.keepInvalid){for(var n=0;!H(s,"h");){if(s.add(1,"h"),24===n)throw"Tried 24 times to find a valid date";n++}I(s)}return P(),p},p.viewDate=function(e){if(0===arguments.length)return r.clone();if(!e)return r=s.clone(),p;if(!("string"==typeof e||t.isMoment(e)||e instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return r=W(e),O(),p},n.is("input"))a=n;else if(0===(a=n.find(i.datepickerInput)).length)a=n.find("input");else if(!a.is("input"))throw new Error('CSS class "'+i.datepickerInput+'" cannot be applied to non input element');if(n.hasClass("input-group")&&(m=0===n.find(".datepickerbutton").length?n.find(".input-group-addon"):n.find(".datepickerbutton")),!i.inline&&!a.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return s=T(),r=s.clone(),e.extend(!0,i,(h={},(c=n.is("input")||i.inline?n.data():n.find("input").data()).dateOptions&&c.dateOptions instanceof Object&&(h=e.extend(!0,h,c.dateOptions)),e.each(i,(function(e){var t="date"+e.charAt(0).toUpperCase()+e.slice(1);void 0!==c[t]&&(h[e]=c[t])})),h)),p.options(i),J(),a.on({change:K,blur:i.debug?"":F,keydown:B,keyup:U,focus:i.allowInputToggle?$:""}),n.is("input")?a.on({focus:$}):m&&(m.on("click",q),m.on("mousedown",!1)),a.prop("disabled")&&p.disable(),a.is("input")&&0!==a.val().trim().length?I(W(a.val().trim())):i.defaultDate&&void 0===a.attr("placeholder")&&I(i.defaultDate),i.inline&&$(),p};return e.fn.datetimepicker=function(t){t=t||{};var i,s=Array.prototype.slice.call(arguments,1),r=!0,a=["destroy","hide","show","toggle"];if("object"==typeof t)return this.each((function(){var i,s=e(this);s.data("DateTimePicker")||(i=e.extend(!0,{},e.fn.datetimepicker.defaults,t),s.data("DateTimePicker",n(s,i)))}));if("string"==typeof t)return this.each((function(){var n=e(this).data("DateTimePicker");if(!n)throw new Error('bootstrap-datetimepicker("'+t+'") method was called on an element that is not using DateTimePicker');i=n[t].apply(n,s),r=i===n})),r||e.inArray(t,a)>-1?this:i;throw new TypeError("Invalid arguments for DateTimePicker: "+t)},e.fn.datetimepicker.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:t.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")?this.date(t.clone().subtract(7,"d")):this.date(t.clone().add(this.stepping(),"m"))}},down:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")?this.date(t.clone().add(7,"d")):this.date(t.clone().subtract(this.stepping(),"m"))}else this.show()},"control up":function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")?this.date(t.clone().subtract(1,"y")):this.date(t.clone().add(1,"h"))}},"control down":function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")?this.date(t.clone().add(1,"y")):this.date(t.clone().subtract(1,"h"))}},left:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")&&this.date(t.clone().subtract(1,"d"))}},right:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")&&this.date(t.clone().add(1,"d"))}},pageUp:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")&&this.date(t.clone().subtract(1,"M"))}},pageDown:function(e){if(e){var t=this.date()||this.getMoment();e.find(".datepicker").is(":visible")&&this.date(t.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(e){e&&e.find(".timepicker").is(":visible")&&e.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},delete:function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},e.fn.datetimepicker}))}).call(window,!1,!1)},68855:function(e){e.exports=function(){"use strict";function e(t){if(!(this instanceof e))return new e(t);var n=this;["searchTag","contentTag"].forEach((function(e){var i=e.replace("Tag",""),s="querySelector"+("contentTag"==e?"All":"");if(n[i+"_tag"]=document[s](t[e]),n[i+"_param"]=t[e],!n[i+"_tag"])throw new Error("Error! Could not find "+e+" element")}));var i,s={searchSelector:"*AND",hideBy:"display:none",diacriticsMap:{}};if(n.options={},["columns","addImportant","searchSelector","hideBy","manualContentHandling","callSearchManually","diacriticsMap","didSearch","invert"].forEach((function(e){n.options[e]=t[e]||s[e]})),this.options.searchSelector.length>1){var r=n.options.searchSelector.trim();n.options.searchSelector=r.substr(0,1),n.options.searchSelectorMode=r.substr(1).toUpperCase()}n.search=function(){i!=(i=n.search_tag.value)&&(n._applyCSS(),n.options.didSearch&&n.options.didSearch(n.search_tag.value))},n._onSearch=function(e){if("keydown"==e.type)return setTimeout(n.search,0);n.search()},n.destroy=function(){n.options.callSearchManually||n._processEventListeners("remove"),n._destroy()},n.options.callSearchManually||n._processEventListeners("add"),n._addStyleTag(),n._setJets(),n._applyCSS()}return e.prototype={constructor:e,_processEventListeners:function(e){["input","keydown","change"].forEach(function(t){this.search_tag[e+"EventListener"](t,this._onSearch)}.bind(this))},_applyCSS:function(){for(var e=this.options,t=this.replaceDiacritics(this.search_tag.value.trim().toLowerCase().replace(/\s\s+/g," ")).replace(/\\/g,"\\\\"),n=e.searchSelectorMode?t.split(" ").filter((function(e,t,n){return n.indexOf(e)==t})):[t],i="AND"==e.searchSelectorMode,s=[],r=0,a=n.length;r<a;r++)s.push((i?this.content_param+">":"")+(e.invert?"":":not(")+"[data-jets"+e.searchSelector+'="'+n[r]+'"]'+(e.invert?"":")"));var o=e.hideBy.split(";").filter(Boolean).map((function(t){return t+(e.addImportant?"!important":"")})),l=(i?"":this.content_param+">")+s.join(i?",":"")+"{"+o.join(";")+"}";this.styleTag.innerHTML=t.length?l:""},_addStyleTag:function(){this.styleTag=document.createElement("style"),document.head.appendChild(this.styleTag)},_getText:function(e){return e&&(e.textContent||e.innerText)||""},_getContentTags:function(e){return Array.prototype.slice.call(this.content_tag).reduce((function(t,n){return t.concat(Array.prototype.slice.call(n.querySelectorAll(e||":scope > *")))}),[])},_setJets:function(e,t){for(var n,i,s=this,r=s._getContentTags(t?"":e),a=0;i=r[a];a++)i.hasAttribute("data-jets")&&!t||(n=this.options.manualContentHandling?this.options.manualContentHandling(i):s.options.columns&&s.options.columns.length?s.options.columns.map((function(e){return s._getText(i.children[e])})).join(" "):s._getText(i),i.setAttribute("data-jets",s.replaceDiacritics(n.trim().replace(/\s+/g," ").toLowerCase())))},replaceDiacritics:function(e){var t=this.options.diacriticsMap;for(var n in t)if(t.hasOwnProperty(n))for(var i=0,s=t[n].length;i<s;i++)e=e.replace(new RegExp(t[n][i],"g"),n);return e},update:function(e){this._setJets(":scope > :not([data-jets])",e)},_destroy:function(){this.styleTag.parentNode&&document.head.removeChild(this.styleTag);for(var e,t=this._getContentTags(),n=0;e=t[n];n++)e.removeAttribute("data-jets")}},function(e,t){try{e.querySelector(":scope body")}catch(n){["querySelector","querySelectorAll"].forEach((function(n){var i=t[n];t[n]=function(t){if(/(^|,)\s*:scope/.test(t)){var s=this.id;this.id="ID_"+Date.now(),t=t.replace(/((^|,)\s*):scope/g,"$1#"+this.id);var r=e[n](t);return this.id=s,r}return i.call(this,t)}}))}}(window.document,Element.prototype),e}()},19976:(e,t,n)=>{var i,s,r;s=[n(73609)],void 0===(r="function"==typeof(i=function(e){"use strict";var t=/\r?\n/g,n=/^(?:submit|button|image|reset|file)$/i,i=/^(?:input|select|textarea|keygen)/i,s=/^(?:checkbox|radio)$/i;e.fn.serializeJSON=function(t){var n=e.serializeJSON,i=n.setupOpts(t),s=e.extend({},i.defaultTypes,i.customTypes),r=n.serializeArray(this,i),a={};return e.each(r,(function(t,r){var o=r.name,l=e(r.el).attr("data-value-type");if(!l&&!i.disableColonTypes){var u=n.splitType(r.name);o=u[0],l=u[1]}if("skip"!==l){l||(l=i.defaultType);var d=n.applyTypeFunc(r.name,r.value,l,r.el,s);if(d||!n.shouldSkipFalsy(r.name,o,l,r.el,i)){var c=n.splitInputNameIntoKeysArray(o);n.deepSet(a,c,d,i)}}})),a},e.serializeJSON={defaultOptions:{},defaultBaseOptions:{checkboxUncheckedValue:void 0,useIntKeysAsArrayIndex:!1,skipFalsyValuesForTypes:[],skipFalsyValuesForFields:[],disableColonTypes:!1,customTypes:{},defaultTypes:{string:function(e){return String(e)},number:function(e){return Number(e)},boolean:function(e){return-1===["false","null","undefined","","0"].indexOf(e)},null:function(e){return-1===["false","null","undefined","","0"].indexOf(e)?e:null},array:function(e){return JSON.parse(e)},object:function(e){return JSON.parse(e)},skip:null},defaultType:"string"},setupOpts:function(t){null==t&&(t={});var n=e.serializeJSON,i=["checkboxUncheckedValue","useIntKeysAsArrayIndex","skipFalsyValuesForTypes","skipFalsyValuesForFields","disableColonTypes","customTypes","defaultTypes","defaultType"];for(var s in t)if(-1===i.indexOf(s))throw new Error("serializeJSON ERROR: invalid option '"+s+"'. Please use one of "+i.join(", "));return e.extend({},n.defaultBaseOptions,n.defaultOptions,t)},serializeArray:function(r,a){null==a&&(a={});var o=e.serializeJSON;return r.map((function(){var t=e.prop(this,"elements");return t?e.makeArray(t):this})).filter((function(){var t=e(this),r=this.type;return this.name&&!t.is(":disabled")&&i.test(this.nodeName)&&!n.test(r)&&(this.checked||!s.test(r)||null!=o.getCheckboxUncheckedValue(t,a))})).map((function(n,i){var r=e(this),l=r.val(),d=this.type;return null==l?null:(s.test(d)&&!this.checked&&(l=o.getCheckboxUncheckedValue(r,a)),u(l)?e.map(l,(function(e){return{name:i.name,value:e.replace(t,"\r\n"),el:i}})):{name:i.name,value:l.replace(t,"\r\n"),el:i})})).get()},getCheckboxUncheckedValue:function(e,t){var n=e.attr("data-unchecked-value");return null==n&&(n=t.checkboxUncheckedValue),n},applyTypeFunc:function(e,t,n,i,s){var a=s[n];if(!a)throw new Error("serializeJSON ERROR: Invalid type "+n+" found in input name '"+e+"', please use one of "+r(s).join(", "));return a(t,i)},splitType:function(e){var t=e.split(":");if(t.length>1){var n=t.pop();return[t.join(":"),n]}return[e,""]},shouldSkipFalsy:function(t,n,i,s,r){var a=e(s).attr("data-skip-falsy");if(null!=a)return"false"!==a;var o=r.skipFalsyValuesForFields;if(o&&(-1!==o.indexOf(n)||-1!==o.indexOf(t)))return!0;var l=r.skipFalsyValuesForTypes;return!(!l||-1===l.indexOf(i))},splitInputNameIntoKeysArray:function(t){var n=t.split("[");return""===(n=e.map(n,(function(e){return e.replace(/\]/g,"")})))[0]&&n.shift(),n},deepSet:function(t,n,i,s){null==s&&(s={});var r=e.serializeJSON;if(o(t))throw new Error("ArgumentError: param 'o' expected to be an object or array, found undefined");if(!n||0===n.length)throw new Error("ArgumentError: param 'keys' expected to be an array with least one element");var d=n[0];if(1!==n.length){var c=n[1],h=n.slice(1);if(""===d){var p=t.length-1,f=t[p];d=a(f)&&o(r.deepGet(f,h))?p:p+1}""===c||s.useIntKeysAsArrayIndex&&l(c)?!o(t[d])&&u(t[d])||(t[d]=[]):!o(t[d])&&a(t[d])||(t[d]={}),r.deepSet(t[d],h,i,s)}else""===d?t.push(i):t[d]=i},deepGet:function(t,n){var i=e.serializeJSON;if(o(t)||o(n)||0===n.length||!a(t)&&!u(t))return t;var s=n[0];if(""!==s){if(1===n.length)return t[s];var r=n.slice(1);return i.deepGet(t[s],r)}}};var r=function(e){if(Object.keys)return Object.keys(e);var t,n=[];for(t in e)n.push(t);return n},a=function(e){return e===Object(e)},o=function(e){return void 0===e},l=function(e){return/^[0-9]+$/.test(String(e))},u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}})?i.apply(t,s):i)||(e.exports=r)},43345:(e,t,n)=>{"use strict";n.r(t)},10054:(e,t,n)=>{"use strict";n.r(t)},42786:function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(30664))},14130:function(e,t,n){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n(30664))},96135:function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n(30664))},56440:function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},i={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,s,r,a){var o=n(t),l=i[e][n(t)];return 2===o&&(l=l[s?0:1]),l.replace(/%d/i,t)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(30664))},47702:function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n(30664))},16040:function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n(30664))},37100:function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n(30664))},30867:function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},i=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,n,r,a){var o=i(t),l=s[e][i(t)];return 2===o&&(l=l[n?0:1]),l.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(30664))},31083:function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(30664))},9808:function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(i=+e,s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),i%10==1&&i%100!=11?s[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?s[1]:s[2]);var i,s}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n(30664))},68338:function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(30664))},67438:function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n(30664))},8905:function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n(30664))},11560:function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n(30664))},1278:function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}(n(30664))},80622:function(e,t,n){!function(e){"use strict";function t(e,t,n){var i=e+" ";switch(n){case"ss":return i+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return i+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return i+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return i+(1===e?"dan":"dana");case"MM":return i+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return i+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},2468:function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(30664))},5822:function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),i=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],s=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,i){var s=e+" ";switch(n){case"s":return t||i?"pár sekund":"pár sekundami";case"ss":return t||i?s+(r(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":i?"minutu":"minutou";case"mm":return t||i?s+(r(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":i?"hodinu":"hodinou";case"hh":return t||i?s+(r(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||i?"den":"dnem";case"dd":return t||i?s+(r(e)?"dny":"dní"):s+"dny";case"M":return t||i?"měsíc":"měsícem";case"MM":return t||i?s+(r(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||i?"rok":"rokem";case"yy":return t||i?s+(r(e)?"roky":"let"):s+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},50877:function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(30664))},47373:function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n(30664))},24780:function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},60217:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[n][0]:s[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},60894:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[n][0]:s[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},59740:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[n][0]:s[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},5300:function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n(30664))},50837:function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,i=this._calendarEl[e],s=t&&t.hours();return((n=i)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(i=i.apply(t)),i.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n(30664))},85383:function(e,t,n){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},78348:function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},77925:function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(30664))},22243:function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},46436:function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},47207:function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(30664))},76319:function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},92915:function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n(30664))},55251:function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},71146:function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n(30664))},55655:function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},5603:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?s[n][2]?s[n][2]:s[n][1]:i?s[n][0]:s[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},77763:function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},76959:function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(30664))},11897:function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function i(e,i,s,r){var a="";switch(s){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":a=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":a=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":a=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":a=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":a=r?"vuoden":"vuotta"}return function(e,i){return e<10?i?n[e]:t[e]:e}(e,r)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},94694:function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},63049:function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n(30664))},52330:function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(30664))},94470:function(e,t,n){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(30664))},5044:function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(30664))},29295:function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(30664))},2101:function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(30664))},38794:function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},23168:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voranim",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return t?s[n][0]:s[n][1]}e.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokalli"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(n(30664))},95349:function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n(30664))},24206:function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(30664))},30094:function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(30664))},30316:function(e,t,n){!function(e){"use strict";function t(e,t,n){var i=e+" ";switch(n){case"ss":return i+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return i+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return i+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return i+(1===e?"dan":"dana");case"MM":return i+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return i+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},22138:function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,i){var s=e;switch(n){case"s":return i||t?"néhány másodperc":"néhány másodperce";case"ss":return s+(i||t)?" másodperc":" másodperce";case"m":return"egy"+(i||t?" perc":" perce");case"mm":return s+(i||t?" perc":" perce");case"h":return"egy"+(i||t?" óra":" órája");case"hh":return s+(i||t?" óra":" órája");case"d":return"egy"+(i||t?" nap":" napja");case"dd":return s+(i||t?" nap":" napja");case"M":return"egy"+(i||t?" hónap":" hónapja");case"MM":return s+(i||t?" hónap":" hónapja");case"y":return"egy"+(i||t?" év":" éve");case"yy":return s+(i||t?" év":" éve")}return""}function i(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return i.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return i.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},11423:function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n(30664))},29218:function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(30664))},90135:function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,i,s){var r=e+" ";switch(i){case"s":return n||s?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?r+(n||s?"sekúndur":"sekúndum"):r+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?r+(n||s?"mínútur":"mínútum"):n?r+"mínúta":r+"mínútu";case"hh":return t(e)?r+(n||s?"klukkustundir":"klukkustundum"):r+"klukkustund";case"d":return n?"dagur":s?"dag":"degi";case"dd":return t(e)?n?r+"dagar":r+(s?"daga":"dögum"):n?r+"dagur":r+(s?"dag":"degi");case"M":return n?"mánuður":s?"mánuð":"mánuði";case"MM":return t(e)?n?r+"mánuðir":r+(s?"mánuði":"mánuðum"):n?r+"mánuður":r+(s?"mánuð":"mánuði");case"y":return n||s?"ár":"ári";case"yy":return t(e)?r+(n||s?"ár":"árum"):r+(n||s?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},10150:function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},90626:function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},39183:function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()<e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n(30664))},24286:function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n(30664))},12105:function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n(30664))},47772:function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(30664))},18758:function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(30664))},79282:function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n(30664))},33730:function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n(30664))},1408:function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},i=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:i,monthsShort:i,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(e){return/ئێواره/.test(e)},meridiem:function(e,t,n){return e<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(30664))},33291:function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(30664))},36841:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?s[n][0]:s[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},55466:function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n(30664))},57010:function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,i){return t?s(n)[0]:i?s(n)[1]:s(n)[2]}function i(e){return e%10==0||e>10&&e<20}function s(e){return t[e].split("_")}function r(e,t,r,a){var o=e+" ";return 1===e?o+n(0,t,r[0],a):t?o+(i(e)?s(r)[1]:s(r)[0]):a?o+s(r)[1]:o+(i(e)?s(r)[1]:s(r)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,i){return t?"kelios sekundės":i?"kelių sekundžių":"kelias sekundes"},ss:r,m:n,mm:r,h:n,hh:r,d:n,dd:r,M:n,MM:r,y:n,yy:r},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n(30664))},37595:function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function i(e,i,s){return e+" "+n(t[s],e,i)}function s(e,i,s){return n(t[s],e,i)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:i,m:s,mm:i,h:s,hh:i,d:s,dd:i,M:s,MM:i,y:s,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},39861:function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var s=t.words[i];return 1===i.length?n?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},35493:function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},95966:function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(30664))},87341:function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n(30664))},5115:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n(30664))},10370:function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function i(e,t,n,i){var s="";if(t)switch(n){case"s":s="काही सेकंद";break;case"ss":s="%d सेकंद";break;case"m":s="एक मिनिट";break;case"mm":s="%d मिनिटे";break;case"h":s="एक तास";break;case"hh":s="%d तास";break;case"d":s="एक दिवस";break;case"dd":s="%d दिवस";break;case"M":s="एक महिना";break;case"MM":s="%d महिने";break;case"y":s="एक वर्ष";break;case"yy":s="%d वर्षे"}else switch(n){case"s":s="काही सेकंदां";break;case"ss":s="%d सेकंदां";break;case"m":s="एका मिनिटा";break;case"mm":s="%d मिनिटां";break;case"h":s="एका तासा";break;case"hh":s="%d तासां";break;case"d":s="एका दिवसा";break;case"dd":s="%d दिवसां";break;case"M":s="एका महिन्या";break;case"MM":s="%d महिन्यां";break;case"y":s="एका वर्षा";break;case"yy":s="%d वर्षां"}return s.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n(30664))},41237:function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(30664))},9847:function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(30664))},72126:function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},56165:function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(30664))},64924:function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},16744:function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(30664))},59814:function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(30664))},93901:function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,i){return e?/-MMM-/.test(i)?n[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(30664))},83877:function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},15858:function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n(30664))},64495:function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function i(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var s=e+" ";switch(n){case"ss":return s+(i(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return s+(i(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return s+(i(e)?"godziny":"godzin");case"MM":return s+(i(e)?"miesiące":"miesięcy");case"yy":return s+(i(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,i){return e?""===i?"("+n[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(i)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},57971:function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n(30664))},89520:function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(30664))},96459:function(e,t,n){!function(e){"use strict";function t(e,t,n){var i=" ";return(e%100>=20||e>=100&&e%100==0)&&(i=" de "),e+i+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n(30664))},21793:function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(i=+e,s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),i%10==1&&i%100!=11?s[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?s[1]:s[2]);var i,s}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n(30664))},40950:function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(30664))},10490:function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},90124:function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n(30664))},64249:function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function i(e){return e>1&&e<5}function s(e,t,n,s){var r=e+" ";switch(n){case"s":return t||s?"pár sekúnd":"pár sekundami";case"ss":return t||s?r+(i(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return t?"minúta":s?"minútu":"minútou";case"mm":return t||s?r+(i(e)?"minúty":"minút"):r+"minútami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?r+(i(e)?"hodiny":"hodín"):r+"hodinami";case"d":return t||s?"deň":"dňom";case"dd":return t||s?r+(i(e)?"dni":"dní"):r+"dňami";case"M":return t||s?"mesiac":"mesiacom";case"MM":return t||s?r+(i(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return t||s?"rok":"rokom";case"yy":return t||s?r+(i(e)?"roky":"rokov"):r+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},14985:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s=e+" ";switch(n){case"s":return t||i?"nekaj sekund":"nekaj sekundami";case"ss":return s+(1===e?t?"sekundo":"sekundi":2===e?t||i?"sekundi":"sekundah":e<5?t||i?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return s+(1===e?t?"minuta":"minuto":2===e?t||i?"minuti":"minutama":e<5?t||i?"minute":"minutami":t||i?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return s+(1===e?t?"ura":"uro":2===e?t||i?"uri":"urama":e<5?t||i?"ure":"urami":t||i?"ur":"urami");case"d":return t||i?"en dan":"enim dnem";case"dd":return s+(1===e?t||i?"dan":"dnem":2===e?t||i?"dni":"dnevoma":t||i?"dni":"dnevi");case"M":return t||i?"en mesec":"enim mesecem";case"MM":return s+(1===e?t||i?"mesec":"mesecem":2===e?t||i?"meseca":"mesecema":e<5?t||i?"mesece":"meseci":t||i?"mesecev":"meseci");case"y":return t||i?"eno leto":"enim letom";case"yy":return s+(1===e?t||i?"leto":"letom":2===e?t||i?"leti":"letoma":e<5?t||i?"leta":"leti":t||i?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},51104:function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},79915:function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var s=t.words[i];return 1===i.length?n?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},49131:function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,i){var s=t.words[i];return 1===i.length?n?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(30664))},85893:function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(30664))},98760:function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"e":1===t||2===t?"a":"e")},week:{dow:1,doy:4}})}(n(30664))},91172:function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n(30664))},27333:function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(30664))},23110:function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(30664))},52095:function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},27321:function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(30664))},9041:function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n(30664))},75768:function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(30664))},89444:function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,i,s){var r=function(e){var n=Math.floor(e%1e3/100),i=Math.floor(e%100/10),s=e%10,r="";return n>0&&(r+=t[n]+"vatlh"),i>0&&(r+=(""!==r?" ":"")+t[i]+"maH"),s>0&&(r+=(""!==r?" ":"")+t[s]),""===r?"pagh":r}(e);switch(i){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},72397:function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var i=e%10;return e+(t[i]||t[e%100-i]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(30664))},28254:function(e,t,n){!function(e){"use strict";function t(e,t,n,i){var s={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return i||t?s[n][0]:s[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(30664))},30699:function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n(30664))},51106:function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n(30664))},9288:function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var i=100*e+t;return i<600?"يېرىم كېچە":i<900?"سەھەر":i<1130?"چۈشتىن بۇرۇن":i<1230?"چۈش":i<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n(30664))},67691:function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(i=+e,s={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),i%10==1&&i%100!=11?s[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?s[1]:s[2]);var i,s}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n(30664))},13795:function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(30664))},60588:function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n(30664))},6791:function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n(30664))},65666:function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(30664))},14378:function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(30664))},75805:function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n(30664))},83839:function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n(30664))},55726:function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(30664))},74152:function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var i=100*e+t;return i<600?"凌晨":i<900?"早上":i<1130?"上午":i<1230?"中午":i<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(30664))},46700:(e,t,n)=>{var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-SG":85383,"./en-SG.js":85383,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-nz":76319,"./en-nz.js":76319,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-tw":74152,"./zh-tw.js":74152};function s(e){var t=r(e);return n(t)}function r(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}s.keys=function(){return Object.keys(i)},s.resolve=r,e.exports=s,s.id=46700},84772:(e,t,n)=>{"use strict";function i(e){return getComputedStyle(e)}function s(e,t){for(var n in t){var i=t[n];"number"==typeof i&&(i+="px"),e.style[n]=i}return e}function r(e){var t=document.createElement("div");return t.className=e,t}n.r(t),n.d(t,{default:()=>O});var a="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector);function o(e,t){if(!a)throw new Error("No element matching method supported");return a.call(e,t)}function l(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function u(e,t){return Array.prototype.filter.call(e.children,(function(e){return o(e,t)}))}var d=function(e){return"ps__thumb-"+e},c=function(e){return"ps__rail-"+e},h="ps__child--consume",p="ps--focus",f="ps--clicking",m=function(e){return"ps--active-"+e},_=function(e){return"ps--scrolling-"+e},g={x:null,y:null};function v(e,t){var n=e.element.classList,i=_(t);n.contains(i)?clearTimeout(g[t]):n.add(i)}function y(e,t){g[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(_(t))}),e.settings.scrollingThreshold)}var b=function(e){this.element=e,this.handlers={}},w={isEmpty:{configurable:!0}};b.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},b.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(i){return!(!t||i===t)||(n.element.removeEventListener(e,i,!1),!1)}))},b.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},w.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(b.prototype,w);var k=function(){this.eventElements=[]};function M(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function L(e,t,n,i,s){var r;if(void 0===i&&(i=!0),void 0===s&&(s=!1),"top"===t)r=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");r=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,i,s){var r=n[0],a=n[1],o=n[2],l=n[3],u=n[4],d=n[5];void 0===i&&(i=!0),void 0===s&&(s=!1);var c=e.element;e.reach[l]=null,c[o]<1&&(e.reach[l]="start"),c[o]>e[r]-e[a]-1&&(e.reach[l]="end"),t&&(c.dispatchEvent(M("ps-scroll-"+l)),t<0?c.dispatchEvent(M("ps-scroll-"+u)):t>0&&c.dispatchEvent(M("ps-scroll-"+d)),i&&function(e,t){v(e,t),y(e,t)}(e,l)),e.reach[l]&&(t||s)&&c.dispatchEvent(M("ps-"+l+"-reach-"+e.reach[l]))}(e,n,r,i,s)}function D(e){return parseInt(e,10)||0}k.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new b(e),this.eventElements.push(t)),t},k.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},k.prototype.unbind=function(e,t,n){var i=this.eventElement(e);i.unbind(t,n),i.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(i),1)},k.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},k.prototype.once=function(e,t,n){var i=this.eventElement(e),s=function(e){i.unbind(t,s),n(e)};i.bind(t,s)};var T={isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)};function x(e){var t=e.element,n=Math.floor(t.scrollTop),i=t.getBoundingClientRect();e.containerWidth=Math.ceil(i.width),e.containerHeight=Math.ceil(i.height),e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(u(t,c("x")).forEach((function(e){return l(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(u(t,c("y")).forEach((function(e){return l(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset<e.contentWidth?(e.scrollbarXActive=!0,e.railXWidth=e.containerWidth-e.railXMarginWidth,e.railXRatio=e.containerWidth/e.railXWidth,e.scrollbarXWidth=S(e,D(e.railXWidth*e.containerWidth/e.contentWidth)),e.scrollbarXLeft=D((e.negativeScrollAdjustment+t.scrollLeft)*(e.railXWidth-e.scrollbarXWidth)/(e.contentWidth-e.containerWidth))):e.scrollbarXActive=!1,!e.settings.suppressScrollY&&e.containerHeight+e.settings.scrollYMarginOffset<e.contentHeight?(e.scrollbarYActive=!0,e.railYHeight=e.containerHeight-e.railYMarginHeight,e.railYRatio=e.containerHeight/e.railYHeight,e.scrollbarYHeight=S(e,D(e.railYHeight*e.containerHeight/e.contentHeight)),e.scrollbarYTop=D(n*(e.railYHeight-e.scrollbarYHeight)/(e.contentHeight-e.containerHeight))):e.scrollbarYActive=!1,e.scrollbarXLeft>=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),function(e,t){var n={width:t.railXWidth},i=Math.floor(e.scrollTop);t.isRtl?n.left=t.negativeScrollAdjustment+e.scrollLeft+t.containerWidth-t.contentWidth:n.left=e.scrollLeft,t.isScrollbarXUsingBottom?n.bottom=t.scrollbarXBottom-i:n.top=t.scrollbarXTop+i,s(t.scrollbarXRail,n);var r={top:i,height:t.railYHeight};t.isScrollbarYUsingRight?t.isRtl?r.right=t.contentWidth-(t.negativeScrollAdjustment+e.scrollLeft)-t.scrollbarYRight-t.scrollbarYOuterWidth-9:r.right=t.scrollbarYRight-e.scrollLeft:t.isRtl?r.left=t.negativeScrollAdjustment+e.scrollLeft+2*t.containerWidth-t.contentWidth-t.scrollbarYLeft-t.scrollbarYOuterWidth:r.left=t.scrollbarYLeft+e.scrollLeft,s(t.scrollbarYRail,r),s(t.scrollbarX,{left:t.scrollbarXLeft,width:t.scrollbarXWidth-t.railBorderXWidth}),s(t.scrollbarY,{top:t.scrollbarYTop,height:t.scrollbarYHeight-t.railBorderYWidth})}(t,e),e.scrollbarXActive?t.classList.add(m("x")):(t.classList.remove(m("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=!0===e.isRtl?e.contentWidth:0),e.scrollbarYActive?t.classList.add(m("y")):(t.classList.remove(m("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)}function S(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function Y(e,t){var n=t[0],i=t[1],s=t[2],r=t[3],a=t[4],o=t[5],l=t[6],u=t[7],d=t[8],c=e.element,h=null,p=null,m=null;function _(t){t.touches&&t.touches[0]&&(t[s]=t.touches[0].pageY),c[l]=h+m*(t[s]-p),v(e,u),x(e),t.stopPropagation(),t.preventDefault()}function g(){y(e,u),e[d].classList.remove(f),e.event.unbind(e.ownerDocument,"mousemove",_)}function b(t,a){h=c[l],a&&t.touches&&(t[s]=t.touches[0].pageY),p=t[s],m=(e[i]-e[n])/(e[r]-e[o]),a?e.event.bind(e.ownerDocument,"touchmove",_):(e.event.bind(e.ownerDocument,"mousemove",_),e.event.once(e.ownerDocument,"mouseup",g),t.preventDefault()),e[d].classList.add(f),t.stopPropagation()}e.event.bind(e[a],"mousedown",(function(e){b(e)})),e.event.bind(e[a],"touchstart",(function(e){b(e,!0)}))}var C={"click-rail":function(e){e.element,e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,x(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,x(e),t.stopPropagation()}))},"drag-thumb":function(e){Y(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),Y(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])},keyboard:function(e){var t=e.element;e.event.bind(e.ownerDocument,"keydown",(function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(o(t,":hover")||o(e.scrollbarX,":focus")||o(e.scrollbarY,":focus"))){var i,s=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(s){if("IFRAME"===s.tagName)s=s.contentDocument.activeElement;else for(;s.shadowRoot;)s=s.shadowRoot.activeElement;if(o(i=s,"input,[contenteditable]")||o(i,"select,[contenteditable]")||o(i,"textarea,[contenteditable]")||o(i,"button,[contenteditable]"))return}var r=0,a=0;switch(n.which){case 37:r=n.metaKey?-e.contentWidth:n.altKey?-e.containerWidth:-30;break;case 38:a=n.metaKey?e.contentHeight:n.altKey?e.containerHeight:30;break;case 39:r=n.metaKey?e.contentWidth:n.altKey?e.containerWidth:30;break;case 40:a=n.metaKey?-e.contentHeight:n.altKey?-e.containerHeight:-30;break;case 32:a=n.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:a=e.containerHeight;break;case 34:a=-e.containerHeight;break;case 36:a=e.contentHeight;break;case 35:a=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==r||e.settings.suppressScrollY&&0!==a||(t.scrollTop-=a,t.scrollLeft+=r,x(e),function(n,i){var s=Math.floor(t.scrollTop);if(0===n){if(!e.scrollbarYActive)return!1;if(0===s&&i>0||s>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var r=t.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===r&&n<0||r>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(r,a)&&n.preventDefault())}}))},wheel:function(e){var t=e.element;function n(n){var s=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(n),r=s[0],a=s[1];if(!function(e,n,s){if(!T.isWebKit&&t.querySelector("select:focus"))return!0;if(!t.contains(e))return!1;for(var r=e;r&&r!==t;){if(r.classList.contains(h))return!0;var a=i(r);if(s&&a.overflowY.match(/(scroll|auto)/)){var o=r.scrollHeight-r.clientHeight;if(o>0&&(r.scrollTop>0&&s<0||r.scrollTop<o&&s>0))return!0}if(n&&a.overflowX.match(/(scroll|auto)/)){var l=r.scrollWidth-r.clientWidth;if(l>0&&(r.scrollLeft>0&&n<0||r.scrollLeft<l&&n>0))return!0}r=r.parentNode}return!1}(n.target,r,a)){var o=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?t.scrollTop-=a*e.settings.wheelSpeed:t.scrollTop+=r*e.settings.wheelSpeed,o=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(r?t.scrollLeft+=r*e.settings.wheelSpeed:t.scrollLeft-=a*e.settings.wheelSpeed,o=!0):(t.scrollTop-=a*e.settings.wheelSpeed,t.scrollLeft+=r*e.settings.wheelSpeed),x(e),(o=o||function(n,i){var s=Math.floor(t.scrollTop),r=0===t.scrollTop,a=s+t.offsetHeight===t.scrollHeight,o=0===t.scrollLeft,l=t.scrollLeft+t.offsetWidth===t.scrollWidth;return!(Math.abs(i)>Math.abs(n)?r||a:o||l)||!e.settings.wheelPropagation}(r,a))&&!n.ctrlKey&&(n.stopPropagation(),n.preventDefault())}}void 0!==window.onwheel?e.event.bind(t,"wheel",n):void 0!==window.onmousewheel&&e.event.bind(t,"mousewheel",n)},touch:function(e){if(T.supportsTouch||T.supportsIePointer){var t=e.element,n={},s=0,r={},a=null;T.supportsTouch?(e.event.bind(t,"touchstart",d),e.event.bind(t,"touchmove",c),e.event.bind(t,"touchend",p)):T.supportsIePointer&&(window.PointerEvent?(e.event.bind(t,"pointerdown",d),e.event.bind(t,"pointermove",c),e.event.bind(t,"pointerup",p)):window.MSPointerEvent&&(e.event.bind(t,"MSPointerDown",d),e.event.bind(t,"MSPointerMove",c),e.event.bind(t,"MSPointerUp",p)))}function o(n,i){t.scrollTop-=i,t.scrollLeft-=n,x(e)}function l(e){return e.targetTouches?e.targetTouches[0]:e}function u(e){return!(e.pointerType&&"pen"===e.pointerType&&0===e.buttons||(!e.targetTouches||1!==e.targetTouches.length)&&(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function d(e){if(u(e)){var t=l(e);n.pageX=t.pageX,n.pageY=t.pageY,s=(new Date).getTime(),null!==a&&clearInterval(a)}}function c(a){if(u(a)){var d=l(a),c={pageX:d.pageX,pageY:d.pageY},p=c.pageX-n.pageX,f=c.pageY-n.pageY;if(function(e,n,s){if(!t.contains(e))return!1;for(var r=e;r&&r!==t;){if(r.classList.contains(h))return!0;var a=i(r);if(s&&a.overflowY.match(/(scroll|auto)/)){var o=r.scrollHeight-r.clientHeight;if(o>0&&(r.scrollTop>0&&s<0||r.scrollTop<o&&s>0))return!0}if(n&&a.overflowX.match(/(scroll|auto)/)){var l=r.scrollWidth-r.clientWidth;if(l>0&&(r.scrollLeft>0&&n<0||r.scrollLeft<l&&n>0))return!0}r=r.parentNode}return!1}(a.target,p,f))return;o(p,f),n=c;var m=(new Date).getTime(),_=m-s;_>0&&(r.x=p/_,r.y=f/_,s=m),function(n,i){var s=Math.floor(t.scrollTop),r=t.scrollLeft,a=Math.abs(n),o=Math.abs(i);if(o>a){if(i<0&&s===e.contentHeight-e.containerHeight||i>0&&0===s)return 0===window.scrollY&&i>0&&T.isChrome}else if(a>o&&(n<0&&r===e.contentWidth-e.containerWidth||n>0&&0===r))return!0;return!0}(p,f)&&a.preventDefault()}}function p(){e.settings.swipeEasing&&(clearInterval(a),a=setInterval((function(){e.isInitialized?clearInterval(a):r.x||r.y?Math.abs(r.x)<.01&&Math.abs(r.y)<.01?clearInterval(a):(o(30*r.x,30*r.y),r.x*=.8,r.y*=.8):clearInterval(a)}),10))}}},E=function(e,t){var n=this;if(void 0===t&&(t={}),"string"==typeof e&&(e=document.querySelector(e)),!e||!e.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var a in this.element=e,e.classList.add("ps"),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1},t)this.settings[a]=t[a];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var o,l,u=function(){return e.classList.add(p)},h=function(){return e.classList.remove(p)};this.isRtl="rtl"===i(e).direction,!0===this.isRtl&&e.classList.add("ps__rtl"),this.isNegativeScroll=(l=e.scrollLeft,e.scrollLeft=-1,o=e.scrollLeft<0,e.scrollLeft=l,o),this.negativeScrollAdjustment=this.isNegativeScroll?e.scrollWidth-e.clientWidth:0,this.event=new k,this.ownerDocument=e.ownerDocument||document,this.scrollbarXRail=r(c("x")),e.appendChild(this.scrollbarXRail),this.scrollbarX=r(d("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",u),this.event.bind(this.scrollbarX,"blur",h),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var f=i(this.scrollbarXRail);this.scrollbarXBottom=parseInt(f.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=D(f.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=D(f.borderLeftWidth)+D(f.borderRightWidth),s(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=D(f.marginLeft)+D(f.marginRight),s(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=r(c("y")),e.appendChild(this.scrollbarYRail),this.scrollbarY=r(d("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",u),this.event.bind(this.scrollbarY,"blur",h),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var m=i(this.scrollbarYRail);this.scrollbarYRight=parseInt(m.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=D(m.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(e){var t=i(e);return D(t.width)+D(t.paddingLeft)+D(t.paddingRight)+D(t.borderLeftWidth)+D(t.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=D(m.borderTopWidth)+D(m.borderBottomWidth),s(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=D(m.marginTop)+D(m.marginBottom),s(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:e.scrollLeft<=0?"start":e.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:e.scrollTop<=0?"start":e.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return C[e](n)})),this.lastScrollTop=Math.floor(e.scrollTop),this.lastScrollLeft=e.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return n.onScroll(e)})),x(this)};E.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,s(this.scrollbarXRail,{display:"block"}),s(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=D(i(this.scrollbarXRail).marginLeft)+D(i(this.scrollbarXRail).marginRight),this.railYMarginHeight=D(i(this.scrollbarYRail).marginTop)+D(i(this.scrollbarYRail).marginBottom),s(this.scrollbarXRail,{display:"none"}),s(this.scrollbarYRail,{display:"none"}),x(this),L(this,"top",0,!1,!0),L(this,"left",0,!1,!0),s(this.scrollbarXRail,{display:""}),s(this.scrollbarYRail,{display:""}))},E.prototype.onScroll=function(e){this.isAlive&&(x(this),L(this,"top",this.element.scrollTop-this.lastScrollTop),L(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},E.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),l(this.scrollbarX),l(this.scrollbarY),l(this.scrollbarXRail),l(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},E.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")};const O=E},61629:()=>{!function(e){var t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(i,s,function(t){return e[t]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){(function(t){e.exports=t.jQuery=n(8)}).call(this,n(1))},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(i=window)}e.exports=i},function(e,t,n){"use strict";(function(e){var i=n(5);t.a=function(){e(".custom-file-input").on("change",(function(){var t,n,s,r,a=e(this),o=a[0].files;a.next("label").text((t=o,n=a.data("multipleFilesText"),s=a.attr("data-locale"),1===(r=t.length)?t[0].name:(new i.a).transChoice(n,r,{count:r},s)))}))}}).call(this,n(0))},function(e,t,n){"use strict";function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}t.a=function(e){return function(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(document.querySelectorAll(e)).map((function(e){return function(e){function t(){var e=u.value.replace(/[.,]/g,".");c=parseInt(e,10)}var n=Number(e.dataset.min),i=Number(e.dataset.max),s=e.dataset.labelMin,r=e.dataset.labelMax,a=e.dataset.labelNan,o=e.querySelector(".ps-number-increment"),l=e.querySelector(".ps-number-decrement"),u=e.querySelector("input"),d=e.querySelector(".invalid-feedback"),c=u.value;function h(){var t=i<c,o=c<n,l=Number.isNaN(c);return t||o||l?(d.classList.contains("show")||u.classList.contains("is-invalid")||(d.classList.add("show"),e.classList.add("has-danger"),u.classList.add("is-invalid")),d.innerHTML=l?a:"".concat(t?r:s," ").concat(t?i:n,"."),!1):(d.classList.remove("show"),u.classList.remove("is-invalid"),e.classList.remove("has-danger"),!0)}function p(e){Number.isNaN(c)?c=0:e?c+=1:--c,u.value=c,h()}t(),o&&l&&(o.addEventListener("click",(function(){p(!0)})),l.addEventListener("click",(function(){p(!1)}))),u.addEventListener("change",(function(){t(),h()})),u.addEventListener("keyup",(function(){t(),h()})),u.addEventListener("cut",(function(){t(),h()})),u.addEventListener("paste",(function(){t(),h()}))}(e)}))}},function(e,t,n){"use strict";n.r(t),function(e){for(var n="undefined"!=typeof window&&"undefined"!=typeof document,i=["Edge","Trident","Firefox"],s=0,r=0;r<i.length;r+=1)if(n&&0<=navigator.userAgent.indexOf(i[r])){s=1;break}var a=n&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then((function(){t=!1,e()})))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout((function(){t=!1,e()}),s))}};function o(e){return e&&"[object Function]"==={}.toString.call(e)}function l(e,t){if(1!==e.nodeType)return[];var n=getComputedStyle(e,null);return t?n[t]:n}function u(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function d(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=l(e),n=t.overflow,i=t.overflowX,s=t.overflowY;return/(auto|scroll|overlay)/.test(n+s+i)?e:d(u(e))}var c={},h=function(e){var t=(t=0<arguments.length&&void 0!==e?e:"all").toString();if(c.hasOwnProperty(t))return c[t];switch(t){case"11":c[t]=-1!==navigator.userAgent.indexOf("Trident");break;case"10":c[t]=-1!==navigator.appVersion.indexOf("MSIE 10");break;case"all":c[t]=-1!==navigator.userAgent.indexOf("Trident")||-1!==navigator.userAgent.indexOf("MSIE")}return c.all=c.all||Object.keys(c).some((function(e){return c[e]})),c[t]};function p(e){if(!e)return document.documentElement;for(var t=h(10)?document.body:null,n=e.offsetParent;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TD","TABLE"].indexOf(n.nodeName)&&"static"===l(n,"position")?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function f(e){return null!==e.parentNode?f(e.parentNode):e}function m(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,s=n?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(s,0);var a,o,l=r.commonAncestorContainer;if(e!==l&&t!==l||i.contains(s))return"BODY"===(o=(a=l).nodeName)||"HTML"!==o&&p(a.firstElementChild)!==a?p(l):l;var u=f(e);return u.host?m(u.host,t):m(e,f(t).host)}function _(e,t){var n="top"===(1<arguments.length&&void 0!==t?t:"top")?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"!==i&&"HTML"!==i)return e[n];var s=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||s)[n]}function g(e,t){var n="x"===t?"Left":"Top",i="Left"==n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"],10)+parseFloat(e["border"+i+"Width"],10)}function v(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],h(10)?n["offset"+e]+i["margin"+("Height"===e?"Top":"Left")]+i["margin"+("Height"===e?"Bottom":"Right")]:0)}function y(){var e=document.body,t=document.documentElement,n=h(10)&&getComputedStyle(t);return{height:v("Height",e,t,n),width:v("Width",e,t,n)}}var b=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")};function w(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function k(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var M=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e};function L(e){return M({},e,{right:e.left+e.width,bottom:e.top+e.height})}function D(e){var t,n,i={};try{h(10)?(i=e.getBoundingClientRect(),t=_(e,"top"),n=_(e,"left"),i.top+=t,i.left+=n,i.bottom+=t,i.right+=n):i=e.getBoundingClientRect()}catch(e){}var s,r={left:i.left,top:i.top,width:i.right-i.left,height:i.bottom-i.top},a="HTML"===e.nodeName?y():{},o=a.width||e.clientWidth||r.right-r.left,u=a.height||e.clientHeight||r.bottom-r.top,d=e.offsetWidth-o,c=e.offsetHeight-u;return(d||c)&&(d-=g(s=l(e),"x"),c-=g(s,"y"),r.width-=d,r.height-=c),L(r)}function T(e,t,n){var i=2<arguments.length&&void 0!==n&&n,s=h(10),r="HTML"===t.nodeName,a=D(e),o=D(t),u=d(e),c=l(t),p=parseFloat(c.borderTopWidth,10),f=parseFloat(c.borderLeftWidth,10);i&&"HTML"===t.nodeName&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var m,g,v=L({top:a.top-o.top-p,left:a.left-o.left-f,width:a.width,height:a.height});return v.marginTop=0,v.marginLeft=0,!s&&r&&(m=parseFloat(c.marginTop,10),g=parseFloat(c.marginLeft,10),v.top-=p-m,v.bottom-=p-m,v.left-=f-g,v.right-=f-g,v.marginTop=m,v.marginLeft=g),(s&&!i?t.contains(u):t===u&&"BODY"!==u.nodeName)&&(v=function(e,t,n){var i=2<arguments.length&&void 0!==n&&n,s=_(t,"top"),r=_(t,"left"),a=i?-1:1;return e.top+=s*a,e.bottom+=s*a,e.left+=r*a,e.right+=r*a,e}(v,t)),v}function x(e){if(!e||!e.parentElement||h())return document.documentElement;for(var t=e.parentElement;t&&"none"===l(t,"transform");)t=t.parentElement;return t||document.documentElement}function S(e,t,n,i,s){var r,a,o,c,h,p=4<arguments.length&&void 0!==s&&s,f={top:0,left:0},g=p?x(e):m(e,t);return"viewport"===i?f=function(e,t){var n=1<arguments.length&&void 0!==t&&t,i=e.ownerDocument.documentElement,s=T(e,i),r=Math.max(i.clientWidth,window.innerWidth||0),a=Math.max(i.clientHeight,window.innerHeight||0),o=n?0:_(i),l=n?0:_(i,"left");return L({top:o-s.top+s.marginTop,left:l-s.left+s.marginLeft,width:r,height:a})}(g,p):(r=void 0,"scrollParent"===i?"BODY"===(r=d(u(t))).nodeName&&(r=e.ownerDocument.documentElement):r="window"===i?e.ownerDocument.documentElement:i,a=T(r,g,p),"HTML"!==r.nodeName||function e(t){var n=t.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===l(t,"position")||e(u(t)))}(g)?f=a:(c=(o=y()).height,h=o.width,f.top+=a.top-a.marginTop,f.bottom=c+a.top,f.left+=a.left-a.marginLeft,f.right=h+a.left)),f.left+=n,f.top+=n,f.right-=n,f.bottom-=n,f}function Y(e,t,n,i,s,r){var a=5<arguments.length&&void 0!==r?r:0;if(-1===e.indexOf("auto"))return e;var o=S(n,i,a,s),l={top:{width:o.width,height:t.top-o.top},right:{width:o.right-t.right,height:o.height},bottom:{width:o.width,height:o.bottom-t.bottom},left:{width:t.left-o.left,height:o.height}},u=Object.keys(l).map((function(e){return M({key:e},l[e],{area:(t=l[e]).width*t.height});var t})).sort((function(e,t){return t.area-e.area})),d=u.filter((function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight})),c=0<d.length?d[0].key:u[0].key,h=e.split("-")[1];return c+(h?"-"+h:"")}function C(e,t,n,i){var s=3<arguments.length&&void 0!==i?i:null;return T(n,s?x(t):m(t,n),s)}function E(e){var t=getComputedStyle(e),n=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function O(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function A(e,t,n){n=n.split("-")[0];var i=E(e),s={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",o=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return s[a]=t[a]+t[l]/2-i[l]/2,s[o]=n===o?t[o]-i[u]:t[O(o)],s}function H(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function j(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex((function(e){return e[t]===n}));var i=H(e,(function(e){return e[t]===n}));return e.indexOf(i)}(e,"name",n))).forEach((function(e){e.function;var n=e.function||e.fn;e.enabled&&o(n)&&(t.offsets.popper=L(t.offsets.popper),t.offsets.reference=L(t.offsets.reference),t=n(t,e))})),t}function P(e,t){return e.some((function(e){var n=e.name;return e.enabled&&n===t}))}function I(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var s=t[i],r=s?""+s+n:e;if(void 0!==document.body.style[r])return r}return null}function F(e){var t=e.ownerDocument;return t?t.defaultView:window}function N(){var e,t;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(e=this.reference,t=this.state,F(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach((function(e){e.removeEventListener("scroll",t.updateBound)})),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t))}function W(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function z(e,t){Object.keys(t).forEach((function(n){var i="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&W(t[n])&&(i="px"),e.style[n]=t[n]+i}))}function R(e,t,n){var i=H(e,(function(e){return e.name===t}));return!!i&&e.some((function(e){return e.name===n&&e.enabled&&e.order<i.order}))}var $=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],q=$.slice(3);function B(e,t){var n=1<arguments.length&&void 0!==t&&t,i=q.indexOf(e),s=q.slice(i+1).concat(q.slice(0,i));return n?s.reverse():s}var U={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t,n,i,s,r,a,o,l=e.placement,u=l.split("-")[0],d=l.split("-")[1];return d&&(n=(t=e.offsets).reference,i=t.popper,a=(s=-1!==["bottom","top"].indexOf(u))?"width":"height",o={start:k({},r=s?"left":"top",n[r]),end:k({},r,n[r]+n[a]-i[a])},e.offsets.popper=M({},i,o[d])),e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,s=e.offsets,r=s.popper,a=s.reference,o=i.split("-")[0],l=W(+n)?[+n,0]:function(e,t,n,i){var s=[0,0],r=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map((function(e){return e.trim()})),o=a.indexOf(H(a,(function(e){return-1!==e.search(/,|\s/)})));a[o]&&a[o].indexOf(",");var l=/\s*,\s*|\s+/;return(-1!==o?[a.slice(0,o).concat([a[o].split(l)[0]]),[a[o].split(l)[1]].concat(a.slice(o+1))]:[a]).map((function(e,i){var s=(1===i?!r:r)?"height":"width",a=!1;return e.reduce((function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)}),[]).map((function(e){return function(e,t,n,i){var s=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+s[1],a=s[2];if(!r)return e;if(0!==a.indexOf("%"))return"vh"!==a&&"vw"!==a?r:("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var o=void 0;switch(a){case"%p":o=n;break;case"%":case"%r":default:o=i}return L(o)[t]/100*r}(e,s,t,n)}))})).forEach((function(e,t){e.forEach((function(n,i){W(n)&&(s[t]+=n*("-"===e[i-1]?-1:1))}))})),s}(n,r,a,o);return"left"===o?(r.top+=l[0],r.left-=l[1]):"right"===o?(r.top+=l[0],r.left+=l[1]):"top"===o?(r.left+=l[0],r.top-=l[1]):"bottom"===o&&(r.left+=l[0],r.top+=l[1]),e.popper=r,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||p(e.instance.popper);e.instance.reference===n&&(n=p(n));var i=S(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);t.boundaries=i;var s=t.priority,r=e.offsets.popper,a={primary:function(e){var n=r[e];return r[e]<i[e]&&!t.escapeWithReference&&(n=Math.max(r[e],i[e])),k({},e,n)},secondary:function(e){var n="right"===e?"left":"top",s=r[n];return r[e]>i[e]&&!t.escapeWithReference&&(s=Math.min(r[n],i[e]-("right"===e?r.width:r.height))),k({},n,s)}};return s.forEach((function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";r=M({},r,a[t](e))})),e.offsets.popper=r,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,s=e.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(s),o=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[o]<r(i[l])&&(e.offsets.popper[l]=r(i[l])-n[u]),n[l]>r(i[o])&&(e.offsets.popper[l]=r(i[o])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!R(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return e;var s=e.placement.split("-")[0],r=e.offsets,a=r.popper,o=r.reference,u=-1!==["left","right"].indexOf(s),d=u?"height":"width",c=u?"Top":"Left",h=c.toLowerCase(),p=u?"left":"top",f=u?"bottom":"right",m=E(i)[d];o[f]-m<a[h]&&(e.offsets.popper[h]-=a[h]-(o[f]-m)),o[h]+m>a[f]&&(e.offsets.popper[h]+=o[h]+m-a[f]),e.offsets.popper=L(e.offsets.popper);var _=o[h]+o[d]/2-m/2,g=l(e.instance.popper),v=parseFloat(g["margin"+c],10),y=parseFloat(g["border"+c+"Width"],10),b=_-e.offsets.popper[h]-v-y;return b=Math.max(Math.min(a[d]-m,b),0),e.arrowElement=i,e.offsets.arrow=(k(n={},h,Math.round(b)),k(n,p,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(P(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=S(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],s=O(i),r=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case"flip":a=[i,s];break;case"clockwise":a=B(i);break;case"counterclockwise":a=B(i,!0);break;default:a=t.behavior}return a.forEach((function(o,l){if(i!==o||a.length===l+1)return e;i=e.placement.split("-")[0],s=O(i);var u,d=e.offsets.popper,c=e.offsets.reference,h=Math.floor,p="left"===i&&h(d.right)>h(c.left)||"right"===i&&h(d.left)<h(c.right)||"top"===i&&h(d.bottom)>h(c.top)||"bottom"===i&&h(d.top)<h(c.bottom),f=h(d.left)<h(n.left),m=h(d.right)>h(n.right),_=h(d.top)<h(n.top),g=h(d.bottom)>h(n.bottom),v="left"===i&&f||"right"===i&&m||"top"===i&&_||"bottom"===i&&g,y=-1!==["top","bottom"].indexOf(i),b=!!t.flipVariations&&(y&&"start"===r&&f||y&&"end"===r&&m||!y&&"start"===r&&_||!y&&"end"===r&&g);(p||v||b)&&(e.flipped=!0,(p||v)&&(i=a[l+1]),b&&(r="end"===(u=r)?"start":"start"===u?"end":u),e.placement=i+(r?"-"+r:""),e.offsets.popper=M({},e.offsets.popper,A(e.instance.popper,e.offsets.reference,e.placement)),e=j(e.instance.modifiers,e,"flip"))})),e},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,s=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),o=-1===["top","left"].indexOf(n);return s[a?"left":"top"]=r[n]-(o?s[a?"width":"height"]:0),e.placement=O(t),e.offsets.popper=L(s),e}},hide:{order:800,enabled:!0,fn:function(e){if(!R(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=H(e.instance.modifiers,(function(e){return"preventOverflow"===e.name})).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(!1===e.hide)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var n,i,s=t.x,r=t.y,a=e.offsets.popper,o=H(e.instance.modifiers,(function(e){return"applyStyle"===e.name})).gpuAcceleration,l=void 0!==o?o:t.gpuAcceleration,u=D(p(e.instance.popper)),d={position:a.position},c={left:Math.floor(a.left),top:Math.floor(a.top),bottom:Math.floor(a.bottom),right:Math.floor(a.right)},h="bottom"===s?"top":"bottom",f="right"===r?"left":"right",m=I("transform"),_="bottom"==h?-u.height+c.bottom:c.top,g="right"==f?-u.width+c.right:c.left;l&&m?(d[m]="translate3d("+g+"px, "+_+"px, 0)",d[h]=0,d[f]=0,d.willChange="transform"):(n="bottom"==h?-1:1,i="right"==f?-1:1,d[h]=_*n,d[f]=g*i,d.willChange=h+", "+f);var v={"x-placement":e.placement};return e.attributes=M({},v,e.attributes),e.styles=M({},d,e.styles),e.arrowStyles=M({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(e){var t,n;return z(e.instance.popper,e.styles),t=e.instance.popper,n=e.attributes,Object.keys(n).forEach((function(e){!1!==n[e]?t.setAttribute(e,n[e]):t.removeAttribute(e)})),e.arrowElement&&Object.keys(e.arrowStyles).length&&z(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,n,i,s){var r=C(s,t,e,n.positionFixed),a=Y(n.placement,r,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return t.setAttribute("x-placement",a),z(t,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},K=(function(e,t,n){t&&w(e.prototype,t)}(G,[{key:"update",value:function(){return function(){var e;this.state.isDestroyed||((e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}}).offsets.reference=C(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Y(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=A(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=j(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e)))}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,P(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[I("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=function(e,t,n,i){n.updateBound=i,F(e).addEventListener("resize",n.updateBound,{passive:!0});var s=d(e);return function e(t,n,i,s){var r="BODY"===t.nodeName,a=r?t.ownerDocument.defaultView:t;a.addEventListener(n,i,{passive:!0}),r||e(d(a.parentNode),n,i,s),s.push(a)}(s,"scroll",n.updateBound,n.scrollParents),n.scrollElement=s,n.eventsEnabled=!0,n}(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return N.call(this)}}]),G);function G(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};b(this,G),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=a(this.update.bind(this)),this.options=M({},G.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(M({},G.Defaults.modifiers,i.modifiers)).forEach((function(e){n.options.modifiers[e]=M({},G.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(e){return M({name:e},n.options.modifiers[e])})).sort((function(e,t){return e.order-t.order})),this.modifiers.forEach((function(e){e.enabled&&o(e.onLoad)&&e.onLoad(n.reference,n.popper,n.options,e,n.state)})),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}K.Utils=("undefined"!=typeof window?window:e).PopperUtils,K.placements=$,K.Defaults=U,t.default=K}.call(this,n(1))},function(e,t,n){"use strict";function i(e){return"-Inf"===e?Number.NEGATIVE_INFINITY:"+Inf"===e||"Inf"===e?Number.POSITIVE_INFINITY:parseInt(e,10)}function s(){}var r=/^({\s*(\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)\s*})|([\[\]])\s*(-Inf|\*|\-?\d+(\.\d+)?)\s*,\s*(\+?Inf|\*|\-?\d+(\.\d+)?)\s*([\[\]])$/,a=/({\s*(\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)\s*})|([\[\]])\s*(-Inf|\*|\-?\d+(\.\d+)?)\s*,\s*(\+?Inf|\*|\-?\d+(\.\d+)?)\s*([\[\]])/;s.prototype.transChoice=function(e,t,n,i){(n=void 0!==n?n:{}).count=t;for(var s,r=e.split("|"),o=[],l=0;l<r.length;l++)r[l]=r[l].trim(),a.test(r[l])&&(s=r[l].split(/\s/),o.push(s.shift()),r[l]=s.join(" "));if(i=i||"en",1===r.length)return this.replacePlaceholders(e,n);for(var u=0;u<o.length;u++)if(this.testInterval(t,o[u]))return this.replacePlaceholders(r[u],n);var d=this.getPluralForm(t,i);return this.replacePlaceholders(r[d],n)},s.prototype.replacePlaceholders=function(e,t){var n;for(n in t){var i,s=new RegExp("%"+n+"%","g");s.test(e)&&(i=String(t[n]).replace(new RegExp("\\$","g"),"$$$$"),e=e.replace(s,i))}return e},s.prototype.testInterval=function(e,t){if("string"!=typeof t)throw"Invalid interval: should be a string.";var n=(t=t.trim()).match(r);if(!n)throw"Invalid interval: "+t;if(!n[2]){var s=(n=n.filter((function(e){return!!e})))[1],a=i(n[2]);a===1/0&&(a=-1/0);var o=i(n[3]),l=n[4];return("["===s?a<=e:a<e)&&("]"===l?e<=o:e<o)}for(var u=n[2].split(","),d=0;d<u.length;d++)if(parseInt(u[d],10)===e)return!0;return!1},s.prototype.getPluralForm=function(e,t){switch(t){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1==e?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===e||1===e?0:1;case"be":case"bs":case"hr":case"ru":case"sr":case"uk":return e%10==1&&e%100!=11?0:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?1:2;case"cs":case"sk":return 1==e?0:2<=e&&e<=4?1:2;case"ga":return 1==e?0:2==e?1:2;case"lt":return e%10==1&&e%100!=11?0:2<=e%10&&(e%100<10||20<=e%100)?1:2;case"sl":return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3;case"mk":return e%10==1?0:1;case"mt":return 1==e?0:0===e||1<e%100&&e%100<11?1:10<e%100&&e%100<20?2:3;case"lv":return 0===e?0:e%10==1&&e%100!=11?1:2;case"pl":return 1==e?0:2<=e%10&&e%10<=4&&(e%100<12||14<e%100)?1:2;case"cy":return 1==e?0:2==e?1:8==e||11==e?2:3;case"ro":return 1==e?0:0===e||0<e%100&&e%100<20?1:2;case"ar":return 0===e?0:1==e?1:2==e?2:3<=e%100&&e%100<=10?3:11<=e%100&&e%100<=99?4:5;default:return 0}},t.a=s},function(e,t,n){n(7),e.exports=n(19)},function(module,__webpack_exports__,__nested_webpack_require_26016__){"use strict";__nested_webpack_require_26016__.r(__webpack_exports__),function($){var _utils_migrate_mute__WEBPACK_IMPORTED_MODULE_0__=__nested_webpack_require_26016__(10),_utils_migrate_mute__WEBPACK_IMPORTED_MODULE_0___default=__nested_webpack_require_26016__.n(_utils_migrate_mute__WEBPACK_IMPORTED_MODULE_0__),jquery_migrate__WEBPACK_IMPORTED_MODULE_1__=__nested_webpack_require_26016__(11),jquery_migrate__WEBPACK_IMPORTED_MODULE_1___default=__nested_webpack_require_26016__.n(jquery_migrate__WEBPACK_IMPORTED_MODULE_1__),tether__WEBPACK_IMPORTED_MODULE_2__=__nested_webpack_require_26016__(12),tether__WEBPACK_IMPORTED_MODULE_2___default=__nested_webpack_require_26016__.n(tether__WEBPACK_IMPORTED_MODULE_2__),bootstrap__WEBPACK_IMPORTED_MODULE_3__=__nested_webpack_require_26016__(15),bootstrap__WEBPACK_IMPORTED_MODULE_3___default=__nested_webpack_require_26016__.n(bootstrap__WEBPACK_IMPORTED_MODULE_3__),select2__WEBPACK_IMPORTED_MODULE_4__=__nested_webpack_require_26016__(16),select2__WEBPACK_IMPORTED_MODULE_4___default=__nested_webpack_require_26016__.n(select2__WEBPACK_IMPORTED_MODULE_4__),jquery_growl__WEBPACK_IMPORTED_MODULE_5__=__nested_webpack_require_26016__(17),jquery_growl__WEBPACK_IMPORTED_MODULE_5___default=__nested_webpack_require_26016__.n(jquery_growl__WEBPACK_IMPORTED_MODULE_5__),pstagger__WEBPACK_IMPORTED_MODULE_6__=__nested_webpack_require_26016__(18),pstagger__WEBPACK_IMPORTED_MODULE_6___default=__nested_webpack_require_26016__.n(pstagger__WEBPACK_IMPORTED_MODULE_6__),_components_file_input_js__WEBPACK_IMPORTED_MODULE_7__=__nested_webpack_require_26016__(2),_components_ps_numbers_js__WEBPACK_IMPORTED_MODULE_8__=__nested_webpack_require_26016__(3);$.fn.pstooltip=$.fn.tooltip,function(global,jQuery){void 0===global&&"undefined"!=typeof window&&(global=window);var initSelect2=function initSelect2(){jQuery('[data-toggle="select2"]').each((function(){var newObj={minimumResultsForSearch:-1};for(var attr in $(this).data())attr.localeCompare("templateresult")?attr.localeCompare("templateselection")?attr.localeCompare("minimumresultsforsearch")?attr.localeCompare("toggle")&&(newObj[attr]=$(this).data()[attr]):newObj.minimumResultsForSearch=$(this).data()[attr]:newObj.templateSelection=eval($(this).data()[attr]):newObj.templateResult=eval($(this).data()[attr]);jQuery(this).select2(newObj)}))},_initToggleButtons=function(){jQuery('[data-toggle="switch"]').each((function(){var e,t,n=jQuery(this);null==n.data("activated")&&(n.data("activated",!0),e=n.prop("checked")?"-checked":"",n.wrap('<div class="switch-input '+e+'"></div>'),(t=n.parent()).addClass(n.attr("class")),n.on("change",(function(){t.toggleClass("-checked",n.prop("checked"))})),t.click((function(e){if(e.srcElement==t[0]||null==e.srcElement)return n.prop("checked",!n.prop("checked")),!1})))}))},_initAlerts=function(){jQuery(".alert-text").each((function(){var e,t=jQuery(this),n=t.height()/parseFloat(t.css("lineHeight"));5<Math.ceil(n)&&(e=t.html(),t.parent().attr("class"),t.parent().addClass("alert-drop"),void 0!==t.data("title")&&""!==t.data("title")?t.html("<b>"+t.data("title")+"</b>"):t.html("<b>Read More</b>"),t.css("cursor","pointer"),t.parent().append('<div class="alert-down" role="alert"><p class="alert-down-text"></p></div>'),t.parent().find(".alert-down").slideUp(0),t.parent().find(".alert-down-text").html(e))})),$(".alert-drop").each((function(){var e=jQuery(this);e.click((function(){$(".alert-down",e).slideToggle(400)}))}))},_initToolTips=function(){jQuery(".tooltip-error").pstooltip({template:'<div class="pstooltip"><div class="tooltip-error"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div></div>'}),jQuery('[data-toggle="pstooltip"]').pstooltip({container:"body",boundary:"window"}),jQuery('[data-toggle="popover"]').popover()},_initSearchBar=function(){$(".js-form-search").on("focusin",(function(){$(".js-dropdown-form").hasClass("expanded")||$(".js-dropdown-form").addClass("expanded")}))};global.prestaShopUiKit={init:function(){jQuery((function(){jQuery.propHooks.checked={set:function(e,t,n){var i=e[n]=t;return $(e).trigger("change"),i}},jQuery.fn.select2.defaults.set("theme","bootstrap"),jQuery.fn.select2.defaults.set("width","auto"),initSelect2(),_initToggleButtons(),_initAlerts(),_initToolTips(),_initSearchBar(),Object(_components_file_input_js__WEBPACK_IMPORTED_MODULE_7__.a)(),Object(_components_ps_numbers_js__WEBPACK_IMPORTED_MODULE_8__.a)(".ps-number-input")}))},initSelects:function(){initSelect2()},initToolTips:function(){_initToolTips()},initToggleButtons:function(){_initToggleButtons()},initAlerts:function(){_initAlerts()},initSearchBar:function(){_initSearchBar()},initInputFile:function(){Object(_components_file_input_js__WEBPACK_IMPORTED_MODULE_7__.a)()},initNumbers:function(){Object(_components_ps_numbers_js__WEBPACK_IMPORTED_MODULE_8__.a)(".ps-number-input")}},global.prestaShopUiKit.init()}("undefined"!=typeof window?window:void 0,$),$((function(){$.fn.psdwl=function(e){var t,n=null,i=this;(n=function(e,t){var n={};for(var i in t)e.hasOwnProperty(i)?n[i]=e[i]:n[i]=t[i];return n}(e,{hover:"install",validate:'<i class="material-icons">check</i>',text:"default",time:3e3,default:!0})).default&&(t=i.attr("class").replace(/(btn-\w+)/,"$1-reverse"),i.attr("class",t)),void 0!==$(i.selector).html()&&""!==$(i.selector).html()&&(n.text=$(i.selector).text()),i.html(n.hover);var s=this.css("width");i.html(n.text);var r=this.css("width"),a=parseInt(r,10)<parseInt(s,10)?s:r;a=parseInt(a,10)<95?"95px":a,i.css("width",a),i.hover((function(){i.html(n.hover)}),(function(){i.html(n.text)})),i.click((function(){i.css("border-left-color",i.css("border-color")),i.addClass("onclick"),i.unbind("mouseenter").unbind("mouseleave").unbind("click");var e=parseInt(a,10);i.css({width:"","margin-left":e/4,"margin-right":e/4}),setTimeout((function(){var e;i.removeClass("onclick"),i.css({"margin-left":"","margin-right":"",width:a,"border-left-color":""}),i.html(n.validate),n.default&&(e=i.attr("class").replace("-reverse",""),i.attr("class",e))}),n.time)}))}}))}.call(this,__nested_webpack_require_26016__(0))},function(e,t,n){(function(t){e.exports=t.$=n(9)}).call(this,n(1))},function(e,t,n){var i;!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,(function(n,s){"use strict";function r(e){return null!=e&&e===e.window}var a=[],o=Object.getPrototypeOf,l=a.slice,u=a.flat?function(e){return a.flat.call(e)}:function(e){return a.concat.apply([],e)},d=a.push,c=a.indexOf,h={},p=h.toString,f=h.hasOwnProperty,m=f.toString,_=m.call(Object),g={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},y=n.document,b={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var i,s,r=(n=n||y).createElement("script");if(r.text=e,t)for(i in b)(s=t[i]||t.getAttribute&&t.getAttribute(i))&&r.setAttribute(i,s);n.head.appendChild(r).parentNode.removeChild(r)}function k(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?h[p.call(e)]||"object":typeof e}var M=function(e,t){return new M.fn.init(e,t)};function L(e){var t=!!e&&"length"in e&&e.length,n=k(e);return!v(e)&&!r(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}M.fn=M.prototype={jquery:"3.5.1",constructor:M,length:0,toArray:function(){return l.call(this)},get:function(e){return null==e?l.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=M.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return M.each(this,e)},map:function(e){return this.pushStack(M.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(M.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(M.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:d,sort:a.sort,splice:a.splice},M.extend=M.fn.extend=function(){var e,t,n,i,s,r,a=arguments[0]||{},o=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[o]||{},o++),"object"==typeof a||v(a)||(a={}),o===l&&(a=this,o--);o<l;o++)if(null!=(e=arguments[o]))for(t in e)i=e[t],"__proto__"!==t&&a!==i&&(u&&i&&(M.isPlainObject(i)||(s=Array.isArray(i)))?(n=a[t],r=s&&!Array.isArray(n)?[]:s||M.isPlainObject(n)?n:{},s=!1,a[t]=M.extend(u,r,i)):void 0!==i&&(a[t]=i));return a},M.extend({expando:"jQuery"+("3.5.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==p.call(e)||(t=o(e))&&("function"!=typeof(n=f.call(t,"constructor")&&t.constructor)||m.call(n)!==_))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){w(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,i=0;if(L(e))for(n=e.length;i<n&&!1!==t.call(e[i],i,e[i]);i++);else for(i in e)if(!1===t.call(e[i],i,e[i]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(L(Object(e))?M.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:c.call(t,e,n)},merge:function(e,t){for(var n=+t.length,i=0,s=e.length;i<n;i++)e[s++]=t[i];return e.length=s,e},grep:function(e,t,n){for(var i=[],s=0,r=e.length,a=!n;s<r;s++)!t(e[s],s)!=a&&i.push(e[s]);return i},map:function(e,t,n){var i,s,r=0,a=[];if(L(e))for(i=e.length;r<i;r++)null!=(s=t(e[r],r,n))&&a.push(s);else for(r in e)null!=(s=t(e[r],r,n))&&a.push(s);return u(a)},guid:1,support:g}),"function"==typeof Symbol&&(M.fn[Symbol.iterator]=a[Symbol.iterator]),M.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(e,t){h["[object "+t+"]"]=t.toLowerCase()}));var D=function(e){function t(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(65536+n):String.fromCharCode(n>>10|55296,1023&n|56320))}function n(){f()}var i,s,r,a,o,l,u,d,c,h,p,f,m,_,g,v,y,b,w,k="sizzle"+ +new Date,M=e.document,L=0,D=0,T=le(),x=le(),S=le(),Y=le(),C=function(e,t){return e===t&&(p=!0),0},E={}.hasOwnProperty,O=[],A=O.pop,H=O.push,j=O.push,P=O.slice,I=function(e,t){for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},F="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",N="[\\x20\\t\\r\\n\\f]",W="(?:\\\\[\\da-fA-F]{1,6}"+N+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",z="\\["+N+"*("+W+")(?:"+N+"*([*^$|!~]?=)"+N+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+W+"))|)"+N+"*\\]",R=":("+W+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",$=new RegExp(N+"+","g"),q=new RegExp("^"+N+"+|((?:^|[^\\\\])(?:\\\\.)*)"+N+"+$","g"),B=new RegExp("^"+N+"*,"+N+"*"),U=new RegExp("^"+N+"*([>+~]|"+N+")"+N+"*"),K=new RegExp(N+"|>"),G=new RegExp(R),V=new RegExp("^"+W+"$"),J={ID:new RegExp("^#("+W+")"),CLASS:new RegExp("^\\.("+W+")"),TAG:new RegExp("^("+W+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+R),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+N+"*(even|odd|(([+-]|)(\\d*)n|)"+N+"*(?:([+-]|)"+N+"*(\\d+)|))"+N+"*\\)|)","i"),bool:new RegExp("^(?:"+F+")$","i"),needsContext:new RegExp("^"+N+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+N+"*((?:-\\d)?\\d*)"+N+"*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,ee=/^[^{]+\{\s*\[native \w/,te=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ne=/[+~]/,ie=new RegExp("\\\\[\\da-fA-F]{1,6}"+N+"?|\\\\([^\\r\\n\\f])","g"),se=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=ve((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{j.apply(O=P.call(M.childNodes),M.childNodes),O[M.childNodes.length].nodeType}catch(i){j={apply:O.length?function(e,t){H.apply(e,P.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function oe(e,t,n,i){var r,a,o,u,c,h,p,_=t&&t.ownerDocument,y=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==y&&9!==y&&11!==y)return n;if(!i&&(f(t),t=t||m,g)){if(11!==y&&(c=te.exec(e)))if(r=c[1]){if(9===y){if(!(o=t.getElementById(r)))return n;if(o.id===r)return n.push(o),n}else if(_&&(o=_.getElementById(r))&&w(t,o)&&o.id===r)return n.push(o),n}else{if(c[2])return j.apply(n,t.getElementsByTagName(e)),n;if((r=c[3])&&s.getElementsByClassName&&t.getElementsByClassName)return j.apply(n,t.getElementsByClassName(r)),n}if(s.qsa&&!Y[e+" "]&&(!v||!v.test(e))&&(1!==y||"object"!==t.nodeName.toLowerCase())){if(p=e,_=t,1===y&&(K.test(e)||U.test(e))){for((_=ne.test(e)&&me(t.parentNode)||t)===t&&s.scope||((u=t.getAttribute("id"))?u=u.replace(se,re):t.setAttribute("id",u=k)),a=(h=l(e)).length;a--;)h[a]=(u?"#"+u:":scope")+" "+ge(h[a]);p=h.join(",")}try{return j.apply(n,_.querySelectorAll(p)),n}catch(t){Y(e,!0)}finally{u===k&&t.removeAttribute("id")}}}return d(e.replace(q,"$1"),t,n,i)}function le(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function ue(e){return e[k]=!0,e}function de(e){var t=m.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function he(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function fe(e){return ue((function(t){return t=+t,ue((function(n,i){for(var s,r=e([],n.length,t),a=r.length;a--;)n[s=r[a]]&&(n[s]=!(i[s]=n[s]))}))}))}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(i in s=oe.support={},o=oe.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Q.test(t||n&&n.nodeName||"HTML")},f=oe.setDocument=function(e){var i,a,l=e?e.ownerDocument||e:M;return l!=m&&9===l.nodeType&&l.documentElement&&(_=(m=l).documentElement,g=!o(m),M!=m&&(a=m.defaultView)&&a.top!==a&&(a.addEventListener?a.addEventListener("unload",n,!1):a.attachEvent&&a.attachEvent("onunload",n)),s.scope=de((function(e){return _.appendChild(e).appendChild(m.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),s.attributes=de((function(e){return e.className="i",!e.getAttribute("className")})),s.getElementsByTagName=de((function(e){return e.appendChild(m.createComment("")),!e.getElementsByTagName("*").length})),s.getElementsByClassName=ee.test(m.getElementsByClassName),s.getById=de((function(e){return _.appendChild(e).id=k,!m.getElementsByName||!m.getElementsByName(k).length})),s.getById?(r.filter.ID=function(e){var n=e.replace(ie,t);return function(e){return e.getAttribute("id")===n}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var n=e.replace(ie,t);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,i,s,r=t.getElementById(e);if(r){if((n=r.getAttributeNode("id"))&&n.value===e)return[r];for(s=t.getElementsByName(e),i=0;r=s[i++];)if((n=r.getAttributeNode("id"))&&n.value===e)return[r]}return[]}}),r.find.TAG=s.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):s.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],s=0,r=t.getElementsByTagName(e);if("*"!==e)return r;for(;n=r[s++];)1===n.nodeType&&i.push(n);return i},r.find.CLASS=s.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(s.qsa=ee.test(m.querySelectorAll))&&(de((function(e){var t;_.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+N+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+N+"*(?:value|"+F+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),(t=m.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+N+"*name"+N+"*="+N+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),de((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=m.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+N+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),_.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")}))),(s.matchesSelector=ee.test(b=_.matches||_.webkitMatchesSelector||_.mozMatchesSelector||_.oMatchesSelector||_.msMatchesSelector))&&de((function(e){s.disconnectedMatch=b.call(e,"*"),b.call(e,"[s!='']:x"),y.push("!=",R)})),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),i=ee.test(_.compareDocumentPosition),w=i||ee.test(_.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},C=i?function(e,t){if(e===t)return p=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!s.sortDetached&&t.compareDocumentPosition(e)===n?e==m||e.ownerDocument==M&&w(M,e)?-1:t==m||t.ownerDocument==M&&w(M,t)?1:h?I(h,e)-I(h,t):0:4&n?-1:1)}:function(e,t){if(e===t)return p=!0,0;var n,i=0,s=e.parentNode,r=t.parentNode,a=[e],o=[t];if(!s||!r)return e==m?-1:t==m?1:s?-1:r?1:h?I(h,e)-I(h,t):0;if(s===r)return he(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)o.unshift(n);for(;a[i]===o[i];)i++;return i?he(a[i],o[i]):a[i]==M?-1:o[i]==M?1:0}),m},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if(f(e),s.matchesSelector&&g&&!Y[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var n=b.call(e,t);if(n||s.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){Y(t,!0)}return 0<oe(t,m,null,[e]).length},oe.contains=function(e,t){return(e.ownerDocument||e)!=m&&f(e),w(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!=m&&f(e);var n=r.attrHandle[t.toLowerCase()],i=n&&E.call(r.attrHandle,t.toLowerCase())?n(e,t,!g):void 0;return void 0!==i?i:s.attributes||!g?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},oe.escape=function(e){return(e+"").replace(se,re)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,n=[],i=0,r=0;if(p=!s.detectDuplicates,h=!s.sortStable&&e.slice(0),e.sort(C),p){for(;t=e[r++];)t===e[r]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return h=null,e},a=oe.getText=function(e){var t,n="",i=0,s=e.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===s||4===s)return e.nodeValue}else for(;t=e[i++];)n+=a(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:ue,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ie,t),e[3]=(e[3]||e[4]||e[5]||"").replace(ie,t),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return J.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=l(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var n=e.replace(ie,t).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===n}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+N+")"+e+"("+N+"|$)"))&&T(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(i){var s=oe.attr(i,e);return null==s?"!="===t:!t||(s+="","="===t?s===n:"!="===t?s!==n:"^="===t?n&&0===s.indexOf(n):"*="===t?n&&-1<s.indexOf(n):"$="===t?n&&s.slice(-n.length)===n:"~="===t?-1<(" "+s.replace($," ")+" ").indexOf(n):"|="===t&&(s===n||s.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,i,s){var r="nth"!==e.slice(0,3),a="last"!==e.slice(-4),o="of-type"===t;return 1===i&&0===s?function(e){return!!e.parentNode}:function(t,n,l){var u,d,c,h,p,f,m=r!=a?"nextSibling":"previousSibling",_=t.parentNode,g=o&&t.nodeName.toLowerCase(),v=!l&&!o,y=!1;if(_){if(r){for(;m;){for(h=t;h=h[m];)if(o?h.nodeName.toLowerCase()===g:1===h.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?_.firstChild:_.lastChild],a&&v){for(y=(p=(u=(d=(c=(h=_)[k]||(h[k]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===L&&u[1])&&u[2],h=p&&_.childNodes[p];h=++p&&h&&h[m]||(y=p=0)||f.pop();)if(1===h.nodeType&&++y&&h===t){d[e]=[L,p,y];break}}else if(v&&(y=p=(u=(d=(c=(h=t)[k]||(h[k]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]||[])[0]===L&&u[1]),!1===y)for(;(h=++p&&h&&h[m]||(y=p=0)||f.pop())&&((o?h.nodeName.toLowerCase()!==g:1!==h.nodeType)||!++y||(v&&((d=(c=h[k]||(h[k]={}))[h.uniqueID]||(c[h.uniqueID]={}))[e]=[L,y]),h!==t)););return(y-=s)===i||y%i==0&&0<=y/i}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[k]?i(t):1<i.length?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue((function(e,n){for(var s,r=i(e,t),a=r.length;a--;)e[s=I(e,r[a])]=!(n[s]=r[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:ue((function(e){var t=[],n=[],i=u(e.replace(q,"$1"));return i[k]?ue((function(e,t,n,s){for(var r,a=i(e,null,s,[]),o=e.length;o--;)(r=a[o])&&(e[o]=!(t[o]=r))})):function(e,s,r){return t[0]=e,i(t,null,r,n),t[0]=null,!n.pop()}})),has:ue((function(e){return function(t){return 0<oe(e,t).length}})),contains:ue((function(e){return e=e.replace(ie,t),function(t){return-1<(t.textContent||a(t)).indexOf(e)}})),lang:ue((function(e){return V.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(ie,t).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===_},focus:function(e){return e===m.activeElement&&(!m.hasFocus||m.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:pe(!1),disabled:pe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Z.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:fe((function(){return[0]})),last:fe((function(e,t){return[t-1]})),eq:fe((function(e,t,n){return[n<0?n+t:n]})),even:fe((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:fe((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:fe((function(e,t,n){for(var i=n<0?n+t:t<n?t:n;0<=--i;)e.push(i);return e})),gt:fe((function(e,t,n){for(var i=n<0?n+t:n;++i<t;)e.push(i);return e}))}}).pseudos.nth=r.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[i]=function(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}(i);for(i in{submit:!0,reset:!0})r.pseudos[i]=function(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}(i);function _e(){}function ge(e){for(var t=0,n=e.length,i="";t<n;t++)i+=e[t].value;return i}function ve(e,t,n){var i=t.dir,s=t.next,r=s||i,a=n&&"parentNode"===r,o=D++;return t.first?function(t,n,s){for(;t=t[i];)if(1===t.nodeType||a)return e(t,n,s);return!1}:function(t,n,l){var u,d,c,h=[L,o];if(l){for(;t=t[i];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[i];)if(1===t.nodeType||a)if(d=(c=t[k]||(t[k]={}))[t.uniqueID]||(c[t.uniqueID]={}),s&&s===t.nodeName.toLowerCase())t=t[i]||t;else{if((u=d[r])&&u[0]===L&&u[1]===o)return h[2]=u[2];if((d[r]=h)[2]=e(t,n,l))return!0}return!1}}function ye(e){return 1<e.length?function(t,n,i){for(var s=e.length;s--;)if(!e[s](t,n,i))return!1;return!0}:e[0]}function be(e,t,n,i,s){for(var r,a=[],o=0,l=e.length,u=null!=t;o<l;o++)(r=e[o])&&(n&&!n(r,i,s)||(a.push(r),u&&t.push(o)));return a}function we(e,t,n,i,s,r){return i&&!i[k]&&(i=we(i)),s&&!s[k]&&(s=we(s,r)),ue((function(r,a,o,l){var u,d,c,h=[],p=[],f=a.length,m=r||function(e,t,n){for(var i=0,s=t.length;i<s;i++)oe(e,t[i],n);return n}(t||"*",o.nodeType?[o]:o,[]),_=!e||!r&&t?m:be(m,h,e,o,l),g=n?s||(r?e:f||i)?[]:a:_;if(n&&n(_,g,o,l),i)for(u=be(g,p),i(u,[],o,l),d=u.length;d--;)(c=u[d])&&(g[p[d]]=!(_[p[d]]=c));if(r){if(s||e){if(s){for(u=[],d=g.length;d--;)(c=g[d])&&u.push(_[d]=c);s(null,g=[],u,l)}for(d=g.length;d--;)(c=g[d])&&-1<(u=s?I(r,c):h[d])&&(r[u]=!(a[u]=c))}}else g=be(g===a?g.splice(f,g.length):g),s?s(null,a,g,l):j.apply(a,g)}))}return _e.prototype=r.filters=r.pseudos,r.setFilters=new _e,l=oe.tokenize=function(e,t){var n,i,s,a,o,l,u,d=x[e+" "];if(d)return t?0:d.slice(0);for(o=e,l=[],u=r.preFilter;o;){for(a in n&&!(i=B.exec(o))||(i&&(o=o.slice(i[0].length)||o),l.push(s=[])),n=!1,(i=U.exec(o))&&(n=i.shift(),s.push({value:n,type:i[0].replace(q," ")}),o=o.slice(n.length)),r.filter)!(i=J[a].exec(o))||u[a]&&!(i=u[a](i))||(n=i.shift(),s.push({value:n,type:a,matches:i}),o=o.slice(n.length));if(!n)break}return t?o.length:o?oe.error(e):x(e,l).slice(0)},u=oe.compile=function(e,t){var n,i=[],s=[],a=S[e+" "];if(!a){for(n=(t=t||l(e)).length;n--;)(a=function e(t){for(var n,i,s,a=t.length,o=r.relative[t[0].type],l=o||r.relative[" "],u=o?1:0,d=ve((function(e){return e===n}),l,!0),h=ve((function(e){return-1<I(n,e)}),l,!0),p=[function(e,t,i){var s=!o&&(i||t!==c)||((n=t).nodeType?d:h)(e,t,i);return n=null,s}];u<a;u++)if(i=r.relative[t[u].type])p=[ve(ye(p),i)];else{if((i=r.filter[t[u].type].apply(null,t[u].matches))[k]){for(s=++u;s<a&&!r.relative[t[s].type];s++);return we(1<u&&ye(p),1<u&&ge(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(q,"$1"),i,u<s&&e(t.slice(u,s)),s<a&&e(t=t.slice(s)),s<a&&ge(t))}p.push(i)}return ye(p)}(t[n]))[k]?i.push(a):s.push(a);(a=S(e,function(e,t){function n(n,a,o,l,u){var d,h,p,_=0,v="0",y=n&&[],b=[],w=c,k=n||s&&r.find.TAG("*",u),M=L+=null==w?1:Math.random()||.1,D=k.length;for(u&&(c=a==m||a||u);v!==D&&null!=(d=k[v]);v++){if(s&&d){for(h=0,a||d.ownerDocument==m||(f(d),o=!g);p=e[h++];)if(p(d,a||m,o)){l.push(d);break}u&&(L=M)}i&&((d=!p&&d)&&_--,n&&y.push(d))}if(_+=v,i&&v!==_){for(h=0;p=t[h++];)p(y,b,a,o);if(n){if(0<_)for(;v--;)y[v]||b[v]||(b[v]=A.call(l));b=be(b)}j.apply(l,b),u&&!n&&0<b.length&&1<_+t.length&&oe.uniqueSort(l)}return u&&(L=M,c=w),y}var i=0<t.length,s=0<e.length;return i?ue(n):n}(s,i))).selector=e}return a},d=oe.select=function(e,n,i,s){var a,o,d,c,h,p="function"==typeof e&&e,f=!s&&l(e=p.selector||e);if(i=i||[],1===f.length){if(2<(o=f[0]=f[0].slice(0)).length&&"ID"===(d=o[0]).type&&9===n.nodeType&&g&&r.relative[o[1].type]){if(!(n=(r.find.ID(d.matches[0].replace(ie,t),n)||[])[0]))return i;p&&(n=n.parentNode),e=e.slice(o.shift().value.length)}for(a=J.needsContext.test(e)?0:o.length;a--&&(d=o[a],!r.relative[c=d.type]);)if((h=r.find[c])&&(s=h(d.matches[0].replace(ie,t),ne.test(o[0].type)&&me(n.parentNode)||n))){if(o.splice(a,1),!(e=s.length&&ge(o)))return j.apply(i,s),i;break}}return(p||u(e,f))(s,n,!g,i,!n||ne.test(e)&&me(n.parentNode)||n),i},s.sortStable=k.split("").sort(C).join("")===k,s.detectDuplicates=!!p,f(),s.sortDetached=de((function(e){return 1&e.compareDocumentPosition(m.createElement("fieldset"))})),de((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||ce("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),s.attributes&&de((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ce("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),de((function(e){return null==e.getAttribute("disabled")}))||ce(F,(function(e,t,n){var i;if(!n)return!0===e[t]?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null})),oe}(n);function T(e,t,n){for(var i=[],s=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(s&&M(e).is(n))break;i.push(e)}return i}function x(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}M.find=D,M.expr=D.selectors,M.expr[":"]=M.expr.pseudos,M.uniqueSort=M.unique=D.uniqueSort,M.text=D.getText,M.isXMLDoc=D.isXML,M.contains=D.contains,M.escapeSelector=D.escape;var S=M.expr.match.needsContext;function Y(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function E(e,t,n){return v(t)?M.grep(e,(function(e,i){return!!t.call(e,i,e)!==n})):t.nodeType?M.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?M.grep(e,(function(e){return-1<c.call(t,e)!==n})):M.filter(t,e,n)}M.filter=function(e,t,n){var i=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?M.find.matchesSelector(i,e)?[i]:[]:M.find.matches(e,M.grep(t,(function(e){return 1===e.nodeType})))},M.fn.extend({find:function(e){var t,n,i=this.length,s=this;if("string"!=typeof e)return this.pushStack(M(e).filter((function(){for(t=0;t<i;t++)if(M.contains(s[t],this))return!0})));for(n=this.pushStack([]),t=0;t<i;t++)M.find(e,s[t],n);return 1<i?M.uniqueSort(n):n},filter:function(e){return this.pushStack(E(this,e||[],!1))},not:function(e){return this.pushStack(E(this,e||[],!0))},is:function(e){return!!E(this,"string"==typeof e&&S.test(e)?M(e):e||[],!1).length}});var O,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(M.fn.init=function(e,t,n){var i,s;if(!e)return this;if(n=n||O,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(M):M.makeArray(e,this);if(!(i="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:A.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof M?t[0]:t,M.merge(this,M.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:y,!0)),C.test(i[1])&&M.isPlainObject(t))for(i in t)v(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(s=y.getElementById(i[2]))&&(this[0]=s,this.length=1),this}).prototype=M.fn,O=M(y);var H=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}M.fn.extend({has:function(e){var t=M(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(M.contains(this,t[e]))return!0}))},closest:function(e,t){var n,i=0,s=this.length,r=[],a="string"!=typeof e&&M(e);if(!S.test(e))for(;i<s;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&M.find.matchesSelector(n,e))){r.push(n);break}return this.pushStack(1<r.length?M.uniqueSort(r):r)},index:function(e){return e?"string"==typeof e?c.call(M(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(M.uniqueSort(M.merge(this.get(),M(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),M.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return x((e.parentNode||{}).firstChild,e)},children:function(e){return x(e.firstChild)},contents:function(e){return null!=e.contentDocument&&o(e.contentDocument)?e.contentDocument:(Y(e,"template")&&(e=e.content||e),M.merge([],e.childNodes))}},(function(e,t){M.fn[e]=function(n,i){var s=M.map(this,t,n);return"Until"!==e.slice(-5)&&(i=n),i&&"string"==typeof i&&(s=M.filter(i,s)),1<this.length&&(j[e]||M.uniqueSort(s),H.test(e)&&s.reverse()),this.pushStack(s)}}));var I=/[^\x20\t\r\n\f]+/g;function F(e){return e}function N(e){throw e}function W(e,t,n,i){var s;try{e&&v(s=e.promise)?s.call(e).done(t).fail(n):e&&v(s=e.then)?s.call(e,t,n):t.apply(void 0,[e].slice(i))}catch(e){n.apply(void 0,[e])}}M.Callbacks=function(e){var t,n;function i(){for(o=o||e.once,a=s=!0;u.length;d=-1)for(r=u.shift();++d<l.length;)!1===l[d].apply(r[0],r[1])&&e.stopOnFalse&&(d=l.length,r=!1);e.memory||(r=!1),s=!1,o&&(l=r?[]:"")}e="string"==typeof e?(t=e,n={},M.each(t.match(I)||[],(function(e,t){n[t]=!0})),n):M.extend({},e);var s,r,a,o,l=[],u=[],d=-1,c={add:function(){return l&&(r&&!s&&(d=l.length-1,u.push(r)),function t(n){M.each(n,(function(n,i){v(i)?e.unique&&c.has(i)||l.push(i):i&&i.length&&"string"!==k(i)&&t(i)}))}(arguments),r&&!s&&i()),this},remove:function(){return M.each(arguments,(function(e,t){for(var n;-1<(n=M.inArray(t,l,n));)l.splice(n,1),n<=d&&d--})),this},has:function(e){return e?-1<M.inArray(e,l):0<l.length},empty:function(){return l=l&&[],this},disable:function(){return o=u=[],l=r="",this},disabled:function(){return!l},lock:function(){return o=u=[],r||s||(l=r=""),this},locked:function(){return!!o},fireWith:function(e,t){return o||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),s||i()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!a}};return c},M.extend({Deferred:function(e){var t=[["notify","progress",M.Callbacks("memory"),M.Callbacks("memory"),2],["resolve","done",M.Callbacks("once memory"),M.Callbacks("once memory"),0,"resolved"],["reject","fail",M.Callbacks("once memory"),M.Callbacks("once memory"),1,"rejected"]],i="pending",s={state:function(){return i},always:function(){return r.done(arguments).fail(arguments),this},catch:function(e){return s.then(null,e)},pipe:function(){var e=arguments;return M.Deferred((function(n){M.each(t,(function(t,i){var s=v(e[i[4]])&&e[i[4]];r[i[1]]((function(){var e=s&&s.apply(this,arguments);e&&v(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,s?[e]:arguments)}))})),e=null})).promise()},then:function(e,i,s){var r=0;function a(e,t,i,s){return function(){function o(){var n,o;if(!(e<r)){if((n=i.apply(l,u))===t.promise())throw new TypeError("Thenable self-resolution");o=n&&("object"==typeof n||"function"==typeof n)&&n.then,v(o)?s?o.call(n,a(r,t,F,s),a(r,t,N,s)):(r++,o.call(n,a(r,t,F,s),a(r,t,N,s),a(r,t,F,t.notifyWith))):(i!==F&&(l=void 0,u=[n]),(s||t.resolveWith)(l,u))}}var l=this,u=arguments,d=s?o:function(){try{o()}catch(n){M.Deferred.exceptionHook&&M.Deferred.exceptionHook(n,d.stackTrace),r<=e+1&&(i!==N&&(l=void 0,u=[n]),t.rejectWith(l,u))}};e?d():(M.Deferred.getStackHook&&(d.stackTrace=M.Deferred.getStackHook()),n.setTimeout(d))}}return M.Deferred((function(n){t[0][3].add(a(0,n,v(s)?s:F,n.notifyWith)),t[1][3].add(a(0,n,v(e)?e:F)),t[2][3].add(a(0,n,v(i)?i:N))})).promise()},promise:function(e){return null!=e?M.extend(e,s):s}},r={};return M.each(t,(function(e,n){var a=n[2],o=n[5];s[n[1]]=a.add,o&&a.add((function(){i=o}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),r[n[0]]=function(){return r[n[0]+"With"](this===r?void 0:this,arguments),this},r[n[0]+"With"]=a.fireWith})),s.promise(r),e&&e.call(r,r),r},when:function(e){function t(e){return function(t){s[e]=this,r[e]=1<arguments.length?l.call(arguments):t,--n||a.resolveWith(s,r)}}var n=arguments.length,i=n,s=Array(i),r=l.call(arguments),a=M.Deferred();if(n<=1&&(W(e,a.done(t(i)).resolve,a.reject,!n),"pending"===a.state()||v(r[i]&&r[i].then)))return a.then();for(;i--;)W(r[i],t(i),a.reject);return a.promise()}});var z=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;M.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&z.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},M.readyException=function(e){n.setTimeout((function(){throw e}))};var R=M.Deferred();function $(){y.removeEventListener("DOMContentLoaded",$),n.removeEventListener("load",$),M.ready()}M.fn.ready=function(e){return R.then(e).catch((function(e){M.readyException(e)})),this},M.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--M.readyWait:M.isReady)||(M.isReady=!0)!==e&&0<--M.readyWait||R.resolveWith(y,[M])}}),M.ready.then=R.then,"complete"===y.readyState||"loading"!==y.readyState&&!y.documentElement.doScroll?n.setTimeout(M.ready):(y.addEventListener("DOMContentLoaded",$),n.addEventListener("load",$));var q=function(e,t,n,i,s,r,a){var o=0,l=e.length,u=null==n;if("object"===k(n))for(o in s=!0,n)q(e,t,o,n[o],!0,r,a);else if(void 0!==i&&(s=!0,v(i)||(a=!0),u&&(t=a?(t.call(e,i),null):(u=t,function(e,t,n){return u.call(M(e),n)})),t))for(;o<l;o++)t(e[o],n,a?i:i.call(e[o],o,t(e[o],n)));return s?e:u?t.call(e):l?t(e[0],n):r},B=/^-ms-/,U=/-([a-z])/g;function K(e,t){return t.toUpperCase()}function G(e){return e.replace(B,"ms-").replace(U,K)}function V(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType}function J(){this.expando=M.expando+J.uid++}J.uid=1,J.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var i,s=this.cache(e);if("string"==typeof t)s[G(t)]=n;else for(i in t)s[G(i)]=t[i];return s},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,i=e[this.expando];if(void 0!==i){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in i?[t]:t.match(I)||[]).length;for(;n--;)delete i[t[n]]}void 0!==t&&!M.isEmptyObject(i)||(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!M.isEmptyObject(t)}};var Q=new J,X=new J,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e,t,n){var i,s;if(void 0===n&&1===e.nodeType)if(i="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(i))){try{n="true"===(s=n)||"false"!==s&&("null"===s?null:s===+s+""?+s:Z.test(s)?JSON.parse(s):s)}catch(e){}X.set(e,t,n)}else n=void 0;return n}M.extend({hasData:function(e){return X.hasData(e)||Q.hasData(e)},data:function(e,t,n){return X.access(e,t,n)},removeData:function(e,t){X.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),M.fn.extend({data:function(e,t){var n,i,s,r=this[0],a=r&&r.attributes;if(void 0!==e)return"object"==typeof e?this.each((function(){X.set(this,e)})):q(this,(function(t){var n;return r&&void 0===t?void 0!==(n=X.get(r,e))||void 0!==(n=te(r,e))?n:void 0:void this.each((function(){X.set(this,e,t)}))}),null,t,1<arguments.length,null,!0);if(this.length&&(s=X.get(r),1===r.nodeType&&!Q.get(r,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(i=a[n].name).indexOf("data-")&&(i=G(i.slice(5)),te(r,i,s[i]));Q.set(r,"hasDataAttrs",!0)}return s},removeData:function(e){return this.each((function(){X.remove(this,e)}))}}),M.extend({queue:function(e,t,n){var i;if(e)return t=(t||"fx")+"queue",i=Q.get(e,t),n&&(!i||Array.isArray(n)?i=Q.access(e,t,M.makeArray(n)):i.push(n)),i||[]},dequeue:function(e,t){t=t||"fx";var n=M.queue(e,t),i=n.length,s=n.shift(),r=M._queueHooks(e,t);"inprogress"===s&&(s=n.shift(),i--),s&&("fx"===t&&n.unshift("inprogress"),delete r.stop,s.call(e,(function(){M.dequeue(e,t)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:M.Callbacks("once memory").add((function(){Q.remove(e,[t+"queue",n])}))})}}),M.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?M.queue(this[0],e):void 0===t?this:this.each((function(){var n=M.queue(this,e,t);M._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&M.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){M.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){function n(){--s||r.resolveWith(a,[a])}var i,s=1,r=M.Deferred(),a=this,o=this.length;for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";o--;)(i=Q.get(a[o],e+"queueHooks"))&&i.empty&&(s++,i.empty.add(n));return n(),r.promise(t)}});var ne=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+ne+")([a-z%]*)$","i"),se=["Top","Right","Bottom","Left"],re=y.documentElement,ae=function(e){return M.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ae=function(e){return M.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var le=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ae(e)&&"none"===M.css(e,"display")};function ue(e,t,n,i){var s,r,a=20,o=i?function(){return i.cur()}:function(){return M.css(e,t,"")},l=o(),u=n&&n[3]||(M.cssNumber[t]?"":"px"),d=e.nodeType&&(M.cssNumber[t]||"px"!==u&&+l)&&ie.exec(M.css(e,t));if(d&&d[3]!==u){for(l/=2,u=u||d[3],d=+l||1;a--;)M.style(e,t,d+u),(1-r)*(1-(r=o()/l||.5))<=0&&(a=0),d/=r;d*=2,M.style(e,t,d+u),n=n||[]}return n&&(d=+d||+l||0,s=n[1]?d+(n[1]+1)*n[2]:+n[2],i&&(i.unit=u,i.start=d,i.end=s)),s}var de={};function ce(e,t){for(var n,i,s,r,a,o,l,u=[],d=0,c=e.length;d<c;d++)(i=e[d]).style&&(n=i.style.display,t?("none"===n&&(u[d]=Q.get(i,"display")||null,u[d]||(i.style.display="")),""===i.style.display&&le(i)&&(u[d]=(l=a=r=void 0,a=(s=i).ownerDocument,o=s.nodeName,(l=de[o])||(r=a.body.appendChild(a.createElement(o)),l=M.css(r,"display"),r.parentNode.removeChild(r),"none"===l&&(l="block"),de[o]=l)))):"none"!==n&&(u[d]="none",Q.set(i,"display",n)));for(d=0;d<c;d++)null!=u[d]&&(e[d].style.display=u[d]);return e}M.fn.extend({show:function(){return ce(this,!0)},hide:function(){return ce(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){le(this)?M(this).show():M(this).hide()}))}});var he,pe,fe=/^(?:checkbox|radio)$/i,me=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,_e=/^$|^module$|\/(?:java|ecma)script/i;he=y.createDocumentFragment().appendChild(y.createElement("div")),(pe=y.createElement("input")).setAttribute("type","radio"),pe.setAttribute("checked","checked"),pe.setAttribute("name","t"),he.appendChild(pe),g.checkClone=he.cloneNode(!0).cloneNode(!0).lastChild.checked,he.innerHTML="<textarea>x</textarea>",g.noCloneChecked=!!he.cloneNode(!0).lastChild.defaultValue,he.innerHTML="<option></option>",g.option=!!he.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Y(e,t)?M.merge([e],n):n}function ye(e,t){for(var n=0,i=e.length;n<i;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,g.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var be=/<|&#?\w+;/;function we(e,t,n,i,s){for(var r,a,o,l,u,d,c=t.createDocumentFragment(),h=[],p=0,f=e.length;p<f;p++)if((r=e[p])||0===r)if("object"===k(r))M.merge(h,r.nodeType?[r]:r);else if(be.test(r)){for(a=a||c.appendChild(t.createElement("div")),o=(me.exec(r)||["",""])[1].toLowerCase(),l=ge[o]||ge._default,a.innerHTML=l[1]+M.htmlPrefilter(r)+l[2],d=l[0];d--;)a=a.lastChild;M.merge(h,a.childNodes),(a=c.firstChild).textContent=""}else h.push(t.createTextNode(r));for(c.textContent="",p=0;r=h[p++];)if(i&&-1<M.inArray(r,i))s&&s.push(r);else if(u=ae(r),a=ve(c.appendChild(r),"script"),u&&ye(a),n)for(d=0;r=a[d++];)_e.test(r.type||"")&&n.push(r);return c}var ke=/^key/,Me=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Le=/^([^.]*)(?:\.(.+)|)/;function De(){return!0}function Te(){return!1}function xe(e,t){return e===function(){try{return y.activeElement}catch(e){}}()==("focus"===t)}function Se(e,t,n,i,s,r){var a,o;if("object"==typeof t){for(o in"string"!=typeof n&&(i=i||n,n=void 0),t)Se(e,o,n,i,t[o],r);return e}if(null==i&&null==s?(s=n,i=n=void 0):null==s&&("string"==typeof n?(s=i,i=void 0):(s=i,i=n,n=void 0)),!1===s)s=Te;else if(!s)return e;return 1===r&&(a=s,(s=function(e){return M().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=M.guid++)),e.each((function(){M.event.add(this,t,s,i,n)}))}function Ye(e,t,n){n?(Q.set(e,t,!1),M.event.add(e,t,{namespace:!1,handler:function(e){var i,s,r=Q.get(this,t);if(1&e.isTrigger&&this[t]){if(r.length)(M.event.special[t]||{}).delegateType&&e.stopPropagation();else if(r=l.call(arguments),Q.set(this,t,r),i=n(this,t),this[t](),r!==(s=Q.get(this,t))||i?Q.set(this,t,!1):s={},r!==s)return e.stopImmediatePropagation(),e.preventDefault(),s.value}else r.length&&(Q.set(this,t,{value:M.event.trigger(M.extend(r[0],M.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,t)&&M.event.add(e,t,De)}M.event={global:{},add:function(e,t,n,i,s){var r,a,o,l,u,d,c,h,p,f,m,_=Q.get(e);if(V(e))for(n.handler&&(n=(r=n).handler,s=r.selector),s&&M.find.matchesSelector(re,s),n.guid||(n.guid=M.guid++),(l=_.events)||(l=_.events=Object.create(null)),(a=_.handle)||(a=_.handle=function(t){return void 0!==M&&M.event.triggered!==t.type?M.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(I)||[""]).length;u--;)p=m=(o=Le.exec(t[u])||[])[1],f=(o[2]||"").split(".").sort(),p&&(c=M.event.special[p]||{},p=(s?c.delegateType:c.bindType)||p,c=M.event.special[p]||{},d=M.extend({type:p,origType:m,data:i,handler:n,guid:n.guid,selector:s,needsContext:s&&M.expr.match.needsContext.test(s),namespace:f.join(".")},r),(h=l[p])||((h=l[p]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,i,f,a)||e.addEventListener&&e.addEventListener(p,a)),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=n.guid)),s?h.splice(h.delegateCount++,0,d):h.push(d),M.event.global[p]=!0)},remove:function(e,t,n,i,s){var r,a,o,l,u,d,c,h,p,f,m,_=Q.hasData(e)&&Q.get(e);if(_&&(l=_.events)){for(u=(t=(t||"").match(I)||[""]).length;u--;)if(p=m=(o=Le.exec(t[u])||[])[1],f=(o[2]||"").split(".").sort(),p){for(c=M.event.special[p]||{},h=l[p=(i?c.delegateType:c.bindType)||p]||[],o=o[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=r=h.length;r--;)d=h[r],!s&&m!==d.origType||n&&n.guid!==d.guid||o&&!o.test(d.namespace)||i&&i!==d.selector&&("**"!==i||!d.selector)||(h.splice(r,1),d.selector&&h.delegateCount--,c.remove&&c.remove.call(e,d));a&&!h.length&&(c.teardown&&!1!==c.teardown.call(e,f,_.handle)||M.removeEvent(e,p,_.handle),delete l[p])}else for(p in l)M.event.remove(e,p+t[u],n,i,!0);M.isEmptyObject(l)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,i,s,r,a,o=new Array(arguments.length),l=M.event.fix(e),u=(Q.get(this,"events")||Object.create(null))[l.type]||[],d=M.event.special[l.type]||{};for(o[0]=l,t=1;t<arguments.length;t++)o[t]=arguments[t];if(l.delegateTarget=this,!d.preDispatch||!1!==d.preDispatch.call(this,l)){for(a=M.event.handlers.call(this,l,u),t=0;(s=a[t++])&&!l.isPropagationStopped();)for(l.currentTarget=s.elem,n=0;(r=s.handlers[n++])&&!l.isImmediatePropagationStopped();)l.rnamespace&&!1!==r.namespace&&!l.rnamespace.test(r.namespace)||(l.handleObj=r,l.data=r.data,void 0!==(i=((M.event.special[r.origType]||{}).handle||r.handler).apply(s.elem,o))&&!1===(l.result=i)&&(l.preventDefault(),l.stopPropagation()));return d.postDispatch&&d.postDispatch.call(this,l),l.result}},handlers:function(e,t){var n,i,s,r,a,o=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!("click"===e.type&&1<=e.button))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(r=[],a={},n=0;n<l;n++)void 0===a[s=(i=t[n]).selector+" "]&&(a[s]=i.needsContext?-1<M(s,this).index(u):M.find(s,this,null,[u]).length),a[s]&&r.push(i);r.length&&o.push({elem:u,handlers:r})}return u=this,l<t.length&&o.push({elem:u,handlers:t.slice(l)}),o},addProp:function(e,t){Object.defineProperty(M.Event.prototype,e,{enumerable:!0,configurable:!0,get:v(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[M.expando]?e:new M.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return fe.test(t.type)&&t.click&&Y(t,"input")&&Ye(t,"click",De),!1},trigger:function(e){var t=this||e;return fe.test(t.type)&&t.click&&Y(t,"input")&&Ye(t,"click"),!0},_default:function(e){var t=e.target;return fe.test(t.type)&&t.click&&Y(t,"input")&&Q.get(t,"click")||Y(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},M.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},M.Event=function(e,t){if(!(this instanceof M.Event))return new M.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?De:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&M.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[M.expando]=!0},M.Event.prototype={constructor:M.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=De,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=De,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=De,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},M.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&ke.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Me.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},M.event.addProp),M.each({focus:"focusin",blur:"focusout"},(function(e,t){M.event.special[e]={setup:function(){return Ye(this,e,xe),!1},trigger:function(){return Ye(this,e),!0},delegateType:t}})),M.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(e,t){M.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=e.relatedTarget,s=e.handleObj;return i&&(i===this||M.contains(this,i))||(e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t),n}}})),M.fn.extend({on:function(e,t,n,i){return Se(this,e,t,n,i)},one:function(e,t,n,i){return Se(this,e,t,n,i,1)},off:function(e,t,n){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,M(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"!=typeof e)return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each((function(){M.event.remove(this,e,n,t)}));for(s in e)this.off(s,t,e[s]);return this}});var Ce=/<script|<style|<link/i,Ee=/checked\s*(?:[^=]|=\s*.checked.)/i,Oe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ae(e,t){return Y(e,"table")&&Y(11!==t.nodeType?t:t.firstChild,"tr")&&M(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function je(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,i,s,r,a,o;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.get(e).events))for(s in Q.remove(t,"handle events"),o)for(n=0,i=o[s].length;n<i;n++)M.event.add(t,s,o[s][n]);X.hasData(e)&&(r=X.access(e),a=M.extend({},r),X.set(t,a))}}function Ie(e,t,n,i){t=u(t);var s,r,a,o,l,d,c=0,h=e.length,p=h-1,f=t[0],m=v(f);if(m||1<h&&"string"==typeof f&&!g.checkClone&&Ee.test(f))return e.each((function(s){var r=e.eq(s);m&&(t[0]=f.call(this,s,r.html())),Ie(r,t,n,i)}));if(h&&(r=(s=we(t,e[0].ownerDocument,!1,e,i)).firstChild,1===s.childNodes.length&&(s=r),r||i)){for(o=(a=M.map(ve(s,"script"),He)).length;c<h;c++)l=s,c!==p&&(l=M.clone(l,!0,!0),o&&M.merge(a,ve(l,"script"))),n.call(e[c],l,c);if(o)for(d=a[a.length-1].ownerDocument,M.map(a,je),c=0;c<o;c++)l=a[c],_e.test(l.type||"")&&!Q.access(l,"globalEval")&&M.contains(d,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?M._evalUrl&&!l.noModule&&M._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")},d):w(l.textContent.replace(Oe,""),l,d))}return e}function Fe(e,t,n){for(var i,s=t?M.filter(t,e):e,r=0;null!=(i=s[r]);r++)n||1!==i.nodeType||M.cleanData(ve(i)),i.parentNode&&(n&&ae(i)&&ye(ve(i,"script")),i.parentNode.removeChild(i));return e}function Ne(e,t,n){var i,s,r={};for(s in t)r[s]=e.style[s],e.style[s]=t[s];for(s in i=n.call(e),t)e.style[s]=r[s];return i}M.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var i,s,r,a,o,l,u,d=e.cloneNode(!0),c=ae(e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||M.isXMLDoc(e)))for(a=ve(d),i=0,s=(r=ve(e)).length;i<s;i++)o=r[i],"input"===(u=(l=a[i]).nodeName.toLowerCase())&&fe.test(o.type)?l.checked=o.checked:"input"!==u&&"textarea"!==u||(l.defaultValue=o.defaultValue);if(t)if(n)for(r=r||ve(e),a=a||ve(d),i=0,s=r.length;i<s;i++)Pe(r[i],a[i]);else Pe(e,d);return 0<(a=ve(d,"script")).length&&ye(a,!c&&ve(e,"script")),d},cleanData:function(e){for(var t,n,i,s=M.event.special,r=0;void 0!==(n=e[r]);r++)if(V(n)){if(t=n[Q.expando]){if(t.events)for(i in t.events)s[i]?M.event.remove(n,i):M.removeEvent(n,i,t.handle);n[Q.expando]=void 0}n[X.expando]&&(n[X.expando]=void 0)}}}),M.fn.extend({detach:function(e){return Fe(this,e,!0)},remove:function(e){return Fe(this,e)},text:function(e){return q(this,(function(e){return void 0===e?M.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Ie(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ae(this,e).appendChild(e)}))},prepend:function(){return Ie(this,arguments,(function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Ae(this,e)).insertBefore(e,t.firstChild)}))},before:function(){return Ie(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Ie(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(M.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return M.clone(this,e,t)}))},html:function(e){return q(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ce.test(e)&&!ge[(me.exec(e)||["",""])[1].toLowerCase()]){e=M.htmlPrefilter(e);try{for(;n<i;n++)1===(t=this[n]||{}).nodeType&&(M.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Ie(this,arguments,(function(t){var n=this.parentNode;M.inArray(this,e)<0&&(M.cleanData(ve(this)),n&&n.replaceChild(t,this))}),e)}}),M.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(e,t){M.fn[e]=function(e){for(var n,i=[],s=M(e),r=s.length-1,a=0;a<=r;a++)n=a===r?this:this.clone(!0),M(s[a])[t](n),d.apply(i,n.get());return this.pushStack(i)}}));var We,ze,Re,$e,qe,Be,Ue,Ke,Ge=new RegExp("^("+ne+")(?!px)[a-z%]+$","i"),Ve=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Je=new RegExp(se.join("|"),"i");function Qe(){var e;Ke&&(Ue.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",Ke.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(Ue).appendChild(Ke),e=n.getComputedStyle(Ke),We="1%"!==e.top,Be=12===Xe(e.marginLeft),Ke.style.right="60%",$e=36===Xe(e.right),ze=36===Xe(e.width),Ke.style.position="absolute",Re=12===Xe(Ke.offsetWidth/3),re.removeChild(Ue),Ke=null)}function Xe(e){return Math.round(parseFloat(e))}function Ze(e,t,n){var i,s,r,a,o=e.style;return(n=n||Ve(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ae(e)||(a=M.style(e,t)),!g.pixelBoxStyles()&&Ge.test(a)&&Je.test(t)&&(i=o.width,s=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=a,a=n.width,o.width=i,o.minWidth=s,o.maxWidth=r)),void 0!==a?a+"":a}function et(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}Ue=y.createElement("div"),(Ke=y.createElement("div")).style&&(Ke.style.backgroundClip="content-box",Ke.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===Ke.style.backgroundClip,M.extend(g,{boxSizingReliable:function(){return Qe(),ze},pixelBoxStyles:function(){return Qe(),$e},pixelPosition:function(){return Qe(),We},reliableMarginLeft:function(){return Qe(),Be},scrollboxSize:function(){return Qe(),Re},reliableTrDimensions:function(){var e,t,i,s;return null==qe&&(e=y.createElement("table"),t=y.createElement("tr"),i=y.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",i.style.height="9px",re.appendChild(e).appendChild(t).appendChild(i),s=n.getComputedStyle(t),qe=3<parseInt(s.height),re.removeChild(e)),qe}}));var tt=["Webkit","Moz","ms"],nt=y.createElement("div").style,it={};function st(e){return M.cssProps[e]||it[e]||(e in nt?e:it[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=tt.length;n--;)if((e=tt[n]+t)in nt)return e}(e)||e)}var rt=/^(none|table(?!-c[ea]).+)/,at=/^--/,ot={position:"absolute",visibility:"hidden",display:"block"},lt={letterSpacing:"0",fontWeight:"400"};function ut(e,t,n){var i=ie.exec(t);return i?Math.max(0,i[2]-(n||0))+(i[3]||"px"):t}function dt(e,t,n,i,s,r){var a="width"===t?1:0,o=0,l=0;if(n===(i?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=M.css(e,n+se[a],!0,s)),i?("content"===n&&(l-=M.css(e,"padding"+se[a],!0,s)),"margin"!==n&&(l-=M.css(e,"border"+se[a]+"Width",!0,s))):(l+=M.css(e,"padding"+se[a],!0,s),"padding"!==n?l+=M.css(e,"border"+se[a]+"Width",!0,s):o+=M.css(e,"border"+se[a]+"Width",!0,s));return!i&&0<=r&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-r-l-o-.5))||0),l}function ct(e,t,n){var i=Ve(e),s=(!g.boxSizingReliable()||n)&&"border-box"===M.css(e,"boxSizing",!1,i),r=s,a=Ze(e,t,i),o="offset"+t[0].toUpperCase()+t.slice(1);if(Ge.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&s||!g.reliableTrDimensions()&&Y(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===M.css(e,"display",!1,i))&&e.getClientRects().length&&(s="border-box"===M.css(e,"boxSizing",!1,i),(r=o in e)&&(a=e[o])),(a=parseFloat(a)||0)+dt(e,t,n||(s?"border":"content"),r,i,a)+"px"}function ht(e,t,n,i,s){return new ht.prototype.init(e,t,n,i,s)}M.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ze(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var s,r,a,o=G(t),l=at.test(t),u=e.style;if(l||(t=st(o)),a=M.cssHooks[t]||M.cssHooks[o],void 0===n)return a&&"get"in a&&void 0!==(s=a.get(e,!1,i))?s:u[t];"string"==(r=typeof n)&&(s=ie.exec(n))&&s[1]&&(n=ue(e,t,s),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=s&&s[3]||(M.cssNumber[o]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,i))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,i){var s,r,a,o=G(t);return at.test(t)||(t=st(o)),(a=M.cssHooks[t]||M.cssHooks[o])&&"get"in a&&(s=a.get(e,!0,n)),void 0===s&&(s=Ze(e,t,i)),"normal"===s&&t in lt&&(s=lt[t]),""===n||n?(r=parseFloat(s),!0===n||isFinite(r)?r||0:s):s}}),M.each(["height","width"],(function(e,t){M.cssHooks[t]={get:function(e,n,i){if(n)return!rt.test(M.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ct(e,t,i):Ne(e,ot,(function(){return ct(e,t,i)}))},set:function(e,n,i){var s,r=Ve(e),a=!g.scrollboxSize()&&"absolute"===r.position,o=(a||i)&&"border-box"===M.css(e,"boxSizing",!1,r),l=i?dt(e,t,i,o,r):0;return o&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(r[t])-dt(e,t,"border",!1,r)-.5)),l&&(s=ie.exec(n))&&"px"!==(s[3]||"px")&&(e.style[t]=n,n=M.css(e,t)),ut(0,n,l)}}})),M.cssHooks.marginLeft=et(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ze(e,"marginLeft"))||e.getBoundingClientRect().left-Ne(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),M.each({margin:"",padding:"",border:"Width"},(function(e,t){M.cssHooks[e+t]={expand:function(n){for(var i=0,s={},r="string"==typeof n?n.split(" "):[n];i<4;i++)s[e+se[i]+t]=r[i]||r[i-2]||r[0];return s}},"margin"!==e&&(M.cssHooks[e+t].set=ut)})),M.fn.extend({css:function(e,t){return q(this,(function(e,t,n){var i,s,r={},a=0;if(Array.isArray(t)){for(i=Ve(e),s=t.length;a<s;a++)r[t[a]]=M.css(e,t[a],!1,i);return r}return void 0!==n?M.style(e,t,n):M.css(e,t)}),e,t,1<arguments.length)}}),(M.Tween=ht).prototype={constructor:ht,init:function(e,t,n,i,s,r){this.elem=e,this.prop=n,this.easing=s||M.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=r||(M.cssNumber[n]?"":"px")},cur:function(){var e=ht.propHooks[this.prop];return e&&e.get?e.get(this):ht.propHooks._default.get(this)},run:function(e){var t,n=ht.propHooks[this.prop];return this.options.duration?this.pos=t=M.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ht.propHooks._default.set(this),this}},ht.prototype.init.prototype=ht.prototype,ht.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=M.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){M.fx.step[e.prop]?M.fx.step[e.prop](e):1!==e.elem.nodeType||!M.cssHooks[e.prop]&&null==e.elem.style[st(e.prop)]?e.elem[e.prop]=e.now:M.style(e.elem,e.prop,e.now+e.unit)}}},ht.propHooks.scrollTop=ht.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},M.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},M.fx=ht.prototype.init,M.fx.step={};var pt,ft,mt,_t,gt=/^(?:toggle|show|hide)$/,vt=/queueHooks$/;function yt(){ft&&(!1===y.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(yt):n.setTimeout(yt,M.fx.interval),M.fx.tick())}function bt(){return n.setTimeout((function(){pt=void 0})),pt=Date.now()}function wt(e,t){var n,i=0,s={height:e};for(t=t?1:0;i<4;i+=2-t)s["margin"+(n=se[i])]=s["padding"+n]=e;return t&&(s.opacity=s.width=e),s}function kt(e,t,n){for(var i,s=(Mt.tweeners[t]||[]).concat(Mt.tweeners["*"]),r=0,a=s.length;r<a;r++)if(i=s[r].call(n,t,e))return i}function Mt(e,t,n){var i,s,r=0,a=Mt.prefilters.length,o=M.Deferred().always((function(){delete l.elem})),l=function(){if(s)return!1;for(var t=pt||bt(),n=Math.max(0,u.startTime+u.duration-t),i=1-(n/u.duration||0),r=0,a=u.tweens.length;r<a;r++)u.tweens[r].run(i);return o.notifyWith(e,[u,i,n]),i<1&&a?n:(a||o.notifyWith(e,[u,1,0]),o.resolveWith(e,[u]),!1)},u=o.promise({elem:e,props:M.extend({},t),opts:M.extend(!0,{specialEasing:{},easing:M.easing._default},n),originalProperties:t,originalOptions:n,startTime:pt||bt(),duration:n.duration,tweens:[],createTween:function(t,n){var i=M.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(i),i},stop:function(t){var n=0,i=t?u.tweens.length:0;if(s)return this;for(s=!0;n<i;n++)u.tweens[n].run(1);return t?(o.notifyWith(e,[u,1,0]),o.resolveWith(e,[u,t])):o.rejectWith(e,[u,t]),this}}),d=u.props;for(function(e,t){var n,i,s,r,a;for(n in e)if(s=t[i=G(n)],r=e[n],Array.isArray(r)&&(s=r[1],r=e[n]=r[0]),n!==i&&(e[i]=r,delete e[n]),(a=M.cssHooks[i])&&"expand"in a)for(n in r=a.expand(r),delete e[i],r)n in e||(e[n]=r[n],t[n]=s);else t[i]=s}(d,u.opts.specialEasing);r<a;r++)if(i=Mt.prefilters[r].call(u,e,d,u.opts))return v(i.stop)&&(M._queueHooks(u.elem,u.opts.queue).stop=i.stop.bind(i)),i;return M.map(d,kt,u),v(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),M.fx.timer(M.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}M.Animation=M.extend(Mt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){for(var n,i=0,s=(e=v(e)?(t=e,["*"]):e.match(I)).length;i<s;i++)n=e[i],Mt.tweeners[n]=Mt.tweeners[n]||[],Mt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var i,s,r,a,o,l,u,d,c="width"in t||"height"in t,h=this,p={},f=e.style,m=e.nodeType&&le(e),_=Q.get(e,"fxshow");for(i in n.queue||(null==(a=M._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,o=a.empty.fire,a.empty.fire=function(){a.unqueued||o()}),a.unqueued++,h.always((function(){h.always((function(){a.unqueued--,M.queue(e,"fx").length||a.empty.fire()}))}))),t)if(s=t[i],gt.test(s)){if(delete t[i],r=r||"toggle"===s,s===(m?"hide":"show")){if("show"!==s||!_||void 0===_[i])continue;m=!0}p[i]=_&&_[i]||M.style(e,i)}if((l=!M.isEmptyObject(t))||!M.isEmptyObject(p))for(i in c&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(u=_&&_.display)&&(u=Q.get(e,"display")),"none"===(d=M.css(e,"display"))&&(u?d=u:(ce([e],!0),u=e.style.display||u,d=M.css(e,"display"),ce([e]))),("inline"===d||"inline-block"===d&&null!=u)&&"none"===M.css(e,"float")&&(l||(h.done((function(){f.display=u})),null==u&&(d=f.display,u="none"===d?"":d)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",h.always((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]}))),l=!1,p)l||(_?"hidden"in _&&(m=_.hidden):_=Q.access(e,"fxshow",{display:u}),r&&(_.hidden=!m),m&&ce([e],!0),h.done((function(){for(i in m||ce([e]),Q.remove(e,"fxshow"),p)M.style(e,i,p[i])}))),l=kt(m?_[i]:0,i,h),i in _||(_[i]=l.start,m&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?Mt.prefilters.unshift(e):Mt.prefilters.push(e)}}),M.speed=function(e,t,n){var i=e&&"object"==typeof e?M.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return M.fx.off?i.duration=0:"number"!=typeof i.duration&&(i.duration in M.fx.speeds?i.duration=M.fx.speeds[i.duration]:i.duration=M.fx.speeds._default),null!=i.queue&&!0!==i.queue||(i.queue="fx"),i.old=i.complete,i.complete=function(){v(i.old)&&i.old.call(this),i.queue&&M.dequeue(this,i.queue)},i},M.fn.extend({fadeTo:function(e,t,n,i){return this.filter(le).css("opacity",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){function s(){var t=Mt(this,M.extend({},e),a);(r||Q.get(this,"finish"))&&t.stop(!0)}var r=M.isEmptyObject(e),a=M.speed(t,n,i);return s.finish=s,r||!1===a.queue?this.each(s):this.queue(a.queue,s)},stop:function(e,t,n){function i(e){var t=e.stop;delete e.stop,t(n)}return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&this.queue(e||"fx",[]),this.each((function(){var t=!0,s=null!=e&&e+"queueHooks",r=M.timers,a=Q.get(this);if(s)a[s]&&a[s].stop&&i(a[s]);else for(s in a)a[s]&&a[s].stop&&vt.test(s)&&i(a[s]);for(s=r.length;s--;)r[s].elem!==this||null!=e&&r[s].queue!==e||(r[s].anim.stop(n),t=!1,r.splice(s,1));!t&&n||M.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||"fx"),this.each((function(){var t,n=Q.get(this),i=n[e+"queue"],s=n[e+"queueHooks"],r=M.timers,a=i?i.length:0;for(n.finish=!0,M.queue(this,e,[]),s&&s.stop&&s.stop.call(this,!0),t=r.length;t--;)r[t].elem===this&&r[t].queue===e&&(r[t].anim.stop(!0),r.splice(t,1));for(t=0;t<a;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish}))}}),M.each(["toggle","show","hide"],(function(e,t){var n=M.fn[t];M.fn[t]=function(e,i,s){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(wt(t,!0),e,i,s)}})),M.each({slideDown:wt("show"),slideUp:wt("hide"),slideToggle:wt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(e,t){M.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}})),M.timers=[],M.fx.tick=function(){var e,t=0,n=M.timers;for(pt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||M.fx.stop(),pt=void 0},M.fx.timer=function(e){M.timers.push(e),M.fx.start()},M.fx.interval=13,M.fx.start=function(){ft||(ft=!0,yt())},M.fx.stop=function(){ft=null},M.fx.speeds={slow:600,fast:200,_default:400},M.fn.delay=function(e,t){return e=M.fx&&M.fx.speeds[e]||e,t=t||"fx",this.queue(t,(function(t,i){var s=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(s)}}))},mt=y.createElement("input"),_t=y.createElement("select").appendChild(y.createElement("option")),mt.type="checkbox",g.checkOn=""!==mt.value,g.optSelected=_t.selected,(mt=y.createElement("input")).value="t",mt.type="radio",g.radioValue="t"===mt.value;var Lt,Dt=M.expr.attrHandle;M.fn.extend({attr:function(e,t){return q(this,M.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each((function(){M.removeAttr(this,e)}))}}),M.extend({attr:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===e.getAttribute?M.prop(e,t,n):(1===r&&M.isXMLDoc(e)||(s=M.attrHooks[t.toLowerCase()]||(M.expr.match.bool.test(t)?Lt:void 0)),void 0!==n?null===n?void M.removeAttr(e,t):s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:(e.setAttribute(t,n+""),n):s&&"get"in s&&null!==(i=s.get(e,t))||null!=(i=M.find.attr(e,t))?i:void 0)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&Y(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,s=t&&t.match(I);if(s&&1===e.nodeType)for(;n=s[i++];)e.removeAttribute(n)}}),Lt={set:function(e,t,n){return!1===t?M.removeAttr(e,n):e.setAttribute(n,n),n}},M.each(M.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=Dt[t]||M.find.attr;Dt[t]=function(e,t,i){var s,r,a=t.toLowerCase();return i||(r=Dt[a],Dt[a]=s,s=null!=n(e,t,i)?a:null,Dt[a]=r),s}}));var Tt=/^(?:input|select|textarea|button)$/i,xt=/^(?:a|area)$/i;function St(e){return(e.match(I)||[]).join(" ")}function Yt(e){return e.getAttribute&&e.getAttribute("class")||""}function Ct(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(I)||[]}M.fn.extend({prop:function(e,t){return q(this,M.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each((function(){delete this[M.propFix[e]||e]}))}}),M.extend({prop:function(e,t,n){var i,s,r=e.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&M.isXMLDoc(e)||(t=M.propFix[t]||t,s=M.propHooks[t]),void 0!==n?s&&"set"in s&&void 0!==(i=s.set(e,n,t))?i:e[t]=n:s&&"get"in s&&null!==(i=s.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=M.find.attr(e,"tabindex");return t?parseInt(t,10):Tt.test(e.nodeName)||xt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(M.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),M.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){M.propFix[this.toLowerCase()]=this})),M.fn.extend({addClass:function(e){var t,n,i,s,r,a,o,l=0;if(v(e))return this.each((function(t){M(this).addClass(e.call(this,t,Yt(this)))}));if((t=Ct(e)).length)for(;n=this[l++];)if(s=Yt(n),i=1===n.nodeType&&" "+St(s)+" "){for(a=0;r=t[a++];)i.indexOf(" "+r+" ")<0&&(i+=r+" ");s!==(o=St(i))&&n.setAttribute("class",o)}return this},removeClass:function(e){var t,n,i,s,r,a,o,l=0;if(v(e))return this.each((function(t){M(this).removeClass(e.call(this,t,Yt(this)))}));if(!arguments.length)return this.attr("class","");if((t=Ct(e)).length)for(;n=this[l++];)if(s=Yt(n),i=1===n.nodeType&&" "+St(s)+" "){for(a=0;r=t[a++];)for(;-1<i.indexOf(" "+r+" ");)i=i.replace(" "+r+" "," ");s!==(o=St(i))&&n.setAttribute("class",o)}return this},toggleClass:function(e,t){var n=typeof e,i="string"==n||Array.isArray(e);return"boolean"==typeof t&&i?t?this.addClass(e):this.removeClass(e):v(e)?this.each((function(n){M(this).toggleClass(e.call(this,n,Yt(this),t),t)})):this.each((function(){var t,s,r,a;if(i)for(s=0,r=M(this),a=Ct(e);t=a[s++];)r.hasClass(t)?r.removeClass(t):r.addClass(t);else void 0!==e&&"boolean"!=n||((t=Yt(this))&&Q.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",!t&&!1!==e&&Q.get(this,"__className__")||""))}))},hasClass:function(e){for(var t,n=0,i=" "+e+" ";t=this[n++];)if(1===t.nodeType&&-1<(" "+St(Yt(t))+" ").indexOf(i))return!0;return!1}});var Et=/\r/g;function Ot(e){e.stopPropagation()}M.fn.extend({val:function(e){var t,n,i,s=this[0];return arguments.length?(i=v(e),this.each((function(n){var s;1===this.nodeType&&(null==(s=i?e.call(this,n,M(this).val()):e)?s="":"number"==typeof s?s+="":Array.isArray(s)&&(s=M.map(s,(function(e){return null==e?"":e+""}))),(t=M.valHooks[this.type]||M.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,s,"value")||(this.value=s))}))):s?(t=M.valHooks[s.type]||M.valHooks[s.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(s,"value"))?n:"string"==typeof(n=s.value)?n.replace(Et,""):null==n?"":n:void 0}}),M.extend({valHooks:{option:{get:function(e){var t=M.find.attr(e,"value");return null!=t?t:St(M.text(e))}},select:{get:function(e){for(var t,n,i=e.options,s=e.selectedIndex,r="select-one"===e.type,a=r?null:[],o=r?s+1:i.length,l=s<0?o:r?s:0;l<o;l++)if(((n=i[l]).selected||l===s)&&!n.disabled&&(!n.parentNode.disabled||!Y(n.parentNode,"optgroup"))){if(t=M(n).val(),r)return t;a.push(t)}return a},set:function(e,t){for(var n,i,s=e.options,r=M.makeArray(t),a=s.length;a--;)((i=s[a]).selected=-1<M.inArray(M.valHooks.option.get(i),r))&&(n=!0);return n||(e.selectedIndex=-1),r}}}}),M.each(["radio","checkbox"],(function(){M.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<M.inArray(M(e).val(),t)}},g.checkOn||(M.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var At=/^(?:focusinfocus|focusoutblur)$/;M.extend(M.event,{trigger:function(e,t,i,s){var a,o,l,u,d,c,h,p=[i||y],m=f.call(e,"type")?e.type:e,_=f.call(e,"namespace")?e.namespace.split("."):[],g=h=o=i=i||y;if(3!==i.nodeType&&8!==i.nodeType&&!At.test(m+M.event.triggered)&&(-1<m.indexOf(".")&&(m=(_=m.split(".")).shift(),_.sort()),u=m.indexOf(":")<0&&"on"+m,(e=e[M.expando]?e:new M.Event(m,"object"==typeof e&&e)).isTrigger=s?2:3,e.namespace=_.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+_.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:M.makeArray(t,[e]),c=M.event.special[m]||{},s||!c.trigger||!1!==c.trigger.apply(i,t))){if(!s&&!c.noBubble&&!r(i)){for(l=c.delegateType||m,At.test(l+m)||(g=g.parentNode);g;g=g.parentNode)p.push(g),o=g;o===(i.ownerDocument||y)&&p.push(o.defaultView||o.parentWindow||n)}for(a=0;(g=p[a++])&&!e.isPropagationStopped();)h=g,e.type=1<a?l:c.bindType||m,(d=(Q.get(g,"events")||Object.create(null))[e.type]&&Q.get(g,"handle"))&&d.apply(g,t),(d=u&&g[u])&&d.apply&&V(g)&&(e.result=d.apply(g,t),!1===e.result&&e.preventDefault());return e.type=m,s||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(i)||u&&v(i[m])&&!r(i)&&((o=i[u])&&(i[u]=null),M.event.triggered=m,e.isPropagationStopped()&&h.addEventListener(m,Ot),i[m](),e.isPropagationStopped()&&h.removeEventListener(m,Ot),M.event.triggered=void 0,o&&(i[u]=o)),e.result}},simulate:function(e,t,n){var i=M.extend(new M.Event,n,{type:e,isSimulated:!0});M.event.trigger(i,null,t)}}),M.fn.extend({trigger:function(e,t){return this.each((function(){M.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return M.event.trigger(e,t,n,!0)}}),g.focusin||M.each({focus:"focusin",blur:"focusout"},(function(e,t){function n(e){M.event.simulate(t,e.target,M.event.fix(e))}M.event.special[t]={setup:function(){var i=this.ownerDocument||this.document||this,s=Q.access(i,t);s||i.addEventListener(e,n,!0),Q.access(i,t,(s||0)+1)},teardown:function(){var i=this.ownerDocument||this.document||this,s=Q.access(i,t)-1;s?Q.access(i,t,s):(i.removeEventListener(e,n,!0),Q.remove(i,t))}}}));var Ht=n.location,jt={guid:Date.now()},Pt=/\?/;M.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||M.error("Invalid XML: "+e),t};var It=/\[\]$/,Ft=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,Wt=/^(?:input|select|textarea|keygen)/i;M.param=function(e,t){function n(e,t){var n=v(t)?t():t;s[s.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)}var i,s=[];if(null==e)return"";if(Array.isArray(e)||e.jquery&&!M.isPlainObject(e))M.each(e,(function(){n(this.name,this.value)}));else for(i in e)!function e(t,n,i,s){var r;if(Array.isArray(n))M.each(n,(function(n,r){i||It.test(t)?s(t,r):e(t+"["+("object"==typeof r&&null!=r?n:"")+"]",r,i,s)}));else if(i||"object"!==k(n))s(t,n);else for(r in n)e(t+"["+r+"]",n[r],i,s)}(i,e[i],t,n);return s.join("&")},M.fn.extend({serialize:function(){return M.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=M.prop(this,"elements");return e?M.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!M(this).is(":disabled")&&Wt.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!fe.test(e))})).map((function(e,t){var n=M(this).val();return null==n?null:Array.isArray(n)?M.map(n,(function(e){return{name:t.name,value:e.replace(Ft,"\r\n")}})):{name:t.name,value:n.replace(Ft,"\r\n")}})).get()}});var zt=/%20/g,Rt=/#.*$/,$t=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Bt=/^(?:GET|HEAD)$/,Ut=/^\/\//,Kt={},Gt={},Vt="*/".concat("*"),Jt=y.createElement("a");function Qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,s=0,r=t.toLowerCase().match(I)||[];if(v(n))for(;i=r[s++];)"+"===i[0]?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function Xt(e,t,n,i){var s={},r=e===Gt;function a(o){var l;return s[o]=!0,M.each(e[o]||[],(function(e,o){var u=o(t,n,i);return"string"!=typeof u||r||s[u]?r?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)})),l}return a(t.dataTypes[0])||!s["*"]&&a("*")}function Zt(e,t){var n,i,s=M.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((s[n]?e:i=i||{})[n]=t[n]);return i&&M.extend(!0,e,i),e}Jt.href=Ht.href,M.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ht.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Ht.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Vt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":M.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Zt(Zt(e,M.ajaxSettings),t):Zt(M.ajaxSettings,e)},ajaxPrefilter:Qt(Kt),ajaxTransport:Qt(Gt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,s,r,a,o,l,u,d,c,h,p=M.ajaxSetup({},t),f=p.context||p,m=p.context&&(f.nodeType||f.jquery)?M(f):M.event,_=M.Deferred(),g=M.Callbacks("once memory"),v=p.statusCode||{},b={},w={},k="canceled",L={readyState:0,getResponseHeader:function(e){var t;if(u){if(!a)for(a={};t=qt.exec(r);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(e,t){return null==u&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==u&&(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)L.always(e[L.status]);else for(t in e)v[t]=[v[t],e[t]];return this},abort:function(e){var t=e||k;return i&&i.abort(t),D(0,t),this}};if(_.promise(L),p.url=((e||p.url||Ht.href)+"").replace(Ut,Ht.protocol+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(I)||[""],null==p.crossDomain){l=y.createElement("a");try{l.href=p.url,l.href,p.crossDomain=Jt.protocol+"//"+Jt.host!=l.protocol+"//"+l.host}catch(e){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=M.param(p.data,p.traditional)),Xt(Kt,p,t,L),u)return L;for(c in(d=M.event&&p.global)&&0==M.active++&&M.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Bt.test(p.type),s=p.url.replace(Rt,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(zt,"+")):(h=p.url.slice(s.length),p.data&&(p.processData||"string"==typeof p.data)&&(s+=(Pt.test(s)?"&":"?")+p.data,delete p.data),!1===p.cache&&(s=s.replace($t,"$1"),h=(Pt.test(s)?"&":"?")+"_="+jt.guid+++h),p.url=s+h),p.ifModified&&(M.lastModified[s]&&L.setRequestHeader("If-Modified-Since",M.lastModified[s]),M.etag[s]&&L.setRequestHeader("If-None-Match",M.etag[s])),(p.data&&p.hasContent&&!1!==p.contentType||t.contentType)&&L.setRequestHeader("Content-Type",p.contentType),L.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Vt+"; q=0.01":""):p.accepts["*"]),p.headers)L.setRequestHeader(c,p.headers[c]);if(p.beforeSend&&(!1===p.beforeSend.call(f,L,p)||u))return L.abort();if(k="abort",g.add(p.complete),L.done(p.success),L.fail(p.error),i=Xt(Gt,p,t,L)){if(L.readyState=1,d&&m.trigger("ajaxSend",[L,p]),u)return L;p.async&&0<p.timeout&&(o=n.setTimeout((function(){L.abort("timeout")}),p.timeout));try{u=!1,i.send(b,D)}catch(e){if(u)throw e;D(-1,e)}}else D(-1,"No Transport");function D(e,t,a,l){var c,h,y,b,w,k=t;u||(u=!0,o&&n.clearTimeout(o),i=void 0,r=l||"",L.readyState=0<e?4:0,c=200<=e&&e<300||304===e,a&&(b=function(e,t,n){for(var i,s,r,a,o=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(s in o)if(o[s]&&o[s].test(i)){l.unshift(s);break}if(l[0]in n)r=l[0];else{for(s in n){if(!l[0]||e.converters[s+" "+l[0]]){r=s;break}a=a||s}r=r||a}if(r)return r!==l[0]&&l.unshift(r),n[r]}(p,L,a)),!c&&-1<M.inArray("script",p.dataTypes)&&(p.converters["text script"]=function(){}),b=function(e,t,n,i){var s,r,a,o,l,u={},d=e.dataTypes.slice();if(d[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(r=d.shift();r;)if(e.responseFields[r]&&(n[e.responseFields[r]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=r,r=d.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(a=u[l+" "+r]||u["* "+r]))for(s in u)if((o=s.split(" "))[1]===r&&(a=u[l+" "+o[0]]||u["* "+o[0]])){!0===a?a=u[s]:!0!==u[s]&&(r=o[0],d.unshift(o[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+r}}}return{state:"success",data:t}}(p,b,L,c),c?(p.ifModified&&((w=L.getResponseHeader("Last-Modified"))&&(M.lastModified[s]=w),(w=L.getResponseHeader("etag"))&&(M.etag[s]=w)),204===e||"HEAD"===p.type?k="nocontent":304===e?k="notmodified":(k=b.state,h=b.data,c=!(y=b.error))):(y=k,!e&&k||(k="error",e<0&&(e=0))),L.status=e,L.statusText=(t||k)+"",c?_.resolveWith(f,[h,k,L]):_.rejectWith(f,[L,k,y]),L.statusCode(v),v=void 0,d&&m.trigger(c?"ajaxSuccess":"ajaxError",[L,p,c?h:y]),g.fireWith(f,[L,k]),d&&(m.trigger("ajaxComplete",[L,p]),--M.active||M.event.trigger("ajaxStop")))}return L},getJSON:function(e,t,n){return M.get(e,t,n,"json")},getScript:function(e,t){return M.get(e,void 0,t,"script")}}),M.each(["get","post"],(function(e,t){M[t]=function(e,n,i,s){return v(n)&&(s=s||i,i=n,n=void 0),M.ajax(M.extend({url:e,type:t,dataType:s,data:n,success:i},M.isPlainObject(e)&&e))}})),M.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),M._evalUrl=function(e,t,n){return M.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){M.globalEval(e,t,n)}})},M.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=M(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return v(e)?this.each((function(t){M(this).wrapInner(e.call(this,t))})):this.each((function(){var t=M(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=v(e);return this.each((function(n){M(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){M(this).replaceWith(this.childNodes)})),this}}),M.expr.pseudos.hidden=function(e){return!M.expr.pseudos.visible(e)},M.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},M.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var en={0:200,1223:204},tn=M.ajaxSettings.xhr();g.cors=!!tn&&"withCredentials"in tn,g.ajax=tn=!!tn,M.ajaxTransport((function(e){var t,i;if(g.cors||tn&&!e.crossDomain)return{send:function(s,r){var a,o=e.xhr();if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)o[a]=e.xhrFields[a];for(a in e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||s["X-Requested-With"]||(s["X-Requested-With"]="XMLHttpRequest"),s)o.setRequestHeader(a,s[a]);t=function(e){return function(){t&&(t=i=o.onload=o.onerror=o.onabort=o.ontimeout=o.onreadystatechange=null,"abort"===e?o.abort():"error"===e?"number"!=typeof o.status?r(0,"error"):r(o.status,o.statusText):r(en[o.status]||o.status,o.statusText,"text"!==(o.responseType||"text")||"string"!=typeof o.responseText?{binary:o.response}:{text:o.responseText},o.getAllResponseHeaders()))}},o.onload=t(),i=o.onerror=o.ontimeout=t("error"),void 0!==o.onabort?o.onabort=i:o.onreadystatechange=function(){4===o.readyState&&n.setTimeout((function(){t&&i()}))},t=t("abort");try{o.send(e.hasContent&&e.data||null)}catch(s){if(t)throw s}},abort:function(){t&&t()}}})),M.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),M.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return M.globalEval(e),e}}}),M.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),M.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,s){t=M("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&s("error"===e.type?404:200,e.type)}),y.head.appendChild(t[0])},abort:function(){n&&n()}}}));var nn,sn=[],rn=/(=)\?(?=&|$)|\?\?/;M.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=sn.pop()||M.expando+"_"+jt.guid++;return this[e]=!0,e}}),M.ajaxPrefilter("json jsonp",(function(e,t,i){var s,r,a,o=!1!==e.jsonp&&(rn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&rn.test(e.data)&&"data");if(o||"jsonp"===e.dataTypes[0])return s=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,o?e[o]=e[o].replace(rn,"$1"+s):!1!==e.jsonp&&(e.url+=(Pt.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return a||M.error(s+" was not called"),a[0]},e.dataTypes[0]="json",r=n[s],n[s]=function(){a=arguments},i.always((function(){void 0===r?M(n).removeProp(s):n[s]=r,e[s]&&(e.jsonpCallback=t.jsonpCallback,sn.push(s)),a&&v(r)&&r(a[0]),a=r=void 0})),"script"})),g.createHTMLDocument=((nn=y.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===nn.childNodes.length),M.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(g.createHTMLDocument?((i=(t=y.implementation.createHTMLDocument("")).createElement("base")).href=y.location.href,t.head.appendChild(i)):t=y),r=!n&&[],(s=C.exec(e))?[t.createElement(s[1])]:(s=we([e],t,r),r&&r.length&&M(r).remove(),M.merge([],s.childNodes)));var i,s,r},M.fn.load=function(e,t,n){var i,s,r,a=this,o=e.indexOf(" ");return-1<o&&(i=St(e.slice(o)),e=e.slice(0,o)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(s="POST"),0<a.length&&M.ajax({url:e,type:s||"GET",dataType:"html",data:t}).done((function(e){r=arguments,a.html(i?M("<div>").append(M.parseHTML(e)).find(i):e)})).always(n&&function(e,t){a.each((function(){n.apply(this,r||[e.responseText,t,e])}))}),this},M.expr.pseudos.animated=function(e){return M.grep(M.timers,(function(t){return e===t.elem})).length},M.offset={setOffset:function(e,t,n){var i,s,r,a,o,l,u=M.css(e,"position"),d=M(e),c={};"static"===u&&(e.style.position="relative"),o=d.offset(),r=M.css(e,"top"),l=M.css(e,"left"),s=("absolute"===u||"fixed"===u)&&-1<(r+l).indexOf("auto")?(a=(i=d.position()).top,i.left):(a=parseFloat(r)||0,parseFloat(l)||0),v(t)&&(t=t.call(e,n,M.extend({},o))),null!=t.top&&(c.top=t.top-o.top+a),null!=t.left&&(c.left=t.left-o.left+s),"using"in t?t.using.call(e,c):("number"==typeof c.top&&(c.top+="px"),"number"==typeof c.left&&(c.left+="px"),d.css(c))}},M.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){M.offset.setOffset(this,e,t)}));var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],s={top:0,left:0};if("fixed"===M.css(i,"position"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===M.css(e,"position");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((s=M(e).offset()).top+=M.css(e,"borderTopWidth",!0),s.left+=M.css(e,"borderLeftWidth",!0))}return{top:t.top-s.top-M.css(i,"marginTop",!0),left:t.left-s.left-M.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&"static"===M.css(e,"position");)e=e.offsetParent;return e||re}))}}),M.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n="pageYOffset"===t;M.fn[e]=function(i){return q(this,(function(e,i,s){var a;return r(e)?a=e:9===e.nodeType&&(a=e.defaultView),void 0===s?a?a[t]:e[i]:void(a?a.scrollTo(n?a.pageXOffset:s,n?s:a.pageYOffset):e[i]=s)}),e,i,arguments.length)}})),M.each(["top","left"],(function(e,t){M.cssHooks[t]=et(g.pixelPosition,(function(e,n){if(n)return n=Ze(e,t),Ge.test(n)?M(e).position()[t]+"px":n}))})),M.each({Height:"height",Width:"width"},(function(e,t){M.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,i){M.fn[i]=function(s,a){var o=arguments.length&&(n||"boolean"!=typeof s),l=n||(!0===s||!0===a?"margin":"border");return q(this,(function(t,n,s){var a;return r(t)?0===i.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(a=t.documentElement,Math.max(t.body["scroll"+e],a["scroll"+e],t.body["offset"+e],a["offset"+e],a["client"+e])):void 0===s?M.css(t,n,l):M.style(t,n,s,l)}),t,o?s:void 0,o)}}))})),M.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(e,t){M.fn[t]=function(e){return this.on(t,e)}})),M.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),M.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(e,t){M.fn[t]=function(e,n){return 0<arguments.length?this.on(t,null,e,n):this.trigger(t)}}));var an=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;M.proxy=function(e,t){var n,i,s;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return i=l.call(arguments,2),(s=function(){return e.apply(t||this,i.concat(l.call(arguments)))}).guid=e.guid=e.guid||M.guid++,s},M.holdReady=function(e){e?M.readyWait++:M.ready(!0)},M.isArray=Array.isArray,M.parseJSON=JSON.parse,M.nodeName=Y,M.isFunction=v,M.isWindow=r,M.camelCase=G,M.type=k,M.now=Date.now,M.isNumeric=function(e){var t=M.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},M.trim=function(e){return null==e?"":(e+"").replace(an,"")},void 0===(i=function(){return M}.apply(t,[]))||(e.exports=i);var on=n.jQuery,ln=n.$;return M.noConflict=function(e){return n.$===M&&(n.$=ln),e&&n.jQuery===M&&(n.jQuery=on),M},void 0===s&&(n.jQuery=n.$=M),M}))},function(e,t,n){(function(e){void 0===e.migrateMute&&void 0!==window.prestashop&&void 0!==window.prestashop.debug&&(e.migrateMute=!window.prestashop.debug,e.migrateTrace=!1)}).call(this,n(0))},function(e,t,n){var i,s;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(){"use strict";i=[n(0)],void 0===(s=function(e){return function(e,t){function n(t){return function(e,t){var n,i=/^(\d+)\.(\d+)\.(\d+)/,s=i.exec(e)||[],r=i.exec(t)||[];for(n=1;n<=3;n++){if(+s[n]>+r[n])return 1;if(+s[n]<+r[n])return-1}return 0}(e.fn.jquery,t)>=0}e.migrateVersion="3.3.2",t.console&&t.console.log&&(e&&n("3.0.0")||t.console.log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),e.migrateWarnings&&t.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),t.console.log("JQMIGRATE: Migrate is installed"+(e.migrateMute?"":" with logging active")+", version "+e.migrateVersion));var i={};function s(n){var s=t.console;e.migrateDeduplicateWarnings&&i[n]||(i[n]=!0,e.migrateWarnings.push(n),s&&s.warn&&!e.migrateMute&&(s.warn("JQMIGRATE: "+n),e.migrateTrace&&s.trace&&s.trace()))}function a(e,t,n,i){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return s(i),n},set:function(e){s(i),n=e}})}function o(e,t,n,i){e[t]=function(){return s(i),n.apply(this,arguments)}}e.migrateDeduplicateWarnings=!0,e.migrateWarnings=[],void 0===e.migrateTrace&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===t.document.compatMode&&s("jQuery is not compatible with Quirks Mode");var l,u={},d=e.fn.init,c=e.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,p=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,f=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;for(l in e.fn.init=function(e){var t=Array.prototype.slice.call(arguments);return"string"==typeof e&&"#"===e&&(s("jQuery( '#' ) is not a valid selector"),t[0]=[]),d.apply(this,t)},e.fn.init.prototype=e.fn,e.find=function(e){var n=Array.prototype.slice.call(arguments);if("string"==typeof e&&h.test(e))try{t.document.querySelector(e)}catch(i){e=e.replace(p,(function(e,t,n,i){return"["+t+n+'"'+i+'"]'}));try{t.document.querySelector(e),s("Attribute selector with '#' must be quoted: "+n[0]),n[0]=e}catch(e){s("Attribute selector with '#' was not fixed: "+n[0])}}return c.apply(this,n)},c)Object.prototype.hasOwnProperty.call(c,l)&&(e.find[l]=c[l]);if(o(e.fn,"size",(function(){return this.length}),"jQuery.fn.size() is deprecated and removed; use the .length property"),o(e,"parseJSON",(function(){return JSON.parse.apply(null,arguments)}),"jQuery.parseJSON is deprecated; use JSON.parse"),o(e,"holdReady",e.holdReady,"jQuery.holdReady is deprecated"),o(e,"unique",e.uniqueSort,"jQuery.unique is deprecated; use jQuery.uniqueSort"),a(e.expr,"filters",e.expr.pseudos,"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),a(e.expr,":",e.expr.pseudos,"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),n("3.1.1")&&o(e,"trim",(function(e){return null==e?"":(e+"").replace(f,"")}),"jQuery.trim is deprecated; use String.prototype.trim"),n("3.2.0")&&(o(e,"nodeName",(function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}),"jQuery.nodeName is deprecated"),o(e,"isArray",Array.isArray,"jQuery.isArray is deprecated; use Array.isArray")),n("3.3.0")&&(o(e,"isNumeric",(function(e){var t=r(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))}),"jQuery.isNumeric() is deprecated"),e.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(e,t){u["[object "+t+"]"]=t.toLowerCase()})),o(e,"type",(function(e){return null==e?e+"":"object"===r(e)||"function"==typeof e?u[Object.prototype.toString.call(e)]||"object":r(e)}),"jQuery.type is deprecated"),o(e,"isFunction",(function(e){return"function"==typeof e}),"jQuery.isFunction() is deprecated"),o(e,"isWindow",(function(e){return null!=e&&e===e.window}),"jQuery.isWindow() is deprecated")),e.ajax){var m=e.ajax,_=/(=)\?(?=&|$)|\?\?/;e.ajax=function(){var e=m.apply(this,arguments);return e.promise&&(o(e,"success",e.done,"jQXHR.success is deprecated and removed"),o(e,"error",e.fail,"jQXHR.error is deprecated and removed"),o(e,"complete",e.always,"jQXHR.complete is deprecated and removed")),e},n("4.0.0")||e.ajaxPrefilter("+json",(function(e){!1!==e.jsonp&&(_.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&_.test(e.data))&&s("JSON-to-JSONP auto-promotion is deprecated")}))}var g=e.fn.removeAttr,v=e.fn.toggleClass,y=/\S+/g;function b(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}e.fn.removeAttr=function(t){var n=this;return e.each(t.match(y),(function(t,i){e.expr.match.bool.test(i)&&(s("jQuery.fn.removeAttr no longer sets boolean properties: "+i),n.prop(i,!1))})),g.apply(this,arguments)},e.fn.toggleClass=function(t){return void 0!==t&&"boolean"!=typeof t?v.apply(this,arguments):(s("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each((function(){var n=this.getAttribute&&this.getAttribute("class")||"";n&&e.data(this,"__className__",n),this.setAttribute&&this.setAttribute("class",n||!1===t?"":e.data(this,"__className__")||"")})))};var w,k=!1,M=/^[a-z]/,L=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;function D(e){return M.test(e)&&L.test(e[0].toUpperCase()+e.slice(1))}e.swap&&e.each(["height","width","reliableMarginRight"],(function(t,n){var i=e.cssHooks[n]&&e.cssHooks[n].get;i&&(e.cssHooks[n].get=function(){var e;return k=!0,e=i.apply(this,arguments),k=!1,e})})),e.swap=function(e,t,n,i){var r,a,o={};for(a in k||s("jQuery.swap() is undocumented and deprecated"),t)o[a]=e.style[a],e.style[a]=t[a];for(a in r=n.apply(e,i||[]),t)e.style[a]=o[a];return r},n("3.4.0")&&"undefined"!=typeof Proxy&&(e.cssProps=new Proxy(e.cssProps||{},{set:function(){return s("JQMIGRATE: jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),e.cssNumber||(e.cssNumber={}),w=e.fn.css,e.fn.css=function(t,n){var i,a=this;return t&&"object"===r(t)&&!Array.isArray(t)?(e.each(t,(function(t,n){e.fn.css.call(a,t,n)})),this):("number"==typeof n&&(D(i=b(t))||e.cssNumber[i]||s('Number-typed values are deprecated for jQuery.fn.css( "'+t+'", value )')),w.apply(this,arguments))};var T=e.data;if(e.data=function(t,n,i){var a,o,l;if(n&&"object"===r(n)&&2===arguments.length){for(l in a=e.hasData(t)&&T.call(this,t),o={},n)l!==b(l)?(s("jQuery.data() always sets/gets camelCased names: "+l),a[l]=n[l]):o[l]=n[l];return T.call(this,t,o),n}return n&&"string"==typeof n&&n!==b(n)&&(a=e.hasData(t)&&T.call(this,t))&&n in a?(s("jQuery.data() always sets/gets camelCased names: "+n),arguments.length>2&&(a[n]=i),a[n]):T.apply(this,arguments)},e.fx){var x,S,Y=e.Tween.prototype.run,C=function(e){return e};e.Tween.prototype.run=function(){e.easing[this.easing].length>1&&(s("'jQuery.easing."+this.easing.toString()+"' should use only one argument"),e.easing[this.easing]=C),Y.apply(this,arguments)},x=e.fx.interval||13,S="jQuery.fx.interval is deprecated",t.requestAnimationFrame&&Object.defineProperty(e.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return t.document.hidden||s(S),x},set:function(e){s(S),x=e}})}var E=e.fn.load,O=e.event.add,A=e.event.fix;e.event.props=[],e.event.fixHooks={},a(e.event.props,"concat",e.event.props.concat,"jQuery.event.props.concat() is deprecated and removed"),e.event.fix=function(t){var n,i=t.type,r=this.fixHooks[i],a=e.event.props;if(a.length)for(s("jQuery.event.props are deprecated and removed: "+a.join());a.length;)e.event.addProp(a.pop());if(r&&!r._migrated_&&(r._migrated_=!0,s("jQuery.event.fixHooks are deprecated and removed: "+i),(a=r.props)&&a.length))for(;a.length;)e.event.addProp(a.pop());return n=A.call(this,t),r&&r.filter?r.filter(n,t):n},e.event.add=function(e,n){return e===t&&"load"===n&&"complete"===t.document.readyState&&s("jQuery(window).on('load'...) called after load event occurred"),O.apply(this,arguments)},e.each(["load","unload","error"],(function(t,n){e.fn[n]=function(){var e=Array.prototype.slice.call(arguments,0);return"load"===n&&"string"==typeof e[0]?E.apply(this,e):(s("jQuery.fn."+n+"() is deprecated"),e.splice(0,0,n),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))}})),e.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(t,n){e.fn[n]=function(e,t){return s("jQuery.fn."+n+"() event shorthand is deprecated"),arguments.length>0?this.on(n,null,e,t):this.trigger(n)}})),e((function(){e(t.document).triggerHandler("ready")})),e.event.special.ready={setup:function(){this===t.document&&s("'ready' event is deprecated")}},e.fn.extend({bind:function(e,t,n){return s("jQuery.fn.bind() is deprecated"),this.on(e,null,t,n)},unbind:function(e,t){return s("jQuery.fn.unbind() is deprecated"),this.off(e,null,t)},delegate:function(e,t,n,i){return s("jQuery.fn.delegate() is deprecated"),this.on(t,e,n,i)},undelegate:function(e,t,n){return s("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return s("jQuery.fn.hover() is deprecated"),this.on("mouseenter",e).on("mouseleave",t||e)}});var H=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,j=e.htmlPrefilter,P=function(e){var n=t.document.implementation.createHTMLDocument("");return n.body.innerHTML=e,n.body&&n.body.innerHTML},I=function(e){var t=e.replace(H,"<$1></$2>");t!==e&&P(e)!==P(t)&&s("HTML tags must be properly nested and closed: "+e)};e.UNSAFE_restoreLegacyHtmlPrefilter=function(){e.htmlPrefilter=function(e){return I(e),e.replace(H,"<$1></$2>")}},e.htmlPrefilter=function(e){return I(e),j(e)};var F=e.fn.offset;if(e.fn.offset=function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?F.apply(this,arguments):(s("jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},e.ajax){var N=e.param;e.param=function(t,n){var i=e.ajaxSettings&&e.ajaxSettings.traditional;return void 0===n&&i&&(s("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),n=i),N.call(this,t,n)}}var W=e.fn.andSelf||e.fn.addBack;if(e.fn.andSelf=function(){return s("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),W.apply(this,arguments)},e.Deferred){var z=e.Deferred,R=[["resolve","done",e.Callbacks("once memory"),e.Callbacks("once memory"),"resolved"],["reject","fail",e.Callbacks("once memory"),e.Callbacks("once memory"),"rejected"],["notify","progress",e.Callbacks("memory"),e.Callbacks("memory")]];e.Deferred=function(t){var n=z(),i=n.promise();return n.pipe=i.pipe=function(){var t=arguments;return s("deferred.pipe() is deprecated"),e.Deferred((function(s){e.each(R,(function(e,r){var a="function"==typeof t[e]&&t[e];n[r[1]]((function(){var e=a&&a.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(s.resolve).fail(s.reject).progress(s.notify):s[r[0]+"With"](this===i?s.promise():this,a?[e]:arguments)}))})),t=null})).promise()},t&&t.call(n,n),n},e.Deferred.exceptionHook=z.exceptionHook}return e}(e,window)}.apply(t,i))||(e.exports=s)}()},function(e,t,n){(function(t){e.exports=t.tether=n(13)}).call(this,n(1))},function(e,t,n){(function(t){e.exports=t.Tether=n(14)}).call(this,n(1))},function(e,t,n){var i,s;void 0===(s="function"==typeof(i=function(e,t,n){"use strict";var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=void 0;void 0===r&&(r={modules:[]});var a=null;function o(e){var t=e.getBoundingClientRect(),n={};for(var i in t)n[i]=t[i];if(e.ownerDocument!==document){var s=e.ownerDocument.defaultView.frameElement;if(s){var r=o(s);n.top+=r.top,n.bottom+=r.top,n.left+=r.left,n.right+=r.left}}return n}function l(e){var t=(getComputedStyle(e)||{}).position,n=[];if("fixed"===t)return[e];for(var i=e;(i=i.parentNode)&&i&&1===i.nodeType;){var s=void 0;try{s=getComputedStyle(i)}catch(e){}if(null==s)return n.push(i),n;var r=s,a=r.overflow,o=r.overflowX,l=r.overflowY;/(auto|scroll|overlay)/.test(a+l+o)&&("absolute"!==t||["relative","absolute","fixed"].indexOf(s.position)>=0)&&n.push(i)}return n.push(e.ownerDocument.body),e.ownerDocument!==document&&n.push(e.ownerDocument.defaultView),n}var u=function(){var e=0;return function(){return++e}}(),d={};function c(){a&&document.body.removeChild(a),a=null}function h(e){var t=void 0;e===document?(t=document,e=document.documentElement):t=e.ownerDocument;var n=t.documentElement,i=o(e),s=function(){var e=a;e&&document.body.contains(e)||((e=document.createElement("div")).setAttribute("data-tether-id",u()),_(e.style,{top:0,left:0,position:"absolute"}),document.body.appendChild(e),a=e);var t=e.getAttribute("data-tether-id");return void 0===d[t]&&(d[t]=o(e),L((function(){delete d[t]}))),d[t]}();return i.top-=s.top,i.left-=s.left,void 0===i.width&&(i.width=document.body.scrollWidth-i.left-i.right),void 0===i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-n.clientTop,i.left=i.left-n.clientLeft,i.right=t.body.clientWidth-i.width-i.left,i.bottom=t.body.clientHeight-i.height-i.top,i}function p(e){return e.offsetParent||document.documentElement}var f=null;function m(){if(f)return f;var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var t=document.createElement("div");_(t.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),t.appendChild(e),document.body.appendChild(t);var n=e.offsetWidth;t.style.overflow="scroll";var i=e.offsetWidth;n===i&&(i=t.clientWidth),document.body.removeChild(t);var s=n-i;return f={width:s,height:s}}function _(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=[];return Array.prototype.push.apply(t,arguments),t.slice(1).forEach((function(t){if(t)for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])})),e}function g(e,t){if(void 0!==e.classList)t.split(" ").forEach((function(t){t.trim()&&e.classList.remove(t)}));else{var n=new RegExp("(^| )"+t.split(" ").join("|")+"( |$)","gi"),i=b(e).replace(n," ");w(e,i)}}function v(e,t){if(void 0!==e.classList)t.split(" ").forEach((function(t){t.trim()&&e.classList.add(t)}));else{g(e,t);var n=b(e)+" "+t;w(e,n)}}function y(e,t){if(void 0!==e.classList)return e.classList.contains(t);var n=b(e);return new RegExp("(^| )"+t+"( |$)","gi").test(n)}function b(e){return e.className instanceof e.ownerDocument.defaultView.SVGAnimatedString?e.className.baseVal:e.className}function w(e,t){e.setAttribute("class",t)}function k(e,t,n){n.forEach((function(n){-1===t.indexOf(n)&&y(e,n)&&g(e,n)})),t.forEach((function(t){y(e,t)||v(e,t)}))}var M=[],L=function(e){M.push(e)},D=function(){for(var e=void 0;e=M.pop();)e()},T=function(){function e(){s(this,e)}return i(e,[{key:"on",value:function(e,t,n){var i=!(arguments.length<=3||void 0===arguments[3])&&arguments[3];void 0===this.bindings&&(this.bindings={}),void 0===this.bindings[e]&&(this.bindings[e]=[]),this.bindings[e].push({handler:t,ctx:n,once:i})}},{key:"once",value:function(e,t,n){this.on(e,t,n,!0)}},{key:"off",value:function(e,t){if(void 0!==this.bindings&&void 0!==this.bindings[e])if(void 0===t)delete this.bindings[e];else for(var n=0;n<this.bindings[e].length;)this.bindings[e][n].handler===t?this.bindings[e].splice(n,1):++n}},{key:"trigger",value:function(e){if(void 0!==this.bindings&&this.bindings[e]){for(var t=0,n=arguments.length,i=Array(n>1?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];for(;t<this.bindings[e].length;){var r=this.bindings[e][t],a=r.handler,o=r.ctx,l=r.once,u=o;void 0===u&&(u=this),a.apply(u,i),l?this.bindings[e].splice(t,1):++t}}}}]),e}();r.Utils={getActualBoundingClientRect:o,getScrollParents:l,getBounds:h,getOffsetParent:p,extend:_,addClass:v,removeClass:g,hasClass:y,updateClasses:k,defer:L,flush:D,uniqueId:u,Evented:T,getScrollBarSize:m,removeUtilElements:c};var x=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{!i&&o.return&&o.return()}finally{if(s)throw r}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}if(i=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),void 0===r)throw new Error("You must include the utils.js file before tether.js");var l=(B=r.Utils).getScrollParents,p=(h=B.getBounds,B.getOffsetParent),v=(_=B.extend,B.addClass),g=B.removeClass,m=(k=B.updateClasses,L=B.defer,D=B.flush,B.getScrollBarSize),c=B.removeUtilElements;function S(e,t){var n=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return e+n>=t&&t>=e-n}var Y=function(){if("undefined"==typeof document)return"";for(var e=document.createElement("div"),t=["transform","WebkitTransform","OTransform","MozTransform","msTransform"],n=0;n<t.length;++n){var i=t[n];if(void 0!==e.style[i])return i}}(),C=[],E=function(){C.forEach((function(e){e.position(!1)})),D()};function O(){return"object"==typeof performance&&"function"==typeof performance.now?performance.now():+new Date}!function(){var e=null,t=null,n=null,i=function i(){if(void 0!==t&&t>16)return t=Math.min(t-16,250),void(n=setTimeout(i,250));void 0!==e&&O()-e<10||(null!=n&&(clearTimeout(n),n=null),e=O(),E(),t=O()-e)};"undefined"!=typeof window&&void 0!==window.addEventListener&&["resize","scroll","touchmove"].forEach((function(e){window.addEventListener(e,i)}))}();var A={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},j={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},P=function(e,t){var n=e.left,i=e.top;return"auto"===n&&(n=A[t.left]),"auto"===i&&(i=H[t.top]),{left:n,top:i}},I=function(e){var t=e.left,n=e.top;return void 0!==j[e.left]&&(t=j[e.left]),void 0!==j[e.top]&&(n=j[e.top]),{left:t,top:n}};function F(){for(var e={top:0,left:0},t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach((function(t){var n=t.top,i=t.left;"string"==typeof n&&(n=parseFloat(n,10)),"string"==typeof i&&(i=parseFloat(i,10)),e.top+=n,e.left+=i})),e}function N(e,t){return"string"==typeof e.left&&-1!==e.left.indexOf("%")&&(e.left=parseFloat(e.left,10)/100*t.width),"string"==typeof e.top&&-1!==e.top.indexOf("%")&&(e.top=parseFloat(e.top,10)/100*t.height),e}var W=function(e){var t=e.split(" "),n=x(t,2);return{top:n[0],left:n[1]}},z=W,R=function(e){function t(e){var n=this;s(this,t),function(e,t,n){for(var i=!0;i;){var s=e,r=t,a=n;i=!1,null===s&&(s=Function.prototype);var o=Object.getOwnPropertyDescriptor(s,r);if(void 0!==o){if("value"in o)return o.value;var l=o.get;if(void 0===l)return;return l.call(a)}var u=Object.getPrototypeOf(s);if(null===u)return;e=u,t=r,n=a,i=!0,o=u=void 0}}(Object.getPrototypeOf(t.prototype),"constructor",this).call(this),this.position=this.position.bind(this),C.push(this),this.history=[],this.setOptions(e,!1),r.modules.forEach((function(e){void 0!==e.initialize&&e.initialize.call(n)})),this.position()}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"getClass",value:function(){var e=arguments.length<=0||void 0===arguments[0]?"":arguments[0],t=this.options.classes;return void 0!==t&&t[e]?this.options.classes[e]:this.options.classPrefix?this.options.classPrefix+"-"+e:e}},{key:"setOptions",value:function(e){var t=this,n=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=_(i,e);var s=this.options,r=s.element,a=s.target,o=s.targetModifier;if(this.element=r,this.target=a,this.targetModifier=o,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach((function(e){if(void 0===t[e])throw new Error("Tether Error: Both element and target must be defined");void 0!==t[e].jquery?t[e]=t[e][0]:"string"==typeof t[e]&&(t[e]=document.querySelector(t[e]))})),v(this.element,this.getClass("element")),!1!==this.options.addTargetClasses&&v(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=z(this.options.targetAttachment),this.attachment=z(this.options.attachment),this.offset=W(this.options.offset),this.targetOffset=W(this.options.targetOffset),void 0!==this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=l(this.target),!1!==this.options.enabled&&this.enable(n)}},{key:"getTargetBounds",value:function(){if(void 0===this.targetModifier)return h(this.target);if("visible"===this.targetModifier)return this.target===document.body?{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth}:((r={height:(e=h(this.target)).height,width:e.width,top:e.top,left:e.left}).height=Math.min(r.height,e.height-(pageYOffset-e.top)),r.height=Math.min(r.height,e.height-(e.top+e.height-(pageYOffset+innerHeight))),r.height=Math.min(innerHeight,r.height),r.height-=2,r.width=Math.min(r.width,e.width-(pageXOffset-e.left)),r.width=Math.min(r.width,e.width-(e.left+e.width-(pageXOffset+innerWidth))),r.width=Math.min(innerWidth,r.width),r.width-=2,r.top<pageYOffset&&(r.top=pageYOffset),r.left<pageXOffset&&(r.left=pageXOffset),r);if("scroll-handle"===this.targetModifier){var e=void 0,t=this.target;t===document.body?(t=document.documentElement,e={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):e=h(t);var n=getComputedStyle(t),i=0;(t.scrollWidth>t.clientWidth||[n.overflow,n.overflowX].indexOf("scroll")>=0||this.target!==document.body)&&(i=15);var s=e.height-parseFloat(n.borderTopWidth)-parseFloat(n.borderBottomWidth)-i,r={width:15,height:.975*s*(s/t.scrollHeight),left:e.left+e.width-parseFloat(n.borderLeftWidth)-15},a=0;s<408&&this.target===document.body&&(a=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(r.height=Math.max(r.height,24));var o=this.target.scrollTop/(t.scrollHeight-s);return r.top=o*(s-r.height-a)+e.top+parseFloat(n.borderTopWidth),this.target===document.body&&(r.height=Math.max(r.height,24)),r}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(e,t){return void 0===this._cache&&(this._cache={}),void 0===this._cache[e]&&(this._cache[e]=t.call(this)),this._cache[e]}},{key:"enable",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]||arguments[0];!1!==this.options.addTargetClasses&&v(this.target,this.getClass("enabled")),v(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach((function(t){t!==e.target.ownerDocument&&t.addEventListener("scroll",e.position)})),t&&this.position()}},{key:"disable",value:function(){var e=this;g(this.target,this.getClass("enabled")),g(this.element,this.getClass("enabled")),this.enabled=!1,void 0!==this.scrollParents&&this.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.position)}))}},{key:"destroy",value:function(){var e=this;this.disable(),C.forEach((function(t,n){t===e&&C.splice(n,1)})),0===C.length&&c()}},{key:"updateAttachClasses",value:function(e,t){var n=this;e=e||this.attachment,t=t||this.targetAttachment,void 0!==this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),void 0===this._addAttachClasses&&(this._addAttachClasses=[]);var i=this._addAttachClasses;e.top&&i.push(this.getClass("element-attached")+"-"+e.top),e.left&&i.push(this.getClass("element-attached")+"-"+e.left),t.top&&i.push(this.getClass("target-attached")+"-"+t.top),t.left&&i.push(this.getClass("target-attached")+"-"+t.left);var s=[];["left","top","bottom","right","middle","center"].forEach((function(e){s.push(n.getClass("element-attached")+"-"+e),s.push(n.getClass("target-attached")+"-"+e)})),L((function(){void 0!==n._addAttachClasses&&(k(n.element,n._addAttachClasses,s),!1!==n.options.addTargetClasses&&k(n.target,n._addAttachClasses,s),delete n._addAttachClasses)}))}},{key:"position",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var n=P(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,n);var i=this.cache("element-bounds",(function(){return h(e.element)})),s=i.width,a=i.height;if(0===s&&0===a&&void 0!==this.lastSize){var o=this.lastSize;s=o.width,a=o.height}else this.lastSize={width:s,height:a};var l=this.cache("target-bounds",(function(){return e.getTargetBounds()})),u=l,d=N(I(this.attachment),{width:s,height:a}),c=N(I(n),u),f=N(this.offset,{width:s,height:a}),_=N(this.targetOffset,u);d=F(d,f),c=F(c,_);for(var g=l.left+c.left-d.left,v=l.top+c.top-d.top,y=0;y<r.modules.length;++y){var b=r.modules[y],w=b.position.call(this,{left:g,top:v,targetAttachment:n,targetPos:l,elementPos:i,offset:d,targetOffset:c,manualOffset:f,manualTargetOffset:_,scrollbarSize:T,attachment:this.attachment});if(!1===w)return!1;void 0!==w&&"object"==typeof w&&(v=w.top,g=w.left)}var k={page:{top:v,left:g},viewport:{top:v-pageYOffset,bottom:pageYOffset-v-a+innerHeight,left:g-pageXOffset,right:pageXOffset-g-s+innerWidth}},M=this.target.ownerDocument,L=M.defaultView,T=void 0;return L.innerHeight>M.documentElement.clientHeight&&(T=this.cache("scrollbar-size",m),k.viewport.bottom-=T.height),L.innerWidth>M.documentElement.clientWidth&&(T=this.cache("scrollbar-size",m),k.viewport.right-=T.width),-1!==["","static"].indexOf(M.body.style.position)&&-1!==["","static"].indexOf(M.body.parentElement.style.position)||(k.page.bottom=M.body.scrollHeight-v-a,k.page.right=M.body.scrollWidth-g-s),void 0!==this.options.optimizations&&!1!==this.options.optimizations.moveElement&&void 0===this.targetModifier&&function(){var t=e.cache("target-offsetparent",(function(){return p(e.target)})),n=e.cache("target-offsetparent-bounds",(function(){return h(t)})),i=getComputedStyle(t),s=n,r={};if(["Top","Left","Bottom","Right"].forEach((function(e){r[e.toLowerCase()]=parseFloat(i["border"+e+"Width"])})),n.right=M.body.scrollWidth-n.left-s.width+r.right,n.bottom=M.body.scrollHeight-n.top-s.height+r.bottom,k.page.top>=n.top+r.top&&k.page.bottom>=n.bottom&&k.page.left>=n.left+r.left&&k.page.right>=n.right){var a=t.scrollTop,o=t.scrollLeft;k.offset={top:k.page.top-n.top+a-r.top,left:k.page.left-n.left+o-r.left}}}(),this.move(k),this.history.unshift(k),this.history.length>3&&this.history.pop(),t&&D(),!0}}},{key:"move",value:function(e){var t=this;if(void 0!==this.element.parentNode){var n={};for(var i in e)for(var s in n[i]={},e[i]){for(var r=!1,a=0;a<this.history.length;++a){var o=this.history[a];if(void 0!==o[i]&&!S(o[i][s],e[i][s])){r=!0;break}}r||(n[i][s]=!0)}var l={top:"",left:"",right:"",bottom:""},u=function(e,n){if(!1!==(void 0!==t.options.optimizations?t.options.optimizations.gpu:null)){var i=void 0,s=void 0;e.top?(l.top=0,i=n.top):(l.bottom=0,i=-n.bottom),e.left?(l.left=0,s=n.left):(l.right=0,s=-n.right),window.matchMedia&&(window.matchMedia("only screen and (min-resolution: 1.3dppx)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3)").matches||(s=Math.round(s),i=Math.round(i))),l[Y]="translateX("+s+"px) translateY("+i+"px)","msTransform"!==Y&&(l[Y]+=" translateZ(0)")}else e.top?l.top=n.top+"px":l.bottom=n.bottom+"px",e.left?l.left=n.left+"px":l.right=n.right+"px"},d=!1;if((n.page.top||n.page.bottom)&&(n.page.left||n.page.right)?(l.position="absolute",u(n.page,e.page)):(n.viewport.top||n.viewport.bottom)&&(n.viewport.left||n.viewport.right)?(l.position="fixed",u(n.viewport,e.viewport)):void 0!==n.offset&&n.offset.top&&n.offset.left?function(){l.position="absolute";var i=t.cache("target-offsetparent",(function(){return p(t.target)}));p(t.element)!==i&&L((function(){t.element.parentNode.removeChild(t.element),i.appendChild(t.element)})),u(n.offset,e.offset),d=!0}():(l.position="absolute",u({top:!0,left:!0},e.page)),!d)if(this.options.bodyElement)this.element.parentNode!==this.options.bodyElement&&this.options.bodyElement.appendChild(this.element);else{for(var c=!0,h=this.element.parentNode;h&&1===h.nodeType&&"BODY"!==h.tagName;){if("static"!==getComputedStyle(h).position){c=!1;break}h=h.parentNode}c||(this.element.parentNode.removeChild(this.element),this.element.ownerDocument.body.appendChild(this.element))}var f={},m=!1;for(var s in l){var g=l[s];this.element.style[s]!==g&&(m=!0,f[s]=g)}m&&L((function(){_(t.element.style,f),t.trigger("repositioned")}))}}}]),t}(T);R.modules=[],r.position=E;var $=_(R,r),_=(x=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{!i&&o.return&&o.return()}finally{if(s)throw r}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},h=(B=r.Utils).getBounds,B.extend),q=(k=B.updateClasses,L=B.defer,["left","top","right","bottom"]);r.modules.push({position:function(e){var t=this,n=e.top,i=e.left,s=e.targetAttachment;if(!this.options.constraints)return!0;var r=this.cache("element-bounds",(function(){return h(t.element)})),a=r.height,o=r.width;if(0===o&&0===a&&void 0!==this.lastSize){var l=this.lastSize;o=l.width,a=l.height}var u=this.cache("target-bounds",(function(){return t.getTargetBounds()})),d=u.height,c=u.width,p=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach((function(e){var t=e.outOfBoundsClass,n=e.pinnedClass;t&&p.push(t),n&&p.push(n)})),p.forEach((function(e){["left","top","right","bottom"].forEach((function(t){p.push(e+"-"+t)}))}));var f=[],m=_({},s),g=_({},this.attachment);return this.options.constraints.forEach((function(e){var r=e.to,l=e.attachment,u=e.pin;void 0===l&&(l="");var p=void 0,_=void 0;if(l.indexOf(" ")>=0){var v=l.split(" "),y=x(v,2);_=y[0],p=y[1]}else p=_=l;var b=function(e,t){return"scrollParent"===t?t=e.scrollParents[0]:"window"===t&&(t=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),t===document&&(t=t.documentElement),void 0!==t.nodeType&&function(){var e=t,n=h(t),i=n,s=getComputedStyle(t);if(t=[i.left,i.top,n.width+i.left,n.height+i.top],e.ownerDocument!==document){var r=e.ownerDocument.defaultView;t[0]+=r.pageXOffset,t[1]+=r.pageYOffset,t[2]+=r.pageXOffset,t[3]+=r.pageYOffset}q.forEach((function(e,n){"Top"===(e=e[0].toUpperCase()+e.substr(1))||"Left"===e?t[n]+=parseFloat(s["border"+e+"Width"]):t[n]-=parseFloat(s["border"+e+"Width"])}))}(),t}(t,r);"target"!==_&&"both"!==_||(n<b[1]&&"top"===m.top&&(n+=d,m.top="bottom"),n+a>b[3]&&"bottom"===m.top&&(n-=d,m.top="top")),"together"===_&&("top"===m.top&&("bottom"===g.top&&n<b[1]?(n+=d,m.top="bottom",n+=a,g.top="top"):"top"===g.top&&n+a>b[3]&&n-(a-d)>=b[1]&&(n-=a-d,m.top="bottom",g.top="bottom")),"bottom"===m.top&&("top"===g.top&&n+a>b[3]?(n-=d,m.top="top",n-=a,g.top="bottom"):"bottom"===g.top&&n<b[1]&&n+(2*a-d)<=b[3]&&(n+=a-d,m.top="top",g.top="top")),"middle"===m.top&&(n+a>b[3]&&"top"===g.top?(n-=a,g.top="bottom"):n<b[1]&&"bottom"===g.top&&(n+=a,g.top="top"))),"target"!==p&&"both"!==p||(i<b[0]&&"left"===m.left&&(i+=c,m.left="right"),i+o>b[2]&&"right"===m.left&&(i-=c,m.left="left")),"together"===p&&(i<b[0]&&"left"===m.left?"right"===g.left?(i+=c,m.left="right",i+=o,g.left="left"):"left"===g.left&&(i+=c,m.left="right",i-=o,g.left="right"):i+o>b[2]&&"right"===m.left?"left"===g.left?(i-=c,m.left="left",i-=o,g.left="right"):"right"===g.left&&(i-=c,m.left="left",i+=o,g.left="left"):"center"===m.left&&(i+o>b[2]&&"left"===g.left?(i-=o,g.left="right"):i<b[0]&&"right"===g.left&&(i+=o,g.left="left"))),"element"!==_&&"both"!==_||(n<b[1]&&"bottom"===g.top&&(n+=a,g.top="top"),n+a>b[3]&&"top"===g.top&&(n-=a,g.top="bottom")),"element"!==p&&"both"!==p||(i<b[0]&&("right"===g.left?(i+=o,g.left="left"):"center"===g.left&&(i+=o/2,g.left="left")),i+o>b[2]&&("left"===g.left?(i-=o,g.left="right"):"center"===g.left&&(i-=o/2,g.left="right"))),"string"==typeof u?u=u.split(",").map((function(e){return e.trim()})):!0===u&&(u=["top","left","right","bottom"]),u=u||[];var w=[],k=[];n<b[1]&&(u.indexOf("top")>=0?(n=b[1],w.push("top")):k.push("top")),n+a>b[3]&&(u.indexOf("bottom")>=0?(n=b[3]-a,w.push("bottom")):k.push("bottom")),i<b[0]&&(u.indexOf("left")>=0?(i=b[0],w.push("left")):k.push("left")),i+o>b[2]&&(u.indexOf("right")>=0?(i=b[2]-o,w.push("right")):k.push("right")),w.length&&function(){var e;e=void 0!==t.options.pinnedClass?t.options.pinnedClass:t.getClass("pinned"),f.push(e),w.forEach((function(t){f.push(e+"-"+t)}))}(),k.length&&function(){var e;e=void 0!==t.options.outOfBoundsClass?t.options.outOfBoundsClass:t.getClass("out-of-bounds"),f.push(e),k.forEach((function(t){f.push(e+"-"+t)}))}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(g.left=m.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(g.top=m.top=!1),m.top===s.top&&m.left===s.left&&g.top===t.attachment.top&&g.left===t.attachment.left||(t.updateAttachClasses(g,m),t.trigger("update",{attachment:g,targetAttachment:m}))})),L((function(){!1!==t.options.addTargetClasses&&k(t.target,f,p),k(t.element,f,p)})),{top:n,left:i}}});var B,h=(B=r.Utils).getBounds,k=B.updateClasses;return L=B.defer,r.modules.push({position:function(e){var t=this,n=e.top,i=e.left,s=this.cache("element-bounds",(function(){return h(t.element)})),r=s.height,a=s.width,o=this.getTargetBounds(),l=n+r,u=i+a,d=[];n<=o.bottom&&l>=o.top&&["left","right"].forEach((function(e){var t=o[e];t!==i&&t!==u||d.push(e)})),i<=o.right&&u>=o.left&&["top","bottom"].forEach((function(e){var t=o[e];t!==n&&t!==l||d.push(e)}));var c=[],p=[];return c.push(this.getClass("abutted")),["left","top","right","bottom"].forEach((function(e){c.push(t.getClass("abutted")+"-"+e)})),d.length&&p.push(this.getClass("abutted")),d.forEach((function(e){p.push(t.getClass("abutted")+"-"+e)})),L((function(){!1!==t.options.addTargetClasses&&k(t.target,p,c),k(t.element,p,c)})),!0}}),x=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],i=!0,s=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{!i&&o.return&&o.return()}finally{if(s)throw r}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r.modules.push({position:function(e){var t=e.top,n=e.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:t,left:n}));var s,r=void 0,a=void 0;return a="string"==typeof i?((i=i.split(" "))[1]=i[1]||i[0],r=(s=x(i,2))[0],a=s[1],r=parseFloat(r,10),parseFloat(a,10)):(r=i.top,i.left),{top:t+=r,left:n+=a}}}}),$})?i.call(t,n,t,e):i)||(e.exports=s)},function(e,t,n){var i,s,r,a;function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}a=function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function r(e,t){var n,i=Object.keys(e);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(e),t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)),i}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){var i,s,r;i=e,r=n[s=t],s in i?Object.defineProperty(i,s,{value:r,enumerable:!0,configurable:!0,writable:!0}):i[s]=r})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}t=t&&t.hasOwnProperty("default")?t.default:t,n=n&&n.hasOwnProperty("default")?n.default:n;var l="transitionend",u={TRANSITION_END:"bsTransitionEnd",getUID:function(e){for(;e+=~~(1e6*Math.random()),document.getElementById(e););return e},getSelectorFromElement:function(e){var t,n=e.getAttribute("data-target");n&&"#"!==n||(n=(t=e.getAttribute("href"))&&"#"!==t?t.trim():"");try{return document.querySelector(n)?n:null}catch(e){return null}},getTransitionDurationFromElement:function(e){if(!e)return 0;var n=t(e).css("transition-duration"),i=t(e).css("transition-delay"),s=parseFloat(n),r=parseFloat(i);return s||r?(n=n.split(",")[0],i=i.split(",")[0],1e3*(parseFloat(n)+parseFloat(i))):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(e){t(e).trigger(l)},supportsTransitionEnd:function(){return Boolean(l)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var s=n[i],r=t[i],a=r&&u.isElement(r)?"element":(o=r,{}.toString.call(o).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(s).test(a))throw new Error(e.toUpperCase()+': Option "'+i+'" provided type "'+a+'" but expected type "'+s+'".')}var o},findShadowRoot:function(e){if(!document.documentElement.attachShadow)return null;if("function"!=typeof e.getRootNode)return e instanceof ShadowRoot?e:e.parentNode?u.findShadowRoot(e.parentNode):null;var t=e.getRootNode();return t instanceof ShadowRoot?t:null},jQueryDetection:function(){if(void 0===t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};u.jQueryDetection(),t.fn.emulateTransitionEnd=function(e){var n=this,i=!1;return t(this).one(u.TRANSITION_END,(function(){i=!0})),setTimeout((function(){i||u.triggerTransitionEnd(n)}),e),this},t.event.special[u.TRANSITION_END]={bindType:l,delegateType:l,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}};var d="alert",c="bs.alert",h="."+c,p=t.fn[d],f={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},m=function(){function e(e){this._element=e}var n=e.prototype;return n.close=function(e){var t=this._element;e&&(t=this._getRootElement(e)),this._triggerCloseEvent(t).isDefaultPrevented()||this._removeElement(t)},n.dispose=function(){t.removeData(this._element,c),this._element=null},n._getRootElement=function(e){var n=u.getSelectorFromElement(e),i=!1;return n&&(i=document.querySelector(n)),i||t(e).closest(".alert")[0]},n._triggerCloseEvent=function(e){var n=t.Event(f.CLOSE);return t(e).trigger(n),n},n._removeElement=function(e){var n,i=this;t(e).removeClass("show"),t(e).hasClass("fade")?(n=u.getTransitionDurationFromElement(e),t(e).one(u.TRANSITION_END,(function(t){return i._destroyElement(e,t)})).emulateTransitionEnd(n)):this._destroyElement(e)},n._destroyElement=function(e){t(e).detach().trigger(f.CLOSED).remove()},e._jQueryInterface=function(n){return this.each((function(){var i=t(this),s=i.data(c);s||(s=new e(this),i.data(c,s)),"close"===n&&s[n](this)}))},e._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),e}();t(document).on(f.CLICK_DATA_API,'[data-dismiss="alert"]',m._handleDismiss(new m)),t.fn[d]=m._jQueryInterface,t.fn[d].Constructor=m,t.fn[d].noConflict=function(){return t.fn[d]=p,m._jQueryInterface};var _="button",g="bs.button",v="."+g,y=".data-api",b=t.fn[_],w="active",k='[data-toggle^="button"]',M='input:not([type="hidden"])',L=".btn",D={CLICK_DATA_API:"click"+v+y,FOCUS_BLUR_DATA_API:"focus"+v+y+" blur"+v+y,LOAD_DATA_API:"load"+v+y},T=function(){function e(e){this._element=e}var n=e.prototype;return n.toggle=function(){var e,n,i=!0,s=!0,r=t(this._element).closest('[data-toggle="buttons"]')[0];!r||(e=this._element.querySelector(M))&&("radio"===e.type?e.checked&&this._element.classList.contains(w)?i=!1:(n=r.querySelector(".active"))&&t(n).removeClass(w):("checkbox"!==e.type||"LABEL"===this._element.tagName&&e.checked===this._element.classList.contains(w))&&(i=!1),i&&(e.checked=!this._element.classList.contains(w),t(e).trigger("change")),e.focus(),s=!1),this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(s&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(w)),i&&t(this._element).toggleClass(w))},n.dispose=function(){t.removeData(this._element,g),this._element=null},e._jQueryInterface=function(n){return this.each((function(){var i=t(this).data(g);i||(i=new e(this),t(this).data(g,i)),"toggle"===n&&i[n]()}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),e}();t(document).on(D.CLICK_DATA_API,k,(function(e){var n=e.target;if(t(n).hasClass("btn")||(n=t(n).closest(L)[0]),!n||n.hasAttribute("disabled")||n.classList.contains("disabled"))e.preventDefault();else{var i=n.querySelector(M);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void e.preventDefault();T._jQueryInterface.call(t(n),"toggle")}})).on(D.FOCUS_BLUR_DATA_API,k,(function(e){var n=t(e.target).closest(L)[0];t(n).toggleClass("focus",/^focus(in)?$/.test(e.type))})),t(window).on(D.LOAD_DATA_API,(function(){for(var e=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),t=0,n=e.length;t<n;t++){var i=e[t],s=i.querySelector(M);s.checked||s.hasAttribute("checked")?i.classList.add(w):i.classList.remove(w)}for(var r=0,a=(e=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;r<a;r++){var o=e[r];"true"===o.getAttribute("aria-pressed")?o.classList.add(w):o.classList.remove(w)}})),t.fn[_]=T._jQueryInterface,t.fn[_].Constructor=T,t.fn[_].noConflict=function(){return t.fn[_]=b,T._jQueryInterface};var x="carousel",S="bs.carousel",Y="."+S,C=".data-api",E=t.fn[x],O={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},A={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},H="next",j="prev",P={SLIDE:"slide"+Y,SLID:"slid"+Y,KEYDOWN:"keydown"+Y,MOUSEENTER:"mouseenter"+Y,MOUSELEAVE:"mouseleave"+Y,TOUCHSTART:"touchstart"+Y,TOUCHMOVE:"touchmove"+Y,TOUCHEND:"touchend"+Y,POINTERDOWN:"pointerdown"+Y,POINTERUP:"pointerup"+Y,DRAG_START:"dragstart"+Y,LOAD_DATA_API:"load"+Y+C,CLICK_DATA_API:"click"+Y+C},I="active",F=".active.carousel-item",N={TOUCH:"touch",PEN:"pen"},W=function(){function e(e,t){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._element=e,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var n=e.prototype;return n.next=function(){this._isSliding||this._slide(H)},n.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},n.prev=function(){this._isSliding||this._slide(j)},n.pause=function(e){e||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(u.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(e){var n=this;this._activeElement=this._element.querySelector(F);var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(P.SLID,(function(){return n.to(e)}));else{if(i===e)return this.pause(),void this.cycle();var s=i<e?H:j;this._slide(s,this._items[e])}},n.dispose=function(){t(this._element).off(Y),t.removeData(this._element,S),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(e){return e=a({},O,{},e),u.typeCheckConfig(x,e,A),e},n._handleSwipe=function(){var e,t=Math.abs(this.touchDeltaX);t<=40||(e=t/this.touchDeltaX,(this.touchDeltaX=0)<e&&this.prev(),e<0&&this.next())},n._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(P.KEYDOWN,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&t(this._element).on(P.MOUSEENTER,(function(t){return e.pause(t)})).on(P.MOUSELEAVE,(function(t){return e.cycle(t)})),this._config.touch&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var e,n,i=this;this._touchSupported&&(e=function(e){i._pointerEvent&&N[e.originalEvent.pointerType.toUpperCase()]?i.touchStartX=e.originalEvent.clientX:i._pointerEvent||(i.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){i._pointerEvent&&N[e.originalEvent.pointerType.toUpperCase()]&&(i.touchDeltaX=e.originalEvent.clientX-i.touchStartX),i._handleSwipe(),"hover"===i._config.pause&&(i.pause(),i.touchTimeout&&clearTimeout(i.touchTimeout),i.touchTimeout=setTimeout((function(e){return i.cycle(e)}),500+i._config.interval))},t(this._element.querySelectorAll(".carousel-item img")).on(P.DRAG_START,(function(e){return e.preventDefault()})),this._pointerEvent?(t(this._element).on(P.POINTERDOWN,e),t(this._element).on(P.POINTERUP,n),this._element.classList.add("pointer-event")):(t(this._element).on(P.TOUCHSTART,e),t(this._element).on(P.TOUCHMOVE,(function(e){var t;(t=e).originalEvent.touches&&1<t.originalEvent.touches.length?i.touchDeltaX=0:i.touchDeltaX=t.originalEvent.touches[0].clientX-i.touchStartX})),t(this._element).on(P.TOUCHEND,n)))},n._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.which){case 37:e.preventDefault(),this.prev();break;case 39:e.preventDefault(),this.next()}},n._getItemIndex=function(e){return this._items=e&&e.parentNode?[].slice.call(e.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(e)},n._getItemByDirection=function(e,t){var n=e===H,i=e===j,s=this._getItemIndex(t),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return t;var a=(s+(e===j?-1:1))%this._items.length;return-1==a?this._items[this._items.length-1]:this._items[a]},n._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(this._element.querySelector(F)),r=t.Event(P.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},n._setActiveIndicatorElement=function(e){var n,i;this._indicatorsElement&&(n=[].slice.call(this._indicatorsElement.querySelectorAll(".active")),t(n).removeClass(I),(i=this._indicatorsElement.children[this._getItemIndex(e)])&&t(i).addClass(I))},n._slide=function(e,n){var i,s,r,a,o,l=this,d=this._element.querySelector(F),c=this._getItemIndex(d),h=n||d&&this._getItemByDirection(e,d),p=this._getItemIndex(h),f=Boolean(this._interval),m=e===H?(i="carousel-item-left",s="carousel-item-next","left"):(i="carousel-item-right",s="carousel-item-prev","right");h&&t(h).hasClass(I)?this._isSliding=!1:this._triggerSlideEvent(h,m).isDefaultPrevented()||d&&h&&(this._isSliding=!0,f&&this.pause(),this._setActiveIndicatorElement(h),r=t.Event(P.SLID,{relatedTarget:h,direction:m,from:c,to:p}),t(this._element).hasClass("slide")?(t(h).addClass(s),u.reflow(h),t(d).addClass(i),t(h).addClass(i),(a=parseInt(h.getAttribute("data-interval"),10))?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=a):this._config.interval=this._config.defaultInterval||this._config.interval,o=u.getTransitionDurationFromElement(d),t(d).one(u.TRANSITION_END,(function(){t(h).removeClass(i+" "+s).addClass(I),t(d).removeClass(I+" "+s+" "+i),l._isSliding=!1,setTimeout((function(){return t(l._element).trigger(r)}),0)})).emulateTransitionEnd(o)):(t(d).removeClass(I),t(h).addClass(I),this._isSliding=!1,t(this._element).trigger(r)),f&&this.cycle())},e._jQueryInterface=function(n){return this.each((function(){var i=t(this).data(S),s=a({},O,{},t(this).data());"object"===o(n)&&(s=a({},s,{},n));var r="string"==typeof n?n:s.slide;if(i||(i=new e(this,s),t(this).data(S,i)),"number"==typeof n)i.to(n);else if("string"==typeof r){if(void 0===i[r])throw new TypeError('No method named "'+r+'"');i[r]()}else s.interval&&s.ride&&(i.pause(),i.cycle())}))},e._dataApiClickHandler=function(n){var i,s,r,o=u.getSelectorFromElement(this);!o||(i=t(o)[0])&&t(i).hasClass("carousel")&&(s=a({},t(i).data(),{},t(this).data()),(r=this.getAttribute("data-slide-to"))&&(s.interval=!1),e._jQueryInterface.call(t(i),s),r&&t(i).data(S).to(r),n.preventDefault())},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return O}}]),e}();t(document).on(P.CLICK_DATA_API,"[data-slide], [data-slide-to]",W._dataApiClickHandler),t(window).on(P.LOAD_DATA_API,(function(){for(var e=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),n=0,i=e.length;n<i;n++){var s=t(e[n]);W._jQueryInterface.call(s,s.data())}})),t.fn[x]=W._jQueryInterface,t.fn[x].Constructor=W,t.fn[x].noConflict=function(){return t.fn[x]=E,W._jQueryInterface};var z="collapse",R="bs.collapse",$="."+R,q=t.fn[z],B={toggle:!0,parent:""},U={toggle:"boolean",parent:"(string|element)"},K={SHOW:"show"+$,SHOWN:"shown"+$,HIDE:"hide"+$,HIDDEN:"hidden"+$,CLICK_DATA_API:"click"+$+".data-api"},G="show",V="collapse",J="collapsing",Q="collapsed",X="width",Z='[data-toggle="collapse"]',ee=function(){function e(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(Z)),i=0,s=n.length;i<s;i++){var r=n[i],a=u.getSelectorFromElement(r),o=[].slice.call(document.querySelectorAll(a)).filter((function(t){return t===e}));null!==a&&0<o.length&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var n=e.prototype;return n.toggle=function(){t(this._element).hasClass(G)?this.hide():this.show()},n.show=function(){var n,i,s,r,a,o,l=this;this._isTransitioning||t(this._element).hasClass(G)||(this._parent&&0===(n=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(e){return"string"==typeof l._config.parent?e.getAttribute("data-parent")===l._config.parent:e.classList.contains(V)}))).length&&(n=null),n&&(i=t(n).not(this._selector).data(R))&&i._isTransitioning||(s=t.Event(K.SHOW),t(this._element).trigger(s),s.isDefaultPrevented()||(n&&(e._jQueryInterface.call(t(n).not(this._selector),"hide"),i||t(n).data(R,null)),r=this._getDimension(),t(this._element).removeClass(V).addClass(J),this._element.style[r]=0,this._triggerArray.length&&t(this._triggerArray).removeClass(Q).attr("aria-expanded",!0),this.setTransitioning(!0),a="scroll"+(r[0].toUpperCase()+r.slice(1)),o=u.getTransitionDurationFromElement(this._element),t(this._element).one(u.TRANSITION_END,(function(){t(l._element).removeClass(J).addClass(V).addClass(G),l._element.style[r]="",l.setTransitioning(!1),t(l._element).trigger(K.SHOWN)})).emulateTransitionEnd(o),this._element.style[r]=this._element[a]+"px")))},n.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(G)){var n=t.Event(K.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",u.reflow(this._element),t(this._element).addClass(J).removeClass(V).removeClass(G);var s=this._triggerArray.length;if(0<s)for(var r=0;r<s;r++){var a=this._triggerArray[r],o=u.getSelectorFromElement(a);null!==o&&(t([].slice.call(document.querySelectorAll(o))).hasClass(G)||t(a).addClass(Q).attr("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[i]="";var l=u.getTransitionDurationFromElement(this._element);t(this._element).one(u.TRANSITION_END,(function(){e.setTransitioning(!1),t(e._element).removeClass(J).addClass(V).trigger(K.HIDDEN)})).emulateTransitionEnd(l)}}},n.setTransitioning=function(e){this._isTransitioning=e},n.dispose=function(){t.removeData(this._element,R),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},n._getConfig=function(e){return(e=a({},B,{},e)).toggle=Boolean(e.toggle),u.typeCheckConfig(z,e,U),e},n._getDimension=function(){return t(this._element).hasClass(X)?X:"height"},n._getParent=function(){var n,i=this;u.isElement(this._config.parent)?(n=this._config.parent,void 0!==this._config.parent.jquery&&(n=this._config.parent[0])):n=document.querySelector(this._config.parent);var s='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',r=[].slice.call(n.querySelectorAll(s));return t(r).each((function(t,n){i._addAriaAndCollapsedClass(e._getTargetFromElement(n),[n])})),n},n._addAriaAndCollapsedClass=function(e,n){var i=t(e).hasClass(G);n.length&&t(n).toggleClass(Q,!i).attr("aria-expanded",i)},e._getTargetFromElement=function(e){var t=u.getSelectorFromElement(e);return t?document.querySelector(t):null},e._jQueryInterface=function(n){return this.each((function(){var i=t(this),s=i.data(R),r=a({},B,{},i.data(),{},"object"===o(n)&&n?n:{});if(!s&&r.toggle&&/show|hide/.test(n)&&(r.toggle=!1),s||(s=new e(this,r),i.data(R,s)),"string"==typeof n){if(void 0===s[n])throw new TypeError('No method named "'+n+'"');s[n]()}}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return B}}]),e}();t(document).on(K.CLICK_DATA_API,Z,(function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var n=t(this),i=u.getSelectorFromElement(this),s=[].slice.call(document.querySelectorAll(i));t(s).each((function(){var e=t(this),i=e.data(R)?"toggle":n.data();ee._jQueryInterface.call(e,i)}))})),t.fn[z]=ee._jQueryInterface,t.fn[z].Constructor=ee,t.fn[z].noConflict=function(){return t.fn[z]=q,ee._jQueryInterface};var te="dropdown",ne="bs.dropdown",ie="."+ne,se=".data-api",re=t.fn[te],ae=new RegExp("38|40|27"),oe={HIDE:"hide"+ie,HIDDEN:"hidden"+ie,SHOW:"show"+ie,SHOWN:"shown"+ie,CLICK:"click"+ie,CLICK_DATA_API:"click"+ie+se,KEYDOWN_DATA_API:"keydown"+ie+se,KEYUP_DATA_API:"keyup"+ie+se},le="disabled",ue="show",de="dropdown-menu-right",ce='[data-toggle="dropdown"]',he=".dropdown-menu",pe={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},fe={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},me=function(){function e(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var i=e.prototype;return i.toggle=function(){var n;this._element.disabled||t(this._element).hasClass(le)||(n=t(this._menu).hasClass(ue),e._clearMenus(),n||this.show(!0))},i.show=function(i){if(void 0===i&&(i=!1),!(this._element.disabled||t(this._element).hasClass(le)||t(this._menu).hasClass(ue))){var s={relatedTarget:this._element},r=t.Event(oe.SHOW,s),a=e._getParentFromElement(this._element);if(t(a).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar&&i){if(void 0===n)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=a:u.isElement(this._config.reference)&&(o=this._config.reference,void 0!==this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&t(a).addClass("position-static"),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(a).closest(".navbar-nav").length&&t(document.body).children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(ue),t(a).toggleClass(ue).trigger(t.Event(oe.SHOWN,s))}}},i.hide=function(){var n,i,s;this._element.disabled||t(this._element).hasClass(le)||!t(this._menu).hasClass(ue)||(n={relatedTarget:this._element},i=t.Event(oe.HIDE,n),s=e._getParentFromElement(this._element),t(s).trigger(i),i.isDefaultPrevented()||(this._popper&&this._popper.destroy(),t(this._menu).toggleClass(ue),t(s).toggleClass(ue).trigger(t.Event(oe.HIDDEN,n))))},i.dispose=function(){t.removeData(this._element,ne),t(this._element).off(ie),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},i.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},i._addEventListeners=function(){var e=this;t(this._element).on(oe.CLICK,(function(t){t.preventDefault(),t.stopPropagation(),e.toggle()}))},i._getConfig=function(e){return e=a({},this.constructor.Default,{},t(this._element).data(),{},e),u.typeCheckConfig(te,e,this.constructor.DefaultType),e},i._getMenuElement=function(){var t;return this._menu||(t=e._getParentFromElement(this._element))&&(this._menu=t.querySelector(he)),this._menu},i._getPlacement=function(){var e=t(this._element.parentNode),n="bottom-start";return e.hasClass("dropup")?(n="top-start",t(this._menu).hasClass(de)&&(n="top-end")):e.hasClass("dropright")?n="right-start":e.hasClass("dropleft")?n="left-start":t(this._menu).hasClass(de)&&(n="bottom-end"),n},i._detectNavbar=function(){return 0<t(this._element).closest(".navbar").length},i._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=a({},t.offsets,{},e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},i._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),a({},e,{},this._config.popperConfig)},e._jQueryInterface=function(n){return this.each((function(){var i=t(this).data(ne),s="object"===o(n)?n:null;if(i||(i=new e(this,s),t(this).data(ne,i)),"string"==typeof n){if(void 0===i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},e._clearMenus=function(n){if(!n||3!==n.which&&("keyup"!==n.type||9===n.which))for(var i=[].slice.call(document.querySelectorAll(ce)),s=0,r=i.length;s<r;s++){var a,o,l=e._getParentFromElement(i[s]),u=t(i[s]).data(ne),d={relatedTarget:i[s]};n&&"click"===n.type&&(d.clickEvent=n),u&&(a=u._menu,t(l).hasClass(ue)&&(n&&("click"===n.type&&/input|textarea/i.test(n.target.tagName)||"keyup"===n.type&&9===n.which)&&t.contains(l,n.target)||(o=t.Event(oe.HIDE,d),t(l).trigger(o),o.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t(document.body).children().off("mouseover",null,t.noop),i[s].setAttribute("aria-expanded","false"),u._popper&&u._popper.destroy(),t(a).removeClass(ue),t(l).removeClass(ue).trigger(t.Event(oe.HIDDEN,d))))))}},e._getParentFromElement=function(e){var t,n=u.getSelectorFromElement(e);return n&&(t=document.querySelector(n)),t||e.parentNode},e._dataApiKeydownHandler=function(n){if((/input|textarea/i.test(n.target.tagName)?!(32===n.which||27!==n.which&&(40!==n.which&&38!==n.which||t(n.target).closest(he).length)):ae.test(n.which))&&(n.preventDefault(),n.stopPropagation(),!this.disabled&&!t(this).hasClass(le))){var i,s=e._getParentFromElement(this),r=t(s).hasClass(ue);if(r||27!==n.which){if(!r||r&&(27===n.which||32===n.which))return 27===n.which&&(i=s.querySelector(ce),t(i).trigger("focus")),void t(this).trigger("click");var a,o=[].slice.call(s.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(e){return t(e).is(":visible")}));0!==o.length&&(a=o.indexOf(n.target),38===n.which&&0<a&&a--,40===n.which&&a<o.length-1&&a++,a<0&&(a=0),o[a].focus())}}},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return pe}},{key:"DefaultType",get:function(){return fe}}]),e}();t(document).on(oe.KEYDOWN_DATA_API,ce,me._dataApiKeydownHandler).on(oe.KEYDOWN_DATA_API,he,me._dataApiKeydownHandler).on(oe.CLICK_DATA_API+" "+oe.KEYUP_DATA_API,me._clearMenus).on(oe.CLICK_DATA_API,ce,(function(e){e.preventDefault(),e.stopPropagation(),me._jQueryInterface.call(t(this),"toggle")})).on(oe.CLICK_DATA_API,".dropdown form",(function(e){e.stopPropagation()})),t.fn[te]=me._jQueryInterface,t.fn[te].Constructor=me,t.fn[te].noConflict=function(){return t.fn[te]=re,me._jQueryInterface};var _e="modal",ge="bs.modal",ve="."+ge,ye=t.fn[_e],be={backdrop:!0,keyboard:!0,focus:!0,show:!0},we={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},ke={HIDE:"hide"+ve,HIDE_PREVENTED:"hidePrevented"+ve,HIDDEN:"hidden"+ve,SHOW:"show"+ve,SHOWN:"shown"+ve,FOCUSIN:"focusin"+ve,RESIZE:"resize"+ve,CLICK_DISMISS:"click.dismiss"+ve,KEYDOWN_DISMISS:"keydown.dismiss"+ve,MOUSEUP_DISMISS:"mouseup.dismiss"+ve,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ve,CLICK_DATA_API:"click"+ve+".data-api"},Me="modal-open",Le="fade",De="show",Te="modal-static",xe=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Se=".sticky-top",Ye=function(){function e(e,t){this._config=this._getConfig(t),this._element=e,this._dialog=e.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var n=e.prototype;return n.toggle=function(e){return this._isShown?this.hide():this.show(e)},n.show=function(e){var n,i=this;this._isShown||this._isTransitioning||(t(this._element).hasClass(Le)&&(this._isTransitioning=!0),n=t.Event(ke.SHOW,{relatedTarget:e}),t(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(ke.CLICK_DISMISS,'[data-dismiss="modal"]',(function(e){return i.hide(e)})),t(this._dialog).on(ke.MOUSEDOWN_DISMISS,(function(){t(i._element).one(ke.MOUSEUP_DISMISS,(function(e){t(e.target).is(i._element)&&(i._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return i._showElement(e)}))))},n.hide=function(e){var n,i,s,r=this;e&&e.preventDefault(),this._isShown&&!this._isTransitioning&&(n=t.Event(ke.HIDE),t(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()&&(this._isShown=!1,(i=t(this._element).hasClass(Le))&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),t(document).off(ke.FOCUSIN),t(this._element).removeClass(De),t(this._element).off(ke.CLICK_DISMISS),t(this._dialog).off(ke.MOUSEDOWN_DISMISS),i?(s=u.getTransitionDurationFromElement(this._element),t(this._element).one(u.TRANSITION_END,(function(e){return r._hideModal(e)})).emulateTransitionEnd(s)):this._hideModal()))},n.dispose=function(){[window,this._element,this._dialog].forEach((function(e){return t(e).off(ve)})),t(document).off(ke.FOCUSIN),t.removeData(this._element,ge),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},n.handleUpdate=function(){this._adjustDialog()},n._getConfig=function(e){return e=a({},be,{},e),u.typeCheckConfig(_e,e,we),e},n._triggerBackdropTransition=function(){var e=this;if("static"===this._config.backdrop){var n=t.Event(ke.HIDE_PREVENTED);if(t(this._element).trigger(n),n.defaultPrevented)return;this._element.classList.add(Te);var i=u.getTransitionDurationFromElement(this._element);t(this._element).one(u.TRANSITION_END,(function(){e._element.classList.remove(Te)})).emulateTransitionEnd(i),this._element.focus()}else this.hide()},n._showElement=function(e){var n=this,i=t(this._element).hasClass(Le),s=this._dialog?this._dialog.querySelector(".modal-body"):null;function r(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(o)}this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),t(this._dialog).hasClass("modal-dialog-scrollable")&&s?s.scrollTop=0:this._element.scrollTop=0,i&&u.reflow(this._element),t(this._element).addClass(De),this._config.focus&&this._enforceFocus();var a,o=t.Event(ke.SHOWN,{relatedTarget:e});i?(a=u.getTransitionDurationFromElement(this._dialog),t(this._dialog).one(u.TRANSITION_END,r).emulateTransitionEnd(a)):r()},n._enforceFocus=function(){var e=this;t(document).off(ke.FOCUSIN).on(ke.FOCUSIN,(function(n){document!==n.target&&e._element!==n.target&&0===t(e._element).has(n.target).length&&e._element.focus()}))},n._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(ke.KEYDOWN_DISMISS,(function(t){27===t.which&&e._triggerBackdropTransition()})):this._isShown||t(this._element).off(ke.KEYDOWN_DISMISS)},n._setResizeEvent=function(){var e=this;this._isShown?t(window).on(ke.RESIZE,(function(t){return e.handleUpdate(t)})):t(window).off(ke.RESIZE)},n._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop((function(){t(document.body).removeClass(Me),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(ke.HIDDEN)}))},n._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},n._showBackdrop=function(e){var n,i,s=this,r=t(this._element).hasClass(Le)?Le:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",r&&this._backdrop.classList.add(r),t(this._backdrop).appendTo(document.body),t(this._element).on(ke.CLICK_DISMISS,(function(e){s._ignoreBackdropClick?s._ignoreBackdropClick=!1:e.target===e.currentTarget&&s._triggerBackdropTransition()})),r&&u.reflow(this._backdrop),t(this._backdrop).addClass(De),!e)return;if(!r)return void e();var a=u.getTransitionDurationFromElement(this._backdrop);t(this._backdrop).one(u.TRANSITION_END,e).emulateTransitionEnd(a)}else!this._isShown&&this._backdrop?(t(this._backdrop).removeClass(De),n=function(){s._removeBackdrop(),e&&e()},t(this._element).hasClass(Le)?(i=u.getTransitionDurationFromElement(this._backdrop),t(this._backdrop).one(u.TRANSITION_END,n).emulateTransitionEnd(i)):n()):e&&e()},n._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},n._setScrollbar=function(){var e,n,i,s,r=this;this._isBodyOverflowing&&(e=[].slice.call(document.querySelectorAll(xe)),n=[].slice.call(document.querySelectorAll(Se)),t(e).each((function(e,n){var i=n.style.paddingRight,s=t(n).css("padding-right");t(n).data("padding-right",i).css("padding-right",parseFloat(s)+r._scrollbarWidth+"px")})),t(n).each((function(e,n){var i=n.style.marginRight,s=t(n).css("margin-right");t(n).data("margin-right",i).css("margin-right",parseFloat(s)-r._scrollbarWidth+"px")})),i=document.body.style.paddingRight,s=t(document.body).css("padding-right"),t(document.body).data("padding-right",i).css("padding-right",parseFloat(s)+this._scrollbarWidth+"px")),t(document.body).addClass(Me)},n._resetScrollbar=function(){var e=[].slice.call(document.querySelectorAll(xe));t(e).each((function(e,n){var i=t(n).data("padding-right");t(n).removeData("padding-right"),n.style.paddingRight=i||""}));var n=[].slice.call(document.querySelectorAll(""+Se));t(n).each((function(e,n){var i=t(n).data("margin-right");void 0!==i&&t(n).css("margin-right",i).removeData("margin-right")}));var i=t(document.body).data("padding-right");t(document.body).removeData("padding-right"),document.body.style.paddingRight=i||""},n._getScrollbarWidth=function(){var e=document.createElement("div");e.className="modal-scrollbar-measure",document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t},e._jQueryInterface=function(n,i){return this.each((function(){var s=t(this).data(ge),r=a({},be,{},t(this).data(),{},"object"===o(n)&&n?n:{});if(s||(s=new e(this,r),t(this).data(ge,s)),"string"==typeof n){if(void 0===s[n])throw new TypeError('No method named "'+n+'"');s[n](i)}else r.show&&s.show(i)}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return be}}]),e}();t(document).on(ke.CLICK_DATA_API,'[data-toggle="modal"]',(function(e){var n,i=this,s=u.getSelectorFromElement(this);s&&(n=document.querySelector(s));var r=t(n).data(ge)?"toggle":a({},t(n).data(),{},t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var o=t(n).one(ke.SHOW,(function(e){e.isDefaultPrevented()||o.one(ke.HIDDEN,(function(){t(i).is(":visible")&&i.focus()}))}));Ye._jQueryInterface.call(t(n),r,this)})),t.fn[_e]=Ye._jQueryInterface,t.fn[_e].Constructor=Ye,t.fn[_e].noConflict=function(){return t.fn[_e]=ye,Ye._jQueryInterface};var Ce=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Ee=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Oe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Ae(e,t,n){if(0===e.length)return e;if(n&&"function"==typeof n)return n(e);for(var i=(new window.DOMParser).parseFromString(e,"text/html"),s=Object.keys(t),r=[].slice.call(i.body.querySelectorAll("*")),a=function(e){var n=r[e],i=n.nodeName.toLowerCase();if(-1===s.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var a=[].slice.call(n.attributes),o=[].concat(t["*"]||[],t[i]||[]);a.forEach((function(e){!function(e,t){var n=e.nodeName.toLowerCase();if(-1!==t.indexOf(n))return-1===Ce.indexOf(n)||Boolean(e.nodeValue.match(Ee)||e.nodeValue.match(Oe));for(var i=t.filter((function(e){return e instanceof RegExp})),s=0,r=i.length;s<r;s++)if(n.match(i[s]))return 1}(e,o)&&n.removeAttribute(e.nodeName)}))},o=0,l=r.length;o<l;o++)a(o);return i.body.innerHTML}var He="tooltip",je="bs.tooltip",Pe="."+je,Ie=t.fn[He],Fe="bs-tooltip",Ne=new RegExp("(^|\\s)"+Fe+"\\S+","g"),We=["sanitize","whiteList","sanitizeFn"],ze={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Re={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},$e={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},qe="show",Be="out",Ue={HIDE:"hide"+Pe,HIDDEN:"hidden"+Pe,SHOW:"show"+Pe,SHOWN:"shown"+Pe,INSERTED:"inserted"+Pe,CLICK:"click"+Pe,FOCUSIN:"focusin"+Pe,FOCUSOUT:"focusout"+Pe,MOUSEENTER:"mouseenter"+Pe,MOUSELEAVE:"mouseleave"+Pe},Ke="fade",Ge="show",Ve="hover",Je="focus",Qe=function(){function e(e,t){if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var i=e.prototype;return i.enable=function(){this._isEnabled=!0},i.disable=function(){this._isEnabled=!1},i.toggleEnabled=function(){this._isEnabled=!this._isEnabled},i.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(Ge))return void this._leave(null,this);this._enter(null,this)}},i.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},i.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=u.findShadowRoot(this.element),r=t.contains(null!==s?s:this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!r)return;var a=this.getTipElement(),o=u.getUID(this.constructor.NAME);a.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(a).addClass(Ke);var l="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,d=this._getAttachment(l);this.addAttachmentClass(d);var c=this._getContainer();t(a).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(a).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,a,this._getPopperConfig(d)),t(a).addClass(Ge),"ontouchstart"in document.documentElement&&t(document.body).children().on("mouseover",null,t.noop);var h,p=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===Be&&e._leave(null,e)};t(this.tip).hasClass(Ke)?(h=u.getTransitionDurationFromElement(this.tip),t(this.tip).one(u.TRANSITION_END,p).emulateTransitionEnd(h)):p()}},i.hide=function(e){function n(){s._hoverState!==qe&&r.parentNode&&r.parentNode.removeChild(r),s._cleanTipClass(),s.element.removeAttribute("aria-describedby"),t(s.element).trigger(s.constructor.Event.HIDDEN),null!==s._popper&&s._popper.destroy(),e&&e()}var i,s=this,r=this.getTipElement(),a=t.Event(this.constructor.Event.HIDE);t(this.element).trigger(a),a.isDefaultPrevented()||(t(r).removeClass(Ge),"ontouchstart"in document.documentElement&&t(document.body).children().off("mouseover",null,t.noop),this._activeTrigger.click=!1,this._activeTrigger[Je]=!1,this._activeTrigger[Ve]=!1,t(this.tip).hasClass(Ke)?(i=u.getTransitionDurationFromElement(r),t(r).one(u.TRANSITION_END,n).emulateTransitionEnd(i)):n(),this._hoverState="")},i.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},i.isWithContent=function(){return Boolean(this.getTitle())},i.addAttachmentClass=function(e){t(this.getTipElement()).addClass(Fe+"-"+e)},i.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},i.setContent=function(){var e=this.getTipElement();this.setElementContent(t(e.querySelectorAll(".tooltip-inner")),this.getTitle()),t(e).removeClass(Ke+" "+Ge)},i.setElementContent=function(e,n){"object"!==o(n)||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Ae(n,this.config.whiteList,this.config.sanitizeFn)),e.html(n)):e.text(n):this.config.html?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text())},i.getTitle=function(){return this.element.getAttribute("data-original-title")||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},i._getPopperConfig=function(e){var t=this;return a({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},{},this.config.popperConfig)},i._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=a({},t.offsets,{},e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},i._getContainer=function(){return!1===this.config.container?document.body:u.isElement(this.config.container)?t(this.config.container):t(document).find(this.config.container)},i._getAttachment=function(e){return Re[e.toUpperCase()]},i._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach((function(n){var i,s;"click"===n?t(e.element).on(e.constructor.Event.CLICK,e.config.selector,(function(t){return e.toggle(t)})):"manual"!==n&&(i=n===Ve?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===Ve?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT,t(e.element).on(i,e.config.selector,(function(t){return e._enter(t)})).on(s,e.config.selector,(function(t){return e._leave(t)})))})),this._hideModalHandler=function(){e.element&&e.hide()},t(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},i._fixTitle=function(){var e=o(this.element.getAttribute("data-original-title"));!this.element.getAttribute("title")&&"string"===e||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},i._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?Je:Ve]=!0),t(n.getTipElement()).hasClass(Ge)||n._hoverState===qe?n._hoverState=qe:(clearTimeout(n._timeout),n._hoverState=qe,n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){n._hoverState===qe&&n.show()}),n.config.delay.show):n.show())},i._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?Je:Ve]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=Be,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){n._hoverState===Be&&n.hide()}),n.config.delay.hide):n.hide())},i._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},i._getConfig=function(e){var n=t(this.element).data();return Object.keys(n).forEach((function(e){-1!==We.indexOf(e)&&delete n[e]})),"number"==typeof(e=a({},this.constructor.Default,{},n,{},"object"===o(e)&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),u.typeCheckConfig(He,e,this.constructor.DefaultType),e.sanitize&&(e.template=Ae(e.template,e.whiteList,e.sanitizeFn)),e},i._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},i._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(Ne);null!==n&&n.length&&e.removeClass(n.join(""))},i._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},i._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(Ke),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},e._jQueryInterface=function(n){return this.each((function(){var i=t(this).data(je),s="object"===o(n)&&n;if((i||!/dispose|hide/.test(n))&&(i||(i=new e(this,s),t(this).data(je,i)),"string"==typeof n)){if(void 0===i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return $e}},{key:"NAME",get:function(){return He}},{key:"DATA_KEY",get:function(){return je}},{key:"Event",get:function(){return Ue}},{key:"EVENT_KEY",get:function(){return Pe}},{key:"DefaultType",get:function(){return ze}}]),e}();t.fn[He]=Qe._jQueryInterface,t.fn[He].Constructor=Qe,t.fn[He].noConflict=function(){return t.fn[He]=Ie,Qe._jQueryInterface};var Xe="popover",Ze="bs.popover",et="."+Ze,tt=t.fn[Xe],nt="bs-popover",it=new RegExp("(^|\\s)"+nt+"\\S+","g"),st=a({},Qe.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),rt=a({},Qe.DefaultType,{content:"(string|element|function)"}),at={HIDE:"hide"+et,HIDDEN:"hidden"+et,SHOW:"show"+et,SHOWN:"shown"+et,INSERTED:"inserted"+et,CLICK:"click"+et,FOCUSIN:"focusin"+et,FOCUSOUT:"focusout"+et,MOUSEENTER:"mouseenter"+et,MOUSELEAVE:"mouseleave"+et},ot=function(e){var n,i;function r(){return e.apply(this,arguments)||this}i=e,(n=r).prototype=Object.create(i.prototype),(n.prototype.constructor=n).__proto__=i;var a=r.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(e){t(this.getTipElement()).addClass(nt+"-"+e)},a.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},a.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(".popover-body"),n),e.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(it);null!==n&&0<n.length&&e.removeClass(n.join(""))},r._jQueryInterface=function(e){return this.each((function(){var n=t(this).data(Ze),i="object"===o(e)?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new r(this,i),t(this).data(Ze,n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},s(r,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return st}},{key:"NAME",get:function(){return Xe}},{key:"DATA_KEY",get:function(){return Ze}},{key:"Event",get:function(){return at}},{key:"EVENT_KEY",get:function(){return et}},{key:"DefaultType",get:function(){return rt}}]),r}(Qe);t.fn[Xe]=ot._jQueryInterface,t.fn[Xe].Constructor=ot,t.fn[Xe].noConflict=function(){return t.fn[Xe]=tt,ot._jQueryInterface};var lt="scrollspy",ut="bs.scrollspy",dt="."+ut,ct=t.fn[lt],ht={offset:10,method:"auto",target:""},pt={offset:"number",method:"string",target:"(string|element)"},ft={ACTIVATE:"activate"+dt,SCROLL:"scroll"+dt,LOAD_DATA_API:"load"+dt+".data-api"},mt="active",_t=".nav, .list-group",gt=".nav-link",vt=".list-group-item",yt="position",bt=function(){function e(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+gt+","+this._config.target+" "+vt+","+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(ft.SCROLL,(function(e){return i._process(e)})),this.refresh(),this._process()}var n=e.prototype;return n.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?"offset":yt,i="auto"===this._config.method?n:this._config.method,s=i===yt?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(e){var n,r=u.getSelectorFromElement(e);if(r&&(n=document.querySelector(r)),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[t(n)[i]().top+s,r]}return null})).filter((function(e){return e})).sort((function(e,t){return e[0]-t[0]})).forEach((function(t){e._offsets.push(t[0]),e._targets.push(t[1])}))},n.dispose=function(){t.removeData(this._element,ut),t(this._scrollElement).off(dt),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(e){var n;return"string"!=typeof(e=a({},ht,{},"object"===o(e)&&e?e:{})).target&&((n=t(e.target).attr("id"))||(n=u.getUID(lt),t(e.target).attr("id",n)),e.target="#"+n),u.typeCheckConfig(lt,e,pt),e},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),n<=e){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;)this._activeTarget!==this._targets[s]&&e>=this._offsets[s]&&(void 0===this._offsets[s+1]||e<this._offsets[s+1])&&this._activate(this._targets[s])}},n._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",").map((function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'})),i=t([].slice.call(document.querySelectorAll(n.join(","))));i.hasClass("dropdown-item")?(i.closest(".dropdown").find(".dropdown-toggle").addClass(mt),i.addClass(mt)):(i.addClass(mt),i.parents(_t).prev(gt+", "+vt).addClass(mt),i.parents(_t).prev(".nav-item").children(gt).addClass(mt)),t(this._scrollElement).trigger(ft.ACTIVATE,{relatedTarget:e})},n._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(e){return e.classList.contains(mt)})).forEach((function(e){return e.classList.remove(mt)}))},e._jQueryInterface=function(n){return this.each((function(){var i=t(this).data(ut),s="object"===o(n)&&n;if(i||(i=new e(this,s),t(this).data(ut,i)),"string"==typeof n){if(void 0===i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return ht}}]),e}();t(window).on(ft.LOAD_DATA_API,(function(){for(var e=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),n=e.length;n--;){var i=t(e[n]);bt._jQueryInterface.call(i,i.data())}})),t.fn[lt]=bt._jQueryInterface,t.fn[lt].Constructor=bt,t.fn[lt].noConflict=function(){return t.fn[lt]=ct,bt._jQueryInterface};var wt="bs.tab",kt="."+wt,Mt=t.fn.tab,Lt={HIDE:"hide"+kt,HIDDEN:"hidden"+kt,SHOW:"show"+kt,SHOWN:"shown"+kt,CLICK_DATA_API:"click"+kt+".data-api"},Dt="active",Tt="fade",xt="show",St=".active",Yt="> li > .active",Ct=function(){function e(e){this._element=e}var n=e.prototype;return n.show=function(){var e,n,i,s,r,a,o,l,d=this;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(Dt)||t(this._element).hasClass("disabled")||(n=t(this._element).closest(".nav, .list-group")[0],i=u.getSelectorFromElement(this._element),n&&(s="UL"===n.nodeName||"OL"===n.nodeName?Yt:St,r=(r=t.makeArray(t(n).find(s)))[r.length-1]),a=t.Event(Lt.HIDE,{relatedTarget:this._element}),o=t.Event(Lt.SHOW,{relatedTarget:r}),r&&t(r).trigger(a),t(this._element).trigger(o),o.isDefaultPrevented()||a.isDefaultPrevented()||(i&&(e=document.querySelector(i)),this._activate(this._element,n),l=function(){var e=t.Event(Lt.HIDDEN,{relatedTarget:d._element}),n=t.Event(Lt.SHOWN,{relatedTarget:r});t(r).trigger(e),t(d._element).trigger(n)},e?this._activate(e,e.parentNode,l):l()))},n.dispose=function(){t.removeData(this._element,wt),this._element=null},n._activate=function(e,n,i){function s(){return a._transitionComplete(e,o,i)}var r,a=this,o=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?t(n).children(St):t(n).find(Yt))[0],l=i&&o&&t(o).hasClass(Tt);o&&l?(r=u.getTransitionDurationFromElement(o),t(o).removeClass(xt).one(u.TRANSITION_END,s).emulateTransitionEnd(r)):s()},n._transitionComplete=function(e,n,i){var s,r,a;n&&(t(n).removeClass(Dt),(s=t(n.parentNode).find("> .dropdown-menu .active")[0])&&t(s).removeClass(Dt),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)),t(e).addClass(Dt),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),u.reflow(e),e.classList.contains(Tt)&&e.classList.add(xt),e.parentNode&&t(e.parentNode).hasClass("dropdown-menu")&&((r=t(e).closest(".dropdown")[0])&&(a=[].slice.call(r.querySelectorAll(".dropdown-toggle")),t(a).addClass(Dt)),e.setAttribute("aria-expanded",!0)),i&&i()},e._jQueryInterface=function(n){return this.each((function(){var i=t(this),s=i.data(wt);if(s||(s=new e(this),i.data(wt,s)),"string"==typeof n){if(void 0===s[n])throw new TypeError('No method named "'+n+'"');s[n]()}}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),e}();t(document).on(Lt.CLICK_DATA_API,'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(e){e.preventDefault(),Ct._jQueryInterface.call(t(this),"show")})),t.fn.tab=Ct._jQueryInterface,t.fn.tab.Constructor=Ct,t.fn.tab.noConflict=function(){return t.fn.tab=Mt,Ct._jQueryInterface};var Et="toast",Ot="bs.toast",At="."+Ot,Ht=t.fn[Et],jt={CLICK_DISMISS:"click.dismiss"+At,HIDE:"hide"+At,HIDDEN:"hidden"+At,SHOW:"show"+At,SHOWN:"shown"+At},Pt="hide",It="show",Ft="showing",Nt={animation:"boolean",autohide:"boolean",delay:"number"},Wt={animation:!0,autohide:!0,delay:500},zt=function(){function e(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var n=e.prototype;return n.show=function(){var e,n,i=this,s=t.Event(jt.SHOW);t(this._element).trigger(s),s.isDefaultPrevented()||(this._config.animation&&this._element.classList.add("fade"),e=function(){i._element.classList.remove(Ft),i._element.classList.add(It),t(i._element).trigger(jt.SHOWN),i._config.autohide&&(i._timeout=setTimeout((function(){i.hide()}),i._config.delay))},this._element.classList.remove(Pt),u.reflow(this._element),this._element.classList.add(Ft),this._config.animation?(n=u.getTransitionDurationFromElement(this._element),t(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)):e())},n.hide=function(){var e;this._element.classList.contains(It)&&(e=t.Event(jt.HIDE),t(this._element).trigger(e),e.isDefaultPrevented()||this._close())},n.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(It)&&this._element.classList.remove(It),t(this._element).off(jt.CLICK_DISMISS),t.removeData(this._element,Ot),this._element=null,this._config=null},n._getConfig=function(e){return e=a({},Wt,{},t(this._element).data(),{},"object"===o(e)&&e?e:{}),u.typeCheckConfig(Et,e,this.constructor.DefaultType),e},n._setListeners=function(){var e=this;t(this._element).on(jt.CLICK_DISMISS,'[data-dismiss="toast"]',(function(){return e.hide()}))},n._close=function(){function e(){i._element.classList.add(Pt),t(i._element).trigger(jt.HIDDEN)}var n,i=this;this._element.classList.remove(It),this._config.animation?(n=u.getTransitionDurationFromElement(this._element),t(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)):e()},e._jQueryInterface=function(n){return this.each((function(){var i=t(this),s=i.data(Ot),r="object"===o(n)&&n;if(s||(s=new e(this,r),i.data(Ot,s)),"string"==typeof n){if(void 0===s[n])throw new TypeError('No method named "'+n+'"');s[n](this)}}))},s(e,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"DefaultType",get:function(){return Nt}},{key:"Default",get:function(){return Wt}}]),e}();t.fn[Et]=zt._jQueryInterface,t.fn[Et].Constructor=zt,t.fn[Et].noConflict=function(){return t.fn[Et]=Ht,zt._jQueryInterface},e.Alert=m,e.Button=T,e.Carousel=W,e.Collapse=ee,e.Dropdown=me,e.Modal=Ye,e.Popover=ot,e.Scrollspy=bt,e.Tab=Ct,e.Toast=zt,e.Tooltip=Qe,e.Util=u,Object.defineProperty(e,"__esModule",{value:!0})},"object"===o(t)&&void 0!==e?a(t,n(0),n(4)):(s=[t,n(0),n(4)],void 0===(r="function"==typeof(i=a)?i.apply(t,s):i)||(e.exports=r))},function(e,t,n){(function(i){var s,r,a;function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}r=[n(0)],void 0===(a="function"==typeof(s=function(e){var t=function(){if(e&&e.fn&&e.fn.select2&&e.fn.select2.amd)var t=e.fn.select2.amd;return function(){var e,n,i;t&&t.requirejs||(t?n=t:t={},function(t){var s,r,a,l,u={},d={},c={},h={},p=Object.prototype.hasOwnProperty,f=[].slice,m=/\.js$/;function _(e,t){return p.call(e,t)}function g(e,t){var n,i,s,r,a,o,l,u,d,h,p,f=t&&t.split("/"),_=c.map,g=_&&_["*"]||{};if(e){for(a=(e=e.split("/")).length-1,c.nodeIdCompat&&m.test(e[a])&&(e[a]=e[a].replace(m,"")),"."===e[0].charAt(0)&&f&&(e=f.slice(0,f.length-1).concat(e)),d=0;d<e.length;d++)if("."===(p=e[d]))e.splice(d,1),d-=1;else if(".."===p){if(0===d||1===d&&".."===e[2]||".."===e[d-1])continue;d>0&&(e.splice(d-1,2),d-=2)}e=e.join("/")}if((f||g)&&_){for(d=(n=e.split("/")).length;d>0;d-=1){if(i=n.slice(0,d).join("/"),f)for(h=f.length;h>0;h-=1)if((s=_[f.slice(0,h).join("/")])&&(s=s[i])){r=s,o=d;break}if(r)break;!l&&g&&g[i]&&(l=g[i],u=d)}!r&&l&&(r=l,o=u),r&&(n.splice(0,o,r),e=n.join("/"))}return e}function v(e,n){return function(){var i=f.call(arguments,0);return"string"!=typeof i[0]&&1===i.length&&i.push(null),r.apply(t,i.concat([e,n]))}}function y(e){return function(t){u[e]=t}}function b(e){if(_(d,e)){var n=d[e];delete d[e],h[e]=!0,s.apply(t,n)}if(!_(u,e)&&!_(h,e))throw new Error("No "+e);return u[e]}function w(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function k(e){return e?w(e):[]}function M(e){return function(){return c&&c.config&&c.config[e]||{}}}a=function(e,t){var n,i=w(e),s=i[0],r=t[1];return e=i[1],s&&(n=b(s=g(s,r))),s?e=n&&n.normalize?n.normalize(e,function(e){return function(t){return g(t,e)}}(r)):g(e,r):(s=(i=w(e=g(e,r)))[0],e=i[1],s&&(n=b(s))),{f:s?s+"!"+e:e,n:e,pr:s,p:n}},l={require:function(e){return v(e)},exports:function(e){var t=u[e];return void 0!==t?t:u[e]={}},module:function(e){return{id:e,uri:"",exports:u[e],config:M(e)}}},s=function(e,n,i,s){var r,c,p,f,m,g,w,M=[],L=o(i);if(g=k(s=s||e),"undefined"===L||"function"===L){for(n=!n.length&&i.length?["require","exports","module"]:n,m=0;m<n.length;m+=1)if("require"===(c=(f=a(n[m],g)).f))M[m]=l.require(e);else if("exports"===c)M[m]=l.exports(e),w=!0;else if("module"===c)r=M[m]=l.module(e);else if(_(u,c)||_(d,c)||_(h,c))M[m]=b(c);else{if(!f.p)throw new Error(e+" missing "+c);f.p.load(f.n,v(s,!0),y(c),{}),M[m]=u[c]}p=i?i.apply(u[e],M):void 0,e&&(r&&r.exports!==t&&r.exports!==u[e]?u[e]=r.exports:p===t&&w||(u[e]=p))}else e&&(u[e]=i)},e=n=r=function(e,n,i,o,u){if("string"==typeof e)return l[e]?l[e](n):b(a(e,k(n)).f);if(!e.splice){if((c=e).deps&&r(c.deps,c.callback),!n)return;n.splice?(e=n,n=i,i=null):e=t}return n=n||function(){},"function"==typeof i&&(i=o,o=u),o?s(t,e,n,i):setTimeout((function(){s(t,e,n,i)}),4),r},r.config=function(e){return r(e)},e._defined=u,(i=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),_(u,e)||_(d,e)||(d[e]=[e,t,n])}).amd={jQuery:!0}}(),t.requirejs=e,t.require=n,t.define=i)}(),t.define("almond",(function(){})),t.define("jquery",[],(function(){var t=e||i;return null==t&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),t})),t.define("select2/utils",["jquery"],(function(e){var t={};function n(e){var t=e.prototype,n=[];for(var i in t)"function"==typeof t[i]&&"constructor"!==i&&n.push(i);return n}t.Extend=function(e,t){var n={}.hasOwnProperty;function i(){this.constructor=e}for(var s in t)n.call(t,s)&&(e[s]=t[s]);return i.prototype=t.prototype,e.prototype=new i,e.__super__=t.prototype,e},t.Decorate=function(e,t){var i=n(t),s=n(e);function r(){var n=Array.prototype.unshift,i=t.prototype.constructor.length,s=e.prototype.constructor;i>0&&(n.call(arguments,e.prototype.constructor),s=t.prototype.constructor),s.apply(this,arguments)}t.displayName=e.displayName,r.prototype=new function(){this.constructor=r};for(var a=0;a<s.length;a++){var o=s[a];r.prototype[o]=e.prototype[o]}for(var l=function(e){var n=function(){};e in r.prototype&&(n=r.prototype[e]);var i=t.prototype[e];return function(){var e=Array.prototype.unshift;return e.call(arguments,n),i.apply(this,arguments)}},u=0;u<i.length;u++){var d=i[u];r.prototype[d]=l(d)}return r};var i=function(){this.listeners={}};i.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},i.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),n[0]._type=e,e in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},i.prototype.invoke=function(e,t){for(var n=0,i=e.length;n<i;n++)e[n].apply(this,t)},t.Observable=i,t.generateChars=function(e){for(var t="",n=0;n<e;n++)t+=Math.floor(36*Math.random()).toString(36);return t},t.bind=function(e,t){return function(){e.apply(t,arguments)}},t._convertData=function(e){for(var t in e){var n=t.split("-"),i=e;if(1!==n.length){for(var s=0;s<n.length;s++){var r=n[s];(r=r.substring(0,1).toLowerCase()+r.substring(1))in i||(i[r]={}),s==n.length-1&&(i[r]=e[t]),i=i[r]}delete e[t]}}return e},t.hasScroll=function(t,n){var i=e(n),s=n.style.overflowX,r=n.style.overflowY;return(s!==r||"hidden"!==r&&"visible"!==r)&&("scroll"===s||"scroll"===r||i.innerHeight()<n.scrollHeight||i.innerWidth()<n.scrollWidth)},t.escapeMarkup=function(e){var t={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,(function(e){return t[e]}))},t.appendMany=function(t,n){if("1.7"===e.fn.jquery.substr(0,3)){var i=e();e.map(n,(function(e){i=i.add(e)})),n=i}t.append(n)},t.__cache={};var s=0;return t.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++s),t=s.toString())),t},t.StoreData=function(e,n,i){var s=t.GetUniqueElementId(e);t.__cache[s]||(t.__cache[s]={}),t.__cache[s][n]=i},t.GetData=function(n,i){var s=t.GetUniqueElementId(n);return i?t.__cache[s]&&null!=t.__cache[s][i]?t.__cache[s][i]:e(n).data(i):t.__cache[s]},t.RemoveData=function(e){var n=t.GetUniqueElementId(e);null!=t.__cache[n]&&delete t.__cache[n],e.removeAttribute("data-select2-id")},t})),t.define("select2/results",["jquery","./utils"],(function(e,t){function n(e,t,i){this.$element=e,this.data=i,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<ul class="select2-results__options" role="listbox"></ul>');return this.options.get("multiple")&&t.attr("aria-multiselectable","true"),this.$results=t,t},n.prototype.clear=function(){this.$results.empty()},n.prototype.displayMessage=function(t){var n=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var i=e('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),s=this.options.get("translations").get(t.message);i.append(n(s(t.args))),i[0].className+=" select2-results__message",this.$results.append(i)},n.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},n.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var i=e.results[n],s=this.option(i);t.push(s)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},n.prototype.position=function(e,t){t.find(".select2-results").append(e)},n.prototype.sort=function(e){return this.options.get("sorter")(e)},n.prototype.highlightFirstItem=function(){var e=this.$results.find(".select2-results__option[aria-selected]"),t=e.filter("[aria-selected=true]");t.length>0?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},n.prototype.setClasses=function(){var n=this;this.data.current((function(i){var s=e.map(i,(function(e){return e.id.toString()}));n.$results.find(".select2-results__option[aria-selected]").each((function(){var n=e(this),i=t.GetData(this,"data"),r=""+i.id;null!=i.element&&i.element.selected||null==i.element&&e.inArray(r,s)>-1?n.attr("aria-selected","true"):n.attr("aria-selected","false")}))}))},n.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},n.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},n.prototype.option=function(n){var i=document.createElement("li");i.className="select2-results__option";var s={role:"option","aria-selected":"false"},r=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var a in(null!=n.element&&r.call(n.element,":disabled")||null==n.element&&n.disabled)&&(delete s["aria-selected"],s["aria-disabled"]="true"),null==n.id&&delete s["aria-selected"],null!=n._resultId&&(i.id=n._resultId),n.title&&(i.title=n.title),n.children&&(s.role="group",s["aria-label"]=n.text,delete s["aria-selected"]),s){var o=s[a];i.setAttribute(a,o)}if(n.children){var l=e(i),u=document.createElement("strong");u.className="select2-results__group",e(u),this.template(n,u);for(var d=[],c=0;c<n.children.length;c++){var h=n.children[c],p=this.option(h);d.push(p)}var f=e("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});f.append(d),l.append(u),l.append(f)}else this.template(n,i);return t.StoreData(i,"data",n),i},n.prototype.bind=function(n,i){var s=this,r=n.id+"-results";this.$results.attr("id",r),n.on("results:all",(function(e){s.clear(),s.append(e.data),n.isOpen()&&(s.setClasses(),s.highlightFirstItem())})),n.on("results:append",(function(e){s.append(e.data),n.isOpen()&&s.setClasses()})),n.on("query",(function(e){s.hideMessages(),s.showLoading(e)})),n.on("select",(function(){n.isOpen()&&(s.setClasses(),s.options.get("scrollAfterSelect")&&s.highlightFirstItem())})),n.on("unselect",(function(){n.isOpen()&&(s.setClasses(),s.options.get("scrollAfterSelect")&&s.highlightFirstItem())})),n.on("open",(function(){s.$results.attr("aria-expanded","true"),s.$results.attr("aria-hidden","false"),s.setClasses(),s.ensureHighlightVisible()})),n.on("close",(function(){s.$results.attr("aria-expanded","false"),s.$results.attr("aria-hidden","true"),s.$results.removeAttr("aria-activedescendant")})),n.on("results:toggle",(function(){var e=s.getHighlightedResults();0!==e.length&&e.trigger("mouseup")})),n.on("results:select",(function(){var e=s.getHighlightedResults();if(0!==e.length){var n=t.GetData(e[0],"data");"true"==e.attr("aria-selected")?s.trigger("close",{}):s.trigger("select",{data:n})}})),n.on("results:previous",(function(){var e=s.getHighlightedResults(),t=s.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var a=s.$results.offset().top,o=r.offset().top,l=s.$results.scrollTop()+(o-a);0===i?s.$results.scrollTop(0):o-a<0&&s.$results.scrollTop(l)}})),n.on("results:next",(function(){var e=s.getHighlightedResults(),t=s.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=s.$results.offset().top+s.$results.outerHeight(!1),a=i.offset().top+i.outerHeight(!1),o=s.$results.scrollTop()+a-r;0===n?s.$results.scrollTop(0):a>r&&s.$results.scrollTop(o)}})),n.on("results:focus",(function(e){e.element.addClass("select2-results__option--highlighted")})),n.on("results:message",(function(e){s.displayMessage(e)})),e.fn.mousewheel&&this.$results.on("mousewheel",(function(e){var t=s.$results.scrollTop(),n=s.$results.get(0).scrollHeight-t+e.deltaY,i=e.deltaY>0&&t-e.deltaY<=0,r=e.deltaY<0&&n<=s.$results.height();i?(s.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):r&&(s.$results.scrollTop(s.$results.get(0).scrollHeight-s.$results.height()),e.preventDefault(),e.stopPropagation())})),this.$results.on("mouseup",".select2-results__option[aria-selected]",(function(n){var i=e(this),r=t.GetData(this,"data");"true"!==i.attr("aria-selected")?s.trigger("select",{originalEvent:n,data:r}):s.options.get("multiple")?s.trigger("unselect",{originalEvent:n,data:r}):s.trigger("close",{})})),this.$results.on("mouseenter",".select2-results__option[aria-selected]",(function(n){var i=t.GetData(this,"data");s.getHighlightedResults().removeClass("select2-results__option--highlighted"),s.trigger("results:focus",{data:i,element:e(this)})}))},n.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},n.prototype.destroy=function(){this.$results.remove()},n.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find("[aria-selected]").index(e),n=this.$results.offset().top,i=e.offset().top,s=this.$results.scrollTop()+(i-n),r=i-n;s-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(r>this.$results.outerHeight()||r<0)&&this.$results.scrollTop(s)}},n.prototype.template=function(t,n){var i=this.options.get("templateResult"),s=this.options.get("escapeMarkup"),r=i(t,n);null==r?n.style.display="none":"string"==typeof r?n.innerHTML=s(r):e(n).append(r)},n})),t.define("select2/keys",[],(function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}})),t.define("select2/selection/base",["jquery","../utils","../keys"],(function(e,t,n){function i(e,t){this.$element=e,this.options=t,i.__super__.constructor.call(this)}return t.Extend(i,t.Observable),i.prototype.render=function(){var n=e('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=t.GetData(this.$element[0],"old-tabindex")?this._tabindex=t.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),n.attr("title",this.$element.attr("title")),n.attr("tabindex",this._tabindex),n.attr("aria-disabled","false"),this.$selection=n,n},i.prototype.bind=function(e,t){var i=this,s=e.id+"-results";this.container=e,this.$selection.on("focus",(function(e){i.trigger("focus",e)})),this.$selection.on("blur",(function(e){i._handleBlur(e)})),this.$selection.on("keydown",(function(e){i.trigger("keypress",e),e.which===n.SPACE&&e.preventDefault()})),e.on("results:focus",(function(e){i.$selection.attr("aria-activedescendant",e.data._resultId)})),e.on("selection:update",(function(e){i.update(e.data)})),e.on("open",(function(){i.$selection.attr("aria-expanded","true"),i.$selection.attr("aria-owns",s),i._attachCloseHandler(e)})),e.on("close",(function(){i.$selection.attr("aria-expanded","false"),i.$selection.removeAttr("aria-activedescendant"),i.$selection.removeAttr("aria-owns"),i.$selection.trigger("focus"),i._detachCloseHandler(e)})),e.on("enable",(function(){i.$selection.attr("tabindex",i._tabindex),i.$selection.attr("aria-disabled","false")})),e.on("disable",(function(){i.$selection.attr("tabindex","-1"),i.$selection.attr("aria-disabled","true")}))},i.prototype._handleBlur=function(t){var n=this;window.setTimeout((function(){document.activeElement==n.$selection[0]||e.contains(n.$selection[0],document.activeElement)||n.trigger("blur",t)}),1)},i.prototype._attachCloseHandler=function(n){e(document.body).on("mousedown.select2."+n.id,(function(n){var i=e(n.target).closest(".select2");e(".select2.select2-container--open").each((function(){this!=i[0]&&t.GetData(this,"element").select2("close")}))}))},i.prototype._detachCloseHandler=function(t){e(document.body).off("mousedown.select2."+t.id)},i.prototype.position=function(e,t){t.find(".selection").append(e)},i.prototype.destroy=function(){this._detachCloseHandler(this.container)},i.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},i.prototype.isEnabled=function(){return!this.isDisabled()},i.prototype.isDisabled=function(){return this.options.get("disabled")},i})),t.define("select2/selection/single",["jquery","./base","../utils","../keys"],(function(e,t,n,i){function s(){s.__super__.constructor.apply(this,arguments)}return n.Extend(s,t),s.prototype.render=function(){var e=s.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},s.prototype.bind=function(e,t){var n=this;s.__super__.bind.apply(this,arguments);var i=e.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",(function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})})),this.$selection.on("focus",(function(e){})),this.$selection.on("blur",(function(e){})),e.on("focus",(function(t){e.isOpen()||n.$selection.trigger("focus")}))},s.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},s.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},s.prototype.selectionContainer=function(){return e("<span></span>")},s.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var s=t.title||t.text;s?n.attr("title",s):n.removeAttr("title")}else this.clear()},s})),t.define("select2/selection/multiple",["jquery","./base","../utils"],(function(e,t,n){function i(e,t){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('<ul class="select2-selection__rendered"></ul>'),e},i.prototype.bind=function(t,s){var r=this;i.__super__.bind.apply(this,arguments),this.$selection.on("click",(function(e){r.trigger("toggle",{originalEvent:e})})),this.$selection.on("click",".select2-selection__choice__remove",(function(t){if(!r.isDisabled()){var i=e(this).parent(),s=n.GetData(i[0],"data");r.trigger("unselect",{originalEvent:t,data:s})}}))},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>')},i.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],i=0;i<e.length;i++){var s=e[i],r=this.selectionContainer(),a=this.display(s,r);r.append(a);var o=s.title||s.text;o&&r.attr("title",o),n.StoreData(r[0],"data",s),t.push(r)}var l=this.$selection.find(".select2-selection__rendered");n.appendMany(l,t)}},i})),t.define("select2/selection/placeholder",["../utils"],(function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(t.length>1||n)return e.call(this,t);this.clear();var i=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(i)},t})),t.define("select2/selection/allowClear",["jquery","../keys","../utils"],(function(e,t,n){function i(){}return i.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",(function(e){i._handleClear(e)})),t.on("keypress",(function(e){i._handleKeyboardClear(e,t)}))},i.prototype._handleClear=function(e,t){if(!this.isDisabled()){var i=this.$selection.find(".select2-selection__clear");if(0!==i.length){t.stopPropagation();var s=n.GetData(i[0],"data"),r=this.$element.val();this.$element.val(this.placeholder.id);var a={data:s};if(this.trigger("clear",a),a.prevented)this.$element.val(r);else{for(var o=0;o<s.length;o++)if(a={data:s[o]},this.trigger("unselect",a),a.prevented)return void this.$element.val(r);this.$element.trigger("input").trigger("change"),this.trigger("toggle",{})}}}},i.prototype._handleKeyboardClear=function(e,n,i){i.isOpen()||n.which!=t.DELETE&&n.which!=t.BACKSPACE||this._handleClear(n)},i.prototype.update=function(t,i){if(t.call(this,i),!(this.$selection.find(".select2-selection__placeholder").length>0||0===i.length)){var s=this.options.get("translations").get("removeAllItems"),r=e('<span class="select2-selection__clear" title="'+s()+'">×</span>');n.StoreData(r[0],"data",i),this.$selection.find(".select2-selection__rendered").prepend(r)}},i})),t.define("select2/selection/search",["jquery","../utils","../keys"],(function(e,t,n){function i(e,t,n){e.call(this,t,n)}return i.prototype.render=function(t){var n=e('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');this.$searchContainer=n,this.$search=n.find("input");var i=t.call(this);return this._transferTabIndex(),i},i.prototype.bind=function(e,i,s){var r=this,a=i.id+"-results";e.call(this,i,s),i.on("open",(function(){r.$search.attr("aria-controls",a),r.$search.trigger("focus")})),i.on("close",(function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")})),i.on("enable",(function(){r.$search.prop("disabled",!1),r._transferTabIndex()})),i.on("disable",(function(){r.$search.prop("disabled",!0)})),i.on("focus",(function(e){r.$search.trigger("focus")})),i.on("results:focus",(function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})),this.$selection.on("focusin",".select2-search--inline",(function(e){r.trigger("focus",e)})),this.$selection.on("focusout",".select2-search--inline",(function(e){r._handleBlur(e)})),this.$selection.on("keydown",".select2-search--inline",(function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===n.BACKSPACE&&""===r.$search.val()){var i=r.$searchContainer.prev(".select2-selection__choice");if(i.length>0){var s=t.GetData(i[0],"data");r.searchRemoveChoice(s),e.preventDefault()}}})),this.$selection.on("click",".select2-search--inline",(function(e){r.$search.val()&&e.stopPropagation()}));var o=document.documentMode,l=o&&o<=11;this.$selection.on("input.searchcheck",".select2-search--inline",(function(e){l?r.$selection.off("input.search input.searchcheck"):r.$selection.off("keyup.search")})),this.$selection.on("keyup.search input.search",".select2-search--inline",(function(e){if(l&&"input"===e.type)r.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=n.SHIFT&&t!=n.CTRL&&t!=n.ALT&&t!=n.TAB&&r.handleSearch(e)}}))},i.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},i.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},i.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger("focus")},i.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},i.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},i.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="";e=""!==this.$search.attr("placeholder")?this.$selection.find(".select2-selection__rendered").width():.75*(this.$search.val().length+1)+"em",this.$search.css("width",e)},i})),t.define("select2/selection/eventRelay",["jquery"],(function(e){function t(){}return t.prototype.bind=function(t,n,i){var s=this,r=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],a=["opening","closing","selecting","unselecting","clearing"];t.call(this,n,i),n.on("*",(function(t,n){if(-1!==e.inArray(t,r)){n=n||{};var i=e.Event("select2:"+t,{params:n});s.$element.trigger(i),-1!==e.inArray(t,a)&&(n.prevented=i.isDefaultPrevented())}}))},t})),t.define("select2/translation",["jquery","require"],(function(e,t){function n(e){this.dict=e||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(e){return this.dict[e]},n.prototype.extend=function(t){this.dict=e.extend({},t.all(),this.dict)},n._cache={},n.loadPath=function(e){if(!(e in n._cache)){var i=t(e);n._cache[e]=i}return new n(n._cache[e])},n})),t.define("select2/diacritics",[],(function(){return{"Ⓐ":"A",A:"A",À:"A",Á:"A",Â:"A",Ầ:"A",Ấ:"A",Ẫ:"A",Ẩ:"A",Ã:"A",Ā:"A",Ă:"A",Ằ:"A",Ắ:"A",Ẵ:"A",Ẳ:"A",Ȧ:"A",Ǡ:"A",Ä:"A",Ǟ:"A",Ả:"A",Å:"A",Ǻ:"A",Ǎ:"A",Ȁ:"A",Ȃ:"A",Ạ:"A",Ậ:"A",Ặ:"A",Ḁ:"A",Ą:"A",Ⱥ:"A",Ɐ:"A",Ꜳ:"AA",Æ:"AE",Ǽ:"AE",Ǣ:"AE",Ꜵ:"AO",Ꜷ:"AU",Ꜹ:"AV",Ꜻ:"AV",Ꜽ:"AY","Ⓑ":"B",B:"B",Ḃ:"B",Ḅ:"B",Ḇ:"B",Ƀ:"B",Ƃ:"B",Ɓ:"B","Ⓒ":"C",C:"C",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",Ç:"C",Ḉ:"C",Ƈ:"C",Ȼ:"C",Ꜿ:"C","Ⓓ":"D",D:"D",Ḋ:"D",Ď:"D",Ḍ:"D",Ḑ:"D",Ḓ:"D",Ḏ:"D",Đ:"D",Ƌ:"D",Ɗ:"D",Ɖ:"D",Ꝺ:"D",DZ:"DZ",DŽ:"DZ",Dz:"Dz",Dž:"Dz","Ⓔ":"E",E:"E",È:"E",É:"E",Ê:"E",Ề:"E",Ế:"E",Ễ:"E",Ể:"E",Ẽ:"E",Ē:"E",Ḕ:"E",Ḗ:"E",Ĕ:"E",Ė:"E",Ë:"E",Ẻ:"E",Ě:"E",Ȅ:"E",Ȇ:"E",Ẹ:"E",Ệ:"E",Ȩ:"E",Ḝ:"E",Ę:"E",Ḙ:"E",Ḛ:"E",Ɛ:"E",Ǝ:"E","Ⓕ":"F",F:"F",Ḟ:"F",Ƒ:"F",Ꝼ:"F","Ⓖ":"G",G:"G",Ǵ:"G",Ĝ:"G",Ḡ:"G",Ğ:"G",Ġ:"G",Ǧ:"G",Ģ:"G",Ǥ:"G",Ɠ:"G",Ꞡ:"G",Ᵹ:"G",Ꝿ:"G","Ⓗ":"H",H:"H",Ĥ:"H",Ḣ:"H",Ḧ:"H",Ȟ:"H",Ḥ:"H",Ḩ:"H",Ḫ:"H",Ħ:"H",Ⱨ:"H",Ⱶ:"H",Ɥ:"H","Ⓘ":"I",I:"I",Ì:"I",Í:"I",Î:"I",Ĩ:"I",Ī:"I",Ĭ:"I",İ:"I",Ï:"I",Ḯ:"I",Ỉ:"I",Ǐ:"I",Ȉ:"I",Ȋ:"I",Ị:"I",Į:"I",Ḭ:"I",Ɨ:"I","Ⓙ":"J",J:"J",Ĵ:"J",Ɉ:"J","Ⓚ":"K",K:"K",Ḱ:"K",Ǩ:"K",Ḳ:"K",Ķ:"K",Ḵ:"K",Ƙ:"K",Ⱪ:"K",Ꝁ:"K",Ꝃ:"K",Ꝅ:"K",Ꞣ:"K","Ⓛ":"L",L:"L",Ŀ:"L",Ĺ:"L",Ľ:"L",Ḷ:"L",Ḹ:"L",Ļ:"L",Ḽ:"L",Ḻ:"L",Ł:"L",Ƚ:"L",Ɫ:"L",Ⱡ:"L",Ꝉ:"L",Ꝇ:"L",Ꞁ:"L",LJ:"LJ",Lj:"Lj","Ⓜ":"M",M:"M",Ḿ:"M",Ṁ:"M",Ṃ:"M",Ɱ:"M",Ɯ:"M","Ⓝ":"N",N:"N",Ǹ:"N",Ń:"N",Ñ:"N",Ṅ:"N",Ň:"N",Ṇ:"N",Ņ:"N",Ṋ:"N",Ṉ:"N",Ƞ:"N",Ɲ:"N",Ꞑ:"N",Ꞥ:"N",NJ:"NJ",Nj:"Nj","Ⓞ":"O",O:"O",Ò:"O",Ó:"O",Ô:"O",Ồ:"O",Ố:"O",Ỗ:"O",Ổ:"O",Õ:"O",Ṍ:"O",Ȭ:"O",Ṏ:"O",Ō:"O",Ṑ:"O",Ṓ:"O",Ŏ:"O",Ȯ:"O",Ȱ:"O",Ö:"O",Ȫ:"O",Ỏ:"O",Ő:"O",Ǒ:"O",Ȍ:"O",Ȏ:"O",Ơ:"O",Ờ:"O",Ớ:"O",Ỡ:"O",Ở:"O",Ợ:"O",Ọ:"O",Ộ:"O",Ǫ:"O",Ǭ:"O",Ø:"O",Ǿ:"O",Ɔ:"O",Ɵ:"O",Ꝋ:"O",Ꝍ:"O",Œ:"OE",Ƣ:"OI",Ꝏ:"OO",Ȣ:"OU","Ⓟ":"P",P:"P",Ṕ:"P",Ṗ:"P",Ƥ:"P",Ᵽ:"P",Ꝑ:"P",Ꝓ:"P",Ꝕ:"P","Ⓠ":"Q",Q:"Q",Ꝗ:"Q",Ꝙ:"Q",Ɋ:"Q","Ⓡ":"R",R:"R",Ŕ:"R",Ṙ:"R",Ř:"R",Ȑ:"R",Ȓ:"R",Ṛ:"R",Ṝ:"R",Ŗ:"R",Ṟ:"R",Ɍ:"R",Ɽ:"R",Ꝛ:"R",Ꞧ:"R",Ꞃ:"R","Ⓢ":"S",S:"S",ẞ:"S",Ś:"S",Ṥ:"S",Ŝ:"S",Ṡ:"S",Š:"S",Ṧ:"S",Ṣ:"S",Ṩ:"S",Ș:"S",Ş:"S",Ȿ:"S",Ꞩ:"S",Ꞅ:"S","Ⓣ":"T",T:"T",Ṫ:"T",Ť:"T",Ṭ:"T",Ț:"T",Ţ:"T",Ṱ:"T",Ṯ:"T",Ŧ:"T",Ƭ:"T",Ʈ:"T",Ⱦ:"T",Ꞇ:"T",Ꜩ:"TZ","Ⓤ":"U",U:"U",Ù:"U",Ú:"U",Û:"U",Ũ:"U",Ṹ:"U",Ū:"U",Ṻ:"U",Ŭ:"U",Ü:"U",Ǜ:"U",Ǘ:"U",Ǖ:"U",Ǚ:"U",Ủ:"U",Ů:"U",Ű:"U",Ǔ:"U",Ȕ:"U",Ȗ:"U",Ư:"U",Ừ:"U",Ứ:"U",Ữ:"U",Ử:"U",Ự:"U",Ụ:"U",Ṳ:"U",Ų:"U",Ṷ:"U",Ṵ:"U",Ʉ:"U","Ⓥ":"V",V:"V",Ṽ:"V",Ṿ:"V",Ʋ:"V",Ꝟ:"V",Ʌ:"V",Ꝡ:"VY","Ⓦ":"W",W:"W",Ẁ:"W",Ẃ:"W",Ŵ:"W",Ẇ:"W",Ẅ:"W",Ẉ:"W",Ⱳ:"W","Ⓧ":"X",X:"X",Ẋ:"X",Ẍ:"X","Ⓨ":"Y",Y:"Y",Ỳ:"Y",Ý:"Y",Ŷ:"Y",Ỹ:"Y",Ȳ:"Y",Ẏ:"Y",Ÿ:"Y",Ỷ:"Y",Ỵ:"Y",Ƴ:"Y",Ɏ:"Y",Ỿ:"Y","Ⓩ":"Z",Z:"Z",Ź:"Z",Ẑ:"Z",Ż:"Z",Ž:"Z",Ẓ:"Z",Ẕ:"Z",Ƶ:"Z",Ȥ:"Z",Ɀ:"Z",Ⱬ:"Z",Ꝣ:"Z","ⓐ":"a",a:"a",ẚ:"a",à:"a",á:"a",â:"a",ầ:"a",ấ:"a",ẫ:"a",ẩ:"a",ã:"a",ā:"a",ă:"a",ằ:"a",ắ:"a",ẵ:"a",ẳ:"a",ȧ:"a",ǡ:"a",ä:"a",ǟ:"a",ả:"a",å:"a",ǻ:"a",ǎ:"a",ȁ:"a",ȃ:"a",ạ:"a",ậ:"a",ặ:"a",ḁ:"a",ą:"a",ⱥ:"a",ɐ:"a",ꜳ:"aa",æ:"ae",ǽ:"ae",ǣ:"ae",ꜵ:"ao",ꜷ:"au",ꜹ:"av",ꜻ:"av",ꜽ:"ay","ⓑ":"b",b:"b",ḃ:"b",ḅ:"b",ḇ:"b",ƀ:"b",ƃ:"b",ɓ:"b","ⓒ":"c",c:"c",ć:"c",ĉ:"c",ċ:"c",č:"c",ç:"c",ḉ:"c",ƈ:"c",ȼ:"c",ꜿ:"c",ↄ:"c","ⓓ":"d",d:"d",ḋ:"d",ď:"d",ḍ:"d",ḑ:"d",ḓ:"d",ḏ:"d",đ:"d",ƌ:"d",ɖ:"d",ɗ:"d",ꝺ:"d",dz:"dz",dž:"dz","ⓔ":"e",e:"e",è:"e",é:"e",ê:"e",ề:"e",ế:"e",ễ:"e",ể:"e",ẽ:"e",ē:"e",ḕ:"e",ḗ:"e",ĕ:"e",ė:"e",ë:"e",ẻ:"e",ě:"e",ȅ:"e",ȇ:"e",ẹ:"e",ệ:"e",ȩ:"e",ḝ:"e",ę:"e",ḙ:"e",ḛ:"e",ɇ:"e",ɛ:"e",ǝ:"e","ⓕ":"f",f:"f",ḟ:"f",ƒ:"f",ꝼ:"f","ⓖ":"g",g:"g",ǵ:"g",ĝ:"g",ḡ:"g",ğ:"g",ġ:"g",ǧ:"g",ģ:"g",ǥ:"g",ɠ:"g",ꞡ:"g",ᵹ:"g",ꝿ:"g","ⓗ":"h",h:"h",ĥ:"h",ḣ:"h",ḧ:"h",ȟ:"h",ḥ:"h",ḩ:"h",ḫ:"h",ẖ:"h",ħ:"h",ⱨ:"h",ⱶ:"h",ɥ:"h",ƕ:"hv","ⓘ":"i",i:"i",ì:"i",í:"i",î:"i",ĩ:"i",ī:"i",ĭ:"i",ï:"i",ḯ:"i",ỉ:"i",ǐ:"i",ȉ:"i",ȋ:"i",ị:"i",į:"i",ḭ:"i",ɨ:"i",ı:"i","ⓙ":"j",j:"j",ĵ:"j",ǰ:"j",ɉ:"j","ⓚ":"k",k:"k",ḱ:"k",ǩ:"k",ḳ:"k",ķ:"k",ḵ:"k",ƙ:"k",ⱪ:"k",ꝁ:"k",ꝃ:"k",ꝅ:"k",ꞣ:"k","ⓛ":"l",l:"l",ŀ:"l",ĺ:"l",ľ:"l",ḷ:"l",ḹ:"l",ļ:"l",ḽ:"l",ḻ:"l",ſ:"l",ł:"l",ƚ:"l",ɫ:"l",ⱡ:"l",ꝉ:"l",ꞁ:"l",ꝇ:"l",lj:"lj","ⓜ":"m",m:"m",ḿ:"m",ṁ:"m",ṃ:"m",ɱ:"m",ɯ:"m","ⓝ":"n",n:"n",ǹ:"n",ń:"n",ñ:"n",ṅ:"n",ň:"n",ṇ:"n",ņ:"n",ṋ:"n",ṉ:"n",ƞ:"n",ɲ:"n",ʼn:"n",ꞑ:"n",ꞥ:"n",nj:"nj","ⓞ":"o",o:"o",ò:"o",ó:"o",ô:"o",ồ:"o",ố:"o",ỗ:"o",ổ:"o",õ:"o",ṍ:"o",ȭ:"o",ṏ:"o",ō:"o",ṑ:"o",ṓ:"o",ŏ:"o",ȯ:"o",ȱ:"o",ö:"o",ȫ:"o",ỏ:"o",ő:"o",ǒ:"o",ȍ:"o",ȏ:"o",ơ:"o",ờ:"o",ớ:"o",ỡ:"o",ở:"o",ợ:"o",ọ:"o",ộ:"o",ǫ:"o",ǭ:"o",ø:"o",ǿ:"o",ɔ:"o",ꝋ:"o",ꝍ:"o",ɵ:"o",œ:"oe",ƣ:"oi",ȣ:"ou",ꝏ:"oo","ⓟ":"p",p:"p",ṕ:"p",ṗ:"p",ƥ:"p",ᵽ:"p",ꝑ:"p",ꝓ:"p",ꝕ:"p","ⓠ":"q",q:"q",ɋ:"q",ꝗ:"q",ꝙ:"q","ⓡ":"r",r:"r",ŕ:"r",ṙ:"r",ř:"r",ȑ:"r",ȓ:"r",ṛ:"r",ṝ:"r",ŗ:"r",ṟ:"r",ɍ:"r",ɽ:"r",ꝛ:"r",ꞧ:"r",ꞃ:"r","ⓢ":"s",s:"s",ß:"s",ś:"s",ṥ:"s",ŝ:"s",ṡ:"s",š:"s",ṧ:"s",ṣ:"s",ṩ:"s",ș:"s",ş:"s",ȿ:"s",ꞩ:"s",ꞅ:"s",ẛ:"s","ⓣ":"t",t:"t",ṫ:"t",ẗ:"t",ť:"t",ṭ:"t",ț:"t",ţ:"t",ṱ:"t",ṯ:"t",ŧ:"t",ƭ:"t",ʈ:"t",ⱦ:"t",ꞇ:"t",ꜩ:"tz","ⓤ":"u",u:"u",ù:"u",ú:"u",û:"u",ũ:"u",ṹ:"u",ū:"u",ṻ:"u",ŭ:"u",ü:"u",ǜ:"u",ǘ:"u",ǖ:"u",ǚ:"u",ủ:"u",ů:"u",ű:"u",ǔ:"u",ȕ:"u",ȗ:"u",ư:"u",ừ:"u",ứ:"u",ữ:"u",ử:"u",ự:"u",ụ:"u",ṳ:"u",ų:"u",ṷ:"u",ṵ:"u",ʉ:"u","ⓥ":"v",v:"v",ṽ:"v",ṿ:"v",ʋ:"v",ꝟ:"v",ʌ:"v",ꝡ:"vy","ⓦ":"w",w:"w",ẁ:"w",ẃ:"w",ŵ:"w",ẇ:"w",ẅ:"w",ẘ:"w",ẉ:"w",ⱳ:"w","ⓧ":"x",x:"x",ẋ:"x",ẍ:"x","ⓨ":"y",y:"y",ỳ:"y",ý:"y",ŷ:"y",ỹ:"y",ȳ:"y",ẏ:"y",ÿ:"y",ỷ:"y",ẙ:"y",ỵ:"y",ƴ:"y",ɏ:"y",ỿ:"y","ⓩ":"z",z:"z",ź:"z",ẑ:"z",ż:"z",ž:"z",ẓ:"z",ẕ:"z",ƶ:"z",ȥ:"z",ɀ:"z",ⱬ:"z",ꝣ:"z",Ά:"Α",Έ:"Ε",Ή:"Η",Ί:"Ι",Ϊ:"Ι",Ό:"Ο",Ύ:"Υ",Ϋ:"Υ",Ώ:"Ω",ά:"α",έ:"ε",ή:"η",ί:"ι",ϊ:"ι",ΐ:"ι",ό:"ο",ύ:"υ",ϋ:"υ",ΰ:"υ",ώ:"ω",ς:"σ","’":"'"}})),t.define("select2/data/base",["../utils"],(function(e){function t(e,n){t.__super__.constructor.call(this)}return e.Extend(t,e.Observable),t.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},t.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},t.prototype.bind=function(e,t){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,n){var i=t.id+"-result-";return i+=e.generateChars(4),null!=n.id?i+="-"+n.id.toString():i+="-"+e.generateChars(4),i},t})),t.define("select2/data/select",["./base","../utils","jquery"],(function(e,t,n){function i(e,t){this.$element=e,this.options=t,i.__super__.constructor.call(this)}return t.Extend(i,e),i.prototype.current=function(e){var t=[],i=this;this.$element.find(":selected").each((function(){var e=n(this),s=i.item(e);t.push(s)})),e(t)},i.prototype.select=function(e){var t=this;if(e.selected=!0,n(e.element).is("option"))return e.element.selected=!0,void this.$element.trigger("input").trigger("change");if(this.$element.prop("multiple"))this.current((function(i){var s=[];(e=[e]).push.apply(e,i);for(var r=0;r<e.length;r++){var a=e[r].id;-1===n.inArray(a,s)&&s.push(a)}t.$element.val(s),t.$element.trigger("input").trigger("change")}));else{var i=e.id;this.$element.val(i),this.$element.trigger("input").trigger("change")}},i.prototype.unselect=function(e){var t=this;if(this.$element.prop("multiple")){if(e.selected=!1,n(e.element).is("option"))return e.element.selected=!1,void this.$element.trigger("input").trigger("change");this.current((function(i){for(var s=[],r=0;r<i.length;r++){var a=i[r].id;a!==e.id&&-1===n.inArray(a,s)&&s.push(a)}t.$element.val(s),t.$element.trigger("input").trigger("change")}))}},i.prototype.bind=function(e,t){var n=this;this.container=e,e.on("select",(function(e){n.select(e.data)})),e.on("unselect",(function(e){n.unselect(e.data)}))},i.prototype.destroy=function(){this.$element.find("*").each((function(){t.RemoveData(this)}))},i.prototype.query=function(e,t){var i=[],s=this;this.$element.children().each((function(){var t=n(this);if(t.is("option")||t.is("optgroup")){var r=s.item(t),a=s.matches(e,r);null!==a&&i.push(a)}})),t({results:i})},i.prototype.addOptions=function(e){t.appendMany(this.$element,e)},i.prototype.option=function(e){var i;e.children?(i=document.createElement("optgroup")).label=e.text:void 0!==(i=document.createElement("option")).textContent?i.textContent=e.text:i.innerText=e.text,void 0!==e.id&&(i.value=e.id),e.disabled&&(i.disabled=!0),e.selected&&(i.selected=!0),e.title&&(i.title=e.title);var s=n(i),r=this._normalizeItem(e);return r.element=i,t.StoreData(i,"data",r),s},i.prototype.item=function(e){var i={};if(null!=(i=t.GetData(e[0],"data")))return i;if(e.is("option"))i={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if(e.is("optgroup")){i={text:e.prop("label"),children:[],title:e.prop("title")};for(var s=e.children("option"),r=[],a=0;a<s.length;a++){var o=n(s[a]),l=this.item(o);r.push(l)}i.children=r}return(i=this._normalizeItem(i)).element=e[0],t.StoreData(e[0],"data",i),i},i.prototype._normalizeItem=function(e){return e!==Object(e)&&(e={id:e,text:e}),null!=(e=n.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),n.extend({},{selected:!1,disabled:!1},e)},i.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},i})),t.define("select2/data/array",["./select","../utils","jquery"],(function(e,t,n){function i(e,t){this._dataToConvert=t.get("data")||[],i.__super__.constructor.call(this,e,t)}return t.Extend(i,e),i.prototype.bind=function(e,t){i.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},i.prototype.select=function(e){var t=this.$element.find("option").filter((function(t,n){return n.value==e.id.toString()}));0===t.length&&(t=this.option(e),this.addOptions(t)),i.__super__.select.call(this,e)},i.prototype.convertToOptions=function(e){var i=this,s=this.$element.find("option"),r=s.map((function(){return i.item(n(this)).id})).get(),a=[];function o(e){return function(){return n(this).val()==e.id}}for(var l=0;l<e.length;l++){var u=this._normalizeItem(e[l]);if(n.inArray(u.id,r)>=0){var d=s.filter(o(u)),c=this.item(d),h=n.extend(!0,{},u,c),p=this.option(h);d.replaceWith(p)}else{var f=this.option(u);if(u.children){var m=this.convertToOptions(u.children);t.appendMany(f,m)}a.push(f)}}return a},i})),t.define("select2/data/ajax",["./array","../utils","jquery"],(function(e,t,n){function i(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),i.__super__.constructor.call(this,e,t)}return t.Extend(i,e),i.prototype._applyDefaults=function(e){var t={data:function(e){return n.extend({},e,{q:e.term})},transport:function(e,t,i){var s=n.ajax(e);return s.then(t),s.fail(i),s}};return n.extend({},t,e,!0)},i.prototype.processResults=function(e){return e},i.prototype.query=function(e,t){var i=this;null!=this._request&&(n.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var s=n.extend({type:"GET"},this.ajaxOptions);function r(){var r=s.transport(s,(function(s){var r=i.processResults(s,e);i.options.get("debug")&&window.console&&console.error&&(r&&r.results&&n.isArray(r.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),t(r)}),(function(){(!("status"in r)||0!==r.status&&"0"!==r.status)&&i.trigger("results:message",{message:"errorLoading"})}));i._request=r}"function"==typeof s.url&&(s.url=s.url.call(this.$element,e)),"function"==typeof s.data&&(s.data=s.data.call(this.$element,e)),this.ajaxOptions.delay&&null!=e.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(r,this.ajaxOptions.delay)):r()},i})),t.define("select2/data/tags",["jquery"],(function(e){function t(t,n,i){var s=i.get("tags"),r=i.get("createTag");void 0!==r&&(this.createTag=r);var a=i.get("insertTag");if(void 0!==a&&(this.insertTag=a),t.call(this,n,i),e.isArray(s))for(var o=0;o<s.length;o++){var l=s[o],u=this._normalizeItem(l),d=this.option(u);this.$element.append(d)}}return t.prototype.query=function(e,t,n){var i=this;this._removeOldTags(),null!=t.term&&null==t.page?e.call(this,t,(function e(s,r){for(var a=s.results,o=0;o<a.length;o++){var l=a[o],u=null!=l.children&&!e({results:l.children},!0);if((l.text||"").toUpperCase()===(t.term||"").toUpperCase()||u)return!r&&(s.data=a,void n(s))}if(r)return!0;var d=i.createTag(t);if(null!=d){var c=i.option(d);c.attr("data-select2-tag",!0),i.addOptions([c]),i.insertTag(a,d)}s.results=a,n(s)})):e.call(this,t,n)},t.prototype.createTag=function(t,n){var i=e.trim(n.term);return""===i?null:{id:i,text:i}},t.prototype.insertTag=function(e,t,n){t.unshift(n)},t.prototype._removeOldTags=function(t){this.$element.find("option[data-select2-tag]").each((function(){this.selected||e(this).remove()}))},t})),t.define("select2/data/tokenizer",["jquery"],(function(e){function t(e,t,n){var i=n.get("tokenizer");void 0!==i&&(this.tokenizer=i),e.call(this,t,n)}return t.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".select2-search__field")},t.prototype.query=function(t,n,i){var s=this;n.term=n.term||"";var r=this.tokenizer(n,this.options,(function(t){var n=s._normalizeItem(t);if(!s.$element.find("option").filter((function(){return e(this).val()===n.id})).length){var i=s.option(n);i.attr("data-select2-tag",!0),s._removeOldTags(),s.addOptions([i])}!function(e){s.trigger("select",{data:e})}(n)}));r.term!==n.term&&(this.$search.length&&(this.$search.val(r.term),this.$search.trigger("focus")),n.term=r.term),t.call(this,n,i)},t.prototype.tokenizer=function(t,n,i,s){for(var r=i.get("tokenSeparators")||[],a=n.term,o=0,l=this.createTag||function(e){return{id:e.term,text:e.term}};o<a.length;){var u=a[o];if(-1!==e.inArray(u,r)){var d=a.substr(0,o),c=l(e.extend({},n,{term:d}));null!=c?(s(c),a=a.substr(o+1)||"",o=0):o++}else o++}return{term:a}},t})),t.define("select2/data/minimumInputLength",[],(function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),t.define("select2/data/maximumInputLength",[],(function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",this.maximumInputLength>0&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e})),t.define("select2/data/maximumSelectionLength",[],(function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",(function(){i._checkIfMaximumSelected()}))},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected((function(){e.call(i,t,n)}))},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current((function(e){var i=null!=e?e.length:0;n.maximumSelectionLength>0&&i>=n.maximumSelectionLength?n.trigger("results:message",{message:"maximumSelected",args:{maximum:n.maximumSelectionLength}}):t&&t()}))},e})),t.define("select2/dropdown",["jquery","./utils"],(function(e,t){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<span class="select2-dropdown"><span class="select2-results"></span></span>');return t.attr("dir",this.options.get("dir")),this.$dropdown=t,t},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n})),t.define("select2/dropdown/search",["jquery","../utils"],(function(e,t){function n(){}return n.prototype.render=function(t){var n=t.call(this),i=e('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');return this.$searchContainer=i,this.$search=i.find("input"),n.prepend(i),n},n.prototype.bind=function(t,n,i){var s=this,r=n.id+"-results";t.call(this,n,i),this.$search.on("keydown",(function(e){s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented()})),this.$search.on("input",(function(t){e(this).off("keyup")})),this.$search.on("keyup input",(function(e){s.handleSearch(e)})),n.on("open",(function(){s.$search.attr("tabindex",0),s.$search.attr("aria-controls",r),s.$search.trigger("focus"),window.setTimeout((function(){s.$search.trigger("focus")}),0)})),n.on("close",(function(){s.$search.attr("tabindex",-1),s.$search.removeAttr("aria-controls"),s.$search.removeAttr("aria-activedescendant"),s.$search.val(""),s.$search.trigger("blur")})),n.on("focus",(function(){n.isOpen()||s.$search.trigger("focus")})),n.on("results:all",(function(e){null!=e.query.term&&""!==e.query.term||(s.showSearch(e)?s.$searchContainer.removeClass("select2-search--hide"):s.$searchContainer.addClass("select2-search--hide"))})),n.on("results:focus",(function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search.removeAttr("aria-activedescendant")}))},n.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},n.prototype.showSearch=function(e,t){return!0},n})),t.define("select2/dropdown/hidePlaceholder",[],(function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;i>=0;i--){var s=t[i];this.placeholder.id===s.id&&n.splice(i,1)}return n},e})),t.define("select2/dropdown/infiniteScroll",["jquery"],(function(e){function t(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return t.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},t.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",(function(e){i.lastParams=e,i.loading=!0})),t.on("query:append",(function(e){i.lastParams=e,i.loading=!0})),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},t.prototype.loadMoreIfNeeded=function(){var t=e.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&t&&this.$results.offset().top+this.$results.outerHeight(!1)+50>=this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)&&this.loadMore()},t.prototype.loadMore=function(){this.loading=!0;var t=e.extend({},{page:1},this.lastParams);t.page++,this.trigger("query:append",t)},t.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=e('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),n=this.options.get("translations").get("loadingMore");return t.html(n(this.lastParams)),t},t})),t.define("select2/dropdown/attachBody",["jquery","../utils"],(function(e,t){function n(t,n,i){this.$dropdownParent=e(i.get("dropdownParent")||document.body),t.call(this,n,i)}return n.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",(function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)})),t.on("close",(function(){i._hideDropdown(),i._detachPositioningHandler(t)})),this.$dropdownContainer.on("mousedown",(function(e){e.stopPropagation()}))},n.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},n.prototype.render=function(t){var n=e("<span></span>"),i=t.call(this);return n.append(i),this.$dropdownContainer=n,n},n.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},n.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:append",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("results:message",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("select",(function(){n._positionDropdown(),n._resizeDropdown()})),t.on("unselect",(function(){n._positionDropdown(),n._resizeDropdown()})),this._containerResultsHandlersBound=!0}},n.prototype._attachPositioningHandler=function(n,i){var s=this,r="scroll.select2."+i.id,a="resize.select2."+i.id,o="orientationchange.select2."+i.id,l=this.$container.parents().filter(t.hasScroll);l.each((function(){t.StoreData(this,"select2-scroll-position",{x:e(this).scrollLeft(),y:e(this).scrollTop()})})),l.on(r,(function(n){var i=t.GetData(this,"select2-scroll-position");e(this).scrollTop(i.y)})),e(window).on(r+" "+a+" "+o,(function(e){s._positionDropdown(),s._resizeDropdown()}))},n.prototype._detachPositioningHandler=function(n,i){var s="scroll.select2."+i.id,r="resize.select2."+i.id,a="orientationchange.select2."+i.id;this.$container.parents().filter(t.hasScroll).off(s),e(window).off(s+" "+r+" "+a)},n.prototype._positionDropdown=function(){var t=e(window),n=this.$dropdown.hasClass("select2-dropdown--above"),i=this.$dropdown.hasClass("select2-dropdown--below"),s=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var a={height:this.$container.outerHeight(!1)};a.top=r.top,a.bottom=r.top+a.height;var o=this.$dropdown.outerHeight(!1),l=t.scrollTop(),u=t.scrollTop()+t.height(),d=l<r.top-o,c=u>r.bottom+o,h={left:r.left,top:a.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var f={top:0,left:0};(e.contains(document.body,p[0])||p[0].isConnected)&&(f=p.offset()),h.top-=f.top,h.left-=f.left,n||i||(s="below"),c||!d||n?!d&&c&&n&&(s="below"):s="above",("above"==s||n&&"below"!==s)&&(h.top=a.top-f.top-o),null!=s&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+s),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+s)),this.$dropdownContainer.css(h)},n.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},n.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n})),t.define("select2/dropdown/minimumResultsForSearch",[],(function(){function e(t){for(var n=0,i=0;i<t.length;i++){var s=t[i];s.children?n+=e(s.children):n++}return n}function t(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return t.prototype.showSearch=function(t,n){return!(e(n.data.results)<this.minimumResultsForSearch)&&t.call(this,n)},t})),t.define("select2/dropdown/selectOnClose",["../utils"],(function(e){function t(){}return t.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("close",(function(e){i._handleSelectOnClose(e)}))},t.prototype._handleSelectOnClose=function(t,n){if(n&&null!=n.originalSelect2Event){var i=n.originalSelect2Event;if("select"===i._type||"unselect"===i._type)return}var s=this.getHighlightedResults();if(!(s.length<1)){var r=e.GetData(s[0],"data");null!=r.element&&r.element.selected||null==r.element&&r.selected||this.trigger("select",{data:r})}},t})),t.define("select2/dropdown/closeOnSelect",[],(function(){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",(function(e){i._selectTriggered(e)})),t.on("unselect",(function(e){i._selectTriggered(e)}))},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger("close",{originalEvent:n,originalSelect2Event:t})},e})),t.define("select2/i18n/en",[],(function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}})),t.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],(function(e,t,n,i,s,r,a,o,l,u,d,c,h,p,f,m,_,g,v,y,b,w,k,M,L,D,T,x,S){function Y(){this.reset()}return Y.prototype.apply=function(d){if(null==(d=e.extend(!0,{},this.defaults,d)).dataAdapter){if(null!=d.ajax?d.dataAdapter=f:null!=d.data?d.dataAdapter=p:d.dataAdapter=h,d.minimumInputLength>0&&(d.dataAdapter=u.Decorate(d.dataAdapter,g)),d.maximumInputLength>0&&(d.dataAdapter=u.Decorate(d.dataAdapter,v)),d.maximumSelectionLength>0&&(d.dataAdapter=u.Decorate(d.dataAdapter,y)),d.tags&&(d.dataAdapter=u.Decorate(d.dataAdapter,m)),null==d.tokenSeparators&&null==d.tokenizer||(d.dataAdapter=u.Decorate(d.dataAdapter,_)),null!=d.query){var c=t(d.amdBase+"compat/query");d.dataAdapter=u.Decorate(d.dataAdapter,c)}if(null!=d.initSelection){var S=t(d.amdBase+"compat/initSelection");d.dataAdapter=u.Decorate(d.dataAdapter,S)}}if(null==d.resultsAdapter&&(d.resultsAdapter=n,null!=d.ajax&&(d.resultsAdapter=u.Decorate(d.resultsAdapter,M)),null!=d.placeholder&&(d.resultsAdapter=u.Decorate(d.resultsAdapter,k)),d.selectOnClose&&(d.resultsAdapter=u.Decorate(d.resultsAdapter,T))),null==d.dropdownAdapter){if(d.multiple)d.dropdownAdapter=b;else{var Y=u.Decorate(b,w);d.dropdownAdapter=Y}if(0!==d.minimumResultsForSearch&&(d.dropdownAdapter=u.Decorate(d.dropdownAdapter,D)),d.closeOnSelect&&(d.dropdownAdapter=u.Decorate(d.dropdownAdapter,x)),null!=d.dropdownCssClass||null!=d.dropdownCss||null!=d.adaptDropdownCssClass){var C=t(d.amdBase+"compat/dropdownCss");d.dropdownAdapter=u.Decorate(d.dropdownAdapter,C)}d.dropdownAdapter=u.Decorate(d.dropdownAdapter,L)}if(null==d.selectionAdapter){if(d.multiple?d.selectionAdapter=s:d.selectionAdapter=i,null!=d.placeholder&&(d.selectionAdapter=u.Decorate(d.selectionAdapter,r)),d.allowClear&&(d.selectionAdapter=u.Decorate(d.selectionAdapter,a)),d.multiple&&(d.selectionAdapter=u.Decorate(d.selectionAdapter,o)),null!=d.containerCssClass||null!=d.containerCss||null!=d.adaptContainerCssClass){var E=t(d.amdBase+"compat/containerCss");d.selectionAdapter=u.Decorate(d.selectionAdapter,E)}d.selectionAdapter=u.Decorate(d.selectionAdapter,l)}d.language=this._resolveLanguage(d.language),d.language.push("en");for(var O=[],A=0;A<d.language.length;A++){var H=d.language[A];-1===O.indexOf(H)&&O.push(H)}return d.language=O,d.translations=this._processTranslations(d.language,d.debug),d},Y.prototype.reset=function(){function t(e){return e.replace(/[^\u0000-\u007E]/g,(function(e){return c[e]||e}))}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:u.escapeMarkup,language:{},matcher:function n(i,s){if(""===e.trim(i.term))return s;if(s.children&&s.children.length>0){for(var r=e.extend(!0,{},s),a=s.children.length-1;a>=0;a--)null==n(i,s.children[a])&&r.children.splice(a,1);return r.children.length>0?r:n(i,r)}var o=t(s.text).toUpperCase(),l=t(i.term).toUpperCase();return o.indexOf(l)>-1?s:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},Y.prototype.applyFromElement=function(e,t){var n=e.language,i=this.defaults.language,s=t.prop("lang"),r=t.closest("[lang]").prop("lang"),a=Array.prototype.concat.call(this._resolveLanguage(s),this._resolveLanguage(n),this._resolveLanguage(i),this._resolveLanguage(r));return e.language=a,e},Y.prototype._resolveLanguage=function(t){if(!t)return[];if(e.isEmptyObject(t))return[];if(e.isPlainObject(t))return[t];var n;n=e.isArray(t)?t:[t];for(var i=[],s=0;s<n.length;s++)if(i.push(n[s]),"string"==typeof n[s]&&n[s].indexOf("-")>0){var r=n[s].split("-")[0];i.push(r)}return i},Y.prototype._processTranslations=function(t,n){for(var i=new d,s=0;s<t.length;s++){var r=new d,a=t[s];if("string"==typeof a)try{r=d.loadPath(a)}catch(t){try{a=this.defaults.amdLanguageBase+a,r=d.loadPath(a)}catch(t){n&&window.console&&console.warn&&console.warn('Select2: The language file for "'+a+'" could not be automatically loaded. A fallback will be used instead.')}}else r=e.isPlainObject(a)?new d(a):a;i.extend(r)}return i},Y.prototype.set=function(t,n){var i={};i[e.camelCase(t)]=n;var s=u._convertData(i);e.extend(!0,this.defaults,s)},new Y})),t.define("select2/options",["require","jquery","./defaults","./utils"],(function(e,t,n,i){function s(t,s){if(this.options=t,null!=s&&this.fromElement(s),null!=s&&(this.options=n.applyFromElement(this.options,s)),this.options=n.apply(this.options),s&&s.is("input")){var r=e(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=i.Decorate(this.options.dataAdapter,r)}}return s.prototype.fromElement=function(e){var n=["select2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),i.GetData(e[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),i.StoreData(e[0],"data",i.GetData(e[0],"select2Tags")),i.StoreData(e[0],"tags",!0)),i.GetData(e[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),e.attr("ajax--url",i.GetData(e[0],"ajaxUrl")),i.StoreData(e[0],"ajax-Url",i.GetData(e[0],"ajaxUrl")));var s={};function r(e,t){return t.toUpperCase()}for(var a=0;a<e[0].attributes.length;a++){var o=e[0].attributes[a].name,l="data-";if(o.substr(0,l.length)==l){var u=o.substring(l.length),d=i.GetData(e[0],u);s[u.replace(/-([a-z])/g,r)]=d}}t.fn.jquery&&"1."==t.fn.jquery.substr(0,2)&&e[0].dataset&&(s=t.extend(!0,{},e[0].dataset,s));var c=t.extend(!0,{},i.GetData(e[0]),s);for(var h in c=i._convertData(c))t.inArray(h,n)>-1||(t.isPlainObject(this.options[h])?t.extend(this.options[h],c[h]):this.options[h]=c[h]);return this},s.prototype.get=function(e){return this.options[e]},s.prototype.set=function(e,t){this.options[e]=t},s})),t.define("select2/core",["jquery","./options","./utils","./keys"],(function(e,t,n,i){var s=function e(i,s){null!=n.GetData(i[0],"select2")&&n.GetData(i[0],"select2").destroy(),this.$element=i,this.id=this._generateId(i),s=s||{},this.options=new t(s,i),e.__super__.constructor.call(this);var r=i.attr("tabindex")||0;n.StoreData(i[0],"old-tabindex",r),i.attr("tabindex","-1");var a=this.options.get("dataAdapter");this.dataAdapter=new a(i,this.options);var o=this.render();this._placeContainer(o);var l=this.options.get("selectionAdapter");this.selection=new l(i,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,o);var u=this.options.get("dropdownAdapter");this.dropdown=new u(i,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,o);var d=this.options.get("resultsAdapter");this.results=new d(i,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var c=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current((function(e){c.trigger("selection:update",{data:e})})),i.addClass("select2-hidden-accessible"),i.attr("aria-hidden","true"),this._syncAttributes(),n.StoreData(i[0],"select2",this),i.data("select2",this)};return n.Extend(s,n.Observable),s.prototype._generateId=function(e){return"select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+n.generateChars(2):n.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},s.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},s.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var i=this._resolveWidth(e,"style");return null!=i?i:this._resolveWidth(e,"element")}if("element"==t){var s=e.outerWidth(!1);return s<=0?"auto":s+"px"}if("style"==t){var r=e.attr("style");if("string"!=typeof r)return null;for(var a=r.split(";"),o=0,l=a.length;o<l;o+=1){var u=a[o].replace(/\s/g,"").match(n);if(null!==u&&u.length>=1)return u[1]}return null}return"computedstyle"==t?window.getComputedStyle(e[0]).width:t},s.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},s.prototype._registerDomEvents=function(){var e=this;this.$element.on("change.select2",(function(){e.dataAdapter.current((function(t){e.trigger("selection:update",{data:t})}))})),this.$element.on("focus.select2",(function(t){e.trigger("focus",t)})),this._syncA=n.bind(this._syncAttributes,this),this._syncS=n.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=t?(this._observer=new t((function(t){e._syncA(),e._syncS(null,t)})),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",e._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",e._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",e._syncS,!1))},s.prototype._registerDataEvents=function(){var e=this;this.dataAdapter.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerSelectionEvents=function(){var t=this,n=["toggle","focus"];this.selection.on("toggle",(function(){t.toggleDropdown()})),this.selection.on("focus",(function(e){t.focus(e)})),this.selection.on("*",(function(i,s){-1===e.inArray(i,n)&&t.trigger(i,s)}))},s.prototype._registerDropdownEvents=function(){var e=this;this.dropdown.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerResultsEvents=function(){var e=this;this.results.on("*",(function(t,n){e.trigger(t,n)}))},s.prototype._registerEvents=function(){var e=this;this.on("open",(function(){e.$container.addClass("select2-container--open")})),this.on("close",(function(){e.$container.removeClass("select2-container--open")})),this.on("enable",(function(){e.$container.removeClass("select2-container--disabled")})),this.on("disable",(function(){e.$container.addClass("select2-container--disabled")})),this.on("blur",(function(){e.$container.removeClass("select2-container--focus")})),this.on("query",(function(t){e.isOpen()||e.trigger("open",{}),this.dataAdapter.query(t,(function(n){e.trigger("results:all",{data:n,query:t})}))})),this.on("query:append",(function(t){this.dataAdapter.query(t,(function(n){e.trigger("results:append",{data:n,query:t})}))})),this.on("keypress",(function(t){var n=t.which;e.isOpen()?n===i.ESC||n===i.TAB||n===i.UP&&t.altKey?(e.close(t),t.preventDefault()):n===i.ENTER?(e.trigger("results:select",{}),t.preventDefault()):n===i.SPACE&&t.ctrlKey?(e.trigger("results:toggle",{}),t.preventDefault()):n===i.UP?(e.trigger("results:previous",{}),t.preventDefault()):n===i.DOWN&&(e.trigger("results:next",{}),t.preventDefault()):(n===i.ENTER||n===i.SPACE||n===i.DOWN&&t.altKey)&&(e.open(),t.preventDefault())}))},s.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},s.prototype._isChangeMutation=function(t,n){var i=!1,s=this;if(!t||!t.target||"OPTION"===t.target.nodeName||"OPTGROUP"===t.target.nodeName){if(n)if(n.addedNodes&&n.addedNodes.length>0)for(var r=0;r<n.addedNodes.length;r++)n.addedNodes[r].selected&&(i=!0);else n.removedNodes&&n.removedNodes.length>0?i=!0:e.isArray(n)&&e.each(n,(function(e,t){if(s._isChangeMutation(e,t))return i=!0,!1}));else i=!0;return i}},s.prototype._syncSubtree=function(e,t){var n=this._isChangeMutation(e,t),i=this;n&&this.dataAdapter.current((function(e){i.trigger("selection:update",{data:e})}))},s.prototype.trigger=function(e,t){var n=s.__super__.trigger,i={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in i){var r=i[e],a={prevented:!1,name:e,args:t};if(n.call(this,r,a),a.prevented)return void(t.prevented=!0)}n.call(this,e,t)},s.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},s.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},s.prototype.close=function(e){this.isOpen()&&this.trigger("close",{originalEvent:e})},s.prototype.isEnabled=function(){return!this.isDisabled()},s.prototype.isDisabled=function(){return this.options.get("disabled")},s.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},s.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},s.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},s.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},s.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var e=[];return this.dataAdapter.current((function(t){e=t})),e},s.prototype.val=function(t){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==t||0===t.length)return this.$element.val();var n=t[0];e.isArray(n)&&(n=e.map(n,(function(e){return e.toString()}))),this.$element.val(n).trigger("input").trigger("change")},s.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",n.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),n.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},s.prototype.render=function(){var t=e('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return t.attr("dir",this.options.get("dir")),this.$container=t,this.$container.addClass("select2-container--"+this.options.get("theme")),n.StoreData(t[0],"element",this.$element),t},s})),t.define("jquery-mousewheel",["jquery"],(function(e){return e})),t.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],(function(e,t,n,i,s){if(null==e.fn.select2){var r=["open","close","destroy"];e.fn.select2=function(t){if("object"===o(t=t||{}))return this.each((function(){var i=e.extend(!0,{},t);new n(e(this),i)})),this;if("string"==typeof t){var i,a=Array.prototype.slice.call(arguments,1);return this.each((function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),i=e[t].apply(e,a)})),e.inArray(t,r)>-1?this:i}throw new Error("Invalid arguments for Select2: "+t)}}return null==e.fn.select2.defaults&&(e.fn.select2.defaults=i),n})),{define:t.define,require:t.require}}(),n=t.require("jquery.select2");return e.fn.select2.amd=t,n})?s.apply(t,r):s)||(e.exports=a)}).call(this,n(0))},function(e,t,n){(function(e){var t=function(e,t,i){return t&&n(e.prototype,t),i&&n(e,i),e};function n(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(function(){"use strict";var n,s,r,a,o;function l(){i(this,l)}function u(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};i(this,u),this.render=this.render.bind(this),this.bind=this.bind.bind(this),this.unbind=this.unbind.bind(this),this.mouseEnter=this.mouseEnter.bind(this),this.mouseLeave=this.mouseLeave.bind(this),this.click=this.click.bind(this),this.close=this.close.bind(this),this.cycle=this.cycle.bind(this),this.waitAndDismiss=this.waitAndDismiss.bind(this),this.present=this.present.bind(this),this.dismiss=this.dismiss.bind(this),this.remove=this.remove.bind(this),this.animate=this.animate.bind(this),this.$growls=this.$growls.bind(this),this.$growl=this.$growl.bind(this),this.html=this.html.bind(this),this.content=this.content.bind(this),this.container=this.container.bind(this),this.settings=n.extend({},u.settings,e),this.initialize(this.settings.location),this.render()}n=e,t(l,null,[{key:"transition",value:function(e){var t,n,i=e[0],s=this.transitions;for(n in s)if(t=s[n],null!=i.style[n])return t}}]),(a=l).transitions={webkitTransition:"webkitTransitionEnd",mozTransition:"mozTransitionEnd",oTransition:"oTransitionEnd",transition:"transitionend"},s=a,t(u,null,[{key:"growl",value:function(e){return new u(0<arguments.length&&void 0!==e?e:{})}}]),t(u,[{key:"initialize",value:function(e){var t="growls-"+e;return n("body:not(:has(#"+t+"))").append('<div id="'+t+'" />')}},{key:"render",value:function(){var e=this.$growl();this.$growls(this.settings.location).append(e),this.settings.fixed?this.present():this.cycle()}},{key:"bind",value:function(e){var t=0<arguments.length&&void 0!==e?e:this.$growl();return t.on("click",this.click),this.settings.delayOnHover&&(t.on("mouseenter",this.mouseEnter),t.on("mouseleave",this.mouseLeave)),t.on("contextmenu",this.close).find("."+this.settings.namespace+"-close").on("click",this.close)}},{key:"unbind",value:function(e){var t=0<arguments.length&&void 0!==e?e:this.$growl();return t.off("click",this.click),this.settings.delayOnHover&&(t.off("mouseenter",this.mouseEnter),t.off("mouseleave",this.mouseLeave)),t.off("contextmenu",this.close).find("."+this.settings.namespace+"-close").off("click",this.close)}},{key:"mouseEnter",value:function(){return this.$growl().stop(!0,!0)}},{key:"mouseLeave",value:function(){return this.waitAndDismiss()}},{key:"click",value:function(e){if(null!=this.settings.url)return e.preventDefault(),e.stopPropagation(),window.open(this.settings.url)}},{key:"close",value:function(e){return e.preventDefault(),e.stopPropagation(),this.$growl().stop().queue(this.dismiss).queue(this.remove)}},{key:"cycle",value:function(){return this.$growl().queue(this.present).queue(this.waitAndDismiss())}},{key:"waitAndDismiss",value:function(){return this.$growl().delay(this.settings.duration).queue(this.dismiss).queue(this.remove)}},{key:"present",value:function(e){var t=this.$growl();return this.bind(t),this.animate(t,this.settings.namespace+"-incoming","out",e)}},{key:"dismiss",value:function(e){var t=this.$growl();return this.unbind(t),this.animate(t,this.settings.namespace+"-outgoing","in",e)}},{key:"remove",value:function(e){return this.$growl().remove(),"function"==typeof e?e():void 0}},{key:"animate",value:function(e,t,n,i){var r=2<arguments.length&&void 0!==n?n:"in",a=i,o=s.transition(e);e["in"===r?"removeClass":"addClass"](t),e.offset().position,e["in"===r?"addClass":"removeClass"](t),null!=a&&(null!=o?e.one(o,a):a())}},{key:"$growls",value:function(e){var t;return null==this.$_growls&&(this.$_growls=[]),null!=(t=this.$_growls)[e]?t[e]:t[e]=n("#growls-"+e)}},{key:"$growl",value:function(){return null!=this.$_growl?this.$_growl:this.$_growl=n(this.html())}},{key:"html",value:function(){return this.container(this.content())}},{key:"content",value:function(){return"<div class='"+this.settings.namespace+"-close'>"+this.settings.close+"</div>\n<div class='"+this.settings.namespace+"-title'>"+this.settings.title+"</div>\n<div class='"+this.settings.namespace+"-message'>"+this.settings.message+"</div>"}},{key:"container",value:function(e){return"<div class='"+this.settings.namespace+" "+this.settings.namespace+"-"+this.settings.style+" "+this.settings.namespace+"-"+this.settings.size+"'>\n "+e+"\n</div>"}}]),(o=u).settings={namespace:"growl",duration:3200,close:"×",location:"default",style:"default",size:"medium",delayOnHover:!0},r=o,this.Growl=r,n.growl=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return r.growl(e)},n.growl.error=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t={title:"Error!",style:"error"};return n.growl(n.extend(t,e))},n.growl.notice=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t={title:"Notice!",style:"notice"};return n.growl(n.extend(t,e))},n.growl.warning=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t={title:"Warning!",style:"warning"};return n.growl(n.extend(t,e))}}).call(this)}).call(this,n(0))},function(e,t,n){(function(e){var t,n,i,s,r,a,o,l,u,d,c,h,p,f,m,_;r={wrapperClassAdditional:"",tagsWrapperClassAdditional:"",tagClassAdditional:"",closingCrossClassAdditionnal:"",tagInputWrapperClassAdditional:"",tagInputClassAdditional:"",delimiter:" ",inputPlaceholder:"Add tag ...",closingCross:!(s=n=null),context:null,clearAllBtn:!(i=[]),clearAllIconClassAdditional:"",clearAllSpanClassAdditional:"",onTagsChanged:null,onResetTags:null},a="pstaggerTagsWrapper",o="pstaggerTag",l="pstaggerAddTagWrapper",u="pstaggerAddTagInput",d="pstaggerResetTagsBtn",c="pstaggerClosingCross",h=function(){var e=s.val(),r=e.split(n.delimiter);if(e.length){for(var o in r){var u=r[o];""!==u&&i.push(u)}var d="";for(o in i){var c=i[o];d+=p(c)}t("."+a).empty().prepend(d).css("display","block"),t("."+l).css("display","none")}else t("."+a).css("display","none"),t("."+l).css("display","block"),s.focus();null!==n.onTagsChanged&&n.onTagsChanged.call(n.context,i)},p=function(e){var i='<span class="'+o+" "+n.tagClassAdditional+'"><span>'+t("<div/>").text(e).html()+"</span>";return!0===n.closingCross&&(i+='<a class="'+c+" "+n.closingCrossClassAdditionnal+'" href="#">x</a>'),i+"</span>"},f=function(){t(document).delegate("."+d,"click",(function(){m(!0)}))},m=function(e){i=[],s.val(""),t("."+a).css("display","none"),t("."+l).css("display","block"),s.focus(),t("."+o).remove(),null!==n.onResetTags&&!0===e&&n.onResetTags.call(n.context)},_=function(e){var n="";return t("."+o).each((function(i,s){return e==t(this).index()||void(n+=" "+t(this).children().first().text())})),n},(t=e).fn.pstagger=function(e){return n=function(e,t){var n={};for(var i in r)e.hasOwnProperty(i)?n[i]=e[i]:n[i]=r[i];return n.originalInput=t,n}(e,this),function(){n.originalInput.css("display","none");var e="";!0===n.clearAllBtn&&(e+='<span class="'+d+" "+n.clearAllSpanClassAdditional+'"><i class=" '+n.clearAllIconClassAdditional+'"></i></span>',f());var i='<div class="pstaggerWrapper '+n.wrapperClassAdditional+'">'+e+'<div class="'+a+" "+n.tagsWrapperClassAdditional+'"></div><div class="'+l+" "+n.tagInputWrapperClassAdditional+'"><input class="'+u+" "+n.tagInputClassAdditional+'"></div></div>';n.originalInput.after(i),(s=t("."+u)).attr("placeholder",n.inputPlaceholder)}(),s.keypress((function(e){13==e.keyCode&&(i=[],h())})),s.focusout((function(e){return!t("."+d+":hover").length&&void(s.val().length&&(i=[],h()))})),t("."+a).on("click",(function(e){var n=e.target.className,i=new RegExp(c,"g"),r=n.match(i);t("."+l).is(":hidden")&&null===r&&(t("."+a).css("display","none"),t("."+l).css("display","block"),s.focus())})),t(document).delegate("."+c,"click",(function(e){var n=t(this).parent(),r=n.index(),a=_(r);s.val(a),n.remove(),i=[],h()})),{resetTags:m}}}).call(this,n(0))},function(e,t,n){}])},3689:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ucs2decode:()=>p,ucs2encode:()=>f,decode:()=>g,encode:()=>v,toASCII:()=>b,toUnicode:()=>y,default:()=>w});const i=2147483647,s=36,r=/^xn--/,a=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},u=Math.floor,d=String.fromCharCode;function c(e){throw new RangeError(l[e])}function h(e,t){const n=e.split("@");let i="";n.length>1&&(i=n[0]+"@",e=n[1]);const s=function(e,t){const n=[];let i=e.length;for(;i--;)n[i]=t(e[i]);return n}((e=e.replace(o,".")).split("."),t).join(".");return i+s}function p(e){const t=[];let n=0;const i=e.length;for(;n<i;){const s=e.charCodeAt(n++);if(s>=55296&&s<=56319&&n<i){const i=e.charCodeAt(n++);56320==(64512&i)?t.push(((1023&s)<<10)+(1023&i)+65536):(t.push(s),n--)}else t.push(s)}return t}const f=e=>String.fromCodePoint(...e),m=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},_=function(e,t,n){let i=0;for(e=n?u(e/700):e>>1,e+=u(e/t);e>455;i+=s)e=u(e/35);return u(i+36*e/(e+38))},g=function(e){const t=[],n=e.length;let r=0,a=128,o=72,l=e.lastIndexOf("-");l<0&&(l=0);for(let n=0;n<l;++n)e.charCodeAt(n)>=128&&c("not-basic"),t.push(e.charCodeAt(n));for(let h=l>0?l+1:0;h<n;){let l=r;for(let t=1,a=s;;a+=s){h>=n&&c("invalid-input");const l=(d=e.charCodeAt(h++))-48<10?d-22:d-65<26?d-65:d-97<26?d-97:s;(l>=s||l>u((i-r)/t))&&c("overflow"),r+=l*t;const p=a<=o?1:a>=o+26?26:a-o;if(l<p)break;const f=s-p;t>u(i/f)&&c("overflow"),t*=f}const p=t.length+1;o=_(r-l,p,0==l),u(r/p)>i-a&&c("overflow"),a+=u(r/p),r%=p,t.splice(r++,0,a)}var d;return String.fromCodePoint(...t)},v=function(e){const t=[];let n=(e=p(e)).length,r=128,a=0,o=72;for(const n of e)n<128&&t.push(d(n));let l=t.length,h=l;for(l&&t.push("-");h<n;){let n=i;for(const t of e)t>=r&&t<n&&(n=t);const p=h+1;n-r>u((i-a)/p)&&c("overflow"),a+=(n-r)*p,r=n;for(const n of e)if(n<r&&++a>i&&c("overflow"),n==r){let e=a;for(let n=s;;n+=s){const i=n<=o?1:n>=o+26?26:n-o;if(e<i)break;const r=e-i,a=s-i;t.push(d(m(i+r%a,0))),e=u(r/a)}t.push(d(m(e,0))),o=_(a,p,h==l),a=0,++h}++a,++r}return t.join("")},y=function(e){return h(e,(function(e){return r.test(e)?g(e.slice(4).toLowerCase()):e}))},b=function(e){return h(e,(function(e){return a.test(e)?"xn--"+v(e):e}))},w={version:"2.1.0",ucs2:{decode:p,encode:f},decode:g,encode:v,toASCII:b,toUnicode:y}},8975:(e,t,n)=>{var i;!function(){"use strict";var s={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return o(u(e),arguments)}function a(e,t){return r.apply(null,[e].concat(t||[]))}function o(e,t){var n,i,a,o,l,u,d,c,h,p=1,f=e.length,m="";for(i=0;i<f;i++)if("string"==typeof e[i])m+=e[i];else if("object"==typeof e[i]){if((o=e[i]).keys)for(n=t[p],a=0;a<o.keys.length;a++){if(null==n)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));n=n[o.keys[a]]}else n=o.param_no?t[o.param_no]:t[p++];if(s.not_type.test(o.type)&&s.not_primitive.test(o.type)&&n instanceof Function&&(n=n()),s.numeric_arg.test(o.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(r("[sprintf] expecting number but found %T",n));switch(s.number.test(o.type)&&(c=n>=0),o.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,o.width?parseInt(o.width):0);break;case"e":n=o.precision?parseFloat(n).toExponential(o.precision):parseFloat(n).toExponential();break;case"f":n=o.precision?parseFloat(n).toFixed(o.precision):parseFloat(n);break;case"g":n=o.precision?String(Number(n.toPrecision(o.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=o.precision?n.substring(0,o.precision):n;break;case"t":n=String(!!n),n=o.precision?n.substring(0,o.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=o.precision?n.substring(0,o.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=o.precision?n.substring(0,o.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}s.json.test(o.type)?m+=n:(!s.number.test(o.type)||c&&!o.sign?h="":(h=c?"+":"-",n=n.toString().replace(s.sign,"")),u=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",d=o.width-(h+n).length,l=o.width&&d>0?u.repeat(d):"",m+=o.align?h+n+l:"0"===u?h+l+n:l+h+n)}return m}var l=Object.create(null);function u(e){if(l[e])return l[e];for(var t,n=e,i=[],r=0;n;){if(null!==(t=s.text.exec(n)))i.push(t[0]);else if(null!==(t=s.modulo.exec(n)))i.push("%");else{if(null===(t=s.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){r|=1;var a=[],o=t[2],u=[];if(null===(u=s.key.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(u[1]);""!==(o=o.substring(u[0].length));)if(null!==(u=s.key_access.exec(o)))a.push(u[1]);else{if(null===(u=s.index_access.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(u[1])}t[2]=a}else r|=2;if(3===r)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return l[e]=i}t.sprintf=r,t.vsprintf=a,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=a,void 0===(i=function(){return{sprintf:r,vsprintf:a}}.call(t,n,t,e))||(e.exports=i))}()},73867:(e,t,n)=>{var i,s,r,a,o,l,u=n(73609);i=u,s=window,r=window.document,a="touchstart mousedown",o="touchmove mousemove",l="touchend mouseup",i(r).ready((function(){function e(e){for(var t={},n=e.match(/([^;:]+)/g)||[];n.length;)t[n.shift()]=n.shift().trim();return t}i("table").each((function(){"dnd"===i(this).data("table")&&i(this).tableDnD({onDragStyle:i(this).data("ondragstyle")&&e(i(this).data("ondragstyle"))||null,onDropStyle:i(this).data("ondropstyle")&&e(i(this).data("ondropstyle"))||null,onDragClass:void 0===i(this).data("ondragclass")?"tDnD_whileDrag":i(this).data("ondragclass"),onDrop:i(this).data("ondrop")&&new Function("table","row",i(this).data("ondrop")),onDragStart:i(this).data("ondragstart")&&new Function("table","row",i(this).data("ondragstart")),onDragStop:i(this).data("ondragstop")&&new Function("table","row",i(this).data("ondragstop")),scrollAmount:i(this).data("scrollamount")||5,sensitivity:i(this).data("sensitivity")||10,hierarchyLevel:i(this).data("hierarchylevel")||0,indentArtifact:i(this).data("indentartifact")||'<div class="indent"> </div>',autoWidthAdjust:i(this).data("autowidthadjust")||!0,autoCleanRelations:i(this).data("autocleanrelations")||!0,jsonPretifySeparator:i(this).data("jsonpretifyseparator")||"\t",serializeRegexp:i(this).data("serializeregexp")&&new RegExp(i(this).data("serializeregexp"))||/[^\-]*$/,serializeParamName:i(this).data("serializeparamname")||!1,dragHandle:i(this).data("draghandle")||null})}))})),u.tableDnD={currentTable:null,dragObject:null,mouseOffset:null,oldX:0,oldY:0,build:function(e){return this.each((function(){this.tableDnDConfig=i.extend({onDragStyle:null,onDropStyle:null,onDragClass:"tDnD_whileDrag",onDrop:null,onDragStart:null,onDragStop:null,scrollAmount:5,sensitivity:10,hierarchyLevel:0,indentArtifact:'<div class="indent"> </div>',autoWidthAdjust:!0,autoCleanRelations:!0,jsonPretifySeparator:"\t",serializeRegexp:/[^\-]*$/,serializeParamName:!1,dragHandle:null},e||{}),i.tableDnD.makeDraggable(this),this.tableDnDConfig.hierarchyLevel&&i.tableDnD.makeIndented(this)})),this},makeIndented:function(e){var t,n,s=e.tableDnDConfig,r=e.rows,a=i(r).first().find("td:first")[0],o=0,l=0;if(i(e).hasClass("indtd"))return null;n=i(e).addClass("indtd").attr("style"),i(e).css({whiteSpace:"nowrap"});for(var u=0;u<r.length;u++)l<i(r[u]).find("td:first").text().length&&(l=i(r[u]).find("td:first").text().length,t=u);for(i(a).css({width:"auto"}),u=0;u<s.hierarchyLevel;u++)i(r[t]).find("td:first").prepend(s.indentArtifact);for(a&&i(a).css({width:a.offsetWidth}),n&&i(e).css(n),u=0;u<s.hierarchyLevel;u++)i(r[t]).find("td:first").children(":first").remove();return s.hierarchyLevel&&i(r).each((function(){(o=i(this).data("level")||0)<=s.hierarchyLevel&&i(this).data("level",o)||i(this).data("level",0);for(var e=0;e<i(this).data("level");e++)i(this).find("td:first").prepend(s.indentArtifact)})),this},makeDraggable:function(e){var t=e.tableDnDConfig;t.dragHandle&&i(t.dragHandle,e).each((function(){i(this).bind(a,(function(n){return i.tableDnD.initialiseDrag(i(this).parents("tr")[0],e,this,n,t),!1}))}))||i(e.rows).each((function(){i(this).hasClass("nodrag")?i(this).css("cursor",""):i(this).bind(a,(function(n){if("TD"===n.target.tagName)return i.tableDnD.initialiseDrag(this,e,this,n,t),!1})).css("cursor","move")}))},currentOrder:function(){var e=this.currentTable.rows;return i.map(e,(function(e){return(i(e).data("level")+e.id).replace(/\s/g,"")})).join("")},initialiseDrag:function(e,t,n,s,a){this.dragObject=e,this.currentTable=t,this.mouseOffset=this.getMouseOffset(n,s),this.originalOrder=this.currentOrder(),i(r).bind(o,this.mousemove).bind(l,this.mouseup),a.onDragStart&&a.onDragStart(t,n)},updateTables:function(){this.each((function(){this.tableDnDConfig&&i.tableDnD.makeDraggable(this)}))},mouseCoords:function(e){return e.originalEvent.changedTouches?{x:e.originalEvent.changedTouches[0].clientX,y:e.originalEvent.changedTouches[0].clientY}:e.pageX||e.pageY?{x:e.pageX,y:e.pageY}:{x:e.clientX+r.body.scrollLeft-r.body.clientLeft,y:e.clientY+r.body.scrollTop-r.body.clientTop}},getMouseOffset:function(e,t){var n,i;return t=t||s.event,i=this.getPosition(e),{x:(n=this.mouseCoords(t)).x-i.x,y:n.y-i.y}},getPosition:function(e){var t=0,n=0;for(0===e.offsetHeight&&(e=e.firstChild);e.offsetParent;)t+=e.offsetLeft,n+=e.offsetTop,e=e.offsetParent;return{x:t+=e.offsetLeft,y:n+=e.offsetTop}},autoScroll:function(e){var t=this.currentTable.tableDnDConfig,n=s.pageYOffset,i=s.innerHeight?s.innerHeight:r.documentElement.clientHeight?r.documentElement.clientHeight:r.body.clientHeight;r.all&&(void 0!==r.compatMode&&"BackCompat"!==r.compatMode?n=r.documentElement.scrollTop:void 0!==r.body&&(n=r.body.scrollTop)),e.y-n<t.scrollAmount&&s.scrollBy(0,-t.scrollAmount)||i-(e.y-n)<t.scrollAmount&&s.scrollBy(0,t.scrollAmount)},moveVerticle:function(e,t){0!==e.vertical&&t&&this.dragObject!==t&&this.dragObject.parentNode===t.parentNode&&(0>e.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,t.nextSibling)||0<e.vertical&&this.dragObject.parentNode.insertBefore(this.dragObject,t))},moveHorizontal:function(e,t){var n,s=this.currentTable.tableDnDConfig;if(!s.hierarchyLevel||0===e.horizontal||!t||this.dragObject!==t)return null;n=i(t).data("level"),0<e.horizontal&&n>0&&i(t).find("td:first").children(":first").remove()&&i(t).data("level",--n),0>e.horizontal&&n<s.hierarchyLevel&&i(t).prev().data("level")>=n&&i(t).children(":first").prepend(s.indentArtifact)&&i(t).data("level",++n)},mousemove:function(e){var t,n,s,r,a,o=i(i.tableDnD.dragObject),l=i.tableDnD.currentTable.tableDnDConfig;return e&&e.preventDefault(),!!i.tableDnD.dragObject&&("touchmove"===e.type&&event.preventDefault(),l.onDragClass&&o.addClass(l.onDragClass)||o.css(l.onDragStyle),r=(n=i.tableDnD.mouseCoords(e)).x-i.tableDnD.mouseOffset.x,a=n.y-i.tableDnD.mouseOffset.y,i.tableDnD.autoScroll(n),t=i.tableDnD.findDropTargetRow(o,a),s=i.tableDnD.findDragDirection(r,a),i.tableDnD.moveVerticle(s,t),i.tableDnD.moveHorizontal(s,t),!1)},findDragDirection:function(e,t){var n=this.currentTable.tableDnDConfig.sensitivity,i=this.oldX,s=this.oldY,r={horizontal:e>=i-n&&e<=i+n?0:e>i?-1:1,vertical:t>=s-n&&t<=s+n?0:t>s?-1:1};return 0!==r.horizontal&&(this.oldX=e),0!==r.vertical&&(this.oldY=t),r},findDropTargetRow:function(e,t){for(var n=0,s=this.currentTable.rows,r=this.currentTable.tableDnDConfig,a=0,o=null,l=0;l<s.length;l++)if(o=s[l],a=this.getPosition(o).y,n=parseInt(o.offsetHeight)/2,0===o.offsetHeight&&(a=this.getPosition(o.firstChild).y,n=parseInt(o.firstChild.offsetHeight)/2),t>a-n&&t<a+n)return e.is(o)||r.onAllowDrop&&!r.onAllowDrop(e,o)||i(o).hasClass("nodrop")?null:o;return null},processMouseup:function(){if(!this.currentTable||!this.dragObject)return null;var e=this.currentTable.tableDnDConfig,t=this.dragObject,n=0,s=0;i(r).unbind(o,this.mousemove).unbind(l,this.mouseup),e.hierarchyLevel&&e.autoCleanRelations&&i(this.currentTable.rows).first().find("td:first").children().each((function(){(s=i(this).parents("tr:first").data("level"))&&i(this).parents("tr:first").data("level",--s)&&i(this).remove()}))&&e.hierarchyLevel>1&&i(this.currentTable.rows).each((function(){if((s=i(this).data("level"))>1)for(n=i(this).prev().data("level");s>n+1;)i(this).find("td:first").children(":first").remove(),i(this).data("level",--s)})),e.onDragClass&&i(t).removeClass(e.onDragClass)||i(t).css(e.onDropStyle),this.dragObject=null,e.onDrop&&this.originalOrder!==this.currentOrder()&&i(t).hide().fadeIn("fast")&&e.onDrop(this.currentTable,t),e.onDragStop&&e.onDragStop(this.currentTable,t),this.currentTable=null},mouseup:function(e){return e&&e.preventDefault(),i.tableDnD.processMouseup(),!1},jsonize:function(e){var t=this.currentTable;return e?JSON.stringify(this.tableData(t),null,t.tableDnDConfig.jsonPretifySeparator):JSON.stringify(this.tableData(t))},serialize:function(){return i.param(this.tableData(this.currentTable))},serializeTable:function(e){for(var t="",n=e.tableDnDConfig.serializeParamName||e.id,i=e.rows,s=0;s<i.length;s++){t.length>0&&(t+="&");var r=i[s].id;r&&e.tableDnDConfig&&e.tableDnDConfig.serializeRegexp&&(t+=n+"[]="+(r=r.match(e.tableDnDConfig.serializeRegexp)[0]))}return t},serializeTables:function(){var e=[];return i("table").each((function(){this.id&&e.push(i.param(i.tableDnD.tableData(this)))})),e.join("&")},tableData:function(e){var t,n,s,r,a=e.tableDnDConfig,o=[],l=0,u=0,d=null,c={};if(e||(e=this.currentTable),!e||!e.rows||!e.rows.length)return{error:{code:500,message:"Not a valid table."}};if(!e.id&&!a.serializeParamName)return{error:{code:500,message:"No serializable unique id provided."}};r=a.autoCleanRelations&&e.rows||i.makeArray(e.rows),t=function(e){return e&&a&&a.serializeRegexp?e.match(a.serializeRegexp)[0]:e},c[s=n=a.serializeParamName||e.id]=[],!a.autoCleanRelations&&i(r[0]).data("level")&&r.unshift({id:"undefined"});for(var h=0;h<r.length;h++)if(a.hierarchyLevel){if(0===(u=i(r[h]).data("level")||0))s=n,o=[];else if(u>l)o.push([s,l]),s=t(r[h-1].id);else if(u<l)for(var p=0;p<o.length;p++)o[p][1]===u&&(s=o[p][0]),o[p][1]>=l&&(o[p][1]=0);l=u,i.isArray(c[s])||(c[s]=[]),(d=t(r[h].id))&&c[s].push(d)}else(d=t(r[h].id))&&c[s].push(d);return c}},u.fn.extend({tableDnD:i.tableDnD.build,tableDnDUpdate:i.tableDnD.updateTables,tableDnDSerialize:i.proxy(i.tableDnD.serialize,i.tableDnD),tableDnDSerializeAll:i.tableDnD.serializeTables,tableDnDData:i.proxy(i.tableDnD.tableData,i.tableDnD)})},60885:function(e,t,n){var i,s,r;r=this,i=[n(73609)],void 0===(s=function(e){return r.Bloodhound=function(e){var t=function(){"use strict";return{isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},isBlankString:function(e){return!e||/^\s*$/.test(e)},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isArray:e.isArray,isFunction:e.isFunction,isObject:e.isPlainObject,isUndefined:function(e){return void 0===e},isElement:function(e){return!(!e||1!==e.nodeType)},isJQuery:function(t){return t instanceof e},toStr:function(e){return t.isUndefined(e)||null===e?"":e+""},bind:e.proxy,each:function(t,n){e.each(t,(function(e,t){return n(t,e)}))},map:e.map,filter:e.grep,every:function(t,n){var i=!0;return t?(e.each(t,(function(e,s){return!!(i=n.call(null,s,e,t))&&void 0})),!!i):i},some:function(t,n){var i=!1;return t?(e.each(t,(function(e,s){return!(i=n.call(null,s,e,t))&&void 0})),!!i):i},mixin:e.extend,identity:function(e){return e},clone:function(t){return e.extend(!0,{},t)},getIdGenerator:function(){var e=0;return function(){return e++}},templatify:function(t){return e.isFunction(t)?t:function(){return String(t)}},defer:function(e){setTimeout(e,0)},debounce:function(e,t,n){var i,s;return function(){var r,a,o=this,l=arguments;return r=function(){i=null,n||(s=e.apply(o,l))},a=n&&!i,clearTimeout(i),i=setTimeout(r,t),a&&(s=e.apply(o,l)),s}},throttle:function(e,t){var n,i,s,r,a,o;return a=0,o=function(){a=new Date,s=null,r=e.apply(n,i)},function(){var l=new Date,u=t-(l-a);return n=this,i=arguments,0>=u?(clearTimeout(s),s=null,a=l,r=e.apply(n,i)):s||(s=setTimeout(o,u)),r}},stringify:function(e){return t.isString(e)?e:JSON.stringify(e)},noop:function(){}}}(),n=function(){"use strict";function e(e){return(e=t.toStr(e))?e.split(/\s+/):[]}function n(e){return(e=t.toStr(e))?e.split(/\W+/):[]}function i(e){return function(n){return n=t.isArray(n)?n:[].slice.call(arguments,0),function(i){var s=[];return t.each(n,(function(n){s=s.concat(e(t.toStr(i[n])))})),s}}}return{nonword:n,whitespace:e,obj:{nonword:i(n),whitespace:i(e)}}}(),i=function(){"use strict";function n(n){this.maxSize=t.isNumber(n)?n:100,this.reset(),this.maxSize<=0&&(this.set=this.get=e.noop)}function i(){this.head=this.tail=null}function s(e,t){this.key=e,this.val=t,this.prev=this.next=null}return t.mixin(n.prototype,{set:function(e,t){var n,i=this.list.tail;this.size>=this.maxSize&&(this.list.remove(i),delete this.hash[i.key],this.size--),(n=this.hash[e])?(n.val=t,this.list.moveToFront(n)):(n=new s(e,t),this.list.add(n),this.hash[e]=n,this.size++)},get:function(e){var t=this.hash[e];return t?(this.list.moveToFront(t),t.val):void 0},reset:function(){this.size=0,this.hash={},this.list=new i}}),t.mixin(i.prototype,{add:function(e){this.head&&(e.next=this.head,this.head.prev=e),this.head=e,this.tail=this.tail||e},remove:function(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev},moveToFront:function(e){this.remove(e),this.add(e)}}),n}(),s=function(){"use strict";function n(e,n){this.prefix=["__",e,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+t.escapeRegExChars(this.prefix)),this.ls=n||a,!this.ls&&this._noop()}function i(){return(new Date).getTime()}function s(e){return JSON.stringify(t.isUndefined(e)?null:e)}function r(t){return e.parseJSON(t)}var a;try{(a=window.localStorage).setItem("~~~","!"),a.removeItem("~~~")}catch(e){a=null}return t.mixin(n.prototype,{_prefix:function(e){return this.prefix+e},_ttlKey:function(e){return this._prefix(e)+this.ttlKey},_noop:function(){this.get=this.set=this.remove=this.clear=this.isExpired=t.noop},_safeSet:function(e,t){try{this.ls.setItem(e,t)}catch(e){"QuotaExceededError"===e.name&&(this.clear(),this._noop())}},get:function(e){return this.isExpired(e)&&this.remove(e),r(this.ls.getItem(this._prefix(e)))},set:function(e,n,r){return t.isNumber(r)?this._safeSet(this._ttlKey(e),s(i()+r)):this.ls.removeItem(this._ttlKey(e)),this._safeSet(this._prefix(e),s(n))},remove:function(e){return this.ls.removeItem(this._ttlKey(e)),this.ls.removeItem(this._prefix(e)),this},clear:function(){var e,t=function(e){var t,n,i=[],s=a.length;for(t=0;s>t;t++)(n=a.key(t)).match(e)&&i.push(n.replace(e,""));return i}(this.keyMatcher);for(e=t.length;e--;)this.remove(t[e]);return this},isExpired:function(e){var n=r(this.ls.getItem(this._ttlKey(e)));return!!(t.isNumber(n)&&i()>n)}}),n}(),r=function(){"use strict";function n(e){e=e||{},this.cancelled=!1,this.lastReq=null,this._send=e.transport,this._get=e.limiter?e.limiter(this._get):this._get,this._cache=!1===e.cache?new i(0):o}var s=0,r={},a=6,o=new i(10);return n.setMaxPendingRequests=function(e){a=e},n.resetCache=function(){o.reset()},t.mixin(n.prototype,{_fingerprint:function(t){return(t=t||{}).url+t.type+e.param(t.data||{})},_get:function(e,t){function n(e){t(null,e),d._cache.set(l,e)}function i(){t(!0)}function o(){s--,delete r[l],d.onDeckRequestArgs&&(d._get.apply(d,d.onDeckRequestArgs),d.onDeckRequestArgs=null)}var l,u,d=this;l=this._fingerprint(e),this.cancelled||l!==this.lastReq||((u=r[l])?u.done(n).fail(i):a>s?(s++,r[l]=this._send(e).done(n).fail(i).always(o)):this.onDeckRequestArgs=[].slice.call(arguments,0))},get:function(n,i){var s,r;i=i||e.noop,n=t.isString(n)?{url:n}:n||{},r=this._fingerprint(n),this.cancelled=!1,this.lastReq=r,(s=this._cache.get(r))?i(null,s):this._get(n,i)},cancel:function(){this.cancelled=!0}}),n}(),a=window.SearchIndex=function(){"use strict";function n(n){(n=n||{}).datumTokenizer&&n.queryTokenizer||e.error("datumTokenizer and queryTokenizer are both required"),this.identify=n.identify||t.stringify,this.datumTokenizer=n.datumTokenizer,this.queryTokenizer=n.queryTokenizer,this.reset()}function i(e){return e=t.filter(e,(function(e){return!!e})),t.map(e,(function(e){return e.toLowerCase()}))}function s(){var e={};return e[a]=[],e[r]={},e}var r="c",a="i";return t.mixin(n.prototype,{bootstrap:function(e){this.datums=e.datums,this.trie=e.trie},add:function(e){var n=this;e=t.isArray(e)?e:[e],t.each(e,(function(e){var o,l;n.datums[o=n.identify(e)]=e,l=i(n.datumTokenizer(e)),t.each(l,(function(e){var t,i,l;for(t=n.trie,i=e.split("");l=i.shift();)(t=t[r][l]||(t[r][l]=s()))[a].push(o)}))}))},get:function(e){var n=this;return t.map(e,(function(e){return n.datums[e]}))},search:function(e){var n,s,o=this;return n=i(this.queryTokenizer(e)),t.each(n,(function(e){var t,n,i,l;if(s&&0===s.length)return!1;for(t=o.trie,n=e.split("");t&&(i=n.shift());)t=t[r][i];return t&&0===n.length?(l=t[a].slice(0),void(s=s?function(e,t){var n=0,i=0,s=[];e=e.sort(),t=t.sort();for(var r=e.length,a=t.length;r>n&&a>i;)e[n]<t[i]?n++:(e[n]>t[i]||(s.push(e[n]),n++),i++);return s}(s,l):l)):(s=[],!1)})),s?t.map(function(e){for(var t={},n=[],i=0,s=e.length;s>i;i++)t[e[i]]||(t[e[i]]=!0,n.push(e[i]));return n}(s),(function(e){return o.datums[e]})):[]},all:function(){var e=[];for(var t in this.datums)e.push(this.datums[t]);return e},reset:function(){this.datums={},this.trie=s()},serialize:function(){return{datums:this.datums,trie:this.trie}}}),n}(),o=function(){"use strict";function e(e){this.url=e.url,this.ttl=e.ttl,this.cache=e.cache,this.prepare=e.prepare,this.transform=e.transform,this.transport=e.transport,this.thumbprint=e.thumbprint,this.storage=new s(e.cacheKey)}var n;return n={data:"data",protocol:"protocol",thumbprint:"thumbprint"},t.mixin(e.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},store:function(e){this.cache&&(this.storage.set(n.data,e,this.ttl),this.storage.set(n.protocol,location.protocol,this.ttl),this.storage.set(n.thumbprint,this.thumbprint,this.ttl))},fromCache:function(){var e,t={};return this.cache?(t.data=this.storage.get(n.data),t.protocol=this.storage.get(n.protocol),t.thumbprint=this.storage.get(n.thumbprint),e=t.thumbprint!==this.thumbprint||t.protocol!==location.protocol,t.data&&!e?t.data:null):null},fromNetwork:function(e){var t,n=this;e&&(t=this.prepare(this._settings()),this.transport(t).fail((function(){e(!0)})).done((function(t){e(null,n.transform(t))})))},clear:function(){return this.storage.clear(),this}}),e}(),l=function(){"use strict";function e(e){this.url=e.url,this.prepare=e.prepare,this.transform=e.transform,this.transport=new r({cache:e.cache,limiter:e.limiter,transport:e.transport})}return t.mixin(e.prototype,{_settings:function(){return{url:this.url,type:"GET",dataType:"json"}},get:function(e,t){var n,i=this;if(t)return e=e||"",n=this.prepare(e,this._settings()),this.transport.get(n,(function(e,n){t(e?[]:i.transform(n))}))},cancelLastRequest:function(){this.transport.cancel()}}),e}(),u=function(){"use strict";function n(n){var i;return n?(i={url:null,ttl:864e5,cache:!0,cacheKey:null,thumbprint:"",prepare:t.identity,transform:t.identity,transport:null},n=t.isString(n)?{url:n}:n,!(n=t.mixin(i,n)).url&&e.error("prefetch requires url to be set"),n.transform=n.filter||n.transform,n.cacheKey=n.cacheKey||n.url,n.thumbprint="0.11.1"+n.thumbprint,n.transport=n.transport?s(n.transport):e.ajax,n):null}function i(n){var i;if(n)return i={url:null,cache:!0,prepare:null,replace:null,wildcard:null,limiter:null,rateLimitBy:"debounce",rateLimitWait:300,transform:t.identity,transport:null},n=t.isString(n)?{url:n}:n,!(n=t.mixin(i,n)).url&&e.error("remote requires url to be set"),n.transform=n.filter||n.transform,n.prepare=function(e){function t(e,t){return t.url=r(t.url,e),t}function n(e,t){return t.url=t.url.replace(a,encodeURIComponent(e)),t}function i(e,t){return t}var s,r,a;return s=e.prepare,r=e.replace,a=e.wildcard,s||(r?t:e.wildcard?n:i)}(n),n.limiter=function(e){function n(e){return function(n){return t.debounce(n,e)}}function i(e){return function(n){return t.throttle(n,e)}}var s,r,a;return s=e.limiter,r=e.rateLimitBy,a=e.rateLimitWait,s||(s=/^throttle$/i.test(r)?i(a):n(a)),s}(n),n.transport=n.transport?s(n.transport):e.ajax,delete n.replace,delete n.wildcard,delete n.rateLimitBy,delete n.rateLimitWait,n}function s(n){return function(i){var s=e.Deferred();return n(i,(function(e){t.defer((function(){s.resolve(e)}))}),(function(e){t.defer((function(){s.reject(e)}))})),s}}return function(s){var r,a;return r={initialize:!0,identify:t.stringify,datumTokenizer:null,queryTokenizer:null,sufficient:5,sorter:null,local:[],prefetch:null,remote:null},!(s=t.mixin(r,s||{})).datumTokenizer&&e.error("datumTokenizer is required"),!s.queryTokenizer&&e.error("queryTokenizer is required"),a=s.sorter,s.sorter=a?function(e){return e.sort(a)}:t.identity,s.local=t.isFunction(s.local)?s.local():s.local,s.prefetch=n(s.prefetch),s.remote=i(s.remote),s}}();return function(){"use strict";function i(e){e=u(e),this.sorter=e.sorter,this.identify=e.identify,this.sufficient=e.sufficient,this.local=e.local,this.remote=e.remote?new l(e.remote):null,this.prefetch=e.prefetch?new o(e.prefetch):null,this.index=new a({identify:this.identify,datumTokenizer:e.datumTokenizer,queryTokenizer:e.queryTokenizer}),!1!==e.initialize&&this.initialize()}var s;return s=window&&window.Bloodhound,i.noConflict=function(){return window&&(window.Bloodhound=s),i},i.tokenizers=n,t.mixin(i.prototype,{__ttAdapter:function(){var e=this;return this.remote?function(t,n,i){return e.search(t,n,i)}:function(t,n){return e.search(t,n)}},_loadPrefetch:function(){var t,n,i=this;return t=e.Deferred(),this.prefetch?(n=this.prefetch.fromCache())?(this.index.bootstrap(n),t.resolve()):this.prefetch.fromNetwork((function(e,n){return e?t.reject():(i.add(n),i.prefetch.store(i.index.serialize()),void t.resolve())})):t.resolve(),t.promise()},_initialize:function(){var e=this;return this.clear(),(this.initPromise=this._loadPrefetch()).done((function(){e.add(e.local)})),this.initPromise},initialize:function(e){return!this.initPromise||e?this._initialize():this.initPromise},add:function(e){return this.index.add(e),this},get:function(e){return e=t.isArray(e)?e:[].slice.call(arguments),this.index.get(e)},search:function(e,n,i){var s,r=this;return s=this.sorter(this.index.search(e)),n(this.remote?s.slice():s),this.remote&&s.length<this.sufficient?this.remote.get(e,(function(e){var n=[];t.each(e,(function(e){!t.some(s,(function(t){return r.identify(e)===r.identify(t)}))&&n.push(e)})),i&&i(n)})):this.remote&&this.remote.cancelLastRequest(),this},all:function(){return this.index.all()},clear:function(){return this.index.reset(),this},clearPrefetchCache:function(){return this.prefetch&&this.prefetch.clear(),this},clearRemoteCache:function(){return r.resetCache(),this},ttAdapter:function(){return this.__ttAdapter()}}),i}()}(e)}.apply(t,i))||(e.exports=s)},38264:function(e,t,n){!function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},i=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},s=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var s=function(e){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var t=typeof e;if("undefined"===t);else if("string"===t)""!==e&&this._fromString(e);else if(e instanceof s){var n=this;e.forEach((function(e,t){n.append(t,e)}))}else{if(null===e||"object"!==t)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(e))for(var i=0;i<e.length;i++){var r=e[i];if("[object Array]"!==Object.prototype.toString.call(r)&&2===r.length)throw new TypeError("Expected [string, any] as entry at index "+i+" of URLSearchParams's input");this.append(r[0],r[1])}else for(var a in e)e.hasOwnProperty(a)&&this.append(a,e[a])}},r=s.prototype;r.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},r.delete=function(e){delete this._entries[e]},r.get=function(e){return e in this._entries?this._entries[e][0]:null},r.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},r.has=function(e){return e in this._entries},r.set=function(e,t){this._entries[e]=[String(t)]},r.forEach=function(e,t){var n;for(var i in this._entries)if(this._entries.hasOwnProperty(i)){n=this._entries[i];for(var s=0;s<n.length;s++)e.call(t,n[s],i,this)}},r.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},r.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},r.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(r[Symbol.iterator]=r.entries),r.toString=function(){var e=[];return this.forEach((function(t,n){e.push(i(n)+"="+i(t))})),e.join("&")},e.URLSearchParams=s}();var r=e.URLSearchParams.prototype;"function"!=typeof r.sort&&(r.sort=function(){var e=this,t=[];this.forEach((function(n,i){t.push([i,n]),e._entries||e.delete(i)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof r._fromString&&Object.defineProperty(r,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var i,r=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<r.length;n++)i=r[n].split("="),this.append(s(i[0]),i.length>1?s(i[1]):"")}})}(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var i,s=document;if(n&&(void 0===e.location||n!==e.location.href)){(i=(s=document.implementation.createHTMLDocument("")).createElement("base")).href=n,s.head.appendChild(i);try{if(0!==i.href.indexOf(n))throw new Error(i.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var r=s.createElement("a");if(r.href=t,i&&(s.body.appendChild(r),r.href=r.href),":"===r.protocol||!/:/.test(r.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:r});var a=new e.URLSearchParams(this.search),o=!0,l=!0,u=this;["append","delete","set"].forEach((function(e){var t=a[e];a[e]=function(){t.apply(a,arguments),o&&(l=!1,u.search=a.toString(),l=!0)}})),Object.defineProperty(this,"searchParams",{value:a,enumerable:!0});var d=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==d&&(d=this.search,l&&(o=!1,this.searchParams._fromString(this.search),o=!0))}})},i=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(i,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(i,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(i,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==n.g?n.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:this)},73609:e=>{"use strict";e.exports=window.jQuery}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var __webpack_exports__={};(()=>{"use strict";__webpack_require__(61629),__webpack_require__(10278),__webpack_require__(96123),__webpack_require__(99276),__webpack_require__(97549),__webpack_require__(37337),__webpack_require__(98867),__webpack_require__(4231),__webpack_require__(59761),__webpack_require__(8975),__webpack_require__(19976),__webpack_require__(10054);var e=o(__webpack_require__(37099));__webpack_require__(87850),__webpack_require__(869),__webpack_require__(38012);var t=o(__webpack_require__(39801)),n=o(__webpack_require__(54563)),i=o(__webpack_require__(77120)),s=o(__webpack_require__(5847)),r=o(__webpack_require__(8064)),a=o(__webpack_require__(58015));function o(e){return e&&e.__esModule?e:{default:e}}var l=window.$;window.Dropzone.autoDiscover=!1,new e.default,new t.default,l((function(){(0,a.default)(),(0,n.default)(),(0,i.default)(),(0,s.default)('input[type="email"]'),(0,r.default)(".js-comma-transformer")}))})(),window.main=__webpack_exports__})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvYW5pbWF0aW9ucy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvZGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvZW1haWwtaWRuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC91dGlscy9maWVsZHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL3V0aWxzL2luaXQtY29tcG9uZW50cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvdXRpbHMvbnVtYmVyLWNvbW1hLXRyYW5zZm9ybWVyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC91dGlscy9yZXNldF9zZWFyY2guanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL3V0aWxzL3RhYmxlLXNvcnRpbmcuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY2xpY2thYmxlLWRyb3Bkb3duLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvY2hvaWNlLXRhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvY291bnRyeS1kbmktcmVxdWlyZWQtdG9nZ2xlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2NvdW50cnktc3RhdGUtc2VsZWN0aW9uLXRvZ2dsZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ldmVudC1lbWl0dGVyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZm9ybS9jaG9pY2UtdHJlZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2Zvcm0vbXVsdGlzdG9yZS1jb25maWctZmllbGQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9mb3JtL3ByZXZpZXctb3BlbmVyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZm9ybS90ZXh0LXdpdGgtbGVuZ3RoLWNvdW50ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9nZW5lcmF0YWJsZS1pbnB1dC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2FjdGlvbi9yb3cvc3VibWl0LXJvdy1hY3Rpb24tZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYnVsay1hY3Rpb24tY2hlY2tib3gtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vYnVsay1vcGVuLXRhYnMtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vY2hvaWNlLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2NvbHVtbi10b2dnbGluZy1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9jb2x1bW4vY29tbW9uL2FzeW5jLXRvZ2dsZS1jb2x1bW4tZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZXhwb3J0LXRvLXNxbC1tYW5hZ2VyLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2ZpbHRlcnMtcmVzZXQtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZmlsdGVycy1zdWJtaXQtYnV0dG9uLWVuYWJsZXItZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vbGluay1yb3ctYWN0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL21vZGFsLWZvcm0tc3VibWl0LWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3Bvc2l0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3ByZXZpZXctZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vcmVsb2FkLWxpc3QtZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc29ydGluZy1leHRlbnNpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9zdWJtaXQtYnVsay1hY3Rpb24tZXh0ZW5zaW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vc3VibWl0LWdyaWQtYWN0aW9uLWV4dGVuc2lvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL2dyaWQvZ3JpZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL21vZGFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvbXVsdGlwbGUtY2hvaWNlLXRhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvbmF2YmFyLXRyYW5zaXRpb24taGFuZGxlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL3JvdXRlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL3RhZ2dhYmxlLWZpZWxkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvdGlueW1jZS1lZGl0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy90cmFuc2xhdGFibGUtZmllbGQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvY29tcG9uZW50cy90cmFuc2xhdGFibGUtaW5wdXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvaGVhZGVyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL21haW50ZW5hbmNlLXBhZ2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvbWFpbnRlbmFuY2UtcGFnZS9pcC1pbnB1dC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9uYXZfYmFyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL25vdGlmaWNhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvdHJhbnNsYXRpb24tcGFnZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy90cmFuc2xhdGlvbi1wYWdlL21lc3NhZ2VzLWVkaXRpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvdHJhbnNsYXRpb24tcGFnZS9tZXNzYWdlcy1wYWdpbmF0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3RyYW5zbGF0aW9uLXBhZ2UvbWVzc2FnZXMtc2VhcmNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3RyYW5zbGF0aW9uLXBhZ2UvbWVzc2FnZXMtdHJlZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy90cmFuc2xhdGlvbi1wYWdlL21lc3NhZ2VzLXZpc2liaWxpdHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvdHJhbnNsYXRpb24tcGFnZS9tdWx0aS1wYWdpbmF0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvYXJyYXkvZnJvbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2lzLWl0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3NldC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vYXJyYXkvZnJvbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2lzLWl0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3NldC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29sbGVjdGlvbi1zdHJvbmcuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mb3Itb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qtc2FwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1jb2xsZWN0aW9uLW9mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5pcy1pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5LmZyb20uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zZXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC5vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy90eXBlYWhlYWQuanMvZGlzdC9ibG9vZGhvdW5kLm1pbi1leHBvc2VkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9leHBvc2UtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRHbG9iYWxUaGlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9mb3Mtcm91dGluZy9kaXN0L3JvdXRpbmcuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2p3ZXJ0eS9qd2VydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS11aS1kaXN0L2pxdWVyeS11aS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvbWFnbmlmaWMtcG9wdXAvZGlzdC9qcXVlcnkubWFnbmlmaWMtcG9wdXAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Ryb3B6b25lL2Rpc3QvZHJvcHpvbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3R5cGVhaGVhZC5qcy9kaXN0L3R5cGVhaGVhZC5qcXVlcnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC10b2tlbmZpZWxkL2Rpc3QvYm9vdHN0cmFwLXRva2VuZmllbGQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2VvbmFzZGFuLWJvb3RzdHJhcC1kYXRldGltZXBpY2tlci9zcmMvanMvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9qZXRzL2pldHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS1zZXJpYWxpemVqc29uL2pxdWVyeS5zZXJpYWxpemVqc29uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLVNHLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy90bXAvcHJlc3Rhc2hvcC9hZG1pbi1kZXYvdGhlbWVzL25ldy10aGVtZS9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZXxzeW5jfC9eXFwuXFwvLiokLyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvcGVyZmVjdC1zY3JvbGxiYXIvZGlzdC9wZXJmZWN0LXNjcm9sbGJhci5lc20uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3ByZXN0YWtpdC9kaXN0L2pzL3ByZXN0YXNob3AtdWkta2l0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9wdW55Y29kZS9wdW55Y29kZS5lczYuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3NwcmludGYtanMvc3JjL3NwcmludGYuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3RhYmxlZG5kL2Rpc3QvanF1ZXJ5LnRhYmxlZG5kLm1pbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvdHlwZWFoZWFkLmpzL2Rpc3QvYmxvb2Rob3VuZC5taW4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3VybC1wb2x5ZmlsbC91cmwtcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL1tuYW1lXS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvdGhlbWUuanMiXSwibmFtZXMiOlsidHlwZSIsImxpZmVjeWNsZSIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidHlwZVVwcGVyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJsaWZlY3ljbGVVcHBlciIsInByb3BlcnRpZXMiLCJ0cmFuc2l0aW9uIiwiT1RyYW5zaXRpb24iLCJNb3pUcmFuc2l0aW9uIiwiV2Via2l0VHJhbnNpdGlvbiIsImtleSIsImZpbmQiLCJwcm9wS2V5IiwidW5kZWZpbmVkIiwic3R5bGUiLCIkIiwid2luZG93IiwicmVwbGFjZURhdGVQaWNrZXIiLCJkYXRlcGlja2VyV2lkZ2V0IiwibGVuZ3RoIiwicG9zaXRpb24iLCJvZmZzZXQiLCJvcmlnaW5hbEhlaWdodCIsIm91dGVySGVpZ2h0IiwibWFyZ2luIiwiYXBwZW5kVG8iLCJ0b3AiLCJoYXNDbGFzcyIsImNzcyIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm9uIiwiJGRhdGVQaWNrZXJzIiwiZWFjaCIsImkiLCJwaWNrZXIiLCJkYXRldGltZXBpY2tlciIsImxvY2FsZSIsImZ1bGxfbGFuZ3VhZ2VfY29kZSIsImZvcm1hdCIsImRhdGEiLCJzaWRlQnlTaWRlIiwiaWNvbnMiLCJ0aW1lIiwiZGF0ZSIsInVwIiwiZG93biIsIm9mZiIsImUiLCJldmVudCIsIkN1c3RvbUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsInNlbGVjdG9yIiwiJGVtYWlsRmllbGRzIiwiZmllbGQiLCJjaGVja1ZhbGlkaXR5IiwicGFydHMiLCJ2YWx1ZSIsInNwbGl0IiwicHVueWNvZGUiLCJ0b0FTQ0lJIiwidGhpcyIsInNjcm9sbEludG9WaWV3IiwiR3JpZEV4dGVuc2lvbnMiLCJBc3luY1RvZ2dsZUNvbHVtbkV4dGVuc2lvbiIsIkJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbiIsIkJ1bGtPcGVuVGFic0V4dGVuc2lvbiIsIkNob2ljZUV4dGVuc2lvbiIsIkNvbHVtblRvZ2dsaW5nRXh0ZW5zaW9uIiwiRXhwb3J0VG9TcWxNYW5hZ2VyRXh0ZW5zaW9uIiwiRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uIiwiRmlsdGVyc1N1Ym1pdEJ1dHRvbkVuYWJsZXJFeHRlbnNpb24iLCJMaW5rUm93QWN0aW9uRXh0ZW5zaW9uIiwiTW9kYWxGb3JtU3VibWl0RXh0ZW5zaW9uIiwiUG9zaXRpb25FeHRlbnNpb24iLCJQcmV2aWV3RXh0ZW5zaW9uIiwiUmVsb2FkTGlzdEV4dGVuc2lvbiIsIlNvcnRpbmdFeHRlbnNpb24iLCJTdWJtaXRCdWxrQWN0aW9uRXh0ZW5zaW9uIiwiU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbiIsIlN1Ym1pdFJvd0FjdGlvbkV4dGVuc2lvbiIsInByZXN0YXNob3AiLCJpbnN0YW5jZSIsImNvbXBvbmVudCIsImluaXRDb21wb25lbnRzIiwiY29tcG9uZW50cyIsImZvckVhY2giLCJjb21wb25lbnRJbnN0YW5jZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsInNsaWNlIiwiY29uc29sZSIsIndhcm4iLCJlcnJvciIsIkV2ZW50RW1pdHRlciIsImVtaXQiLCJUcmFuc2xhdGFibGVGaWVsZCIsIlRpbnlNQ0VFZGl0b3IiLCJUcmFuc2xhdGFibGVJbnB1dCIsIlRhZ2dhYmxlRmllbGQiLCJDaG9pY2VUYWJsZSIsIkNob2ljZVRyZWUiLCJNdWx0aXBsZUNob2ljZVRhYmxlIiwiR2VuZXJhdGFibGVJbnB1dCIsIkNvdW50cnlTdGF0ZVNlbGVjdGlvblRvZ2dsZXIiLCJDb3VudHJ5RG5pUmVxdWlyZWRUb2dnbGVyIiwiVGV4dFdpdGhMZW5ndGhDb3VudGVyIiwiTXVsdGlzdG9yZUNvbmZpZ0ZpZWxkIiwiUHJldmlld09wZW5lciIsIkdyaWQiLCJSb3V0ZXIiLCJmaW5kQWxsVW53YW50ZWRDaGFyc0V4Y2VwdFRoZUxhdGVzdE9uZSIsImZpbmRBbGxVbndhbnRlZENoYXJzIiwidHJhbnNmb3JtIiwidmFsIiwidW53YW50ZWRDaGFycyIsIm1hdGNoIiwidW5pcXVlIiwicmVwbGFjZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0YXJnZXQiLCJtYXRjaGVzIiwiY2xlYXJOdW1iZXJJbnB1dFZhbHVlIiwidXJsIiwicmVkaXJlY3RVcmwiLCJwb3N0IiwidGhlbiIsImxvY2F0aW9uIiwiYXNzaWduIiwiVGFibGVTb3J0aW5nIiwidGFibGUiLCJjb2x1bW5zIiwiJGNvbHVtbiIsImRlbGVnYXRlVGFyZ2V0Iiwic29ydEJ5Q29sdW1uIiwiZ2V0VG9nZ2xlZFNvcnREaXJlY3Rpb24iLCJjb2x1bW5OYW1lIiwiZGlyZWN0aW9uIiwiaXMiLCJFcnJvciIsImNvbHVtbiIsImdldFVybCIsImNvbE5hbWUiLCJwcmVmaXgiLCJVUkwiLCJocmVmIiwicGFyYW1zIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJmbiIsImNsaWNrYWJsZURyb3Bkb3duIiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlU2VsZWN0QWxsIiwiJHNlbGVjdEFsbENoZWNrYm94ZXMiLCJpc1NlbGVjdEFsbENoZWNrZWQiLCJjbG9zZXN0IiwicHJvcCIsImNvdW50cnlJbnB1dFNlbGVjdG9yIiwiY291bnRyeURuaUlucHV0IiwiY291bnRyeURuaUlucHV0TGFiZWwiLCIkY291bnRyeURuaUlucHV0IiwiJGNvdW50cnlEbmlJbnB1dExhYmVsIiwiJGNvdW50cnlJbnB1dCIsImNvdW50cnlJbnB1dFNlbGVjdGVkU2VsZWN0b3IiLCJjb3VudHJ5RG5pSW5wdXRMYWJlbERhbmdlclNlbGVjdG9yIiwiYXR0ciIsInRvZ2dsZSIsInJlbW92ZSIsInBhcnNlSW50IiwicHJlcGVuZCIsImNvdW50cnlTdGF0ZVNlbGVjdG9yIiwic3RhdGVTZWxlY3Rpb25CbG9ja1NlbGVjdG9yIiwiJHN0YXRlU2VsZWN0aW9uQmxvY2siLCIkY291bnRyeVN0YXRlU2VsZWN0b3IiLCJjaGFuZ2UiLCJjb3VudHJ5SWQiLCJnZXQiLCJkYXRhVHlwZSIsImlkX2NvdW50cnkiLCJyZXNwb25zZSIsImVtcHR5Iiwic3RhdGVzIiwiYXBwZW5kIiwidGV4dCIsImNhdGNoIiwicmVzcG9uc2VKU09OIiwic2hvd0Vycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJ0b2dnbGVDbGFzcyIsIkV2ZW50RW1pdHRlckNsYXNzIiwidHJlZVNlbGVjdG9yIiwiJGNvbnRhaW5lciIsIiRpbnB1dFdyYXBwZXIiLCJjdXJyZW50VGFyZ2V0IiwidG9nZ2xlQ2hpbGRUcmVlIiwiJGFjdGlvbiIsInRvZ2dsZVRyZWUiLCJlbmFibGVBdXRvQ2hlY2tDaGlsZHJlbiIsImVuYWJsZUFsbElucHV0cyIsImRpc2FibGVBbGxJbnB1dHMiLCIkY2xpY2tlZENoZWNrYm94IiwicmVtb3ZlQXR0ciIsIiRwYXJlbnRXcmFwcGVyIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsIiRwYXJlbnRDb250YWluZXIiLCJhY3Rpb24iLCJjb25maWciLCJleHBhbmQiLCJjb2xsYXBzZSIsIm5leHRBY3Rpb24iLCJpY29uIiwiaW5kZXgiLCJpdGVtIiwiJGl0ZW0iLCJ1cGRhdGVNdWx0aXN0b3JlRmllbGRPbkNoYW5nZSIsImlucHV0IiwiaW5wdXRDb250YWluZXIiLCJsYWJlbENvbnRhaW5lciIsImlzQ2hlY2tlZCIsInByZXZpZXdVcmxTZWxlY3RvciIsInByZXZpZXdVcmwiLCJvcGVuIiwidXJsUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiaGFzIiwid3JhcHBlclNlbGVjdG9yIiwidGV4dFNlbGVjdG9yIiwiaW5wdXRTZWxlY3RvciIsIiRpbnB1dCIsInJlbWFpbmluZ0xlbmd0aCIsImF0dGFjaE9uIiwiYnRuU2VsZWN0b3IiLCJnZW5lcmF0b3JCdG5TZWxlY3RvciIsImdlbmVyYXRvckJ0biIsInF1ZXJ5U2VsZWN0b3IiLCJhdHRyaWJ1dGVzIiwidGFyZ2V0SW5wdXRJZCIsImdldE5hbWVkSXRlbSIsImdlbmVyYXRlZFZhbHVlTGVuZ3RoIiwiZ2VuZXJhdGVWYWx1ZSIsImNoYXJzIiwiZ2VuZXJhdGVkVmFsdWUiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJncmlkIiwiZ2V0Q29udGFpbmVyIiwicHJldmVudERlZmF1bHQiLCIkYnV0dG9uIiwiY29uZmlybU1lc3NhZ2UiLCJjb25maXJtVGl0bGUiLCJtZXRob2QiLCJzaG93Q29uZmlybU1vZGFsIiwiY29uZmlybSIsInBvc3RGb3JtIiwiaXNHZXRPclBvc3RNZXRob2QiLCJpbmNsdWRlcyIsIiRmb3JtIiwibmFtZSIsInN1Ym1pdCIsIiRzdWJtaXRCdG4iLCJjb25maXJtQnV0dG9uTGFiZWwiLCJjbG9zZUJ1dHRvbkxhYmVsIiwiY29uZmlybUJ1dHRvbkNsYXNzIiwiQ29uZmlybU1vZGFsIiwiaWQiLCJnZXRJZCIsInNob3ciLCJoYW5kbGVCdWxrQWN0aW9uQ2hlY2tib3hTZWxlY3QiLCJoYW5kbGVCdWxrQWN0aW9uU2VsZWN0QWxsQ2hlY2tib3giLCJlbmFibGVCdWxrQWN0aW9uc0J0biIsImRpc2FibGVCdWxrQWN0aW9uc0J0biIsInJvdXRlciIsImV4dGVuZCIsIm9wZW5UYWJzIiwicm91dGUiLCJyb3V0ZVBhcmFtTmFtZSIsInRhYnNCbG9ja2VkTWVzc2FnZSIsIiRjaGVja2JveGVzIiwiYWxsVGFic09wZW5lZCIsImVsZW1lbnQiLCIkY2hlY2tib3giLCJyb3V0ZVBhcmFtcyIsImhhbmRsZSIsImdlbmVyYXRlIiwiYmx1ciIsImZvY3VzIiwiYWxlcnQiLCJsb2NrcyIsInN1Ym1pdEZvcm0iLCJzZWxlY3RlZFN0YXR1c0lkIiwiaXNMb2NrZWQiLCJsb2NrIiwicHVzaCIsInRvZ2dsZVZhbHVlIiwicm93IiwidG9nZ2xlVXJsIiwic3VibWl0QXNGb3JtIiwic3RhdHVzIiwic2hvd1N1Y2Nlc3NNZXNzYWdlIiwidG9nZ2xlQnV0dG9uRGlzcGxheSIsImlzQWN0aXZlIiwiY2xhc3NUb0FkZCIsImNsYXNzVG9SZW1vdmUiLCJnZXRIZWFkZXJDb250YWluZXIiLCJvblNob3dTcWxRdWVyeUNsaWNrIiwib25FeHBvcnRTcWxNYW5hZ2VyQ2xpY2siLCIkc3FsTWFuYWdlckZvcm0iLCJmaWxsRXhwb3J0Rm9ybSIsIiRtb2RhbCIsIm1vZGFsIiwicXVlcnkiLCJnZXROYW1lRnJvbUJyZWFkY3J1bWIiLCIkYnJlYWRjcnVtYnMiLCIkYnJlYWRjcnVtYiIsImJyZWFkY3J1bWJUaXRsZSIsImNvbmNhdCIsIiRmaWx0ZXJzUm93IiwiaW5pdFJvd0xpbmtzIiwiaW5pdENvbmZpcm1hYmxlQWN0aW9ucyIsIiRwYXJlbnRSb3ciLCIkcm93QWN0aW9uIiwiJHBhcmVudENlbGwiLCJjbGlja2FibGVDZWxscyIsIm5vdCIsImlzRHJhZ2dpbmciLCJtb3VzZWRvd24iLCJtb3VzZW1vdmUiLCJ1bmJpbmQiLCJtb3VzZXVwIiwid2FzRHJhZ2dpbmciLCJtb2RhbElkIiwiJGJ1bGtJbnB1dHNCbG9jayIsInBhcnNlSFRNTCIsImFkZElkc1RvR3JpZFRhYmxlUm93cyIsInRhYmxlRG5EIiwib25EcmFnQ2xhc3MiLCJkcmFnSGFuZGxlIiwib25Ecm9wIiwiaGFuZGxlUG9zaXRpb25DaGFuZ2UiLCJob3ZlciIsIiRyb3dQb3NpdGlvbkNvbnRhaW5lciIsInVwZGF0ZVVybCIsInBvc2l0aW9ucyIsImdldFJvd3NQb3NpdGlvbnMiLCJ1cGRhdGVQb3NpdGlvbiIsInJvd3NEYXRhIiwiSlNPTiIsInBhcnNlIiwianNvbml6ZSIsImNvbXBsZXRlUm93c0RhdGEiLCJ0ckRhdGEiLCJyb3dNYXJrZXIiLCJjb21wdXRlTWFwcGluZ0JldHdlZW5PbGRBbmROZXdQb3NpdGlvbnMiLCJjb3VudGVyIiwicG9zaXRpb25XcmFwcGVyIiwiJHBvc2l0aW9uV3JhcHBlciIsInBvc2l0aW9uc05iIiwicm93SWQiLCJvbGRQb3NpdGlvbiIsIm5ld1Bvc2l0aW9uIiwicmVnZXgiLCJtYXBwaW5nIiwiQXJyYXkiLCJmaWxsIiwibWFwIiwiT2JqZWN0IiwiZXhlYyIsInByZXZpZXdDdXN0b21pemF0aW9uIiwiZXhwYW5kU2VsZWN0b3IiLCJjb2xsYXBzZVNlbGVjdG9yIiwicHJldmlld09wZW5DbGFzcyIsInByZXZpZXdUb2dnbGVTZWxlY3RvciIsIiRncmlkQ29udGFpbmVyIiwiaGFuZGxlSWNvbkhvdmVyaW5nIiwidG9nZ2xlUHJldmlldyIsIiRwcmV2aWV3VG9nZ2xlIiwiaGlkZUV4cGFuZEljb24iLCJzaG93RXhwYW5kSWNvbiIsIiRjb2x1bW5Sb3ciLCJuZXh0IiwiaGlkZUNvbGxhcHNlSWNvbiIsImNsb3NlT3BlbmVkUHJldmlld3MiLCJkYXRhVXJsIiwiYWpheCIsImNvbXBsZXRlIiwidW5sb2NrIiwicmVuZGVyUHJldmlld0NvbnRlbnQiLCJwcmV2aWV3IiwiY29udGVudCIsInJvd0NvbHVtbkNvdW50IiwiJHByZXZpZXdUZW1wbGF0ZSIsInNob3dDb2xsYXBzZUljb24iLCJhZnRlciIsInBhcmVudCIsImluZGV4T2YiLCJzcGxpY2UiLCIkcm93cyIsIiRyb3ciLCIkcHJldmlld1JvdyIsInJlbG9hZCIsIiRzb3J0YWJsZVRhYmxlIiwiYXR0YWNoIiwiaGFuZGxlU3VibWl0IiwiZXh0ZW5zaW9uIiwiY29uZmlybUNhbGxiYWNrIiwiY2FuY2VsQ2FsbGJhY2siLCJjbG9zYWJsZSIsImN1c3RvbUJ1dHRvbnMiLCJjb250YWluZXIiLCJjbGFzc0xpc3QiLCJhZGQiLCJkaWFsb2ciLCJoZWFkZXIiLCJ0aXRsZSIsImlubmVySFRNTCIsImNsb3NlSWNvbiIsInNldEF0dHJpYnV0ZSIsImRhdGFzZXQiLCJkaXNtaXNzIiwiYm9keSIsImZvb3RlciIsImNsb3NlQnV0dG9uIiwiY29uZmlybUJ1dHRvbiIsImFwcGVuZENoaWxkIiwiTW9kYWwiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwiaGFuZGxlU2VsZWN0Q29sdW1uIiwiJHNlbGVjdENvbHVtbkJ0biIsImNoZWNrZWQiLCIkbmF2QmFyIiwiJG1haW5NZW51IiwiZW5kVHJhbnNpdGlvbkV2ZW50IiwiJGJvZHkiLCJ0cmFuc2l0aW9uRmlyZWQiLCJzaG93TmF2QmFyQ29udGVudCIsInByb3BlcnR5TmFtZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpc1NpZGViYXJDbG9zZWQiLCJiaW5kIiwiY3VzdG9tUm91dGVzIiwicm91dGVzIiwiUm91dGluZyIsInNldERhdGEiLCJzZXRCYXNlVXJsIiwidG9rZW5pemVkUGFyYW1zIiwiX3Rva2VuIiwidG9rZW5GaWVsZFNlbGVjdG9yIiwib3B0aW9ucyIsInRva2VuZmllbGQiLCJvcHRzIiwidGlueU1DRUxvYWRlZCIsImJhc2VBZG1pblVybCIsImJhc2VBZG1pbkRpciIsInBhdGhuYW1lIiwiZXZlcnkiLCJwYXRoUGFydCIsImxhbmdJc1J0bCIsImxhbmdfaXNfcnRsIiwic2V0dXBUaW55TUNFIiwidGlueU1DRSIsImxvYWRBbmRJbml0VGlueU1DRSIsImluaXRUaW55TUNFIiwiY2ZnIiwicGx1Z2lucyIsImJyb3dzZXJfc3BlbGxjaGVjayIsInRvb2xiYXIxIiwidG9vbGJhcjIiLCJsYW5ndWFnZSIsImlzb191c2VyIiwiZXh0ZXJuYWxfZmlsZW1hbmFnZXJfcGF0aCIsImZpbGVtYW5hZ2VyX3RpdGxlIiwiZXh0ZXJuYWxfcGx1Z2lucyIsImZpbGVtYW5hZ2VyIiwiY29udGVudF9zdHlsZSIsInNraW4iLCJtb2JpbGUiLCJ0aGVtZSIsInRvb2xiYXIiLCJtZW51YmFyIiwic3RhdHVzYmFyIiwicmVsYXRpdmVfdXJscyIsImNvbnZlcnRfdXJscyIsImVudGl0eV9lbmNvZGluZyIsImV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzIiwidmFsaWRfY2hpbGRyZW4iLCJ2YWxpZF9lbGVtZW50cyIsInJlbF9saXN0IiwiZWRpdG9yX3NlbGVjdG9yIiwiaW5pdF9pbnN0YW5jZV9jYWxsYmFjayIsImNoYW5nZVRvTWF0ZXJpYWwiLCJzZXR1cCIsImVkaXRvciIsInNldHVwRWRpdG9yIiwiZGVmYXVsdFRpbnlNY2VDb25maWciLCJpbml0Iiwid2F0Y2hUYWJDaGFuZ2VzIiwiaGFuZGxlQ291bnRlclRpbnkiLCJ0cmlnZ2VyU2F2ZSIsInRleHRhcmVhIiwidHJhbnNsYXRlZEZpZWxkIiwidGFiQ29udGFpbmVyIiwidGV4dGFyZWFMb2NhbGUiLCJmb3JtIiwic2V0Q29udGVudCIsImdldENvbnRlbnQiLCJzZWxlY3RlZExvY2FsZSIsInRleHRhcmVhTGlua1NlbGVjdG9yIiwiY2xpY2siLCJwYXRoQXJyYXkiLCJmaW5hbFBhdGgiLCJqb2luIiwidGlueU1DRVByZUluaXQiLCJiYXNlIiwic3VmZml4IiwiZ2V0U2NyaXB0IiwicmVwbGFjZVdpdGgiLCJjb3VudGVyVHlwZSIsIm1heCIsImdldEJvZHkiLCJ0ZXh0Q29udGVudCIsImxvY2FsZUJ1dHRvblNlbGVjdG9yIiwibG9jYWxlTmF2aWdhdGlvblNlbGVjdG9yIiwidHJhbnNsYXRpb25GaWVsZFNlbGVjdG9yIiwidG9nZ2xlTGFuZ3VhZ2UiLCJ0b2dnbGVGaWVsZHMiLCJyZWZyZXNoRm9ybUlucHV0cyIsInJlZnJlc2hJbnB1dHMiLCJnZXRTZWxlY3RlZExvY2FsZSIsImxvY2FsZUxpbmsiLCJuYXZpZ2F0aW9uIiwidGFiIiwibG9jYWxlSXRlbVNlbGVjdG9yIiwibG9jYWxlSW5wdXRTZWxlY3RvciIsInRvZ2dsZUlucHV0cyIsImxvY2FsZUl0ZW0iLCJsb2NhbGVCdXR0b24iLCJjaGFuZ2VMYW5ndWFnZVVybCIsInNhdmVTZWxlY3RlZExhbmd1YWdlIiwibGFuZ3VhZ2VfaXNvX2NvZGUiLCJIZWFkZXIiLCJpbml0UXVpY2tBY2Nlc3MiLCJpbml0TXVsdGlTdG9yZXMiLCJpbml0Tm90aWZpY2F0aW9uc1RvZ2dsZSIsImluaXRTZWFyY2giLCJpbml0Q29udGVudERpdk9mZnNldCIsImxpbmsiLCJwcm9tcHQiLCJwb3N0TGluayIsInF1aWNrTGlua0lkIiwicmFuZCIsImhlYWRlcnMiLCJhc3luYyIsInN1Y2Nlc3MiLCJxdWlja2xpbmtMaXN0IiwidG9rZW4iLCJoYXNfZXJyb3JzIiwiZ3Jvd2wiLCJwcmV2QWxsIiwidXBkYXRlX3N1Y2Nlc3NfbXNnIiwicGFyZW50cyIsInVwZGF0ZUVtcGxveWVlTm90aWZpY2F0aW9ucyIsImFkbWluTm90aWZpY2F0aW9uUHVzaExpbmsiLCJvblRvb2xiYXJSZXNpemUiLCJsYXN0IiwicmVzaXplIiwiSXBJbnB1dCIsInByZXYiLCJpbnB1dFZhbHVlIiwiaXAiLCJhZGRSZW1vdGVBZGRyIiwiTmF2QmFyIiwiJG5hdkJhck92ZXJmbG93IiwiTmF2QmFyVHJhbnNpdGlvbnMiLCJOYXZiYXJUcmFuc2l0aW9uSGFuZGxlciIsIlBlcmZlY3RTY3JvbGxiYXIiLCIkbWVudUl0ZW1zIiwiaXRlbU9mZnNldFRvcCIsIiRzdWJtZW51Iiwib25seUNsb3NlIiwic2xpZGVVcCIsInNsaWRlRG93biIsImFkZE1vYmlsZUJvZHlDbGlja0xpc3RlbmVyIiwiY2FjaGUiLCJzaG91bGRDb2xsYXBzZSIsIk51bWJlciIsIk1BWF9NT0JJTEVfV0lEVEgiLCJ3aWR0aCIsIm1vYmlsZU5hdiIsInVuYnVpbGRNb2JpbGVNZW51IiwiJGxvZ291dCIsIiRlbXBsb3llZSIsInByb2ZpbGVMaW5rIiwid3JhcCIsImFuaW1hdGUiLCJoZWlnaHQiLCJpbm5lckhlaWdodCIsImhpZGUiLCJmaWxsVHBsIiwicmVzdWx0cyIsImVsdEFwcGVuZFRvIiwidHBsIiwiY2hpbGRyZW4iLCJwcm9wZXJ0eSIsImlkX29yZGVyIiwiY3VzdG9tZXJfbmFtZSIsImlzb19jb2RlIiwiY2FycmllciIsInRvdGFsX3BhaWQiLCJpZF9jdXN0b21lciIsImNvbXBhbnkiLCJkYXRlX2FkZCIsInRva2VuQWRtaW5PcmRlcnMiLCJ0b2tlbkFkbWluQ3VzdG9tZXJzIiwidG9rZW5BZG1pbkN1c3RvbWVyVGhyZWFkcyIsImlkX2N1c3RvbWVyX3RocmVhZCIsInNldE5vdGlmaWNhdGlvbnNOdW1iZXIiLCJudW1iZXIiLCJyZWZyZXNoTm90aWZpY2F0aW9ucyIsInRpbWVyIiwianNvbiIsIm5iT3JkZXJzIiwib3JkZXIiLCJ0b3RhbCIsIm5iQ3VzdG9tZXJzIiwiY3VzdG9tZXIiLCJuYkN1c3RvbWVyTWVzc2FnZXMiLCJjdXN0b21lcl9tZXNzYWdlIiwibm90aWZpY2F0aW9uc1RvdGFsIiwiaHRtbCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJpbml0TWVzc2FnZXNQYWdpbmF0aW9uIiwiYnV0dG9uSW5kZXgiLCJidXR0b24iLCIkZWRpdFRyYW5zbGF0aW9uRm9ybSIsImRlZmF1bHRUcmFuc2xhdGlvblZhbHVlIiwiZm9ybUluZGV4Iiwic2VyaWFsaXplIiwiZmxhc2hNZXNzYWdlIiwic3VjY2Vzc2Z1bF91cGRhdGUiLCJoYXNoIiwiJGVkaXRUcmFuc2xhdGlvbkZvcm1zIiwidXBkYXRlIiwic2hvd0ZsYXNoTWVzc2FnZU9uRWRpdCIsImZpeGVkT2Zmc2V0Iiwic2Nyb2xsVG9QcmV2aW91c1BhZ2luYXRpb25CYXIiLCJwYWdpbmF0aW9uQmFyIiwicGFnaW5hdGlvbkJhclRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInNjcm9sbFRvIiwicGFnZVhPZmZzZXQiLCJwYWdlWU9mZnNldCIsIm5hdkluZGV4IiwibmF2IiwicGFnZVRlbXBsYXRlIiwicGFnZUxpbmtUZW1wbGF0ZSIsImNsb25lIiwicGFnZUluZGV4IiwicGFnZUxpbmsiLCJ0b3RhbFBhZ2VzIiwiYWRkUGFnZUxpbmtzVG9OYXZpZ2F0aW9uQmFyIiwiZG9tYWluIiwicGFnZUl0ZW0iLCJzaWJsaW5ncyIsInBhZ2UiLCJoaWRlQWN0aXZlUGFnZUluRG9tYWluIiwidGFyZ2V0UGFnZSIsInNob3dQYWdlSW5Eb21haW4iLCJwYWdpbmF0aW9uIiwibGFzdEl0ZW0iLCJpbnNlcnRBZnRlciIsInNlYXJjaFNlbGVjdG9yIiwiamV0c1NlbGVjdG9yIiwibm90aWZpY2F0aW9uRWxlbWVudCIsIkpldHMiLCJzZWFyY2hUYWciLCJjb250ZW50VGFnIiwiY2FsbFNlYXJjaE1hbnVhbGx5IiwibWFudWFsQ29udGVudEhhbmRsaW5nIiwidGFnIiwiaW5uZXJUZXh0IiwiYWxsRG9tYWluc01pc3NpbmdUcmFuc2xhdGlvbnMiLCJkb21haW5Ub2dnbGVyIiwiZG9tYWluQWN0aW9ucyIsIm1pc3NpbmdUcmFuc2xhdGlvbnMiLCJ0b3RhbE1pc3NpbmdUcmFuc2xhdGlvbnMiLCJtaXNzaW5nVHJhbnNsYXRpb25zV2FybmluZyIsIndhcm5pbmdNZXNzYWdlIiwidXBkYXRlTWlzc2luZ1RyYW5zbGF0aW9uc1dhcm5pbmciLCJkb21haW5UaXRsZSIsIm5leHRBbGwiLCJmaWx0ZXIiLCJ2aXNpYmlsaXR5T2ZmSWNvbiIsInZpc2liaWxpdHlPbkljb24iLCJzaG93TWVzc2FnZXNCdXR0b24iLCJoaWRlTWVzc2FnZXNCdXR0b24iLCJ1cGRhdGVWaXNpYmlsaXR5SWNvbnMiLCJ0b3RhbFRyYW5zbGF0aW9ucyIsInRvdGFsUmVtYWluaW5nVHJhbnNsYXRpb25zIiwidG90YWxUcmFuc2xhdGlvbnNUZW1wbGF0ZSIsInJlbWFpbmluZ1RyYW5zbGF0aW9uc1RlbXBsYXRlIiwicmVtYWluaW5nVHJhbnNsYXRpb25zTWVzc2FnZSIsInRvdGFsVHJhbnNsYXRpb25zTWVzc2FnZXMiLCJjYWxsYmFjayIsImJ1dHRvblN1ZmZpeCIsImhpZGVDbGFzcyIsInNob3dUcmFuc2xhdGlvbnNGb3JtQnV0dG9uIiwidHJhbnNsYXRpb25Eb21haW4iLCJlZGl0VHJhbnNsYXRpb25Gb3JtcyIsImZvcm1zQ29udGFpbmVyIiwiZG9tYWluRmlyc3RQYXJ0IiwiaGlnaGxpZ2h0RG9tYWluRmlyc3RQYXJ0IiwibWlzc2luZ1RyYW5zbGF0aW9uV2FybmluZyIsIndhcm5pbmdQbGFjZWhvbGRlciIsInRvdGFsUGxhY2Vob2xkZXIiLCJzZXBhcmF0b3IiLCJmaXJzdCIsInVwZGF0ZURvbWFpblRpdGxlIiwibmF2aWdhdGlvbkNvbnRhaW5lciIsImN1cnJlbnROYXZpZ2F0aW9uQmFyIiwibmF2SWRlbnRpZmllciIsImhpZGRlbk5hdmlnYXRpb25CYXJDb250YWluZXIiLCJoaWRlQ3VycmVudE5hdmlnYXRpb25CYXIiLCJ1cGRhdGVOYXZpZ2F0aW9uQmFyIiwiY3VycmVudFRyYW5zbGF0aW9uRm9ybXMiLCJoaWRkZW5Gb3Jtc0NvbnRhaW5lciIsImhpZGVDdXJyZW50VHJhbnNsYXRpb25Gb3JtcyIsInVwZGF0ZUVkaXRUcmFuc2xhdGlvbkZvcm1zIiwidG9nZ2xlckluZGV4IiwidG9nZ2xlciIsIm1pc3NpbmdUcmFuc2xhdGlvbnNNZXNzYWdlIiwidXBkYXRlTWlzc2luZ1RyYW5zbGF0aW9uc01lc3NhZ2VzIiwicGFnaW5hdGlvbkNvbnRhaW5lciIsImxuZyIsIm11bHRpIiwiZGlzcGxheU51bWJlciIsImN1cnJlbnQiLCJjaGVja0N1cnJlbnRQYWdlIiwiY3VycmVudEVsIiwiX2luZGV4IiwicGFnQ29udGFpbmVyIiwicHJldkRvdHMiLCJuZXh0RG90cyIsIm1pZCIsInJvdW5kIiwiYmVmb3JlIiwibW9kdWxlIiwiZXhwb3J0cyIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJvYmoiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsInByb3RvdHlwZSIsIl9hc3NpZ24yIiwiYXJndW1lbnRzIiwic291cmNlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX2lzSXRlcmFibGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9nZXRJdGVyYXRvcjMiLCJhcnIiLCJpc0FycmF5IiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2kiLCJkb25lIiwiZXJyIiwic2xpY2VJdGVyYXRvciIsIl9mcm9tMiIsImFycjIiLCIkT2JqZWN0IiwiaXQiLCJkZXNjIiwiZGVmaW5lUHJvcGVydHkiLCJmb3JiaWRkZW5GaWVsZCIsImlzT2JqZWN0IiwiZm9yT2YiLCJpdGVyIiwiSVRFUkFUT1IiLCJyZXN1bHQiLCJ0b0lPYmplY3QiLCJ0b0xlbmd0aCIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJmcm9tSW5kZXgiLCJPIiwiY3R4IiwiSU9iamVjdCIsInRvT2JqZWN0IiwiYXNjIiwiVFlQRSIsIiRjcmVhdGUiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiTk9fSE9MRVMiLCJjcmVhdGUiLCJjYWxsYmFja2ZuIiwidGhhdCIsInJlcyIsInNlbGYiLCJmIiwiU1BFQ0lFUyIsIm9yaWdpbmFsIiwiQyIsImNvbnN0cnVjdG9yIiwic3BlY2llc0NvbnN0cnVjdG9yIiwiY29mIiwiVEFHIiwiQVJHIiwiVCIsIkIiLCJ0cnlHZXQiLCJjYWxsZWUiLCJkUCIsInJlZGVmaW5lQWxsIiwiYW5JbnN0YW5jZSIsIiRpdGVyRGVmaW5lIiwic3RlcCIsInNldFNwZWNpZXMiLCJERVNDUklQVE9SUyIsImZhc3RLZXkiLCJ2YWxpZGF0ZSIsIlNJWkUiLCJnZXRFbnRyeSIsImVudHJ5IiwiX2YiLCJuIiwiayIsImdldENvbnN0cnVjdG9yIiwid3JhcHBlciIsIk5BTUUiLCJBRERFUiIsIml0ZXJhYmxlIiwiX3QiLCJfbCIsImNsZWFyIiwiciIsInAiLCJ2IiwiZGVmIiwic2V0U3Ryb25nIiwiaXRlcmF0ZWQiLCJraW5kIiwiX2siLCJjbGFzc29mIiwiZnJvbSIsImdsb2JhbCIsIiRleHBvcnQiLCJtZXRhIiwiZmFpbHMiLCJzZXRUb1N0cmluZ1RhZyIsIm1ldGhvZHMiLCJjb21tb24iLCJJU19XRUFLIiwiQmFzZSIsInByb3RvIiwiZW50cmllcyIsIl9jIiwiS0VZIiwiSVNfQURERVIiLCJhIiwiYiIsInNpemUiLCJORUVEIiwiRyIsIlciLCJGIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCIkZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiYUZ1bmN0aW9uIiwiYyIsImFwcGx5Iiwib3duIiwib3V0IiwiSVNfRk9SQ0VEIiwiSVNfR0xPQkFMIiwiSVNfU1RBVElDIiwiUyIsIklTX1BST1RPIiwiUCIsIklTX0JJTkQiLCJJU19XUkFQIiwiZXhwUHJvdG8iLCJGdW5jdGlvbiIsInZpcnR1YWwiLCJSIiwiVSIsImlzQXJyYXlJdGVyIiwiYW5PYmplY3QiLCJnZXRJdGVyRm4iLCJCUkVBSyIsIlJFVFVSTiIsIml0ZXJhdG9yIiwiaXRlckZuIiwiX19nIiwiZG9jdW1lbnRFbGVtZW50IiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJJdGVyYXRvcnMiLCJBcnJheVByb3RvIiwiYXJnIiwicmV0IiwiSXRlcmF0b3JQcm90b3R5cGUiLCJMSUJSQVJZIiwicmVkZWZpbmUiLCIkaXRlckNyZWF0ZSIsImdldFByb3RvdHlwZU9mIiwiQlVHR1kiLCJrZXlzIiwiS0VZUyIsIlZBTFVFUyIsInJldHVyblRoaXMiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwiZ2V0TWV0aG9kIiwiREVGX1ZBTFVFUyIsIlZBTFVFU19CVUciLCIkbmF0aXZlIiwiJGRlZmF1bHQiLCIkZW50cmllcyIsIiRhbnlOYXRpdmUiLCJ2YWx1ZXMiLCJTQUZFX0NMT1NJTkciLCJyaXRlciIsInNraXBDbG9zaW5nIiwic2FmZSIsIk1FVEEiLCJzZXREZXNjIiwiaXNFeHRlbnNpYmxlIiwiRlJFRVpFIiwicHJldmVudEV4dGVuc2lvbnMiLCJzZXRNZXRhIiwidyIsImdldFdlYWsiLCJvbkZyZWV6ZSIsImdldEtleXMiLCJnT1BTIiwicElFIiwiJGFzc2lnbiIsIkEiLCJTeW1ib2wiLCJLIiwiYUxlbiIsImdldFN5bWJvbHMiLCJpc0VudW0iLCJqIiwiZFBzIiwiZW51bUJ1Z0tleXMiLCJJRV9QUk9UTyIsIkVtcHR5IiwiY3JlYXRlRGljdCIsImlmcmFtZURvY3VtZW50IiwiaWZyYW1lIiwiZGlzcGxheSIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJQcm9wZXJ0aWVzIiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1ByaW1pdGl2ZSIsIkF0dHJpYnV0ZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJPYmplY3RQcm90byIsImFycmF5SW5kZXhPZiIsIm5hbWVzIiwiJGtleXMiLCJleHAiLCJiaXRtYXAiLCJDT0xMRUNUSU9OIiwiY2IiLCJtYXBGbiIsIm5leHRJdGVtIiwib2YiLCJzdGF0Iiwic2hhcmVkIiwidWlkIiwiU0hBUkVEIiwic3RvcmUiLCJtb2RlIiwiY29weXJpZ2h0IiwidG9JbnRlZ2VyIiwiZGVmaW5lZCIsIlRPX1NUUklORyIsInBvcyIsInMiLCJTdHJpbmciLCJsIiwiY2hhckNvZGVBdCIsIm1pbiIsImNlaWwiLCJpc05hTiIsInZhbHVlT2YiLCJweCIsIlVTRV9TWU1CT0wiLCJjcmVhdGVQcm9wZXJ0eSIsImFycmF5TGlrZSIsIm1hcGZuIiwiYWRkVG9VbnNjb3BhYmxlcyIsIkFyZ3VtZW50cyIsInN0cm9uZyIsIiRhdCIsInBvaW50IiwidG9KU09OIiwiVE9fU1RSSU5HX1RBRyIsIkRPTUl0ZXJhYmxlcyIsIkNvbGxlY3Rpb24iLCJSZWZsZWN0T3duS2V5cyIsIlJlZmxlY3QiLCJSZWZsZWN0QXBwbHkiLCJyZWNlaXZlciIsImFyZ3MiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIk51bWJlcklzTmFOIiwiX2V2ZW50cyIsIl9ldmVudHNDb3VudCIsIl9tYXhMaXN0ZW5lcnMiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwiY2hlY2tMaXN0ZW5lciIsImxpc3RlbmVyIiwiX2dldE1heExpc3RlbmVycyIsIl9hZGRMaXN0ZW5lciIsIm0iLCJldmVudHMiLCJleGlzdGluZyIsIndhcm5pbmciLCJuZXdMaXN0ZW5lciIsInVuc2hpZnQiLCJ3YXJuZWQiLCJlbWl0dGVyIiwiY291bnQiLCJvbmNlV3JhcHBlciIsImZpcmVkIiwicmVtb3ZlTGlzdGVuZXIiLCJ3cmFwRm4iLCJfb25jZVdyYXAiLCJzdGF0ZSIsIndyYXBwZWQiLCJfbGlzdGVuZXJzIiwidW53cmFwIiwiZXZsaXN0ZW5lciIsInVud3JhcExpc3RlbmVycyIsImFycmF5Q2xvbmUiLCJsaXN0ZW5lckNvdW50IiwiY29weSIsIlJhbmdlRXJyb3IiLCJzZXRNYXhMaXN0ZW5lcnMiLCJnZXRNYXhMaXN0ZW5lcnMiLCJkb0Vycm9yIiwiZXIiLCJjb250ZXh0IiwiaGFuZGxlciIsImxlbiIsImxpc3RlbmVycyIsImFkZExpc3RlbmVyIiwicHJlcGVuZExpc3RlbmVyIiwib25jZSIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJsaXN0Iiwib3JpZ2luYWxMaXN0ZW5lciIsInNoaWZ0IiwicG9wIiwic3BsaWNlT25lIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwicmF3TGlzdGVuZXJzIiwiZXZlbnROYW1lcyIsIl9fX0VYUE9TRV9MT0FERVJfSU1QT1JUX19fIiwiX19fRVhQT1NFX0xPQURFUl9HTE9CQUxfVEhJU19fXyIsImdsb2JhbFRoaXMiLCJnIiwiX2V4dGVuZHMiLCJkIiwiX3R5cGVvZiIsIl9jbGFzc0NhbGxDaGVjayIsInNldFJvdXRlcyIsInJvdXRlc1JvdXRpbmciLCJnZXRSb3V0ZXMiLCJjb250ZXh0Um91dGluZyIsImJhc2VfdXJsIiwiZ2V0QmFzZVVybCIsInNldFByZWZpeCIsInNldFNjaGVtZSIsInNjaGVtZSIsImdldFNjaGVtZSIsInNldEhvc3QiLCJob3N0IiwiZ2V0SG9zdCIsImJ1aWxkUXVlcnlQYXJhbXMiLCJSZWdFeHAiLCJ0ZXN0IiwiZ2V0Um91dGUiLCJoIiwidG9rZW5zIiwiZGVmYXVsdHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJob3N0dG9rZW5zIiwicmVxdWlyZW1lbnRzIiwiJCQiLCIkYiIsIiRkIiwialF1ZXJ5IiwiWmVwdG8iLCJlbmRlciIsImtlIiwicmVhbFR5cGVPZiIsIiRmIiwiandlcnR5RXYiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsIm9iIiwidHJpZ2dlciIsIkV2ZW50IiwiX21vZFByb3BzIiwiMTYiLCIxNyIsIjE4IiwiOTEiLCJfa2V5cyIsIm1vZHMiLCJjdHJsIiwiYWx0Iiwib3B0aW9uIiwiY21kIiwid2luIiwiYmFja3NwYWNlIiwiZW50ZXIiLCJjYXBzIiwiZXNjYXBlIiwiZXNjIiwic3BhY2UiLCJwZ3VwIiwicGdkb3duIiwiZW5kIiwiaG9tZSIsImlucyIsImluc2VydCIsImRlbCIsInN0YXIiLCJhc3RlcmlzayIsIm11bHRpcGx5Iiwic3VidHJhY3QiLCJzZW1pY29sb24iLCJjb21tYSIsInBlcmlvZCIsInNsYXNoIiwidGljayIsIiciLCJxdW90ZSIsImFwb3N0cmFwaGUiLCJmcm9tQ2hhckNvZGUiLCJKd2VydHlDb2RlIiwiandlcnR5Q29kZSIsInoiLCJrZXlDb21ibyIsIm9wdGlvbmFscyIsInJhbmdlTWF0Y2hlcyIsInJhbmdlSSIsImp3ZXJ0eUNvZGVGcmFnbWVudCIsImp3ZXJ0eUNvbWJvIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsImtleUNvZGUiLCJqd2VydHkiLCJjYWxsYmFja0Z1bmN0aW9uIiwiY2FsbGJhY2tDb250ZXh0IiwiYm9vbCIsImp3ZXJ0eUNvZGVJcyIsIm9yaWdpbmFsRXZlbnQiLCJyZXR1cm5WYWx1ZSIsInNlbGVjdG9yQ29udGV4dCIsInJlYWxTZWxlY3RvciIsInJlYWxjYWxsYmFja0NvbnRleHQiLCJyZWFsU2VsZWN0b3JDb250ZXh0IiwiZmlyZSIsInJlYWxJIiwiZGVmaW5lIiwiZmFjdG9yeSIsInVpIiwib3JpZyIsIndpZGdldFV1aWQiLCJ3aWRnZXRTbGljZSIsImNsZWFuRGF0YSIsImVsZW1zIiwiZWxlbSIsIl9kYXRhIiwidHJpZ2dlckhhbmRsZXIiLCJ3aWRnZXQiLCJleGlzdGluZ0NvbnN0cnVjdG9yIiwiYmFzZVByb3RvdHlwZSIsInByb3hpZWRQcm90b3R5cGUiLCJuYW1lc3BhY2UiLCJmdWxsTmFtZSIsIldpZGdldCIsImV4cHIiLCJfY3JlYXRlV2lkZ2V0IiwiX3Byb3RvIiwiX2NoaWxkQ29uc3RydWN0b3JzIiwiaXNGdW5jdGlvbiIsIl9zdXBlciIsIl9zdXBlckFwcGx5IiwiX19zdXBlciIsIl9fc3VwZXJBcHBseSIsIndpZGdldEV2ZW50UHJlZml4Iiwid2lkZ2V0TmFtZSIsIndpZGdldEZ1bGxOYW1lIiwiY2hpbGQiLCJjaGlsZFByb3RvdHlwZSIsImJyaWRnZSIsImlucHV0SW5kZXgiLCJpbnB1dExlbmd0aCIsImlzUGxhaW5PYmplY3QiLCJpc01ldGhvZENhbGwiLCJtZXRob2RWYWx1ZSIsImpxdWVyeSIsInB1c2hTdGFjayIsIl9pbml0IiwiZGVmYXVsdEVsZW1lbnQiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJ1dWlkIiwiZXZlbnROYW1lc3BhY2UiLCJiaW5kaW5ncyIsImhvdmVyYWJsZSIsImZvY3VzYWJsZSIsImNsYXNzZXNFbGVtZW50TG9va3VwIiwiX29uIiwiZGVzdHJveSIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsInBhcmVudFdpbmRvdyIsIl9nZXRDcmVhdGVPcHRpb25zIiwiX2NyZWF0ZSIsIl9zZXRPcHRpb25EaXNhYmxlZCIsIl90cmlnZ2VyIiwiX2dldENyZWF0ZUV2ZW50RGF0YSIsIm5vb3AiLCJfZGVzdHJveSIsIl9yZW1vdmVDbGFzcyIsInJlbW92ZURhdGEiLCJjdXJPcHRpb24iLCJfc2V0T3B0aW9ucyIsIl9zZXRPcHRpb24iLCJfc2V0T3B0aW9uQ2xhc3NlcyIsImNsYXNzS2V5IiwiZWxlbWVudHMiLCJjdXJyZW50RWxlbWVudHMiLCJfY2xhc3NlcyIsIl90b2dnbGVDbGFzcyIsImVuYWJsZSIsImRpc2FibGUiLCJmdWxsIiwicHJvY2Vzc0NsYXNzU3RyaW5nIiwiY2hlY2tPcHRpb24iLCJleHRyYSIsIl91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQiLCJpbkFycmF5IiwiX2FkZENsYXNzIiwic3VwcHJlc3NEaXNhYmxlZENoZWNrIiwiaGFuZGxlcnMiLCJkZWxlZ2F0ZUVsZW1lbnQiLCJoYW5kbGVyUHJveHkiLCJndWlkIiwiZXZlbnROYW1lIiwiX29mZiIsIl9kZWxheSIsImRlbGF5IiwiX2hvdmVyYWJsZSIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwiX2ZvY3VzYWJsZSIsImZvY3VzaW4iLCJmb2N1c291dCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRFZmZlY3QiLCJoYXNPcHRpb25zIiwiZWZmZWN0IiwiZWZmZWN0TmFtZSIsImR1cmF0aW9uIiwiaXNFbXB0eU9iamVjdCIsImVmZmVjdHMiLCJlYXNpbmciLCJxdWV1ZSIsImNhY2hlZFNjcm9sbGJhcldpZHRoIiwiYWJzIiwicmhvcml6b250YWwiLCJydmVydGljYWwiLCJyb2Zmc2V0IiwicnBvc2l0aW9uIiwicnBlcmNlbnQiLCJfcG9zaXRpb24iLCJnZXRPZmZzZXRzIiwib2Zmc2V0cyIsInBhcnNlRmxvYXQiLCJwYXJzZUNzcyIsImdldERpbWVuc2lvbnMiLCJyYXciLCJub2RlVHlwZSIsImlzV2luZG93Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsInBhZ2VZIiwicGFnZVgiLCJvdXRlcldpZHRoIiwic2Nyb2xsYmFyV2lkdGgiLCJ3MSIsIncyIiwiZGl2IiwiaW5uZXJEaXYiLCJvZmZzZXRXaWR0aCIsImNsaWVudFdpZHRoIiwiZ2V0U2Nyb2xsSW5mbyIsIndpdGhpbiIsIm92ZXJmbG93WCIsImlzRG9jdW1lbnQiLCJvdmVyZmxvd1kiLCJoYXNPdmVyZmxvd1giLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImdldFdpdGhpbkluZm8iLCJ3aXRoaW5FbGVtZW50IiwiYXRPZmZzZXQiLCJ0YXJnZXRXaWR0aCIsInRhcmdldEhlaWdodCIsInRhcmdldE9mZnNldCIsImJhc2VQb3NpdGlvbiIsImRpbWVuc2lvbnMiLCJzY3JvbGxJbmZvIiwiY29sbGlzaW9uIiwiYXQiLCJob3Jpem9udGFsT2Zmc2V0IiwidmVydGljYWxPZmZzZXQiLCJjb2xsaXNpb25Qb3NpdGlvbiIsInVzaW5nIiwiZWxlbVdpZHRoIiwiZWxlbUhlaWdodCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5Ub3AiLCJjb2xsaXNpb25XaWR0aCIsImNvbGxpc2lvbkhlaWdodCIsIm15T2Zmc2V0IiwibXkiLCJkaXIiLCJmZWVkYmFjayIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImltcG9ydGFudCIsImZpdCIsIm5ld092ZXJSaWdodCIsIndpdGhpbk9mZnNldCIsImNvbGxpc2lvblBvc0xlZnQiLCJvdmVyTGVmdCIsIm92ZXJSaWdodCIsIm5ld092ZXJCb3R0b20iLCJjb2xsaXNpb25Qb3NUb3AiLCJvdmVyVG9wIiwib3ZlckJvdHRvbSIsImZsaXAiLCJuZXdPdmVyTGVmdCIsIm9mZnNldExlZnQiLCJuZXdPdmVyVG9wIiwib2Zmc2V0VG9wIiwiZmxpcGZpdCIsImNyZWF0ZVBzZXVkbyIsImRhdGFOYW1lIiwiZGlzYWJsZVNlbGVjdGlvbiIsImV2ZW50VHlwZSIsImVuYWJsZVNlbGVjdGlvbiIsImJhc2VFYXNpbmdzIiwic2VsZWN0b3JFc2NhcGUiLCJkYXRhU3BhY2UiLCJkYXRhU3BhY2VTdHlsZSIsImRhdGFTcGFjZUFuaW1hdGVkIiwiY29sb3JzIiwicnBsdXNlcXVhbHMiLCJzdHJpbmdQYXJzZXJzIiwicmUiLCJleGVjUmVzdWx0IiwiY29sb3IiLCJDb2xvciIsImdyZWVuIiwiYmx1ZSIsImFscGhhIiwic3BhY2VzIiwicmdiYSIsInJlZCIsImlkeCIsImhzbGEiLCJodWUiLCJzYXR1cmF0aW9uIiwibGlnaHRuZXNzIiwicHJvcFR5cGVzIiwibW9kIiwic3VwcG9ydCIsInN1cHBvcnRFbGVtIiwiY2xhbXAiLCJhbGxvd0VtcHR5Iiwic3RyaW5nUGFyc2UiLCJzdHJpbmciLCJpbnN0IiwiX3JnYmEiLCJwYXJzZXIiLCJwYXJzZWQiLCJzcGFjZU5hbWUiLCJ0cmFuc3BhcmVudCIsImh1ZTJyZ2IiLCJxIiwiY3NzVGV4dCIsImJhY2tncm91bmRDb2xvciIsIl9kZWZhdWx0IiwidG8iLCJjb21wYXJlIiwic2FtZSIsIl8iLCJsb2NhbENhY2hlIiwiaXNDYWNoZSIsIl9zcGFjZSIsInVzZWQiLCJvdGhlciIsImRpc3RhbmNlIiwic3RhcnRDb2xvciIsInN0YXJ0Iiwic3RhcnRWYWx1ZSIsImVuZFZhbHVlIiwiYmxlbmQiLCJvcGFxdWUiLCJyZ2IiLCJ0b1JnYmFTdHJpbmciLCJ0b0hzbGFTdHJpbmciLCJ0b0hleFN0cmluZyIsImluY2x1ZGVBbHBoYSIsImRpZmYiLCJsb2NhbCIsInZ0eXBlIiwiX2hzbGEiLCJjdXIiLCJob29rIiwiaG9va3MiLCJjc3NIb29rcyIsImN1ckVsZW0iLCJwYXJlbnROb2RlIiwiZngiLCJjb2xvckluaXQiLCJib3JkZXJDb2xvciIsImV4cGFuZGVkIiwicGFydCIsImFxdWEiLCJibGFjayIsImZ1Y2hzaWEiLCJncmF5IiwibGltZSIsIm1hcm9vbiIsIm5hdnkiLCJvbGl2ZSIsInB1cnBsZSIsInNpbHZlciIsInRlYWwiLCJ3aGl0ZSIsInllbGxvdyIsImNsYXNzQW5pbWF0aW9uQWN0aW9ucyIsInNob3J0aGFuZFN0eWxlcyIsImJvcmRlciIsImJvcmRlckJvdHRvbSIsImJvcmRlckxlZnQiLCJib3JkZXJSaWdodCIsImJvcmRlclRvcCIsImJvcmRlcldpZHRoIiwicGFkZGluZyIsImdldEVsZW1lbnRTdHlsZXMiLCJnZXRDb21wdXRlZFN0eWxlIiwiY3VycmVudFN0eWxlIiwic3R5bGVzIiwiY2FtZWxDYXNlIiwic2V0QXR0ciIsImFkZEJhY2siLCJwcmV2T2JqZWN0IiwiYW5pbWF0ZUNsYXNzIiwibyIsInNwZWVkIiwiYXBwbHlDbGFzc0NoYW5nZSIsImFuaW1hdGVkIiwiYmFzZUNsYXNzIiwiYWxsQW5pbWF0aW9ucyIsIm9sZFN0eWxlIiwibmV3U3R5bGUiLCJzdHlsZURpZmZlcmVuY2UiLCJzdHlsZUluZm8iLCJkZmQiLCJEZWZlcnJlZCIsInJlc29sdmUiLCJwcm9taXNlIiwid2hlbiIsImNsYXNzTmFtZXMiLCJmb3JjZSIsInN3aXRjaENsYXNzIiwiX25vcm1hbGl6ZUFyZ3VtZW50cyIsInNwZWVkcyIsInN0YW5kYXJkQW5pbWF0aW9uT3B0aW9uIiwicGFyc2VDbGlwIiwic3RyIiwiZmlsdGVycyIsInVpQmFja0NvbXBhdCIsInNhdmUiLCJyZXN0b3JlIiwic2V0TW9kZSIsImNyZWF0ZVdyYXBwZXIiLCJmb250U2l6ZSIsImJhY2tncm91bmQiLCJhY3RpdmUiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJ6SW5kZXgiLCJyZW1vdmVXcmFwcGVyIiwic2NhbGVkRGltZW5zaW9ucyIsInBlcmNlbnQiLCJ4IiwieSIsImNsaXBUb0JveCIsImFuaW1hdGlvbiIsImNsaXAiLCJxdWV1ZUxlbmd0aCIsImRlcXVldWUiLCJzYXZlU3R5bGUiLCJyZXN0b3JlU3R5bGUiLCJoaWRkZW4iLCJnZXRCYXNlbGluZSIsIm9yaWdpbiIsImNyZWF0ZVBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJjc3NQb3NpdGlvbiIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblJpZ2h0Iiwibm9kZU5hbWUiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJkYXRhS2V5IiwiY2xlYW5VcCIsInNldFRyYW5zaXRpb24iLCJmYWN0b3IiLCJ1bml0IiwiY3NzVW5pdCIsImVmZmVjdE1ldGhvZCIsImRlZmF1bHRNb2RlIiwicXVldWVOYW1lIiwibW9kZXMiLCJwcmVmaWx0ZXIiLCJub3JtYWxpemVkTW9kZSIsInJ1biIsImNzc0NsaXAiLCJjbGlwT2JqIiwidHJhbnNmZXIiLCJ0YXJnZXRGaXhlZCIsImZpeFRvcCIsImZpeExlZnQiLCJlbmRQb3NpdGlvbiIsImlubmVyV2lkdGgiLCJzdGFydFBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiY2xpcEluaXQiLCJwb3ciLCJTaW5lIiwiY29zIiwiUEkiLCJDaXJjIiwic3FydCIsIkVsYXN0aWMiLCJzaW4iLCJCYWNrIiwiQm91bmNlIiwicG93MiIsImJvdW5jZSIsImVhc2VJbiIsInVwQW5pbSIsImRvd25BbmltIiwicmVmVmFsdWUiLCJ0aW1lcyIsImFuaW1zIiwicmVmIiwibW90aW9uIiwicXVldWVsZW4iLCJvcGFjaXR5IiwiYm90aCIsIm9wcG9zaXRlTW90aW9uIiwibXgiLCJyb3dzIiwicGllY2VzIiwiY2VsbHMiLCJjaGlsZENvbXBsZXRlIiwib3ZlcmZsb3ciLCJob3JpekZpcnN0IiwiYW5pbWF0aW9uMSIsImFuaW1hdGlvbjIiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYXNlbGluZSIsInRlbXAiLCJjUHJvcHMiLCJ2UHJvcHMiLCJoUHJvcHMiLCJzY2FsZSIsImNoaWxkT3JpZ2luYWwiLCJjaGlsZEZyb20iLCJjaGlsZFRvIiwibmV3T3B0aW9ucyIsImZhZGUiLCJzaG93aGlkZSIsImFuaW1hdGVUbyIsInBvc2l0aXZlTW90aW9uIiwic3RhcnRDbGlwIiwic3RhcnRSZWYiLCJoYXNUYWJpbmRleCIsIm1hcE5hbWUiLCJpbWciLCJmb2N1c2FibGVJZlZpc2libGUiLCJmaWVsZHNldCIsInZpc2libGUiLCJmb3JtUmVzZXRNaXhpbiIsIl9mb3JtUmVzZXRIYW5kbGVyIiwiaW5zdGFuY2VzIiwicmVmcmVzaCIsIl9iaW5kRm9ybVJlc2V0SGFuZGxlciIsIl91bmJpbmRGb3JtUmVzZXRIYW5kbGVyIiwic2lkZSIsInJlZHVjZSIsIkJBQ0tTUEFDRSIsIkNPTU1BIiwiREVMRVRFIiwiRE9XTiIsIkVORCIsIkVOVEVSIiwiRVNDQVBFIiwiSE9NRSIsIkxFRlQiLCJQQUdFX0RPV04iLCJQQUdFX1VQIiwiUEVSSU9EIiwiUklHSFQiLCJTUEFDRSIsIlRBQiIsIlVQIiwiZXNjYXBlU2VsZWN0b3IiLCJsYWJlbHMiLCJhbmNlc3RvciIsImFuY2VzdG9ycyIsImVxIiwic2Nyb2xsUGFyZW50IiwiaW5jbHVkZUhpZGRlbiIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJvdmVyZmxvd1JlZ2V4IiwidGFiYmFibGUiLCJ0YWJJbmRleCIsInVuaXF1ZUlkIiwicmVtb3ZlVW5pcXVlSWQiLCJjb2xsYXBzaWJsZSIsImhlaWdodFN0eWxlIiwiYWN0aXZlSGVhZGVyIiwiYWN0aXZhdGUiLCJiZWZvcmVBY3RpdmF0ZSIsImhpZGVQcm9wcyIsImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsInNob3dQcm9wcyIsInByZXZTaG93IiwicHJldkhpZGUiLCJfcHJvY2Vzc1BhbmVscyIsIl9yZWZyZXNoIiwicGFuZWwiLCJfY3JlYXRlSWNvbnMiLCJwcmVwZW5kVG8iLCJfZGVzdHJveUljb25zIiwiY29udGVudHMiLCJfc2V0dXBFdmVudHMiLCJfYWN0aXZhdGUiLCJfa2V5ZG93biIsImN1cnJlbnRJbmRleCIsInRvRm9jdXMiLCJfZXZlbnRIYW5kbGVyIiwiX3BhbmVsS2V5RG93biIsInByZXZIZWFkZXJzIiwicHJldlBhbmVscyIsInBhbmVscyIsIm1heEhlaWdodCIsIl9maW5kQWN0aXZlIiwiaGVhZGVySWQiLCJwYW5lbElkIiwiaXNWaXNpYmxlIiwia2V5ZG93biIsImFjdGl2ZUNoaWxkcmVuIiwiY2xpY2tlZENoaWxkcmVuIiwiY2xpY2tlZCIsImNsaWNrZWRJc0FjdGl2ZSIsImNvbGxhcHNpbmciLCJ0b1Nob3ciLCJ0b0hpZGUiLCJldmVudERhdGEiLCJvbGRIZWFkZXIiLCJvbGRQYW5lbCIsIm5ld0hlYWRlciIsIm5ld1BhbmVsIiwiX3RvZ2dsZSIsInN0b3AiLCJfYW5pbWF0ZSIsIl90b2dnbGVDb21wbGV0ZSIsImFkanVzdCIsImJveFNpemluZyIsIm5vdyIsInNhZmVBY3RpdmVFbGVtZW50Iiwic3VibWVudSIsIml0ZW1zIiwibWVudXMiLCJyb2xlIiwic2VsZWN0IiwiYWN0aXZlTWVudSIsIm1vdXNlSGFuZGxlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwicHJldmlvdXNGaWx0ZXIiLCJhY3R1YWxUYXJnZXQiLCJrZWVwQWN0aXZlSXRlbSIsImNvbGxhcHNlQWxsIiwiX2Nsb3NlT25Eb2N1bWVudENsaWNrIiwic3VibWVudXMiLCJjaGFyYWN0ZXIiLCJza2lwIiwicHJldmlvdXNQYWdlIiwibmV4dFBhZ2UiLCJfbW92ZSIsInByZXZpb3VzIiwiZmlsdGVyVGltZXIiLCJfZmlsdGVyTWVudUl0ZW1zIiwibmV3U3VibWVudXMiLCJuZXdJdGVtcyIsIm5ld1dyYXBwZXJzIiwibWVudSIsInN1Ym1lbnVDYXJldCIsIl9pc0RpdmlkZXIiLCJfaXRlbVJvbGUiLCJsaXN0Ym94IiwibmVzdGVkIiwiZm9jdXNlZCIsImFjdGl2ZVBhcmVudCIsIl9zY3JvbGxJbnRvVmlldyIsIl9jbG9zZSIsIl9zdGFydE9wZW5pbmciLCJzY3JvbGwiLCJlbGVtZW50SGVpZ2h0IiwiaXRlbUhlaWdodCIsIl9oYXNTY3JvbGwiLCJmcm9tRm9jdXMiLCJfb3BlbiIsImFsbCIsImN1cnJlbnRNZW51Iiwic3RhcnRNZW51IiwibmV3SXRlbSIsImlzRmlyc3RJdGVtIiwiaXNMYXN0SXRlbSIsImVzY2FwZWRDaGFyYWN0ZXIiLCJ0cmltIiwiYXV0b0ZvY3VzIiwibWluTGVuZ3RoIiwicmVxdWVzdEluZGV4IiwicGVuZGluZyIsInN1cHByZXNzS2V5UHJlc3MiLCJzdXBwcmVzc0tleVByZXNzUmVwZWF0Iiwic3VwcHJlc3NJbnB1dCIsImlzVGV4dGFyZWEiLCJpc0lucHV0IiwiaXNNdWx0aUxpbmUiLCJfaXNDb250ZW50RWRpdGFibGUiLCJ2YWx1ZU1ldGhvZCIsImlzTmV3TWVudSIsIl9rZXlFdmVudCIsIl92YWx1ZSIsInRlcm0iLCJfc2VhcmNoVGltZW91dCIsImtleXByZXNzIiwic2VsZWN0ZWRJdGVtIiwiY2FuY2VsQmx1ciIsInNlYXJjaGluZyIsIl9jaGFuZ2UiLCJfaW5pdFNvdXJjZSIsIl9hcHBlbmRUbyIsIm1lbnVmb2N1cyIsImxhYmVsIiwib25lIiwibGl2ZVJlZ2lvbiIsIm1lbnVzZWxlY3QiLCJiZWZvcmV1bmxvYWQiLCJ4aHIiLCJhYm9ydCIsIl9pc0V2ZW50VGFyZ2V0SW5XaWRnZXQiLCJtZW51RWxlbWVudCIsIl9jbG9zZU9uQ2xpY2tPdXRzaWRlIiwiYXJyYXkiLCJyZXF1ZXN0IiwiYXV0b2NvbXBsZXRlIiwiZXF1YWxWYWx1ZXMiLCJtZW51VmlzaWJsZSIsIm1vZGlmaWVyS2V5IiwiX3NlYXJjaCIsImNhbmNlbFNlYXJjaCIsIl9yZXNwb25zZSIsInByb3h5IiwiX19yZXNwb25zZSIsIl9ub3JtYWxpemUiLCJfc3VnZ2VzdCIsInVsIiwiX3JlbmRlck1lbnUiLCJfcmVzaXplTWVudSIsIl9yZW5kZXJJdGVtRGF0YSIsIl9yZW5kZXJJdGVtIiwia2V5RXZlbnQiLCJlZGl0YWJsZSIsImVzY2FwZVJlZ2V4IiwibWF0Y2hlciIsImdyZXAiLCJtZXNzYWdlcyIsIm5vUmVzdWx0cyIsImFtb3VudCIsImRhdGVwaWNrZXJfaW5zdEFjdGl2ZSIsImNvbnRyb2xncm91cENvcm5lclJlZ2V4IiwiRGF0ZXBpY2tlciIsIl9jdXJJbnN0IiwiX2Rpc2FibGVkSW5wdXRzIiwiX2RhdGVwaWNrZXJTaG93aW5nIiwiX2luRGlhbG9nIiwiX21haW5EaXZJZCIsIl9pbmxpbmVDbGFzcyIsIl9hcHBlbmRDbGFzcyIsIl90cmlnZ2VyQ2xhc3MiLCJfZGlhbG9nQ2xhc3MiLCJfZGlzYWJsZUNsYXNzIiwiX3Vuc2VsZWN0YWJsZUNsYXNzIiwiX2N1cnJlbnRDbGFzcyIsIl9kYXlPdmVyQ2xhc3MiLCJyZWdpb25hbCIsImNsb3NlVGV4dCIsInByZXZUZXh0IiwibmV4dFRleHQiLCJjdXJyZW50VGV4dCIsIm1vbnRoTmFtZXMiLCJtb250aE5hbWVzU2hvcnQiLCJkYXlOYW1lcyIsImRheU5hbWVzU2hvcnQiLCJkYXlOYW1lc01pbiIsIndlZWtIZWFkZXIiLCJkYXRlRm9ybWF0IiwiZmlyc3REYXkiLCJpc1JUTCIsInNob3dNb250aEFmdGVyWWVhciIsInllYXJTdWZmaXgiLCJfZGVmYXVsdHMiLCJzaG93T24iLCJzaG93QW5pbSIsInNob3dPcHRpb25zIiwiZGVmYXVsdERhdGUiLCJhcHBlbmRUZXh0IiwiYnV0dG9uVGV4dCIsImJ1dHRvbkltYWdlIiwiYnV0dG9uSW1hZ2VPbmx5IiwiaGlkZUlmTm9QcmV2TmV4dCIsIm5hdmlnYXRpb25Bc0RhdGVGb3JtYXQiLCJnb3RvQ3VycmVudCIsImNoYW5nZU1vbnRoIiwiY2hhbmdlWWVhciIsInllYXJSYW5nZSIsInNob3dPdGhlck1vbnRocyIsInNlbGVjdE90aGVyTW9udGhzIiwic2hvd1dlZWsiLCJjYWxjdWxhdGVXZWVrIiwiaXNvODYwMVdlZWsiLCJzaG9ydFllYXJDdXRvZmYiLCJtaW5EYXRlIiwibWF4RGF0ZSIsImJlZm9yZVNob3dEYXkiLCJiZWZvcmVTaG93Iiwib25TZWxlY3QiLCJvbkNoYW5nZU1vbnRoWWVhciIsIm9uQ2xvc2UiLCJudW1iZXJPZk1vbnRocyIsInNob3dDdXJyZW50QXRQb3MiLCJzdGVwTW9udGhzIiwic3RlcEJpZ01vbnRocyIsImFsdEZpZWxkIiwiYWx0Rm9ybWF0IiwiY29uc3RyYWluSW5wdXQiLCJzaG93QnV0dG9uUGFuZWwiLCJhdXRvU2l6ZSIsImVuIiwiZHBEaXYiLCJkYXRlcGlja2VyX2JpbmRIb3ZlciIsImRhdGVwaWNrZXJfaGFuZGxlTW91c2VvdmVyIiwiZGF0ZXBpY2tlciIsIl9pc0Rpc2FibGVkRGF0ZXBpY2tlciIsImlubGluZSIsImRhdGVwaWNrZXJfZXh0ZW5kUmVtb3ZlIiwib25seVZpc2libGUiLCJfZW5oYW5jZSIsIl9jYWxsQ2hpbGRNZXRob2QiLCJjaGlsZFdpZGdldHMiLCJjb250cm9sZ3JvdXBMYWJlbCIsIl9pbml0V2lkZ2V0cyIsIndyYXBBbGwiLCJpbnN0YW5jZU9wdGlvbnMiLCJfcmVzb2x2ZUNsYXNzZXNWYWx1ZXMiLCJ3aWRnZXRFbGVtZW50IiwiX3VwZGF0ZUNvcm5lckNsYXNzIiwiX2J1aWxkU2ltcGxlT3B0aW9ucyIsIl9zcGlubmVyT3B0aW9ucyIsIl9idXR0b25PcHRpb25zIiwiX2NoZWNrYm94cmFkaW9PcHRpb25zIiwiX3NlbGVjdG1lbnVPcHRpb25zIiwibWlkZGxlIiwib25seSIsIl9yZWFkVHlwZSIsIm9yaWdpbmFsTGFiZWwiLCJvdXRlckhUTUwiLCJfdXBkYXRlTGFiZWwiLCJfdXBkYXRlSWNvbiIsIl9nZXRSYWRpb0dyb3VwIiwibmFtZVNlbGVjdG9yIiwiX3RvZ2dsZUNsYXNzZXMiLCJjaGVja2JveHJhZGlvIiwiaWNvblNwYWNlIiwidG9BZGQiLCJpc0Rpc2FibGVkIiwiaWNvblBvc2l0aW9uIiwic2hvd0xhYmVsIiwiaGFzVGl0bGUiLCJfdXBkYXRlVG9vbHRpcCIsImRpc3BsYXlCbG9jayIsIl9hdHRhY2hJY29uIiwiX2F0dGFjaEljb25TcGFjZSIsIm5ld1Nob3dMYWJlbCIsIm5ld0ljb24iLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwidGFnTmFtZSIsImJ1dHRvbnNldCIsImNvbnRyb2xncm91cCIsIm1hcmtlckNsYXNzTmFtZSIsIm1heFJvd3MiLCJfd2lkZ2V0RGF0ZXBpY2tlciIsInNldERlZmF1bHRzIiwic2V0dGluZ3MiLCJfYXR0YWNoRGF0ZXBpY2tlciIsIl9uZXdJbnN0IiwiX2Nvbm5lY3REYXRlcGlja2VyIiwiX2lubGluZURhdGVwaWNrZXIiLCJzZWxlY3RlZERheSIsInNlbGVjdGVkTW9udGgiLCJzZWxlY3RlZFllYXIiLCJkcmF3TW9udGgiLCJkcmF3WWVhciIsIl9hdHRhY2htZW50cyIsIl9kb0tleURvd24iLCJfZG9LZXlQcmVzcyIsIl9kb0tleVVwIiwiX2F1dG9TaXplIiwiX2Rpc2FibGVEYXRlcGlja2VyIiwiX2dldCIsIl9zaG93RGF0ZXBpY2tlciIsIl9sYXN0SW5wdXQiLCJfaGlkZURhdGVwaWNrZXIiLCJmaW5kTWF4IiwibWF4SSIsIkRhdGUiLCJzZXRNb250aCIsInNldERhdGUiLCJnZXREYXkiLCJfZm9ybWF0RGF0ZSIsImRpdlNwYW4iLCJfc2V0RGF0ZSIsIl9nZXREZWZhdWx0RGF0ZSIsIl91cGRhdGVEYXRlcGlja2VyIiwiX3VwZGF0ZUFsdGVybmF0ZSIsIl9kaWFsb2dEYXRlcGlja2VyIiwiYnJvd3NlcldpZHRoIiwiYnJvd3NlckhlaWdodCIsInNjcm9sbFgiLCJzY3JvbGxZIiwiX2RpYWxvZ0luc3QiLCJfZGlhbG9nSW5wdXQiLCJfcG9zIiwiY2xpZW50SGVpZ2h0IiwiYmxvY2tVSSIsIl9kZXN0cm95RGF0ZXBpY2tlciIsIiR0YXJnZXQiLCJfZW5hYmxlRGF0ZXBpY2tlciIsImN1cnNvciIsIl9nZXRJbnN0IiwiX29wdGlvbkRhdGVwaWNrZXIiLCJfZ2V0RGF0ZURhdGVwaWNrZXIiLCJfZ2V0TWluTWF4RGF0ZSIsIl9jaGFuZ2VEYXRlcGlja2VyIiwiX3JlZnJlc2hEYXRlcGlja2VyIiwiX3NldERhdGVEYXRlcGlja2VyIiwibm9EZWZhdWx0IiwiX3NldERhdGVGcm9tRmllbGQiLCJfZ2V0RGF0ZSIsImRhdGVTdHIiLCJzZWwiLCJoYW5kbGVkIiwiX3NlbGVjdERheSIsIl9hZGp1c3REYXRlIiwiX2NsZWFyRGF0ZSIsIl9nb3RvVG9kYXkiLCJjaHIiLCJfcG9zc2libGVDaGFycyIsImNoYXJDb2RlIiwibGFzdFZhbCIsInBhcnNlRGF0ZSIsIl9nZXRGb3JtYXRDb25maWciLCJiZWZvcmVTaG93U2V0dGluZ3MiLCJpc0ZpeGVkIiwiX2ZpbmRQb3MiLCJvZmZzZXRIZWlnaHQiLCJfY2hlY2tPZmZzZXQiLCJkYXRlcGlja2VyX2dldFppbmRleCIsIl9zaG91bGRGb2N1c0lucHV0IiwiX2dlbmVyYXRlSFRNTCIsIl9hdHRhY2hIYW5kbGVycyIsIm9yaWd5ZWFyc2h0bWwiLCJudW1Nb250aHMiLCJfZ2V0TnVtYmVyT2ZNb250aHMiLCJjb2xzIiwiYWN0aXZlQ2VsbCIsInllYXJzaHRtbCIsImRwV2lkdGgiLCJkcEhlaWdodCIsImlucHV0V2lkdGgiLCJpbnB1dEhlaWdodCIsInZpZXdXaWR0aCIsInZpZXdIZWlnaHQiLCJwb3N0UHJvY2VzcyIsIl90aWR5RGlhbG9nIiwidW5ibG9ja1VJIiwiX2NoZWNrRXh0ZXJuYWxDbGljayIsIl9hZGp1c3RJbnN0RGF0ZSIsImN1cnJlbnREYXkiLCJjdXJyZW50TW9udGgiLCJjdXJyZW50WWVhciIsImdldERhdGUiLCJnZXRNb250aCIsImdldEZ1bGxZZWFyIiwiX25vdGlmeUNoYW5nZSIsIl9zZWxlY3RNb250aFllYXIiLCJzZWxlY3RlZEluZGV4IiwibW9udGgiLCJ5ZWFyIiwidGQiLCJfc2VsZWN0RGF0ZSIsImZvcm1hdERhdGUiLCJub1dlZWtlbmRzIiwiZGF5IiwiY2hlY2tEYXRlIiwiZ2V0VGltZSIsImlGb3JtYXQiLCJkaW0iLCJpVmFsdWUiLCJzaG9ydFllYXJDdXRvZmZUZW1wIiwiZG95IiwibGl0ZXJhbCIsImxvb2tBaGVhZCIsImdldE51bWJlciIsImlzRG91YmxlZCIsImRpZ2l0cyIsIm51bSIsImdldE5hbWUiLCJzaG9ydE5hbWVzIiwibG9uZ05hbWVzIiwic29ydCIsInBhaXIiLCJzdWJzdHIiLCJjaGVja0xpdGVyYWwiLCJfdGlja3NUbzE5NzAiLCJfZ2V0RGF5c0luTW9udGgiLCJfZGF5bGlnaHRTYXZpbmdBZGp1c3QiLCJBVE9NIiwiQ09PS0lFIiwiSVNPXzg2MDEiLCJSRkNfODIyIiwiUkZDXzg1MCIsIlJGQ18xMDM2IiwiUkZDXzExMjMiLCJSRkNfMjgyMiIsIlJTUyIsIlRJQ0tTIiwiVElNRVNUQU1QIiwiVzNDIiwiZm9ybWF0TnVtYmVyIiwiZm9ybWF0TmFtZSIsIm91dHB1dCIsImRhdGVzIiwiX3Jlc3RyaWN0TWluTWF4IiwiX2RldGVybWluZURhdGUiLCJuZXdEYXRlIiwicGF0dGVybiIsIm9mZnNldFN0cmluZyIsIm9mZnNldE51bWVyaWMiLCJzZXRIb3VycyIsInNldE1pbnV0ZXMiLCJzZXRTZWNvbmRzIiwic2V0TWlsbGlzZWNvbmRzIiwiZ2V0SG91cnMiLCJub0NoYW5nZSIsIm9yaWdNb250aCIsIm9yaWdZZWFyIiwidG9kYXkiLCJzZWxlY3REYXkiLCJnZXRBdHRyaWJ1dGUiLCJzZWxlY3RNb250aCIsInNlbGVjdFllYXIiLCJtYXhEcmF3IiwiZ290b0RhdGUiLCJjb250cm9scyIsImJ1dHRvblBhbmVsIiwiZG93IiwiZ3JvdXAiLCJjb2wiLCJzZWxlY3RlZERhdGUiLCJjb3JuZXJDbGFzcyIsImNhbGVuZGVyIiwidGhlYWQiLCJkYXlzSW5Nb250aCIsImxlYWREYXlzIiwiY3VyUm93cyIsIm51bVJvd3MiLCJwcmludERhdGUiLCJkUm93IiwidGJvZHkiLCJkYXlTZXR0aW5ncyIsIm90aGVyTW9udGgiLCJ1bnNlbGVjdGFibGUiLCJ0ZW1wRGF0ZSIsImlzTXVsdGlNb250aCIsImN1cnJlbnREYXRlIiwiX2NhbkFkanVzdE1vbnRoIiwiX2lzSW5SYW5nZSIsIl9nZW5lcmF0ZU1vbnRoWWVhckhlYWRlciIsIl9nZXRGaXJzdERheU9mTW9udGgiLCJpbk1pblllYXIiLCJpbk1heFllYXIiLCJ5ZWFycyIsInRoaXNZZWFyIiwiZGV0ZXJtaW5lWWVhciIsImVuZFllYXIiLCJtb250aEh0bWwiLCJvbkNoYW5nZSIsIm1pbk1heCIsImN1clllYXIiLCJjdXJNb250aCIsInllYXJTcGxpdCIsIm1pblllYXIiLCJtYXhZZWFyIiwiaW5pdGlhbGl6ZWQiLCJvdGhlckFyZ3MiLCJpZSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImNhbmNlbCIsIl9tb3VzZUluaXQiLCJfbW91c2VEb3duIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwic3RhcnRlZCIsIl9tb3VzZURlc3Ryb3kiLCJfbW91c2VNb3ZlRGVsZWdhdGUiLCJfbW91c2VVcERlbGVnYXRlIiwiX21vdXNlTW92ZWQiLCJfbW91c2VTdGFydGVkIiwiX21vdXNlVXAiLCJfbW91c2VEb3duRXZlbnQiLCJidG5Jc0xlZnQiLCJ3aGljaCIsImVsSXNDYW5jZWwiLCJfbW91c2VDYXB0dXJlIiwibW91c2VEZWxheU1ldCIsIl9tb3VzZURlbGF5VGltZXIiLCJfbW91c2VEaXN0YW5jZU1ldCIsIl9tb3VzZURlbGF5TWV0IiwiX21vdXNlU3RhcnQiLCJfbW91c2VNb3ZlIiwiZG9jdW1lbnRNb2RlIiwiaWdub3JlTWlzc2luZ1doaWNoIiwiX21vdXNlRHJhZyIsIl9tb3VzZVN0b3AiLCJwbHVnaW4iLCJhbGxvd0Rpc2Nvbm5lY3RlZCIsInNhZmVCbHVyIiwibW91c2UiLCJhZGRDbGFzc2VzIiwiYXhpcyIsImNvbm5lY3RUb1NvcnRhYmxlIiwiY29udGFpbm1lbnQiLCJjdXJzb3JBdCIsImhlbHBlciIsImlmcmFtZUZpeCIsInJlZnJlc2hQb3NpdGlvbnMiLCJyZXZlcnQiLCJyZXZlcnREdXJhdGlvbiIsInNjb3BlIiwic2Nyb2xsU2Vuc2l0aXZpdHkiLCJzY3JvbGxTcGVlZCIsInNuYXAiLCJzbmFwTW9kZSIsInNuYXBUb2xlcmFuY2UiLCJzdGFjayIsImRyYWciLCJfc2V0UG9zaXRpb25SZWxhdGl2ZSIsIl9zZXRIYW5kbGVDbGFzc05hbWUiLCJfcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lIiwiZGVzdHJveU9uQ2xlYXIiLCJfZ2V0SGFuZGxlIiwiX2JsdXJBY3RpdmVFbGVtZW50IiwiX2Jsb2NrRnJhbWVzIiwiaWZyYW1lQmxvY2tzIiwiX3VuYmxvY2tGcmFtZXMiLCJfY3JlYXRlSGVscGVyIiwiX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMiLCJkZG1hbmFnZXIiLCJfY2FjaGVNYXJnaW5zIiwib2Zmc2V0UGFyZW50IiwiaGFzRml4ZWRBbmNlc3RvciIsInBvc2l0aW9uQWJzIiwiX3JlZnJlc2hPZmZzZXRzIiwib3JpZ2luYWxQb3NpdGlvbiIsIl9nZW5lcmF0ZVBvc2l0aW9uIiwib3JpZ2luYWxQYWdlWCIsIm9yaWdpbmFsUGFnZVkiLCJfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlciIsIl9zZXRDb250YWlubWVudCIsIl9jbGVhciIsImRyb3BCZWhhdmlvdXIiLCJwcmVwYXJlT2Zmc2V0cyIsImRyYWdTdGFydCIsIm1hcmdpbnMiLCJfZ2V0UGFyZW50T2Zmc2V0IiwicmVsYXRpdmUiLCJfZ2V0UmVsYXRpdmVPZmZzZXQiLCJub1Byb3BhZ2F0aW9uIiwiX2NvbnZlcnRQb3NpdGlvblRvIiwiX3VpSGFzaCIsImRyb3BwZWQiLCJkcm9wIiwiZHJhZ1N0b3AiLCJoYW5kbGVFbGVtZW50IiwiaGVscGVySXNGdW5jdGlvbiIsImhlbHBlclByb3BvcnRpb25zIiwiX2lzUm9vdE5vZGUiLCJwbyIsInNjcm9sbElzUm9vdE5vZGUiLCJpc1VzZXJTY3JvbGxhYmxlIiwiY2UiLCJyZWxhdGl2ZUNvbnRhaW5lciIsImNvbnN0cmFpblBvc2l0aW9uIiwiY28iLCJjYW5jZWxIZWxwZXJSZW1vdmFsIiwiZHJhZ2dhYmxlIiwidWlTb3J0YWJsZSIsInNvcnRhYmxlcyIsInNvcnRhYmxlIiwiaXNPdmVyIiwiX3N0b3JlZENTUyIsIl9oZWxwZXIiLCJpbm5lcm1vc3RJbnRlcnNlY3RpbmciLCJfaW50ZXJzZWN0c1dpdGgiLCJjb250YWluZXJDYWNoZSIsIl9wYXJlbnQiLCJjdXJyZW50SXRlbSIsImZyb21PdXRzaWRlIiwiX3JldmVydCIsInQiLCJfY3Vyc29yIiwiX29wYWNpdHkiLCJzY3JvbGxQYXJlbnROb3RIaWRkZW4iLCJvdmVyZmxvd09mZnNldCIsInNjcm9sbGVkIiwic25hcEVsZW1lbnRzIiwiJHQiLCIkbyIsInRzIiwiYnMiLCJscyIsInJzIiwieDEiLCJ4MiIsInkxIiwieTIiLCJzbmFwcGluZyIsInJlbGVhc2UiLCJzbmFwSXRlbSIsIm1ha2VBcnJheSIsIl96SW5kZXgiLCJhbHNvUmVzaXplIiwiYW5pbWF0ZUR1cmF0aW9uIiwiYW5pbWF0ZUVhc2luZyIsImFzcGVjdFJhdGlvIiwiYXV0b0hpZGUiLCJnaG9zdCIsImhhbmRsZXMiLCJtYXhXaWR0aCIsIm1pbkhlaWdodCIsIm1pbldpZHRoIiwiX251bSIsIl9pc051bWJlciIsIl9hc3BlY3RSYXRpbyIsIm9yaWdpbmFsRWxlbWVudCIsIl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzIiwicmVzaXphYmxlIiwiZWxlbWVudElzV3JhcHBlciIsIm9yaWdpbmFsUmVzaXplU3R5bGUiLCJ6b29tIiwiX3Byb3BvcnRpb25hbGx5UmVzaXplIiwiX3NldHVwSGFuZGxlcyIsIl9oYW5kbGVzIiwicmVzaXppbmciLCJfcmVtb3ZlSGFuZGxlcyIsImhuYW1lIiwic2UiLCJzdyIsIm5lIiwibnciLCJfcmVuZGVyQXhpcyIsInBhZFBvcyIsInBhZFdyYXBwZXIiLCJjYXB0dXJlIiwiY3VybGVmdCIsImN1cnRvcCIsIl9yZW5kZXJQcm94eSIsIm9yaWdpbmFsU2l6ZSIsInNpemVEaWZmIiwib3JpZ2luYWxNb3VzZVBvc2l0aW9uIiwiX3Byb3BhZ2F0ZSIsInNtcCIsImR4IiwiZHkiLCJfdXBkYXRlUHJldlByb3BlcnRpZXMiLCJfdXBkYXRlVmlydHVhbEJvdW5kYXJpZXMiLCJfdXBkYXRlUmF0aW8iLCJfcmVzcGVjdFNpemUiLCJfdXBkYXRlQ2FjaGUiLCJfYXBwbHlDaGFuZ2VzIiwicHIiLCJpc3RhIiwic29mZnNldGgiLCJzb2Zmc2V0dyIsInByZXZQb3NpdGlvbiIsInByZXZTaXplIiwiZm9yY2VBc3BlY3RSYXRpbyIsInBNaW5XaWR0aCIsInBNYXhXaWR0aCIsInBNaW5IZWlnaHQiLCJwTWF4SGVpZ2h0IiwiSW5maW5pdHkiLCJfdkJvdW5kYXJpZXMiLCJjcG9zIiwiY3NpemUiLCJpc21heHciLCJpc21heGgiLCJpc21pbnciLCJpc21pbmgiLCJkdyIsImRoIiwiY3ciLCJjaCIsIl9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnMiLCJ3aWR0aHMiLCJib3JkZXJzIiwicGFkZGluZ3MiLCJwcmVsIiwib3V0ZXJEaW1lbnNpb25zIiwiZWxlbWVudE9mZnNldCIsImNzIiwib2MiLCJjb250YWluZXJFbGVtZW50IiwiY29udGFpbmVyT2Zmc2V0IiwiY29udGFpbmVyUG9zaXRpb24iLCJwYXJlbnREYXRhIiwiY29udGFpbmVyU2l6ZSIsIndvc2V0IiwiaG9zZXQiLCJpc1BhcmVudCIsImlzT2Zmc2V0UmVsYXRpdmUiLCJjcCIsInBSYXRpbyIsImNvcCIsImNvbnRpbnVlUmVzaXplIiwiaG8iLCJvcyIsIm9wIiwiZGVsdGEiLCJzdW0iLCJyZW1vdmVDaGlsZCIsImdyaWRYIiwiZ3JpZFkiLCJveCIsIm95IiwibmV3V2lkdGgiLCJuZXdIZWlnaHQiLCJpc01heFdpZHRoIiwiaXNNYXhIZWlnaHQiLCJpc01pbldpZHRoIiwiaXNNaW5IZWlnaHQiLCJhdXRvT3BlbiIsImJ1dHRvbnMiLCJjbG9zZU9uRXNjYXBlIiwidG9wT2Zmc2V0IiwiYmVmb3JlQ2xvc2UiLCJyZXNpemVTdGFydCIsInJlc2l6ZVN0b3AiLCJzaXplUmVsYXRlZE9wdGlvbnMiLCJyZXNpemFibGVSZWxhdGVkT3B0aW9ucyIsIm9yaWdpbmFsQ3NzIiwib3JpZ2luYWxUaXRsZSIsIl9jcmVhdGVXcmFwcGVyIiwidWlEaWFsb2ciLCJfY3JlYXRlVGl0bGViYXIiLCJfY3JlYXRlQnV0dG9uUGFuZSIsIl9tYWtlRHJhZ2dhYmxlIiwiX21ha2VSZXNpemFibGUiLCJfaXNPcGVuIiwiX3RyYWNrRm9jdXMiLCJfdW50cmFja0luc3RhbmNlIiwiX2Rlc3Ryb3lPdmVybGF5IiwiZGV0YWNoIiwiX2ZvY3VzZWRFbGVtZW50Iiwib3BlbmVyIiwiX2hpZGUiLCJpc09wZW4iLCJtb3ZlVG9Ub3AiLCJfbW92ZVRvVG9wIiwic2lsZW50IiwibW92ZWQiLCJ6SW5kaWNlcyIsInpJbmRleE1heCIsIl9mb2N1c1RhYmJhYmxlIiwiX3NpemUiLCJfY3JlYXRlT3ZlcmxheSIsIm92ZXJsYXkiLCJfc2hvdyIsIl9tYWtlRm9jdXNUYXJnZXQiLCJoYXNGb2N1cyIsInVpRGlhbG9nQnV0dG9uUGFuZSIsInVpRGlhbG9nVGl0bGViYXJDbG9zZSIsIl9rZWVwRm9jdXMiLCJjaGVja0ZvY3VzIiwidGFiYmFibGVzIiwidWlEaWFsb2dUaXRsZSIsInVpRGlhbG9nVGl0bGViYXIiLCJfdGl0bGUiLCJ1aUJ1dHRvblNldCIsIl9jcmVhdGVCdXR0b25zIiwiYnV0dG9uT3B0aW9ucyIsImZpbHRlcmVkVWkiLCJyZXNpemVIYW5kbGVzIiwiX21pbkhlaWdodCIsIl90cmFja2luZ0luc3RhbmNlcyIsImV4aXN0cyIsInJlc2l6YWJsZU9wdGlvbnMiLCJpc0RyYWdnYWJsZSIsImlzUmVzaXphYmxlIiwibm9uQ29udGVudEhlaWdodCIsIm1pbkNvbnRlbnRIZWlnaHQiLCJtYXhDb250ZW50SGVpZ2h0IiwiX2FsbG93SW50ZXJhY3Rpb24iLCJpc09wZW5pbmciLCJvdmVybGF5cyIsImRpYWxvZ0NsYXNzIiwiYWNjZXB0IiwiZ3JlZWR5IiwidG9sZXJhbmNlIiwiZGVhY3RpdmF0ZSIsIm92ZXIiLCJwcm9wb3J0aW9ucyIsImlzb3ZlciIsImlzb3V0IiwiX2FkZFRvTWFuYWdlciIsImRyb3BwYWJsZXMiLCJfc3BsaWNlIiwiX2FkZEFjdGl2ZUNsYXNzIiwiX2RlYWN0aXZhdGUiLCJfcmVtb3ZlQWN0aXZlQ2xhc3MiLCJfb3ZlciIsIl9hZGRIb3ZlckNsYXNzIiwiX291dCIsIl9yZW1vdmVIb3ZlckNsYXNzIiwiX2Ryb3AiLCJjdXN0b20iLCJjaGlsZHJlbkludGVyc2VjdGlvbiIsImRyb3BwYWJsZSIsImludGVyc2VjdCIsInJoYXNoIiwiaXNPdmVyQXhpcyIsInJlZmVyZW5jZSIsInRvbGVyYW5jZU1vZGUiLCJhYnNvbHV0ZSIsInNwaW5uZXJNb2RpZmVyIiwiZHJvcHBhYmxlc0xvb3AiLCJwYXJlbnRzVW50aWwiLCJncmVlZHlDaGlsZCIsInBhcmVudEluc3RhbmNlIiwiaW50ZXJzZWN0cyIsImhvdmVyQ2xhc3MiLCJhY3RpdmVDbGFzcyIsIm9sZFZhbHVlIiwiX2NvbnN0cmFpbmVkVmFsdWUiLCJ2YWx1ZURpdiIsIl9yZWZyZXNoVmFsdWUiLCJuZXdWYWx1ZSIsImluZGV0ZXJtaW5hdGUiLCJfcGVyY2VudGFnZSIsInBlcmNlbnRhZ2UiLCJ0b0ZpeGVkIiwib3ZlcmxheURpdiIsImF1dG9SZWZyZXNoIiwic2VsZWN0ZWQiLCJzZWxlY3RpbmciLCJ1bnNlbGVjdGVkIiwidW5zZWxlY3RpbmciLCJkcmFnZ2VkIiwiZWxlbWVudFBvcyIsInNlbGVjdGVlcyIsInNlbGVjdGVlT2Zmc2V0IiwiJGVsZW1lbnQiLCJzdGFydHNlbGVjdGVkIiwib3BvcyIsInNlbGVjdGVlIiwiZG9TZWxlY3QiLCJ0bXAiLCJoaXQiLCJzZWxlY3RtZW51SWQiLCJpZHMiLCJfZHJhd0J1dHRvbiIsIl9kcmF3TWVudSIsIl9yZW5kZXJlZCIsIm1lbnVJdGVtcyIsIl9wYXJzZU9wdGlvbiIsInRhYmluZGV4IiwiYnV0dG9uSXRlbSIsIl9yZW5kZXJCdXR0b25JdGVtIiwiX3Jlc2l6ZUJ1dHRvbiIsIl9idXR0b25FdmVudHMiLCJfcmVmcmVzaE1lbnUiLCJtZW51V3JhcCIsIm1lbnVJbnN0YW5jZSIsIl9zZXRTZWxlY3Rpb24iLCJfc2VsZWN0IiwiZm9jdXNJbmRleCIsIl9nZXRTZWxlY3RlZEl0ZW0iLCJfcGFyc2VPcHRpb25zIiwiX3NldEFyaWEiLCJfdG9nZ2xlQXR0ciIsIl9kb2N1bWVudENsaWNrIiwicmFuZ2UiLCJtZW51V2lkZ2V0IiwiX3NldFRleHQiLCJjdXJyZW50T3B0Z3JvdXAiLCJsaSIsIm9wdGdyb3VwIiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJyYW5nZUNvdW50IiwiZ2V0UmFuZ2VBdCIsImNyZWF0ZVJhbmdlIiwiX3NlbGVjdEZvY3VzZWRJdGVtIiwib2xkSW5kZXgiLCJvcmllbnRhdGlvbiIsInNsaWRlIiwibnVtUGFnZXMiLCJfa2V5U2xpZGluZyIsIl9tb3VzZVNsaWRpbmciLCJfYW5pbWF0ZU9mZiIsIl9oYW5kbGVJbmRleCIsIl9kZXRlY3RPcmllbnRhdGlvbiIsIl9jYWxjdWxhdGVOZXdNYXgiLCJfY3JlYXRlUmFuZ2UiLCJfY3JlYXRlSGFuZGxlcyIsImhhbmRsZUNvdW50IiwiZXhpc3RpbmdIYW5kbGVzIiwiX3ZhbHVlTWluIiwiX2hhbmRsZUV2ZW50cyIsIm5vcm1WYWx1ZSIsImNsb3Nlc3RIYW5kbGUiLCJtb3VzZU92ZXJIYW5kbGUiLCJlbGVtZW50U2l6ZSIsIl9ub3JtVmFsdWVGcm9tTW91c2UiLCJfdmFsdWVNYXgiLCJ0aGlzRGlzdGFuY2UiLCJfbGFzdENoYW5nZWRWYWx1ZSIsIl9zdGFydCIsIl9jbGlja09mZnNldCIsIl9zbGlkZSIsIl9zdG9wIiwicGl4ZWxUb3RhbCIsInBpeGVsTW91c2UiLCJwZXJjZW50TW91c2UiLCJ2YWx1ZVRvdGFsIiwidmFsdWVNb3VzZSIsIl90cmltQWxpZ25WYWx1ZSIsInVpSGFzaCIsImhhbmRsZUluZGV4IiwiX2hhc011bHRpcGxlVmFsdWVzIiwibmV3VmFsIiwib3RoZXJWYWwiLCJjdXJyZW50VmFsdWUiLCJuZXdWYWx1ZXMiLCJ2YWxzIiwiX3ZhbHVlcyIsInZhbHNMZW5ndGgiLCJfcmVmcmVzaFJhbmdlIiwidmFsTW9kU3RlcCIsImFsaWduVmFsdWUiLCJfcHJlY2lzaW9uIiwicHJlY2lzaW9uIiwiX3ByZWNpc2lvbk9mIiwiZGVjaW1hbCIsImxhc3RWYWxQZXJjZW50IiwidmFsUGVyY2VudCIsInZhbHVlTWluIiwidmFsdWVNYXgiLCJvUmFuZ2UiLCJfc2V0IiwiY3VyVmFsIiwia2V5dXAiLCJyZWFkeSIsImNvbm5lY3RXaXRoIiwiZHJvcE9uRW1wdHkiLCJmb3JjZVBsYWNlaG9sZGVyU2l6ZSIsImZvcmNlSGVscGVyU2l6ZSIsImJlZm9yZVN0b3AiLCJyZWNlaXZlIiwiX2lzT3ZlckF4aXMiLCJfaXNGbG9hdGluZyIsIm92ZXJyaWRlSGFuZGxlIiwidmFsaWRIYW5kbGUiLCJyZXZlcnRpbmciLCJfcmVmcmVzaEl0ZW1zIiwiX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zIiwibm9BY3RpdmF0aW9uIiwiY3VycmVudENvbnRhaW5lciIsImRvbVBvc2l0aW9uIiwiX2NyZWF0ZVBsYWNlaG9sZGVyIiwic3RvcmVkQ3Vyc29yIiwic3RvcmVkU3R5bGVzaGVldCIsIl9zdG9yZWRPcGFjaXR5IiwiX3N0b3JlZFpJbmRleCIsIl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zIiwiY29udGFpbmVycyIsImRyYWdnaW5nIiwiaXRlbUVsZW1lbnQiLCJpbnRlcnNlY3Rpb24iLCJsYXN0UG9zaXRpb25BYnMiLCJfaW50ZXJzZWN0c1dpdGhQb2ludGVyIiwiX2ludGVyc2VjdHNXaXRoU2lkZXMiLCJfcmVhcnJhbmdlIiwiX2NvbnRhY3RDb250YWluZXJzIiwiX25vRmluYWxTb3J0IiwiX2dldEl0ZW1zQXNqUXVlcnkiLCJjb25uZWN0ZWQiLCJhdHRyaWJ1dGUiLCJleHByZXNzaW9uIiwidG9BcnJheSIsImR5Q2xpY2siLCJkeENsaWNrIiwiaXNPdmVyRWxlbWVudEhlaWdodCIsImlzT3ZlckVsZW1lbnRXaWR0aCIsImlzT3ZlckVsZW1lbnQiLCJmb3JjZVBvaW50ZXJGb3JDb250YWluZXJzIiwiZmxvYXRpbmciLCJ2ZXJ0aWNhbERpcmVjdGlvbiIsImhvcml6b250YWxEaXJlY3Rpb24iLCJfZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uIiwiX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uIiwiaXNPdmVyQm90dG9tSGFsZiIsImlzT3ZlclJpZ2h0SGFsZiIsIl9jb25uZWN0V2l0aCIsInF1ZXJpZXMiLCJhZGRJdGVtcyIsInRhcmdldERhdGEiLCJfcXVlcmllcyIsInF1ZXJpZXNMZW5ndGgiLCJmYXN0IiwidG9sZXJhbmNlRWxlbWVudCIsInJlZnJlc2hDb250YWluZXJzIiwiX2NyZWF0ZVRyUGxhY2Vob2xkZXIiLCJzb3VyY2VUciIsInRhcmdldFRyIiwiZGlzdCIsIml0ZW1XaXRoTGVhc3REaXN0YW5jZSIsInBvc1Byb3BlcnR5Iiwic2l6ZVByb3BlcnR5IiwibmVhckJvdHRvbSIsImlubmVybW9zdENvbnRhaW5lciIsImlubmVybW9zdEluZGV4IiwiaGFyZFJlZnJlc2giLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsImRlbGF5ZWRUcmlnZ2VycyIsImRlbGF5RXZlbnQiLCJfaW5zdCIsInNlbmRlciIsImN1bHR1cmUiLCJpbmNyZW1lbnRhbCIsIm51bWJlckZvcm1hdCIsInNwaW4iLCJfZHJhdyIsIm1vdXNld2hlZWwiLCJzcGlubmluZyIsIl9zcGluIiwibW91c2V3aGVlbFRpbWVyIiwiX3JlcGVhdCIsInVpU3Bpbm5lciIsInN0ZXBzIiwiX2FkanVzdFZhbHVlIiwiX2luY3JlbWVudCIsImFib3ZlTWluIiwicHJldlZhbHVlIiwiX3BhcnNlIiwiX2Zvcm1hdCIsIkdsb2JhbGl6ZSIsImlzVmFsaWQiLCJhbGxvd0FueSIsInN0ZXBVcCIsIl9zdGVwVXAiLCJzdGVwRG93biIsIl9zdGVwRG93biIsInBhZ2VVcCIsInBhZ2VzIiwicGFnZURvd24iLCJzcGlubmVyIiwiX3VpU3Bpbm5lckh0bWwiLCJfYnV0dG9uSHRtbCIsImJlZm9yZUxvYWQiLCJsb2FkIiwiX2lzTG9jYWwiLCJhbmNob3IiLCJhbmNob3JVcmwiLCJsb2NhdGlvblVybCIsImRlY29kZVVSSUNvbXBvbmVudCIsInJ1bm5pbmciLCJfcHJvY2Vzc1RhYnMiLCJfaW5pdGlhbEFjdGl2ZSIsInRhYnMiLCJhbmNob3JzIiwibG9jYXRpb25IYXNoIiwiX2dldFBhbmVsRm9yVGFiIiwiX3RhYktleWRvd24iLCJmb2N1c2VkVGFiIiwiZ29pbmdGb3J3YXJkIiwiX2hhbmRsZVBhZ2VOYXYiLCJhY3RpdmF0aW5nIiwiX2ZvY3VzTmV4dFRhYiIsIl9wYW5lbEtleWRvd24iLCJfZmluZE5leHRUYWIiLCJsYXN0VGFiSW5kZXgiLCJfc2V0dXBIZWlnaHRTdHlsZSIsIl9zYW5pdGl6ZVNlbGVjdG9yIiwibGlzIiwidGFibGlzdCIsInByZXZUYWJzIiwicHJldkFuY2hvcnMiLCJfZ2V0TGlzdCIsImFuY2hvcklkIiwib3JpZ2luYWxBcmlhQ29udHJvbHMiLCJfY3JlYXRlUGFuZWwiLCJvbGRUYWIiLCJuZXdUYWIiLCJfZ2V0SW5kZXgiLCJtZXJnZSIsImpxWEhSIiwiX2FqYXhTZXR0aW5ncyIsInN0YXR1c1RleHQiLCJmYWlsIiwiYmVmb3JlU2VuZCIsImFqYXhTZXR0aW5ncyIsInRyYWNrIiwiX2FkZERlc2NyaWJlZEJ5IiwiZGVzY3JpYmVkYnkiLCJfcmVtb3ZlRGVzY3JpYmVkQnkiLCJtb3VzZW92ZXIiLCJ0b29sdGlwcyIsImRpc2FibGVkVGl0bGVzIiwidG9vbHRpcERhdGEiLCJfdXBkYXRlQ29udGVudCIsIl9kaXNhYmxlIiwiX2VuYWJsZSIsImJsdXJFdmVudCIsIl9yZWdpc3RlckNsb3NlSGFuZGxlcnMiLCJjb250ZW50T3B0aW9uIiwidG9vbHRpcCIsImRlbGF5ZWRTaG93IiwiYTExeUNvbnRlbnQiLCJwb3NpdGlvbk9wdGlvbiIsIl9maW5kIiwiX3Rvb2x0aXAiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJpbnRlcnZhbCIsImZha2VFdmVudCIsIl9yZW1vdmVUb29sdGlwIiwiY2xvc2luZyIsImhpZGluZyIsInRvb2x0aXBDbGFzcyIsImFtZCIsIm1mcCIsIl9wcmV2U3RhdHVzIiwiX2RvY3VtZW50IiwiX3ByZXZDb250ZW50VHlwZSIsIl93cmFwQ2xhc3NlcyIsIl9jdXJyUG9wdXBUeXBlIiwiQ0xPU0VfRVZFTlQiLCJNQVJLVVBfUEFSU0VfRVZFTlQiLCJPUEVOX0VWRU5UIiwiQ0hBTkdFX0VWRU5UIiwiRVZFTlRfTlMiLCJSRUFEWV9DTEFTUyIsIlBSRVZFTlRfQ0xPU0VfQ0xBU1MiLCJNYWduaWZpY1BvcHVwIiwiX2lzSlEiLCJfd2luZG93IiwiX21mcE9uIiwiZXYiLCJfZ2V0RWwiLCJfbWZwVHJpZ2dlciIsInN0IiwiY2FsbGJhY2tzIiwiX2dldENsb3NlQnRuIiwiY3VyclRlbXBsYXRlIiwiY2xvc2VCdG4iLCJjbG9zZU1hcmt1cCIsInRDbG9zZSIsIl9jaGVja0luc3RhbmNlIiwibWFnbmlmaWNQb3B1cCIsImFwcFZlcnNpb24iLCJpc0xvd0lFIiwiaXNJRTgiLCJpc0FuZHJvaWQiLCJpc0lPUyIsInN1cHBvcnRzVHJhbnNpdGlvbiIsInN1cHBvcnRzVHJhbnNpdGlvbnMiLCJwcm9iYWJseU1vYmlsZSIsInBvcHVwc0NhY2hlIiwiaXNPYmoiLCJ0eXBlcyIsIm1haW5FbCIsImZpeGVkQ29udGVudFBvcyIsImNsb3NlT25Db250ZW50Q2xpY2siLCJjbG9zZU9uQmdDbGljayIsInNob3dDbG9zZUJ0biIsImVuYWJsZUVzY2FwZUtleSIsImJnT3ZlcmxheSIsIl9jaGVja0lmQ2xvc2UiLCJjb250ZW50Q29udGFpbmVyIiwicHJlbG9hZGVyIiwidExvYWRpbmciLCJtb2R1bGVzIiwiY2xvc2VCdG5JbnNpZGUiLCJ0ZW1wbGF0ZSIsImNsb3NlX3JlcGxhY2VXaXRoIiwiYWxpZ25Ub3AiLCJmaXhlZEJnUG9zIiwidXBkYXRlU2l6ZSIsIndpbmRvd0hlaWdodCIsIndIIiwid2luZG93U3R5bGVzIiwiX2hhc1Njcm9sbEJhciIsIl9nZXRTY3JvbGxiYXJTaXplIiwiaXNJRTciLCJjbGFzc2VzVG9hZGQiLCJtYWluQ2xhc3MiLCJfYWRkQ2xhc3NUb01GUCIsInVwZGF0ZUl0ZW1IVE1MIiwiX2xhc3RGb2N1c2VkRWwiLCJfc2V0Rm9jdXMiLCJfb25Gb2N1c0luIiwicmVtb3ZhbERlbGF5IiwiY2xhc3Nlc1RvUmVtb3ZlIiwiUkVNT1ZJTkdfQ0xBU1MiLCJfcmVtb3ZlQ2xhc3NGcm9tTUZQIiwiY3Vyckl0ZW0iLCJhdXRvRm9jdXNMYXN0IiwicHJldkhlaWdodCIsIndpbkhlaWdodCIsInpvb21MZXZlbCIsInBhcnNlRWwiLCJtYXJrdXAiLCJuZXdDb250ZW50IiwiYXBwZW5kQ29udGVudCIsInByZWxvYWRlZCIsImFkZEdyb3VwIiwiZUhhbmRsZXIiLCJtZnBFbCIsIl9vcGVuQ2xpY2siLCJlTmFtZSIsImRlbGVnYXRlIiwibWlkQ2xpY2siLCJkaXNhYmxlT24iLCJ1cGRhdGVTdGF0dXMiLCJjbG9zZU9uQ29udGVudCIsImNsb3NlT25CZyIsImNOYW1lIiwiX3BhcnNlTWFya3VwIiwic2Nyb2xsYmFyU2l6ZSIsInNjcm9sbERpdiIsInJlZ2lzdGVyTW9kdWxlIiwianFFbCIsIml0ZW1PcHRzIiwiX2hpZGRlbkNsYXNzIiwiX2lubGluZVBsYWNlaG9sZGVyIiwiX2xhc3RJbmxpbmVFbGVtZW50IiwiSU5MSU5FX05TIiwiX3B1dElubGluZUVsZW1lbnRzQmFjayIsImhpZGRlbkNsYXNzIiwidE5vdEZvdW5kIiwiaW5pdElubGluZSIsImdldElubGluZSIsImlubGluZVN0IiwiaW5saW5lRWxlbWVudCIsIl9hamF4Q3VyIiwiQUpBWF9OUyIsIl9yZW1vdmVBamF4Q3Vyc29yIiwiX2Rlc3Ryb3lBamF4UmVxdWVzdCIsInJlcSIsInRFcnJvciIsImluaXRBamF4IiwiZ2V0QWpheCIsInRleHRTdGF0dXMiLCJmaW5pc2hlZCIsImxvYWRFcnJvciIsIl9pbWdJbnRlcnZhbCIsImhhc01velRyYW5zZm9ybSIsIl9nZXRUaXRsZSIsImltYWdlIiwidGl0bGVTcmMiLCJ2ZXJ0aWNhbEZpdCIsImluaXRJbWFnZSIsImltZ1N0IiwicmVzaXplSW1hZ2UiLCJkZWNyIiwiX29uSW1hZ2VIYXNTaXplIiwiaGFzU2l6ZSIsImlzQ2hlY2tpbmdJbWdTaXplIiwiaW1nSGlkZGVuIiwiZmluZEltYWdlU2l6ZSIsIm1mcFNldEludGVydmFsIiwibmF0dXJhbFdpZHRoIiwiZ2V0SW1hZ2UiLCJndWFyZCIsIm9uTG9hZENvbXBsZXRlIiwibG9hZGVkIiwib25Mb2FkRXJyb3IiLCJpbWdfcmVwbGFjZVdpdGgiLCJsb2FkaW5nIiwiZW5hYmxlZCIsImluaXRab29tIiwiem9vbVN0Iiwib3BlblRpbWVvdXQiLCJhbmltYXRlZEltZyIsImdldEVsVG9BbmltYXRlIiwibmV3SW1nIiwiY3NzT2JqIiwic2hvd01haW5Db250ZW50IiwiX2FsbG93Wm9vbSIsIl9nZXRJdGVtVG9ab29tIiwiX2dldE9mZnNldCIsIkJFRk9SRV9DTE9TRV9FVkVOVCIsImlzTGFyZ2UiLCJNb3pUcmFuc2Zvcm0iLCJJRlJBTUVfTlMiLCJfZml4SWZyYW1lQnVncyIsImlzU2hvd2luZyIsInNyY0FjdGlvbiIsInBhdHRlcm5zIiwieW91dHViZSIsInZpbWVvIiwiZ21hcHMiLCJpbml0SWZyYW1lIiwicHJldlR5cGUiLCJuZXdUeXBlIiwiZ2V0SWZyYW1lIiwiZW1iZWRTcmMiLCJpZnJhbWVTdCIsImxhc3RJbmRleE9mIiwiZGF0YU9iaiIsIl9nZXRMb29wZWRJZCIsIm51bVNsaWRlcyIsIl9yZXBsYWNlQ3VyclRvdGFsIiwiY3VyciIsImFycm93TWFya3VwIiwicHJlbG9hZCIsIm5hdmlnYXRlQnlJbWdDbGljayIsImFycm93cyIsInRQcmV2IiwidE5leHQiLCJ0Q291bnRlciIsImluaXRHYWxsZXJ5IiwiZ1N0IiwiZ2FsbGVyeSIsIm5zIiwiYXJyb3dMZWZ0IiwiYXJyb3dSaWdodCIsIl9wcmVsb2FkVGltZW91dCIsInByZWxvYWROZWFyYnlJbWFnZXMiLCJnb1RvIiwibmV3SW5kZXgiLCJwcmVsb2FkQmVmb3JlIiwicHJlbG9hZEFmdGVyIiwiX3ByZWxvYWRJdGVtIiwicmVwbGFjZVNyYyIsInJhdGlvIiwiaW5pdFJldGluYSIsImRldmljZVBpeGVsUmF0aW8iLCJyZXRpbmEiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIlJlZmVyZW5jZUVycm9yIiwiX3NldFByb3RvdHlwZU9mIiwiX2RlZmluZVByb3BlcnRpZXMiLCJfY3JlYXRlQ2xhc3MiLCJFbWl0dGVyIiwiX2NhbGxiYWNrcyIsIl9sZW4iLCJfa2V5IiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfc3RlcCIsIl9pdGVyYXRvciIsIkRyb3B6b25lIiwiX0VtaXR0ZXIiLCJfdGhpcyIsImZhbGxiYWNrIiwiZGVmYXVsdE9wdGlvbnMiLCJwcmV2aWV3VGVtcGxhdGUiLCJjbGlja2FibGVFbGVtZW50cyIsImZpbGVzIiwiZHJvcHpvbmUiLCJlbGVtZW50T3B0aW9ucyIsIm9wdGlvbnNGb3JFbGVtZW50IiwiZm9yY2VGYWxsYmFjayIsImlzQnJvd3NlclN1cHBvcnRlZCIsImFjY2VwdGVkRmlsZXMiLCJhY2NlcHRlZE1pbWVUeXBlcyIsInVwbG9hZE11bHRpcGxlIiwiY2h1bmtpbmciLCJyZW5hbWVGaWxlbmFtZSIsInJlbmFtZUZpbGUiLCJmaWxlIiwiZ2V0RXhpc3RpbmdGYWxsYmFjayIsInByZXZpZXdzQ29udGFpbmVyIiwiZ2V0RWxlbWVudCIsImNsaWNrYWJsZSIsImdldEVsZW1lbnRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX2luaGVyaXRzIiwid2l0aENyZWRlbnRpYWxzIiwidGltZW91dCIsInBhcmFsbGVsVXBsb2FkcyIsImZvcmNlQ2h1bmtpbmciLCJjaHVua1NpemUiLCJwYXJhbGxlbENodW5rVXBsb2FkcyIsInJldHJ5Q2h1bmtzIiwicmV0cnlDaHVua3NMaW1pdCIsIm1heEZpbGVzaXplIiwicGFyYW1OYW1lIiwiY3JlYXRlSW1hZ2VUaHVtYm5haWxzIiwibWF4VGh1bWJuYWlsRmlsZXNpemUiLCJ0aHVtYm5haWxXaWR0aCIsInRodW1ibmFpbEhlaWdodCIsInRodW1ibmFpbE1ldGhvZCIsInJlc2l6ZVdpZHRoIiwicmVzaXplSGVpZ2h0IiwicmVzaXplTWltZVR5cGUiLCJyZXNpemVRdWFsaXR5IiwicmVzaXplTWV0aG9kIiwiZmlsZXNpemVCYXNlIiwibWF4RmlsZXMiLCJpZ25vcmVIaWRkZW5GaWxlcyIsImF1dG9Qcm9jZXNzUXVldWUiLCJhdXRvUXVldWUiLCJhZGRSZW1vdmVMaW5rcyIsImhpZGRlbklucHV0Q29udGFpbmVyIiwiZGljdERlZmF1bHRNZXNzYWdlIiwiZGljdEZhbGxiYWNrTWVzc2FnZSIsImRpY3RGYWxsYmFja1RleHQiLCJkaWN0RmlsZVRvb0JpZyIsImRpY3RJbnZhbGlkRmlsZVR5cGUiLCJkaWN0UmVzcG9uc2VFcnJvciIsImRpY3RDYW5jZWxVcGxvYWQiLCJkaWN0VXBsb2FkQ2FuY2VsZWQiLCJkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uIiwiZGljdFJlbW92ZUZpbGUiLCJkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbiIsImRpY3RNYXhGaWxlc0V4Y2VlZGVkIiwiZGljdEZpbGVTaXplVW5pdHMiLCJ0YiIsImdiIiwibWIiLCJrYiIsImNodW5rIiwiZHp1dWlkIiwidXBsb2FkIiwiZHpjaHVua2luZGV4IiwiZHp0b3RhbGZpbGVzaXplIiwiZHpjaHVua3NpemUiLCJkenRvdGFsY2h1bmtjb3VudCIsInRvdGFsQ2h1bmtDb3VudCIsImR6Y2h1bmtieXRlb2Zmc2V0IiwiY2h1bmtzVXBsb2FkZWQiLCJtZXNzYWdlRWxlbWVudCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yIiwiX2RpZEl0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yRXJyb3IyIiwiX3N0ZXAyIiwiX2l0ZXJhdG9yMiIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3BhbiIsImdldEZhbGxiYWNrRm9ybSIsImluZm8iLCJzcmNYIiwic3JjWSIsInNyY1dpZHRoIiwic3JjSGVpZ2h0Iiwic3JjUmF0aW8iLCJ0cmdSYXRpbyIsInRyZ1dpZHRoIiwidHJnSGVpZ2h0IiwidHJhbnNmb3JtRmlsZSIsImRyYWdzdGFydCIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsInBhc3RlIiwicmVzZXQiLCJhZGRlZGZpbGUiLCJfdGhpczIiLCJwcmV2aWV3RWxlbWVudCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zIiwiX2RpZEl0ZXJhdG9yRXJyb3IzIiwiX2l0ZXJhdG9yRXJyb3IzIiwiX3N0ZXAzIiwiX2l0ZXJhdG9yMyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJub2RlIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQiLCJfZGlkSXRlcmF0b3JFcnJvcjQiLCJfaXRlcmF0b3JFcnJvcjQiLCJfc3RlcDQiLCJfaXRlcmF0b3I0IiwiZmlsZXNpemUiLCJfcmVtb3ZlTGluayIsInJlbW92ZUZpbGVFdmVudCIsIlVQTE9BRElORyIsInJlbW92ZUZpbGUiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSIsIl9kaWRJdGVyYXRvckVycm9yNSIsIl9pdGVyYXRvckVycm9yNSIsIl9zdGVwNSIsIl9pdGVyYXRvcjUiLCJyZW1vdmVkZmlsZSIsIl91cGRhdGVNYXhGaWxlc1JlYWNoZWRDbGFzcyIsInRodW1ibmFpbCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242IiwiX2RpZEl0ZXJhdG9yRXJyb3I2IiwiX2l0ZXJhdG9yRXJyb3I2IiwiX3N0ZXA2IiwiX2l0ZXJhdG9yNiIsInRodW1ibmFpbEVsZW1lbnQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyIsIl9kaWRJdGVyYXRvckVycm9yNyIsIl9pdGVyYXRvckVycm9yNyIsIl9zdGVwNyIsIl9pdGVyYXRvcjciLCJlcnJvcm11bHRpcGxlIiwicHJvY2Vzc2luZyIsInByb2Nlc3NpbmdtdWx0aXBsZSIsInVwbG9hZHByb2dyZXNzIiwicHJvZ3Jlc3MiLCJieXRlc1NlbnQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCIsIl9kaWRJdGVyYXRvckVycm9yOCIsIl9pdGVyYXRvckVycm9yOCIsIl9zdGVwOCIsIl9pdGVyYXRvcjgiLCJ0b3RhbHVwbG9hZHByb2dyZXNzIiwic2VuZGluZyIsInNlbmRpbmdtdWx0aXBsZSIsInN1Y2Nlc3NtdWx0aXBsZSIsImNhbmNlbGVkIiwiY2FuY2VsZWRtdWx0aXBsZSIsImNvbXBsZXRlbXVsdGlwbGUiLCJtYXhmaWxlc2V4Y2VlZGVkIiwibWF4ZmlsZXNyZWFjaGVkIiwicXVldWVjb21wbGV0ZSIsImFkZGVkZmlsZXMiLCJfdGh1bWJuYWlsUXVldWUiLCJfcHJvY2Vzc2luZ1RodW1ibmFpbCIsIl9sZW4yIiwib2JqZWN0cyIsIl9rZXkyIiwiX29iamVjdHMiLCJhY2NlcHRlZCIsImdldEZpbGVzV2l0aFN0YXR1cyIsIlFVRVVFRCIsIkFEREVEIiwiX3RoaXMzIiwic2V0dXBIaWRkZW5GaWxlSW5wdXQiLCJoaWRkZW5GaWxlSW5wdXQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSIsIl9kaWRJdGVyYXRvckVycm9yOSIsIl9pdGVyYXRvckVycm9yOSIsIl9zdGVwOSIsIl9pdGVyYXRvcjkiLCJhZGRGaWxlIiwid2Via2l0VVJMIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwIiwiX2RpZEl0ZXJhdG9yRXJyb3IxMCIsIl9pdGVyYXRvckVycm9yMTAiLCJfc3RlcDEwIiwiX2l0ZXJhdG9yMTAiLCJ1cGRhdGVUb3RhbFVwbG9hZFByb2dyZXNzIiwiZ2V0QWRkZWRGaWxlcyIsImdldFVwbG9hZGluZ0ZpbGVzIiwiZ2V0UXVldWVkRmlsZXMiLCJkYXRhVHJhbnNmZXIiLCJzb21lIiwiY29udGFpbnNGaWxlcyIsImVmY3QiLCJlZmZlY3RBbGxvd2VkIiwiZHJvcEVmZmVjdCIsImNsaWNrYWJsZUVsZW1lbnQiLCJldnQiLCJlbGVtZW50SW5zaWRlIiwicmVtb3ZlQWxsRmlsZXMiLCJ0b3RhbFVwbG9hZFByb2dyZXNzIiwidG90YWxCeXRlc1NlbnQiLCJ0b3RhbEJ5dGVzIiwiZ2V0QWN0aXZlRmlsZXMiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEiLCJfZGlkSXRlcmF0b3JFcnJvcjExIiwiX2l0ZXJhdG9yRXJyb3IxMSIsIl9zdGVwMTEiLCJfaXRlcmF0b3IxMSIsImV4aXN0aW5nRmFsbGJhY2siLCJmaWVsZHNTdHJpbmciLCJfZ2V0UGFyYW1OYW1lIiwiZmllbGRzIiwiZ2V0RmFsbGJhY2siLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIiLCJfZGlkSXRlcmF0b3JFcnJvcjEyIiwiX2l0ZXJhdG9yRXJyb3IxMiIsIl9zdGVwMTIiLCJfaXRlcmF0b3IxMiIsIl9pMiIsImVsZW1lbnRMaXN0ZW5lcnMiLCJfdGhpczQiLCJyZW1vdmVFdmVudExpc3RlbmVycyIsImNhbmNlbFVwbG9hZCIsInNldHVwRXZlbnRMaXN0ZW5lcnMiLCJzZWxlY3RlZFNpemUiLCJzZWxlY3RlZFVuaXQiLCJ1bml0cyIsImdldEFjY2VwdGVkRmlsZXMiLCJ3ZWJraXRHZXRBc0VudHJ5IiwiX2FkZEZpbGVzRnJvbUl0ZW1zIiwiaGFuZGxlRmlsZXMiLCJjbGlwYm9hcmREYXRhIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzIiwiX2RpZEl0ZXJhdG9yRXJyb3IxMyIsIl9pdGVyYXRvckVycm9yMTMiLCJfc3RlcDEzIiwiX2l0ZXJhdG9yMTMiLCJfdGhpczUiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQiLCJfZGlkSXRlcmF0b3JFcnJvcjE0IiwiX2l0ZXJhdG9yRXJyb3IxNCIsIl9zdGVwMTQiLCJfaXRlcmF0b3IxNCIsImlzRmlsZSIsImdldEFzRmlsZSIsImlzRGlyZWN0b3J5IiwiX2FkZEZpbGVzRnJvbURpcmVjdG9yeSIsImRpcmVjdG9yeSIsInBhdGgiLCJfdGhpczYiLCJkaXJSZWFkZXIiLCJjcmVhdGVSZWFkZXIiLCJlcnJvckhhbmRsZXIiLCJsb2ciLCJyZWFkRW50cmllcyIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSIsIl9kaWRJdGVyYXRvckVycm9yMTUiLCJfaXRlcmF0b3JFcnJvcjE1IiwiX3N0ZXAxNSIsIl9pdGVyYXRvcjE1IiwiZnVsbFBhdGgiLCJpc1ZhbGlkRmlsZSIsIl90aGlzNyIsInV1aWR2NCIsImZpbGVuYW1lIiwiX3JlbmFtZUZpbGUiLCJfZW5xdWV1ZVRodW1ibmFpbCIsIl9lcnJvclByb2Nlc3NpbmciLCJlbnF1ZXVlRmlsZSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiIsIl9kaWRJdGVyYXRvckVycm9yMTYiLCJfaXRlcmF0b3JFcnJvcjE2IiwiX3N0ZXAxNiIsIl9pdGVyYXRvcjE2IiwiX3RoaXM4IiwicHJvY2Vzc1F1ZXVlIiwiX3RoaXM5IiwiX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSIsIl90aGlzMTAiLCJjcmVhdGVUaHVtYm5haWwiLCJ3aXRob3V0IiwiY2FuY2VsSWZOZWNlc3NhcnkiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTciLCJfZGlkSXRlcmF0b3JFcnJvcjE3IiwiX2l0ZXJhdG9yRXJyb3IxNyIsIl9zdGVwMTciLCJfaXRlcmF0b3IxNyIsIl90aGlzMTEiLCJjYW52YXMiLCJyZXNpemVkRGF0YVVSTCIsInRvRGF0YVVSTCIsIkV4aWZSZXN0b3JlIiwiZGF0YVVSTCIsImRhdGFVUkl0b0Jsb2IiLCJmaXhPcmllbnRhdGlvbiIsIl90aGlzMTIiLCJmaWxlUmVhZGVyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImNyZWF0ZVRodW1ibmFpbEZyb21VcmwiLCJyZWFkQXNEYXRhVVJMIiwibW9ja0ZpbGUiLCJpbWFnZVVybCIsImNyb3NzT3JpZ2luIiwiX3RoaXMxMyIsInJlc2l6ZVRodW1ibmFpbCIsIm9uRG9uZSIsIl90aGlzMTQiLCJsb2FkRXhpZiIsIkVYSUYiLCJnZXREYXRhIiwiZ2V0VGFnIiwicmVzaXplSW5mbyIsImdldENvbnRleHQiLCJ0cmFuc2xhdGUiLCJyb3RhdGUiLCJkcmF3SW1hZ2VJT1NGaXgiLCJ0cmdYIiwidHJnWSIsIm9uZXJyb3IiLCJwcm9jZXNzaW5nTGVuZ3RoIiwicXVldWVkRmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcm9jZXNzRmlsZSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCIsIl9kaWRJdGVyYXRvckVycm9yMTgiLCJfaXRlcmF0b3JFcnJvcjE4IiwiX3N0ZXAxOCIsIl9pdGVyYXRvcjE4IiwidXBsb2FkRmlsZXMiLCJncm91cGVkRmlsZXMiLCJfZ2V0RmlsZXNXaXRoWGhyIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5IiwiX2RpZEl0ZXJhdG9yRXJyb3IxOSIsIl9pdGVyYXRvckVycm9yMTkiLCJfc3RlcDE5IiwiX2l0ZXJhdG9yMTkiLCJDQU5DRUxFRCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCIsIl9kaWRJdGVyYXRvckVycm9yMjAiLCJfaXRlcmF0b3JFcnJvcjIwIiwiX3N0ZXAyMCIsIl9pdGVyYXRvcjIwIiwiX2dyb3VwZWRGaWxlIiwiX2xlbjMiLCJfa2V5MyIsIl90aGlzMTUiLCJfdHJhbnNmb3JtRmlsZXMiLCJ0cmFuc2Zvcm1lZEZpbGVzIiwidHJhbnNmb3JtZWRGaWxlIiwiY2h1bmtlZCIsIl90cmFuc2Zvcm1lZEZpbGUiLCJjaHVua3MiLCJoYW5kbGVOZXh0Q2h1bmsiLCJjaHVua0luZGV4IiwiZGF0YUJsb2NrIiwid2Via2l0U2xpY2UiLCJyZXRyaWVzIiwiX3VwbG9hZERhdGEiLCJmaW5pc2hlZENodW5rVXBsb2FkIiwiYWxsRmluaXNoZWQiLCJTVUNDRVNTIiwiX2ZpbmlzaGVkIiwiZGF0YUJsb2NrcyIsIl9pMyIsIl90aGlzMTYiLCJYTUxIdHRwUmVxdWVzdCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSIsIl9kaWRJdGVyYXRvckVycm9yMjEiLCJfaXRlcmF0b3JFcnJvcjIxIiwiX3N0ZXAyMSIsIl9pdGVyYXRvcjIxIiwicmVzb2x2ZU9wdGlvbiIsIl9maW5pc2hlZFVwbG9hZGluZyIsIm9udGltZW91dCIsIl9oYW5kbGVVcGxvYWRFcnJvciIsIm9ucHJvZ3Jlc3MiLCJfdXBkYXRlRmlsZXNVcGxvYWRQcm9ncmVzcyIsImhlYWRlck5hbWUiLCJoZWFkZXJWYWx1ZSIsInNldFJlcXVlc3RIZWFkZXIiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYWRkaXRpb25hbFBhcmFtcyIsIl9nZXRDaHVuayIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiIsIl9kaWRJdGVyYXRvckVycm9yMjIiLCJfaXRlcmF0b3JFcnJvcjIyIiwiX3N0ZXAyMiIsIl9pdGVyYXRvcjIyIiwiX2ZpbGUiLCJfYWRkRm9ybUVsZW1lbnREYXRhIiwic3VibWl0UmVxdWVzdCIsIl90aGlzMTciLCJkb25lQ291bnRlciIsIl9sb29wIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzIiwiX2RpZEl0ZXJhdG9yRXJyb3IyMyIsIl9pdGVyYXRvckVycm9yMjMiLCJfc3RlcDIzIiwiX2l0ZXJhdG9yMjMiLCJpbnB1dE5hbWUiLCJpbnB1dFR5cGUiLCJoYXNBdHRyaWJ1dGUiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQiLCJfZGlkSXRlcmF0b3JFcnJvcjI0IiwiX2l0ZXJhdG9yRXJyb3IyNCIsIl9zdGVwMjQiLCJfaXRlcmF0b3IyNCIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSIsIl9kaWRJdGVyYXRvckVycm9yMjUiLCJfaXRlcmF0b3JFcnJvcjI1IiwiX3N0ZXAyNSIsIl9pdGVyYXRvcjI1IiwiX2ZpbGUyIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2IiwiX2RpZEl0ZXJhdG9yRXJyb3IyNiIsIl9pdGVyYXRvckVycm9yMjYiLCJfc3RlcDI2IiwiX2l0ZXJhdG9yMjYiLCJfZmlsZTMiLCJhbGxGaWxlc0ZpbmlzaGVkIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3IiwiX2RpZEl0ZXJhdG9yRXJyb3IyNyIsIl9pdGVyYXRvckVycm9yMjciLCJfc3RlcDI3IiwiX2l0ZXJhdG9yMjciLCJfZmlsZTQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjgiLCJfZGlkSXRlcmF0b3JFcnJvcjI4IiwiX2l0ZXJhdG9yRXJyb3IyOCIsIl9zdGVwMjgiLCJfaXRlcmF0b3IyOCIsIl9maWxlNSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJnZXRSZXNwb25zZUhlYWRlciIsInNlbmQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkiLCJfZGlkSXRlcmF0b3JFcnJvcjI5IiwiX2l0ZXJhdG9yRXJyb3IyOSIsIl9zdGVwMjkiLCJfaXRlcmF0b3IyOSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCIsIl9kaWRJdGVyYXRvckVycm9yMzAiLCJfaXRlcmF0b3JFcnJvcjMwIiwiX3N0ZXAzMCIsIl9pdGVyYXRvcjMwIiwiRVJST1IiLCJpbml0Q2xhc3MiLCJjYW1lbGl6ZSIsImZvckVsZW1lbnQiLCJhdXRvRGlzY292ZXIiLCJkaXNjb3ZlciIsImRyb3B6b25lcyIsImNoZWNrRWxlbWVudHMiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzEiLCJfZGlkSXRlcmF0b3JFcnJvcjMxIiwiX2l0ZXJhdG9yRXJyb3IzMSIsIl9zdGVwMzEiLCJfaXRlcmF0b3IzMSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMiIsIl9kaWRJdGVyYXRvckVycm9yMzIiLCJfaXRlcmF0b3JFcnJvcjMyIiwiX3N0ZXAzMiIsIl9pdGVyYXRvcjMyIiwiYmxhY2tsaXN0ZWRCcm93c2VycyIsImNhcGFibGVCcm93c2VyIiwiRmlsZSIsIkZpbGVMaXN0IiwiQmxvYiIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMyIsIl9kaWRJdGVyYXRvckVycm9yMzMiLCJfaXRlcmF0b3JFcnJvcjMzIiwiX3N0ZXAzMyIsIl9pdGVyYXRvcjMzIiwiZGF0YVVSSSIsImJ5dGVTdHJpbmciLCJhdG9iIiwibWltZVN0cmluZyIsImFiIiwiQXJyYXlCdWZmZXIiLCJpYSIsIlVpbnQ4QXJyYXkiLCJyZWplY3RlZEl0ZW0iLCJjaGlsZE5vZGVzIiwiZWxzIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjM0IiwiX2RpZEl0ZXJhdG9yRXJyb3IzNCIsIl9pdGVyYXRvckVycm9yMzQiLCJfc3RlcDM0IiwiX2l0ZXJhdG9yMzQiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzUiLCJfZGlkSXRlcmF0b3JFcnJvcjM1IiwiX2l0ZXJhdG9yRXJyb3IzNSIsIl9zdGVwMzUiLCJfaXRlcmF0b3IzNSIsInF1ZXN0aW9uIiwicmVqZWN0ZWQiLCJtaW1lVHlwZSIsImJhc2VNaW1lVHlwZSIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zNiIsIl9kaWRJdGVyYXRvckVycm9yMzYiLCJfaXRlcmF0b3JFcnJvcjM2IiwiX3N0ZXAzNiIsIl9pdGVyYXRvcjM2IiwidmFsaWRUeXBlIiwiQUNDRVBURUQiLCJQUk9DRVNTSU5HIiwic3giLCJzeSIsInNoIiwidmVydFNxdWFzaFJhdGlvIiwiaWgiLCJuYXR1cmFsSGVpZ2h0IiwiZHJhd0ltYWdlIiwiZ2V0SW1hZ2VEYXRhIiwiZXkiLCJweSIsImRldGVjdFZlcnRpY2FsU3F1YXNoIiwiS0VZX1NUUiIsImNocjEiLCJjaHIyIiwiY2hyMyIsImVuYzEiLCJlbmMyIiwiZW5jMyIsImVuYzQiLCJvcmlnRmlsZUJhc2U2NCIsInJlc2l6ZWRGaWxlQmFzZTY0IiwicmF3SW1hZ2UiLCJkZWNvZGU2NCIsInNlZ21lbnRzIiwic2xpY2UyU2VnbWVudHMiLCJleGlmTWFuaXB1bGF0aW9uIiwiZW5jb2RlNjQiLCJleGlmQXJyYXkiLCJnZXRFeGlmQXJyYXkiLCJuZXdJbWFnZUFycmF5IiwiaW5zZXJ0RXhpZiIsInNlZyIsImltYWdlRGF0YSIsImJ1ZiIsInNlcGFyYXRlUG9pbnQiLCJtYWUiLCJhdG8iLCJyYXdJbWFnZUFycmF5IiwiaGVhZCIsImVuZFBvaW50IiwiX2F1dG9EaXNjb3ZlckZ1bmN0aW9uIiwiZG9jIiwicm9vdCIsInJlbSIsInByZSIsImNyZWF0ZUV2ZW50T2JqZWN0IiwiZG9TY3JvbGwiLCJmcmFtZUVsZW1lbnQiLCJwb2xsIiwiY29udGVudExvYWRlZCIsImhvb2tDYWxsYmFjayIsImlzVW5kZWZpbmVkIiwiaXNOdW1iZXIiLCJpc0RhdGUiLCJoYXNPd25Qcm9wIiwiY3JlYXRlVVRDIiwic3RyaWN0IiwiY3JlYXRlTG9jYWxPclVUQyIsInV0YyIsImdldFBhcnNpbmdGbGFncyIsIl9wZiIsInVudXNlZFRva2VucyIsInVudXNlZElucHV0IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJfaXNWYWxpZCIsImZsYWdzIiwicGFyc2VkUGFydHMiLCJpc05vd1ZhbGlkIiwiaW52YWxpZFdlZWtkYXkiLCJfc3RyaWN0IiwiYmlnSG91ciIsImlzRnJvemVuIiwiY3JlYXRlSW52YWxpZCIsIk5hTiIsImZ1biIsIm1vbWVudFByb3BlcnRpZXMiLCJjb3B5Q29uZmlnIiwiX2lzQU1vbWVudE9iamVjdCIsIl90em0iLCJfaXNVVEMiLCJfb2Zmc2V0IiwiX2xvY2FsZSIsInVwZGF0ZUluUHJvZ3Jlc3MiLCJNb21lbnQiLCJ1cGRhdGVPZmZzZXQiLCJpc01vbWVudCIsImFic0Zsb29yIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsImlzRmluaXRlIiwiY29tcGFyZUFycmF5cyIsImFycmF5MSIsImFycmF5MiIsImRvbnRDb252ZXJ0IiwibGVuZ3RoRGlmZiIsImRpZmZzIiwibXNnIiwic3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzIiwiZGVwcmVjYXRlIiwiZmlyc3RUaW1lIiwiZGVwcmVjYXRpb25IYW5kbGVyIiwiZGVwcmVjYXRpb25zIiwiZGVwcmVjYXRlU2ltcGxlIiwibWVyZ2VDb25maWdzIiwicGFyZW50Q29uZmlnIiwiY2hpbGRDb25maWciLCJMb2NhbGUiLCJhbGlhc2VzIiwiYWRkVW5pdEFsaWFzIiwic2hvcnRoYW5kIiwibG93ZXJDYXNlIiwibm9ybWFsaXplVW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJwYWRkZWQiLCJvcmRpbmFsIiwiZnVuYyIsImxvY2FsZURhdGEiLCJmb3JtYXRNb21lbnQiLCJleHBhbmRGb3JtYXQiLCJtb20iLCJtYWtlRm9ybWF0RnVuY3Rpb24iLCJpbnZhbGlkRGF0ZSIsInJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyIsImxvbmdEYXRlRm9ybWF0IiwibGFzdEluZGV4IiwibWF0Y2gxIiwibWF0Y2gyIiwibWF0Y2gzIiwibWF0Y2g0IiwibWF0Y2g2IiwibWF0Y2gxdG8yIiwibWF0Y2gzdG80IiwibWF0Y2g1dG82IiwibWF0Y2gxdG8zIiwibWF0Y2gxdG80IiwibWF0Y2gxdG82IiwibWF0Y2hVbnNpZ25lZCIsIm1hdGNoU2lnbmVkIiwibWF0Y2hPZmZzZXQiLCJtYXRjaFNob3J0T2Zmc2V0IiwibWF0Y2hXb3JkIiwicmVnZXhlcyIsImFkZFJlZ2V4VG9rZW4iLCJzdHJpY3RSZWdleCIsImlzU3RyaWN0IiwiZ2V0UGFyc2VSZWdleEZvclRva2VuIiwicmVnZXhFc2NhcGUiLCJtYXRjaGVkIiwicDEiLCJwMiIsInAzIiwicDQiLCJhZGRQYXJzZVRva2VuIiwiYWRkV2Vla1BhcnNlVG9rZW4iLCJfdyIsImFkZFRpbWVUb0FycmF5RnJvbVRva2VuIiwiX2EiLCJkYXlzSW5ZZWFyIiwiaXNMZWFwWWVhciIsInBhcnNlVHdvRGlnaXRZZWFyIiwiZ2V0U2V0WWVhciIsIm1ha2VHZXRTZXQiLCJrZWVwVGltZSIsInNldCQxIiwibW9kTW9udGgiLCJtb250aHNTaG9ydCIsIm1vbnRocyIsIm1vbnRoc1Nob3J0UmVnZXgiLCJtb250aHNSZWdleCIsIm1vbnRoc1BhcnNlIiwiTU9OVEhTX0lOX0ZPUk1BVCIsImRlZmF1bHRMb2NhbGVNb250aHMiLCJkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQiLCJoYW5kbGVTdHJpY3RQYXJzZSIsIm1vbnRoTmFtZSIsImlpIiwibGxjIiwidG9Mb2NhbGVMb3dlckNhc2UiLCJfbW9udGhzUGFyc2UiLCJfbG9uZ01vbnRoc1BhcnNlIiwiX3Nob3J0TW9udGhzUGFyc2UiLCJkYXlPZk1vbnRoIiwiZ2V0U2V0TW9udGgiLCJkZWZhdWx0TW9udGhzU2hvcnRSZWdleCIsImRlZmF1bHRNb250aHNSZWdleCIsImNvbXB1dGVNb250aHNQYXJzZSIsImNtcExlblJldiIsInNob3J0UGllY2VzIiwibG9uZ1BpZWNlcyIsIm1peGVkUGllY2VzIiwiX21vbnRoc1JlZ2V4IiwiX21vbnRoc1Nob3J0UmVnZXgiLCJfbW9udGhzU3RyaWN0UmVnZXgiLCJfbW9udGhzU2hvcnRTdHJpY3RSZWdleCIsImNyZWF0ZURhdGUiLCJNIiwibXMiLCJzZXRGdWxsWWVhciIsImNyZWF0ZVVUQ0RhdGUiLCJVVEMiLCJnZXRVVENGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwiZmlyc3RXZWVrT2Zmc2V0IiwiZndkIiwiZ2V0VVRDRGF5IiwiZGF5T2ZZZWFyRnJvbVdlZWtzIiwid2VlayIsIndlZWtkYXkiLCJyZXNZZWFyIiwicmVzRGF5T2ZZZWFyIiwiZGF5T2ZZZWFyIiwid2Vla09mWWVhciIsInJlc1dlZWsiLCJ3ZWVrT2Zmc2V0Iiwid2Vla3NJblllYXIiLCJ3ZWVrT2Zmc2V0TmV4dCIsInNoaWZ0V2Vla2RheXMiLCJ3cyIsIndlZWtkYXlzTWluIiwid2Vla2RheXNTaG9ydCIsIndlZWtkYXlzIiwid2Vla2RheXNNaW5SZWdleCIsIndlZWtkYXlzU2hvcnRSZWdleCIsIndlZWtkYXlzUmVnZXgiLCJ3ZWVrZGF5c1BhcnNlIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzIiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQiLCJkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4iLCJoYW5kbGVTdHJpY3RQYXJzZSQxIiwid2Vla2RheU5hbWUiLCJfd2Vla2RheXNQYXJzZSIsIl9zaG9ydFdlZWtkYXlzUGFyc2UiLCJfbWluV2Vla2RheXNQYXJzZSIsImRlZmF1bHRXZWVrZGF5c1JlZ2V4IiwiZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCIsImRlZmF1bHRXZWVrZGF5c01pblJlZ2V4IiwiY29tcHV0ZVdlZWtkYXlzUGFyc2UiLCJtaW5wIiwic2hvcnRwIiwibG9uZ3AiLCJtaW5QaWVjZXMiLCJfd2Vla2RheXNSZWdleCIsIl93ZWVrZGF5c1Nob3J0UmVnZXgiLCJfd2Vla2RheXNNaW5SZWdleCIsIl93ZWVrZGF5c1N0cmljdFJlZ2V4IiwiX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCIsIl93ZWVrZGF5c01pblN0cmljdFJlZ2V4IiwiaEZvcm1hdCIsImhvdXJzIiwibG93ZXJjYXNlIiwibWludXRlcyIsIm1hdGNoTWVyaWRpZW0iLCJfbWVyaWRpZW1QYXJzZSIsInNlY29uZHMiLCJrSW5wdXQiLCJfaXNQbSIsImlzUE0iLCJfbWVyaWRpZW0iLCJwb3MxIiwicG9zMiIsImdsb2JhbExvY2FsZSIsImdldFNldEhvdXIiLCJiYXNlQ29uZmlnIiwiY2FsZW5kYXIiLCJzYW1lRGF5IiwibmV4dERheSIsIm5leHRXZWVrIiwibGFzdERheSIsImxhc3RXZWVrIiwic2FtZUVsc2UiLCJMVFMiLCJMVCIsIkwiLCJMTCIsIkxMTCIsIkxMTEwiLCJkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIiwicmVsYXRpdmVUaW1lIiwiZnV0dXJlIiwicGFzdCIsInNzIiwibW0iLCJoaCIsImRkIiwiTU0iLCJ5eSIsIm1lcmlkaWVtUGFyc2UiLCJsb2NhbGVzIiwibG9jYWxlRmFtaWxpZXMiLCJub3JtYWxpemVMb2NhbGUiLCJsb2FkTG9jYWxlIiwib2xkTG9jYWxlIiwiX2FiYnIiLCJnZXRTZXRHbG9iYWxMb2NhbGUiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsImNob29zZUxvY2FsZSIsImNoZWNrT3ZlcmZsb3ciLCJfb3ZlcmZsb3dEYXlPZlllYXIiLCJfb3ZlcmZsb3dXZWVrcyIsIl9vdmVyZmxvd1dlZWtkYXkiLCJjb25maWdGcm9tQXJyYXkiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJjdXJyZW50RGF0ZUFycmF5Iiwid2Vla1llYXIiLCJ3ZWVrZGF5T3ZlcmZsb3ciLCJHRyIsIkUiLCJjcmVhdGVMb2NhbCIsIl93ZWVrIiwiY3VyV2VlayIsImdnIiwiX2RheU9mWWVhciIsImRheU9mWWVhckZyb21XZWVrSW5mbyIsIl9uZXh0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImFsbG93VGltZSIsInRpbWVGb3JtYXQiLCJ0ekZvcm1hdCIsImNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQiLCJ1bnRydW5jYXRlWWVhciIsInllYXJTdHIiLCJvYnNPZmZzZXRzIiwiVVQiLCJHTVQiLCJFRFQiLCJFU1QiLCJDRFQiLCJDU1QiLCJNRFQiLCJNU1QiLCJQRFQiLCJQU1QiLCJjb25maWdGcm9tUkZDMjgyMiIsIm1vbnRoU3RyIiwiZGF5U3RyIiwiaG91clN0ciIsIm1pbnV0ZVN0ciIsInNlY29uZFN0ciIsInBhcnNlZEFycmF5Iiwid2Vla2RheVN0ciIsInBhcnNlZElucHV0IiwiY2hlY2tXZWVrZGF5Iiwib2JzT2Zmc2V0IiwibWlsaXRhcnlPZmZzZXQiLCJudW1PZmZzZXQiLCJobSIsImNhbGN1bGF0ZU9mZnNldCIsInNraXBwZWQiLCJzdHJpbmdMZW5ndGgiLCJ0b3RhbFBhcnNlZElucHV0TGVuZ3RoIiwiaG91ciIsImlzUG0iLCJtZXJpZGllbUhvdXIiLCJtZXJpZGllbUZpeFdyYXAiLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJ0ZW1wQ29uZmlnIiwiYmVzdE1vbWVudCIsInNjb3JlVG9CZWF0IiwiY3VycmVudFNjb3JlIiwic2NvcmUiLCJjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkiLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsImNvbmZpZ0Zyb21TdHJpbmciLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCIsImNvbmZpZ0Zyb21PYmplY3QiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsImlzT2JqZWN0RW1wdHkiLCJwcm90b3R5cGVNaW4iLCJwcm90b3R5cGVNYXgiLCJwaWNrQnkiLCJtb21lbnRzIiwib3JkZXJpbmciLCJEdXJhdGlvbiIsInF1YXJ0ZXJzIiwicXVhcnRlciIsIndlZWtzIiwiaXNvV2VlayIsImRheXMiLCJtaWxsaXNlY29uZHMiLCJ1bml0SGFzRGVjaW1hbCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfYnViYmxlIiwiaXNEdXJhdGlvbiIsImFic1JvdW5kIiwidXRjT2Zmc2V0Iiwic2lnbiIsIm9mZnNldEZyb21TdHJpbmciLCJjaHVua09mZnNldCIsImNsb25lV2l0aE9mZnNldCIsIm1vZGVsIiwic2V0VGltZSIsImdldERhdGVPZmZzZXQiLCJnZXRUaW1lem9uZU9mZnNldCIsImlzVXRjIiwiYXNwTmV0UmVnZXgiLCJpc29SZWdleCIsImNyZWF0ZUR1cmF0aW9uIiwiZGlmZlJlcyIsInBhcnNlSXNvIiwiaXNCZWZvcmUiLCJwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlIiwiaW5wIiwiaXNBZnRlciIsImNyZWF0ZUFkZGVyIiwiYWRkU3VidHJhY3QiLCJpc0FkZGluZyIsImludmFsaWQiLCJtb250aERpZmYiLCJ3aG9sZU1vbnRoRGlmZiIsIm5ld0xvY2FsZURhdGEiLCJkZWZhdWx0Rm9ybWF0IiwiZGVmYXVsdEZvcm1hdFV0YyIsImxhbmciLCJNU19QRVJfU0VDT05EIiwiTVNfUEVSX01JTlVURSIsIk1TX1BFUl9IT1VSIiwiTVNfUEVSXzQwMF9ZRUFSUyIsIm1vZCQxIiwiZGl2aWRlbmQiLCJkaXZpc29yIiwibG9jYWxTdGFydE9mRGF0ZSIsInV0Y1N0YXJ0T2ZEYXRlIiwiYWRkV2Vla1llYXJGb3JtYXRUb2tlbiIsImdldHRlciIsImdldFNldFdlZWtZZWFySGVscGVyIiwid2Vla3NUYXJnZXQiLCJzZXRXZWVrQWxsIiwiZGF5T2ZZZWFyRGF0YSIsImlzb1dlZWtZZWFyIiwiX2RheU9mTW9udGhPcmRpbmFsUGFyc2UiLCJfb3JkaW5hbFBhcnNlIiwiX2RheU9mTW9udGhPcmRpbmFsUGFyc2VMZW5pZW50IiwiZ2V0U2V0RGF5T2ZNb250aCIsImdldFNldE1pbnV0ZSIsImdldFNldFNlY29uZCIsInBhcnNlTXMiLCJnZXRTZXRNaWxsaXNlY29uZCIsInByZVBhcnNlUG9zdEZvcm1hdCIsImZvcm1hdHMiLCJzb2QiLCJzdGFydE9mIiwiY2FsZW5kYXJGb3JtYXQiLCJhc0Zsb2F0Iiwiem9uZURlbHRhIiwiZW5kT2YiLCJzdGFydE9mRGF0ZSIsImlzb1dlZWtkYXkiLCJpbnB1dFN0cmluZyIsInBvc3Rmb3JtYXQiLCJ3aXRob3V0U3VmZml4IiwiaHVtYW5pemUiLCJmcm9tTm93IiwidG9Ob3ciLCJpbnZhbGlkQXQiLCJsb2NhbElucHV0IiwiaXNCZXR3ZWVuIiwiaW5jbHVzaXZpdHkiLCJsb2NhbEZyb20iLCJsb2NhbFRvIiwiaXNTYW1lIiwiaW5wdXRNcyIsImlzU2FtZU9yQWZ0ZXIiLCJpc1NhbWVPckJlZm9yZSIsInBhcnNpbmdGbGFncyIsInByaW9yaXRpemVkIiwidW5pdHNPYmoiLCJ1IiwiZ2V0UHJpb3JpdGl6ZWRVbml0cyIsInRvRGF0ZSIsInRvSVNPU3RyaW5nIiwia2VlcE9mZnNldCIsImluc3BlY3QiLCJ6b25lIiwiaXNMb2NhbCIsInVuaXgiLCJjcmVhdGlvbkRhdGEiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiaXNEU1RTaGlmdGVkIiwiX2lzRFNUU2hpZnRlZCIsInByb3RvJDEiLCJnZXQkMSIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsIl9jYWxlbmRhciIsIl9sb25nRGF0ZUZvcm1hdCIsImZvcm1hdFVwcGVyIiwiX2ludmFsaWREYXRlIiwiX29yZGluYWwiLCJpc0Z1dHVyZSIsIl9yZWxhdGl2ZVRpbWUiLCJwYXN0RnV0dXJlIiwiaXNGb3JtYXQiLCJfbW9udGhzU2hvcnQiLCJfbW9udGhzUGFyc2VFeGFjdCIsImZpcnN0RGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJfd2Vla2RheXMiLCJfd2Vla2RheXNNaW4iLCJfd2Vla2RheXNTaG9ydCIsIl93ZWVrZGF5c1BhcnNlRXhhY3QiLCJfZnVsbFdlZWtkYXlzUGFyc2UiLCJpc0xvd2VyIiwibGFuZ0RhdGEiLCJtYXRoQWJzIiwiYWRkU3VidHJhY3QkMSIsImFic0NlaWwiLCJkYXlzVG9Nb250aHMiLCJtb250aHNUb0RheXMiLCJtYWtlQXMiLCJhbGlhcyIsImFzIiwiYXNNaWxsaXNlY29uZHMiLCJhc1NlY29uZHMiLCJhc01pbnV0ZXMiLCJhc0hvdXJzIiwiYXNEYXlzIiwiYXNXZWVrcyIsImFzTW9udGhzIiwiYXNRdWFydGVycyIsImFzWWVhcnMiLCJtYWtlR2V0dGVyIiwidGhyZXNob2xkcyIsInN1YnN0aXR1dGVUaW1lQWdvIiwiYWJzJDEiLCJ0b0lTT1N0cmluZyQxIiwiWSIsIkQiLCJ0b3RhbFNpZ24iLCJ5bVNpZ24iLCJkYXlzU2lnbiIsImhtc1NpZ24iLCJwcm90byQyIiwibW9udGhzRnJvbURheXMiLCJ3aXRoU3VmZml4IiwicG9zTmVnRHVyYXRpb24iLCJyZWxhdGl2ZVRpbWUkMSIsInRvSXNvU3RyaW5nIiwidXBkYXRlTG9jYWxlIiwidG1wTG9jYWxlIiwicmVsYXRpdmVUaW1lUm91bmRpbmciLCJyb3VuZGluZ0Z1bmN0aW9uIiwicmVsYXRpdmVUaW1lVGhyZXNob2xkIiwidGhyZXNob2xkIiwibGltaXQiLCJteU1vbWVudCIsIkhUTUw1X0ZNVCIsIkRBVEVUSU1FX0xPQ0FMIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsIkRBVEVUSU1FX0xPQ0FMX01TIiwiREFURSIsIlRJTUUiLCJUSU1FX1NFQ09ORFMiLCJUSU1FX01TIiwiV0VFSyIsIk1PTlRIIiwiaXNNc2llIiwiaXNCbGFua1N0cmluZyIsImVzY2FwZVJlZ0V4Q2hhcnMiLCJpc1N0cmluZyIsImlzRWxlbWVudCIsImlzSlF1ZXJ5IiwidG9TdHIiLCJjb2xsZWN0aW9uIiwibWl4aW4iLCJpZGVudGl0eSIsImdldElkR2VuZXJhdG9yIiwidGVtcGxhdGlmeSIsImRlZmVyIiwiZGVib3VuY2UiLCJ3YWl0IiwiaW1tZWRpYXRlIiwibGF0ZXIiLCJjYWxsTm93IiwidGhyb3R0bGUiLCJyZW1haW5pbmciLCJzdHJpbmdpZnkiLCJXV1ciLCJkZWZhdWx0Q2xhc3NOYW1lcyIsImhpbnQiLCJzdWdnZXN0aW9uIiwic2VsZWN0YWJsZSIsImhpZ2hsaWdodCIsInd3dyIsImJveFNoYWRvdyIsInZlcnRpY2FsQWxpZ24iLCJpbnB1dFdpdGhOb0hpbnQiLCJsdHIiLCJydGwiLCJzZWxlY3RvcnMiLCJidWlsZFNlbGVjdG9ycyIsIkV2ZW50QnVzIiwiZGVwcmVjYXRpb25NYXAiLCIkZWwiLCJyZW5kZXIiLCJjdXJzb3JjaGFuZ2UiLCIkZSIsImRlcHJlY2F0ZWRUeXBlIiwic3BsaXR0ZXIiLCJuZXh0VGljayIsInNldEltbWVkaWF0ZSIsIm9uU3luYyIsIm9uQXN5bmMiLCJzeW5jRmx1c2giLCJhc3luY0ZsdXNoIiwiZ2V0Rmx1c2giLCJzeW5jIiwiYmluZENvbnRleHQiLCJjYW5jZWxsZWQiLCJ3b3Jkc09ubHkiLCJjYXNlU2Vuc2l0aXZlIiwicmVnZXhTdHIiLCJlc2NhcGVkUGF0dGVybnMiLCJnZXRSZWdleCIsInRyYXZlcnNlIiwiaGlnaHRsaWdodFRleHROb2RlIiwiY2hpbGROb2RlIiwidGV4dE5vZGUiLCJwYXR0ZXJuTm9kZSIsIndyYXBwZXJOb2RlIiwic3BsaXRUZXh0IiwiY2xvbmVOb2RlIiwicmVwbGFjZUNoaWxkIiwiSW5wdXQiLCJzcGVjaWFsS2V5Q29kZU1hcCIsIiRoaW50IiwicXVlcnlXaGVuRm9jdXNlZCIsIiRvdmVyZmxvd0hlbHBlciIsIndoaXRlU3BhY2UiLCJmb250RmFtaWx5IiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJmb250V2VpZ2h0Iiwid29yZFNwYWNpbmciLCJsZXR0ZXJTcGFjaW5nIiwidGV4dEluZGVudCIsInRleHRSZW5kZXJpbmciLCJ0ZXh0VHJhbnNmb3JtIiwiX2NoZWNrTGFuZ3VhZ2VEaXJlY3Rpb24iLCJzZXRIaW50IiwiZ2V0SGludCIsImNsZWFySGludCIsImNsZWFySGludElmSW52YWxpZCIsIjkiLCIyNyIsIjM3IiwiMzkiLCIxMyIsIjM4IiwiNDAiLCJub3JtYWxpemVRdWVyeSIsIl9vbkJsdXIiLCJyZXNldElucHV0VmFsdWUiLCJfb25Gb2N1cyIsIl9vbktleWRvd24iLCJrZXlOYW1lIiwiX21hbmFnZVByZXZlbnREZWZhdWx0IiwiX3Nob3VsZFRyaWdnZXIiLCJfb25JbnB1dCIsIl9zZXRRdWVyeSIsImdldElucHV0VmFsdWUiLCJ3aXRoTW9kaWZpZXIiLCJhcmVFcXVpdmFsZW50IiwiaGFzRGlmZmVyZW50V2hpdGVzcGFjZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJvbktleWRvd24iLCJvbklucHV0IiwiZ2V0TGFuZ0RpciIsImdldFF1ZXJ5Iiwic2V0UXVlcnkiLCJzZXRJbnB1dFZhbHVlIiwiaGFzUXVlcnlDaGFuZ2VkU2luY2VMYXN0Rm9jdXMiLCJ2YWxJc1ByZWZpeE9mSGludCIsImhhc092ZXJmbG93IiwiY29uc3RyYWludCIsImlzQ3Vyc29yQXRFbmQiLCJ2YWx1ZUxlbmd0aCIsInNlbGVjdGlvblN0YXJ0IiwibW92ZVN0YXJ0IiwiRGF0YXNldCIsIm5hbWVHZW5lcmF0b3IiLCJ0ZW1wbGF0ZXMiLCJkaXNwbGF5Rm4iLCJub3RGb3VuZCIsImRpc3BsYXlLZXkiLCJfX3R0QWRhcHRlciIsIl9yZXNldExhc3RTdWdnZXN0aW9uIiwiZXh0cmFjdERhdGEiLCJfb3ZlcndyaXRlIiwic3VnZ2VzdGlvbnMiLCJfcmVuZGVyU3VnZ2VzdGlvbnMiLCJfcmVuZGVyUGVuZGluZyIsIl9yZW5kZXJOb3RGb3VuZCIsIl9lbXB0eSIsIl9hcHBlbmQiLCIkbGFzdFN1Z2dlc3Rpb24iLCJfYXBwZW5kU3VnZ2VzdGlvbnMiLCIkZnJhZ21lbnQiLCJfZ2V0U3VnZ2VzdGlvbnNGcmFnbWVudCIsIl9nZXRIZWFkZXIiLCJfZ2V0Rm9vdGVyIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX2luamVjdFF1ZXJ5IiwiX3F1ZXJ5Iiwic3luY0NhbGxlZCIsInJlbmRlcmVkIiwiaXNFbXB0eSIsIk1lbnUiLCIkbm9kZSIsImRhdGFzZXRzIiwib0RhdGFzZXQiLCJfb25TZWxlY3RhYmxlQ2xpY2siLCJfb25SZW5kZXJlZCIsIl9hbGxEYXRhc2V0c0VtcHR5IiwiX29uQ2xlYXJlZCIsIl9nZXRTZWxlY3RhYmxlcyIsIl9yZW1vdmVDdXJzb3IiLCIkc2VsZWN0YWJsZSIsImdldEFjdGl2ZVNlbGVjdGFibGUiLCJfZW5zdXJlVmlzaWJsZSIsImVsVG9wIiwiZWxCb3R0b20iLCJub2RlU2Nyb2xsVG9wIiwibm9kZUhlaWdodCIsIm9uU2VsZWN0YWJsZUNsaWNrIiwic2V0TGFuZ3VhZ2VEaXJlY3Rpb24iLCJzZWxlY3RhYmxlUmVsYXRpdmVUb0N1cnNvciIsIiRzZWxlY3RhYmxlcyIsIiRvbGRDdXJzb3IiLCJzZXRDdXJzb3IiLCJnZXRTZWxlY3RhYmxlRGF0YSIsImdldFRvcFNlbGVjdGFibGUiLCJpc1ZhbGlkVXBkYXRlIiwiRGVmYXVsdE1lbnUiLCJUeXBlYWhlYWQiLCJvbkZvY3VzZWQiLCJvbkJsdXJyZWQiLCJvbkVudGVyS2V5ZWQiLCJvblRhYktleWVkIiwib25Fc2NLZXllZCIsIm9uVXBLZXllZCIsIm9uRG93bktleWVkIiwib25MZWZ0S2V5ZWQiLCJvblJpZ2h0S2V5ZWQiLCJvblF1ZXJ5Q2hhbmdlZCIsIm9uV2hpdGVzcGFjZUNoYW5nZWQiLCJldmVudEJ1cyIsIl9oYWNrcyIsIl9vblNlbGVjdGFibGVDbGlja2VkIiwiX29uQXN5bmNSZXF1ZXN0ZWQiLCJfb25Bc3luY0NhbmNlbGVkIiwiX29uQXN5bmNSZWNlaXZlZCIsIl9vbkRhdGFzZXRSZW5kZXJlZCIsIl9vbkRhdGFzZXRDbGVhcmVkIiwiX29uTGFuZ0RpckNoYW5nZWQiLCIkbWVudSIsImhhc0FjdGl2ZSIsIl91cGRhdGVIaW50IiwiX29uRm9jdXNlZCIsIl9taW5MZW5ndGhNZXQiLCJfb25CbHVycmVkIiwiX29uRW50ZXJLZXllZCIsIl9vblRhYktleWVkIiwiX29uRXNjS2V5ZWQiLCJfb25VcEtleWVkIiwibW92ZUN1cnNvciIsIl9vbkRvd25LZXllZCIsIl9vbkxlZnRLZXllZCIsIl9vblJpZ2h0S2V5ZWQiLCJfb25RdWVyeUNoYW5nZWQiLCJfb25XaGl0ZXNwYWNlQ2hhbmdlZCIsIl9vcGVuSWZBY3RpdmUiLCJlc2NhcGVkUXVlcnkiLCJpc0VuYWJsZWQiLCJzZXRWYWwiLCJnZXRWYWwiLCIkY2FuZGlkYXRlIiwicGF5bG9hZCIsIm9sZCIsInR0RWFjaCIsIiRlbHMiLCJ0eXBlYWhlYWQiLCJidWlsZEhpbnRGcm9tSW5wdXQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRDbGlwIiwiYmFja2dyb3VuZE9yaWdpbiIsImJhY2tncm91bmRQb3NpdGlvbiIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kU2l6ZSIsInNwZWxsY2hlY2siLCJwcmVwSW5wdXQiLCJhdHRycyIsIiRlbE9yTnVsbCIsImluaXRpYWxpemUiLCIkd3JhcHBlciIsImRlZmF1bHRIaW50IiwiZGVmYXVsdE1lbnUiLCJNZW51Q29uc3RydWN0b3IiLCJub0NvbmZsaWN0IiwiYTAiLCJUb2tlbmZpZWxkIiwiX3NlbGYiLCJ0ZXh0RGlyZWN0aW9uIiwiX2RlbGltaXRlcnMiLCJkZWxpbWl0ZXIiLCJfdHJpZ2dlcktleXMiLCJfZmlyc3REZWxpbWl0ZXIiLCJ3aGl0ZXNwYWNlIiwiZGFzaCIsInNwZWNpYWxDaGFyYWN0ZXJzIiwiY2hhciIsImVsQ1NTV2lkdGgiLCJlbFJ1bGVzIiwiZ2V0TWF0Y2hlZENTU1J1bGVzIiwiZWxTdHlsZVdpZHRoIiwiZWxXaWR0aCIsInJ1bGUiLCJoaWRpbmdQb3NpdGlvbiIsIm9yaWdpbmFsU3R5bGVzIiwiJGxhYmVsIiwiJGNvcHlIZWxwZXIiLCJyZWFkb25seSIsIiRtaXJyb3IiLCJzZXRUb2tlbnMiLCJsaXN0ZW4iLCJhdXRvY29tcGxldGVPcHRpb25zIiwic2hvd0F1dG9jb21wbGV0ZU9uRm9jdXMiLCJ0eXBlYWhlYWRPcHRpb25zIiwiY3JlYXRlVG9rZW4iLCJ0cmlnZ2VyQ2hhbmdlIiwiZ2V0VG9rZW5zIiwiJHRva2VuIiwiJHRva2VuTGFiZWwiLCIkY2xvc2VCdXR0b24iLCJtYXhUb2tlbldpZHRoIiwiX2Rpc2FibGVkIiwiX3JlYWRvbmx5IiwicHJldmVudERlYWN0aXZhdGlvbiIsImFsbG93RWRpdGluZyIsImVkaXQiLCJyZWxhdGVkVGFyZ2V0IiwiZ2V0VG9rZW5zTGlzdCIsImluaXRpYXRvciIsImdldFRva2VuRGF0YSIsImJlYXV0aWZ5IiwiZ2V0SW5wdXQiLCJmb2N1c0lucHV0IiwiJF9tZW51RWxlbWVudCIsInVuZWRpdCIsImRhdHVtIiwibGFzdElucHV0VmFsdWUiLCJsZWZ0UmlnaHQiLCJ1cERvd24iLCJhY3RpdmF0ZUFsbCIsImNyZWF0ZVRva2Vuc0Zyb21JbnB1dCIsImxhc3RLZXlEb3duIiwicHJldmVudElucHV0Rm9jdXMiLCJvcHBvc2l0ZSIsImZpcnN0QWN0aXZlVG9rZW4iLCJsYXN0S2V5UHJlc3NDb2RlIiwibGFzdEtleVByZXNzQ2hhckNvZGUiLCIkcHJldlRva2VuIiwibGFzdEtleVVwIiwiJGZpcnN0QWN0aXZlVG9rZW4iLCJwcmV2ZW50Q3JlYXRlVG9rZW5zIiwiY3JlYXRlVG9rZW5zT25CbHVyIiwidG9rZW5zQmVmb3JlIiwiJG5leHRUb2tlbiIsIiRsYXN0QWN0aXZlVG9rZW4iLCJyZW1lbWJlciIsImVkaXRFdmVudCIsInRva2VuV2lkdGgiLCIkX2lucHV0IiwiZmlyc3RUb2tlbiIsInJlbW92ZUV2ZW50IiwicmVtb3ZlZEV2ZW50IiwiY2hhbmdlRXZlbnQiLCJpbnB1dFBhZGRpbmciLCJtaXJyb3JXaWR0aCIsInNldFByb3BlcnR5Iiwid3JpdGVhYmxlIiwicGFyYW0iLCJtb21lbnQiLCJkYXRlVGltZVBpY2tlciIsInZpZXdEYXRlIiwidXNlMjRIb3VycyIsImFjdHVhbEZvcm1hdCIsInBhcnNlRm9ybWF0cyIsImN1cnJlbnRWaWV3TW9kZSIsImVEYXRhIiwiZGF0YU9wdGlvbnMiLCJ1bnNldCIsIm1pblZpZXdNb2RlTnVtYmVyIiwiZGF0ZVBpY2tlck1vZGVzIiwiY2xzTmFtZSIsIm5hdkZuYyIsIm5hdlN0ZXAiLCJ2aWV3TW9kZXMiLCJ2ZXJ0aWNhbE1vZGVzIiwiaG9yaXpvbnRhbE1vZGVzIiwidG9vbGJhclBsYWNlbWVudHMiLCJrZXlNYXAiLCIzMyIsIjM0IiwiMzIiLCI4NCIsIjQ2Iiwia2V5U3RhdGUiLCJoYXNUaW1lWm9uZSIsInR6IiwidGltZVpvbmUiLCJnZXRNb21lbnQiLCJyZXR1cm5Nb21lbnQiLCJ1c2VTdHJpY3QiLCJncmFudWxhcml0eSIsImhhc1RpbWUiLCJoYXNEYXRlIiwicGxhY2UiLCJ3aWRnZXRQb3NpdGlvbmluZyIsIndpZGdldFBhcmVudCIsIm5vdGlmeUV2ZW50Iiwib2xkRGF0ZSIsInZpZXdVcGRhdGUiLCJzaG93TW9kZSIsInRhcmdldE1vbWVudCIsImRpc2FibGVkRGF0ZXMiLCJ0ZXN0RGF0ZSIsImVuYWJsZWREYXRlcyIsImlzSW5FbmFibGVkRGF0ZXMiLCJkYXlzT2ZXZWVrRGlzYWJsZWQiLCJkaXNhYmxlZEhvdXJzIiwiaXNJbkRpc2FibGVkSG91cnMiLCJlbmFibGVkSG91cnMiLCJpc0luRW5hYmxlZEhvdXJzIiwiZGlzYWJsZWRUaW1lSW50ZXJ2YWxzIiwiZm91bmQiLCJmaWxsRGF0ZSIsImRheXNWaWV3IiwiZGF5c1ZpZXdIZWFkZXIiLCJjbHNOYW1lcyIsInByZXZNb250aCIsIm5leHRNb250aCIsImRheVZpZXdIZWFkZXJGb3JtYXQiLCJjYWxlbmRhcldlZWtzIiwibW9udGhzVmlldyIsIm1vbnRoc1ZpZXdIZWFkZXIiLCJwcmV2WWVhciIsIm5leHRZZWFyIiwieWVhcnNWaWV3IiwieWVhcnNWaWV3SGVhZGVyIiwic3RhcnRZZWFyIiwicHJldkRlY2FkZSIsInNlbGVjdERlY2FkZSIsIm5leHREZWNhZGUiLCJ1cGRhdGVZZWFycyIsImVuZERlY2FkZVllYXIiLCJkZWNhZGVzVmlldyIsImRlY2FkZXNWaWV3SGVhZGVyIiwic3RhcnREZWNhZGUiLCJlbmREZWNhZGUiLCJzdGFydGVkQXQiLCJtaW5EYXRlRGVjYWRlIiwibWF4RGF0ZURlY2FkZSIsInByZXZDZW50dXJ5IiwibmV4dENlbnR1cnkiLCJ1cGRhdGVEZWNhZGVzIiwidGltZUNvbXBvbmVudHMiLCJjdXJyZW50SG91ciIsImZpbGxIb3VycyIsImN1cnJlbnRNaW51dGUiLCJzdGVwcGluZyIsImZpbGxNaW51dGVzIiwiY3VycmVudFNlY29uZCIsImZpbGxTZWNvbmRzIiwiZmlsbFRpbWUiLCJzZXRWYWx1ZSIsImtlZXBJbnZhbGlkIiwidHJhbnNpdGlvbmluZyIsImNvbGxhcHNlRGF0YSIsInBhcnNlSW5wdXREYXRlIiwiaW5wdXREYXRlIiwiYWN0aW9ucyIsInBpY2tlclN3aXRjaCIsImtlZXBPcGVuIiwiaW5jcmVtZW50SG91cnMiLCJpbmNyZW1lbnRNaW51dGVzIiwiaW5jcmVtZW50U2Vjb25kcyIsImRlY3JlbWVudEhvdXJzIiwiZGVjcmVtZW50TWludXRlcyIsImRlY3JlbWVudFNlY29uZHMiLCJ0b2dnbGVQZXJpb2QiLCJ0b2dnbGVQaWNrZXIiLCIkcGFyZW50IiwiY2xvc2VkIiwic2hvd1BpY2tlciIsInNob3dIb3VycyIsInNob3dNaW51dGVzIiwic2hvd1NlY29uZHMiLCJzZWxlY3RIb3VyIiwic2VsZWN0TWludXRlIiwic2VsZWN0U2Vjb25kIiwidG9kYXlzRGF0ZSIsImRvQWN0aW9uIiwiY3VycmVudE1vbWVudCIsInRvcFJvdyIsIm1pZGRsZVJvdyIsImJvdHRvbVJvdyIsImhvdXJzVmlldyIsIm1pbnV0ZXNWaWV3Iiwic2Vjb25kc1ZpZXciLCJoZWFkVGVtcGxhdGUiLCJjb250VGVtcGxhdGUiLCJkYXRlVmlldyIsInRpbWVWaWV3IiwiaWdub3JlUmVhZG9ubHkiLCJ1c2VDdXJyZW50IiwiaW5jcmVtZW50SG91ciIsInBpY2tIb3VyIiwiZGVjcmVtZW50SG91ciIsImluY3JlbWVudE1pbnV0ZSIsInBpY2tNaW51dGUiLCJkZWNyZW1lbnRNaW51dGUiLCJpbmNyZW1lbnRTZWNvbmQiLCJwaWNrU2Vjb25kIiwiZGVjcmVtZW50U2Vjb25kIiwic2hvd1RvZGF5QnV0dG9uIiwic2VsZWN0VGltZSIsInNob3dDbGVhciIsInNob3dDbG9zZSIsInRvb2xiYXJQbGFjZW1lbnQiLCJmaWxsRG93Iiwic3BhbnMiLCJmaWxsTW9udGhzIiwiZm9jdXNPblNob3ciLCJpbmRleDIiLCJrZXlCaW5kS2V5cyIsImFsbE1vZGlmaWVyc1ByZXNzZWQiLCJwcmVzc2VkS2V5cyIsInByZXNzZWRNb2RpZmllcnMiLCJjdXJyZW50S2V5Iiwia2V5QmluZHMiLCJwYXJzZWREYXRlIiwiaW5kZXhHaXZlbkRhdGVzIiwiZ2l2ZW5EYXRlc0FycmF5IiwiZ2l2ZW5EYXRlc0luZGV4ZWQiLCJkRGF0ZSIsImluZGV4R2l2ZW5Ib3VycyIsImdpdmVuSG91cnNBcnJheSIsImdpdmVuSG91cnNJbmRleGVkIiwiaW5pdEZvcm1hdHRpbmciLCJmb3JtYXRJbnB1dCIsImZvcm1hdElucHV0MiIsImV4dHJhRm9ybWF0cyIsImFsbG93SW5wdXRUb2dnbGUiLCJuZXdGb3JtYXQiLCJuZXdab25lIiwicHJldmlvdXNWYWx1ZSIsInRyaWVzIiwidXNlQ3VycmVudE9wdGlvbnMiLCJ2aWV3TW9kZSIsImRlYnVnIiwiZGF0ZXBpY2tlcklucHV0IiwiZGF0ZU9wdGlvbnMiLCJhdHRyaWJ1dGVOYW1lIiwiaXNJbnN0YW5jZSIsInRoaXNNZXRob2RzIiwiX29wdGlvbnMiLCJxdWVyeU1ldGhvZCIsImxhc3Rfc2VhcmNoX3F1ZXJ5IiwiaGlkZUJ5IiwiZGlhY3JpdGljc01hcCIsInNlYXJjaFNlbGVjdG9yTW9kZSIsInNlYXJjaF90YWciLCJfYXBwbHlDU1MiLCJkaWRTZWFyY2giLCJfb25TZWFyY2giLCJfcHJvY2Vzc0V2ZW50TGlzdGVuZXJzIiwiX2FkZFN0eWxlVGFnIiwiX3NldEpldHMiLCJldmVudF90eXBlIiwic2VhcmNoX3BocmFzZSIsInJlcGxhY2VEaWFjcml0aWNzIiwid29yZHMiLCJpc19zdHJpY3Rfc2VsZWN0b3IiLCJjb250ZW50X3BhcmFtIiwiaW52ZXJ0IiwiaGlkZV9ydWxlcyIsIkJvb2xlYW4iLCJhZGRJbXBvcnRhbnQiLCJjc3NfcnVsZSIsInN0eWxlVGFnIiwiX2dldFRleHQiLCJfZ2V0Q29udGVudFRhZ3MiLCJjb250ZW50X3RhZyIsInRhZ3MiLCJkaWFjcml0aWNzIiwibGV0dGVyIiwicmVtb3ZlQXR0cmlidXRlIiwibmF0aXYiLCJFbGVtZW50IiwiZGVmaW5pdGlvbiIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVzIiwicnN1Ym1pdHRhYmxlIiwicmNoZWNrYWJsZVR5cGUiLCJzZXJpYWxpemVKU09OIiwic2V0dXBPcHRzIiwidHlwZUZ1bmN0aW9ucyIsImRlZmF1bHRUeXBlcyIsImN1c3RvbVR5cGVzIiwic2VyaWFsaXplZEFycmF5Iiwic2VyaWFsaXplQXJyYXkiLCJzZXJpYWxpemVkT2JqZWN0IiwibmFtZVNhbnNUeXBlIiwiZGlzYWJsZUNvbG9uVHlwZXMiLCJzcGxpdFR5cGUiLCJkZWZhdWx0VHlwZSIsInR5cGVkVmFsdWUiLCJhcHBseVR5cGVGdW5jIiwic2hvdWxkU2tpcEZhbHN5Iiwic3BsaXRJbnB1dE5hbWVJbnRvS2V5c0FycmF5IiwiZGVlcFNldCIsImRlZmF1bHRCYXNlT3B0aW9ucyIsImNoZWNrYm94VW5jaGVja2VkVmFsdWUiLCJ1c2VJbnRLZXlzQXNBcnJheUluZGV4Iiwic2tpcEZhbHN5VmFsdWVzRm9yVHlwZXMiLCJza2lwRmFsc3lWYWx1ZXNGb3JGaWVsZHMiLCJ2YWxpZE9wdHMiLCJvcHQiLCJnZXRDaGVja2JveFVuY2hlY2tlZFZhbHVlIiwidmFsU3RyIiwidHlwZUZ1bmMiLCJvYmplY3RLZXlzIiwic2tpcEZyb21EYXRhQXR0ciIsIm9wdEZvckZpZWxkcyIsIm9wdEZvclR5cGVzIiwibmFtZVdpdGhOb1R5cGUiLCJuZXh0S2V5IiwidGFpbEtleXMiLCJsYXN0SWR4IiwiZGVlcEdldCIsImlzVmFsaWRBcnJheUluZGV4Iiwid2Vla2RheXNQYXJzZUV4YWN0Iiwic3ltYm9sTWFwIiwicGx1cmFsRm9ybSIsInBsdXJhbHMiLCJwbHVyYWxpemUiLCJudW1iZXJNYXAiLCJzdWZmaXhlcyIsIjEiLCI1IiwiOCIsIjcwIiwiODAiLCIyIiwiNyIsIjIwIiwiNTAiLCIzIiwiNCIsIjEwMCIsIjYiLCIxMCIsIjMwIiwiNjAiLCI5MCIsInJlbGF0aXZlVGltZVdpdGhQbHVyYWwiLCJmb3JtcyIsInN0YW5kYWxvbmUiLCJsYXN0RGlnaXQiLCJsYXN0MkRpZ2l0cyIsInJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbiIsIm11dGF0aW9uVGFibGUiLCJzb2Z0TXV0YXRpb24iLCJtdXRhdGlvbiIsImxhc3ROdW1iZXIiLCJtb250aHNQYXJzZUV4YWN0IiwibGwiLCJsbGwiLCJsbGxsIiwicGx1cmFsIiwibW9udGhzU3RyaWN0UmVnZXgiLCJtb250aHNTaG9ydFN0cmljdFJlZ2V4IiwibG9uZ01vbnRoc1BhcnNlIiwic2hvcnRNb250aHNQYXJzZSIsInByb2Nlc3NSZWxhdGl2ZVRpbWUiLCJtb250aHNOb21pbmF0aXZlRWwiLCJtb250aHNHZW5pdGl2ZUVsIiwibW9tZW50VG9Gb3JtYXQiLCJfbW9udGhzR2VuaXRpdmVFbCIsIl9tb250aHNOb21pbmF0aXZlRWwiLCJjYWxlbmRhckVsIiwiX2NhbGVuZGFyRWwiLCJtb250aHNTaG9ydERvdCIsIm51bWJlcnNQYXN0IiwibnVtYmVyc0Z1dHVyZSIsInZlcmJhbE51bWJlciIsIm1vbnRoc1Nob3J0V2l0aERvdHMiLCJtb250aHNTaG9ydFdpdGhvdXREb3RzIiwid2Vla0VuZGluZ3MiLCIwIiwiaXNVcHBlciIsImVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlciIsInRyYW5zbGF0ZVNpbmd1bGFyIiwic3BlY2lhbCIsInJlbGF0aXZlVGltZVdpdGhTaW5ndWxhciIsInRyYW5zbGF0b3IiLCJjb3JyZWN0R3JhbW1hdGljYWxDYXNlIiwid29yZEtleSIsInJlbGF0aXZlVGltZU1yIiwibW9udGhzTm9taW5hdGl2ZSIsIm1vbnRoc1N1YmplY3RpdmUiLCIxMiIsIm51bWJlcnNOb3VucyIsIm51bWJlck5vdW4iLCJodW5kcmVkIiwidGVuIiwid29yZCIsIm51bWJlckFzTm91biIsInByb2Nlc3NIb3Vyc0Z1bmN0aW9uIiwid2VicGFja0NvbnRleHQiLCJ3ZWJwYWNrQ29udGV4dFJlc29sdmUiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY29kZSIsImVsTWF0Y2hlcyIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwicXVlcnlDaGlsZHJlbiIsImNscyIsInNjcm9sbGluZ0NsYXNzVGltZW91dCIsImFkZFNjcm9sbGluZ0NsYXNzIiwicmVtb3ZlU2Nyb2xsaW5nQ2xhc3MiLCJpc0FsaXZlIiwic2Nyb2xsaW5nVGhyZXNob2xkIiwiRXZlbnRFbGVtZW50IiwicHJvdG90eXBlQWNjZXNzb3JzIiwidGhpcyQxIiwidW5iaW5kQWxsIiwiRXZlbnRNYW5hZ2VyIiwiZXZlbnRFbGVtZW50cyIsImluaXRDdXN0b21FdmVudCIsInByb2Nlc3NTY3JvbGxEaWZmIiwidXNlU2Nyb2xsaW5nQ2xhc3MiLCJmb3JjZUZpcmVSZWFjaEV2ZW50IiwiY29udGVudEhlaWdodCIsImNvbnRhaW5lckhlaWdodCIsInJlYWNoIiwic2V0U2Nyb2xsaW5nQ2xhc3NJbnN0YW50bHkiLCJwcm9jZXNzU2Nyb2xsRGlmZiQxIiwiZXZlbnRFbGVtZW50IiwiZWUiLCJvbmNlSGFuZGxlciIsImVudiIsImlzV2ViS2l0Iiwic3VwcG9ydHNUb3VjaCIsIm1heFRvdWNoUG9pbnRzIiwiRG9jdW1lbnRUb3VjaCIsInN1cHBvcnRzSWVQb2ludGVyIiwibXNNYXhUb3VjaFBvaW50cyIsImlzQ2hyb21lIiwidXBkYXRlR2VvbWV0cnkiLCJyb3VuZGVkU2Nyb2xsVG9wIiwicmVjdCIsImNvbnRhaW5lcldpZHRoIiwiY29udGVudFdpZHRoIiwic2Nyb2xsYmFyWFJhaWwiLCJzY3JvbGxiYXJZUmFpbCIsInN1cHByZXNzU2Nyb2xsWCIsInNjcm9sbFhNYXJnaW5PZmZzZXQiLCJzY3JvbGxiYXJYQWN0aXZlIiwicmFpbFhXaWR0aCIsInJhaWxYTWFyZ2luV2lkdGgiLCJyYWlsWFJhdGlvIiwic2Nyb2xsYmFyWFdpZHRoIiwiZ2V0VGh1bWJTaXplIiwic2Nyb2xsYmFyWExlZnQiLCJuZWdhdGl2ZVNjcm9sbEFkanVzdG1lbnQiLCJzdXBwcmVzc1Njcm9sbFkiLCJzY3JvbGxZTWFyZ2luT2Zmc2V0Iiwic2Nyb2xsYmFyWUFjdGl2ZSIsInJhaWxZSGVpZ2h0IiwicmFpbFlNYXJnaW5IZWlnaHQiLCJyYWlsWVJhdGlvIiwic2Nyb2xsYmFyWUhlaWdodCIsInNjcm9sbGJhcllUb3AiLCJ4UmFpbE9mZnNldCIsImlzUnRsIiwiaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20iLCJzY3JvbGxiYXJYQm90dG9tIiwic2Nyb2xsYmFyWFRvcCIsInlSYWlsT2Zmc2V0IiwiaXNTY3JvbGxiYXJZVXNpbmdSaWdodCIsInNjcm9sbGJhcllSaWdodCIsInNjcm9sbGJhcllPdXRlcldpZHRoIiwic2Nyb2xsYmFyWUxlZnQiLCJzY3JvbGxiYXJYIiwicmFpbEJvcmRlclhXaWR0aCIsInNjcm9sbGJhclkiLCJyYWlsQm9yZGVyWVdpZHRoIiwidXBkYXRlQ3NzIiwidGh1bWJTaXplIiwibWluU2Nyb2xsYmFyTGVuZ3RoIiwibWF4U2Nyb2xsYmFyTGVuZ3RoIiwiYmluZE1vdXNlU2Nyb2xsSGFuZGxlciIsInN0YXJ0aW5nU2Nyb2xsVG9wIiwic3RhcnRpbmdNb3VzZVBhZ2VZIiwic2Nyb2xsQnkiLCJtb3VzZU1vdmVIYW5kbGVyIiwidG91Y2hlcyIsIm1vdXNlVXBIYW5kbGVyIiwiYmluZE1vdmVzIiwidG91Y2hNb2RlIiwiZGVmYXVsdFByZXZlbnRlZCIsImNvbnRlbnREb2N1bWVudCIsInNoYWRvd1Jvb3QiLCJkZWx0YVgiLCJkZWx0YVkiLCJ3aGVlbFByb3BhZ2F0aW9uIiwic2hvdWxkUHJldmVudERlZmF1bHQiLCJ3aGVlbCIsIm1vdXNld2hlZWxIYW5kbGVyIiwid2hlZWxEZWx0YVgiLCJ3aGVlbERlbHRhWSIsImRlbHRhTW9kZSIsIndoZWVsRGVsdGEiLCJnZXREZWx0YUZyb21FdmVudCIsIm1heFNjcm9sbFRvcCIsIm1heFNjcm9sbExlZnQiLCJzaG91bGRCZUNvbnN1bWVkQnlDaGlsZCIsInNob3VsZFByZXZlbnQiLCJ1c2VCb3RoV2hlZWxBeGVzIiwid2hlZWxTcGVlZCIsImlzVG9wIiwiaXNCb3R0b20iLCJpc0xlZnQiLCJpc1JpZ2h0Iiwib253aGVlbCIsIm9ubW91c2V3aGVlbCIsInRvdWNoIiwic3RhcnRPZmZzZXQiLCJzdGFydFRpbWUiLCJlYXNpbmdMb29wIiwidG91Y2hTdGFydCIsInRvdWNoTW92ZSIsInRvdWNoRW5kIiwiUG9pbnRlckV2ZW50IiwiTVNQb2ludGVyRXZlbnQiLCJhcHBseVRvdWNoTW92ZSIsImRpZmZlcmVuY2VYIiwiZGlmZmVyZW5jZVkiLCJnZXRUb3VjaCIsInRhcmdldFRvdWNoZXMiLCJzaG91bGRIYW5kbGUiLCJwb2ludGVyVHlwZSIsIk1TUE9JTlRFUl9UWVBFX01PVVNFIiwiY3VycmVudE9mZnNldCIsImN1cnJlbnRUaW1lIiwidGltZUdhcCIsIm1hZ25pdHVkZVgiLCJtYWduaXR1ZGVZIiwic3dpcGVFYXNpbmciLCJpc0luaXRpYWxpemVkIiwidXNlclNldHRpbmdzIiwib3JpZ2luYWxTY3JvbGxMZWZ0IiwiaXNOZWdhdGl2ZVNjcm9sbCIsInJhaWxYU3R5bGUiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicmFpbFlTdHlsZSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiaGFuZGxlck5hbWUiLCJsYXN0U2Nyb2xsVG9wIiwibGFzdFNjcm9sbExlZnQiLCJvblNjcm9sbCIsInJlbW92ZVBzQ2xhc3NlcyIsInRvU3RyaW5nVGFnIiwidHJhbnNDaG9pY2UiLCJsYWJlbE1pbiIsImxhYmVsTWF4IiwibGFiZWxOYW4iLCJQcm9taXNlIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjb21tb25BbmNlc3RvckNvbnRhaW5lciIsImZpcnN0RWxlbWVudENoaWxkIiwic2Nyb2xsaW5nRWxlbWVudCIsInBhcmVudEVsZW1lbnQiLCJhcmVhIiwiSSIsIk4iLCJmaW5kSW5kZXgiLCJmdW5jdGlvbiIsInBvcHBlciIsImV2ZW50c0VuYWJsZWQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInNjaGVkdWxlVXBkYXRlIiwidXBkYXRlQm91bmQiLCJzY3JvbGxQYXJlbnRzIiwic2Nyb2xsRWxlbWVudCIsIlEiLCJyZXZlcnNlIiwiWCIsInBsYWNlbWVudCIsInBvc2l0aW9uRml4ZWQiLCJyZW1vdmVPbkRlc3Ryb3kiLCJvbkNyZWF0ZSIsIm9uVXBkYXRlIiwibW9kaWZpZXJzIiwicHJldmVudE92ZXJmbG93IiwiYm91bmRhcmllc0VsZW1lbnQiLCJib3VuZGFyaWVzIiwiZXNjYXBlV2l0aFJlZmVyZW5jZSIsImtlZXBUb2dldGhlciIsImFycm93IiwiYXJyb3dFbGVtZW50IiwiZmxpcHBlZCIsIm9yaWdpbmFsUGxhY2VtZW50IiwiYmVoYXZpb3IiLCJmbGlwVmFyaWF0aW9ucyIsImlubmVyIiwiY29tcHV0ZVN0eWxlIiwiZ3B1QWNjZWxlcmF0aW9uIiwid2lsbENoYW5nZSIsImFycm93U3R5bGVzIiwiYXBwbHlTdHlsZSIsIm9uTG9hZCIsIkoiLCJaIiwiaXNEZXN0cm95ZWQiLCJpc0NyZWF0ZWQiLCJkaXNhYmxlRXZlbnRMaXN0ZW5lcnMiLCJwYXNzaXZlIiwiSCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIkRlZmF1bHRzIiwiZW5hYmxlRXZlbnRMaXN0ZW5lcnMiLCJVdGlscyIsIlBvcHBlclV0aWxzIiwicGxhY2VtZW50cyIsIk5FR0FUSVZFX0lORklOSVRZIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwidGVzdEludGVydmFsIiwiZ2V0UGx1cmFsRm9ybSIsIl9fd2VicGFja19leHBvcnRzX18iLCJfdXRpbHNfbWlncmF0ZV9tdXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfdXRpbHNfbWlncmF0ZV9tdXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCIsImpxdWVyeV9taWdyYXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJqcXVlcnlfbWlncmF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQiLCJ0ZXRoZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyIsInRldGhlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQiLCJib290c3RyYXBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyIsImJvb3RzdHJhcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQiLCJzZWxlY3QyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18iLCJzZWxlY3QyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19fZGVmYXVsdCIsImpxdWVyeV9ncm93bF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fIiwianF1ZXJ5X2dyb3dsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19fZGVmYXVsdCIsInBzdGFnZ2VyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18iLCJwc3RhZ2dlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fX2RlZmF1bHQiLCJfY29tcG9uZW50c19maWxlX2lucHV0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18iLCJfY29tcG9uZW50c19wc19udW1iZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18iLCJwc3Rvb2x0aXAiLCJpbml0U2VsZWN0MiIsIm5ld09iaiIsIm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIiwibG9jYWxlQ29tcGFyZSIsInRlbXBsYXRlU2VsZWN0aW9uIiwiZXZhbCIsInRlbXBsYXRlUmVzdWx0Iiwic2VsZWN0MiIsIl9pbml0VG9nZ2xlQnV0dG9ucyIsInNyY0VsZW1lbnQiLCJfaW5pdEFsZXJ0cyIsInNsaWRlVG9nZ2xlIiwiX2luaXRUb29sVGlwcyIsImJvdW5kYXJ5IiwicG9wb3ZlciIsIl9pbml0U2VhcmNoQmFyIiwicHJlc3RhU2hvcFVpS2l0IiwicHJvcEhvb2tzIiwiaW5pdFNlbGVjdHMiLCJpbml0VG9vbFRpcHMiLCJpbml0VG9nZ2xlQnV0dG9ucyIsImluaXRBbGVydHMiLCJpbml0U2VhcmNoQmFyIiwiaW5pdElucHV0RmlsZSIsImluaXROdW1iZXJzIiwicHNkd2wiLCJzbiIsImFuIiwibG4iLCJmbGF0Iiwibm9uY2UiLCJub01vZHVsZSIsImV2ZW4iLCJvZGQiLCJleHBhbmRvIiwiaXNSZWFkeSIsImdsb2JhbEV2YWwiLCJsZSIsIlYiLCJJRCIsIkNMQVNTIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwibmVlZHNDb250ZXh0IiwidGUiLCJvZSIsInllIiwiYWUiLCJnZXRFbGVtZW50QnlJZCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJnZSIsInZlIiwiY2FjaGVMZW5ndGgiLCJ1ZSIsImZlIiwiYXR0ckhhbmRsZSIsImRlIiwic291cmNlSW5kZXgiLCJoZSIsInBlIiwiaXNYTUwiLCJuYW1lc3BhY2VVUkkiLCJzZXREb2N1bWVudCIsImF0dGFjaEV2ZW50IiwiY3JlYXRlQ29tbWVudCIsImdldEJ5SWQiLCJnZXRFbGVtZW50c0J5TmFtZSIsImdldEF0dHJpYnV0ZU5vZGUiLCJtYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwiZGlzY29ubmVjdGVkTWF0Y2giLCJzb3J0RGV0YWNoZWQiLCJzcGVjaWZpZWQiLCJ1bmlxdWVTb3J0IiwiZGV0ZWN0RHVwbGljYXRlcyIsInNvcnRTdGFibGUiLCJnZXRUZXh0IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInByZUZpbHRlciIsImxhc3RDaGlsZCIsInVuaXF1ZUlEIiwicHNldWRvcyIsInNldEZpbHRlcnMiLCJndCIsIm50aCIsInJhZGlvIiwiY2hlY2tib3giLCJwYXNzd29yZCIsIm1lIiwiYmUiLCJ3ZSIsInRva2VuaXplIiwiY29tcGlsZSIsIkVlIiwiZGVmYXVsdFZhbHVlIiwiaXNYTUxEb2MiLCJuZXh0VW50aWwiLCJwcmV2VW50aWwiLCJDYWxsYmFja3MiLCJzdG9wT25GYWxzZSIsIm1lbW9yeSIsImxvY2tlZCIsImZpcmVXaXRoIiwiYWx3YXlzIiwicGlwZSIsIm5vdGlmeSIsInJlamVjdCIsIm5vdGlmeVdpdGgiLCJyZXNvbHZlV2l0aCIsImV4Y2VwdGlvbkhvb2siLCJzdGFja1RyYWNlIiwicmVqZWN0V2l0aCIsImdldFN0YWNrSG9vayIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlXYWl0IiwiYWNjZXNzIiwiaGFzRGF0YSIsIl9yZW1vdmVEYXRhIiwiX3F1ZXVlSG9va3MiLCJjbGVhclF1ZXVlIiwiY29tcG9zZWQiLCJnZXRSb290Tm9kZSIsImNzc051bWJlciIsImNoZWNrQ2xvbmUiLCJub0Nsb25lQ2hlY2tlZCIsInRyIiwidGZvb3QiLCJjb2xncm91cCIsImNhcHRpb24iLCJ0aCIsImh0bWxQcmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsInhlIiwiQ2UiLCJUZSIsIkFlIiwiaXNUcmlnZ2VyIiwiZGVsZWdhdGVUeXBlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJiaW5kVHlwZSIsIm9yaWdUeXBlIiwiZGVsZWdhdGVDb3VudCIsInRlYXJkb3duIiwiZml4IiwicHJlRGlzcGF0Y2giLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJoYW5kbGVPYmoiLCJwb3N0RGlzcGF0Y2giLCJhZGRQcm9wIiwibm9CdWJibGUiLCJ0aW1lU3RhbXAiLCJpc1NpbXVsYXRlZCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiY2hhbmdlZFRvdWNoZXMiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwidmlldyIsImNsaWVudFgiLCJjbGllbnRZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJwb2ludGVySWQiLCJzY3JlZW5YIiwic2NyZWVuWSIsInRvRWxlbWVudCIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsIlNlIiwiRGUiLCJPZSIsIkllIiwiamUiLCJOZSIsIkxlIiwiX2V2YWxVcmwiLCJQZSIsInJlcGxhY2VBbGwiLCJNZSIsInFlIiwiSGUiLCJSZSIsIldlIiwiQmUiLCJGZSIsIlVlIiwiUWUiLCJ6ZSIsIktlIiwiWWUiLCJWZSIsIkdlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInBpeGVsQm94U3R5bGVzIiwiWGUiLCJjbGVhckNsb25lU3R5bGUiLCJib3hTaXppbmdSZWxpYWJsZSIsInBpeGVsUG9zaXRpb24iLCJyZWxpYWJsZU1hcmdpbkxlZnQiLCJzY3JvbGxib3hTaXplIiwicmVsaWFibGVUckRpbWVuc2lvbnMiLCJKZSIsIlplIiwiZXQiLCJ0dCIsImNzc1Byb3BzIiwibnQiLCJydCIsIm90IiwiZ2V0Q2xpZW50UmVjdHMiLCJjdCIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiY29sdW1uQ291bnQiLCJmaWxsT3BhY2l0eSIsImZsZXhHcm93IiwiZmxleFNocmluayIsImdyaWRBcmVhIiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1uU3RhcnQiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTdGFydCIsImxpbmVIZWlnaHQiLCJvcnBoYW5zIiwid2lkb3dzIiwiVHdlZW4iLCJsaW5lYXIiLCJzd2luZyIsInV0IiwiZnQiLCJkdCIsImh0IiwicHQiLCJtdCIsInZ0IiwieXQiLCJidCIsInR3ZWVuZXJzIiwicHJlZmlsdGVycyIsInR3ZWVucyIsInNwZWNpYWxFYXNpbmciLCJvcmlnaW5hbFByb3BlcnRpZXMiLCJvcmlnaW5hbE9wdGlvbnMiLCJjcmVhdGVUd2VlbiIsImFuaW0iLCJBbmltYXRpb24iLCJ0d2VlbmVyIiwidW5xdWV1ZWQiLCJmYWRlVG8iLCJmaW5pc2giLCJ0aW1lcnMiLCJmYWRlSW4iLCJmYWRlT3V0IiwiZmFkZVRvZ2dsZSIsInNsb3ciLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwid3QiLCJFdCIsImF0dHJIb29rcyIsInh0IiwiQ3QiLCJUdCIsIkF0IiwiU3QiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsImZvciIsImNsYXNzIiwiRHQiLCJPdCIsInZhbEhvb2tzIiwia3QiLCJzaW11bGF0ZSIsIkl0IiwianQiLCJOdCIsInBhcnNlWE1MIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiTHQiLCJQdCIsIk10IiwicXQiLCJIdCIsIlJ0IiwiV3QiLCJCdCIsIkZ0IiwiVXQiLCJRdCIsInp0IiwiS3QiLCJZdCIsIlZ0IiwiZGF0YVR5cGVzIiwiR3QiLCJmbGF0T3B0aW9ucyIsImxhc3RNb2RpZmllZCIsImV0YWciLCJwcm90b2NvbCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwieG1sIiwicmVzcG9uc2VGaWVsZHMiLCJjb252ZXJ0ZXJzIiwiYWpheFNldHVwIiwiYWpheFByZWZpbHRlciIsImFqYXhUcmFuc3BvcnQiLCJzdGF0dXNDb2RlIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwib3ZlcnJpZGVNaW1lVHlwZSIsImNyb3NzRG9tYWluIiwidHJhZGl0aW9uYWwiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImRhdGFGaWx0ZXIiLCJ0aHJvd3MiLCJnZXRKU09OIiwid3JhcElubmVyIiwiWHQiLCIxMjIzIiwiSnQiLCJjb3JzIiwidXNlcm5hbWUiLCJ4aHJGaWVsZHMiLCJvbmFib3J0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwiYmluYXJ5Iiwic2NyaXB0Iiwic2NyaXB0QXR0cnMiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsIlp0IiwidG4iLCJqc29ucCIsImpzb25wQ2FsbGJhY2siLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsInNldE9mZnNldCIsIkhlaWdodCIsIldpZHRoIiwidW5kZWxlZ2F0ZSIsIm5uIiwiaG9sZFJlYWR5IiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwicm4iLCJtaWdyYXRlTXV0ZSIsIm1pZ3JhdGVUcmFjZSIsIm1pZ3JhdGVWZXJzaW9uIiwibWlncmF0ZVdhcm5pbmdzIiwibWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3MiLCJ0cmFjZSIsIm1pZ3JhdGVSZXNldCIsImNvbXBhdE1vZGUiLCJzd2FwIiwiUHJveHkiLCJmaXhIb29rcyIsIl9taWdyYXRlZF8iLCJVTlNBRkVfcmVzdG9yZUxlZ2FjeUh0bWxQcmVmaWx0ZXIiLCJhbmRTZWxmIiwidGV0aGVyIiwiVGV0aGVyIiwiY2xpZW50VG9wIiwiY2xpZW50TGVmdCIsInBvaW50ZXJFdmVudHMiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJnZXRBY3R1YWxCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRTY3JvbGxQYXJlbnRzIiwiZ2V0Qm91bmRzIiwiZ2V0T2Zmc2V0UGFyZW50IiwidXBkYXRlQ2xhc3NlcyIsImZsdXNoIiwiRXZlbnRlZCIsImdldFNjcm9sbEJhclNpemUiLCJyZW1vdmVVdGlsRWxlbWVudHMiLCJwZXJmb3JtYW5jZSIsImNlbnRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImhpc3RvcnkiLCJzZXRPcHRpb25zIiwiY2xhc3NQcmVmaXgiLCJ0YXJnZXRBdHRhY2htZW50IiwidGFyZ2V0TW9kaWZpZXIiLCJnZXRDbGFzcyIsImFkZFRhcmdldENsYXNzZXMiLCJhdHRhY2htZW50IiwiX2NhY2hlIiwiX2FkZEF0dGFjaENsYXNzZXMiLCJjbGVhckNhY2hlIiwidXBkYXRlQXR0YWNoQ2xhc3NlcyIsImxhc3RTaXplIiwiZ2V0VGFyZ2V0Qm91bmRzIiwidGFyZ2V0UG9zIiwibWFudWFsT2Zmc2V0IiwibWFudWFsVGFyZ2V0T2Zmc2V0Iiwidmlld3BvcnQiLCJvcHRpbWl6YXRpb25zIiwibW92ZUVsZW1lbnQiLCJtb3ZlIiwiZ3B1IiwibWF0Y2hNZWRpYSIsImJvZHlFbGVtZW50IiwiY29uc3RyYWludHMiLCJvdXRPZkJvdW5kc0NsYXNzIiwicGlubmVkQ2xhc3MiLCJwaW4iLCJhaSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJUUkFOU0lUSU9OX0VORCIsImdldFVJRCIsImdldFNlbGVjdG9yRnJvbUVsZW1lbnQiLCJnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCIsInJlZmxvdyIsInRyaWdnZXJUcmFuc2l0aW9uRW5kIiwic3VwcG9ydHNUcmFuc2l0aW9uRW5kIiwidHlwZUNoZWNrQ29uZmlnIiwiZmluZFNoYWRvd1Jvb3QiLCJhdHRhY2hTaGFkb3ciLCJTaGFkb3dSb290IiwialF1ZXJ5RGV0ZWN0aW9uIiwiZW11bGF0ZVRyYW5zaXRpb25FbmQiLCJDTE9TRSIsIkNMT1NFRCIsIkNMSUNLX0RBVEFfQVBJIiwiX2VsZW1lbnQiLCJfZ2V0Um9vdEVsZW1lbnQiLCJfdHJpZ2dlckNsb3NlRXZlbnQiLCJfcmVtb3ZlRWxlbWVudCIsImRpc3Bvc2UiLCJfZGVzdHJveUVsZW1lbnQiLCJfalF1ZXJ5SW50ZXJmYWNlIiwiX2hhbmRsZURpc21pc3MiLCJGT0NVU19CTFVSX0RBVEFfQVBJIiwiTE9BRF9EQVRBX0FQSSIsInBhdXNlIiwiU0xJREUiLCJTTElEIiwiS0VZRE9XTiIsIk1PVVNFRU5URVIiLCJNT1VTRUxFQVZFIiwiVE9VQ0hTVEFSVCIsIlRPVUNITU9WRSIsIlRPVUNIRU5EIiwiUE9JTlRFUkRPV04iLCJQT0lOVEVSVVAiLCJEUkFHX1NUQVJUIiwiVE9VQ0giLCJQRU4iLCJfaXRlbXMiLCJfaW50ZXJ2YWwiLCJfYWN0aXZlRWxlbWVudCIsIl9pc1BhdXNlZCIsIl9pc1NsaWRpbmciLCJ0b3VjaFRpbWVvdXQiLCJ0b3VjaFN0YXJ0WCIsInRvdWNoRGVsdGFYIiwiX2dldENvbmZpZyIsIl9pbmRpY2F0b3JzRWxlbWVudCIsIl90b3VjaFN1cHBvcnRlZCIsIl9wb2ludGVyRXZlbnQiLCJfYWRkRXZlbnRMaXN0ZW5lcnMiLCJuZXh0V2hlblZpc2libGUiLCJjeWNsZSIsInZpc2liaWxpdHlTdGF0ZSIsIl9nZXRJdGVtSW5kZXgiLCJfaGFuZGxlU3dpcGUiLCJfYWRkVG91Y2hFdmVudExpc3RlbmVycyIsIl9nZXRJdGVtQnlEaXJlY3Rpb24iLCJfdHJpZ2dlclNsaWRlRXZlbnQiLCJfc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudCIsImRlZmF1bHRJbnRlcnZhbCIsInJpZGUiLCJfZGF0YUFwaUNsaWNrSGFuZGxlciIsIlNIT1ciLCJTSE9XTiIsIkhJREUiLCJISURERU4iLCJfaXNUcmFuc2l0aW9uaW5nIiwiX3RyaWdnZXJBcnJheSIsIl9zZWxlY3RvciIsIl9nZXRQYXJlbnQiLCJfYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzIiwiX2dldERpbWVuc2lvbiIsInNldFRyYW5zaXRpb25pbmciLCJfZ2V0VGFyZ2V0RnJvbUVsZW1lbnQiLCJDTElDSyIsIktFWURPV05fREFUQV9BUEkiLCJLRVlVUF9EQVRBX0FQSSIsInBvcHBlckNvbmZpZyIsIl9wb3BwZXIiLCJfbWVudSIsIl9nZXRNZW51RWxlbWVudCIsIl9pbk5hdmJhciIsIl9kZXRlY3ROYXZiYXIiLCJfY2xlYXJNZW51cyIsIl9nZXRQYXJlbnRGcm9tRWxlbWVudCIsIl9nZXRQb3BwZXJDb25maWciLCJEZWZhdWx0IiwiRGVmYXVsdFR5cGUiLCJfZ2V0UGxhY2VtZW50IiwiY2xpY2tFdmVudCIsIl9kYXRhQXBpS2V5ZG93bkhhbmRsZXIiLCJISURFX1BSRVZFTlRFRCIsIkZPQ1VTSU4iLCJSRVNJWkUiLCJDTElDS19ESVNNSVNTIiwiS0VZRE9XTl9ESVNNSVNTIiwiTU9VU0VVUF9ESVNNSVNTIiwiTU9VU0VET1dOX0RJU01JU1MiLCJfZGlhbG9nIiwiX2JhY2tkcm9wIiwiX2lzU2hvd24iLCJfaXNCb2R5T3ZlcmZsb3dpbmciLCJfaWdub3JlQmFja2Ryb3BDbGljayIsIl9zY3JvbGxiYXJXaWR0aCIsIl9jaGVja1Njcm9sbGJhciIsIl9zZXRTY3JvbGxiYXIiLCJfYWRqdXN0RGlhbG9nIiwiX3NldEVzY2FwZUV2ZW50IiwiX3NldFJlc2l6ZUV2ZW50IiwiX3Nob3dCYWNrZHJvcCIsIl9zaG93RWxlbWVudCIsIl9oaWRlTW9kYWwiLCJoYW5kbGVVcGRhdGUiLCJfdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbiIsIkVMRU1FTlRfTk9ERSIsIl9lbmZvcmNlRm9jdXMiLCJfcmVzZXRBZGp1c3RtZW50cyIsIl9yZXNldFNjcm9sbGJhciIsIl9yZW1vdmVCYWNrZHJvcCIsIl9nZXRTY3JvbGxiYXJXaWR0aCIsImZhbGxiYWNrUGxhY2VtZW50Iiwic2FuaXRpemUiLCJzYW5pdGl6ZUZuIiwid2hpdGVMaXN0IiwiQVVUTyIsIlRPUCIsIkJPVFRPTSIsImJyIiwiZW0iLCJociIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsIm9sIiwic21hbGwiLCJzdWIiLCJzdXAiLCJJTlNFUlRFRCIsIkZPQ1VTT1VUIiwiX2lzRW5hYmxlZCIsIl90aW1lb3V0IiwiX2hvdmVyU3RhdGUiLCJfYWN0aXZlVHJpZ2dlciIsInRpcCIsIl9zZXRMaXN0ZW5lcnMiLCJ0b2dnbGVFbmFibGVkIiwiREFUQV9LRVkiLCJfZ2V0RGVsZWdhdGVDb25maWciLCJfaXNXaXRoQWN0aXZlVHJpZ2dlciIsIl9lbnRlciIsIl9sZWF2ZSIsImdldFRpcEVsZW1lbnQiLCJFVkVOVF9LRVkiLCJfaGlkZU1vZGFsSGFuZGxlciIsImlzV2l0aENvbnRlbnQiLCJfZ2V0QXR0YWNobWVudCIsImFkZEF0dGFjaG1lbnRDbGFzcyIsIl9nZXRDb250YWluZXIiLCJfZml4VHJhbnNpdGlvbiIsIl9jbGVhblRpcENsYXNzIiwiZ2V0VGl0bGUiLCJzZXRFbGVtZW50Q29udGVudCIsIl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UiLCJfZml4VGl0bGUiLCJjbiIsInVuIiwiX2dldENvbnRlbnQiLCJkbiIsImhuIiwicG4iLCJnbiIsIm1uIiwidm4iLCJBQ1RJVkFURSIsIlNDUk9MTCIsInduIiwiRW4iLCJDbiIsIk9uIiwia24iLCJfc2Nyb2xsRWxlbWVudCIsIl9vZmZzZXRzIiwiX3RhcmdldHMiLCJfYWN0aXZlVGFyZ2V0IiwiX3Njcm9sbEhlaWdodCIsIl9wcm9jZXNzIiwiX2dldFNjcm9sbFRvcCIsIl9nZXRTY3JvbGxIZWlnaHQiLCJfZ2V0T2Zmc2V0SGVpZ2h0IiwiSW4iLCJqbiIsIk5uIiwiTG4iLCIkbiIsInFuIiwiSG4iLCJCbiIsIkZuIiwiS24iLCJfdHJhbnNpdGlvbkNvbXBsZXRlIiwiWW4iLCJWbiIsIkduIiwiWG4iLCJKbiIsImVpIiwidGkiLCJuaSIsImF1dG9oaWRlIiwicmkiLCJzaSIsIkFsZXJ0IiwiQnV0dG9uIiwiQ2Fyb3VzZWwiLCJDb2xsYXBzZSIsIkRyb3Bkb3duIiwiUG9wb3ZlciIsIlNjcm9sbHNweSIsIlRhYiIsIlRvYXN0IiwiVG9vbHRpcCIsIlV0aWwiLCJyZXF1aXJlanMiLCJub2RlSWRDb21wYXQiLCJub3JtYWxpemUiLCJyZXF1aXJlIiwidXJpIiwiZGVwcyIsIl9kZWZpbmVkIiwiRXh0ZW5kIiwiX19zdXBlcl9fIiwiRGVjb3JhdGUiLCJkaXNwbGF5TmFtZSIsIl90eXBlIiwiaW52b2tlIiwiT2JzZXJ2YWJsZSIsImdlbmVyYXRlQ2hhcnMiLCJfY29udmVydERhdGEiLCJoYXNTY3JvbGwiLCJlc2NhcGVNYXJrdXAiLCJhcHBlbmRNYW55IiwiX19jYWNoZSIsIkdldFVuaXF1ZUVsZW1lbnRJZCIsIlN0b3JlRGF0YSIsIkdldERhdGEiLCJSZW1vdmVEYXRhIiwiJHJlc3VsdHMiLCJkaXNwbGF5TWVzc2FnZSIsImhpZGVMb2FkaW5nIiwiaGlkZU1lc3NhZ2VzIiwiaGlnaGxpZ2h0Rmlyc3RJdGVtIiwiZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSIsInNldENsYXNzZXMiLCJzaG93TG9hZGluZyIsIl9yZXN1bHRJZCIsImdldEhpZ2hsaWdodGVkUmVzdWx0cyIsIlNISUZUIiwiQ1RSTCIsIkFMVCIsIkVTQyIsIl90YWJpbmRleCIsIiRzZWxlY3Rpb24iLCJfaGFuZGxlQmx1ciIsIl9hdHRhY2hDbG9zZUhhbmRsZXIiLCJfZGV0YWNoQ2xvc2VIYW5kbGVyIiwic2VsZWN0aW9uQ29udGFpbmVyIiwibm9ybWFsaXplUGxhY2Vob2xkZXIiLCJfaGFuZGxlQ2xlYXIiLCJfaGFuZGxlS2V5Ym9hcmRDbGVhciIsInByZXZlbnRlZCIsIiRzZWFyY2hDb250YWluZXIiLCIkc2VhcmNoIiwiX3RyYW5zZmVyVGFiSW5kZXgiLCJfa2V5VXBQcmV2ZW50ZWQiLCJzZWFyY2hSZW1vdmVDaG9pY2UiLCJoYW5kbGVTZWFyY2giLCJyZXNpemVTZWFyY2giLCJkaWN0IiwibG9hZFBhdGgiLCJnZW5lcmF0ZVJlc3VsdElkIiwidW5zZWxlY3QiLCJhZGRPcHRpb25zIiwiX25vcm1hbGl6ZUl0ZW0iLCJfZGF0YVRvQ29udmVydCIsImNvbnZlcnRUb09wdGlvbnMiLCJhamF4T3B0aW9ucyIsIl9hcHBseURlZmF1bHRzIiwicHJvY2Vzc1Jlc3VsdHMiLCJ0cmFuc3BvcnQiLCJfcmVxdWVzdCIsIl9xdWVyeVRpbWVvdXQiLCJjcmVhdGVUYWciLCJpbnNlcnRUYWciLCJfcmVtb3ZlT2xkVGFncyIsInRva2VuaXplciIsImRyb3Bkb3duIiwibWluaW11bUlucHV0TGVuZ3RoIiwibWluaW11bSIsIm1heGltdW1JbnB1dExlbmd0aCIsIm1heGltdW0iLCJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwiX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQiLCIkZHJvcGRvd24iLCJzaG93U2VhcmNoIiwibGFzdFBhcmFtcyIsIiRsb2FkaW5nTW9yZSIsImNyZWF0ZUxvYWRpbmdNb3JlIiwic2hvd0xvYWRpbmdNb3JlIiwibG9hZE1vcmVJZk5lZWRlZCIsImxvYWRNb3JlIiwibW9yZSIsIiRkcm9wZG93blBhcmVudCIsIl9zaG93RHJvcGRvd24iLCJfYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyIiwiX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyIsIl9oaWRlRHJvcGRvd24iLCJfZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyIiwiJGRyb3Bkb3duQ29udGFpbmVyIiwiX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kIiwiX3Bvc2l0aW9uRHJvcGRvd24iLCJfcmVzaXplRHJvcGRvd24iLCJpc0Nvbm5lY3RlZCIsIl9oYW5kbGVTZWxlY3RPbkNsb3NlIiwib3JpZ2luYWxTZWxlY3QyRXZlbnQiLCJfc2VsZWN0VHJpZ2dlcmVkIiwiZXJyb3JMb2FkaW5nIiwiaW5wdXRUb29Mb25nIiwiaW5wdXRUb29TaG9ydCIsImxvYWRpbmdNb3JlIiwibWF4aW11bVNlbGVjdGVkIiwicmVtb3ZlQWxsSXRlbXMiLCJkYXRhQWRhcHRlciIsInRva2VuU2VwYXJhdG9ycyIsImFtZEJhc2UiLCJpbml0U2VsZWN0aW9uIiwicmVzdWx0c0FkYXB0ZXIiLCJzZWxlY3RPbkNsb3NlIiwiZHJvcGRvd25BZGFwdGVyIiwibXVsdGlwbGUiLCJjbG9zZU9uU2VsZWN0IiwiZHJvcGRvd25Dc3NDbGFzcyIsImRyb3Bkb3duQ3NzIiwiYWRhcHREcm9wZG93bkNzc0NsYXNzIiwic2VsZWN0aW9uQWRhcHRlciIsImFsbG93Q2xlYXIiLCJjb250YWluZXJDc3NDbGFzcyIsImNvbnRhaW5lckNzcyIsImFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MiLCJfcmVzb2x2ZUxhbmd1YWdlIiwidHJhbnNsYXRpb25zIiwiX3Byb2Nlc3NUcmFuc2xhdGlvbnMiLCJhbWRMYW5ndWFnZUJhc2UiLCJkcm9wZG93bkF1dG9XaWR0aCIsInNjcm9sbEFmdGVyU2VsZWN0Iiwic29ydGVyIiwiYXBwbHlGcm9tRWxlbWVudCIsImZyb21FbGVtZW50IiwiX2dlbmVyYXRlSWQiLCJfcGxhY2VDb250YWluZXIiLCJfYmluZEFkYXB0ZXJzIiwiX3JlZ2lzdGVyRG9tRXZlbnRzIiwiX3JlZ2lzdGVyRGF0YUV2ZW50cyIsIl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cyIsIl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzIiwiX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cyIsIl9yZWdpc3RlckV2ZW50cyIsIl9zeW5jQXR0cmlidXRlcyIsIl9yZXNvbHZlV2lkdGgiLCJfc3luY0EiLCJfc3luY1MiLCJfc3luY1N1YnRyZWUiLCJNdXRhdGlvbk9ic2VydmVyIiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIk1vek11dGF0aW9uT2JzZXJ2ZXIiLCJfb2JzZXJ2ZXIiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsInRvZ2dsZURyb3Bkb3duIiwiX2lzQ2hhbmdlTXV0YXRpb24iLCJhZGRlZE5vZGVzIiwicmVtb3ZlZE5vZGVzIiwiZGV0YWNoRXZlbnQiLCJkaXNjb25uZWN0IiwibW91c2VFbnRlciIsIm1vdXNlTGVhdmUiLCJ3YWl0QW5kRGlzbWlzcyIsInByZXNlbnQiLCIkZ3Jvd2xzIiwiJGdyb3dsIiwidHJhbnNpdGlvbnMiLCJ3ZWJraXRUcmFuc2l0aW9uIiwibW96VHJhbnNpdGlvbiIsIm9UcmFuc2l0aW9uIiwiZml4ZWQiLCJkZWxheU9uSG92ZXIiLCIkX2dyb3dscyIsIiRfZ3Jvd2wiLCJHcm93bCIsIm5vdGljZSIsIndyYXBwZXJDbGFzc0FkZGl0aW9uYWwiLCJ0YWdzV3JhcHBlckNsYXNzQWRkaXRpb25hbCIsInRhZ0NsYXNzQWRkaXRpb25hbCIsImNsb3NpbmdDcm9zc0NsYXNzQWRkaXRpb25uYWwiLCJ0YWdJbnB1dFdyYXBwZXJDbGFzc0FkZGl0aW9uYWwiLCJ0YWdJbnB1dENsYXNzQWRkaXRpb25hbCIsImlucHV0UGxhY2Vob2xkZXIiLCJjbG9zaW5nQ3Jvc3MiLCJjbGVhckFsbEJ0biIsImNsZWFyQWxsSWNvbkNsYXNzQWRkaXRpb25hbCIsImNsZWFyQWxsU3BhbkNsYXNzQWRkaXRpb25hbCIsIm9uVGFnc0NoYW5nZWQiLCJvblJlc2V0VGFncyIsInBzdGFnZ2VyIiwib3JpZ2luYWxJbnB1dCIsInJlc2V0VGFncyIsIm1heEludCIsInJlZ2V4UHVueWNvZGUiLCJyZWdleE5vbkFTQ0lJIiwicmVnZXhTZXBhcmF0b3JzIiwiZXJyb3JzIiwic3RyaW5nRnJvbUNoYXJDb2RlIiwibWFwRG9tYWluIiwiZW5jb2RlZCIsInVjczJkZWNvZGUiLCJ1Y3MyZW5jb2RlIiwiZnJvbUNvZGVQb2ludCIsImRpZ2l0VG9CYXNpYyIsImRpZ2l0IiwiZmxhZyIsImFkYXB0IiwibnVtUG9pbnRzIiwiYmFzZU1pbnVzVE1pbiIsImRlY29kZSIsImJpYXMiLCJiYXNpYyIsIm9sZGkiLCJjb2RlUG9pbnQiLCJiYXNlTWludXNUIiwiZW5jb2RlIiwiYmFzaWNMZW5ndGgiLCJoYW5kbGVkQ1BDb3VudCIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsInFNaW51c1QiLCJ0b1VuaWNvZGUiLCJub3Rfc3RyaW5nIiwibm90X2Jvb2wiLCJub3RfdHlwZSIsIm5vdF9wcmltaXRpdmUiLCJudW1lcmljX2FyZyIsIm5vdF9qc29uIiwibW9kdWxvIiwia2V5X2FjY2VzcyIsImluZGV4X2FjY2VzcyIsInNwcmludGYiLCJzcHJpbnRmX2Zvcm1hdCIsInNwcmludGZfcGFyc2UiLCJ2c3ByaW50ZiIsImZtdCIsImFyZ3YiLCJwYXJzZV90cmVlIiwicGgiLCJwYWQiLCJwYWRfY2hhcmFjdGVyIiwicGFkX2xlbmd0aCIsImlzX3Bvc2l0aXZlIiwidHJlZV9sZW5ndGgiLCJwYXJhbV9ubyIsInRvRXhwb25lbnRpYWwiLCJ0b1ByZWNpc2lvbiIsInBhZF9jaGFyIiwicmVwZWF0IiwiYWxpZ24iLCJzcHJpbnRmX2NhY2hlIiwiX2ZtdCIsImFyZ19uYW1lcyIsIlN5bnRheEVycm9yIiwiZmllbGRfbGlzdCIsInJlcGxhY2VtZW50X2ZpZWxkIiwiZmllbGRfbWF0Y2giLCJvbkRyYWdTdHlsZSIsIm9uRHJvcFN0eWxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdTdG9wIiwic2Nyb2xsQW1vdW50Iiwic2Vuc2l0aXZpdHkiLCJoaWVyYXJjaHlMZXZlbCIsImluZGVudEFydGlmYWN0IiwiYXV0b1dpZHRoQWRqdXN0IiwiYXV0b0NsZWFuUmVsYXRpb25zIiwianNvblByZXRpZnlTZXBhcmF0b3IiLCJzZXJpYWxpemVSZWdleHAiLCJzZXJpYWxpemVQYXJhbU5hbWUiLCJjdXJyZW50VGFibGUiLCJkcmFnT2JqZWN0IiwibW91c2VPZmZzZXQiLCJvbGRYIiwib2xkWSIsImJ1aWxkIiwidGFibGVEbkRDb25maWciLCJtYWtlRHJhZ2dhYmxlIiwibWFrZUluZGVudGVkIiwiaW5pdGlhbGlzZURyYWciLCJjdXJyZW50T3JkZXIiLCJnZXRNb3VzZU9mZnNldCIsIm9yaWdpbmFsT3JkZXIiLCJ1cGRhdGVUYWJsZXMiLCJtb3VzZUNvb3JkcyIsImdldFBvc2l0aW9uIiwiYXV0b1Njcm9sbCIsIm1vdmVWZXJ0aWNsZSIsIm1vdmVIb3Jpem9udGFsIiwiZmluZERyb3BUYXJnZXRSb3ciLCJmaW5kRHJhZ0RpcmVjdGlvbiIsIm9uQWxsb3dEcm9wIiwicHJvY2Vzc01vdXNldXAiLCJ0YWJsZURhdGEiLCJzZXJpYWxpemVUYWJsZSIsInNlcmlhbGl6ZVRhYmxlcyIsInRhYmxlRG5EVXBkYXRlIiwidGFibGVEbkRTZXJpYWxpemUiLCJ0YWJsZURuRFNlcmlhbGl6ZUFsbCIsInRhYmxlRG5ERGF0YSIsIkJsb29kaG91bmQiLCJub253b3JkIiwibWF4U2l6ZSIsInRhaWwiLCJtb3ZlVG9Gcm9udCIsInR0bEtleSIsImtleU1hdGNoZXIiLCJfbm9vcCIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJyZW1vdmVJdGVtIiwiX3ByZWZpeCIsIl90dGxLZXkiLCJpc0V4cGlyZWQiLCJfc2FmZVNldCIsImdldEl0ZW0iLCJsYXN0UmVxIiwiX3NlbmQiLCJsaW1pdGVyIiwic2V0TWF4UGVuZGluZ1JlcXVlc3RzIiwicmVzZXRDYWNoZSIsIl9maW5nZXJwcmludCIsIm9uRGVja1JlcXVlc3RBcmdzIiwiU2VhcmNoSW5kZXgiLCJkYXR1bVRva2VuaXplciIsInF1ZXJ5VG9rZW5pemVyIiwiaWRlbnRpZnkiLCJib290c3RyYXAiLCJkYXR1bXMiLCJ0cmllIiwidHRsIiwicHJlcGFyZSIsInRodW1icHJpbnQiLCJzdG9yYWdlIiwiY2FjaGVLZXkiLCJfc2V0dGluZ3MiLCJmcm9tQ2FjaGUiLCJmcm9tTmV0d29yayIsImNhbmNlbExhc3RSZXF1ZXN0Iiwid2lsZGNhcmQiLCJyYXRlTGltaXRCeSIsInJhdGVMaW1pdFdhaXQiLCJzdWZmaWNpZW50IiwicHJlZmV0Y2giLCJyZW1vdGUiLCJ0b2tlbml6ZXJzIiwiX2xvYWRQcmVmZXRjaCIsIl9pbml0aWFsaXplIiwiaW5pdFByb21pc2UiLCJjbGVhclByZWZldGNoQ2FjaGUiLCJjbGVhclJlbW90ZUNhY2hlIiwidHRBZGFwdGVyIiwiaXRlcmF0b3JTdXBwb3J0ZWQiLCJjaGVja0lmSXRlcmF0b3JJc1N1cHBvcnRlZCIsImNyZWF0ZUl0ZXJhdG9yIiwic2VyaWFsaXplUGFyYW0iLCJkZXNlcmlhbGl6ZVBhcmFtIiwiY2hlY2tJZlVSTFNlYXJjaFBhcmFtc1N1cHBvcnRlZCIsInNlYXJjaFN0cmluZyIsInR5cGVvZlNlYXJjaFN0cmluZyIsIl9mcm9tU3RyaW5nIiwiX2VudHJpZXMiLCJkZWxldGUiLCJnZXRBbGwiLCJ0aGlzQXJnIiwic2VhcmNoQXJyYXkiLCJwb2x5ZmlsbFVSTFNlYXJjaFBhcmFtcyIsImNoZWNrSWZVUkxJc1N1cHBvcnRlZCIsIl9VUkwiLCJiYXNlRWxlbWVudCIsImFuY2hvckVsZW1lbnQiLCJlbmFibGVTZWFyY2hVcGRhdGUiLCJlbmFibGVTZWFyY2hQYXJhbXNVcGRhdGUiLCJtZXRob2ROYW1lIiwiX2FuY2hvckVsZW1lbnQiLCJsaW5rVVJMV2l0aEFuY2hvckF0dHJpYnV0ZSIsIl91cGRhdGVTZWFyY2hQYXJhbXMiLCJleHBlY3RlZFBvcnQiLCJhZGRQb3J0VG9PcmlnaW4iLCJwb3J0IiwiaG9zdG5hbWUiLCJjcmVhdGVPYmplY3RVUkwiLCJibG9iIiwicmV2b2tlT2JqZWN0VVJMIiwicG9seWZpbGxVUkwiLCJnZXRPcmlnaW4iLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJubWQiLCJwYXRocyJdLCJtYXBwaW5ncyI6Ijs0cmJBK0IwQixTQUFDQSxFQUFNQyxHQUMvQixJQUFNQyxFQUFLQyxTQUFTQyxjQUFjLFdBQzVCQyxFQUFZTCxFQUFLTSxPQUFPLEdBQUdDLGNBQWdCUCxFQUFLUSxVQUFVLEdBQzFEQyxFQUFpQlIsRUFBVUssT0FBTyxHQUFHQyxjQUFnQk4sRUFBVU8sVUFBVSxHQUV6RUUsRUFBYSxDQUNqQkMsY0FBZVgsRUFBT0MsRUFDdEJXLGdCQUFpQlAsRUFBWUksRUFDN0JJLGlCQUFrQmIsRUFBT0MsRUFDekJhLDBCQUEyQlQsRUFBWUksR0FHbkNNLEdBQU0sYUFBWUwsR0FBWU0sTUFBSyxTQUFDQyxHQUFELFlBQW1DQyxJQUF0QmhC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QVEsS0FDUixVQUFXLEtBQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxVQUFXLE1BQ1gsYUFBYyxNQUNkLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLGFBQWMsTUFDZCxVQUFXLE1BQ1gsYUFBYyxNQUNkLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLGFBQWMsTUFDZCxVQUFXLE1BQ1gsYUFBYyxNQUNkLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLGFBQWMsTUFDZCxVQUFXLE1BQ1gsT0FBUSxLQUNSLFVBQVcsS0FDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsYUFBYyxNQUNkLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLE9BQVEsS0FDUixVQUFXLEtBQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLEtBQ1IsVUFBVyxLQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsYUFBYyxNQUNkLGdCQUFpQixNQUNqQixPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsVUFBVyxNQUNYLGFBQWMsTUFDZCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxLQUNSLFVBQVcsS0FDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLEtBQ1IsVUFBVyxLQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxLQUNSLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxLQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxhQUFjLE1BQ2QsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsVUFBVyxNQUNYLGFBQWMsTUFDZCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsYUFBYyxNQUNkLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFlBQWEsTUFDYixlQUFnQixNQUNoQixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLE9BQVEsTUFDUixVQUFXLE1BQ1gsT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLE1BQ1IsVUFBVyxNQUNYLFFBQVMsTUFDVCxXQUFZLE1BQ1osT0FBUSxNQUNSLFVBQVcsTUFDWCxPQUFRLEtBQ1IsVUFBVyxLQUNYLFVBQVcsTUFDWCxhQUFjLE1BQ2QsUUFBUyxNQUNULFdBQVksTUFDWixPQUFRLE1BQ1IsVUFBVyxNQUNYLFFBQVMsTUFDVCxXQUFZLE1B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SyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLE9BQU8sR0FBRzVzRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksS0FBSyxJQUFJLEtBQUssT0FBTyxJQUFJQSxHQUFHLElBQUlBLEVBQUUsRUFBRSxFQUFFLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLE9BQU9BLEVBQUUsSUFBSSxHQUFHQSxFQUFFLEtBQUssR0FBRyxFQUFFLEdBQUdBLEVBQUUsSUFBSUEsRUFBRSxJQUFJLElBQUlBLEVBQUUsSUFBSSxJQUFJLElBQUlBLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxLQUFLLElBQUksS0FBSyxPQUFPLEdBQUdBLEVBQUUsRUFBRSxHQUFHQSxHQUFHQSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPLEdBQUdBLEVBQUUsRUFBRSxHQUFHQSxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQUssT0FBT0EsRUFBRSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxHQUFHLEVBQUUsR0FBR0EsRUFBRSxLQUFLQSxFQUFFLElBQUksSUFBSSxJQUFJQSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPQSxFQUFFLEtBQUssRUFBRSxFQUFFQSxFQUFFLEtBQUssRUFBRSxFQUFFQSxFQUFFLEtBQUssR0FBR0EsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPQSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxLQUFLLE9BQU8sR0FBR0EsRUFBRSxFQUFFLElBQUlBLEdBQUcsRUFBRUEsRUFBRSxLQUFLQSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUdBLEVBQUUsS0FBS0EsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPLElBQUlBLEVBQUUsRUFBRUEsRUFBRSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUFJLEtBQUssT0FBTyxHQUFHQSxFQUFFLEVBQUUsR0FBR0EsRUFBRSxJQUFJQSxFQUFFLElBQUksSUFBSUEsRUFBRSxJQUFJLElBQUksR0FBR0EsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEtBQUssT0FBTyxHQUFHQSxFQUFFLEVBQUUsR0FBR0EsRUFBRSxFQUFFLEdBQUdBLEdBQUcsSUFBSUEsRUFBRSxFQUFFLEVBQUUsSUFBSSxLQUFLLE9BQU8sR0FBR0EsRUFBRSxFQUFFLElBQUlBLEdBQUcsRUFBRUEsRUFBRSxLQUFLQSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSUEsRUFBRSxFQUFFLEdBQUdBLEVBQUUsRUFBRSxHQUFHQSxFQUFFLEVBQUUsR0FBR0EsRUFBRSxLQUFLQSxFQUFFLEtBQUssR0FBRyxFQUFFLElBQUlBLEVBQUUsS0FBS0EsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLFFBQVEsT0FBTyxJQUFJNHNFLEVBQUUxNEMsRUFBRWgxQixHQUFH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SSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLEtBQUssSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLEtBQUssRUFBSSxLQUFLLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksS0FBSyxFQUFJLEtBQUssRUFBSSxLQUFLLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksS0FBSyxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxLQUFLLElBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxJQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksSUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFBSSxFQUFJLElBQUksRUFBSSxJQUFJLEVBQUksSUFB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QUFPN3hLLElBQzFCQSxFQUFPOHhLLE1BQVEsR0FDVjl4SyxFQUFPakosV0FBVWlKLEVBQU9qSixTQUFXLElBQ2pDaUosRyw4Q0N3QlIsMkJBQ0EsMkJBQ0EsMkJBQ0EsMkJBQ0EsMkJBQ0EsMkJBQ0EsMkJBQ0EsMEJBQ0EsMkJBQ0EsMEJBQ0EsMkJBRUEsMkJBR0EsSSxJQUFBLDRCQUdBLDJCQUVBLHlCQUNBLDJCQUVBLEksSUFBQSw0QixJQUVBLDRCLElBQ0EsNEIsSUFDQSwyQixJQUNBLDJCLElBQ0EsNEIsdURBRU9odUIsRUFBS0MsT0FBTEQsRUFHUEMsT0FBT3UrRixTQUFTOGMsY0FBZSxFQUUvQixJQUFJdDRGLFVBQ0osSUFBSS9CLFVBRUpqaEIsR0FBRSxZQUNBLGdCQUNBLGdCQUNBLGdCQUNBLGFBQWdCLHdCQUNoQixhQUEyQiw2QiIsImZpbGUiOiJtYWluLmJ1bmRsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGNvcnJlY3QgdHJhbnNpdGlvbiBrZXl3b3JkIG9mIHRoZSBicm93c2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBUaGUgcHJvcGVydHkgbmFtZSAodHJhbnNpdGlvbiBmb3IgZXhhbXBsZSkuXG4gKiBAcGFyYW0ge3N0cmluZ30gbGlmZWN5Y2xlIC0gV2hpY2ggbGlmZWN5Y2xlIG9mIHRoZSBwcm9wZXJ0eSBuYW1lIHRvIGNhdGNoIChlbmQsIHN0YXJ0Li4uKS5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHRyYW5zaXRpb24ga2V5d29hcmQgb2YgdGhlIGJyb3dzZXIuXG4qL1xuY29uc3QgZ2V0QW5pbWF0aW9uRXZlbnQgPSAodHlwZSwgbGlmZWN5Y2xlKSA9PiB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudCcpO1xuICBjb25zdCB0eXBlVXBwZXIgPSB0eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zdWJzdHJpbmcoMSk7XG4gIGNvbnN0IGxpZmVjeWNsZVVwcGVyID0gbGlmZWN5Y2xlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbGlmZWN5Y2xlLnN1YnN0cmluZygxKTtcblxuICBjb25zdCBwcm9wZXJ0aWVzID0ge1xuICAgIHRyYW5zaXRpb246IGAke3R5cGV9JHtsaWZlY3ljbGV9YCxcbiAgICBPVHJhbnNpdGlvbjogYG8ke3R5cGVVcHBlcn0ke2xpZmVjeWNsZVVwcGVyfWAsXG4gICAgTW96VHJhbnNpdGlvbjogYCR7dHlwZX0ke2xpZmVjeWNsZX1gLFxuICAgIFdlYmtpdFRyYW5zaXRpb246IGB3ZWJraXQke3R5cGVVcHBlcn0ke2xpZmVjeWNsZVVwcGVyfWAsXG4gIH07XG5cbiAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmluZCgocHJvcEtleSkgPT4gZWwuc3R5bGVbcHJvcEtleV0gIT09IHVuZGVmaW5lZCk7XG5cbiAgcmV0dXJuIGtleSAhPT0gdW5kZWZpbmVkID8gcHJvcGVydGllc1trZXldIDogZmFsc2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRBbmltYXRpb25FdmVudDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCAndXJsLXBvbHlmaWxsJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCByZXBsYWNlRGF0ZVBpY2tlciA9ICgpID0+IHtcbiAgY29uc3QgZGF0ZXBpY2tlcldpZGdldCA9ICQoJ2JvZHknKS5maW5kKFxuICAgICcuYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLXdpZGdldDpsYXN0JyxcbiAgKTtcblxuICBpZiAoZGF0ZXBpY2tlcldpZGdldC5sZW5ndGggPD0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBvc2l0aW9uID0gZGF0ZXBpY2tlcldpZGdldC5vZmZzZXQoKTtcbiAgY29uc3Qgb3JpZ2luYWxIZWlnaHQgPSBkYXRlcGlja2VyV2lkZ2V0Lm91dGVySGVpZ2h0KCk7XG4gIGNvbnN0IG1hcmdpbiA9IChkYXRlcGlja2VyV2lkZ2V0Lm91dGVySGVpZ2h0KHRydWUpIC0gb3JpZ2luYWxIZWlnaHQpIC8gMjtcblxuICAvLyBNb3ZlIGRhdGVwaWNrZXIgdG8gdGhlIGV4YWN0IHNhbWUgcGxhY2UgaXQgd2FzIGJ1dCBhdHRhY2hlZCB0byBib2R5XG4gIGRhdGVwaWNrZXJXaWRnZXQuYXBwZW5kVG8oJ2JvZHknKTtcblxuICAvLyBIZWlnaHQgY2hhbmdlZCBiZWNhdXNlIHRoZSBjc3MgZnJvbSBjb2x1bW4tZmlsdGVycyBpcyBub3QgYXBwbGllZCBhbnkgbW9yZVxuICBsZXQgdG9wID0gcG9zaXRpb24udG9wICsgbWFyZ2luO1xuXG4gIC8vIERhdGVwaWNrZXIgaXMgc2V0dGxlIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgaWYgKGRhdGVwaWNrZXJXaWRnZXQuaGFzQ2xhc3MoJ3RvcCcpKSB7XG4gICAgdG9wICs9IG9yaWdpbmFsSGVpZ2h0IC0gZGF0ZXBpY2tlcldpZGdldC5vdXRlckhlaWdodCh0cnVlKSAtIG1hcmdpbjtcbiAgfVxuXG4gIGRhdGVwaWNrZXJXaWRnZXQuY3NzKHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3AsXG4gICAgYm90dG9tOiAnYXV0bycsXG4gICAgbGVmdDogcG9zaXRpb24ubGVmdCxcbiAgICByaWdodDogJ2F1dG8nLFxuICB9KTtcblxuICAkKHdpbmRvdykub24oJ3Jlc2l6ZScsIHJlcGxhY2VEYXRlUGlja2VyKTtcbn07XG5cbi8qKlxuICogRW5hYmxlIGFsbCBkYXRlcGlja2Vycy5cbiAqL1xuY29uc3QgaW5pdCA9IGZ1bmN0aW9uIGluaXREYXRlUGlja2VycygpIHtcbiAgY29uc3QgJGRhdGVQaWNrZXJzID0gJCgnLmRhdGVwaWNrZXIgaW5wdXRbdHlwZT1cInRleHRcIl0nKTtcbiAgJC5lYWNoKCRkYXRlUGlja2VycywgKGksIHBpY2tlcikgPT4ge1xuICAgICQocGlja2VyKVxuICAgICAgLmRhdGV0aW1lcGlja2VyKHtcbiAgICAgICAgbG9jYWxlOiB3aW5kb3cuZnVsbF9sYW5ndWFnZV9jb2RlLFxuICAgICAgICBmb3JtYXQ6ICQocGlja2VyKS5kYXRhKCdmb3JtYXQnKVxuICAgICAgICAgID8gJChwaWNrZXIpLmRhdGEoJ2Zvcm1hdCcpXG4gICAgICAgICAgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgIHNpZGVCeVNpZGU6IHRydWUsXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgdGltZTogJ3RpbWUnLFxuICAgICAgICAgIGRhdGU6ICdkYXRlJyxcbiAgICAgICAgICB1cDogJ3VwJyxcbiAgICAgICAgICBkb3duOiAnZG93bicsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLm9uKCdkcC5zaG93JywgcmVwbGFjZURhdGVQaWNrZXIpXG4gICAgICAub24oJ2RwLmhpZGUnLCAoKSA9PiB7XG4gICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZScsIHJlcGxhY2VEYXRlUGlja2VyKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2RwLmNoYW5nZScsIChlKSA9PiB7XG4gICAgICAgIC8vIExvb2tzIGxpa2Ugd2UgY2FuJ3QgYmluZCBhbiBldmVudCB0byBhIGRhdGVwaWNrZXIgc2VsZWN0ZWQgYWZ0ZXJ3aGlsZS5cbiAgICAgICAgLy8gU28gd2UgZW1pdCBhbiBldmVudCBvbiBjaGFuZ2UgdG8gbWFuaXB1bGF0ZSBkYXRhc1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgnZGF0ZXBpY2tlckNoYW5nZScsIGUpO1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpbml0O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IHB1bnljb2RlIGZyb20gJ3B1bnljb2RlJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24gaW5pdEVtYWlsRmllbGRzKHNlbGVjdG9yKSB7XG4gIGNvbnN0ICRlbWFpbEZpZWxkcyA9ICQoc2VsZWN0b3IpO1xuICAkLmVhY2goJGVtYWlsRmllbGRzLCAoaSwgZmllbGQpID0+IHtcbiAgICBpZiAoIWZpZWxkLmNoZWNrVmFsaWRpdHkoKSkge1xuICAgICAgY29uc3QgcGFydHMgPSBmaWVsZC52YWx1ZS5zcGxpdCgnQCcpO1xuXG4gICAgICAvLyBpZiBsb2NhbCBwYXJ0IGlzIG5vdCBBU0NJSSBvbmx5LCBjaHJvbWUgd2lsbCBub3QgYXV0by1jb252ZXJ0IHRoZSBkb21haW4gcGFydCB0byB1dGY4XG4gICAgICBpZiAocHVueWNvZGUudG9BU0NJSShwYXJ0c1swXSkgPT09IHBhcnRzWzBdKSB7XG4gICAgICAgIGZpZWxkLnZhbHVlID0gcHVueWNvZGUudG9BU0NJSShmaWVsZC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBFbmFibGUgYWxsIGRhdGVwaWNrZXJzLlxuICovXG5jb25zdCBpbml0SW52YWxpZEZpZWxkcyA9ICgpID0+IHtcbiAgJCgnaW5wdXQsc2VsZWN0LHRleHRhcmVhJykub24oJ2ludmFsaWQnLCBmdW5jdGlvbiBzY3JvbGwoKSB7XG4gICAgdGhpcy5zY3JvbGxJbnRvVmlldyhmYWxzZSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaW5pdEludmFsaWRGaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBUcmFuc2xhdGFibGVGaWVsZCBmcm9tICdAanMvY29tcG9uZW50cy90cmFuc2xhdGFibGUtZmllbGQuanMnO1xuaW1wb3J0IFRyYW5zbGF0YWJsZUlucHV0IGZyb20gJ0Bqcy9jb21wb25lbnRzL3RyYW5zbGF0YWJsZS1pbnB1dC5qcyc7XG5pbXBvcnQgVGlueU1DRUVkaXRvciBmcm9tICdAanMvY29tcG9uZW50cy90aW55bWNlLWVkaXRvci5qcyc7XG5pbXBvcnQgVGFnZ2FibGVGaWVsZCBmcm9tICdAanMvY29tcG9uZW50cy90YWdnYWJsZS1maWVsZC5qcyc7XG5pbXBvcnQgQ2hvaWNlVGFibGUgZnJvbSAnQGpzL2NvbXBvbmVudHMvY2hvaWNlLXRhYmxlLmpzJztcbmltcG9ydCBDaG9pY2VUcmVlIGZyb20gJ0Bqcy9jb21wb25lbnRzL2Zvcm0vY2hvaWNlLXRyZWUuanMnO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlVGFibGUgZnJvbSAnQGpzL2NvbXBvbmVudHMvbXVsdGlwbGUtY2hvaWNlLXRhYmxlLmpzJztcbmltcG9ydCBHZW5lcmF0YWJsZUlucHV0IGZyb20gJ0Bqcy9jb21wb25lbnRzL2dlbmVyYXRhYmxlLWlucHV0LmpzJztcbmltcG9ydCBDb3VudHJ5U3RhdGVTZWxlY3Rpb25Ub2dnbGVyIGZyb20gJ0Bjb21wb25lbnRzL2NvdW50cnktc3RhdGUtc2VsZWN0aW9uLXRvZ2dsZXInO1xuaW1wb3J0IENvdW50cnlEbmlSZXF1aXJlZFRvZ2dsZXIgZnJvbSAnQGNvbXBvbmVudHMvY291bnRyeS1kbmktcmVxdWlyZWQtdG9nZ2xlcic7XG5pbXBvcnQgVGV4dFdpdGhMZW5ndGhDb3VudGVyIGZyb20gJ0Bjb21wb25lbnRzL2Zvcm0vdGV4dC13aXRoLWxlbmd0aC1jb3VudGVyJztcbmltcG9ydCBQcmV2aWV3T3BlbmVyIGZyb20gJ0Bjb21wb25lbnRzL2Zvcm0vcHJldmlldy1vcGVuZXInO1xuaW1wb3J0IE11bHRpc3RvcmVDb25maWdGaWVsZCBmcm9tICdAanMvY29tcG9uZW50cy9mb3JtL211bHRpc3RvcmUtY29uZmlnLWZpZWxkLmpzJztcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tICdAY29tcG9uZW50cy9ldmVudC1lbWl0dGVyJztcbmltcG9ydCBHcmlkIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZ3JpZCc7XG5pbXBvcnQgUm91dGVyIGZyb20gJ0Bjb21wb25lbnRzL3JvdXRlcic7XG5cbi8vIEdyaWQgZXh0ZW5zaW9uc1xuaW1wb3J0IEFzeW5jVG9nZ2xlQ29sdW1uRXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2NvbHVtbi9jb21tb24vYXN5bmMtdG9nZ2xlLWNvbHVtbi1leHRlbnNpb24nO1xuaW1wb3J0IEJ1bGtBY3Rpb25DaGVja2JveEV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9idWxrLWFjdGlvbi1jaGVja2JveC1leHRlbnNpb24nO1xuaW1wb3J0IEJ1bGtPcGVuVGFic0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9idWxrLW9wZW4tdGFicy1leHRlbnNpb24nO1xuaW1wb3J0IENob2ljZUV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9jaG9pY2UtZXh0ZW5zaW9uJztcbmltcG9ydCBDb2x1bW5Ub2dnbGluZ0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9jb2x1bW4tdG9nZ2xpbmctZXh0ZW5zaW9uJztcbmltcG9ydCBFeHBvcnRUb1NxbE1hbmFnZXJFeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vZXhwb3J0LXRvLXNxbC1tYW5hZ2VyLWV4dGVuc2lvbic7XG5pbXBvcnQgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL2ZpbHRlcnMtcmVzZXQtZXh0ZW5zaW9uLmpzJztcbmltcG9ydCBGaWx0ZXJzU3VibWl0QnV0dG9uRW5hYmxlckV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9maWx0ZXJzLXN1Ym1pdC1idXR0b24tZW5hYmxlci1leHRlbnNpb24nO1xuaW1wb3J0IExpbmtSb3dBY3Rpb25FeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vbGluay1yb3ctYWN0aW9uLWV4dGVuc2lvbic7XG5pbXBvcnQgTW9kYWxGb3JtU3VibWl0RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL21vZGFsLWZvcm0tc3VibWl0LWV4dGVuc2lvbic7XG5pbXBvcnQgUG9zaXRpb25FeHRlbnNpb24gZnJvbSAnQGNvbXBvbmVudHMvZ3JpZC9leHRlbnNpb24vcG9zaXRpb24tZXh0ZW5zaW9uJztcbmltcG9ydCBQcmV2aWV3RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3ByZXZpZXctZXh0ZW5zaW9uJztcbmltcG9ydCBSZWxvYWRMaXN0RXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3JlbG9hZC1saXN0LWV4dGVuc2lvbic7XG5pbXBvcnQgU29ydGluZ0V4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9zb3J0aW5nLWV4dGVuc2lvbic7XG5pbXBvcnQgU3VibWl0QnVsa0FjdGlvbkV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9zdWJtaXQtYnVsay1hY3Rpb24tZXh0ZW5zaW9uJztcbmltcG9ydCBTdWJtaXRHcmlkQWN0aW9uRXh0ZW5zaW9uIGZyb20gJ0Bjb21wb25lbnRzL2dyaWQvZXh0ZW5zaW9uL3N1Ym1pdC1ncmlkLWFjdGlvbi1leHRlbnNpb24nO1xuaW1wb3J0IFN1Ym1pdFJvd0FjdGlvbkV4dGVuc2lvbiBmcm9tICdAY29tcG9uZW50cy9ncmlkL2V4dGVuc2lvbi9hY3Rpb24vcm93L3N1Ym1pdC1yb3ctYWN0aW9uLWV4dGVuc2lvbic7XG5cbmNvbnN0IEdyaWRFeHRlbnNpb25zID0ge1xuICBBc3luY1RvZ2dsZUNvbHVtbkV4dGVuc2lvbixcbiAgQnVsa0FjdGlvbkNoZWNrYm94RXh0ZW5zaW9uLFxuICBCdWxrT3BlblRhYnNFeHRlbnNpb24sXG4gIENob2ljZUV4dGVuc2lvbixcbiAgQ29sdW1uVG9nZ2xpbmdFeHRlbnNpb24sXG4gIEV4cG9ydFRvU3FsTWFuYWdlckV4dGVuc2lvbixcbiAgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uLFxuICBGaWx0ZXJzU3VibWl0QnV0dG9uRW5hYmxlckV4dGVuc2lvbixcbiAgTGlua1Jvd0FjdGlvbkV4dGVuc2lvbixcbiAgTW9kYWxGb3JtU3VibWl0RXh0ZW5zaW9uLFxuICBQb3NpdGlvbkV4dGVuc2lvbixcbiAgUHJldmlld0V4dGVuc2lvbixcbiAgUmVsb2FkTGlzdEV4dGVuc2lvbixcbiAgU29ydGluZ0V4dGVuc2lvbixcbiAgU3VibWl0QnVsa0FjdGlvbkV4dGVuc2lvbixcbiAgU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbixcbiAgU3VibWl0Um93QWN0aW9uRXh0ZW5zaW9uLFxufTtcblxuY29uc3QgaW5pdFByZXN0YXNob3BDb21wb25lbnRzID0gKCkgPT4ge1xuICB3aW5kb3cucHJlc3Rhc2hvcCA9IHsuLi53aW5kb3cucHJlc3Rhc2hvcH07XG5cbiAgaWYgKCF3aW5kb3cucHJlc3Rhc2hvcC5pbnN0YW5jZSkge1xuICAgIHdpbmRvdy5wcmVzdGFzaG9wLmluc3RhbmNlID0ge307XG4gIH1cblxuICB3aW5kb3cucHJlc3Rhc2hvcC5jb21wb25lbnQgPSB7XG4gICAgaW5pdENvbXBvbmVudHMoY29tcG9uZW50cykge1xuICAgICAgY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHdpbmRvdy5wcmVzdGFzaG9wLmNvbXBvbmVudFtjb21wb25lbnRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBQcmVzdGFTaG9wIGNvbXBvbmVudCBcIiR7Y29tcG9uZW50fVwiLiBUaGlzIGNvbXBvbmVudCBkb2Vzbid0IGV4aXN0LmApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2VOYW1lID0gY29tcG9uZW50LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgY29tcG9uZW50LnNsaWNlKDEpO1xuXG4gICAgICAgIGlmICh3aW5kb3cucHJlc3Rhc2hvcC5pbnN0YW5jZVtjb21wb25lbnRJbnN0YW5jZU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGluaXRpYWxpemUgUHJlc3RhU2hvcCBjb21wb25lbnQgXCIke2NvbXBvbmVudH1cIi4gVGhpcyBjb21wb25lbnQgaXMgYWxyZWFkeSBpbml0aWFsaXplZC5gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFdmVudEVtaXR0ZXIgaXMgYSBzcGVjaWFsIGNhc2UgaXQgaGFzIG5vIGNvbnN0cnVjdG9yIGFuZCBjb3VsZCBiZSB1c2VkIHZpYVxuICAgICAgICAvLyB3aW5kb3cucHJlc3Rhc2hvcC5jb21wb25lbnQuRXZlbnRFbWl0dGVyIHN0cmFpZ2h0IGF3YXlcbiAgICAgICAgaWYgKGNvbXBvbmVudCA9PT0gJ0V2ZW50RW1pdHRlcicpIHtcbiAgICAgICAgICB3aW5kb3cucHJlc3Rhc2hvcC5pbnN0YW5jZVtjb21wb25lbnRJbnN0YW5jZU5hbWVdID0gd2luZG93LnByZXN0YXNob3AuY29tcG9uZW50W2NvbXBvbmVudF07XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cucHJlc3Rhc2hvcC5pbnN0YW5jZVtjb21wb25lbnRJbnN0YW5jZU5hbWVdID0gbmV3IHdpbmRvdy5wcmVzdGFzaG9wLmNvbXBvbmVudFtjb21wb25lbnRdKCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2VuZCBhbiBldmVudCBzbyBleHRlcm5hbCB1c2VycyBjYW4gaW5pdGlhdGUgdGhlaXIgb3duIGNvbXBvbmVudHNcbiAgICAgIEV2ZW50RW1pdHRlci5lbWl0KCdQU0NvbXBvbmVudHNJbml0aWF0ZWQnKTtcbiAgICB9LFxuICAgIC8vIEB0b2RvOiBhZGQgYWxsIHN0YW5kYXJkIGNvbXBvbmVudHMgaW4gdGhpcyBsaXN0XG4gICAgVHJhbnNsYXRhYmxlRmllbGQsXG4gICAgVGlueU1DRUVkaXRvcixcbiAgICBUcmFuc2xhdGFibGVJbnB1dCxcbiAgICBUYWdnYWJsZUZpZWxkLFxuICAgIENob2ljZVRhYmxlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaG9pY2VUcmVlLFxuICAgIE11bHRpcGxlQ2hvaWNlVGFibGUsXG4gICAgR2VuZXJhdGFibGVJbnB1dCxcbiAgICBDb3VudHJ5U3RhdGVTZWxlY3Rpb25Ub2dnbGVyLFxuICAgIENvdW50cnlEbmlSZXF1aXJlZFRvZ2dsZXIsXG4gICAgVGV4dFdpdGhMZW5ndGhDb3VudGVyLFxuICAgIE11bHRpc3RvcmVDb25maWdGaWVsZCxcbiAgICBQcmV2aWV3T3BlbmVyLFxuICAgIEdyaWQsXG4gICAgR3JpZEV4dGVuc2lvbnMsXG4gICAgUm91dGVyLFxuICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGluaXRQcmVzdGFzaG9wQ29tcG9uZW50cztcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgZmluZEFsbFVud2FudGVkQ2hhcnNFeGNlcHRUaGVMYXRlc3RPbmUgPSAvKD86KD8hXi1cXGQrKSlbXlxcZF0rKD89LipbXlxcZF0pL2c7XG5jb25zdCBmaW5kQWxsVW53YW50ZWRDaGFycyA9IC8oPzooPyFeLVxcZCspKShbXlxcZF0rKS9nO1xuXG4vKipcbiAqIElmIHRoZXJlIGlzIGEgZG90IGluIHRoZSBzdHJpbmdcbiAqIHNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IGRvdCwgYW5kXG4gKiByZXBsYWNlIGFsbCB1bndhbnRlZCBjaGFyYWN0ZXJzLlxuICogT3RoZXJ3aXNlLCByZXBsYWNlIGFsbCB1bndhbnRlZCBjaGFyYWN0ZXJzIGV4cGVjdCB0aGVcbiAqIGxhdGVzdCBvbmUsIGFuZCByZXBsYWNlIHRoZSBsYXRlc3QgY2hhcmFjdGVyXG4gKiBieSBhIGRvdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybSA9ICh2YWx1ZSkgPT4ge1xuICBsZXQgdmFsID0gdmFsdWU7XG4gIGNvbnN0IHVud2FudGVkQ2hhcnMgPSB2YWwubWF0Y2goZmluZEFsbFVud2FudGVkQ2hhcnMpO1xuXG4gIGlmICh1bndhbnRlZENoYXJzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGlmICh1bndhbnRlZENoYXJzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCB1bmlxdWUgPSBbLi4ubmV3IFNldCh1bndhbnRlZENoYXJzKV07XG5cbiAgICBpZiAodW5pcXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHZhbC5yZXBsYWNlKGZpbmRBbGxVbndhbnRlZENoYXJzLCAnJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsID0gdmFsXG4gICAgLnJlcGxhY2UoZmluZEFsbFVud2FudGVkQ2hhcnNFeGNlcHRUaGVMYXRlc3RPbmUsICcnKVxuICAgIC5yZXBsYWNlKGZpbmRBbGxVbndhbnRlZENoYXJzLCAnLicpO1xuXG4gIHJldHVybiB2YWw7XG59O1xuXG5jb25zdCBjbGVhck51bWJlcklucHV0VmFsdWUgPSAoZXZlbnQsIHNlbGVjdG9yKSA9PiB7XG4gIGlmICghZXZlbnQudGFyZ2V0Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge3ZhbHVlfSA9IGV2ZW50LnRhcmdldDtcbiAgZXZlbnQudGFyZ2V0LnZhbHVlID0gdHJhbnNmb3JtKHZhbHVlKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChzZWxlY3RvcikgPT4ge1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdjaGFuZ2UnLFxuICAgIChldmVudCkgPT4ge1xuICAgICAgY2xlYXJOdW1iZXJJbnB1dFZhbHVlKGV2ZW50LCBzZWxlY3Rvcik7XG4gICAgfSxcbiAgICB0cnVlLFxuICApO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBTZW5kIGEgUG9zdCBSZXF1ZXN0IHRvIHJlc2V0IHNlYXJjaCBBY3Rpb24uXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24gcmVzZXRTZWFyY2godXJsLCByZWRpcmVjdFVybCkge1xuICAkLnBvc3QodXJsKS50aGVuKCgpID0+IHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24ocmVkaXJlY3RVcmwpKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBNYWtlcyBhIHRhYmxlIHNvcnRhYmxlIGJ5IGNvbHVtbnMuXG4gKiBUaGlzIGZvcmNlcyBhIHBhZ2UgcmVsb2FkIHdpdGggbW9yZSBxdWVyeSBwYXJhbWV0ZXJzLlxuICovXG5jbGFzcyBUYWJsZVNvcnRpbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtqUXVlcnl9IHRhYmxlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0YWJsZSkge1xuICAgIHRoaXMuc2VsZWN0b3IgPSAnLnBzLXNvcnRhYmxlLWNvbHVtbic7XG4gICAgdGhpcy5jb2x1bW5zID0gJCh0YWJsZSkuZmluZCh0aGlzLnNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyB0aGUgbGlzdGVuZXJzXG4gICAqL1xuICBhdHRhY2goKSB7XG4gICAgdGhpcy5jb2x1bW5zLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBjb25zdCAkY29sdW1uID0gJChlLmRlbGVnYXRlVGFyZ2V0KTtcbiAgICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIHRoaXMuZ2V0VG9nZ2xlZFNvcnREaXJlY3Rpb24oJGNvbHVtbikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdXNpbmcgYSBjb2x1bW4gbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIFwiYXNjXCIgb3IgXCJkZXNjXCJcbiAgICovXG4gIHNvcnRCeShjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICBjb25zdCAkY29sdW1uID0gdGhpcy5jb2x1bW5zLmlzKGBbZGF0YS1zb3J0LWNvbC1uYW1lPVwiJHtjb2x1bW5OYW1lfVwiXWApO1xuXG4gICAgaWYgKCEkY29sdW1uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzb3J0IGJ5IFwiJHtjb2x1bW5OYW1lfVwiOiBpbnZhbGlkIGNvbHVtbmApO1xuICAgIH1cblxuICAgIHRoaXMuc29ydEJ5Q29sdW1uKCRjb2x1bW4sIGRpcmVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB1c2luZyBhIGNvbHVtbiBlbGVtZW50XG4gICAqIEBwYXJhbSB7alF1ZXJ5fSBjb2x1bW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBcImFzY1wiIG9yIFwiZGVzY1wiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzb3J0QnlDb2x1bW4oY29sdW1uLCBkaXJlY3Rpb24pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSB0aGlzLmdldFVybChcbiAgICAgIGNvbHVtbi5kYXRhKCdzb3J0Q29sTmFtZScpLFxuICAgICAgKGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSA/ICdkZXNjJyA6ICdhc2MnLFxuICAgICAgY29sdW1uLmRhdGEoJ3NvcnRQcmVmaXgnKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGludmVydGVkIGRpcmVjdGlvbiB0byBzb3J0IGFjY29yZGluZyB0byB0aGUgY29sdW1uJ3MgY3VycmVudCBvbmVcbiAgICogQHBhcmFtIHtqUXVlcnl9IGNvbHVtblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRUb2dnbGVkU29ydERpcmVjdGlvbihjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRhdGEoJ3NvcnREaXJlY3Rpb24nKSA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1cmwgZm9yIHRoZSBzb3J0ZWQgdGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldFVybChjb2xOYW1lLCBkaXJlY3Rpb24sIHByZWZpeCkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwYXJhbXMuc2V0KGAke3ByZWZpeH1bb3JkZXJCeV1gLCBjb2xOYW1lKTtcbiAgICAgIHBhcmFtcy5zZXQoYCR7cHJlZml4fVtzb3J0T3JkZXJdYCwgZGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zLnNldCgnb3JkZXJCeScsIGNvbE5hbWUpO1xuICAgICAgcGFyYW1zLnNldCgnc29ydE9yZGVyJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGFibGVTb3J0aW5nO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIGJvb3RzdHJhcCBkcm9wZG93bnMgY2xvc2UgZG93biB3aGVuIHRoZSB1c2VyIGNsaWNrcyBhbnl3aGVyZS5cbiAqIFRoaXMgcGx1Z2luIGFsbG93cyBjbGlja2luZyBpbnNpZGUgdGhlIGRyb3Bkb3duIG1lbnUgd2hpbGUga2VlcGluZyBpdCBvcGVuLlxuICogSW4gb3JkZXIgdG8gbWFrZSBhIGRyb3Bkb3duIGJlaGF2ZSBsaWtlIHRoaXMsIHNpbXBseSBhZGQgdGhlIGNsYXNzIFwiZHJvcGRvd24tY2xpY2thYmxlXCIgdG8gaXRzIHBhcmVudCBlbGVtZW50LlxuICovXG4oKCQpID0+IHtcbiAgJC5mbi5jbGlja2FibGVEcm9wZG93biA9IGZ1bmN0aW9uIGNsaWNrYWJsZURyb3Bkb3duKCkge1xuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuZHJvcGRvd24tY2xpY2thYmxlIC5kcm9wZG93bi1tZW51JywgKGUpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBob29rIHVwIHRoZSBwbHVnaW5cbiAgJCgoKSA9PiB7XG4gICAgJChkb2N1bWVudCkuY2xpY2thYmxlRHJvcGRvd24oKTtcbiAgfSk7XG59KSh3aW5kb3cuJCk7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDaG9pY2VUYWJsZSBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgY29tbW9uIGFjdGlvbnMgaW4gY2hvaWNlIHRhYmxlIGZvcm0gdHlwZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaG9pY2VUYWJsZSB7XG4gIC8qKlxuICAgKiBJbml0IGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJy5qcy1jaG9pY2UtdGFibGUtc2VsZWN0LWFsbCcsIChlKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbChlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjay91bmNoZWNrIGFsbCBib3hlcyBpbiB0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKi9cbiAgaGFuZGxlU2VsZWN0QWxsKGV2ZW50KSB7XG4gICAgY29uc3QgJHNlbGVjdEFsbENoZWNrYm94ZXMgPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgY29uc3QgaXNTZWxlY3RBbGxDaGVja2VkID0gJHNlbGVjdEFsbENoZWNrYm94ZXMuaXMoJzpjaGVja2VkJyk7XG5cbiAgICAkc2VsZWN0QWxsQ2hlY2tib3hlcy5jbG9zZXN0KCd0YWJsZScpLmZpbmQoJ3Rib2R5IGlucHV0OmNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIGlzU2VsZWN0QWxsQ2hlY2tlZCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRvZ2dsZSBETkkgaW5wdXQgcmVxdWlyZW1lbnQgb24gY291bnRyeSBzZWxlY3Rpb25cbiAqXG4gKiBVc2FnZTpcbiAqXG4gKiA8IS0tIENvdW50cnkgc2VsZWN0IG9wdGlvbnMgbXVzdCBoYXZlIG5lZWRfZG5pIGF0dHJpYnV0ZSB3aGVuIG5lZWRlZCAtLT5cbiAqIDxzZWxlY3QgbmFtZT1cImlkX2NvdW50cnlcIiBpZD1cImlkX2NvdW50cnlcIiBzdGF0ZXMtdXJsPVwicGF0aC90by9zdGF0ZXMvYXBpXCI+XG4gKiAgIC4uLlxuICogICA8b3B0aW9uIHZhbHVlPVwiNlwiIG5lZWRfZG5pPVwiMVwiPlNwYWluPC92YWx1ZT5cbiAqICAgLi4uXG4gKiA8L3NlbGVjdD5cbiAqXG4gKiBJbiBKUzpcbiAqXG4gKiBuZXcgQ291bnRyeURuaVJlcXVpcmVkVG9nZ2xlcignI2lkX2NvdW50cnknLCAnI2lkX2NvdW50cnlfZG5pJywgJ2xhYmVsW2Zvcj1cImlkX2NvdW50cnlfZG5pXCJdJyk7XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvdW50cnlEbmlSZXF1aXJlZFRvZ2dsZXIge1xuICBjb25zdHJ1Y3Rvcihjb3VudHJ5SW5wdXRTZWxlY3RvciwgY291bnRyeURuaUlucHV0LCBjb3VudHJ5RG5pSW5wdXRMYWJlbCkge1xuICAgIHRoaXMuJGNvdW50cnlEbmlJbnB1dCA9ICQoY291bnRyeURuaUlucHV0KTtcbiAgICB0aGlzLiRjb3VudHJ5RG5pSW5wdXRMYWJlbCA9ICQoY291bnRyeURuaUlucHV0TGFiZWwpO1xuICAgIHRoaXMuJGNvdW50cnlJbnB1dCA9ICQoY291bnRyeUlucHV0U2VsZWN0b3IpO1xuICAgIHRoaXMuY291bnRyeUlucHV0U2VsZWN0ZWRTZWxlY3RvciA9IGAke2NvdW50cnlJbnB1dFNlbGVjdG9yfT5vcHRpb246c2VsZWN0ZWRgO1xuICAgIHRoaXMuY291bnRyeURuaUlucHV0TGFiZWxEYW5nZXJTZWxlY3RvciA9IGAke2NvdW50cnlEbmlJbnB1dExhYmVsfT5zcGFuLnRleHQtZGFuZ2VyYDtcblxuICAgIC8vIElmIGZpZWxkIGlzIHJlcXVpcmVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvdW50cnlcbiAgICAvLyBrZWVwIGl0IHJlcXVpcmVkXG4gICAgaWYgKHRoaXMuJGNvdW50cnlEbmlJbnB1dC5hdHRyKCdyZXF1aXJlZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4kY291bnRyeUlucHV0Lm9uKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLnRvZ2dsZSgpKTtcblxuICAgIC8vIHRvZ2dsZSBvbiBwYWdlIGxvYWRcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgRE5JIGlucHV0IHJlcXVpcmVkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGUoKSB7XG4gICAgJCh0aGlzLmNvdW50cnlEbmlJbnB1dExhYmVsRGFuZ2VyU2VsZWN0b3IpLnJlbW92ZSgpO1xuICAgIHRoaXMuJGNvdW50cnlEbmlJbnB1dC5wcm9wKCdyZXF1aXJlZCcsIGZhbHNlKTtcbiAgICBpZiAocGFyc2VJbnQoJCh0aGlzLmNvdW50cnlJbnB1dFNlbGVjdGVkU2VsZWN0b3IpLmF0dHIoJ25lZWRfZG5pJyksIDEwKSA9PT0gMSkge1xuICAgICAgdGhpcy4kY291bnRyeURuaUlucHV0LnByb3AoJ3JlcXVpcmVkJywgdHJ1ZSk7XG4gICAgICB0aGlzLiRjb3VudHJ5RG5pSW5wdXRMYWJlbC5wcmVwZW5kKCQoJzxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPicpKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIERpc3BsYXlzLCBmaWxscyBvciBoaWRlcyBTdGF0ZSBzZWxlY3Rpb24gYmxvY2sgZGVwZW5kaW5nIG9uIHNlbGVjdGVkIGNvdW50cnkuXG4gKlxuICogVXNhZ2U6XG4gKlxuICogPCEtLSBDb3VudHJ5IHNlbGVjdCBtdXN0IGhhdmUgdW5pcXVlIGlkZW50aWZpZXIgJiB1cmwgZm9yIHN0YXRlcyBBUEkgLS0+XG4gKiA8c2VsZWN0IG5hbWU9XCJpZF9jb3VudHJ5XCIgaWQ9XCJpZF9jb3VudHJ5XCIgc3RhdGVzLXVybD1cInBhdGgvdG8vc3RhdGVzL2FwaVwiPlxuICogICAuLi5cbiAqIDwvc2VsZWN0PlxuICpcbiAqIDwhLS0gSWYgc2VsZWN0ZWQgY291bnRyeSBkb2VzIG5vdCBoYXZlIHN0YXRlcywgdGhlbiB0aGlzIGJsb2NrIHdpbGwgYmUgaGlkZGVuIC0tPlxuICogPGRpdiBjbGFzcz1cImpzLXN0YXRlLXNlbGVjdGlvbi1ibG9ja1wiPlxuICogICA8c2VsZWN0IG5hbWU9XCJpZF9zdGF0ZVwiPlxuICogICAgIC4uLlxuICogICA8L3NlbGVjdD5cbiAqIDwvZGl2PlxuICpcbiAqIEluIEpTOlxuICpcbiAqIG5ldyBDb3VudHJ5U3RhdGVTZWxlY3Rpb25Ub2dnbGVyKCcjaWRfY291bnRyeScsICcjaWRfc3RhdGUnLCAnLmpzLXN0YXRlLXNlbGVjdGlvbi1ibG9jaycpO1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb3VudHJ5U3RhdGVTZWxlY3Rpb25Ub2dnbGVyIHtcbiAgY29uc3RydWN0b3IoY291bnRyeUlucHV0U2VsZWN0b3IsIGNvdW50cnlTdGF0ZVNlbGVjdG9yLCBzdGF0ZVNlbGVjdGlvbkJsb2NrU2VsZWN0b3IpIHtcbiAgICB0aGlzLiRzdGF0ZVNlbGVjdGlvbkJsb2NrID0gJChzdGF0ZVNlbGVjdGlvbkJsb2NrU2VsZWN0b3IpO1xuICAgIHRoaXMuJGNvdW50cnlTdGF0ZVNlbGVjdG9yID0gJChjb3VudHJ5U3RhdGVTZWxlY3Rvcik7XG4gICAgdGhpcy4kY291bnRyeUlucHV0ID0gJChjb3VudHJ5SW5wdXRTZWxlY3Rvcik7XG5cbiAgICB0aGlzLiRjb3VudHJ5SW5wdXQub24oJ2NoYW5nZScsICgpID0+IHRoaXMuY2hhbmdlKCkpO1xuXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSBTdGF0ZSBzZWxlY3Rpb25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNoYW5nZSgpIHtcbiAgICBjb25zdCBjb3VudHJ5SWQgPSB0aGlzLiRjb3VudHJ5SW5wdXQudmFsKCk7XG5cbiAgICBpZiAoY291bnRyeUlkID09PSAnJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkLmdldCh7XG4gICAgICB1cmw6IHRoaXMuJGNvdW50cnlJbnB1dC5kYXRhKCdzdGF0ZXMtdXJsJyksXG4gICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgZGF0YToge1xuICAgICAgICBpZF9jb3VudHJ5OiBjb3VudHJ5SWQsXG4gICAgICB9LFxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy4kY291bnRyeVN0YXRlU2VsZWN0b3IuZW1wdHkoKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5zdGF0ZXMpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy4kY291bnRyeVN0YXRlU2VsZWN0b3IuYXBwZW5kKFxuICAgICAgICAgICAgJCgnPG9wdGlvbj48L29wdGlvbj4nKVxuICAgICAgICAgICAgICAuYXR0cigndmFsdWUnLCByZXNwb25zZS5zdGF0ZXNbdmFsdWVdKVxuICAgICAgICAgICAgICAudGV4dCh2YWx1ZSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UucmVzcG9uc2VKU09OICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHdpbmRvdy5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlLnJlc3BvbnNlSlNPTi5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy4kc3RhdGVTZWxlY3Rpb25CbG9jay50b2dnbGVDbGFzcygnZC1ub25lJywgIXRoaXMuJGNvdW50cnlTdGF0ZVNlbGVjdG9yLmZpbmQoJ29wdGlvbicpLmxlbmd0aCA+IDApO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBFdmVudEVtaXR0ZXJDbGFzcyBmcm9tICdldmVudHMnO1xuXG4vKipcbiAqIFdlIGluc3RhbmNpYXRlIG9uZSBFdmVudEVtaXR0ZXIgKHJlc3RyaWN0ZWQgdmlhIGEgY29uc3QpIHNvIHRoYXQgZXZlcnkgY29tcG9uZW50c1xuICogcmVnaXN0ZXIvZGlzcGF0Y2ggb24gdGhlIHNhbWUgb25lIGFuZCBjYW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlckNsYXNzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50RW1pdHRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIEhhbmRsZXMgVUkgaW50ZXJhY3Rpb25zIG9mIGNob2ljZSB0cmVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENob2ljZVRyZWUge1xuICAvKipcbiAgICogQHBhcmFtIHtTdHJpbmd9IHRyZWVTZWxlY3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IodHJlZVNlbGVjdG9yKSB7XG4gICAgdGhpcy4kY29udGFpbmVyID0gJCh0cmVlU2VsZWN0b3IpO1xuXG4gICAgdGhpcy4kY29udGFpbmVyLm9uKCdjbGljaycsICcuanMtaW5wdXQtd3JhcHBlcicsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgJGlucHV0V3JhcHBlciA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG5cbiAgICAgIHRoaXMudG9nZ2xlQ2hpbGRUcmVlKCRpbnB1dFdyYXBwZXIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kY29udGFpbmVyLm9uKCdjbGljaycsICcuanMtdG9nZ2xlLWNob2ljZS10cmVlLWFjdGlvbicsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgJGFjdGlvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG5cbiAgICAgIHRoaXMudG9nZ2xlVHJlZSgkYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVBdXRvQ2hlY2tDaGlsZHJlbjogKCkgPT4gdGhpcy5lbmFibGVBdXRvQ2hlY2tDaGlsZHJlbigpLFxuICAgICAgZW5hYmxlQWxsSW5wdXRzOiAoKSA9PiB0aGlzLmVuYWJsZUFsbElucHV0cygpLFxuICAgICAgZGlzYWJsZUFsbElucHV0czogKCkgPT4gdGhpcy5kaXNhYmxlQWxsSW5wdXRzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgYXV0b21hdGljIGNoZWNrL3VuY2hlY2sgb2YgY2xpY2tlZCBpdGVtJ3MgY2hpbGRyZW4uXG4gICAqL1xuICBlbmFibGVBdXRvQ2hlY2tDaGlsZHJlbigpIHtcbiAgICB0aGlzLiRjb250YWluZXIub24oJ2NoYW5nZScsICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0ICRjbGlja2VkQ2hlY2tib3ggPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgY29uc3QgJGl0ZW1XaXRoQ2hpbGRyZW4gPSAkY2xpY2tlZENoZWNrYm94LmNsb3Nlc3QoJ2xpJyk7XG5cbiAgICAgICRpdGVtV2l0aENoaWxkcmVuXG4gICAgICAgIC5maW5kKCd1bCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKVxuICAgICAgICAucHJvcCgnY2hlY2tlZCcsICRjbGlja2VkQ2hlY2tib3guaXMoJzpjaGVja2VkJykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhbGwgaW5wdXRzIGluIHRoZSBjaG9pY2UgdHJlZS5cbiAgICovXG4gIGVuYWJsZUFsbElucHV0cygpIHtcbiAgICB0aGlzLiRjb250YWluZXIuZmluZCgnaW5wdXQnKS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgYWxsIGlucHV0cyBpbiB0aGUgY2hvaWNlIHRyZWUuXG4gICAqL1xuICBkaXNhYmxlQWxsSW5wdXRzKCkge1xuICAgIHRoaXMuJGNvbnRhaW5lci5maW5kKCdpbnB1dCcpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ29sbGFwc2Ugb3IgZXhwYW5kIHN1Yi10cmVlIGZvciBzaW5nbGUgcGFyZW50XG4gICAqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkaW5wdXRXcmFwcGVyXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGVDaGlsZFRyZWUoJGlucHV0V3JhcHBlcikge1xuICAgIGNvbnN0ICRwYXJlbnRXcmFwcGVyID0gJGlucHV0V3JhcHBlci5jbG9zZXN0KCdsaScpO1xuXG4gICAgaWYgKCRwYXJlbnRXcmFwcGVyLmhhc0NsYXNzKCdleHBhbmRlZCcpKSB7XG4gICAgICAkcGFyZW50V3JhcHBlclxuICAgICAgICAucmVtb3ZlQ2xhc3MoJ2V4cGFuZGVkJylcbiAgICAgICAgLmFkZENsYXNzKCdjb2xsYXBzZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgkcGFyZW50V3JhcHBlci5oYXNDbGFzcygnY29sbGFwc2VkJykpIHtcbiAgICAgICRwYXJlbnRXcmFwcGVyXG4gICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2VkJylcbiAgICAgICAgLmFkZENsYXNzKCdleHBhbmRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsYXBzZSBvciBleHBhbmQgd2hvbGUgdHJlZVxuICAgKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGFjdGlvblxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdG9nZ2xlVHJlZSgkYWN0aW9uKSB7XG4gICAgY29uc3QgJHBhcmVudENvbnRhaW5lciA9ICRhY3Rpb24uY2xvc2VzdCgnLmpzLWNob2ljZS10cmVlLWNvbnRhaW5lcicpO1xuICAgIGNvbnN0IGFjdGlvbiA9ICRhY3Rpb24uZGF0YSgnYWN0aW9uJyk7XG5cbiAgICAvLyB0b2dnbGUgYWN0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBhZGRDbGFzczoge1xuICAgICAgICBleHBhbmQ6ICdleHBhbmRlZCcsXG4gICAgICAgIGNvbGxhcHNlOiAnY29sbGFwc2VkJyxcbiAgICAgIH0sXG4gICAgICByZW1vdmVDbGFzczoge1xuICAgICAgICBleHBhbmQ6ICdjb2xsYXBzZWQnLFxuICAgICAgICBjb2xsYXBzZTogJ2V4cGFuZGVkJyxcbiAgICAgIH0sXG4gICAgICBuZXh0QWN0aW9uOiB7XG4gICAgICAgIGV4cGFuZDogJ2NvbGxhcHNlJyxcbiAgICAgICAgY29sbGFwc2U6ICdleHBhbmQnLFxuICAgICAgfSxcbiAgICAgIHRleHQ6IHtcbiAgICAgICAgZXhwYW5kOiAnY29sbGFwc2VkLXRleHQnLFxuICAgICAgICBjb2xsYXBzZTogJ2V4cGFuZGVkLXRleHQnLFxuICAgICAgfSxcbiAgICAgIGljb246IHtcbiAgICAgICAgZXhwYW5kOiAnY29sbGFwc2VkLWljb24nLFxuICAgICAgICBjb2xsYXBzZTogJ2V4cGFuZGVkLWljb24nLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgJHBhcmVudENvbnRhaW5lci5maW5kKCdsaScpLmVhY2goKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgICBjb25zdCAkaXRlbSA9ICQoaXRlbSk7XG5cbiAgICAgIGlmICgkaXRlbS5oYXNDbGFzcyhjb25maWcucmVtb3ZlQ2xhc3NbYWN0aW9uXSkpIHtcbiAgICAgICAgJGl0ZW0ucmVtb3ZlQ2xhc3MoY29uZmlnLnJlbW92ZUNsYXNzW2FjdGlvbl0pXG4gICAgICAgICAgLmFkZENsYXNzKGNvbmZpZy5hZGRDbGFzc1thY3Rpb25dKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgICRhY3Rpb24uZGF0YSgnYWN0aW9uJywgY29uZmlnLm5leHRBY3Rpb25bYWN0aW9uXSk7XG4gICAgJGFjdGlvbi5maW5kKCcubWF0ZXJpYWwtaWNvbnMnKS50ZXh0KCRhY3Rpb24uZGF0YShjb25maWcuaWNvblthY3Rpb25dKSk7XG4gICAgJGFjdGlvbi5maW5kKCcuanMtdG9nZ2xlLXRleHQnKS50ZXh0KCRhY3Rpb24uZGF0YShjb25maWcudGV4dFthY3Rpb25dKSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXN0b3JlQ29uZmlnRmllbGQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnVwZGF0ZU11bHRpc3RvcmVGaWVsZE9uQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVNdWx0aXN0b3JlRmllbGRPbkNoYW5nZSgpIHtcbiAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJy5tdWx0aXN0b3JlLWNoZWNrYm94JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5wdXQgPSAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwJykuZmluZCgnOmlucHV0Om5vdCgubXVsdGlzdG9yZS1jaGVja2JveCknKTtcbiAgICAgIGNvbnN0IGlucHV0Q29udGFpbmVyID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cCcpLmZpbmQoJy5pbnB1dC1jb250YWluZXInKTtcbiAgICAgIGNvbnN0IGxhYmVsQ29udGFpbmVyID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cCcpLmZpbmQoJy5mb3JtLWNvbnRyb2wtbGFiZWwnKTtcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9ICQodGhpcykuaXMoJzpjaGVja2VkJyk7XG4gICAgICBpbnB1dENvbnRhaW5lci50b2dnbGVDbGFzcygnZGlzYWJsZWQnLCAhaXNDaGVja2VkKTtcbiAgICAgIGxhYmVsQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCdkaXNhYmxlZCcsICFpc0NoZWNrZWQpO1xuICAgICAgaW5wdXQucHJvcCgnZGlzYWJsZWQnLCAhaXNDaGVja2VkKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogUmVzcG9uc2libGUgZm9yIG9wZW5pbmcgYW5vdGhlciBwYWdlIHdpdGggc3BlY2lmaWVkIHVybC5cbiAqIEZvciBleGFtcGxlIHVzZWQgaW4gJ1NhdmUgYW5kIHByZXZpZXcnIGNtcyBwYWdlIGNyZWF0ZS9lZGl0IGFjdGlvbnMuXG4gKlxuICogVXNhZ2U6IEluIHNlbGVjdG9yIGVsZW1lbnQgYXR0ciAnZGF0YS1wcmV2aWV3LXVybCcgcHJvdmlkZSBwYWdlIHVybC5cbiAqIFRoZSBwYWdlIHdpbGwgYmUgb3BlbmVkIG9uY2UgcHJvdmlkZWQgJ29wZW5fcHJldmlldycgcGFyYW1ldGVyIGluIHF1ZXJ5IHVybFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmV2aWV3T3BlbmVyIHtcbiAgY29uc3RydWN0b3IocHJldmlld1VybFNlbGVjdG9yKSB7XG4gICAgdGhpcy5wcmV2aWV3VXJsID0gJChwcmV2aWV3VXJsU2VsZWN0b3IpLmRhdGEoJ3ByZXZpZXctdXJsJyk7XG4gICAgdGhpcy5vcGVuKCk7XG5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgbmV3IHBhZ2Ugb2YgcHJvdmlkZWQgdXJsXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBvcGVuKCkge1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cbiAgICBpZiAodGhpcy5wcmV2aWV3VXJsICYmIHVybFBhcmFtcy5oYXMoJ29wZW5fcHJldmlldycpKSB7XG4gICAgICB3aW5kb3cub3Blbih0aGlzLnByZXZpZXdVcmwsICdfYmxhbmsnKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIFRleHRXaXRoTGVuZ3RoQ291bnRlciBoYW5kbGVzIGlucHV0IHdpdGggbGVuZ3RoIGNvdW50ZXIgVUkuXG4gKlxuICogVXNhZ2U6XG4gKlxuICogVGhlcmUgbXVzdCBiZSBhbiBlbGVtZW50IHRoYXQgd3JhcHMgYm90aCBpbnB1dCAmIGNvdW50ZXIgZGlzcGxheSB3aXRoIFwiLmpzLXRleHQtd2l0aC1sZW5ndGgtY291bnRlclwiIGNsYXNzLlxuICogQ291bnRlciBkaXNwbGF5IG11c3QgaGF2ZSBcIi5qcy1jb3VudGFibGUtdGV4dC1kaXNwbGF5XCIgY2xhc3MgYW5kIGlucHV0IG11c3QgaGF2ZSBcIi5qcy1jb3VudGFibGUtdGV4dC1pbnB1dFwiIGNsYXNzLlxuICogVGV4dCBpbnB1dCBtdXN0IGhhdmUgXCJkYXRhLW1heC1sZW5ndGhcIiBhdHRyaWJ1dGUuXG4gKlxuICogPGRpdiBjbGFzcz1cImpzLXRleHQtd2l0aC1sZW5ndGgtY291bnRlclwiPlxuICogIDxzcGFuIGNsYXNzPVwianMtY291bnRhYmxlLXRleHRcIj48L3NwYW4+XG4gKiAgPGlucHV0IGNsYXNzPVwianMtY291bnRhYmxlLWlucHV0XCIgZGF0YS1tYXgtbGVuZ3RoPVwiMjU1XCI+XG4gKiA8L2Rpdj5cbiAqXG4gKiBJbiBKYXZhc2NyaXB0IHlvdSBtdXN0IGVuYWJsZSB0aGlzIGNvbXBvbmVudDpcbiAqXG4gKiBuZXcgVGV4dFdpdGhMZW5ndGhDb3VudGVyKCk7XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHRXaXRoTGVuZ3RoQ291bnRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMud3JhcHBlclNlbGVjdG9yID0gJy5qcy10ZXh0LXdpdGgtbGVuZ3RoLWNvdW50ZXInO1xuICAgIHRoaXMudGV4dFNlbGVjdG9yID0gJy5qcy1jb3VudGFibGUtdGV4dCc7XG4gICAgdGhpcy5pbnB1dFNlbGVjdG9yID0gJy5qcy1jb3VudGFibGUtaW5wdXQnO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2lucHV0JywgYCR7dGhpcy53cmFwcGVyU2VsZWN0b3J9ICR7dGhpcy5pbnB1dFNlbGVjdG9yfWAsIChlKSA9PiB7XG4gICAgICBjb25zdCAkaW5wdXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICBjb25zdCByZW1haW5pbmdMZW5ndGggPSAkaW5wdXQuZGF0YSgnbWF4LWxlbmd0aCcpIC0gJGlucHV0LnZhbCgpLmxlbmd0aDtcblxuICAgICAgJGlucHV0LmNsb3Nlc3QodGhpcy53cmFwcGVyU2VsZWN0b3IpLmZpbmQodGhpcy50ZXh0U2VsZWN0b3IpLnRleHQocmVtYWluaW5nTGVuZ3RoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb20gdmFsdWVzIGZvciBpbnB1dHMuXG4gKlxuICogVXNhZ2U6XG4gKlxuICogVGhlcmUgc2hvdWxkIGJlIGEgYnV0dG9uIGluIEhUTUwgd2l0aCAyIHJlcXVpcmVkIGRhdGEtKiBwcm9wZXJ0aWVzOlxuICogICAgMS4gZGF0YS10YXJnZXQtaW5wdXQtaWQgLSBpbnB1dCBpZCBmb3Igd2hpY2ggdmFsdWUgc2hvdWxkIGJlIGdlbmVyYXRlZFxuICogICAgMi4gZGF0YS1nZW5lcmF0ZWQtdmFsdWUtc2l6ZSAtXG4gKlxuICogRXhhbXBsZSBidXR0b246IDxidXR0b24gY2xhc3M9XCJqcy1nZW5lcmF0b3ItYnRuXCJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0LWlucHV0LWlkPVwibXktaW5wdXQtaWRcIlxuICogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1nZW5lcmF0ZWQtdmFsdWUtbGVuZ3RoPVwiMTZcIlxuICogICAgICAgICAgICAgICAgID5cbiAqICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUhXG4gKiAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gKlxuICogSW4gSmF2YVNjcmlwdCB5b3UgaGF2ZSB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5IHVzaW5nIEdlbmVyYXRhYmxlSW5wdXQgY29tcG9uZW50IGxpa2Ugc286XG4gKlxuICogY29uc3QgZ2VuZXJhdGVhYmxlSW5wdXQgPSBuZXcgR2VuZXJhdGFibGVJbnB1dCgpO1xuICogZ2VuZXJhdGVhYmxlSW5wdXQuYXR0YWNoT24oJy5qcy1nZW5lcmF0b3ItYnRuJyk7IC8vIGV2ZXJ5IHRpbWUgb3VyIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgd2lsbCBnZW5lcmF0ZSByYW5kb20gdmFsdWUgb2YgMTYgY2hhcmFjdGVyc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBpbnB1dCB3aXRoIGlkIG9mIFwibXktaW5wdXQtaWRcIlxuICpcbiAqIFlvdSBjYW4gYXR0YWNoIGFzIG1hbnkgZGlmZmVyZW50IGJ1dHRvbnMgYXMgeW91IGxpa2UgdXNpbmcgXCJhdHRhY2hPbigpXCIgZnVuY3Rpb25cbiAqIGFzIGxvbmcgYXMgMiByZXF1aXJlZCBkYXRhLSogYXR0cmlidXRlcyBhcmUgcHJlc2VudCBhdCBlYWNoIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2VuZXJhdGFibGVJbnB1dCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRhY2hPbjogKGJ0blNlbGVjdG9yKSA9PiB0aGlzLmF0dGFjaE9uKGJ0blNlbGVjdG9yKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGV2ZW50IGxpc3RlbmVyIG9uIGJ1dHRvbiB0aGFuIGNhbiBnZW5lcmF0ZSB2YWx1ZVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZ2VuZXJhdG9yQnRuU2VsZWN0b3JcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGF0dGFjaE9uKGdlbmVyYXRvckJ0blNlbGVjdG9yKSB7XG4gICAgY29uc3QgZ2VuZXJhdG9yQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihnZW5lcmF0b3JCdG5TZWxlY3Rvcik7XG5cbiAgICBpZiAoZ2VuZXJhdG9yQnRuICE9PSBudWxsKSB7XG4gICAgICBnZW5lcmF0b3JCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qge2F0dHJpYnV0ZXN9ID0gZXZlbnQuY3VycmVudFRhcmdldDtcblxuICAgICAgICBjb25zdCB0YXJnZXRJbnB1dElkID0gYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ2RhdGEtdGFyZ2V0LWlucHV0LWlkJykudmFsdWU7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRlZFZhbHVlTGVuZ3RoID0gcGFyc2VJbnQoYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ2RhdGEtZ2VuZXJhdGVkLXZhbHVlLWxlbmd0aCcpLnZhbHVlLCAxMCk7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0SW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHt0YXJnZXRJbnB1dElkfWApO1xuICAgICAgICB0YXJnZXRJbnB1dC52YWx1ZSA9IHRoaXMuZ2VuZXJhdGVWYWx1ZShnZW5lcmF0ZWRWYWx1ZUxlbmd0aCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHJhbmRvbSB2YWx1ZSBmb3IgaW5wdXRcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2VuZXJhdGVWYWx1ZShsZW5ndGgpIHtcbiAgICBjb25zdCBjaGFycyA9ICcxMjM0NTY3ODlBQkNERUZHSElKS0xNTlBRUlNUVVZXWFlaJztcbiAgICBsZXQgZ2VuZXJhdGVkVmFsdWUgPSAnJztcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBnZW5lcmF0ZWRWYWx1ZSArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdlbmVyYXRlZFZhbHVlO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBDb25maXJtTW9kYWwgZnJvbSAnQGNvbXBvbmVudHMvbW9kYWwnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgU3VibWl0Um93QWN0aW9uRXh0ZW5zaW9uIGhhbmRsZXMgc3VibWl0dGluZyBvZiByb3cgYWN0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1Ym1pdFJvd0FjdGlvbkV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLXN1Ym1pdC1yb3ctYWN0aW9uJywgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCAkYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJGJ1dHRvbi5kYXRhKCdjb25maXJtTWVzc2FnZScpO1xuICAgICAgY29uc3QgY29uZmlybVRpdGxlID0gJGJ1dHRvbi5kYXRhKCd0aXRsZScpO1xuXG4gICAgICBjb25zdCBtZXRob2QgPSAkYnV0dG9uLmRhdGEoJ21ldGhvZCcpO1xuXG4gICAgICBpZiAoY29uZmlybVRpdGxlKSB7XG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1Nb2RhbCgkYnV0dG9uLCBncmlkLCBjb25maXJtTWVzc2FnZSwgY29uZmlybVRpdGxlLCBtZXRob2QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbmZpcm1NZXNzYWdlLmxlbmd0aCAmJiAhd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3N0Rm9ybSgkYnV0dG9uLCBtZXRob2QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcG9zdEZvcm0oJGJ1dHRvbiwgbWV0aG9kKSB7XG4gICAgY29uc3QgaXNHZXRPclBvc3RNZXRob2QgPSBbJ0dFVCcsICdQT1NUJ10uaW5jbHVkZXMobWV0aG9kKTtcblxuICAgIGNvbnN0ICRmb3JtID0gJCgnPGZvcm0+Jywge1xuICAgICAgYWN0aW9uOiAkYnV0dG9uLmRhdGEoJ3VybCcpLFxuICAgICAgbWV0aG9kOiBpc0dldE9yUG9zdE1ldGhvZCA/IG1ldGhvZCA6ICdQT1NUJyxcbiAgICB9KS5hcHBlbmRUbygnYm9keScpO1xuXG4gICAgaWYgKCFpc0dldE9yUG9zdE1ldGhvZCkge1xuICAgICAgJGZvcm0uYXBwZW5kKCQoJzxpbnB1dD4nLCB7XG4gICAgICAgIHR5cGU6ICdfaGlkZGVuJyxcbiAgICAgICAgbmFtZTogJ19tZXRob2QnLFxuICAgICAgICB2YWx1ZTogbWV0aG9kLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgICRmb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkc3VibWl0QnRuXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZmlybU1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm1UaXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqL1xuICBzaG93Q29uZmlybU1vZGFsKCRzdWJtaXRCdG4sIGdyaWQsIGNvbmZpcm1NZXNzYWdlLCBjb25maXJtVGl0bGUsIG1ldGhvZCkge1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkxhYmVsJyk7XG4gICAgY29uc3QgY2xvc2VCdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY2xvc2VCdXR0b25MYWJlbCcpO1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25DbGFzcyA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkNsYXNzJyk7XG5cbiAgICBjb25zdCBtb2RhbCA9IG5ldyBDb25maXJtTW9kYWwoe1xuICAgICAgaWQ6IGAke2dyaWQuZ2V0SWQoKX0tZ3JpZC1jb25maXJtLW1vZGFsYCxcbiAgICAgIGNvbmZpcm1UaXRsZSxcbiAgICAgIGNvbmZpcm1NZXNzYWdlLFxuICAgICAgY29uZmlybUJ1dHRvbkxhYmVsLFxuICAgICAgY2xvc2VCdXR0b25MYWJlbCxcbiAgICAgIGNvbmZpcm1CdXR0b25DbGFzcyxcbiAgICB9LCAoKSA9PiB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIG1ldGhvZCkpO1xuXG4gICAgbW9kYWwuc2hvdygpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDbGFzcyBCdWxrQWN0aW9uU2VsZWN0Q2hlY2tib3hFeHRlbnNpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVsa0FjdGlvbkNoZWNrYm94RXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkIHdpdGggYnVsayBhY3Rpb24gY2hlY2tib3hlcyBoYW5kbGluZyBmdW5jdGlvbmFsaXR5XG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICB0aGlzLmhhbmRsZUJ1bGtBY3Rpb25DaGVja2JveFNlbGVjdChncmlkKTtcbiAgICB0aGlzLmhhbmRsZUJ1bGtBY3Rpb25TZWxlY3RBbGxDaGVja2JveChncmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIFwiU2VsZWN0IGFsbFwiIGJ1dHRvbiBpbiB0aGUgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZUJ1bGtBY3Rpb25TZWxlY3RBbGxDaGVja2JveChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2hhbmdlJywgJy5qcy1idWxrLWFjdGlvbi1zZWxlY3QtYWxsJywgKGUpID0+IHtcbiAgICAgIGNvbnN0ICRjaGVja2JveCA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcblxuICAgICAgY29uc3QgaXNDaGVja2VkID0gJGNoZWNrYm94LmlzKCc6Y2hlY2tlZCcpO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIHRoaXMuZW5hYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2FibGVCdWxrQWN0aW9uc0J0bihncmlkKTtcbiAgICAgIH1cblxuICAgICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtYnVsay1hY3Rpb24tY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJywgaXNDaGVja2VkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGVhY2ggYnVsayBhY3Rpb24gY2hlY2tib3ggc2VsZWN0IGluIHRoZSBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGFuZGxlQnVsa0FjdGlvbkNoZWNrYm94U2VsZWN0KGdyaWQpIHtcbiAgICBncmlkLmdldENvbnRhaW5lcigpLm9uKCdjaGFuZ2UnLCAnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94JywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hlY2tlZFJvd3NDb3VudCA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94OmNoZWNrZWQnKS5sZW5ndGg7XG5cbiAgICAgIGlmIChjaGVja2VkUm93c0NvdW50ID4gMCkge1xuICAgICAgICB0aGlzLmVuYWJsZUJ1bGtBY3Rpb25zQnRuKGdyaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlQnVsa0FjdGlvbnNCdG4oZ3JpZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIGJ1bGsgYWN0aW9ucyBidXR0b25cbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbmFibGVCdWxrQWN0aW9uc0J0bihncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtYnVsay1hY3Rpb25zLWJ0bicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgYnVsayBhY3Rpb25zIGJ1dHRvblxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRpc2FibGVCdWxrQWN0aW9uc0J0bihncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtYnVsay1hY3Rpb25zLWJ0bicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCBSb3V0ZXIgZnJvbSAnLi4vLi4vcm91dGVyJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIEJ1bGtPcGVuVGFic0V4dGVuc2lvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWxrT3BlblRhYnNFeHRlbnNpb24ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnJvdXRlciA9IG5ldyBSb3V0ZXIoKTtcbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5kOiAoZ3JpZCkgPT4gdGhpcy5leHRlbmQoZ3JpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZCB3aXRoIGJ1bGsgYWN0aW9uIG9wZW4gdGFic1xuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWJ1bGstYWN0aW9uLWJ0bi5vcGVuX3RhYnMnLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMub3BlblRhYnMoZXZlbnQsIGdyaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBidWxrIGFjdGlvbiBvcGVuaW5nIHRhYnNcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBvcGVuVGFicyhldmVudCwgZ3JpZCkge1xuICAgIGNvbnN0ICRzdWJtaXRCdG4gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IHJvdXRlID0gJHN1Ym1pdEJ0bi5kYXRhKCdyb3V0ZScpO1xuICAgIGNvbnN0IHJvdXRlUGFyYW1OYW1lID0gJHN1Ym1pdEJ0bi5kYXRhKCdyb3V0ZVBhcmFtTmFtZScpO1xuICAgIGNvbnN0IHRhYnNCbG9ja2VkTWVzc2FnZSA9ICRzdWJtaXRCdG4uZGF0YSgndGFic0Jsb2NrZWRNZXNzYWdlJyk7XG5cbiAgICBjb25zdCAkY2hlY2tib3hlcyA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWJ1bGstYWN0aW9uLWNoZWNrYm94OmNoZWNrZWQnKTtcbiAgICBsZXQgYWxsVGFic09wZW5lZCA9IHRydWU7XG4gICAgJGNoZWNrYm94ZXMuZWFjaCgoaSwgZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgJGNoZWNrYm94ID0gJChlbGVtZW50KTtcbiAgICAgIGNvbnN0IHJvdXRlUGFyYW1zID0ge307XG4gICAgICByb3V0ZVBhcmFtc1tyb3V0ZVBhcmFtTmFtZV0gPSAkY2hlY2tib3gudmFsKCk7XG5cbiAgICAgIGNvbnN0IGhhbmRsZSA9IHdpbmRvdy5vcGVuKHRoaXMucm91dGVyLmdlbmVyYXRlKHJvdXRlLCByb3V0ZVBhcmFtcykpO1xuXG4gICAgICBpZiAoaGFuZGxlKSB7XG4gICAgICAgIGhhbmRsZS5ibHVyKCk7XG4gICAgICAgIHdpbmRvdy5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxsVGFic09wZW5lZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFsbFRhYnNPcGVuZWQpIHtcbiAgICAgICAgYWxlcnQodGFic0Jsb2NrZWRNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogVGhpcyBleHRlbnNpb24gZW5hYmxlcyBzdWJtaXQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY2hvaWNlIGZpZWxkcyBpbiBncmlkLlxuICpcbiAqIFVzYWdlIG9mIHRoZSBleHRlbnNpb246XG4gKlxuICogY29uc3QgbXlHcmlkID0gbmV3IEdyaWQoJ215R3JpZCcpO1xuICogbXlHcmlkLmFkZEV4dGVuc2lvbihuZXcgQ2hvaWNlRXh0ZW5zaW9uKCkpO1xuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvaWNlRXh0ZW5zaW9uIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2NrcyA9IFtdO1xuICB9XG5cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBjb25zdCAkY2hvaWNlT3B0aW9uc0NvbnRhaW5lciA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgndGFibGUudGFibGUgLmpzLWNob2ljZS1vcHRpb25zJyk7XG5cbiAgICAkY2hvaWNlT3B0aW9uc0NvbnRhaW5lci5maW5kKCcuanMtZHJvcGRvd24taXRlbScpLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCAkYnV0dG9uID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgY29uc3QgJHBhcmVudCA9ICRidXR0b24uY2xvc2VzdCgnLmpzLWNob2ljZS1vcHRpb25zJyk7XG4gICAgICBjb25zdCB1cmwgPSAkcGFyZW50LmRhdGEoJ3VybCcpO1xuXG4gICAgICB0aGlzLnN1Ym1pdEZvcm0odXJsLCAkYnV0dG9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXRzIHRoZSBmb3JtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkYnV0dG9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdWJtaXRGb3JtKHVybCwgJGJ1dHRvbikge1xuICAgIGNvbnN0IHNlbGVjdGVkU3RhdHVzSWQgPSAkYnV0dG9uLmRhdGEoJ3ZhbHVlJyk7XG5cbiAgICBpZiAodGhpcy5pc0xvY2tlZCh1cmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgJGZvcm0gPSAkKCc8Zm9ybT4nLCB7XG4gICAgICBhY3Rpb246IHVybCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pLmFwcGVuZChcbiAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgIG5hbWU6ICd2YWx1ZScsXG4gICAgICAgIHZhbHVlOiBzZWxlY3RlZFN0YXR1c0lkLFxuICAgICAgICB0eXBlOiAnaGlkZGVuJyxcbiAgICAgIH0pKTtcblxuICAgICRmb3JtLmFwcGVuZFRvKCdib2R5Jyk7XG4gICAgJGZvcm0uc3VibWl0KCk7XG5cbiAgICB0aGlzLmxvY2sodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgY3VycmVudCB1cmwgaXMgYmVpbmcgdXNlZCBhdCB0aGUgbW9tZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdXJsXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBpc0xvY2tlZCh1cmwpIHtcbiAgICByZXR1cm4gdGhpcy5sb2Nrcy5pbmNsdWRlcyh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvY2tzIHRoZSBjdXJyZW50IHVybCBzbyBpdCBjYW50IGJlIHVzZWQgdHdpY2UgdG8gZXhlY3V0ZSBzYW1lIHJlcXVlc3RcbiAgICogQHBhcmFtIHVybFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgbG9jayh1cmwpIHtcbiAgICB0aGlzLmxvY2tzLnB1c2godXJsKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgUmVsb2FkTGlzdEV4dGVuc2lvbiBleHRlbmRzIGdyaWQgd2l0aCBcIkNvbHVtbiB0b2dnbGluZ1wiIGZlYXR1cmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sdW1uVG9nZ2xpbmdFeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGNvbnN0ICR0YWJsZSA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgndGFibGUudGFibGUnKTtcbiAgICAkdGFibGUuZmluZCgnLnBzLXRvZ2dsYWJsZS1yb3cnKS5vbignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy50b2dnbGVWYWx1ZSgkKGUuZGVsZWdhdGVUYXJnZXQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gcm93XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGVWYWx1ZShyb3cpIHtcbiAgICBjb25zdCB0b2dnbGVVcmwgPSByb3cuZGF0YSgndG9nZ2xlVXJsJyk7XG5cbiAgICB0aGlzLnN1Ym1pdEFzRm9ybSh0b2dnbGVVcmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgcmVxdWVzdCB1cmwgYXMgZm9ybVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9nZ2xlVXJsXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdWJtaXRBc0Zvcm0odG9nZ2xlVXJsKSB7XG4gICAgY29uc3QgJGZvcm0gPSAkKCc8Zm9ybT4nLCB7XG4gICAgICBhY3Rpb246IHRvZ2dsZVVybCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pLmFwcGVuZFRvKCdib2R5Jyk7XG5cbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgQXN5bmNUb2dnbGVDb2x1bW5FeHRlbnNpb24gc3VibWl0cyB0b2dnbGUgYWN0aW9uIHVzaW5nIEFKQVhcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXN5bmNUb2dnbGVDb2x1bW5FeHRlbnNpb24ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5kOiAoZ3JpZCkgPT4gdGhpcy5leHRlbmQoZ3JpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZFxuICAgICAgLmdldENvbnRhaW5lcigpXG4gICAgICAuZmluZCgnLmpzLWdyaWQtdGFibGUnKVxuICAgICAgLm9uKCdjbGljaycsICcucHMtdG9nZ2xhYmxlLXJvdycsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCAkYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcblxuICAgICAgICBpZiAoISRidXR0b24uaGFzQ2xhc3MoJ3BzLXN3aXRjaCcpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQucG9zdCh7XG4gICAgICAgICAgdXJsOiAkYnV0dG9uLmRhdGEoJ3RvZ2dsZS11cmwnKSxcbiAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgd2luZG93LnNob3dTdWNjZXNzTWVzc2FnZShyZXNwb25zZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUJ1dHRvbkRpc3BsYXkoJGJ1dHRvbik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aW5kb3cuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXJyb3IucmVzcG9uc2VKU09OO1xuXG4gICAgICAgICAgICB3aW5kb3cuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBidXR0b24gZGlzcGxheSBmcm9tIGVuYWJsZWQgdG8gZGlzYWJsZWQgYW5kIG90aGVyIHdheSBhcm91bmRcbiAgICpcbiAgICogQHBhcmFtIHtqUXVlcnl9ICRidXR0b25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRvZ2dsZUJ1dHRvbkRpc3BsYXkoJGJ1dHRvbikge1xuICAgIGNvbnN0IGlzQWN0aXZlID0gJGJ1dHRvbi5oYXNDbGFzcygnZ3JpZC10b2dnbGVyLWljb24tdmFsaWQnKTtcblxuICAgIGNvbnN0IGNsYXNzVG9BZGQgPSBpc0FjdGl2ZSA/ICdncmlkLXRvZ2dsZXItaWNvbi1ub3QtdmFsaWQnIDogJ2dyaWQtdG9nZ2xlci1pY29uLXZhbGlkJztcbiAgICBjb25zdCBjbGFzc1RvUmVtb3ZlID0gaXNBY3RpdmUgPyAnZ3JpZC10b2dnbGVyLWljb24tdmFsaWQnIDogJ2dyaWQtdG9nZ2xlci1pY29uLW5vdC12YWxpZCc7XG4gICAgY29uc3QgaWNvbiA9IGlzQWN0aXZlID8gJ2NsZWFyJyA6ICdjaGVjayc7XG5cbiAgICAkYnV0dG9uLnJlbW92ZUNsYXNzKGNsYXNzVG9SZW1vdmUpO1xuICAgICRidXR0b24uYWRkQ2xhc3MoY2xhc3NUb0FkZCk7XG5cbiAgICBpZiAoJGJ1dHRvbi5oYXNDbGFzcygnbWF0ZXJpYWwtaWNvbnMnKSkge1xuICAgICAgJGJ1dHRvbi50ZXh0KGljb24pO1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgRXhwb3J0VG9TcWxNYW5hZ2VyRXh0ZW5zaW9uIGV4dGVuZHMgZ3JpZCB3aXRoIGV4cG9ydGluZyBxdWVyeSB0byBTUUwgTWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvcnRUb1NxbE1hbmFnZXJFeHRlbnNpb24ge1xuICAvKipcbiAgICogRXh0ZW5kIGdyaWRcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0SGVhZGVyQ29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1jb21tb25fc2hvd19xdWVyeS1ncmlkLWFjdGlvbicsICgpID0+IHRoaXMub25TaG93U3FsUXVlcnlDbGljayhncmlkKSk7XG4gICAgZ3JpZC5nZXRIZWFkZXJDb250YWluZXIoKS5vbihcbiAgICAgICdjbGljaycsXG4gICAgICAnLmpzLWNvbW1vbl9leHBvcnRfc3FsX21hbmFnZXItZ3JpZC1hY3Rpb24nLFxuICAgICAgKCkgPT4gdGhpcy5vbkV4cG9ydFNxbE1hbmFnZXJDbGljayhncmlkKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZWQgd2hlbiBjbGlja2luZyBvbiB0aGUgXCJzaG93IHNxbCBxdWVyeVwiIHRvb2xiYXIgYnV0dG9uXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgb25TaG93U3FsUXVlcnlDbGljayhncmlkKSB7XG4gICAgY29uc3QgJHNxbE1hbmFnZXJGb3JtID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9jb21tb25fc2hvd19xdWVyeV9tb2RhbF9mb3JtYCk7XG4gICAgdGhpcy5maWxsRXhwb3J0Rm9ybSgkc3FsTWFuYWdlckZvcm0sIGdyaWQpO1xuXG4gICAgY29uc3QgJG1vZGFsID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9ncmlkX2NvbW1vbl9zaG93X3F1ZXJ5X21vZGFsYCk7XG4gICAgJG1vZGFsLm1vZGFsKCdzaG93Jyk7XG5cbiAgICAkbW9kYWwub24oJ2NsaWNrJywgJy5idG4tc3FsLXN1Ym1pdCcsICgpID0+ICRzcWxNYW5hZ2VyRm9ybS5zdWJtaXQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlZCB3aGVuIGNsaWNraW5nIG9uIHRoZSBcImV4cG9ydCB0byB0aGUgc3FsIHF1ZXJ5XCIgdG9vbGJhciBidXR0b25cbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBvbkV4cG9ydFNxbE1hbmFnZXJDbGljayhncmlkKSB7XG4gICAgY29uc3QgJHNxbE1hbmFnZXJGb3JtID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9jb21tb25fc2hvd19xdWVyeV9tb2RhbF9mb3JtYCk7XG5cbiAgICB0aGlzLmZpbGxFeHBvcnRGb3JtKCRzcWxNYW5hZ2VyRm9ybSwgZ3JpZCk7XG5cbiAgICAkc3FsTWFuYWdlckZvcm0uc3VibWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogRmlsbCBleHBvcnQgZm9ybSB3aXRoIFNRTCBhbmQgaXQncyBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7alF1ZXJ5fSAkc3FsTWFuYWdlckZvcm1cbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmaWxsRXhwb3J0Rm9ybSgkc3FsTWFuYWdlckZvcm0sIGdyaWQpIHtcbiAgICBjb25zdCBxdWVyeSA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgnLmpzLWdyaWQtdGFibGUnKS5kYXRhKCdxdWVyeScpO1xuXG4gICAgJHNxbE1hbmFnZXJGb3JtLmZpbmQoJ3RleHRhcmVhW25hbWU9XCJzcWxcIl0nKS52YWwocXVlcnkpO1xuICAgICRzcWxNYW5hZ2VyRm9ybS5maW5kKCdpbnB1dFtuYW1lPVwibmFtZVwiXScpLnZhbCh0aGlzLmdldE5hbWVGcm9tQnJlYWRjcnVtYigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZXhwb3J0IG5hbWUgZnJvbSBwYWdlJ3MgYnJlYWRjcnVtYlxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXROYW1lRnJvbUJyZWFkY3J1bWIoKSB7XG4gICAgY29uc3QgJGJyZWFkY3J1bWJzID0gJCgnLmhlYWRlci10b29sYmFyJykuZmluZCgnLmJyZWFkY3J1bWItaXRlbScpO1xuICAgIGxldCBuYW1lID0gJyc7XG5cbiAgICAkYnJlYWRjcnVtYnMuZWFjaCgoaSwgaXRlbSkgPT4ge1xuICAgICAgY29uc3QgJGJyZWFkY3J1bWIgPSAkKGl0ZW0pO1xuXG4gICAgICBjb25zdCBicmVhZGNydW1iVGl0bGUgPSAkYnJlYWRjcnVtYi5maW5kKCdhJykubGVuZ3RoID4gMFxuICAgICAgICA/ICRicmVhZGNydW1iLmZpbmQoJ2EnKS50ZXh0KClcbiAgICAgICAgOiAkYnJlYWRjcnVtYi50ZXh0KCk7XG5cbiAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbmFtZSA9IG5hbWUuY29uY2F0KCcgPiAnKTtcbiAgICAgIH1cblxuICAgICAgbmFtZSA9IG5hbWUuY29uY2F0KGJyZWFkY3J1bWJUaXRsZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgcmVzZXRTZWFyY2ggZnJvbSAnQGFwcC91dGlscy9yZXNldF9zZWFyY2gnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgRmlsdGVyc1Jlc2V0RXh0ZW5zaW9uIGV4dGVuZHMgZ3JpZCB3aXRoIGZpbHRlcnMgcmVzZXR0aW5nXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlcnNSZXNldEV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLXJlc2V0LXNlYXJjaCcsIChldmVudCkgPT4ge1xuICAgICAgcmVzZXRTZWFyY2goJChldmVudC5jdXJyZW50VGFyZ2V0KS5kYXRhKCd1cmwnKSwgJChldmVudC5jdXJyZW50VGFyZ2V0KS5kYXRhKCdyZWRpcmVjdCcpKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIFJlc3BvbnNpYmxlIGZvciBncmlkIGZpbHRlcnMgc2VhcmNoIGFuZCByZXNldCBidXR0b24gYXZhaWxhYmlsaXR5IHdoZW4gZmlsdGVyIGlucHV0cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWx0ZXJzU3VibWl0QnV0dG9uRW5hYmxlckV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgY29uc3QgJGZpbHRlcnNSb3cgPSBncmlkLmdldENvbnRhaW5lcigpLmZpbmQoJy5jb2x1bW4tZmlsdGVycycpO1xuICAgICRmaWx0ZXJzUm93LmZpbmQoJy5ncmlkLXNlYXJjaC1idXR0b24nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXG4gICAgJGZpbHRlcnNSb3cuZmluZCgnaW5wdXQ6bm90KC5qcy1idWxrLWFjdGlvbi1zZWxlY3QtYWxsKSwgc2VsZWN0Jykub24oJ2lucHV0IGRwLmNoYW5nZScsICgpID0+IHtcbiAgICAgICRmaWx0ZXJzUm93LmZpbmQoJy5ncmlkLXNlYXJjaC1idXR0b24nKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcbiAgICAgICRmaWx0ZXJzUm93LmZpbmQoJy5qcy1ncmlkLXJlc2V0LWJ1dHRvbicpLnByb3AoJ2hpZGRlbicsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgTGlua1Jvd0FjdGlvbkV4dGVuc2lvbiBoYW5kbGVzIGxpbmsgcm93IGFjdGlvbnNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlua1Jvd0FjdGlvbkV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgdGhpcy5pbml0Um93TGlua3MoZ3JpZCk7XG4gICAgdGhpcy5pbml0Q29uZmlybWFibGVBY3Rpb25zKGdyaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgaW5pdENvbmZpcm1hYmxlQWN0aW9ucyhncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWxpbmstcm93LWFjdGlvbicsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ2NvbmZpcm0tbWVzc2FnZScpO1xuXG4gICAgICBpZiAoY29uZmlybU1lc3NhZ2UubGVuZ3RoICYmICF3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjbGljayBldmVudCBvbiByb3dzIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3QgbGluayBhY3Rpb24gKGlmIHByZXNlbnQpXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgaW5pdFJvd0xpbmtzKGdyaWQpIHtcbiAgICAkKCd0cicsIGdyaWQuZ2V0Q29udGFpbmVyKCkpLmVhY2goZnVuY3Rpb24gaW5pdEVhY2hSb3coKSB7XG4gICAgICBjb25zdCAkcGFyZW50Um93ID0gJCh0aGlzKTtcblxuICAgICAgJCgnLmpzLWxpbmstcm93LWFjdGlvbltkYXRhLWNsaWNrYWJsZS1yb3c9MV06Zmlyc3QnLCAkcGFyZW50Um93KS5lYWNoKGZ1bmN0aW9uIHByb3BhZ2F0ZUZpcnN0TGlua0FjdGlvbigpIHtcbiAgICAgICAgY29uc3QgJHJvd0FjdGlvbiA9ICQodGhpcyk7XG4gICAgICAgIGNvbnN0ICRwYXJlbnRDZWxsID0gJHJvd0FjdGlvbi5jbG9zZXN0KCd0ZCcpO1xuXG4gICAgICAgIGNvbnN0IGNsaWNrYWJsZUNlbGxzID0gJCgndGQuY2xpY2thYmxlJywgJHBhcmVudFJvdykubm90KCRwYXJlbnRDZWxsKTtcbiAgICAgICAgbGV0IGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgY2xpY2thYmxlQ2VsbHMuYWRkQ2xhc3MoJ2N1cnNvci1wb2ludGVyJykubW91c2Vkb3duKCgpID0+IHtcbiAgICAgICAgICAkKHdpbmRvdykubW91c2Vtb3ZlKCgpID0+IHtcbiAgICAgICAgICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgJCh3aW5kb3cpLnVuYmluZCgnbW91c2Vtb3ZlJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNsaWNrYWJsZUNlbGxzLm1vdXNldXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdhc0RyYWdnaW5nID0gaXNEcmFnZ2luZztcbiAgICAgICAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgICAgJCh3aW5kb3cpLnVuYmluZCgnbW91c2Vtb3ZlJyk7XG5cbiAgICAgICAgICBpZiAoIXdhc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9ICRyb3dBY3Rpb24uZGF0YSgnY29uZmlybS1tZXNzYWdlJyk7XG5cbiAgICAgICAgICAgIGlmICghY29uZmlybU1lc3NhZ2UubGVuZ3RoIHx8IHdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbiA9ICRyb3dBY3Rpb24uYXR0cignaHJlZicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQWxsb3dzIHN1Ym1pdHRpbmcgZm9ybSBpbnNpZGUgbW9kYWxzLlxuICogRm9ybSBtdXN0IGJlIGluc2lkZSBtb2RhbCwgc2VlIGV4YW1wbGUgc3RydWN0dXJlIGJlbG93OlxuICpcbiAqIDxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwidW5pcXVlTW9kYWxJZFwiPlxuICogIDxmb3JtIGRhdGEtYnVsay1pbnB1dHMtaWQ9XCJidWxrSW5wdXRzXCI+XG4gKiAgICA8ZGl2IGNsYXNzPVwiZC1ub25lXCI+XG4gKiAgICAgIDxkaXYgaWQ9XCJidWxrSW5wdXRzXCIgZGF0YS1wcm90b3R5cGU9XCI8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJfX25hbWVfX1wiLz5cIj48L2Rpdj5cbiAqICAgIDwvZGl2PlxuICogIDwvZm9ybT5cbiAqIDwvZGl2PlxuICpcbiAqIE5vdGUgdGhhdCBcImRhdGEtcHJvdG90eXBlXCIgaXMgcmVxdWlyZWQgdG8gYWRkIGNoZWNrZWQgaXRlbXMgdG8gdGhlIGZvcm0uIFwiX19uYW1lX19cIlxuICogd2lsbCBiZSByZXBsYWNlZCB3aXRoIHZhbHVlIG9mIGJ1bGsgY2hlY2tib3guXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGFsRm9ybVN1Ym1pdEV4dGVuc2lvbiB7XG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWJ1bGstbW9kYWwtZm9ybS1zdWJtaXQtYnRuJywgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBtb2RhbElkID0gJChldmVudC50YXJnZXQpLmRhdGEoJ21vZGFsLWlkJyk7XG5cbiAgICAgIGNvbnN0ICRtb2RhbCA9ICQoYCMke21vZGFsSWR9YCk7XG4gICAgICAkbW9kYWwubW9kYWwoJ3Nob3cnKTtcblxuICAgICAgJG1vZGFsLmZpbmQoJy5qcy1zdWJtaXQtbW9kYWwtZm9ybS1idG4nKS5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRmb3JtID0gJG1vZGFsLmZpbmQoJ2Zvcm0nKTtcbiAgICAgICAgY29uc3QgJGJ1bGtJbnB1dHNCbG9jayA9ICRmb3JtLmZpbmQoYCMkeyRmb3JtLmRhdGEoJ2J1bGstaW5wdXRzLWlkJyl9YCk7XG4gICAgICAgIGNvbnN0ICRjaGVja2JveGVzID0gZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtYnVsay1hY3Rpb24tY2hlY2tib3g6Y2hlY2tlZCcpO1xuXG4gICAgICAgICRjaGVja2JveGVzLmVhY2goKGksIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCAkY2hlY2tib3ggPSAkKGVsZW1lbnQpO1xuXG4gICAgICAgICAgY29uc3QgaW5wdXQgPSAkYnVsa0lucHV0c0Jsb2NrXG4gICAgICAgICAgICAuZGF0YSgncHJvdG90eXBlJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fX25hbWVfXy9nLCAkY2hlY2tib3gudmFsKCkpO1xuXG4gICAgICAgICAgY29uc3QgJGlucHV0ID0gJCgkLnBhcnNlSFRNTChpbnB1dClbMF0pO1xuICAgICAgICAgICRpbnB1dC52YWwoJGNoZWNrYm94LnZhbCgpKTtcblxuICAgICAgICAgICRmb3JtLmFwcGVuZCgkaW5wdXQpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkZm9ybS5zdWJtaXQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCAndGFibGVkbmQvZGlzdC9qcXVlcnkudGFibGVkbmQubWluJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIENsYXNzIFBvc2l0aW9uRXh0ZW5zaW9uIGV4dGVuZHMgR3JpZCB3aXRoIHJlb3JkZXJhYmxlIHBvc2l0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3NpdGlvbkV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBleHRlbmQ6IChncmlkKSA9PiB0aGlzLmV4dGVuZChncmlkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgIHRoaXMuYWRkSWRzVG9HcmlkVGFibGVSb3dzKCk7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtZ3JpZC10YWJsZScpLnRhYmxlRG5EKHtcbiAgICAgIG9uRHJhZ0NsYXNzOiAncG9zaXRpb24tcm93LXdoaWxlLWRyYWcnLFxuICAgICAgZHJhZ0hhbmRsZTogJy5qcy1kcmFnLWhhbmRsZScsXG4gICAgICBvbkRyb3A6ICh0YWJsZSwgcm93KSA9PiB0aGlzLmhhbmRsZVBvc2l0aW9uQ2hhbmdlKHJvdyksXG4gICAgfSk7XG4gICAgZ3JpZC5nZXRDb250YWluZXIoKS5maW5kKCcuanMtZHJhZy1oYW5kbGUnKS5ob3ZlcihcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLmFkZENsYXNzKCdob3ZlcicpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCd0cicpLnJlbW92ZUNsYXNzKCdob3ZlcicpO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gcG9zaXRpb24gaXMgY2hhbmdlZCBoYW5kbGUgdXBkYXRlXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHJvd1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGFuZGxlUG9zaXRpb25DaGFuZ2Uocm93KSB7XG4gICAgY29uc3QgJHJvd1Bvc2l0aW9uQ29udGFpbmVyID0gJChyb3cpLmZpbmQoYC5qcy0ke3RoaXMuZ3JpZC5nZXRJZCgpfS1wb3NpdGlvbjpmaXJzdGApO1xuICAgIGNvbnN0IHVwZGF0ZVVybCA9ICRyb3dQb3NpdGlvbkNvbnRhaW5lci5kYXRhKCd1cGRhdGUtdXJsJyk7XG4gICAgY29uc3QgbWV0aG9kID0gJHJvd1Bvc2l0aW9uQ29udGFpbmVyLmRhdGEoJ3VwZGF0ZS1tZXRob2QnKTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmdldFJvd3NQb3NpdGlvbnMoKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7cG9zaXRpb25zfTtcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb24odXBkYXRlVXJsLCBwYXJhbXMsIG1ldGhvZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB0YWJsZSBwb3NpdGlvbnNcbiAgICogQHJldHVybnMge0FycmF5fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Um93c1Bvc2l0aW9ucygpIHtcbiAgICBjb25zdCB0YWJsZURhdGEgPSBKU09OLnBhcnNlKCQudGFibGVEbkQuanNvbml6ZSgpKTtcbiAgICBjb25zdCByb3dzRGF0YSA9IHRhYmxlRGF0YVtgJHt0aGlzLmdyaWQuZ2V0SWQoKX1fZ3JpZF90YWJsZWBdO1xuICAgIGNvbnN0IGNvbXBsZXRlUm93c0RhdGEgPSBbXTtcblxuICAgIGxldCB0ckRhdGE7XG5cbiAgICAvLyByZXRyaWV2ZSBkcmFnQW5kRHJvcE9mZnNldCBvZmZzZXQgdG8gaGF2ZSBhbGwgbmVlZGVkIGRhdGFcbiAgICAvLyBmb3IgcG9zaXRpb25zIG1hcHBpbmcgZXZvbHV0aW9uIG92ZXIgdGltZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93c0RhdGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRyRGF0YSA9IHRoaXMuZ3JpZC5nZXRDb250YWluZXIoKVxuICAgICAgICAuZmluZChgIyR7cm93c0RhdGFbaV19YCk7XG5cbiAgICAgIGNvbXBsZXRlUm93c0RhdGEucHVzaCh7XG4gICAgICAgIHJvd01hcmtlcjogcm93c0RhdGFbaV0sXG4gICAgICAgIG9mZnNldDogdHJEYXRhLmRhdGEoJ2RyYWdBbmREcm9wT2Zmc2V0JyksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb21wdXRlTWFwcGluZ0JldHdlZW5PbGRBbmROZXdQb3NpdGlvbnMoY29tcGxldGVSb3dzRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIElEJ3MgdG8gR3JpZCB0YWJsZSByb3dzIHRvIG1ha2UgdGFibGVEbkQub25Ecm9wKCkgZnVuY3Rpb24gd29yay5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGFkZElkc1RvR3JpZFRhYmxlUm93cygpIHtcbiAgICBsZXQgY291bnRlciA9IDA7XG5cbiAgICB0aGlzLmdyaWQuZ2V0Q29udGFpbmVyKClcbiAgICAgIC5maW5kKGAuanMtZ3JpZC10YWJsZSAuanMtJHt0aGlzLmdyaWQuZ2V0SWQoKX0tcG9zaXRpb25gKVxuICAgICAgLmVhY2goKGluZGV4LCBwb3NpdGlvbldyYXBwZXIpID0+IHtcbiAgICAgICAgY29uc3QgJHBvc2l0aW9uV3JhcHBlciA9ICQocG9zaXRpb25XcmFwcGVyKTtcbiAgICAgICAgY29uc3Qgcm93SWQgPSAkcG9zaXRpb25XcmFwcGVyLmRhdGEoJ2lkJyk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gJHBvc2l0aW9uV3JhcHBlci5kYXRhKCdwb3NpdGlvbicpO1xuICAgICAgICBjb25zdCBpZCA9IGByb3dfJHtyb3dJZH1fJHtwb3NpdGlvbn1gO1xuICAgICAgICAkcG9zaXRpb25XcmFwcGVyLmNsb3Nlc3QoJ3RyJykuYXR0cignaWQnLCBpZCk7XG4gICAgICAgICRwb3NpdGlvbldyYXBwZXIuY2xvc2VzdCgndGQnKS5hZGRDbGFzcygnanMtZHJhZy1oYW5kbGUnKTtcbiAgICAgICAgJHBvc2l0aW9uV3JhcHBlci5jbG9zZXN0KCd0cicpLmRhdGEoJ2RyYWdBbmREcm9wT2Zmc2V0JywgY291bnRlcik7XG5cbiAgICAgICAgY291bnRlciArPSAxO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyByb3dzIHBvc2l0aW9ucyB1cGRhdGVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKHVybCwgcGFyYW1zLCBtZXRob2QpIHtcbiAgICBjb25zdCBpc0dldE9yUG9zdE1ldGhvZCA9IFsnR0VUJywgJ1BPU1QnXS5pbmNsdWRlcyhtZXRob2QpO1xuXG4gICAgY29uc3QgJGZvcm0gPSAkKCc8Zm9ybT4nLCB7XG4gICAgICBhY3Rpb246IHVybCxcbiAgICAgIG1ldGhvZDogaXNHZXRPclBvc3RNZXRob2QgPyBtZXRob2QgOiAnUE9TVCcsXG4gICAgfSkuYXBwZW5kVG8oJ2JvZHknKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uc05iID0gcGFyYW1zLnBvc2l0aW9ucy5sZW5ndGg7XG4gICAgbGV0IHBvc2l0aW9uO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnNOYjsgaSArPSAxKSB7XG4gICAgICBwb3NpdGlvbiA9IHBhcmFtcy5wb3NpdGlvbnNbaV07XG4gICAgICAkZm9ybS5hcHBlbmQoXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtyb3dJZF1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5yb3dJZCxcbiAgICAgICAgfSksXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtvbGRQb3NpdGlvbl1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5vbGRQb3NpdGlvbixcbiAgICAgICAgfSksXG4gICAgICAgICQoJzxpbnB1dD4nLCB7XG4gICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgbmFtZTogYHBvc2l0aW9uc1ske2l9XVtuZXdQb3NpdGlvbl1gLFxuICAgICAgICAgIHZhbHVlOiBwb3NpdGlvbi5uZXdQb3NpdGlvbixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRoaXMgX21ldGhvZCBwYXJhbSBpcyB1c2VkIGJ5IFN5bWZvbnkgdG8gc2ltdWxhdGUgREVMRVRFIGFuZCBQVVQgbWV0aG9kc1xuICAgIGlmICghaXNHZXRPclBvc3RNZXRob2QpIHtcbiAgICAgICRmb3JtLmFwcGVuZCgkKCc8aW5wdXQ+Jywge1xuICAgICAgICB0eXBlOiAnaGlkZGVuJyxcbiAgICAgICAgbmFtZTogJ19tZXRob2QnLFxuICAgICAgICB2YWx1ZTogbWV0aG9kLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgICRmb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvd3MgaGF2ZSBiZWVuIHJlb3JkZXJlZC4gVGhpcyBmdW5jdGlvblxuICAgKiBmaW5kcywgZm9yIGVhY2ggcm93IElEOiB0aGUgb2xkIHBvc2l0aW9uLCB0aGUgbmV3IHBvc2l0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHtBcnJheX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbXB1dGVNYXBwaW5nQmV0d2Vlbk9sZEFuZE5ld1Bvc2l0aW9ucyhyb3dzRGF0YSkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL15yb3dfKFxcZCspXyhcXGQrKSQvO1xuICAgIGNvbnN0IG1hcHBpbmcgPSBBcnJheShyb3dzRGF0YS5sZW5ndGgpLmZpbGwoKS5tYXAoT2JqZWN0KTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93c0RhdGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IFssIHJvd0lkLCBvbGRQb3NpdGlvbl0gPSByZWdleC5leGVjKHJvd3NEYXRhW2ldLnJvd01hcmtlcik7XG4gICAgICBtYXBwaW5nW2ldLnJvd0lkID0gcm93SWQ7XG4gICAgICBtYXBwaW5nW2ldLm9sZFBvc2l0aW9uID0gcGFyc2VJbnQob2xkUG9zaXRpb24sIDEwKTtcbiAgICAgIC8vIFRoaXMgcm93IHdpbGwgaGF2ZSBhcyBhIG5ldyBwb3NpdGlvbiB0aGUgb2xkIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IG9uZVxuICAgICAgbWFwcGluZ1tyb3dzRGF0YVtpXS5vZmZzZXRdLm5ld1Bvc2l0aW9uID0gbWFwcGluZ1tpXS5vbGRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGluZztcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogRXh0ZW5kcyBncmlkIHdpdGggcHJldmlldyBmdW5jdGlvbmFsaXR5LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmV2aWV3RXh0ZW5zaW9uIHtcbiAgY29uc3RydWN0b3IocHJldmlld0N1c3RvbWl6YXRpb24pIHtcbiAgICB0aGlzLmxvY2tzID0gW107XG4gICAgdGhpcy5leHBhbmRTZWxlY3RvciA9ICcuanMtZXhwYW5kJztcbiAgICB0aGlzLmNvbGxhcHNlU2VsZWN0b3IgPSAnLmpzLWNvbGxhcHNlJztcbiAgICB0aGlzLnByZXZpZXdPcGVuQ2xhc3MgPSAncHJldmlldy1vcGVuJztcbiAgICB0aGlzLnByZXZpZXdUb2dnbGVTZWxlY3RvciA9ICcucHJldmlldy10b2dnbGUnO1xuICAgIHRoaXMucHJldmlld0N1c3RvbWl6YXRpb24gPSBwcmV2aWV3Q3VzdG9taXphdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmRzIHByb3ZpZGVkIGdyaWQgd2l0aCBwcmV2aWV3IGZ1bmN0aW9uYWxpdHlcbiAgICpcbiAgICogQHBhcmFtIGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgdGhpcy4kZ3JpZENvbnRhaW5lciA9ICQoZ3JpZC5nZXRDb250YWluZXIpO1xuXG4gICAgdGhpcy4kZ3JpZENvbnRhaW5lci5maW5kKCd0Ym9keSB0cicpLm9uKCdtb3VzZW92ZXIgbW91c2VsZWF2ZScsIChldmVudCkgPT4gdGhpcy5oYW5kbGVJY29uSG92ZXJpbmcoZXZlbnQpKTtcbiAgICB0aGlzLiRncmlkQ29udGFpbmVyLmZpbmQodGhpcy5wcmV2aWV3VG9nZ2xlU2VsZWN0b3IpLm9uKCdjbGljaycsIChldmVudCkgPT4gdGhpcy50b2dnbGVQcmV2aWV3KGV2ZW50KSk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MvaGlkZXMgcHJldmlldyB0b2dnbGluZyBpY29uc1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZUljb25Ib3ZlcmluZyhldmVudCkge1xuICAgIGNvbnN0ICRwcmV2aWV3VG9nZ2xlID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5maW5kKHRoaXMucHJldmlld1RvZ2dsZVNlbGVjdG9yKTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VvdmVyJyAmJiAhJChldmVudC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcyh0aGlzLnByZXZpZXdPcGVuQ2xhc3MpKSB7XG4gICAgICB0aGlzLnNob3dFeHBhbmRJY29uKCRwcmV2aWV3VG9nZ2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlRXhwYW5kSWNvbigkcHJldmlld1RvZ2dsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzL2hpZGVzIHByZXZpZXdcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGVQcmV2aWV3KGV2ZW50KSB7XG4gICAgY29uc3QgJHByZXZpZXdUb2dnbGUgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0ICRjb2x1bW5Sb3cgPSAkcHJldmlld1RvZ2dsZS5jbG9zZXN0KCd0cicpO1xuXG4gICAgaWYgKCRjb2x1bW5Sb3cuaGFzQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKSkge1xuICAgICAgJGNvbHVtblJvdy5uZXh0KCcucHJldmlldy1yb3cnKS5yZW1vdmUoKTtcbiAgICAgICRjb2x1bW5Sb3cucmVtb3ZlQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKTtcbiAgICAgIHRoaXMuc2hvd0V4cGFuZEljb24oJGNvbHVtblJvdyk7XG4gICAgICB0aGlzLmhpZGVDb2xsYXBzZUljb24oJGNvbHVtblJvdyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlT3BlbmVkUHJldmlld3MoKTtcblxuICAgIGNvbnN0IGRhdGFVcmwgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ3ByZXZpZXctZGF0YS11cmwnKTtcblxuICAgIGlmICh0aGlzLmlzTG9ja2VkKGRhdGFVcmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJldmVudHMgbG9hZGluZyBwcmV2aWV3IG11bHRpcGxlIHRpbWVzLlxuICAgIC8vIFVzZXMgXCJkYXRhVXJsXCIgYXMgbG9jayBrZXkuXG4gICAgdGhpcy5sb2NrKGRhdGFVcmwpO1xuXG4gICAgJC5hamF4KHtcbiAgICAgIHVybDogZGF0YVVybCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy51bmxvY2soZGF0YVVybCk7XG4gICAgICB9LFxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlclByZXZpZXdDb250ZW50KCRjb2x1bW5Sb3csIHJlc3BvbnNlLnByZXZpZXcpO1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICB3aW5kb3cuc2hvd0Vycm9yTWVzc2FnZShlLnJlc3BvbnNlSlNPTi5tZXNzYWdlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHByZXZpZXcgY29udGVudFxuICAgKlxuICAgKiBAcGFyYW0gJGNvbHVtblJvd1xuICAgKiBAcGFyYW0gY29udGVudFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcmVuZGVyUHJldmlld0NvbnRlbnQoJGNvbHVtblJvdywgY29udGVudCkge1xuICAgIGNvbnN0IHJvd0NvbHVtbkNvdW50ID0gJGNvbHVtblJvdy5maW5kKCd0ZCcpLmxlbmd0aDtcblxuICAgIGNvbnN0ICRwcmV2aWV3VGVtcGxhdGUgPSAkKGBcbiAgICAgICAgPHRyIGNsYXNzPVwicHJldmlldy1yb3dcIj5cbiAgICAgICAgICA8dGQgY29sc3Bhbj1cIiR7cm93Q29sdW1uQ291bnR9XCI+JHtjb250ZW50fTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICBgKTtcblxuICAgICRjb2x1bW5Sb3cuYWRkQ2xhc3ModGhpcy5wcmV2aWV3T3BlbkNsYXNzKTtcbiAgICB0aGlzLnNob3dDb2xsYXBzZUljb24oJGNvbHVtblJvdyk7XG4gICAgdGhpcy5oaWRlRXhwYW5kSWNvbigkY29sdW1uUm93KTtcblxuICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2aWV3Q3VzdG9taXphdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5wcmV2aWV3Q3VzdG9taXphdGlvbigkcHJldmlld1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICAkY29sdW1uUm93LmFmdGVyKCRwcmV2aWV3VGVtcGxhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHByZXZpZXcgZXhwYW5kaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2hvd0V4cGFuZEljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5leHBhbmRTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGVzIHByZXZpZXcgZXhwYW5kaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGlkZUV4cGFuZEljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5leHBhbmRTZWxlY3RvcikuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHByZXZpZXcgY29sbGFwc2luZyBpY29uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNob3dDb2xsYXBzZUljb24ocGFyZW50KSB7XG4gICAgcGFyZW50LmZpbmQodGhpcy5jb2xsYXBzZVNlbGVjdG9yKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgcHJldmlldyBjb2xsYXBzaW5nIGljb25cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgaGlkZUNvbGxhcHNlSWNvbihwYXJlbnQpIHtcbiAgICBwYXJlbnQuZmluZCh0aGlzLmNvbGxhcHNlU2VsZWN0b3IpLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgfVxuXG4gIGlzTG9ja2VkKGtleSkge1xuICAgIHJldHVybiB0aGlzLmxvY2tzLmluZGV4T2Yoa2V5KSAhPT0gLTE7XG4gIH1cblxuICBsb2NrKGtleSkge1xuICAgIGlmICh0aGlzLmlzTG9ja2VkKGtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2tzLnB1c2goa2V5KTtcbiAgfVxuXG4gIHVubG9jayhrZXkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubG9ja3MuaW5kZXhPZihrZXkpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBhbGwgcHJldmlld3MgdGhhdCBhcmUgb3Blbi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNsb3NlT3BlbmVkUHJldmlld3MoKSB7XG4gICAgY29uc3QgJHJvd3MgPSB0aGlzLiRncmlkQ29udGFpbmVyLmZpbmQoJy5ncmlkLXRhYmxlIHRib2R5JykuZmluZCgndHI6bm90KC5wcmV2aWV3LXJvdyknKTtcblxuICAgICQuZWFjaCgkcm93cywgKGksIHJvdykgPT4ge1xuICAgICAgY29uc3QgJHJvdyA9ICQocm93KTtcblxuICAgICAgaWYgKCEkcm93Lmhhc0NsYXNzKHRoaXMucHJldmlld09wZW5DbGFzcykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCAkcHJldmlld1JvdyA9ICRyb3cubmV4dCgpO1xuXG4gICAgICBpZiAoISRwcmV2aWV3Um93Lmhhc0NsYXNzKCdwcmV2aWV3LXJvdycpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgJHByZXZpZXdSb3cucmVtb3ZlKCk7XG4gICAgICAkcm93LnJlbW92ZUNsYXNzKHRoaXMucHJldmlld09wZW5DbGFzcyk7XG4gICAgICB0aGlzLmhpZGVDb2xsYXBzZUljb24oJHJvdyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLyoqXG4gKiBDbGFzcyBSZWxvYWRMaXN0RXh0ZW5zaW9uIGV4dGVuZHMgZ3JpZCB3aXRoIFwiTGlzdCByZWxvYWRcIiBhY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsb2FkTGlzdEV4dGVuc2lvbiB7XG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZFxuICAgKlxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIGV4dGVuZChncmlkKSB7XG4gICAgZ3JpZC5nZXRIZWFkZXJDb250YWluZXIoKS5vbignY2xpY2snLCAnLmpzLWNvbW1vbl9yZWZyZXNoX2xpc3QtZ3JpZC1hY3Rpb24nLCAoKSA9PiB7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IFRhYmxlU29ydGluZyBmcm9tICdAYXBwL3V0aWxzL3RhYmxlLXNvcnRpbmcnO1xuXG4vKipcbiAqIENsYXNzIFJlbG9hZExpc3RFeHRlbnNpb24gZXh0ZW5kcyBncmlkIHdpdGggXCJMaXN0IHJlbG9hZFwiIGFjdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTb3J0aW5nRXh0ZW5zaW9uIHtcbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkXG4gICAqXG4gICAqIEBwYXJhbSB7R3JpZH0gZ3JpZFxuICAgKi9cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBjb25zdCAkc29ydGFibGVUYWJsZSA9IGdyaWQuZ2V0Q29udGFpbmVyKCkuZmluZCgndGFibGUudGFibGUnKTtcblxuICAgIG5ldyBUYWJsZVNvcnRpbmcoJHNvcnRhYmxlVGFibGUpLmF0dGFjaCgpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBDb25maXJtTW9kYWwgZnJvbSAnQGNvbXBvbmVudHMvbW9kYWwnO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogSGFuZGxlcyBzdWJtaXQgb2YgZ3JpZCBhY3Rpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1Ym1pdEJ1bGtBY3Rpb25FeHRlbnNpb24ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXh0ZW5kOiAoZ3JpZCkgPT4gdGhpcy5leHRlbmQoZ3JpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgZ3JpZCB3aXRoIGJ1bGsgYWN0aW9uIHN1Ym1pdHRpbmdcbiAgICpcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqL1xuICBleHRlbmQoZ3JpZCkge1xuICAgIGdyaWQuZ2V0Q29udGFpbmVyKCkub24oJ2NsaWNrJywgJy5qcy1idWxrLWFjdGlvbi1zdWJtaXQtYnRuJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdChldmVudCwgZ3JpZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGJ1bGsgYWN0aW9uIHN1Ym1pdHRpbmdcbiAgICpcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHtHcmlkfSBncmlkXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdWJtaXQoZXZlbnQsIGdyaWQpIHtcbiAgICBjb25zdCAkc3VibWl0QnRuID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBjb25maXJtTWVzc2FnZSA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybS1tZXNzYWdlJyk7XG4gICAgY29uc3QgY29uZmlybVRpdGxlID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtVGl0bGUnKTtcblxuICAgIGlmIChjb25maXJtTWVzc2FnZSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpcm1NZXNzYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChjb25maXJtVGl0bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dDb25maXJtTW9kYWwoJHN1Ym1pdEJ0biwgZ3JpZCwgY29uZmlybU1lc3NhZ2UsIGNvbmZpcm1UaXRsZSk7XG4gICAgICB9IGVsc2UgaWYgKHdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgICB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHN1Ym1pdEJ0blxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpcm1NZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb25maXJtVGl0bGVcbiAgICovXG4gIHNob3dDb25maXJtTW9kYWwoJHN1Ym1pdEJ0biwgZ3JpZCwgY29uZmlybU1lc3NhZ2UsIGNvbmZpcm1UaXRsZSkge1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkxhYmVsJyk7XG4gICAgY29uc3QgY2xvc2VCdXR0b25MYWJlbCA9ICRzdWJtaXRCdG4uZGF0YSgnY2xvc2VCdXR0b25MYWJlbCcpO1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25DbGFzcyA9ICRzdWJtaXRCdG4uZGF0YSgnY29uZmlybUJ1dHRvbkNsYXNzJyk7XG5cbiAgICBjb25zdCBtb2RhbCA9IG5ldyBDb25maXJtTW9kYWwoe1xuICAgICAgaWQ6IGAke2dyaWQuZ2V0SWQoKX0tZ3JpZC1jb25maXJtLW1vZGFsYCxcbiAgICAgIGNvbmZpcm1UaXRsZSxcbiAgICAgIGNvbmZpcm1NZXNzYWdlLFxuICAgICAgY29uZmlybUJ1dHRvbkxhYmVsLFxuICAgICAgY2xvc2VCdXR0b25MYWJlbCxcbiAgICAgIGNvbmZpcm1CdXR0b25DbGFzcyxcbiAgICB9LCAoKSA9PiB0aGlzLnBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpKTtcblxuICAgIG1vZGFsLnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJHN1Ym1pdEJ0blxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICovXG4gIHBvc3RGb3JtKCRzdWJtaXRCdG4sIGdyaWQpIHtcbiAgICBjb25zdCAkZm9ybSA9ICQoYCMke2dyaWQuZ2V0SWQoKX1fZmlsdGVyX2Zvcm1gKTtcblxuICAgICRmb3JtLmF0dHIoJ2FjdGlvbicsICRzdWJtaXRCdG4uZGF0YSgnZm9ybS11cmwnKSk7XG4gICAgJGZvcm0uYXR0cignbWV0aG9kJywgJHN1Ym1pdEJ0bi5kYXRhKCdmb3JtLW1ldGhvZCcpKTtcbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbiBoYW5kbGVzIGdyaWQgYWN0aW9uIHN1Ym1pdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3VibWl0R3JpZEFjdGlvbkV4dGVuc2lvbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB7XG4gICAgICBleHRlbmQ6IChncmlkKSA9PiB0aGlzLmV4dGVuZChncmlkKSxcbiAgICB9O1xuICB9XG5cbiAgZXh0ZW5kKGdyaWQpIHtcbiAgICBncmlkLmdldEhlYWRlckNvbnRhaW5lcigpLm9uKCdjbGljaycsICcuanMtZ3JpZC1hY3Rpb24tc3VibWl0LWJ0bicsIChldmVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVTdWJtaXQoZXZlbnQsIGdyaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBncmlkIGFjdGlvbiBzdWJtaXQuXG4gICAqIEl0IHVzZXMgZ3JpZCBmb3JtIHRvIHN1Ym1pdCBhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKiBAcGFyYW0ge0dyaWR9IGdyaWRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGhhbmRsZVN1Ym1pdChldmVudCwgZ3JpZCkge1xuICAgIGNvbnN0ICRzdWJtaXRCdG4gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gJHN1Ym1pdEJ0bi5kYXRhKCdjb25maXJtLW1lc3NhZ2UnKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlybU1lc3NhZ2UgIT09ICd1bmRlZmluZWQnICYmIGNvbmZpcm1NZXNzYWdlLmxlbmd0aCA+IDAgJiYgIXdpbmRvdy5jb25maXJtKGNvbmZpcm1NZXNzYWdlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0ICRmb3JtID0gJChgIyR7Z3JpZC5nZXRJZCgpfV9maWx0ZXJfZm9ybWApO1xuXG4gICAgJGZvcm0uYXR0cignYWN0aW9uJywgJHN1Ym1pdEJ0bi5kYXRhKCd1cmwnKSk7XG4gICAgJGZvcm0uYXR0cignbWV0aG9kJywgJHN1Ym1pdEJ0bi5kYXRhKCdtZXRob2QnKSk7XG4gICAgJGZvcm0uZmluZChgaW5wdXRbbmFtZT1cIiR7Z3JpZC5nZXRJZCgpfVtfdG9rZW5dXCJdYCkudmFsKCRzdWJtaXRCdG4uZGF0YSgnY3NyZicpKTtcbiAgICAkZm9ybS5zdWJtaXQoKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIEdyaWQgZXZlbnRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyaWQge1xuICAvKipcbiAgICogR3JpZCBpZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGlkKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoYCMke3RoaXMuaWR9X2dyaWRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ3JpZCBpZFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdyaWQgY29udGFpbmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtqUXVlcnl9XG4gICAqL1xuICBnZXRDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ3JpZCBoZWFkZXIgY29udGFpbmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtqUXVlcnl9XG4gICAqL1xuICBnZXRIZWFkZXJDb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuJGNvbnRhaW5lci5jbG9zZXN0KCcuanMtZ3JpZC1wYW5lbCcpLmZpbmQoJy5qcy1ncmlkLWhlYWRlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dGVuZCBncmlkIHdpdGggZXh0ZXJuYWwgZXh0ZW5zaW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXh0ZW5zaW9uXG4gICAqL1xuICBhZGRFeHRlbnNpb24oZXh0ZW5zaW9uKSB7XG4gICAgZXh0ZW5zaW9uLmV4dGVuZCh0aGlzKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogQ29uZmlybU1vZGFsIGNvbXBvbmVudFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1UaXRsZVxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1NZXNzYWdlXG4gKiBAcGFyYW0ge1N0cmluZ30gY2xvc2VCdXR0b25MYWJlbFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1CdXR0b25MYWJlbFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpcm1CdXR0b25DbGFzc1xuICogQHBhcmFtIHtBcnJheX0gY3VzdG9tQnV0dG9uc1xuICogQHBhcmFtIHtCb29sZWFufSBjbG9zYWJsZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZmlybUNhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYW5jZWxDYWxsYmFja1xuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29uZmlybU1vZGFsKHBhcmFtcywgY29uZmlybUNhbGxiYWNrLCBjYW5jZWxDYWxsYmFjaykge1xuICAvLyBDb25zdHJ1Y3QgdGhlIG1vZGFsXG4gIGNvbnN0IHtpZCwgY2xvc2FibGV9ID0gcGFyYW1zO1xuICB0aGlzLm1vZGFsID0gTW9kYWwocGFyYW1zKTtcblxuICAvLyBqUXVlcnkgbW9kYWwgb2JqZWN0XG4gIHRoaXMuJG1vZGFsID0gJCh0aGlzLm1vZGFsLmNvbnRhaW5lcik7XG5cbiAgdGhpcy5zaG93ID0gKCkgPT4ge1xuICAgIHRoaXMuJG1vZGFsLm1vZGFsKCk7XG4gIH07XG5cbiAgdGhpcy5tb2RhbC5jb25maXJtQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY29uZmlybUNhbGxiYWNrKTtcblxuICB0aGlzLiRtb2RhbC5tb2RhbCh7XG4gICAgYmFja2Ryb3A6IGNsb3NhYmxlID8gdHJ1ZSA6ICdzdGF0aWMnLFxuICAgIGtleWJvYXJkOiBjbG9zYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xvc2FibGUgOiB0cnVlLFxuICAgIGNsb3NhYmxlOiBjbG9zYWJsZSAhPT0gdW5kZWZpbmVkID8gY2xvc2FibGUgOiB0cnVlLFxuICAgIHNob3c6IGZhbHNlLFxuICB9KTtcblxuICB0aGlzLiRtb2RhbC5vbignaGlkZGVuLmJzLm1vZGFsJywgKCkgPT4ge1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke2lkfWApLnJlbW92ZSgpO1xuICAgIGlmIChjYW5jZWxDYWxsYmFjaykge1xuICAgICAgY2FuY2VsQ2FsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5tb2RhbC5jb250YWluZXIpO1xufVxuXG4vKipcbiAqIE1vZGFsIGNvbXBvbmVudCB0byBpbXByb3ZlIGxpc2liaWxpdHkgYnkgY29uc3RydWN0aW5nIHRoZSBtb2RhbCBvdXRzaWRlIHRoZSBtYWluIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICpcbiAqL1xuZnVuY3Rpb24gTW9kYWwoe1xuICBpZCA9ICdjb25maXJtLW1vZGFsJyxcbiAgY29uZmlybVRpdGxlLFxuICBjb25maXJtTWVzc2FnZSA9ICcnLFxuICBjbG9zZUJ1dHRvbkxhYmVsID0gJ0Nsb3NlJyxcbiAgY29uZmlybUJ1dHRvbkxhYmVsID0gJ0FjY2VwdCcsXG4gIGNvbmZpcm1CdXR0b25DbGFzcyA9ICdidG4tcHJpbWFyeScsXG4gIGN1c3RvbUJ1dHRvbnMgPSBbXSxcbn0pIHtcbiAgY29uc3QgbW9kYWwgPSB7fTtcblxuICAvLyBNYWluIG1vZGFsIGVsZW1lbnRcbiAgbW9kYWwuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdtb2RhbCcsICdmYWRlJyk7XG4gIG1vZGFsLmNvbnRhaW5lci5pZCA9IGlkO1xuXG4gIC8vIE1vZGFsIGRpYWxvZyBlbGVtZW50XG4gIG1vZGFsLmRpYWxvZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5kaWFsb2cuY2xhc3NMaXN0LmFkZCgnbW9kYWwtZGlhbG9nJyk7XG5cbiAgLy8gTW9kYWwgY29udGVudCBlbGVtZW50XG4gIG1vZGFsLmNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuY29udGVudC5jbGFzc0xpc3QuYWRkKCdtb2RhbC1jb250ZW50Jyk7XG5cbiAgLy8gTW9kYWwgaGVhZGVyIGVsZW1lbnRcbiAgbW9kYWwuaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmhlYWRlci5jbGFzc0xpc3QuYWRkKCdtb2RhbC1oZWFkZXInKTtcblxuICAvLyBNb2RhbCB0aXRsZSBlbGVtZW50XG4gIGlmIChjb25maXJtVGl0bGUpIHtcbiAgICBtb2RhbC50aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2g0Jyk7XG4gICAgbW9kYWwudGl0bGUuY2xhc3NMaXN0LmFkZCgnbW9kYWwtdGl0bGUnKTtcbiAgICBtb2RhbC50aXRsZS5pbm5lckhUTUwgPSBjb25maXJtVGl0bGU7XG4gIH1cblxuICAvLyBNb2RhbCBjbG9zZSBidXR0b24gaWNvblxuICBtb2RhbC5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VJY29uLmNsYXNzTGlzdC5hZGQoJ2Nsb3NlJyk7XG4gIG1vZGFsLmNsb3NlSWNvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIG1vZGFsLmNsb3NlSWNvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jbG9zZUljb24uaW5uZXJIVE1MID0gJ8OXJztcblxuICAvLyBNb2RhbCBib2R5IGVsZW1lbnRcbiAgbW9kYWwuYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWJvZHknLCAndGV4dC1sZWZ0JywgJ2ZvbnQtd2VpZ2h0LW5vcm1hbCcpO1xuXG4gIC8vIE1vZGFsIG1lc3NhZ2UgZWxlbWVudFxuICBtb2RhbC5tZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICBtb2RhbC5tZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ2NvbmZpcm0tbWVzc2FnZScpO1xuICBtb2RhbC5tZXNzYWdlLmlubmVySFRNTCA9IGNvbmZpcm1NZXNzYWdlO1xuXG4gIC8vIE1vZGFsIGZvb3RlciBlbGVtZW50XG4gIG1vZGFsLmZvb3RlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5mb290ZXIuY2xhc3NMaXN0LmFkZCgnbW9kYWwtZm9vdGVyJyk7XG5cbiAgLy8gTW9kYWwgY2xvc2UgYnV0dG9uIGVsZW1lbnRcbiAgbW9kYWwuY2xvc2VCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VCdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdidG4nLCAnYnRuLW91dGxpbmUtc2Vjb25kYXJ5JywgJ2J0bi1sZycpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5pbm5lckhUTUwgPSBjbG9zZUJ1dHRvbkxhYmVsO1xuXG4gIC8vIE1vZGFsIGNvbmZpcm0gYnV0dG9uIGVsZW1lbnRcbiAgbW9kYWwuY29uZmlybUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdidG4nLCBjb25maXJtQnV0dG9uQ2xhc3MsICdidG4tbGcnLCAnYnRuLWNvbmZpcm0tc3VibWl0Jyk7XG4gIG1vZGFsLmNvbmZpcm1CdXR0b24uZGF0YXNldC5kaXNtaXNzID0gJ21vZGFsJztcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5pbm5lckhUTUwgPSBjb25maXJtQnV0dG9uTGFiZWw7XG5cbiAgLy8gQ29uc3RydWN0aW5nIHRoZSBtb2RhbFxuICBpZiAoY29uZmlybVRpdGxlKSB7XG4gICAgbW9kYWwuaGVhZGVyLmFwcGVuZChtb2RhbC50aXRsZSwgbW9kYWwuY2xvc2VJY29uKTtcbiAgfSBlbHNlIHtcbiAgICBtb2RhbC5oZWFkZXIuYXBwZW5kQ2hpbGQobW9kYWwuY2xvc2VJY29uKTtcbiAgfVxuXG4gIG1vZGFsLmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwubWVzc2FnZSk7XG4gIG1vZGFsLmZvb3Rlci5hcHBlbmQobW9kYWwuY2xvc2VCdXR0b24sIC4uLmN1c3RvbUJ1dHRvbnMsIG1vZGFsLmNvbmZpcm1CdXR0b24pO1xuICBtb2RhbC5jb250ZW50LmFwcGVuZChtb2RhbC5oZWFkZXIsIG1vZGFsLmJvZHksIG1vZGFsLmZvb3Rlcik7XG4gIG1vZGFsLmRpYWxvZy5hcHBlbmRDaGlsZChtb2RhbC5jb250ZW50KTtcbiAgbW9kYWwuY29udGFpbmVyLmFwcGVuZENoaWxkKG1vZGFsLmRpYWxvZyk7XG5cbiAgcmV0dXJuIG1vZGFsO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogTXVsdGlwbGVDaG9pY2VUYWJsZSBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgY29tbW9uIGFjdGlvbnMgaW4gbXVsdGlwbGUgY2hvaWNlIHRhYmxlIGZvcm0gdHlwZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXBsZUNob2ljZVRhYmxlIHtcbiAgLyoqXG4gICAqIEluaXQgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuanMtbXVsdGlwbGUtY2hvaWNlLXRhYmxlLXNlbGVjdC1jb2x1bW4nLCAoZSkgPT4gdGhpcy5oYW5kbGVTZWxlY3RDb2x1bW4oZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrL3VuY2hlY2sgYWxsIGJveGVzIGluIGNvbHVtblxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKi9cbiAgaGFuZGxlU2VsZWN0Q29sdW1uKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0ICRzZWxlY3RDb2x1bW5CdG4gPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgY29uc3QgY2hlY2tlZCA9ICRzZWxlY3RDb2x1bW5CdG4uZGF0YSgnY29sdW1uLWNoZWNrZWQnKTtcbiAgICAkc2VsZWN0Q29sdW1uQnRuLmRhdGEoJ2NvbHVtbi1jaGVja2VkJywgIWNoZWNrZWQpO1xuXG4gICAgY29uc3QgJHRhYmxlID0gJHNlbGVjdENvbHVtbkJ0bi5jbG9zZXN0KCd0YWJsZScpO1xuXG4gICAgJHRhYmxlXG4gICAgICAuZmluZChgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKCR7JHNlbGVjdENvbHVtbkJ0bi5kYXRhKCdjb2x1bW4tbnVtJyl9KSBpbnB1dFt0eXBlPWNoZWNrYm94XWApXG4gICAgICAucHJvcCgnY2hlY2tlZCcsICFjaGVja2VkKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIFRvZ2dsZSBhIGNsYXNzIG9uICRtYWluTWVudSBhZnRlciB0aGUgZW5kIG9mIGFuIGV2ZW50ICh0cmFuc2l0aW9uLCBhbmltYXRpb24uLi4pXG4gKiBAcGFyYW0ge2pRdWVyeSBlbGVtZW50fSAkbmF2QmFyIC0gVGhlIG5hdmJhciBpdGVtIHdoaWNoIGdldCBhIGNzcyB0cmFuc2l0aW9uIHByb3BlcnR5LlxuICogQHBhcmFtIHtqUXVlcnkgZWxlbWVudH0gJG1haW5NZW51IC0gVGhlIG1lbnUgaW5zaWRlIHRoZSAkbmF2QmFyIGVsZW1lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5kVHJhbnNpdGlvbkV2ZW50IC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICogQHBhcmFtIHtqUXVlcnkgZWxlbWVudH0gJGJvZHkgLSBUaGUgYm9keSBvZiB0aGUgcGFnZS5cbiAqIEBtZXRob2Qgc2hvd05hdkJhckNvbnRlbnQgLSBUb2dnbGUgdGhlIGNsYXNzIGJhc2VkIG9uIGV2ZW50IGFuZCBpZiBib2R5IGdvdCBhIGNsYXNzLlxuICogQG1ldGhvZCB0b2dnbGUgLSBBZGQgdGhlIGxpc3RlbmVyIGlmIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gbGF1bmNoZWQgeWV0LlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgb2JqZWN0IHdpdGggbWV0aG9kcyB3aWNoIHBlcm1pdCB0byB0b2dnbGUgb24gc3BlY2lmaWMgZXZlbnQuXG4qL1xuZnVuY3Rpb24gTmF2YmFyVHJhbnNpdGlvbkhhbmRsZXIoJG5hdkJhciwgJG1haW5NZW51LCBlbmRUcmFuc2l0aW9uRXZlbnQsICRib2R5KSB7XG4gIHRoaXMuJGJvZHkgPSAkYm9keTtcbiAgdGhpcy50cmFuc2l0aW9uRmlyZWQgPSBmYWxzZTtcbiAgdGhpcy4kbmF2QmFyID0gJG5hdkJhci5nZXQoMCk7XG4gIHRoaXMuJG1haW5NZW51ID0gJG1haW5NZW51O1xuICB0aGlzLmVuZFRyYW5zaXRpb25FdmVudCA9IGVuZFRyYW5zaXRpb25FdmVudDtcblxuICB0aGlzLnNob3dOYXZCYXJDb250ZW50ID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3dpZHRoJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuJG5hdkJhci5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuZW5kVHJhbnNpdGlvbkV2ZW50LCB0aGlzLnNob3dOYXZCYXJDb250ZW50KTtcbiAgICBjb25zdCBpc1NpZGViYXJDbG9zZWQgPSB0aGlzLiRib2R5Lmhhc0NsYXNzKCdwYWdlLXNpZGViYXItY2xvc2VkJyk7XG4gICAgdGhpcy4kbWFpbk1lbnUudG9nZ2xlQ2xhc3MoJ3NpZGViYXItY2xvc2VkJywgaXNTaWRlYmFyQ2xvc2VkKTtcbiAgICB0aGlzLnRyYW5zaXRpb25GaXJlZCA9IGZhbHNlO1xuICB9O1xuXG4gIHRoaXMudG9nZ2xlID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy50cmFuc2l0aW9uRmlyZWQpIHtcbiAgICAgIHRoaXMuJG5hdkJhci5hZGRFdmVudExpc3RlbmVyKHRoaXMuZW5kVHJhbnNpdGlvbkV2ZW50LCB0aGlzLnNob3dOYXZCYXJDb250ZW50LmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiRuYXZCYXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmVuZFRyYW5zaXRpb25FdmVudCwgdGhpcy5zaG93TmF2QmFyQ29udGVudCk7XG4gICAgfVxuXG4gICAgdGhpcy50cmFuc2l0aW9uRmlyZWQgPSAhdGhpcy50cmFuc2l0aW9uRmlyZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5hdmJhclRyYW5zaXRpb25IYW5kbGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgUm91dGluZyBmcm9tICdmb3Mtcm91dGluZyc7XG5pbXBvcnQgcm91dGVzIGZyb20gJ0Bqcy9mb3NfanNfcm91dGVzLmpzb24nO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogV3JhcHMgRk9TSnNSb3V0aW5nYnVuZGxlIHdpdGggZXhwb3NlZCByb3V0ZXMuXG4gKiBUbyBleHBvc2Ugcm91dGUgYWRkIG9wdGlvbiBgZXhwb3NlOiB0cnVlYCBpbiAueW1sIHJvdXRpbmcgY29uZmlnXG4gKlxuICogZS5nLlxuICpcbiAqIGBteV9yb3V0ZVxuICogICAgcGF0aDogL215LXBhdGhcbiAqICAgIG9wdGlvbnM6XG4gKiAgICAgIGV4cG9zZTogdHJ1ZVxuICogYFxuICogQW5kIHJ1biBgYmluL2NvbnNvbGUgZm9zOmpzLXJvdXRpbmc6ZHVtcCAtLWZvcm1hdD1qc29uIC0tdGFyZ2V0PWFkbWluLWRldi90aGVtZXMvbmV3LXRoZW1lL2pzL2Zvc19qc19yb3V0ZXMuanNvbmBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91dGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHdpbmRvdy5wcmVzdGFzaG9wICYmIHdpbmRvdy5wcmVzdGFzaG9wLmN1c3RvbVJvdXRlcykge1xuICAgICAgT2JqZWN0LmFzc2lnbihyb3V0ZXMucm91dGVzLCB3aW5kb3cucHJlc3Rhc2hvcC5jdXN0b21Sb3V0ZXMpO1xuICAgIH1cblxuICAgIFJvdXRpbmcuc2V0RGF0YShyb3V0ZXMpO1xuICAgIFJvdXRpbmcuc2V0QmFzZVVybChcbiAgICAgICQoZG9jdW1lbnQpXG4gICAgICAgIC5maW5kKCdib2R5JylcbiAgICAgICAgLmRhdGEoJ2Jhc2UtdXJsJyksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29yYXRlZCBcImdlbmVyYXRlXCIgbWV0aG9kLCB3aXRoIHByZWRlZmluZWQgc2VjdXJpdHkgdG9rZW4gaW4gcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9XG4gICAqL1xuICBnZW5lcmF0ZShyb3V0ZSwgcGFyYW1zID0ge30pIHtcbiAgICBjb25zdCB0b2tlbml6ZWRQYXJhbXMgPSBPYmplY3QuYXNzaWduKHBhcmFtcywge1xuICAgICAgX3Rva2VuOiAkKGRvY3VtZW50KVxuICAgICAgICAuZmluZCgnYm9keScpXG4gICAgICAgIC5kYXRhKCd0b2tlbicpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFJvdXRpbmcuZ2VuZXJhdGUocm91dGUsIHRva2VuaXplZFBhcmFtcyk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG4vKipcbiAqIGNsYXNzIFRhZ2dhYmxlRmllbGQgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBmdW5jdGlvbmFsaXR5IGZyb20gYm9vdHN0cmFwLXRva2VuZmllbGQgcGx1Z2luLlxuICogSXQgYWxsb3dzIHRvIGhhdmUgdGFnZ2FibGUgZmllbGRzIHdoaWNoIGFyZSBzcGxpdCBpbiBzZXBhcmF0ZSBibG9ja3Mgb25jZSB5b3UgY2xpY2sgZW50ZXIuIFZhbHVlcyBvcmlnaW5hbGx5IHNhdmVkXG4gKiBpbiBjb21tYSBzcGxpdCBzdHJpbmdzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWdnYWJsZUZpZWxkIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkZpZWxkU2VsZWN0b3IgLSAgYSBzZWxlY3RvciB3aGljaCBpcyB1c2VkIHdpdGhpbiBqUXVlcnkgb2JqZWN0LlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIGV4dGVuZHMgYmFzaWMgdG9rZW5GaWVsZCBiZWhhdmlvciB3aXRoIGFkZGl0aW9uYWwgb3B0aW9ucyBzdWNoIGFzIG1pbkxlbmd0aCwgZGVsaW1pdGVyLFxuICAgKiBhbGxvdyB0byBhZGQgdG9rZW4gb24gZm9jdXMgb3V0IGFjdGlvbi4gU2VlIGJvb3RzdHJhcC10b2tlbmZpZWxkIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7dG9rZW5GaWVsZFNlbGVjdG9yLCBvcHRpb25zID0ge319KSB7XG4gICAgJCh0b2tlbkZpZWxkU2VsZWN0b3IpLnRva2VuZmllbGQob3B0aW9ucyk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tICcuL2V2ZW50LWVtaXR0ZXInO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpbml0IFRpbnlNQ0UgaW5zdGFuY2VzIGluIHRoZSBiYWNrLW9mZmljZS4gSXQgaXMgd2lsZGx5IGluc3BpcmVkIGJ5XG4gKiB0aGUgc2NyaXB0cyBmcm9tIGpzL2FkbWluIEFuZCBpdCBhY3R1YWxseSBsb2FkcyBUaW55TUNFIGZyb20gdGhlIGpzL3RpbnlfbWNlXG4gKiBmb2xkZXIgYWxvbmcgd2l0aCBpdHMgbW9kdWxlcy4gT25lIGltcHJvdmVtZW50IGNvdWxkIGJlIHRvIGluc3RhbGwgVGlueU1DRSB2aWFcbiAqIG5wbSBhbmQgZnVsbHkgaW50ZWdyYXRlIGluIHRoZSBiYWNrLW9mZmljZSB0aGVtZS5cbiAqL1xuY2xhc3MgVGlueU1DRUVkaXRvciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLnRpbnlNQ0VMb2FkZWQgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIG9wdHMuYmFzZUFkbWluVXJsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuYmFzZUFkbWluRGlyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBvcHRzLmJhc2VBZG1pblVybCA9IHdpbmRvdy5iYXNlQWRtaW5EaXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXRoUGFydHMgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgcGF0aFBhcnRzLmV2ZXJ5KChwYXRoUGFydCkgPT4ge1xuICAgICAgICAgIGlmIChwYXRoUGFydCAhPT0gJycpIHtcbiAgICAgICAgICAgIG9wdHMuYmFzZUFkbWluVXJsID0gYC8ke3BhdGhQYXJ0fS9gO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdHMubGFuZ0lzUnRsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgb3B0cy5sYW5nSXNSdGwgPSB0eXBlb2Ygd2luZG93LmxhbmdfaXNfcnRsICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sYW5nX2lzX3J0bCA9PT0gJzEnIDogZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2V0dXBUaW55TUNFKG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2V0dXAgd2hpY2ggY2hlY2tzIGlmIHRoZSB0aW55TUNFIGxpYnJhcnkgaXMgYWxyZWFkeSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHNldHVwVGlueU1DRShjb25maWcpIHtcbiAgICBpZiAodHlwZW9mIHRpbnlNQ0UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmxvYWRBbmRJbml0VGlueU1DRShjb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRUaW55TUNFKGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZXBhcmUgdGhlIGNvbmZpZyBhbmQgaW5pdCBhbGwgVGlueU1DRSBlZGl0b3JzXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIGluaXRUaW55TUNFKGNvbmZpZykge1xuICAgIGNvbnN0IGNmZyA9IHtcbiAgICAgIHNlbGVjdG9yOiAnLnJ0ZScsXG4gICAgICBwbHVnaW5zOiAnYWxpZ24gY29sb3JwaWNrZXIgbGluayBpbWFnZSBmaWxlbWFuYWdlciB0YWJsZSBtZWRpYSBwbGFjZWhvbGRlciBsaXN0cyBhZHZsaXN0IGNvZGUgdGFibGUgYXV0b3Jlc2l6ZScsXG4gICAgICBicm93c2VyX3NwZWxsY2hlY2s6IHRydWUsXG4gICAgICB0b29sYmFyMTpcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4gKi9cbiAgICAgICAgJ2NvZGUsY29sb3JwaWNrZXIsYm9sZCxpdGFsaWMsdW5kZXJsaW5lLHN0cmlrZXRocm91Z2gsYmxvY2txdW90ZSxsaW5rLGFsaWduLGJ1bGxpc3QsbnVtbGlzdCx0YWJsZSxpbWFnZSxtZWRpYSxmb3JtYXRzZWxlY3QnLFxuICAgICAgdG9vbGJhcjI6ICcnLFxuICAgICAgbGFuZ3VhZ2U6IHdpbmRvdy5pc29fdXNlcixcbiAgICAgIGV4dGVybmFsX2ZpbGVtYW5hZ2VyX3BhdGg6IGAke2NvbmZpZy5iYXNlQWRtaW5Vcmx9ZmlsZW1hbmFnZXIvYCxcbiAgICAgIGZpbGVtYW5hZ2VyX3RpdGxlOiAnRmlsZSBtYW5hZ2VyJyxcbiAgICAgIGV4dGVybmFsX3BsdWdpbnM6IHtcbiAgICAgICAgZmlsZW1hbmFnZXI6IGAke2NvbmZpZy5iYXNlQWRtaW5Vcmx9ZmlsZW1hbmFnZXIvcGx1Z2luLm1pbi5qc2AsXG4gICAgICB9LFxuICAgICAgY29udGVudF9zdHlsZTogY29uZmlnLmxhbmdJc1J0bCA/ICdib2R5IHtkaXJlY3Rpb246cnRsO30nIDogJycsXG4gICAgICBza2luOiAncHJlc3Rhc2hvcCcsXG4gICAgICBtb2JpbGU6IHtcbiAgICAgICAgdGhlbWU6ICdtb2JpbGUnLFxuICAgICAgICBwbHVnaW5zOiBbJ2xpc3RzJywgJ2FsaWduJywgJ2xpbmsnLCAndGFibGUnLCAncGxhY2Vob2xkZXInLCAnYWR2bGlzdCcsICdjb2RlJ10sXG4gICAgICAgIHRvb2xiYXI6XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4gKi9cbiAgICAgICAgICAndW5kbyBjb2RlIGNvbG9ycGlja2VyIGJvbGQgaXRhbGljIHVuZGVybGluZSBzdHJpa2V0aHJvdWdoIGJsb2NrcXVvdGUgbGluayBhbGlnbiBidWxsaXN0IG51bWxpc3QgdGFibGUgZm9ybWF0c2VsZWN0IHN0eWxlc2VsZWN0JyxcbiAgICAgIH0sXG4gICAgICBtZW51YmFyOiBmYWxzZSxcbiAgICAgIHN0YXR1c2JhcjogZmFsc2UsXG4gICAgICByZWxhdGl2ZV91cmxzOiBmYWxzZSxcbiAgICAgIGNvbnZlcnRfdXJsczogZmFsc2UsXG4gICAgICBlbnRpdHlfZW5jb2Rpbmc6ICdyYXcnLFxuICAgICAgZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHM6ICdlbVtjbGFzc3xuYW1lfGlkXSxAW3JvbGV8ZGF0YS0qfGFyaWEtKl0nLFxuICAgICAgdmFsaWRfY2hpbGRyZW46ICcrKlsqXScsXG4gICAgICB2YWxpZF9lbGVtZW50czogJypbKl0nLFxuICAgICAgcmVsX2xpc3Q6IFt7dGl0bGU6ICdub2ZvbGxvdycsIHZhbHVlOiAnbm9mb2xsb3cnfV0sXG4gICAgICBlZGl0b3Jfc2VsZWN0b3I6ICdhdXRvbG9hZF9ydGUnLFxuICAgICAgaW5pdF9pbnN0YW5jZV9jYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZVRvTWF0ZXJpYWwoKTtcbiAgICAgIH0sXG4gICAgICBzZXR1cDogKGVkaXRvcikgPT4ge1xuICAgICAgICB0aGlzLnNldHVwRWRpdG9yKGVkaXRvcik7XG4gICAgICB9LFxuICAgICAgLi4uY29uZmlnLFxuICAgIH07XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdy5kZWZhdWx0VGlueU1jZUNvbmZpZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY2ZnLCB3aW5kb3cuZGVmYXVsdFRpbnlNY2VDb25maWcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2ZnLmVkaXRvcl9zZWxlY3RvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNmZy5zZWxlY3RvciA9IGAuJHtjZmcuZWRpdG9yX3NlbGVjdG9yfWA7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIGljb25zIGluIHBvcHVwc1xuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLm1jZS1idG4sIC5tY2Utb3BlbiwgLm1jZS1tZW51LWl0ZW0nLCAoKSA9PiB7XG4gICAgICB0aGlzLmNoYW5nZVRvTWF0ZXJpYWwoKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy50aW55TUNFLmluaXQoY2ZnKTtcbiAgICB0aGlzLndhdGNoVGFiQ2hhbmdlcyhjZmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHVwIFRpbnlNQ0UgZWRpdG9yIG9uY2UgaXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIGVkaXRvclxuICAgKi9cbiAgc2V0dXBFZGl0b3IoZWRpdG9yKSB7XG4gICAgZWRpdG9yLm9uKCdsb2FkQ29udGVudCcsIChldmVudCkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVDb3VudGVyVGlueShldmVudC50YXJnZXQuaWQpO1xuICAgIH0pO1xuICAgIGVkaXRvci5vbignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICB3aW5kb3cudGlueU1DRS50cmlnZ2VyU2F2ZSgpO1xuICAgICAgdGhpcy5oYW5kbGVDb3VudGVyVGlueShldmVudC50YXJnZXQuaWQpO1xuICAgIH0pO1xuICAgIGVkaXRvci5vbignYmx1cicsICgpID0+IHtcbiAgICAgIHdpbmRvdy50aW55TUNFLnRyaWdnZXJTYXZlKCk7XG4gICAgfSk7XG4gICAgRXZlbnRFbWl0dGVyLmVtaXQoJ3RpbnltY2VFZGl0b3JTZXR1cCcsIHtcbiAgICAgIGVkaXRvcixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBlZGl0b3IgaXMgaW5zaWRlIGEgdGFiIGl0IGNhbiBjYXVzZSBhIGJ1ZyBvbiB0YWIgc3dpdGNoaW5nLlxuICAgKiBTbyB3ZSBjaGVjayBpZiB0aGUgZWRpdG9yIGlzIGNvbnRhaW5lZCBpbiBhIG5hdmlnYXRpb24gYW5kIHJlZnJlc2ggdGhlIGVkaXRvciB3aGVuIGl0c1xuICAgKiBwYXJlbnQgdGFiIGlzIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICB3YXRjaFRhYkNoYW5nZXMoY29uZmlnKSB7XG4gICAgJChjb25maWcuc2VsZWN0b3IpLmVhY2goKGluZGV4LCB0ZXh0YXJlYSkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZpZWxkID0gJCh0ZXh0YXJlYSkuY2xvc2VzdCgnLnRyYW5zbGF0aW9uLWZpZWxkJyk7XG4gICAgICBjb25zdCB0YWJDb250YWluZXIgPSAkKHRleHRhcmVhKS5jbG9zZXN0KCcudHJhbnNsYXRpb25zLnRhYmJhYmxlJyk7XG5cbiAgICAgIGlmICh0cmFuc2xhdGVkRmllbGQubGVuZ3RoICYmIHRhYkNvbnRhaW5lci5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdGV4dGFyZWFMb2NhbGUgPSB0cmFuc2xhdGVkRmllbGQuZGF0YSgnbG9jYWxlJyk7XG4gICAgICAgIGNvbnN0IHRleHRhcmVhTGlua1NlbGVjdG9yID0gYC5uYXYtaXRlbSBhW2RhdGEtbG9jYWxlPVwiJHt0ZXh0YXJlYUxvY2FsZX1cIl1gO1xuXG4gICAgICAgICQodGV4dGFyZWFMaW5rU2VsZWN0b3IsIHRhYkNvbnRhaW5lcikub24oJ3Nob3duLmJzLnRhYicsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3JtID0gJCh0ZXh0YXJlYSkuY2xvc2VzdCgnZm9ybScpO1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHdpbmRvdy50aW55TUNFLmdldCh0ZXh0YXJlYS5pZCk7XG5cbiAgICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgICAvLyBSZXNldCBjb250ZW50IHRvIGZvcmNlIHJlZnJlc2ggb2YgZWRpdG9yXG4gICAgICAgICAgICBlZGl0b3Iuc2V0Q29udGVudChlZGl0b3IuZ2V0Q29udGVudCgpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBFdmVudEVtaXR0ZXIuZW1pdCgnbGFuZ3VhZ2VTZWxlY3RlZCcsIHtcbiAgICAgICAgICAgIHNlbGVjdGVkTG9jYWxlOiB0ZXh0YXJlYUxvY2FsZSxcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgRXZlbnRFbWl0dGVyLm9uKCdsYW5ndWFnZVNlbGVjdGVkJywgKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRleHRhcmVhTGlua1NlbGVjdG9yID0gYC5uYXYtaXRlbSBhW2RhdGEtbG9jYWxlPVwiJHtkYXRhLnNlbGVjdGVkTG9jYWxlfVwiXWA7XG5cbiAgICAgICQodGV4dGFyZWFMaW5rU2VsZWN0b3IpLmNsaWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIFRpbnlNQ0UgamF2YXNjcmlwdCBsaWJyYXJ5IGFuZCB0aGVuIGluaXQgdGhlIGVkaXRvcnNcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgbG9hZEFuZEluaXRUaW55TUNFKGNvbmZpZykge1xuICAgIGlmICh0aGlzLnRpbnlNQ0VMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpbnlNQ0VMb2FkZWQgPSB0cnVlO1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IGNvbmZpZy5iYXNlQWRtaW5Vcmwuc3BsaXQoJy8nKTtcbiAgICBwYXRoQXJyYXkuc3BsaWNlKHBhdGhBcnJheS5sZW5ndGggLSAyLCAyKTtcbiAgICBjb25zdCBmaW5hbFBhdGggPSBwYXRoQXJyYXkuam9pbignLycpO1xuICAgIHdpbmRvdy50aW55TUNFUHJlSW5pdCA9IHt9O1xuICAgIHdpbmRvdy50aW55TUNFUHJlSW5pdC5iYXNlID0gYCR7ZmluYWxQYXRofS9qcy90aW55X21jZWA7XG4gICAgd2luZG93LnRpbnlNQ0VQcmVJbml0LnN1ZmZpeCA9ICcubWluJztcbiAgICAkLmdldFNjcmlwdChgJHtmaW5hbFBhdGh9L2pzL3RpbnlfbWNlL3RpbnltY2UubWluLmpzYCwgKCkgPT4ge1xuICAgICAgdGhpcy5zZXR1cFRpbnlNQ0UoY29uZmlnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGluaXRpYWwgVGlueU1DRSBpY29ucyB3aXRoIG1hdGVyaWFsIGljb25zXG4gICAqL1xuICBjaGFuZ2VUb01hdGVyaWFsKCkge1xuICAgIGNvbnN0IG1hdGVyaWFsSWNvbkFzc29jID0ge1xuICAgICAgJ21jZS1pLWNvZGUnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmNvZGU8L2k+JyxcbiAgICAgICdtY2UtaS1ub25lJzogJzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5mb3JtYXRfY29sb3JfdGV4dDwvaT4nLFxuICAgICAgJ21jZS1pLWJvbGQnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmZvcm1hdF9ib2xkPC9pPicsXG4gICAgICAnbWNlLWktaXRhbGljJzogJzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5mb3JtYXRfaXRhbGljPC9pPicsXG4gICAgICAnbWNlLWktdW5kZXJsaW5lJzogJzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5mb3JtYXRfdW5kZXJsaW5lZDwvaT4nLFxuICAgICAgJ21jZS1pLXN0cmlrZXRocm91Z2gnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmZvcm1hdF9zdHJpa2V0aHJvdWdoPC9pPicsXG4gICAgICAnbWNlLWktYmxvY2txdW90ZSc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Zm9ybWF0X3F1b3RlPC9pPicsXG4gICAgICAnbWNlLWktbGluayc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bGluazwvaT4nLFxuICAgICAgJ21jZS1pLWFsaWdubGVmdCc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Zm9ybWF0X2FsaWduX2xlZnQ8L2k+JyxcbiAgICAgICdtY2UtaS1hbGlnbmNlbnRlcic6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Zm9ybWF0X2FsaWduX2NlbnRlcjwvaT4nLFxuICAgICAgJ21jZS1pLWFsaWducmlnaHQnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmZvcm1hdF9hbGlnbl9yaWdodDwvaT4nLFxuICAgICAgJ21jZS1pLWFsaWduanVzdGlmeSc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Zm9ybWF0X2FsaWduX2p1c3RpZnk8L2k+JyxcbiAgICAgICdtY2UtaS1idWxsaXN0JzogJzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5mb3JtYXRfbGlzdF9idWxsZXRlZDwvaT4nLFxuICAgICAgJ21jZS1pLW51bWxpc3QnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmZvcm1hdF9saXN0X251bWJlcmVkPC9pPicsXG4gICAgICAnbWNlLWktaW1hZ2UnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmltYWdlPC9pPicsXG4gICAgICAnbWNlLWktdGFibGUnOiAnPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmdyaWRfb248L2k+JyxcbiAgICAgICdtY2UtaS1tZWRpYSc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+dmlkZW9fbGlicmFyeTwvaT4nLFxuICAgICAgJ21jZS1pLWJyb3dzZSc6ICc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+YXR0YWNobWVudDwvaT4nLFxuICAgICAgJ21jZS1pLWNoZWNrYm94JzogJzxpIGNsYXNzPVwibWNlLWljbyBtY2UtaS1jaGVja2JveFwiPjwvaT4nLFxuICAgIH07XG5cbiAgICAkLmVhY2gobWF0ZXJpYWxJY29uQXNzb2MsIChpbmRleCwgdmFsdWUpID0+IHtcbiAgICAgICQoYC4ke2luZGV4fWApLnJlcGxhY2VXaXRoKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjaGFyYWN0ZXJzIGNvdW50ZXIuIFRoaXMgY291bnRlciBpcyB1c2VkIGZvciBmcm9udCBidXQgaWYgeW91IGRvbid0IHdhbnQgdG8gZW5jb3VudGVyIFZhbGlkYXRpb25cbiAgICogcHJvYmxlbXMgeW91IHNob3VsZCBiZSBpbiBzeW5jIHdpdGggdGhlIFRpbnlNY2VNYXhMZW5ndGhWYWxpZGF0b3IgUEhQIGNsYXNzLiBCb3RoIGNvZGVzIG11c3QgYmVoYXZlIHRoZSBzYW1lXG4gICAqIHdheS5cbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqL1xuICBoYW5kbGVDb3VudGVyVGlueShpZCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gJChgIyR7aWR9YCk7XG4gICAgY29uc3QgY291bnRlciA9IHRleHRhcmVhLmF0dHIoJ2NvdW50ZXInKTtcbiAgICBjb25zdCBjb3VudGVyVHlwZSA9IHRleHRhcmVhLmF0dHIoJ2NvdW50ZXJfdHlwZScpO1xuICAgIGNvbnN0IGVkaXRvciA9IHdpbmRvdy50aW55TUNFLmdldChpZCk7XG4gICAgY29uc3QgbWF4ID0gZWRpdG9yLmdldEJvZHkoKSA/IGVkaXRvci5nZXRCb2R5KCkudGV4dENvbnRlbnQubGVuZ3RoIDogMDtcblxuICAgIHRleHRhcmVhXG4gICAgICAucGFyZW50KClcbiAgICAgIC5maW5kKCdzcGFuLmN1cnJlbnRMZW5ndGgnKVxuICAgICAgLnRleHQobWF4KTtcbiAgICBpZiAoY291bnRlclR5cGUgIT09ICdyZWNvbW1lbmRlZCcgJiYgbWF4ID4gY291bnRlcikge1xuICAgICAgdGV4dGFyZWFcbiAgICAgICAgLnBhcmVudCgpXG4gICAgICAgIC5maW5kKCdzcGFuLm1heExlbmd0aCcpXG4gICAgICAgIC5hZGRDbGFzcygndGV4dC1kYW5nZXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dGFyZWFcbiAgICAgICAgLnBhcmVudCgpXG4gICAgICAgIC5maW5kKCdzcGFuLm1heExlbmd0aCcpXG4gICAgICAgIC5yZW1vdmVDbGFzcygndGV4dC1kYW5nZXInKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGlueU1DRUVkaXRvcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJy4vZXZlbnQtZW1pdHRlcic7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gYXV0b21hdGljYWxseSB0b2dnbGUgdHJhbnNsYXRlZCBmaWVsZHMgKGRpc3BsYXllZCB3aXRoIHRhYnNcbiAqIHVzaW5nIHRoZSBUcmFuc2xhdGVUeXBlIFN5bWZvbnkgZm9ybSB0eXBlKS5cbiAqIEFsc28gY29tcGF0aWJsZSB3aXRoIFRyYW5zbGF0YWJsZUlucHV0IGNoYW5nZXMuXG4gKi9cbmNsYXNzIFRyYW5zbGF0YWJsZUZpZWxkIHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy5sb2NhbGVCdXR0b25TZWxlY3RvciA9IG9wdHMubG9jYWxlQnV0dG9uU2VsZWN0b3IgfHwgJy50cmFuc2xhdGlvbnNMb2NhbGVzLm5hdiAubmF2LWl0ZW0gYVtkYXRhLXRvZ2dsZT1cInRhYlwiXSc7XG4gICAgdGhpcy5sb2NhbGVOYXZpZ2F0aW9uU2VsZWN0b3IgPSBvcHRzLmxvY2FsZU5hdmlnYXRpb25TZWxlY3RvciB8fCAnLnRyYW5zbGF0aW9uc0xvY2FsZXMubmF2JztcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmllbGRTZWxlY3RvciA9IG9wdHMudHJhbnNsYXRpb25GaWVsZFNlbGVjdG9yIHx8ICcudHJhbnNsYXRpb24tZmllbGQnO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSAkKCcubmF2LWl0ZW0gYS5hY3RpdmUnLCAkKHRoaXMubG9jYWxlTmF2aWdhdGlvblNlbGVjdG9yKSkuZGF0YSgnbG9jYWxlJyk7XG5cbiAgICAkKCdib2R5Jykub24oJ3Nob3duLmJzLnRhYicsIHRoaXMubG9jYWxlQnV0dG9uU2VsZWN0b3IsIHRoaXMudG9nZ2xlTGFuZ3VhZ2UuYmluZCh0aGlzKSk7XG4gICAgRXZlbnRFbWl0dGVyLm9uKCdsYW5ndWFnZVNlbGVjdGVkJywgdGhpcy50b2dnbGVGaWVsZHMuYmluZCh0aGlzKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlQnV0dG9uU2VsZWN0b3I6IHRoaXMubG9jYWxlQnV0dG9uU2VsZWN0b3IsXG4gICAgICBsb2NhbGVOYXZpZ2F0aW9uU2VsZWN0b3I6IHRoaXMubG9jYWxlTmF2aWdhdGlvblNlbGVjdG9yLFxuICAgICAgdHJhbnNsYXRpb25GaWVsZFNlbGVjdG9yOiB0aGlzLnRyYW5zbGF0aW9uRmllbGRTZWxlY3RvcixcblxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0ge2pRdWVyeX0gZm9ybVxuICAgICAgICovXG4gICAgICByZWZyZXNoRm9ybUlucHV0czogKGZvcm0pID0+IHsgdGhpcy5yZWZyZXNoSW5wdXRzKGZvcm0pOyB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBnZXRTZWxlY3RlZExvY2FsZTogKCkgPT4gdGhpcy5zZWxlY3RlZExvY2FsZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBmb3JtXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByZWZyZXNoSW5wdXRzKGZvcm0pIHtcbiAgICBFdmVudEVtaXR0ZXIuZW1pdCgnbGFuZ3VhZ2VTZWxlY3RlZCcsIHtcbiAgICAgIHNlbGVjdGVkTG9jYWxlOiB0aGlzLnNlbGVjdGVkTG9jYWxlLFxuICAgICAgZm9ybSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaCBldmVudCBvbiBsYW5ndWFnZSBzZWxlY3Rpb24gdG8gdXBkYXRlIGlucHV0cyBhbmQgb3RoZXIgY29tcG9uZW50cyB3aGljaCBkZXBlbmQgb24gdGhlIGxvY2FsZS5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0b2dnbGVMYW5ndWFnZShldmVudCkge1xuICAgIGNvbnN0IGxvY2FsZUxpbmsgPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgY29uc3QgZm9ybSA9IGxvY2FsZUxpbmsuY2xvc2VzdCgnZm9ybScpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBsb2NhbGVMaW5rLmRhdGEoJ2xvY2FsZScpO1xuICAgIHRoaXMucmVmcmVzaElucHV0cyhmb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYWxsIHRyYW5zdGF0aW9uIGZpZWxkcyB0byB0aGUgc2VsZWN0ZWQgbG9jYWxlXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdG9nZ2xlRmllbGRzKGV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGV2ZW50LnNlbGVjdGVkTG9jYWxlO1xuICAgICQodGhpcy5sb2NhbGVOYXZpZ2F0aW9uU2VsZWN0b3IpLmVhY2goKGluZGV4LCBuYXZpZ2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZExpbmsgPSAkKCcubmF2LWl0ZW0gYS5hY3RpdmUnLCBuYXZpZ2F0aW9uKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTG9jYWxlID0gc2VsZWN0ZWRMaW5rLmRhdGEoJ2xvY2FsZScpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsZSAhPT0gc2VsZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgJChgLm5hdi1pdGVtIGFbZGF0YS1sb2NhbGU9XCIke3RoaXMuc2VsZWN0ZWRMb2NhbGV9XCJdYCwgbmF2aWdhdGlvbikudGFiKCdzaG93Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVHJhbnNsYXRhYmxlRmllbGQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tICcuL2V2ZW50LWVtaXR0ZXInO1xuXG5jb25zdCB7JH0gPSB3aW5kb3c7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgdG9nZ2xlIHRyYW5zbGF0ZWQgaW5wdXRzIChkaXNwbGF5ZWQgd2l0aCBvbmVcbiAqIGlucHV0IGFuZCBhIGxhbmd1YWdlIHNlbGVjdG9yIHVzaW5nIHRoZSBUcmFuc2xhdGFibGVUeXBlIFN5bWZvbnkgZm9ybSB0eXBlKS5cbiAqIEFsc28gY29tcGF0aWJsZSB3aXRoIFRyYW5zbGF0YWJsZUZpZWxkIGNoYW5nZXMuXG4gKi9cbmNsYXNzIFRyYW5zbGF0YWJsZUlucHV0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgdGhpcy5sb2NhbGVJdGVtU2VsZWN0b3IgPSBvcHRzLmxvY2FsZUl0ZW1TZWxlY3RvciB8fCAnLmpzLWxvY2FsZS1pdGVtJztcbiAgICB0aGlzLmxvY2FsZUJ1dHRvblNlbGVjdG9yID0gb3B0cy5sb2NhbGVCdXR0b25TZWxlY3RvciB8fCAnLmpzLWxvY2FsZS1idG4nO1xuICAgIHRoaXMubG9jYWxlSW5wdXRTZWxlY3RvciA9IG9wdHMubG9jYWxlSW5wdXRTZWxlY3RvciB8fCAnLmpzLWxvY2FsZS1pbnB1dCc7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9ICQodGhpcy5sb2NhbGVJdGVtU2VsZWN0b3IpLmRhdGEoJ2xvY2FsZScpO1xuXG4gICAgJCgnYm9keScpLm9uKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIHRoaXMubG9jYWxlSXRlbVNlbGVjdG9yLFxuICAgICAgdGhpcy50b2dnbGVMYW5ndWFnZS5iaW5kKHRoaXMpLFxuICAgICk7XG4gICAgRXZlbnRFbWl0dGVyLm9uKCdsYW5ndWFnZVNlbGVjdGVkJywgdGhpcy50b2dnbGVJbnB1dHMuYmluZCh0aGlzKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlSXRlbVNlbGVjdG9yOiB0aGlzLmxvY2FsZUl0ZW1TZWxlY3RvcixcbiAgICAgIGxvY2FsZUJ1dHRvblNlbGVjdG9yOiB0aGlzLmxvY2FsZUJ1dHRvblNlbGVjdG9yLFxuICAgICAgbG9jYWxlSW5wdXRTZWxlY3RvcjogdGhpcy5sb2NhbGVJbnB1dFNlbGVjdG9yLFxuXG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSB7alF1ZXJ5fSBmb3JtXG4gICAgICAgKi9cbiAgICAgIHJlZnJlc2hGb3JtSW5wdXRzOiAoZm9ybSkgPT4geyB0aGlzLnJlZnJlc2hJbnB1dHMoZm9ybSk7IH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9XG4gICAgICAgKi9cbiAgICAgIGdldFNlbGVjdGVkTG9jYWxlOiAoKSA9PiB0aGlzLnNlbGVjdGVkTG9jYWxlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtqUXVlcnl9IGZvcm1cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJlZnJlc2hJbnB1dHMoZm9ybSkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZExvY2FsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIEV2ZW50RW1pdHRlci5lbWl0KCdsYW5ndWFnZVNlbGVjdGVkJywge1xuICAgICAgc2VsZWN0ZWRMb2NhbGU6IHRoaXMuc2VsZWN0ZWRMb2NhbGUsXG4gICAgICBmb3JtLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoIGV2ZW50IG9uIGxhbmd1YWdlIHNlbGVjdGlvbiB0byB1cGRhdGUgaW5wdXRzIGFuZCBvdGhlciBjb21wb25lbnRzIHdoaWNoIGRlcGVuZCBvbiB0aGUgbG9jYWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHRvZ2dsZUxhbmd1YWdlKGV2ZW50KSB7XG4gICAgY29uc3QgbG9jYWxlSXRlbSA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICBjb25zdCBmb3JtID0gbG9jYWxlSXRlbS5jbG9zZXN0KCdmb3JtJyk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGxvY2FsZUl0ZW0uZGF0YSgnbG9jYWxlJyk7XG4gICAgdGhpcy5yZWZyZXNoSW5wdXRzKGZvcm0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBhbGwgdHJhbnNsYXRhYmxlIGlucHV0cyBpbiBmb3JtIGluIHdoaWNoIGxvY2FsZSB3YXMgY2hhbmdlZFxuICAgKlxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgdG9nZ2xlSW5wdXRzKGV2ZW50KSB7XG4gICAgY29uc3Qge2Zvcm19ID0gZXZlbnQ7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGV2ZW50LnNlbGVjdGVkTG9jYWxlO1xuICAgIGNvbnN0IGxvY2FsZUJ1dHRvbiA9IGZvcm0uZmluZCh0aGlzLmxvY2FsZUJ1dHRvblNlbGVjdG9yKTtcbiAgICBjb25zdCBjaGFuZ2VMYW5ndWFnZVVybCA9IGxvY2FsZUJ1dHRvbi5kYXRhKCdjaGFuZ2UtbGFuZ3VhZ2UtdXJsJyk7XG5cbiAgICBsb2NhbGVCdXR0b24udGV4dCh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcbiAgICBmb3JtLmZpbmQodGhpcy5sb2NhbGVJbnB1dFNlbGVjdG9yKS5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgZm9ybVxuICAgICAgLmZpbmQoYCR7dGhpcy5sb2NhbGVJbnB1dFNlbGVjdG9yfS5qcy1sb2NhbGUtJHt0aGlzLnNlbGVjdGVkTG9jYWxlfWApXG4gICAgICAucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuXG4gICAgaWYgKGNoYW5nZUxhbmd1YWdlVXJsKSB7XG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZExhbmd1YWdlKGNoYW5nZUxhbmd1YWdlVXJsLCB0aGlzLnNlbGVjdGVkTG9jYWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBsYW5ndWFnZSBjaG9pY2UgZm9yIGVtcGxveWVlIGZvcm1zLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hhbmdlTGFuZ3VhZ2VVcmxcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdGVkTG9jYWxlXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzYXZlU2VsZWN0ZWRMYW5ndWFnZShjaGFuZ2VMYW5ndWFnZVVybCwgc2VsZWN0ZWRMb2NhbGUpIHtcbiAgICAkLnBvc3Qoe1xuICAgICAgdXJsOiBjaGFuZ2VMYW5ndWFnZVVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFuZ3VhZ2VfaXNvX2NvZGU6IHNlbGVjdGVkTG9jYWxlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUcmFuc2xhdGFibGVJbnB1dDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCByZWZyZXNoTm90aWZpY2F0aW9ucyBmcm9tICdAanMvbm90aWZpY2F0aW9ucy5qcyc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGVhZGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgJCgoKSA9PiB7XG4gICAgICB0aGlzLmluaXRRdWlja0FjY2VzcygpO1xuICAgICAgdGhpcy5pbml0TXVsdGlTdG9yZXMoKTtcbiAgICAgIHRoaXMuaW5pdE5vdGlmaWNhdGlvbnNUb2dnbGUoKTtcbiAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgdGhpcy5pbml0Q29udGVudERpdk9mZnNldCgpO1xuICAgICAgcmVmcmVzaE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRRdWlja0FjY2VzcygpIHtcbiAgICAkKCcuanMtcXVpY2stbGluaycpLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGNvbnN0IG1ldGhvZCA9ICQoZS50YXJnZXQpLmRhdGEoJ21ldGhvZCcpO1xuICAgICAgbGV0IG5hbWUgPSBudWxsO1xuXG4gICAgICBpZiAobWV0aG9kID09PSAnYWRkJykge1xuICAgICAgICBjb25zdCB0ZXh0ID0gJChlLnRhcmdldCkuZGF0YSgncHJvbXB0LXRleHQnKTtcbiAgICAgICAgY29uc3QgbGluayA9ICQoZS50YXJnZXQpLmRhdGEoJ2xpbmsnKTtcblxuICAgICAgICBuYW1lID0gcHJvbXB0KHRleHQsIGxpbmspO1xuICAgICAgfVxuXG4gICAgICBpZiAoKG1ldGhvZCA9PT0gJ2FkZCcgJiYgbmFtZSkgfHwgbWV0aG9kID09PSAncmVtb3ZlJykge1xuICAgICAgICBjb25zdCBwb3N0TGluayA9ICQoZS50YXJnZXQpLmRhdGEoJ3Bvc3QtbGluaycpO1xuICAgICAgICBjb25zdCBxdWlja0xpbmtJZCA9ICQoZS50YXJnZXQpLmRhdGEoJ3F1aWNrbGluay1pZCcpO1xuICAgICAgICBjb25zdCByYW5kID0gJChlLnRhcmdldCkuZGF0YSgncmFuZCcpO1xuICAgICAgICBjb25zdCB1cmwgPSAkKGUudGFyZ2V0KS5kYXRhKCd1cmwnKTtcbiAgICAgICAgY29uc3QgaWNvbiA9ICQoZS50YXJnZXQpLmRhdGEoJ2ljb24nKTtcblxuICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgIHR5cGU6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnY2FjaGUtY29udHJvbCc6ICduby1jYWNoZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYzogdHJ1ZSxcbiAgICAgICAgICB1cmw6IGAke3Bvc3RMaW5rfSZhY3Rpb249R2V0VXJsJnJhbmQ9JHtyYW5kfSZhamF4PTEmbWV0aG9kPSR7bWV0aG9kfSZpZF9xdWlja19hY2Nlc3M9JHtxdWlja0xpbmtJZH1gLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICBzdWNjZXNzOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgbGV0IHF1aWNrbGlua0xpc3QgPSAnJztcbiAgICAgICAgICAgICQuZWFjaChkYXRhLCAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4gKi9cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XS5uYW1lICE9PSAndW5kZWZpbmVkJykgcXVpY2tsaW5rTGlzdCArPSBgPGxpPjxhIGhyZWY9XCIke2RhdGFbaW5kZXhdLmxpbmt9JnRva2VuPSR7ZGF0YVtpbmRleF0udG9rZW59XCI+PGkgY2xhc3M9XCJpY29uLWNoZXZyb24tcmlnaHRcIj48L2k+ICR7ZGF0YVtpbmRleF0ubmFtZX08L2E+PC9saT5gO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5oYXNfZXJyb3JzICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhLmhhc19lcnJvcnMpIHtcbiAgICAgICAgICAgICAgJC5lYWNoKGRhdGEsIChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YVtpbmRleF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAkLmdyb3dsLmVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkYXRhW2luZGV4XSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHF1aWNrbGlua0xpc3QpIHtcbiAgICAgICAgICAgICAgJCgnI2hlYWRlcl9xdWljayB1bC5kcm9wZG93bi1tZW51IC5kaXZpZGVyJylcbiAgICAgICAgICAgICAgICAucHJldkFsbCgpXG4gICAgICAgICAgICAgICAgLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAkKCcjaGVhZGVyX3F1aWNrIHVsLmRyb3Bkb3duLW1lbnUnKS5wcmVwZW5kKHF1aWNrbGlua0xpc3QpO1xuICAgICAgICAgICAgICAkKGUudGFyZ2V0KS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgd2luZG93LnNob3dTdWNjZXNzTWVzc2FnZSh3aW5kb3cudXBkYXRlX3N1Y2Nlc3NfbXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGluaXRNdWx0aVN0b3JlcygpIHtcbiAgICAkKCcuanMtbGluaycpLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB3aW5kb3cub3BlbihcbiAgICAgICAgJChlLnRhcmdldClcbiAgICAgICAgICAucGFyZW50cygnLmxpbmsnKVxuICAgICAgICAgIC5hdHRyKCdocmVmJyksXG4gICAgICAgICdfYmxhbmsnLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXROb3RpZmljYXRpb25zVG9nZ2xlKCkge1xuICAgICQoJy5ub3RpZmljYXRpb24uZHJvcGRvd24tdG9nZ2xlJykub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgaWYgKCEkKCcubW9iaWxlLW5hdicpLmhhc0NsYXNzKCdleHBhbmRlZCcpKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRW1wbG95ZWVOb3RpZmljYXRpb25zKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgISQoJ2Rpdi5ub3RpZmljYXRpb24tY2VudGVyLmRyb3Bkb3duJykuaXMoZS50YXJnZXQpXG4gICAgICAgICYmICQoJ2Rpdi5ub3RpZmljYXRpb24tY2VudGVyLmRyb3Bkb3duJykuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDBcbiAgICAgICAgJiYgJCgnLm9wZW4nKS5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIGlmICgkKCdkaXYubm90aWZpY2F0aW9uLWNlbnRlci5kcm9wZG93bicpLmhhc0NsYXNzKCdvcGVuJykpIHtcbiAgICAgICAgICAkKCcubW9iaWxlLWxheWVyJykucmVtb3ZlQ2xhc3MoJ2V4cGFuZGVkJyk7XG4gICAgICAgICAgcmVmcmVzaE5vdGlmaWNhdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgJCgnLm5vdGlmaWNhdGlvbi1jZW50ZXIgLm5hdi1saW5rJykub24oJ3Nob3duLmJzLnRhYicsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRW1wbG95ZWVOb3RpZmljYXRpb25zKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0U2VhcmNoKCkge1xuICAgICQoJy5qcy1pdGVtcy1saXN0Jykub24oJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICQoJy5qcy1mb3JtLXNlYXJjaCcpLmF0dHIoJ3BsYWNlaG9sZGVyJywgJChlLnRhcmdldCkuZGF0YSgncGxhY2Vob2xkZXInKSk7XG4gICAgICAkKCcuanMtc2VhcmNoLXR5cGUnKS52YWwoJChlLnRhcmdldCkuZGF0YSgndmFsdWUnKSk7XG4gICAgICAkKCcuanMtZHJvcGRvd24tdG9nZ2xlJykudGV4dCgkKGUudGFyZ2V0KS5kYXRhKCdpdGVtJykpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRW1wbG95ZWVOb3RpZmljYXRpb25zKCkge1xuICAgICQucG9zdCh3aW5kb3cuYWRtaW5Ob3RpZmljYXRpb25QdXNoTGluaywge1xuICAgICAgdHlwZTogJCgnLm5vdGlmaWNhdGlvbi1jZW50ZXIgLm5hdi1saW5rLmFjdGl2ZScpLmF0dHIoJ2RhdGEtdHlwZScpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIG9mZnNldCBvZiB0aGUgY29udGVudCBkaXYgaW4gd2hlbmV2ZXIgdGhlIGhlYWRlciBjaGFuZ2VzIHNpemVcbiAgICovXG4gIGluaXRDb250ZW50RGl2T2Zmc2V0KCkge1xuICAgIGNvbnN0IG9uVG9vbGJhclJlc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRvb2xiYXIgPSAkKCcuaGVhZGVyLXRvb2xiYXInKS5sYXN0KCk7XG4gICAgICBjb25zdCBoZWFkZXIgPSAkKCcubWFpbi1oZWFkZXInKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSAkKCcuY29udGVudC1kaXYnKTtcbiAgICAgIGNvbnN0IHNwYWNpbmcgPSAxNTtcblxuICAgICAgaWYgKHRvb2xiYXIubGVuZ3RoICYmIGhlYWRlci5sZW5ndGggJiYgY29udGVudC5sZW5ndGgpIHtcbiAgICAgICAgY29udGVudC5jc3MoJ3BhZGRpbmctdG9wJywgdG9vbGJhci5vdXRlckhlaWdodCgpICsgaGVhZGVyLm91dGVySGVpZ2h0KCkgKyBzcGFjaW5nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gdXBkYXRlIHRoZSBvZmZzZXQgbm93XG4gICAgb25Ub29sYmFyUmVzaXplKCk7XG5cbiAgICAvLyB1cGRhdGUgd2hlbiByZXNpemluZyB0aGUgd2luZG93XG4gICAgJCh3aW5kb3cpLnJlc2l6ZShvblRvb2xiYXJSZXNpemUpO1xuXG4gICAgLy8gdXBkYXRlIHdoZW4gcmVwbGFjaW5nIHRoZSBoZWFkZXIgd2l0aCBhIHZ1ZSBoZWFkZXJcbiAgICAkKGRvY3VtZW50KS5vbigndnVlSGVhZGVyTW91bnRlZCcsIG9uVG9vbGJhclJlc2l6ZSk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IElwSW5wdXQgZnJvbSAnLi9pcC1pbnB1dCc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuJCgoKSA9PiB7XG4gIC8vIERvIG5vdCBydW4gaWYgd2UncmUgbm90IG9uIHRoZSBtYWludGVuYW5jZSBwYWdlXG4gIGlmICghd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKCcvY29uZmlndXJlL3Nob3AvbWFpbnRlbmFuY2VcXFxcYicpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgSXBJbnB1dC5pbml0KCk7XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmNvbnN0IHskfSA9IHdpbmRvdztcbmNvbnN0IElwSW5wdXQgPSB7fTtcblxuSXBJbnB1dC5hZGRSZW1vdGVBZGRyID0gKGV2ZW50KSA9PiB7XG4gIGNvbnN0IGlucHV0ID0gJChldmVudC50YXJnZXQpLnByZXYoJ2lucHV0Jyk7XG4gIGNvbnN0IGlucHV0VmFsdWUgPSBpbnB1dC52YWwoKSB8fCAnJztcbiAgY29uc3QgaXAgPSBldmVudC50YXJnZXQuZGF0YXNldC5pcCB8fCAnJztcblxuICBpZiAoaW5wdXRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGlucHV0LnZhbCgpLmluZGV4T2YoaXApIDwgMCkge1xuICAgICAgaW5wdXQudmFsKGAke2lucHV0LnZhbCgpfSwke2lwfWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpbnB1dC52YWwoaXApO1xuICB9XG59O1xuXG5JcElucHV0LmluaXQgPSAoKSA9PiB7XG4gICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmFkZF9pcF9idXR0b24nLCBJcElucHV0LmFkZFJlbW90ZUFkZHIpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSXBJbnB1dDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuaW1wb3J0IFBlcmZlY3RTY3JvbGxiYXIgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuaW1wb3J0ICdwZXJmZWN0LXNjcm9sbGJhci9jc3MvcGVyZmVjdC1zY3JvbGxiYXIuY3NzJztcbmltcG9ydCBnZXRBbmltYXRpb25FdmVudCBmcm9tICcuL2FwcC91dGlscy9hbmltYXRpb25zJztcbmltcG9ydCBOYXZiYXJUcmFuc2l0aW9uSGFuZGxlciBmcm9tICcuL2NvbXBvbmVudHMvbmF2YmFyLXRyYW5zaXRpb24taGFuZGxlcic7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmF2QmFyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgJCgoKSA9PiB7XG4gICAgICBjb25zdCAkbWFpbk1lbnUgPSAkKCcubWFpbi1tZW51Jyk7XG4gICAgICBjb25zdCAkbmF2QmFyID0gJCgnLm5hdi1iYXInKTtcbiAgICAgIGNvbnN0ICRib2R5ID0gJCgnYm9keScpO1xuXG4gICAgICBpZiAoJG5hdkJhci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0ICRuYXZCYXJPdmVyZmxvdyA9ICQoJy5uYXYtYmFyLW92ZXJmbG93Jyk7XG4gICAgICAgIGNvbnN0IE5hdkJhclRyYW5zaXRpb25zID0gbmV3IE5hdmJhclRyYW5zaXRpb25IYW5kbGVyKFxuICAgICAgICAgICRuYXZCYXIsXG4gICAgICAgICAgJG1haW5NZW51LFxuICAgICAgICAgIGdldEFuaW1hdGlvbkV2ZW50KCd0cmFuc2l0aW9uJywgJ2VuZCcpLFxuICAgICAgICAgICRib2R5LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICgkbmF2QmFyT3ZlcmZsb3cubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcubmF2LWJhci1vdmVyZmxvdycpO1xuICAgICAgICAgICRuYXZCYXJPdmVyZmxvdy5vbignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJG1lbnVJdGVtcyA9ICQoJy5tYWluLW1lbnUgLmxpbmstbGV2ZWxvbmUuaGFzX3N1Ym1lbnUudWwtb3BlbicpO1xuXG4gICAgICAgICAgICAkKCRtZW51SXRlbXMpLmVhY2goKGksIGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbU9mZnNldFRvcCA9ICQoZSkucG9zaXRpb24oKS50b3A7XG4gICAgICAgICAgICAgICQoZSlcbiAgICAgICAgICAgICAgICAuZmluZCgndWwuc3VibWVudScpXG4gICAgICAgICAgICAgICAgLmNzcygndG9wJywgaXRlbU9mZnNldFRvcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgICRuYXZCYXIuZmluZCgnLmxpbmstbGV2ZWxvbmUnKS5ob3ZlcihcbiAgICAgICAgICBmdW5jdGlvbiBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtT2Zmc2V0VG9wID0gJCh0aGlzKS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2xpbmstaG92ZXInKTtcbiAgICAgICAgICAgICQodGhpcylcbiAgICAgICAgICAgICAgLmZpbmQoJ3VsLnN1Ym1lbnUnKVxuICAgICAgICAgICAgICAuY3NzKCd0b3AnLCBpdGVtT2Zmc2V0VG9wKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZ1bmN0aW9uIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2xpbmstaG92ZXInKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgICQoJy5uYXYtYmFyIGxpLmxpbmstbGV2ZWxvbmUuaGFzX3N1Ym1lbnUgPiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gb25OYXZCYXJDbGljayhlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICBOYXZCYXJUcmFuc2l0aW9ucy50b2dnbGUoKTtcblxuICAgICAgICAgIGNvbnN0ICRzdWJtZW51ID0gJCh0aGlzKS5wYXJlbnQoKTtcbiAgICAgICAgICAkKCcubmF2LWJhciBsaS5saW5rLWxldmVsb25lLmhhc19zdWJtZW51IGEgPiBpLm1hdGVyaWFsLWljb25zLnN1Yi10YWJzLWFycm93JykudGV4dCgna2V5Ym9hcmRfYXJyb3dfZG93bicpO1xuICAgICAgICAgIGNvbnN0IG9ubHlDbG9zZSA9ICQoZS5jdXJyZW50VGFyZ2V0KVxuICAgICAgICAgICAgLnBhcmVudCgpXG4gICAgICAgICAgICAuaGFzQ2xhc3MoJ3VsLW9wZW4nKTtcblxuICAgICAgICAgIGlmICgkKCdib2R5JykuaXMoJy5wYWdlLXNpZGViYXItY2xvc2VkOm5vdCgubW9iaWxlKScpKSB7XG4gICAgICAgICAgICAkKCcubmF2LWJhciBsaS5saW5rLWxldmVsb25lLmhhc19zdWJtZW51LnVsLW9wZW4nKS5yZW1vdmVDbGFzcygndWwtb3BlbiBvcGVuIHN1Ym1lbnUtaG92ZXInKTtcbiAgICAgICAgICAgICQoJy5uYXYtYmFyIGxpLmxpbmstbGV2ZWxvbmUuaGFzX3N1Ym1lbnUudWwtb3BlbiB1bC5zdWJtZW51JykucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJCgnLm5hdi1iYXIgbGkubGluay1sZXZlbG9uZS5oYXNfc3VibWVudS51bC1vcGVuIHVsLnN1Ym1lbnUnKS5zbGlkZVVwKHtcbiAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIHNsaWRlVXBJc0NvbXBsZXRlKCkge1xuICAgICAgICAgICAgICAgICQodGhpcylcbiAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKVxuICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCd1bC1vcGVuIG9wZW4nKTtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25seUNsb3NlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJHN1Ym1lbnUuYWRkQ2xhc3MoJ3VsLW9wZW4nKTtcblxuICAgICAgICAgIGlmICgkKCdib2R5JykuaXMoJy5wYWdlLXNpZGViYXItY2xvc2VkOm5vdCgubW9iaWxlKScpKSB7XG4gICAgICAgICAgICAkc3VibWVudS5hZGRDbGFzcygnc3VibWVudS1ob3ZlcicpO1xuICAgICAgICAgICAgJHN1Ym1lbnUuZmluZCgndWwuc3VibWVudScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRzdWJtZW51LmZpbmQoJ3VsLnN1Ym1lbnUnKS5zbGlkZURvd24oe1xuICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gc2xpZGVEb3duSXNDb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICAkc3VibWVudS5hZGRDbGFzcygnb3BlbicpO1xuICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkc3VibWVudS5maW5kKCdpLm1hdGVyaWFsLWljb25zLnN1Yi10YWJzLWFycm93JykudGV4dCgna2V5Ym9hcmRfYXJyb3dfdXAnKTtcblxuICAgICAgICAgIGNvbnN0IGl0ZW1PZmZzZXRUb3AgPSAkc3VibWVudS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgICAkc3VibWVudS5maW5kKCd1bC5zdWJtZW51JykuY3NzKCd0b3AnLCBpdGVtT2Zmc2V0VG9wKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJG5hdkJhci5vbignY2xpY2snLCAnLm1lbnUtY29sbGFwc2UnLCBmdW5jdGlvbiBvbk5hdkJhckNsaWNrKCkge1xuICAgICAgICAgICQoJ2JvZHknKS50b2dnbGVDbGFzcygncGFnZS1zaWRlYmFyLWNsb3NlZCcpO1xuXG4gICAgICAgICAgTmF2QmFyVHJhbnNpdGlvbnMudG9nZ2xlKCk7XG5cbiAgICAgICAgICAkKCcucG9wb3Zlci5zaG93JykucmVtb3ZlKCk7XG4gICAgICAgICAgJCgnLmhlbHAtYm94W2FyaWEtZGVzY3JpYmVkYnldJykucmVtb3ZlQXR0cignYXJpYS1kZXNjcmliZWRieScpO1xuXG4gICAgICAgICAgaWYgKCQoJ2JvZHknKS5oYXNDbGFzcygncGFnZS1zaWRlYmFyLWNsb3NlZCcpKSB7XG4gICAgICAgICAgICAkKCduYXYubmF2LWJhciB1bC5tYWluLW1lbnUgPiBsaScpXG4gICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygndWwtb3BlbiBvcGVuJylcbiAgICAgICAgICAgICAgLmZpbmQoJ2EgPiBpLm1hdGVyaWFsLWljb25zLnN1Yi10YWJzLWFycm93JylcbiAgICAgICAgICAgICAgLnRleHQoJ2tleWJvYXJkX2Fycm93X2Rvd24nKTtcbiAgICAgICAgICAgIGFkZE1vYmlsZUJvZHlDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQoJ25hdi5uYXYtYmFyIHVsLm1haW4tbWVudSA+IGxpLmxpbmstYWN0aXZlJylcbiAgICAgICAgICAgICAgLmFkZENsYXNzKCd1bC1vcGVuIG9wZW4nKVxuICAgICAgICAgICAgICAuZmluZCgnYSA+IGkubWF0ZXJpYWwtaWNvbnMuc3ViLXRhYnMtYXJyb3cnKVxuICAgICAgICAgICAgICAudGV4dCgna2V5Ym9hcmRfYXJyb3dfdXAnKTtcbiAgICAgICAgICAgICQoJ2JvZHknKS5vZmYoJ2NsaWNrLm1vYmlsZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICQucG9zdCh7XG4gICAgICAgICAgICB1cmw6ICQodGhpcykuZGF0YSgndG9nZ2xlLXVybCcpLFxuICAgICAgICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBzaG91bGRDb2xsYXBzZTogTnVtYmVyKCQoJ2JvZHknKS5oYXNDbGFzcygncGFnZS1zaWRlYmFyLWNsb3NlZCcpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFkZE1vYmlsZUJvZHlDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIGNvbnN0IE1BWF9NT0JJTEVfV0lEVEggPSAxMDIzO1xuXG4gICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8PSBNQVhfTU9CSUxFX1dJRFRIKSB7XG4gICAgICAgICAgdGhpcy5tb2JpbGVOYXYoTUFYX01PQklMRV9XSURUSCk7XG4gICAgICAgIH1cblxuICAgICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgICAgICBpZiAoJCgnYm9keScpLmhhc0NsYXNzKCdtb2JpbGUnKSAmJiAkKHdpbmRvdykud2lkdGgoKSA+IE1BWF9NT0JJTEVfV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMudW5idWlsZE1vYmlsZU1lbnUoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCEkKCdib2R5JykuaGFzQ2xhc3MoJ21vYmlsZScpICYmICQod2luZG93KS53aWR0aCgpIDw9IE1BWF9NT0JJTEVfV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMubW9iaWxlTmF2KE1BWF9NT0JJTEVfV0lEVEgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGFkZE1vYmlsZUJvZHlDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoISQoJ2JvZHknKS5pcygnLnBhZ2Utc2lkZWJhci1jbG9zZWQ6bm90KC5tb2JpbGUpJykpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gVG8gY2xvc2Ugc3VibWVudSBvbiBtb2JpbGUgZGV2aWNlc1xuICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrLm1vYmlsZScsICgpID0+IHtcbiAgICAgICAgICBpZiAoJCgndWwubWFpbi1tZW51IGxpLnVsLW9wZW4nKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAkKCcubmF2LWJhciBsaS5saW5rLWxldmVsb25lLmhhc19zdWJtZW51LnVsLW9wZW4nKS5yZW1vdmVDbGFzcygndWwtb3BlbiBvcGVuIHN1Ym1lbnUtaG92ZXInKTtcbiAgICAgICAgICAgICQoJy5uYXYtYmFyIGxpLmxpbmstbGV2ZWxvbmUuaGFzX3N1Ym1lbnUudWwtb3BlbiB1bC5zdWJtZW51JykucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbW9iaWxlTmF2KCkge1xuICAgIGNvbnN0ICRsb2dvdXQgPSAkKCcjaGVhZGVyX2xvZ291dCcpXG4gICAgICAuYWRkQ2xhc3MoJ2xpbmsnKVxuICAgICAgLnJlbW92ZUNsYXNzKCdtLXQtMScpXG4gICAgICAucHJvcCgnb3V0ZXJIVE1MJyk7XG4gICAgY29uc3QgJGVtcGxveWVlID0gJCgnLmVtcGxveWVlX2F2YXRhcicpLnByb3AoJ291dGVySFRNTCcpO1xuICAgIGNvbnN0IHByb2ZpbGVMaW5rID0gJCgnLnByb2ZpbGUtbGluaycpLmF0dHIoJ2hyZWYnKTtcbiAgICBjb25zdCAkbWFpbk1lbnUgPSAkKCcubWFpbi1tZW51Jyk7XG5cbiAgICAkKCcubmF2LWJhciBsaS5saW5rLWxldmVsb25lLmhhc19zdWJtZW51Om5vdCgub3BlbikgYSA+IGkubWF0ZXJpYWwtaWNvbnMuc3ViLXRhYnMtYXJyb3cnKS50ZXh0KFxuICAgICAgJ2tleWJvYXJkX2Fycm93X2Rvd24nLFxuICAgICk7XG4gICAgJCgnYm9keScpLmFkZENsYXNzKCdtb2JpbGUnKTtcbiAgICAkKCcubmF2LWJhcicpXG4gICAgICAuYWRkQ2xhc3MoJ21vYmlsZS1uYXYnKVxuICAgICAgLmF0dHIoJ3N0eWxlJywgJ21hcmdpbi1sZWZ0OiAtMTAwJTsnKTtcbiAgICAkKCcucGFuZWwtY29sbGFwc2UnKS5hZGRDbGFzcygnY29sbGFwc2UnKTtcbiAgICAkKCcubGluay1sZXZlbG9uZSBhJykuZWFjaCgoaW5kZXgsIGVsKSA9PiB7XG4gICAgICBjb25zdCBpZCA9ICQoZWwpXG4gICAgICAgIC5wYXJlbnQoKVxuICAgICAgICAuZmluZCgnLmNvbGxhcHNlJylcbiAgICAgICAgLmF0dHIoJ2lkJyk7XG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICAkKGVsKVxuICAgICAgICAgIC5hdHRyKCdocmVmJywgYCMke2lkfWApXG4gICAgICAgICAgLmF0dHIoJ2RhdGEtdG9nZ2xlJywgJ2NvbGxhcHNlJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAkbWFpbk1lbnUuYXBwZW5kKGA8bGkgY2xhc3M9J2xpbmstbGV2ZWxvbmUnIGRhdGEtc3VibWVudT0nJz4keyRsb2dvdXR9PC9saT5gKTtcbiAgICAkbWFpbk1lbnUucHJlcGVuZChgPGxpIGNsYXNzPSdsaW5rLWxldmVsb25lJz4keyRlbXBsb3llZX08L2xpPmApO1xuXG4gICAgJCgnLmNvbGxhcHNlJykuY29sbGFwc2Uoe1xuICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgICRtYWluTWVudS5maW5kKCcuZW1wbG95ZWVfYXZhdGFyIC5tYXRlcmlhbC1pY29ucywgLmVtcGxveWVlX2F2YXRhciBzcGFuJykud3JhcChgPGEgaHJlZj0nJHtwcm9maWxlTGlua30nPjwvYT5gKTtcbiAgICAkKCcuanMtbW9iaWxlLW1lbnUnKS5vbignY2xpY2snLCBleHBhbmQpO1xuICAgICQoJy5qcy1ub3RpZnNfZHJvcGRvd24nKS5jc3Moe1xuICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBleHBhbmQoKSB7XG4gICAgICBpZiAoJCgnZGl2Lm5vdGlmaWNhdGlvbi1jZW50ZXIuZHJvcGRvd24nKS5oYXNDbGFzcygnb3BlbicpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCQoJy5tb2JpbGUtbmF2JykuaGFzQ2xhc3MoJ2V4cGFuZGVkJykpIHtcbiAgICAgICAgJCgnLm1vYmlsZS1uYXYnKS5hbmltYXRlKFxuICAgICAgICAgIHsnbWFyZ2luLWxlZnQnOiAnLTEwMCUnfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAkKCcubmF2LWJhciwgLm1vYmlsZS1sYXllcicpLnJlbW92ZUNsYXNzKCdleHBhbmRlZCcpO1xuICAgICAgICAgICAgICAkKCcubmF2LWJhciwgLm1vYmlsZS1sYXllcicpLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgJCgnLm1vYmlsZS1sYXllcicpLm9mZigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICQoJy5uYXYtYmFyLCAubW9iaWxlLWxheWVyJykuYWRkQ2xhc3MoJ2V4cGFuZGVkJyk7XG4gICAgICAkKCcubmF2LWJhciwgLm1vYmlsZS1sYXllcicpLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcbiAgICAgICQoJy5tb2JpbGUtbGF5ZXInKS5vbignY2xpY2snLCBleHBhbmQpO1xuICAgICAgJCgnLm1vYmlsZS1uYXYnKS5hbmltYXRlKHsnbWFyZ2luLWxlZnQnOiAwfSk7XG4gICAgfVxuICB9XG5cbiAgdW5idWlsZE1vYmlsZU1lbnUoKSB7XG4gICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdtb2JpbGUnKTtcbiAgICAkKCdib2R5LnBhZ2Utc2lkZWJhci1jbG9zZWQgLm5hdi1iYXIgLmxpbmstbGV2ZWxvbmUub3BlbicpLnJlbW92ZUNsYXNzKCd1bC1vcGVuIG9wZW4nKTtcbiAgICAkKCcubWFpbi1tZW51IGxpOmZpcnN0LCAubWFpbi1tZW51IGxpOmxhc3QnKS5yZW1vdmUoKTtcbiAgICAkKCcuanMtbm90aWZzX2Ryb3Bkb3duJykucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAkKCcubmF2LWJhcicpXG4gICAgICAucmVtb3ZlQ2xhc3MoJ21vYmlsZS1uYXYgZXhwYW5kZWQnKVxuICAgICAgLmFkZENsYXNzKCdkLW5vbmUnKVxuICAgICAgLmNzcygnbWFyZ2luLWxlZnQnLCAwKTtcbiAgICAkKCcuanMtbW9iaWxlLW1lbnUnKS5vZmYoKTtcbiAgICAkKCcucGFuZWwtY29sbGFwc2UnKVxuICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzZScpXG4gICAgICAuYWRkQ2xhc3MoJ3N1Ym1lbnUnKTtcbiAgICAkKCcuc2hvcC1saXN0LXRpdGxlJykucmVtb3ZlKCk7XG4gICAgJCgnLmpzLW5vbi1yZXNwb25zaXZlJykuaGlkZSgpO1xuICAgICQoJy5tb2JpbGUtbGF5ZXInKVxuICAgICAgLmFkZENsYXNzKCdkLW5vbmUnKVxuICAgICAgLnJlbW92ZUNsYXNzKCdleHBhbmRlZCcpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgUm91dGVyIGZyb20gJ0Bjb21wb25lbnRzL3JvdXRlcic7XG5cbmNvbnN0IHJlZnJlc2hOb3RpZmljYXRpb25zID0gZnVuY3Rpb24gKCkge1xuICBsZXQgdGltZXIgPSBudWxsO1xuICBjb25zdCByb3V0ZXIgPSBuZXcgUm91dGVyKCk7XG5cbiAgJC5hamF4KHtcbiAgICB0eXBlOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeydjYWNoZS1jb250cm9sJzogJ25vLWNhY2hlJ30sXG4gICAgdXJsOiByb3V0ZXIuZ2VuZXJhdGUoJ2FkbWluX2NvbW1vbl9ub3RpZmljYXRpb25zJyksXG4gICAgYXN5bmM6IHRydWUsXG4gICAgY2FjaGU6IGZhbHNlLFxuICAgIGRhdGFUeXBlOiAnanNvbicsXG4gICAgc3VjY2Vzcyhqc29uKSB7XG4gICAgICBpZiAoanNvbikge1xuICAgICAgICBjb25zdCBuYk9yZGVycyA9IHBhcnNlSW50KGpzb24ub3JkZXIudG90YWwsIDEwKTtcbiAgICAgICAgY29uc3QgbmJDdXN0b21lcnMgPSBwYXJzZUludChqc29uLmN1c3RvbWVyLnRvdGFsLCAxMCk7XG4gICAgICAgIGNvbnN0IG5iQ3VzdG9tZXJNZXNzYWdlcyA9IHBhcnNlSW50KGpzb24uY3VzdG9tZXJfbWVzc2FnZS50b3RhbCwgMTApO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zVG90YWwgPSBuYk9yZGVycyArIG5iQ3VzdG9tZXJzICsgbmJDdXN0b21lck1lc3NhZ2VzO1xuXG4gICAgICAgIGZpbGxUcGwoanNvbi5vcmRlci5yZXN1bHRzLCAkKCcjb3JkZXJzLW5vdGlmaWNhdGlvbnMnKSwgJCgnI29yZGVyLW5vdGlmaWNhdGlvbi10ZW1wbGF0ZScpLmh0bWwoKSk7XG4gICAgICAgIGZpbGxUcGwoanNvbi5jdXN0b21lci5yZXN1bHRzLCAkKCcjY3VzdG9tZXJzLW5vdGlmaWNhdGlvbnMnKSwgJCgnI2N1c3RvbWVyLW5vdGlmaWNhdGlvbi10ZW1wbGF0ZScpLmh0bWwoKSk7XG4gICAgICAgIGZpbGxUcGwoXG4gICAgICAgICAganNvbi5jdXN0b21lcl9tZXNzYWdlLnJlc3VsdHMsXG4gICAgICAgICAgJCgnI21lc3NhZ2VzLW5vdGlmaWNhdGlvbnMnKSxcbiAgICAgICAgICAkKCcjbWVzc2FnZS1ub3RpZmljYXRpb24tdGVtcGxhdGUnKS5odG1sKCksXG4gICAgICAgICk7XG5cbiAgICAgICAgc2V0Tm90aWZpY2F0aW9uc051bWJlcignX25iX25ld19vcmRlcnNfJywgbmJPcmRlcnMpO1xuICAgICAgICBzZXROb3RpZmljYXRpb25zTnVtYmVyKCdfbmJfbmV3X2N1c3RvbWVyc18nLCBuYkN1c3RvbWVycyk7XG4gICAgICAgIHNldE5vdGlmaWNhdGlvbnNOdW1iZXIoJ19uYl9uZXdfbWVzc2FnZXNfJywgbmJDdXN0b21lck1lc3NhZ2VzKTtcbiAgICAgICAgaWYgKG5vdGlmaWNhdGlvbnNUb3RhbCkge1xuICAgICAgICAgICQoJyNub3RpZmljYXRpb25zLXRvdGFsJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKS5odG1sKG5vdGlmaWNhdGlvbnNUb3RhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAoISQoJyNub3RpZmljYXRpb25zLXRvdGFsJykuaGFzQ2xhc3MoJ2hpZGUnKSkge1xuICAgICAgICAgICQoJyNub3RpZmljYXRpb25zLXRvdGFsJykuYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KHJlZnJlc2hOb3RpZmljYXRpb25zLCAxMjAwMDApO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNsZWFyVGltZW91dCh0aW1lcik7XG59O1xuXG5sZXQgZmlsbFRwbCA9IGZ1bmN0aW9uIChyZXN1bHRzLCBlbHRBcHBlbmRUbywgdHBsKSB7XG4gIGVsdEFwcGVuZFRvLmNoaWxkcmVuKCcubm90aWZpY2F0aW9uLWVsZW1lbnRzJykuZW1wdHkoKTtcbiAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgZWx0QXBwZW5kVG8uYWRkQ2xhc3MoJ2VtcHR5Jyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWx0QXBwZW5kVG8ucmVtb3ZlQ2xhc3MoJ2VtcHR5Jyk7XG4gICQuZWFjaChyZXN1bHRzLCAocHJvcGVydHksIHZhbHVlKSA9PiB7XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gdHBsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIGVsdEFwcGVuZFRvLmNoaWxkcmVuKCcubm90aWZpY2F0aW9uLWVsZW1lbnRzJykuYXBwZW5kKFxuICAgICAgdHBsLnJlcGxhY2UoL19pZF9vcmRlcl8vZywgcGFyc2VJbnQodmFsdWUuaWRfb3JkZXIsIDEwKSlcbiAgICAgICAgLnJlcGxhY2UoL19jdXN0b21lcl9uYW1lXy9nLCB2YWx1ZS5jdXN0b21lcl9uYW1lKVxuICAgICAgICAucmVwbGFjZSgvX2lzb19jb2RlXy9nLCB2YWx1ZS5pc29fY29kZSlcbiAgICAgICAgLnJlcGxhY2UoL19jYXJyaWVyXy9nLCAodmFsdWUuY2FycmllciAhPT0gJycgPyBgIC0gJHt2YWx1ZS5jYXJyaWVyfWAgOiAnJykpXG4gICAgICAgIC5yZXBsYWNlKC9fdG90YWxfcGFpZF8vZywgdmFsdWUudG90YWxfcGFpZClcbiAgICAgICAgLnJlcGxhY2UoL19pZF9jdXN0b21lcl8vZywgcGFyc2VJbnQodmFsdWUuaWRfY3VzdG9tZXIsIDEwKSlcbiAgICAgICAgLnJlcGxhY2UoL19jb21wYW55Xy9nLCAodmFsdWUuY29tcGFueSAhPT0gJycgPyBgICgke3ZhbHVlLmNvbXBhbnl9KSBgIDogJycpKVxuICAgICAgICAucmVwbGFjZSgvX2RhdGVfYWRkXy9nLCB2YWx1ZS5kYXRlX2FkZClcbiAgICAgICAgLnJlcGxhY2UoL19zdGF0dXNfL2csIHZhbHVlLnN0YXR1cylcbiAgICAgICAgLnJlcGxhY2UoL29yZGVyX3VybC9nLCBgJHt3aW5kb3cuYmFzZUFkbWluRGlyfWluZGV4LnBocD90YWI9QWRtaW5PcmRlcnMmdG9rZW49JHt3aW5kb3cudG9rZW5BZG1pbk9yZGVyc30mdmlld29yZGVyJmlkX29yZGVyPSR7dmFsdWUuaWRfb3JkZXJ9YClcbiAgICAgICAgLnJlcGxhY2UoL2N1c3RvbWVyX3VybC9nLCBgJHt3aW5kb3cuYmFzZUFkbWluRGlyfWluZGV4LnBocD90YWI9QWRtaW5DdXN0b21lcnMmdG9rZW49JHt3aW5kb3cudG9rZW5BZG1pbkN1c3RvbWVyc30mdmlld2N1c3RvbWVyJmlkX2N1c3RvbWVyPSR7dmFsdWUuaWRfY3VzdG9tZXJ9YClcbiAgICAgICAgLnJlcGxhY2UoL21lc3NhZ2VfdXJsL2csIGAke3dpbmRvdy5iYXNlQWRtaW5EaXJ9aW5kZXgucGhwP3RhYj1BZG1pbkN1c3RvbWVyVGhyZWFkcyZ0b2tlbj0ke3dpbmRvdy50b2tlbkFkbWluQ3VzdG9tZXJUaHJlYWRzfSZ2aWV3Y3VzdG9tZXJfdGhyZWFkJmlkX2N1c3RvbWVyX3RocmVhZD0ke3ZhbHVlLmlkX2N1c3RvbWVyX3RocmVhZH1gKSxcbiAgICApO1xuICAgIC8qIGVzbGludC1lbnNhYmxlIG1heC1sZW4gKi9cbiAgfSk7XG59O1xuXG5sZXQgc2V0Tm90aWZpY2F0aW9uc051bWJlciA9IGZ1bmN0aW9uIChpZCwgbnVtYmVyKSB7XG4gIGlmIChudW1iZXIgPiAwKSB7XG4gICAgJChgIyR7aWR9YCkudGV4dChgICgke251bWJlcn0pYCk7XG4gIH0gZWxzZSB7XG4gICAgJChgIyR7aWR9YCkudGV4dCgnJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZnJlc2hOb3RpZmljYXRpb25zO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IGluaXRNZXNzYWdlc1Zpc2liaWxpdHlUb2dnbGluZyBmcm9tICcuL21lc3NhZ2VzLXZpc2liaWxpdHknO1xuaW1wb3J0IGluaXRNZXNzYWdlc0VkaXRpb24gZnJvbSAnLi9tZXNzYWdlcy1lZGl0aW9uJztcbmltcG9ydCBpbml0TWVzc2FnZXNQYWdpbmF0aW9uIGZyb20gJy4vbWVzc2FnZXMtcGFnaW5hdGlvbic7XG5pbXBvcnQgaW5pdE1lc3NhZ2VzVHJlZSBmcm9tICcuL21lc3NhZ2VzLXRyZWUnO1xuaW1wb3J0IGluaXRTZWFyY2ggZnJvbSAnLi9tZXNzYWdlcy1zZWFyY2gnO1xuXG4kKCgpID0+IHtcbiAgaW5pdE1lc3NhZ2VzVmlzaWJpbGl0eVRvZ2dsaW5nKGluaXRNZXNzYWdlc1BhZ2luYXRpb24pO1xuICBjb25zdCBzZWFyY2ggPSBpbml0U2VhcmNoKCk7XG4gIGluaXRNZXNzYWdlc0VkaXRpb24oc2VhcmNoKTtcbiAgaW5pdE1lc3NhZ2VzVHJlZSgpO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzZWFyY2gpIHtcbiAgJCgnLnJlc2V0LXRyYW5zbGF0aW9uLXZhbHVlJykuZWFjaCgoYnV0dG9uSW5kZXgsIGJ1dHRvbikgPT4ge1xuICAgIGNvbnN0ICRlZGl0VHJhbnNsYXRpb25Gb3JtID0gJChidXR0b24pLnBhcmVudHMoJ2Zvcm0nKTtcbiAgICBjb25zdCBkZWZhdWx0VHJhbnNsYXRpb25WYWx1ZSA9ICRlZGl0VHJhbnNsYXRpb25Gb3JtLmZpbmQoJypbbmFtZT1kZWZhdWx0XScpLnZhbCgpO1xuXG4gICAgJChidXR0b24pLmNsaWNrKCgpID0+IHtcbiAgICAgICRlZGl0VHJhbnNsYXRpb25Gb3JtLmZpbmQoJypbbmFtZT10cmFuc2xhdGlvbl92YWx1ZV0nKS52YWwoZGVmYXVsdFRyYW5zbGF0aW9uVmFsdWUpO1xuICAgICAgJGVkaXRUcmFuc2xhdGlvbkZvcm0uc3VibWl0KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IHNob3dGbGFzaE1lc3NhZ2VPbkVkaXQgPSAoZm9ybSkgPT4ge1xuICAgICQoZm9ybSkuc3VibWl0KChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgY29uc3QgJGVkaXRUcmFuc2xhdGlvbkZvcm0gPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgICBjb25zdCB1cmwgPSAkZWRpdFRyYW5zbGF0aW9uRm9ybS5hdHRyKCdhY3Rpb24nKTtcblxuICAgICAgJC5wb3N0KHVybCwgJGVkaXRUcmFuc2xhdGlvbkZvcm0uc2VyaWFsaXplKCksIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBsZXQgZmxhc2hNZXNzYWdlO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzZnVsX3VwZGF0ZSkge1xuICAgICAgICAgIGZsYXNoTWVzc2FnZSA9ICRlZGl0VHJhbnNsYXRpb25Gb3JtLmZpbmQoJy5hbGVydC1pbmZvJyk7XG5cbiAgICAgICAgICAvLyBQcm9wYWdhdGUgZWRpdGlvblxuICAgICAgICAgIGNvbnN0IGhhc2ggPSAkZWRpdFRyYW5zbGF0aW9uRm9ybS5kYXRhKCdoYXNoJyk7XG4gICAgICAgICAgY29uc3QgJGVkaXRUcmFuc2xhdGlvbkZvcm1zID0gJChgW2RhdGEtaGFzaD0ke2hhc2h9XWApO1xuICAgICAgICAgIGNvbnN0ICR0cmFuc2xhdGlvblZhbHVlRmllbGRzID0gJCgkZWRpdFRyYW5zbGF0aW9uRm9ybXMuZmluZCgndGV4dGFyZWEnKSk7XG4gICAgICAgICAgJHRyYW5zbGF0aW9uVmFsdWVGaWVsZHMudmFsKCRlZGl0VHJhbnNsYXRpb25Gb3JtLmZpbmQoJ3RleHRhcmVhJykudmFsKCkpO1xuXG4gICAgICAgICAgLy8gUmVmcmVzaCBzZWFyY2ggaW5kZXhcbiAgICAgICAgICAkZWRpdFRyYW5zbGF0aW9uRm9ybXMucmVtb3ZlQXR0cignZGF0YS1qZXRzJyk7XG4gICAgICAgICAgc2VhcmNoLnVwZGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZsYXNoTWVzc2FnZSA9ICRlZGl0VHJhbnNsYXRpb25Gb3JtLmZpbmQoJy5hbGVydC1kYW5nZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZsYXNoTWVzc2FnZS5yZW1vdmVDbGFzcygnaGlkZScpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGZsYXNoTWVzc2FnZS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgICB9LCA0MDAwKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH07XG5cbiAgJCgnI2pldHNDb250ZW50IGZvcm0sIC50cmFuc2xhdGlvbi1kb21haW4gZm9ybScpLmVhY2goKGZvcm1JbmRleCwgZm9ybSkgPT4ge1xuICAgIHNob3dGbGFzaE1lc3NhZ2VPbkVkaXQoZm9ybSk7XG4gIH0pO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IE11bHRpUGFnaW5hdGlvbiBmcm9tICcuL211bHRpLXBhZ2luYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGZpeGVkT2Zmc2V0ID0gJCgnLmhlYWRlci10b29sYmFyJykuaGVpZ2h0KCkgKyAkKCcubWFpbi1oZWFkZXInKS5oZWlnaHQoKTtcbiAgY29uc3QgTUFYX1BBR0lOQVRJT04gPSAyMDtcblxuICBjb25zdCBhZGRQYWdlTGlua3NUb05hdmlnYXRpb25CYXIgPSAobmF2KSA9PiB7XG4gICAgY29uc3QgcGFnZVRlbXBsYXRlID0gJChuYXYpLmZpbmQoJy50cGwnKTtcbiAgICBwYWdlVGVtcGxhdGUucmVtb3ZlQ2xhc3MoJ3RwbCcpO1xuXG4gICAgY29uc3QgcGFnZUxpbmtUZW1wbGF0ZSA9IHBhZ2VUZW1wbGF0ZS5jbG9uZSgpO1xuICAgIHBhZ2VUZW1wbGF0ZS5yZW1vdmUoKTtcbiAgICBwYWdlTGlua1RlbXBsYXRlLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG5cbiAgICBsZXQgcGFnZUluZGV4O1xuICAgIGxldCBwYWdlTGluaztcbiAgICBsZXQgcGFnZUxpbmtBbmNob3I7XG4gICAgY29uc3QgdG90YWxQYWdlcyA9ICQobmF2KS5wYXJlbnRzKCcudHJhbnNsYXRpb24tZG9tYWlucycpLmZpbmQoJy5wYWdlJykubGVuZ3RoO1xuXG4gICAgaWYgKHRvdGFsUGFnZXMgPT09IDEpIHtcbiAgICAgIHJldHVybiAkKCcucGFnaW5hdGlvbicpLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgfVxuXG4gICAgJCgnLnBhZ2luYXRpb24nKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuXG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAxOyBpIDwgdG90YWxQYWdlczsgaSArPSAxKSB7XG4gICAgICBwYWdlSW5kZXggPSBpICsgMTtcbiAgICAgIHBhZ2VMaW5rID0gcGFnZUxpbmtUZW1wbGF0ZS5jbG9uZSgpO1xuICAgICAgcGFnZUxpbmsuYXR0cignZGF0YS1wYWdlLWluZGV4JywgcGFnZUluZGV4KTtcbiAgICAgIHBhZ2VMaW5rQW5jaG9yID0gcGFnZUxpbmsuZmluZCgnYScpO1xuICAgICAgcGFnZUxpbmtBbmNob3IuaHRtbChwYWdlSW5kZXgpO1xuXG4gICAgICAkKG5hdikuZmluZCgnLnBhZ2luYXRpb24nKS5hcHBlbmQocGFnZUxpbmspO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8vIEZpeCBpbnRlcm5hbCBuYXZpZ2F0aW9uIHRvIGFuY2hvcnNcbiAgLy8gYnkgYWRkaW5nIG9mZnNldCBvZiBmaXhlZCBoZWFkZXIgaGVpZ2h0XG4gIC8vIEBTZWUgYWxzbyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzA2NzAwOS8yODIwNzNcbiAgY29uc3Qgc2Nyb2xsVG9QcmV2aW91c1BhZ2luYXRpb25CYXIgPSAocGFnaW5hdGlvbkJhcikgPT4ge1xuICAgIGNvbnN0IHBhZ2luYXRpb25CYXJUb3AgPSBwYWdpbmF0aW9uQmFyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB3aW5kb3cuc2Nyb2xsVG8od2luZG93LnBhZ2VYT2Zmc2V0LCB3aW5kb3cucGFnZVlPZmZzZXQgKyBwYWdpbmF0aW9uQmFyVG9wIC0gZml4ZWRPZmZzZXQpO1xuICB9O1xuXG4gICQoJy50cmFuc2xhdGlvbi1kb21haW4gLmdvLXRvLXBhZ2luYXRpb24tYmFyJykuY2xpY2soKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkJhciA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcudHJhbnNsYXRpb24tZG9tYWluJykuZmluZCgnLnBhZ2luYXRpb24nKVswXTtcbiAgICBzY3JvbGxUb1ByZXZpb3VzUGFnaW5hdGlvbkJhcihwYWdpbmF0aW9uQmFyKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgJCgnLnRyYW5zbGF0aW9uLWRvbWFpbnMgbmF2JykuZWFjaCgobmF2SW5kZXgsIG5hdikgPT4ge1xuICAgIGFkZFBhZ2VMaW5rc1RvTmF2aWdhdGlvbkJhcihuYXYpO1xuXG4gICAgY29uc3QgaGlkZUFjdGl2ZVBhZ2VJbkRvbWFpbiA9IChkb21haW4pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBkb21haW4uZmluZCgnLnBhZ2VbZGF0YS1zdGF0dXM9YWN0aXZlXScpO1xuICAgICAgJChwYWdlKS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgJChwYWdlKS5hdHRyKCdkYXRhLXN0YXR1cycsICdpbmFjdGl2ZScpO1xuICAgIH07XG5cbiAgICBjb25zdCBzaG93UGFnZUluRG9tYWluID0gKHBhZ2VJbmRleCwgZG9tYWluKSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXRQYWdlID0gZG9tYWluLmZpbmQoYC5wYWdlW2RhdGEtcGFnZS1pbmRleD0ke3BhZ2VJbmRleH1dYCk7XG4gICAgICAkKHRhcmdldFBhZ2UpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICAkKHRhcmdldFBhZ2UpLmF0dHIoJ2RhdGEtc3RhdHVzJywgJ2FjdGl2ZScpO1xuICAgIH07XG5cbiAgICAkKG5hdikuZmluZCgnLnBhZ2UtbGluaycpLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgY29uc3QgcGFnaW5hdGlvbkJhciA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcucGFnaW5hdGlvbicpWzBdO1xuICAgICAgc2Nyb2xsVG9QcmV2aW91c1BhZ2luYXRpb25CYXIocGFnaW5hdGlvbkJhcik7XG4gICAgfSk7XG5cbiAgICAkKG5hdikuZmluZCgnLnBhZ2UtaXRlbScpLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgY29uc3QgcGFnZUxpbmsgPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgICBjb25zdCBkb21haW4gPSBwYWdlTGluay5wYXJlbnRzKCcudHJhbnNsYXRpb24tZG9tYWlucycpLmZpbmQoJy50cmFuc2xhdGlvbi1mb3JtcycpO1xuICAgICAgY29uc3QgcGFnZUl0ZW0gPSBwYWdlTGluay5wYXJlbnQoKTtcbiAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IHBhZ2VJdGVtLmRhdGEoJ3BhZ2UtaW5kZXgnKTtcblxuICAgICAgJChgW2RhdGEtcGFnZS1pbmRleD0ke3BhZ2VJbmRleH1dYCkuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgJChgW2RhdGEtcGFnZS1pbmRleD0ke3BhZ2VJbmRleH1dYCkuc2libGluZ3MoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG5cbiAgICAgIHBhZ2VJdGVtLnBhcmVudCgpLmZpbmQoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICBwYWdlSXRlbS5hZGRDbGFzcygnYWN0aXZlJyk7XG5cbiAgICAgIGhpZGVBY3RpdmVQYWdlSW5Eb21haW4oZG9tYWluKTtcbiAgICAgIHNob3dQYWdlSW5Eb21haW4ocGFnZUluZGV4LCBkb21haW4pO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICgkKCcudHJhbnNsYXRpb24tZG9tYWlucycpLmZpbmQoJy5wYWdlJykubGVuZ3RoID4gTUFYX1BBR0lOQVRJT04pIHtcbiAgICAkKCcucGFnZS1pdGVtLmhpZGUnKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICQoJy5wYWdpbmF0aW9uJykuZWFjaCgoaW5kZXgsIHBhZ2luYXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGxhc3RJdGVtID0gJChwYWdpbmF0aW9uKS5maW5kKCcucGFnZS1pdGVtOmxhc3QtY2hpbGQnKTtcbiAgICAgICQocGFnaW5hdGlvbikuZmluZCgnLmpzLW5leHQtYXJyb3cnKS5pbnNlcnRBZnRlcihsYXN0SXRlbSkucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgIE11bHRpUGFnaW5hdGlvbigkKHBhZ2luYXRpb24pKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IEpldHMgZnJvbSAnamV0cy9qZXRzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAkKCgpID0+IHtcbiAgICBjb25zdCBzZWFyY2hTZWxlY3RvciA9ICcuc2VhcmNoLXRyYW5zbGF0aW9uJztcbiAgICAkKGAke3NlYXJjaFNlbGVjdG9yfSBmb3JtYCkuc3VibWl0KChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgJCgnI2pldHNDb250ZW50IGZvcm0nKS5hZGRDbGFzcygnaGlkZScpO1xuXG4gICAgICBjb25zdCBrZXl3b3JkcyA9ICQoJyNqZXRzU2VhcmNoJykudmFsKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGpldHNTZWxlY3RvciA9IGAjamV0c0NvbnRlbnQgPiBbZGF0YS1qZXRzKj1cIiR7a2V5d29yZHN9XCJdYDtcblxuICAgICAgaWYgKCQoamV0c1NlbGVjdG9yKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uRWxlbWVudCA9ICQoYCR7c2VhcmNoU2VsZWN0b3J9PiAuYWxlcnRgKVswXTtcbiAgICAgICAgJChub3RpZmljYXRpb25FbGVtZW50KS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAkKG5vdGlmaWNhdGlvbkVsZW1lbnQpLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgIH0sIDIwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJChqZXRzU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICgkKGpldHNTZWxlY3RvcikubGVuZ3RoKSB7XG4gICAgICAgICQoJy5qcy1yZXN1bHRzJykuc2hvdygpLmFkZENsYXNzKCdjYXJkJykuZmluZCgnaDInKVxuICAgICAgICAgIC5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICAkKGAke3NlYXJjaFNlbGVjdG9yfSBpbnB1dFt0eXBlPXJlc2V0XWApLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgJCgnI2pldHNTZWFyY2gnKS52YWwoJycpO1xuICAgICAgJCgnI2pldHNDb250ZW50IGZvcm0nKS5hZGRDbGFzcygnaGlkZScpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICgkKCcjamV0c1NlYXJjaCcpLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gbmV3IEpldHMoe1xuICAgICAgc2VhcmNoVGFnOiAnI2pldHNTZWFyY2gnLFxuICAgICAgY29udGVudFRhZzogJyNqZXRzQ29udGVudCcsXG4gICAgICBjYWxsU2VhcmNoTWFudWFsbHk6IHRydWUsXG4gICAgICBtYW51YWxDb250ZW50SGFuZGxpbmcodGFnKSB7XG4gICAgICAgIC8vIFNlYXJjaCBmb3IgdHJhbnNsYXRpb24ga2V5cyBhbmQgdHJhbnNsYXRpb24gdmFsdWVzXG4gICAgICAgIHJldHVybiAkKHRhZykuZmluZCgnLnZlcmJhdGltJylbMF0uaW5uZXJUZXh0ICsgJCh0YWcpLmZpbmQoJ3RleHRhcmVhJylbMF0udmFsdWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIHVwZGF0ZVZpc2liaWxpdHlJY29ucyhkb21haW5BY3Rpb25zKSB7XG4gICAgY29uc3QgdmlzaWJpbGl0eU9mZkljb24gPSBkb21haW5BY3Rpb25zLmZpbmQoJy52aXNpYmlsaXR5LW9mZicpO1xuICAgIGNvbnN0IHZpc2liaWxpdHlPbkljb24gPSBkb21haW5BY3Rpb25zLmZpbmQoJy52aXNpYmlsaXR5LW9uJyk7XG4gICAgY29uc3Qgc2hvd01lc3NhZ2VzQnV0dG9uID0gZG9tYWluQWN0aW9ucy5maW5kKCcuYnRuLXNob3ctbWVzc2FnZXMnKTtcbiAgICBjb25zdCBoaWRlTWVzc2FnZXNCdXR0b24gPSBkb21haW5BY3Rpb25zLmZpbmQoJy5idG4taGlkZS1tZXNzYWdlcycpO1xuICAgIGNvbnN0IGV4cGFuZGVkTWVzc2FnZXMgPSB2aXNpYmlsaXR5T2ZmSWNvbi5oYXNDbGFzcygnaGlkZScpO1xuXG4gICAgaWYgKGV4cGFuZGVkTWVzc2FnZXMpIHtcbiAgICAgIHZpc2liaWxpdHlPZmZJY29uLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICB2aXNpYmlsaXR5T25JY29uLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICBzaG93TWVzc2FnZXNCdXR0b24uYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgIGhpZGVNZXNzYWdlc0J1dHRvbi5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpYmlsaXR5T25JY29uLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICB2aXNpYmlsaXR5T2ZmSWNvbi5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgc2hvd01lc3NhZ2VzQnV0dG9uLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICBoaWRlTWVzc2FnZXNCdXR0b24uYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVNaXNzaW5nVHJhbnNsYXRpb25zV2FybmluZyhkb21haW5BY3Rpb25zKSB7XG4gICAgY29uc3Qgc3ViZG9tYWluID0gZG9tYWluQWN0aW9ucy5wYXJlbnQoKS5uZXh0KCcuc3ViZG9tYWlucycpO1xuICAgIGNvbnN0IG1pc3NpbmdUcmFuc2xhdGlvbnMgPSBzdWJkb21haW4uZmluZCgnW2RhdGEtbWlzc2luZy10cmFuc2xhdGlvbnNdJyk7XG4gICAgbGV0IHRvdGFsTWlzc2luZ1RyYW5zbGF0aW9ucyA9IDA7XG5cbiAgICAkKG1pc3NpbmdUcmFuc2xhdGlvbnMpLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XG4gICAgICB0b3RhbE1pc3NpbmdUcmFuc2xhdGlvbnMgKz0gcGFyc2VJbnQoJChlbGVtZW50KS5hdHRyKCdkYXRhLW1pc3NpbmctdHJhbnNsYXRpb25zJyksIDEwKTtcbiAgICB9KTtcblxuICAgIGlmICh0b3RhbE1pc3NpbmdUcmFuc2xhdGlvbnMgPiAwKSB7XG4gICAgICBjb25zdCBtaXNzaW5nVHJhbnNsYXRpb25zV2FybmluZyA9IGRvbWFpbkFjdGlvbnMuZmluZCgnLm1pc3NpbmctdHJhbnNsYXRpb25zJyk7XG4gICAgICBsZXQgd2FybmluZ01lc3NhZ2UgPSBtaXNzaW5nVHJhbnNsYXRpb25zV2FybmluZy50ZXh0KCk7XG4gICAgICB3YXJuaW5nTWVzc2FnZSA9IHdhcm5pbmdNZXNzYWdlLnJlcGxhY2UoJyVkJywgdG90YWxNaXNzaW5nVHJhbnNsYXRpb25zKTtcbiAgICAgIG1pc3NpbmdUcmFuc2xhdGlvbnNXYXJuaW5nLnRleHQod2FybmluZ01lc3NhZ2UpO1xuICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uc1dhcm5pbmcucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG90YWxNaXNzaW5nVHJhbnNsYXRpb25zO1xuICB9XG5cbiAgbGV0IGFsbERvbWFpbnNNaXNzaW5nVHJhbnNsYXRpb25zID0gMDtcblxuICAkKCcuZG9tYWluLWZpcnN0LXBhcnQnKS5lYWNoKChpbmRleCwgZG9tYWluVG9nZ2xlcikgPT4ge1xuICAgIGNvbnN0IGRvbWFpbkFjdGlvbnMgPSAkKGRvbWFpblRvZ2dsZXIpLmZpbmQoJy5kb21haW4tYWN0aW9ucycpO1xuXG4gICAgYWxsRG9tYWluc01pc3NpbmdUcmFuc2xhdGlvbnMgKz0gdXBkYXRlTWlzc2luZ1RyYW5zbGF0aW9uc1dhcm5pbmcoZG9tYWluQWN0aW9ucyk7XG5cbiAgICAkKGRvbWFpblRvZ2dsZXIpLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgbGV0IGRvbWFpblRpdGxlO1xuXG4gICAgICBpZiAoJChldmVudC50YXJnZXQpLmhhc0NsYXNzKCdkb21haW4tZmlyc3QtcGFydCcpKSB7XG4gICAgICAgIGRvbWFpblRpdGxlID0gJChldmVudC50YXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9tYWluVGl0bGUgPSAkKGV2ZW50LnRhcmdldCkucGFyZW50KCk7XG4gICAgICB9XG5cbiAgICAgIGRvbWFpblRpdGxlLmZpbmQoJ2knKS50b2dnbGVDbGFzcygnZXhwYW5kZWQnKTtcbiAgICAgICQoZG9tYWluVGl0bGUubmV4dEFsbCgpLmZpbHRlcignLnN1YmRvbWFpbnMnKVswXSkudG9nZ2xlQ2xhc3MoJ2hpZGUnKTtcblxuICAgICAgdXBkYXRlVmlzaWJpbGl0eUljb25zKGRvbWFpbkFjdGlvbnMpO1xuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9KTtcblxuICAoZnVuY3Rpb24gZGVmaW5lVHJhbnNsYXRpb25zKHRvdGFsVHJhbnNsYXRpb25zLCB0b3RhbFJlbWFpbmluZ1RyYW5zbGF0aW9ucykge1xuICAgIGNvbnN0IHRvdGFsVHJhbnNsYXRpb25zVGVtcGxhdGUgPSAkKCcuc3VtbWFyeSAudG90YWwtdHJhbnNsYXRpb25zJykuYXR0cignZGF0YS10ZW1wbGF0ZScpO1xuICAgIGNvbnN0IHJlbWFpbmluZ1RyYW5zbGF0aW9uc1RlbXBsYXRlID0gJCgnLnN1bW1hcnkgLnRvdGFsLXJlbWFpbmluZy10cmFuc2xhdGlvbnMnKS5hdHRyKCdkYXRhLXRlbXBsYXRlJyk7XG5cbiAgICBpZiAodG90YWxSZW1haW5pbmdUcmFuc2xhdGlvbnMgPiAwKSB7XG4gICAgICBjb25zdCByZW1haW5pbmdUcmFuc2xhdGlvbnNNZXNzYWdlID0gcmVtYWluaW5nVHJhbnNsYXRpb25zVGVtcGxhdGUucmVwbGFjZSgnJWQnLCB0b3RhbFJlbWFpbmluZ1RyYW5zbGF0aW9ucyk7XG4gICAgICAkKCcudG90YWwtcmVtYWluaW5nLXRyYW5zbGF0aW9ucycpLnRleHQocmVtYWluaW5nVHJhbnNsYXRpb25zTWVzc2FnZSk7XG4gICAgICAkKCcuc3VtbWFyeSAuc2VwYXJhdG9yJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICB9XG5cbiAgICBpZiAodG90YWxUcmFuc2xhdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgY29uc3QgdG90YWxUcmFuc2xhdGlvbnNNZXNzYWdlcyA9IHRvdGFsVHJhbnNsYXRpb25zVGVtcGxhdGUucmVwbGFjZSgnJWQnLCB0b3RhbFRyYW5zbGF0aW9ucyk7XG4gICAgICAkKCcuc3VtbWFyeSAudG90YWwtdHJhbnNsYXRpb25zJykudGV4dCh0b3RhbFRyYW5zbGF0aW9uc01lc3NhZ2VzKTtcbiAgICB9XG4gIH0oJCgnI2pldHNDb250ZW50IGZvcm0nKS5sZW5ndGgsIGFsbERvbWFpbnNNaXNzaW5nVHJhbnNsYXRpb25zKSk7XG5cbiAgJCgnLmRvbWFpbi1hY3Rpb25zJykuY2xpY2soKGV2ZW50KSA9PiB7XG4gICAgbGV0IGRvbWFpbkFjdGlvbnMgPSAkKGV2ZW50LnRhcmdldCk7XG5cbiAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5oYXNDbGFzcygnZG9tYWluLWFjdGlvbnMnKSkge1xuICAgICAgZG9tYWluQWN0aW9ucyA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW5GaXJzdFBhcnQgPSBkb21haW5BY3Rpb25zLnByZXYoKTtcbiAgICBkb21haW5GaXJzdFBhcnQuY2xpY2soKTtcbiAgfSk7XG5cbiAgJCgnLmJ0bi1leHBhbmQnKS5jbGljaygoKSA9PiB7XG4gICAgJCgnLmRvbWFpbi1maXJzdC1wYXJ0JykuZWFjaCgoaW5kZXgsIGRvbWFpblRvZ2dsZXIpID0+IHtcbiAgICAgIGNvbnN0IGRvbWFpblRpdGxlID0gJChkb21haW5Ub2dnbGVyKTtcbiAgICAgIGNvbnN0IGlzRG9tYWluRXhwYW5kZWQgPSBkb21haW5UaXRsZS5maW5kKCdpJykuaGFzQ2xhc3MoJ2V4cGFuZGVkJyk7XG5cbiAgICAgIGlmICghaXNEb21haW5FeHBhbmRlZCkge1xuICAgICAgICAkKGRvbWFpblRpdGxlLmZpbmQoJ2knKSkuY2xpY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgJCgnLmJ0bi1yZWR1Y2UnKS5jbGljaygoKSA9PiB7XG4gICAgJCgnLmRvbWFpbi1maXJzdC1wYXJ0JykuZWFjaCgoaW5kZXgsIGRvbWFpblRvZ2dsZXIpID0+IHtcbiAgICAgIGNvbnN0IGRvbWFpblRpdGxlID0gJChkb21haW5Ub2dnbGVyKTtcbiAgICAgIGNvbnN0IGlzRG9tYWluRXhwYW5kZWQgPSBkb21haW5UaXRsZS5maW5kKCdpJykuaGFzQ2xhc3MoJ2V4cGFuZGVkJyk7XG5cbiAgICAgIGlmIChpc0RvbWFpbkV4cGFuZGVkKSB7XG4gICAgICAgICQoZG9tYWluVGl0bGUuZmluZCgnaScpKS5jbGljaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAkKCQoJy5kb21haW4tZmlyc3QtcGFydCcpWzBdKS5jbGljaygpOyAvLyBFeHBhbmQgZmlyc3QgZG9tYWluIGluIHRyZWVcbiAgJCgkKCcuZG9tYWluLXBhcnQgLmRlbGVnYXRlLXRvZ2dsZS1tZXNzYWdlcycpWzBdKS5jbGljaygpOyAvLyBTaG93IG1lc3NhZ2VzIG9mIGZpcnN0IGRvbWFpblxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgY29uc3QgYnV0dG9uU3VmZml4ID0gJ3RyYW5zbGF0aW9uLW1lc3NhZ2VzJztcbiAgY29uc3QgaGlkZUNsYXNzID0gJ2hpZGUnO1xuXG4gIGZ1bmN0aW9uIGhpZGVDdXJyZW50VHJhbnNsYXRpb25Gb3Jtcyhmb3Jtc0NvbnRhaW5lcikge1xuICAgIGNvbnN0IGN1cnJlbnRUcmFuc2xhdGlvbkZvcm1zID0gZm9ybXNDb250YWluZXIuZmluZCgnLnRyYW5zbGF0aW9uLWZvcm1zJyk7XG5cbiAgICBpZiAoY3VycmVudFRyYW5zbGF0aW9uRm9ybXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaGlkZGVuRm9ybXNDb250YWluZXIgPSAkKGBbZGF0YS1wYXJlbnQtb2Y9XCIke2N1cnJlbnRUcmFuc2xhdGlvbkZvcm1zLmF0dHIoJ2lkJyl9XCJdYCk7XG4gICAgICBjdXJyZW50VHJhbnNsYXRpb25Gb3Jtcy5maW5kKCdmb3JtJykuYWRkQ2xhc3MoaGlkZUNsYXNzKTtcbiAgICAgIGhpZGRlbkZvcm1zQ29udGFpbmVyLmFwcGVuZChjdXJyZW50VHJhbnNsYXRpb25Gb3Jtcyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGlkZUN1cnJlbnROYXZpZ2F0aW9uQmFyKG5hdmlnYXRpb25Db250YWluZXIpIHtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbkJhciA9IG5hdmlnYXRpb25Db250YWluZXIuZmluZCgnbmF2Jyk7XG5cbiAgICBpZiAoY3VycmVudE5hdmlnYXRpb25CYXIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmF2SWRlbnRpZmllciA9IGN1cnJlbnROYXZpZ2F0aW9uQmFyLmF0dHIoJ2RhdGEtbmF2aWdhdGlvbi1vZicpO1xuICAgICAgY29uc3QgaGlkZGVuTmF2aWdhdGlvbkJhckNvbnRhaW5lciA9ICQoYFtkYXRhLW5hdmlnYXRpb24tcGFyZW50LW9mPVwiJHtuYXZJZGVudGlmaWVyfVwiXWApO1xuICAgICAgY3VycmVudE5hdmlnYXRpb25CYXIuYWRkQ2xhc3MoaGlkZUNsYXNzKTtcbiAgICAgIGhpZGRlbk5hdmlnYXRpb25CYXJDb250YWluZXIuYXBwZW5kKGN1cnJlbnROYXZpZ2F0aW9uQmFyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoaWdobGlnaHREb21haW5GaXJzdFBhcnQoc2hvd1RyYW5zbGF0aW9uc0Zvcm1CdXR0b24pIHtcbiAgICAkKCcuZG9tYWluLWZpcnN0LXBhcnQnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgY29uc3QgZG9tYWluRmlyc3RQYXJ0ID0gJCgkKHNob3dUcmFuc2xhdGlvbnNGb3JtQnV0dG9uLnBhcmVudHMoJy5zdWJkb21haW5zJylbMF0pXG4gICAgICAucHJldkFsbCgpXG4gICAgICAuZmlsdGVyKCcuZG9tYWluLWZpcnN0LXBhcnQnKSlbMF07XG4gICAgJChkb21haW5GaXJzdFBhcnQpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZURvbWFpblRpdGxlKGVkaXRUcmFuc2xhdGlvbkZvcm1zKSB7XG4gICAgY29uc3QgZG9tYWluUGFydCA9IGVkaXRUcmFuc2xhdGlvbkZvcm1zLnBhcmVudHMoJy50cmFuc2xhdGlvbi1kb21haW4nKS5wcmV2KCk7XG4gICAgY29uc3QgbWlzc2luZ1RyYW5zbGF0aW9uV2FybmluZyA9IGRvbWFpblBhcnQuZmluZCgnLm1pc3NpbmctdHJhbnNsYXRpb25zLXNob3J0LW1lc3NhZ2UnKTtcbiAgICBjb25zdCB3YXJuaW5nUGxhY2Vob2xkZXIgPSAkKCcjZG9tYWluIC5taXNzaW5nLXRyYW5zbGF0aW9ucycpO1xuICAgIGNvbnN0IHRvdGFsUGxhY2Vob2xkZXIgPSAkKCcjZG9tYWluIC50b3RhbC1leHByZXNzaW9ucycpO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICQoJyNkb21haW4gLnNlcGFyYXRvcicpO1xuICAgIHRvdGFsUGxhY2Vob2xkZXIudGV4dChlZGl0VHJhbnNsYXRpb25Gb3Jtcy5kYXRhKCd0b3RhbC10cmFuc2xhdGlvbnMnKSk7XG4gICAgaWYgKG1pc3NpbmdUcmFuc2xhdGlvbldhcm5pbmcubGVuZ3RoID4gMCkge1xuICAgICAgd2FybmluZ1BsYWNlaG9sZGVyLnRleHQobWlzc2luZ1RyYW5zbGF0aW9uV2FybmluZy50ZXh0KCkpO1xuICAgICAgc2VwYXJhdG9yLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm5pbmdQbGFjZWhvbGRlci50ZXh0KCcnKTtcbiAgICAgIHNlcGFyYXRvci5hZGRDbGFzcygnaGlkZScpO1xuICAgIH1cbiAgICBzZXBhcmF0b3IuZmlyc3QoKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuXG4gICAgY29uc3QgZG9tYWluID0gJCgnI2RvbWFpbiAubmFtZScpO1xuICAgIGNvbnN0IHRpdGxlID0gZWRpdFRyYW5zbGF0aW9uRm9ybXMuYXR0cignZGF0YS1kb21haW4nKTtcbiAgICBkb21haW4udGV4dCh0aXRsZSk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVNaXNzaW5nVHJhbnNsYXRpb25zTWVzc2FnZXModGl0bGUpIHtcbiAgICBjb25zdCBtaXNzaW5nVHJhbnNsYXRpb25zTWVzc2FnZSA9IHRpdGxlLmZpbmQoJy5taXNzaW5nLXRyYW5zbGF0aW9ucy1sb25nLW1lc3NhZ2UnKTtcblxuICAgIGlmIChtaXNzaW5nVHJhbnNsYXRpb25zTWVzc2FnZS50ZXh0KCkubGVuZ3RoID4gMCkge1xuICAgICAgJCgnLnRyYW5zbGF0aW9uLWRvbWFpbnMgLm1pc3NpbmctdHJhbnNsYXRpb25zLXBhcmFncmFwaCcpLnRleHQobWlzc2luZ1RyYW5zbGF0aW9uc01lc3NhZ2UudGV4dCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJCgnLnRyYW5zbGF0aW9uLWRvbWFpbnMgLm1pc3NpbmctdHJhbnNsYXRpb25zLXBhcmFncmFwaCcpLnRleHQoJycpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5hdmlnYXRpb25CYXIodHJhbnNsYXRpb25Eb21haW4sIGVkaXRUcmFuc2xhdGlvbkZvcm1zKSB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkNvbnRhaW5lciA9ICQoJy5uYXZiYXItY29udGFpbmVyOmZpcnN0Jyk7XG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHRyYW5zbGF0aW9uRG9tYWluLmZpbmQoJ25hdicpO1xuXG4gICAgbmF2aWdhdGlvbi5wYXJlbnQoKS5hdHRyKCdkYXRhLW5hdmlnYXRpb24tcGFyZW50LW9mJywgZWRpdFRyYW5zbGF0aW9uRm9ybXMuYXR0cignaWQnKSk7XG4gICAgbmF2aWdhdGlvbi5hdHRyKCdkYXRhLW5hdmlnYXRpb24tb2YnLCBlZGl0VHJhbnNsYXRpb25Gb3Jtcy5hdHRyKCdpZCcpKTtcblxuICAgIGhpZGVDdXJyZW50TmF2aWdhdGlvbkJhcihuYXZpZ2F0aW9uQ29udGFpbmVyKTtcblxuICAgIG5hdmlnYXRpb25Db250YWluZXIuYXBwZW5kKG5hdmlnYXRpb24pO1xuICAgICQobmF2aWdhdGlvbkNvbnRhaW5lci5maW5kKCduYXYnKSkucmVtb3ZlQ2xhc3MoaGlkZUNsYXNzKTtcblxuICAgICQoJy5mb3Jtcy1jb250YWluZXIgKyAubmF2YmFyLWNvbnRhaW5lcicpLnJlbW92ZSgpO1xuICAgICQoJy5mb3Jtcy1jb250YWluZXInKS5hZnRlcihuYXZpZ2F0aW9uQ29udGFpbmVyLmNsb25lKCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlRWRpdFRyYW5zbGF0aW9uRm9ybXMoZm9ybXNDb250YWluZXIsIGVkaXRUcmFuc2xhdGlvbkZvcm1zKSB7XG4gICAgaGlkZUN1cnJlbnRUcmFuc2xhdGlvbkZvcm1zKGZvcm1zQ29udGFpbmVyKTtcblxuICAgIGZvcm1zQ29udGFpbmVyLmFwcGVuZChlZGl0VHJhbnNsYXRpb25Gb3Jtcyk7XG4gICAgJChmb3Jtc0NvbnRhaW5lci5maW5kKCcudHJhbnNsYXRpb24tZm9ybXMgZm9ybScpKS5yZW1vdmVDbGFzcyhoaWRlQ2xhc3MpO1xuICB9XG5cbiAgKCgpID0+IHtcbiAgICAkKGAuc2hvdy0ke2J1dHRvblN1ZmZpeH1gKS5lYWNoKChidXR0b25JbmRleCwgYnV0dG9uKSA9PiB7XG4gICAgICAkKGJ1dHRvbikuY2xpY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3dUcmFuc2xhdGlvbnNGb3JtQnV0dG9uID0gJChldmVudC50YXJnZXQpO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uRG9tYWluID0gc2hvd1RyYW5zbGF0aW9uc0Zvcm1CdXR0b24ucGFyZW50KCk7XG4gICAgICAgIGNvbnN0IGVkaXRUcmFuc2xhdGlvbkZvcm1zID0gdHJhbnNsYXRpb25Eb21haW4uZmluZCgnLnRyYW5zbGF0aW9uLWZvcm1zJyk7XG4gICAgICAgIGNvbnN0IGZvcm1zQ29udGFpbmVyID0gJCgnLmZvcm1zLWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGlmIChlZGl0VHJhbnNsYXRpb25Gb3Jtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBoaWdobGlnaHREb21haW5GaXJzdFBhcnQoc2hvd1RyYW5zbGF0aW9uc0Zvcm1CdXR0b24pO1xuXG4gICAgICAgIHVwZGF0ZURvbWFpblRpdGxlKGVkaXRUcmFuc2xhdGlvbkZvcm1zKTtcblxuICAgICAgICB1cGRhdGVOYXZpZ2F0aW9uQmFyKHRyYW5zbGF0aW9uRG9tYWluLCBlZGl0VHJhbnNsYXRpb25Gb3Jtcyk7XG4gICAgICAgIHVwZGF0ZUVkaXRUcmFuc2xhdGlvbkZvcm1zKGZvcm1zQ29udGFpbmVyLCBlZGl0VHJhbnNsYXRpb25Gb3Jtcyk7XG5cbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgICQoJy5kb21haW4tcGFydCAuZGVsZWdhdGUtdG9nZ2xlLW1lc3NhZ2VzJykuZWFjaCgodG9nZ2xlckluZGV4LCB0b2dnbGVyKSA9PiB7XG4gICAgICAkKHRvZ2dsZXIpLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgICBsZXQgdGl0bGUgPSAkKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgaWYgKCEkKGV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ2RvbWFpbi1wYXJ0JykpIHtcbiAgICAgICAgICB0aXRsZSA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU1pc3NpbmdUcmFuc2xhdGlvbnNNZXNzYWdlcyh0aXRsZSk7XG5cbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25Eb21haW4gPSB0aXRsZS5uZXh0KCk7XG4gICAgICAgIGNvbnN0IHNob3dNZXNzYWdlc0J1dHRvbiA9IHRyYW5zbGF0aW9uRG9tYWluLmZpbmQoYC5zaG93LSR7YnV0dG9uU3VmZml4fWApO1xuXG4gICAgICAgIHNob3dNZXNzYWdlc0J1dHRvbi5jbGljaygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwYWdpbmF0aW9uQ29udGFpbmVyKSB7XG4gIGNvbnN0IGxuZyA9IHBhZ2luYXRpb25Db250YWluZXIuZmluZCgnLmpzLXBhZ2UtbGluaycpLmxlbmd0aDtcbiAgY29uc3QgbXVsdGkgPSAnPGxpIGNsYXNzPVwicGFnZS1pdGVtIGpzLW11bHRpXCI+PHNwYW4gY2xhc3M9XCJwYWdlLWxpbmtcIj4uLi48L3NwYW4+PC9saT4nO1xuICBjb25zdCBkaXNwbGF5TnVtYmVyID0gcGFnaW5hdGlvbkNvbnRhaW5lci5kYXRhKCdkaXNwbGF5LW51bWJlcicpOyAvLyBOdW1iZXIgb2YgcGFnZXMgdG8gZGlzcGxheSBhZnRlciB0aGUgZmlyc3RcbiAgbGV0IGN1cnJlbnQgPSBwYWdpbmF0aW9uQ29udGFpbmVyLmZpbmQoJy5wYWdlLWl0ZW0uYWN0aXZlJykuZGF0YSgncGFnZS1pbmRleCcpO1xuXG4gIGNoZWNrQ3VycmVudFBhZ2UoY3VycmVudCk7XG5cbiAgcGFnaW5hdGlvbkNvbnRhaW5lci5maW5kKCcuanMtcGFnZS1saW5rJykub24oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBwYWdpbmF0aW9uQ29udGFpbmVyLmZpbmQoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgJChldmVudC5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgY3VycmVudCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCkucGFyZW50KCkuZGF0YSgncGFnZS1pbmRleCcpO1xuICAgIGNoZWNrQ3VycmVudFBhZ2UoY3VycmVudCk7XG4gIH0pO1xuXG4gIHBhZ2luYXRpb25Db250YWluZXIuZmluZCgnLmpzLWFycm93Jykub24oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgY3VycmVudCA9IHBhZ2luYXRpb25Db250YWluZXIuZmluZCgnLnBhZ2UtaXRlbS5hY3RpdmUnKS5kYXRhKCdwYWdlLWluZGV4Jyk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ2RpcmVjdGlvbicpO1xuXG4gICAgaWYgKFxuICAgICAgZGlyZWN0aW9uID09PSAncHJldidcbiAgICAgICYmICEkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLnBhcmVudCgpLm5leHQoKS5oYXNDbGFzcygnYWN0aXZlJylcbiAgICApIHtcbiAgICAgICQoYC5wYWdlW2RhdGEtcGFnZS1pbmRleD0ke2N1cnJlbnQgLSAxfV1gKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgJChgLnBhZ2VbZGF0YS1wYWdlLWluZGV4PSR7Y3VycmVudH1dYCkuYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICQoYC5wYWdlLWl0ZW1bZGF0YS1wYWdlLWluZGV4PSR7Y3VycmVudCAtIDF9XWApLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICQoYC5wYWdlLWl0ZW1bZGF0YS1wYWdlLWluZGV4PSR7Y3VycmVudH1dYCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgY3VycmVudCAtPSAxO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBkaXJlY3Rpb24gPT09ICduZXh0J1xuICAgICAgJiYgISQoZXZlbnQuY3VycmVudFRhcmdldCkucGFyZW50KCkucHJldigpLmhhc0NsYXNzKCdhY3RpdmUnKVxuICAgICkge1xuICAgICAgJChgLnBhZ2VbZGF0YS1wYWdlLWluZGV4PSR7Y3VycmVudCArIDF9XWApLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICAkKGAucGFnZVtkYXRhLXBhZ2UtaW5kZXg9JHtjdXJyZW50fV1gKS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgJChgLnBhZ2UtaXRlbVtkYXRhLXBhZ2UtaW5kZXg9JHtjdXJyZW50ICsgMX1dYCkuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgJChgLnBhZ2UtaXRlbVtkYXRhLXBhZ2UtaW5kZXg9JHtjdXJyZW50fV1gKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICBjdXJyZW50ICs9IDE7XG4gICAgfVxuICAgIGlmICgkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoJ2RpcmVjdGlvbicpID09PSAncHJldicgJiYgY3VycmVudCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNoZWNrQ3VycmVudFBhZ2UoY3VycmVudCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gY2hlY2tDdXJyZW50UGFnZShjdXJyZW50RWwpIHtcbiAgICAkKCcucGFnaW5hdGlvbicpLmVhY2goKF9pbmRleCwgcGFnaW5hdGlvbikgPT4ge1xuICAgICAgY29uc3QgcGFnQ29udGFpbmVyID0gJChwYWdpbmF0aW9uKTtcbiAgICAgIGNvbnN0IHByZXZEb3RzID0gcGFnQ29udGFpbmVyLmZpbmQoJ1tkYXRhLXBhZ2UtaW5kZXg9MV0nKS5uZXh0KCcuanMtbXVsdGknKTtcbiAgICAgIGNvbnN0IG5leHREb3RzID0gcGFnQ29udGFpbmVyLmZpbmQoYFtkYXRhLXBhZ2UtaW5kZXg9JHtsbmd9XWApLnByZXYoJy5qcy1tdWx0aScpO1xuICAgICAgY29uc3QgbWlkID0gTWF0aC5yb3VuZChkaXNwbGF5TnVtYmVyKTtcblxuICAgICAgcGFnQ29udGFpbmVyLmZpbmQoJy5qcy1wYWdlLWxpbmsnKS5lYWNoKChpbmRleCwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudEVsID49IGRpc3BsYXlOdW1iZXIgKyAxICYmIGluZGV4ID09PSAwICYmIHByZXZEb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICQoaXRlbSkucGFyZW50KCkuYWZ0ZXIobXVsdGkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50RWwgPj0gZGlzcGxheU51bWJlciArIDEpIHtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gY3VycmVudEVsIC0gbWlkICYmIGluZGV4IDw9IGN1cnJlbnRFbCArIG1pZCkge1xuICAgICAgICAgICAgJChpdGVtKS5zaG93KCk7XG4gICAgICAgICAgICBpZiAobG5nIC0gY3VycmVudEVsID49IG1pZCAmJiBpbmRleCA+IGN1cnJlbnRFbCAmJiBpbmRleCAhPT0gbG5nIC0gMSkge1xuICAgICAgICAgICAgICAkKGl0ZW0pLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmV4dERvdHMubGVuZ3RoID09PSAwICYmIGluZGV4ID09PSBsbmcgLSAxICYmIGxuZyAtIGN1cnJlbnRFbCA+IGRpc3BsYXlOdW1iZXIpIHtcbiAgICAgICAgICAgICAgJChpdGVtKS5wYXJlbnQoKS5iZWZvcmUobXVsdGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggIT09IDAgJiYgaW5kZXggIT09IGxuZyAtIDEgJiYgKGxuZyAtIDEgLSBpbmRleCkgPiBkaXNwbGF5TnVtYmVyKSB7XG4gICAgICAgICAgICAkKGl0ZW0pLmhpZGUoKTtcbiAgICAgICAgICAgIGlmIChuZXh0RG90cy5sZW5ndGggJiYgbG5nIC0gZGlzcGxheU51bWJlciA8PSBjdXJyZW50RWwpIHtcbiAgICAgICAgICAgICAgbmV4dERvdHMucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RWwgPT09IGxuZykge1xuICAgICAgICAgICAgbmV4dERvdHMucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPD0gZGlzcGxheU51bWJlciAmJiBpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgICAkKGl0ZW0pLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICQoaXRlbSkuc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RWwgJiYgaW5kZXggPiBkaXNwbGF5TnVtYmVyICYmIGluZGV4ICE9PSBsbmcgLSAxICYmIGN1cnJlbnRFbCA8IGRpc3BsYXlOdW1iZXIpIHtcbiAgICAgICAgICAkKGl0ZW0pLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PT0gbG5nIC0gMSAmJiBjdXJyZW50RWwgPT09IDEgJiYgbmV4dERvdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgJChpdGVtKS5wYXJlbnQoKS5iZWZvcmUobXVsdGkpO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID4gZGlzcGxheU51bWJlciAmJiBpbmRleCAhPT0gbG5nIC0gMSkge1xuICAgICAgICAgICQoaXRlbSkuaGlkZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSBsbmcgLSAxICYmIG5leHREb3RzLmxlbmd0aCA9PT0gMCAmJiBjdXJyZW50RWwgPiAxKSB7XG4gICAgICAgICAgJChpdGVtKS5wYXJlbnQoKS5iZWZvcmUobXVsdGkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICQoaXRlbSkuc2hvdygpO1xuICAgICAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBwcmV2RG90cy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZXZEb3RzLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9pcy1pdGVyYWJsZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXNcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc2V0XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9hc3NpZ25cIik7XG5cbnZhciBfYXNzaWduMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2lnbik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9hc3NpZ24yLmRlZmF1bHQgfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2lzSXRlcmFibGUyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvaXMtaXRlcmFibGVcIik7XG5cbnZhciBfaXNJdGVyYWJsZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0l0ZXJhYmxlMik7XG5cbnZhciBfZ2V0SXRlcmF0b3IyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvZ2V0LWl0ZXJhdG9yXCIpO1xuXG52YXIgX2dldEl0ZXJhdG9yMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldEl0ZXJhdG9yMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gKDAsIF9nZXRJdGVyYXRvcjMuZGVmYXVsdCkoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjJbaV0gPSBhcnJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkoYXJyKTtcbiAgfVxufTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmZyb207XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yJyk7XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUnKTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5hc3NpZ247XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmtleXMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5rZXlzO1xuIiwicmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcuc2V0LnRvLWpzb24nKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnNldC5vZicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcuc2V0LmZyb20nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpLlNldDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlciwgSVRFUkFUT1IpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3JPZihpdGVyLCBmYWxzZSwgcmVzdWx0LnB1c2gsIHJlc3VsdCwgSVRFUkFUT1IpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBBUkcgPSBjb2YoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgJGl0ZXJEZWZpbmUgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFzdEtleSA9IHJlcXVpcmUoJy4vX21ldGEnKS5mYXN0S2V5O1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNJWkUgPSBERVNDUklQVE9SUyA/ICdfcycgOiAnc2l6ZSc7XG5cbnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHtcbiAgLy8gZmFzdCBjYXNlXG4gIHZhciBpbmRleCA9IGZhc3RLZXkoa2V5KTtcbiAgdmFyIGVudHJ5O1xuICBpZiAoaW5kZXggIT09ICdGJykgcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuICAvLyBmcm96ZW4gb2JqZWN0IGNhc2VcbiAgZm9yIChlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICBpZiAoZW50cnkuayA9PSBrZXkpIHJldHVybiBlbnRyeTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikge1xuICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAgICAvLyBjb2xsZWN0aW9uIHR5cGVcbiAgICAgIHRoYXQuX2kgPSBjcmVhdGUobnVsbCk7IC8vIGluZGV4XG4gICAgICB0aGF0Ll9mID0gdW5kZWZpbmVkOyAgICAvLyBmaXJzdCBlbnRyeVxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeVxuICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgLy8gc2l6ZVxuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgIH0pO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyAyMy4xLjMuMSBNYXAucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBmb3IgKHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSksIGRhdGEgPSB0aGF0Ll9pLCBlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoZW50cnkucCkgZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pXTtcbiAgICAgICAgfVxuICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhhdFtTSVpFXSA9IDA7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuICAgICAgLy8gMjMuMi4zLjQgU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG4gICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm47XG4gICAgICAgICAgdmFyIHByZXYgPSBlbnRyeS5wO1xuICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldO1xuICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuICAgICAgICAgIGlmIChwcmV2KSBwcmV2Lm4gPSBuZXh0O1xuICAgICAgICAgIGlmIChuZXh0KSBuZXh0LnAgPSBwcmV2O1xuICAgICAgICAgIGlmICh0aGF0Ll9mID09IGVudHJ5KSB0aGF0Ll9mID0gbmV4dDtcbiAgICAgICAgICBpZiAodGhhdC5fbCA9PSBlbnRyeSkgdGhhdC5fbCA9IHByZXY7XG4gICAgICAgICAgdGhhdFtTSVpFXS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHZhbGlkYXRlKHRoaXMsIE5BTUUpO1xuICAgICAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZikge1xuICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG4gICAgICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiAhIWdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChERVNDUklQVE9SUykgZFAoQy5wcm90b3R5cGUsICdzaXplJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZSh0aGlzLCBOQU1FKVtTSVpFXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgdmFyIHByZXYsIGluZGV4O1xuICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkudiA9IHZhbHVlO1xuICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcbiAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcbiAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG4gICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG4gICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG4gICAgICB9O1xuICAgICAgaWYgKCF0aGF0Ll9mKSB0aGF0Ll9mID0gZW50cnk7XG4gICAgICBpZiAocHJldikgcHJldi5uID0gZW50cnk7XG4gICAgICB0aGF0W1NJWkVdKys7XG4gICAgICAvLyBhZGQgdG8gaW5kZXhcbiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSB0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuICAgIH0gcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIGdldEVudHJ5OiBnZXRFbnRyeSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbiAoQywgTkFNRSwgSVNfTUFQKSB7XG4gICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG4gICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuICAgICRpdGVyRGVmaW5lKEMsIE5BTUUsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICAgICAgdGhpcy5fdCA9IHZhbGlkYXRlKGl0ZXJhdGVkLCBOQU1FKTsgLy8gdGFyZ2V0XG4gICAgICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gICAgICB0aGlzLl9sID0gdW5kZWZpbmVkOyAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciBraW5kID0gdGhhdC5faztcbiAgICAgIHZhciBlbnRyeSA9IHRoYXQuX2w7XG4gICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuICAgICAgaWYgKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpIHtcbiAgICAgICAgLy8gb3IgZmluaXNoIHRoZSBpdGVyYXRpb25cbiAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHN0ZXAoMSk7XG4gICAgICB9XG4gICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG4gICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGVudHJ5LmspO1xuICAgICAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7XG5cbiAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG4gIH1cbn07XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBmcm9tID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkge1xuICByZXR1cm4gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIGlmIChjbGFzc29mKHRoaXMpICE9IE5BTUUpIHRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG4gICAgcmV0dXJuIGZyb20odGhpcyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgZWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgwKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKSB7XG4gIHZhciBCYXNlID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgQyA9IEJhc2U7XG4gIHZhciBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCc7XG4gIHZhciBwcm90byA9IEMgJiYgQy5wcm90b3R5cGU7XG4gIHZhciBPID0ge307XG4gIGlmICghREVTQ1JJUFRPUlMgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBDKCkuZW50cmllcygpLm5leHQoKTtcbiAgfSkpKSB7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0YXJnZXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSwgJ19jJyk7XG4gICAgICB0YXJnZXQuX2MgPSBuZXcgQmFzZSgpO1xuICAgICAgaWYgKGl0ZXJhYmxlICE9IHVuZGVmaW5lZCkgZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGFyZ2V0W0FEREVSXSwgdGFyZ2V0KTtcbiAgICB9KTtcbiAgICBlYWNoKCdhZGQsY2xlYXIsZGVsZXRlLGZvckVhY2gsZ2V0LGhhcyxzZXQsa2V5cyx2YWx1ZXMsZW50cmllcyx0b0pTT04nLnNwbGl0KCcsJyksIGZ1bmN0aW9uIChLRVkpIHtcbiAgICAgIHZhciBJU19BRERFUiA9IEtFWSA9PSAnYWRkJyB8fCBLRVkgPT0gJ3NldCc7XG4gICAgICBpZiAoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpIGhpZGUoQy5wcm90b3R5cGUsIEtFWSwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGlzLCBDLCBLRVkpO1xuICAgICAgICBpZiAoIUlTX0FEREVSICYmIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpKSByZXR1cm4gS0VZID09ICdnZXQnID8gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTtcbiAgICAgICAgcmV0dXJuIElTX0FEREVSID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIElTX1dFQUsgfHwgZFAoQy5wcm90b3R5cGUsICdzaXplJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRUb1N0cmluZ1RhZyhDLCBOQU1FKTtcblxuICBPW05BTUVdID0gQztcbiAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYsIE8pO1xuXG4gIGlmICghSVNfV0VBSykgY29tbW9uLnNldFN0cm9uZyhDLCBOQU1FLCBJU19NQVApO1xuXG4gIHJldHVybiBDO1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTEnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iLCJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjIuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlLCAuLi4pXG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBTID0gU3ltYm9sKCk7XG4gIHZhciBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICB2YXIgaXNFbnVtID0gcElFLmY7XG4gIHdoaWxlIChhTGVuID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSB7XG4gICAgICBrZXkgPSBrZXlzW2orK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IGlzRW51bS5jYWxsKFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiIsIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSBpZiAoa2V5ICE9IElFX1BST1RPKSBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsIi8vIG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2NlcHQgcHJpbWl0aXZlc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgZXhlYykge1xuICB2YXIgZm4gPSAoY29yZS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV07XG4gIHZhciBleHAgPSB7fTtcbiAgZXhwW0tFWV0gPSBleGVjKGZuKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbiAoKSB7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHNbMV07XG4gICAgdmFyIG1hcHBpbmcsIEEsIG4sIGNiO1xuICAgIGFGdW5jdGlvbih0aGlzKTtcbiAgICBtYXBwaW5nID0gbWFwRm4gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAobWFwcGluZykgYUZ1bmN0aW9uKG1hcEZuKTtcbiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7XG4gICAgQSA9IFtdO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBuID0gMDtcbiAgICAgIGNiID0gY3R4KG1hcEZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgZnVuY3Rpb24gKG5leHRJdGVtKSB7XG4gICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS9cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsIENPTExFQ1RJT04sIHsgb2Y6IGZ1bmN0aW9uIG9mKCkge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSBBW2xlbmd0aF0gPSBhcmd1bWVudHNbbGVuZ3RoXTtcbiAgICByZXR1cm4gbmV3IHRoaXMoQSk7XG4gIH0gfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBUWVBFKSB7XG4gIGlmICghaXNPYmplY3QoaXQpIHx8IGl0Ll90ICE9PSBUWVBFKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXQgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGl0ZXJGbiA9IGdldChpdCk7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTyA9IE9iamVjdChpdCk7XG4gIHJldHVybiBPW0lURVJBVE9SXSAhPT0gdW5kZWZpbmVkXG4gICAgfHwgJ0BAaXRlcmF0b3InIGluIE9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0JywgeyBhc3NpZ246IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKSB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG4iLCIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3Ryb25nID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi1zdHJvbmcnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTRVQgPSAnU2V0JztcblxuLy8gMjMuMiBTZXQgT2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBTZXQoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih2YWxpZGF0ZSh0aGlzLCBTRVQpLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5mcm9tXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1mcm9tJykoJ1NldCcpO1xuIiwiLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0Lm9mXG5yZXF1aXJlKCcuL19zZXQtY29sbGVjdGlvbi1vZicpKCdTZXQnKTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnU2V0JywgeyB0b0pTT046IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tdG8tanNvbicpKCdTZXQnKSB9KTtcbiIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUiA9IHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyA/IFJlZmxlY3QgOiBudWxsXG52YXIgUmVmbGVjdEFwcGx5ID0gUiAmJiB0eXBlb2YgUi5hcHBseSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IFIuYXBwbHlcbiAgOiBmdW5jdGlvbiBSZWZsZWN0QXBwbHkodGFyZ2V0LCByZWNlaXZlciwgYXJncykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKTtcbiAgfVxuXG52YXIgUmVmbGVjdE93bktleXNcbmlmIChSICYmIHR5cGVvZiBSLm93bktleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVmbGVjdE93bktleXMgPSBSLm93bktleXNcbn0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpXG4gICAgICAuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSk7XG4gIH07XG59IGVsc2Uge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBQcm9jZXNzRW1pdFdhcm5pbmcod2FybmluZykge1xuICBpZiAoY29uc29sZSAmJiBjb25zb2xlLndhcm4pIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbn1cblxudmFyIE51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOIHx8IGZ1bmN0aW9uIE51bWJlcklzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgRXZlbnRFbWl0dGVyLmluaXQuY2FsbCh0aGlzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50ID0gMDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuZnVuY3Rpb24gY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBsaXN0ZW5lcik7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgTnVtYmVySXNOYU4oYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgYXJnICsgJy4nKTtcbiAgICB9XG4gICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgfVxufSk7XG5cbkV2ZW50RW1pdHRlci5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKHRoaXMuX2V2ZW50cyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLl9ldmVudHMgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufTtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBOdW1iZXJJc05hTihuKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIG4gKyAnLicpO1xuICB9XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gX2dldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gX2dldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZClcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09PSB1bmRlZmluZWQpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIHZhciBlcjtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKVxuICAgICAgZXIgPSBhcmdzWzBdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAvLyBOb3RlOiBUaGUgY29tbWVudHMgb24gdGhlIGB0aHJvd2AgbGluZXMgYXJlIGludGVudGlvbmFsLCB0aGV5IHNob3dcbiAgICAgIC8vIHVwIGluIE5vZGUncyBvdXRwdXQgaWYgdGhpcyByZXN1bHRzIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uXG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9XG4gICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBlcnJvci4nICsgKGVyID8gJyAoJyArIGVyLm1lc3NhZ2UgKyAnKScgOiAnJykpO1xuICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgdGhyb3cgZXJyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgUmVmbGVjdEFwcGx5KGhhbmRsZXIsIHRoaXMsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBSZWZsZWN0QXBwbHkobGlzdGVuZXJzW2ldLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIH0gZWxzZSBpZiAocHJlcGVuZCkge1xuICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgbSA9IF9nZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICBpZiAobSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSAmJiAhZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgLy8gTm8gZXJyb3IgY29kZSBmb3IgdGhpcyBzaW5jZSBpdCBpcyBhIFdhcm5pbmdcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgJyArIFN0cmluZyh0eXBlKSArICcgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQnKTtcbiAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICBQcm9jZXNzRW1pdFdhcm5pbmcodyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJndW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBvbmNlV3JhcHBlci5iaW5kKHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmIChsaXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoZXZsaXN0ZW5lciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgP1xuICAgIHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3RPd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAoOyBpbmRleCArIDEgPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKylcbiAgICBsaXN0W2luZGV4XSA9IGxpc3RbaW5kZXggKyAxXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiIsInZhciBfX19FWFBPU0VfTE9BREVSX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCItIS4vYmxvb2Rob3VuZC5taW4uanNcIik7XG52YXIgX19fRVhQT1NFX0xPQURFUl9HRVRfR0xPQkFMX1RISVNfX18gPSByZXF1aXJlKFwiLi4vLi4vZXhwb3NlLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0R2xvYmFsVGhpcy5qc1wiKTtcbnZhciBfX19FWFBPU0VfTE9BREVSX0dMT0JBTF9USElTX19fID0gX19fRVhQT1NFX0xPQURFUl9HRVRfR0xPQkFMX1RISVNfX187XG5pZiAodHlwZW9mIF9fX0VYUE9TRV9MT0FERVJfR0xPQkFMX1RISVNfX19bXCJCbG9vZGhvdW5kXCJdID09PSAndW5kZWZpbmVkJykgX19fRVhQT1NFX0xPQURFUl9HTE9CQUxfVEhJU19fX1tcIkJsb29kaG91bmRcIl0gPSBfX19FWFBPU0VfTE9BREVSX0lNUE9SVF9fXztcbm1vZHVsZS5leHBvcnRzID0gX19fRVhQT1NFX0xPQURFUl9JTVBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcztcbiAgfVxuXG4gIHZhciBnO1xuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgZyA9IHRoaXMgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiB3aW5kb3c7XG4gICAgfSAvLyBUaGlzIHdvcmtzIGlmIHRoZSBzZWxmIHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblxuXG4gICAgaWYgKHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9IC8vIFRoaXMgd29ya3MgaWYgdGhlIGdsb2JhbCByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cblxuICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gZ2xvYmFsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBnO1xufSgpOyIsIid1c2Ugc3RyaWN0Jzt2YXIgX2V4dGVuZHM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWZvcih2YXIgZCBpbiBiPWFyZ3VtZW50c1tjXSxiKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGQpJiYoYVtkXT1iW2RdKTtyZXR1cm4gYX0sX3R5cGVvZj0nZnVuY3Rpb24nPT10eXBlb2YgU3ltYm9sJiYnc3ltYm9sJz09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGF9OmZ1bmN0aW9uKGEpe3JldHVybiBhJiYnZnVuY3Rpb24nPT10eXBlb2YgU3ltYm9sJiZhLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZhIT09U3ltYm9sLnByb3RvdHlwZT8nc3ltYm9sJzp0eXBlb2YgYX07ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsYil7aWYoIShhIGluc3RhbmNlb2YgYikpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyl9dmFyIFJvdXRpbmc9ZnVuY3Rpb24gYSgpe3ZhciBiPXRoaXM7X2NsYXNzQ2FsbENoZWNrKHRoaXMsYSksdGhpcy5zZXRSb3V0ZXM9ZnVuY3Rpb24oYSl7Yi5yb3V0ZXNSb3V0aW5nPWF8fFtdfSx0aGlzLmdldFJvdXRlcz1mdW5jdGlvbigpe3JldHVybiBiLnJvdXRlc1JvdXRpbmd9LHRoaXMuc2V0QmFzZVVybD1mdW5jdGlvbihhKXtiLmNvbnRleHRSb3V0aW5nLmJhc2VfdXJsPWF9LHRoaXMuZ2V0QmFzZVVybD1mdW5jdGlvbigpe3JldHVybiBiLmNvbnRleHRSb3V0aW5nLmJhc2VfdXJsfSx0aGlzLnNldFByZWZpeD1mdW5jdGlvbihhKXtiLmNvbnRleHRSb3V0aW5nLnByZWZpeD1hfSx0aGlzLnNldFNjaGVtZT1mdW5jdGlvbihhKXtiLmNvbnRleHRSb3V0aW5nLnNjaGVtZT1hfSx0aGlzLmdldFNjaGVtZT1mdW5jdGlvbigpe3JldHVybiBiLmNvbnRleHRSb3V0aW5nLnNjaGVtZX0sdGhpcy5zZXRIb3N0PWZ1bmN0aW9uKGEpe2IuY29udGV4dFJvdXRpbmcuaG9zdD1hfSx0aGlzLmdldEhvc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYi5jb250ZXh0Um91dGluZy5ob3N0fSx0aGlzLmJ1aWxkUXVlcnlQYXJhbXM9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPW5ldyBSZWdFeHAoL1xcW10kLyk7YyBpbnN0YW5jZW9mIEFycmF5P2MuZm9yRWFjaChmdW5jdGlvbihjLGYpe2UudGVzdChhKT9kKGEsYyk6Yi5idWlsZFF1ZXJ5UGFyYW1zKGErJ1snKygnb2JqZWN0Jz09PSgndW5kZWZpbmVkJz09dHlwZW9mIGM/J3VuZGVmaW5lZCc6X3R5cGVvZihjKSk/ZjonJykrJ10nLGMsZCl9KTonb2JqZWN0Jz09PSgndW5kZWZpbmVkJz09dHlwZW9mIGM/J3VuZGVmaW5lZCc6X3R5cGVvZihjKSk/T2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gYi5idWlsZFF1ZXJ5UGFyYW1zKGErJ1snK2UrJ10nLGNbZV0sZCl9KTpkKGEsYyl9LHRoaXMuZ2V0Um91dGU9ZnVuY3Rpb24oYSl7dmFyIGM9Yi5jb250ZXh0Um91dGluZy5wcmVmaXgrYTtpZighIWIucm91dGVzUm91dGluZ1tjXSlyZXR1cm4gYi5yb3V0ZXNSb3V0aW5nW2NdO2Vsc2UgaWYoIWIucm91dGVzUm91dGluZ1thXSl0aHJvdyBuZXcgRXJyb3IoJ1RoZSByb3V0ZSBcIicrYSsnXCIgZG9lcyBub3QgZXhpc3QuJyk7cmV0dXJuIGIucm91dGVzUm91dGluZ1thXX0sdGhpcy5nZW5lcmF0ZT1mdW5jdGlvbihhLGMsZCl7dmFyIGU9Yi5nZXRSb3V0ZShhKSxmPWN8fHt9LGc9X2V4dGVuZHMoe30sZiksaD0nX3NjaGVtZScsaT0nJyxqPSEwLGs9Jyc7aWYoKGUudG9rZW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiKXtpZigndGV4dCc9PT1iWzBdKXJldHVybiBpPWJbMV0raSx2b2lkKGo9ITEpO2lmKCd2YXJpYWJsZSc9PT1iWzBdKXt2YXIgYz0oZS5kZWZhdWx0c3x8e30pW2JbM11dO2lmKCExPT1qfHwhY3x8KGZ8fHt9KVtiWzNdXSYmZltiWzNdXSE9PWUuZGVmYXVsdHNbYlszXV0pe3ZhciBkO2lmKChmfHx7fSlbYlszXV0pZD1mW2JbM11dLGRlbGV0ZSBnW2JbM11dO2Vsc2UgaWYoYylkPWUuZGVmYXVsdHNbYlszXV07ZWxzZXtpZihqKXJldHVybjt0aHJvdyBuZXcgRXJyb3IoJ1RoZSByb3V0ZSBcIicrYSsnXCIgcmVxdWlyZXMgdGhlIHBhcmFtZXRlciBcIicrYlszXSsnXCIuJyl9dmFyIGg9ITA9PT1kfHwhMT09PWR8fCcnPT09ZDtpZighaHx8IWope3ZhciBrPWVuY29kZVVSSUNvbXBvbmVudChkKS5yZXBsYWNlKC8lMkYvZywnLycpOydudWxsJz09PWsmJm51bGw9PT1kJiYoaz0nJyksaT1iWzFdK2sraX1qPSExfWVsc2UgYyYmZGVsZXRlIGdbYlszXV07cmV0dXJufXRocm93IG5ldyBFcnJvcignVGhlIHRva2VuIHR5cGUgXCInK2JbMF0rJ1wiIGlzIG5vdCBzdXBwb3J0ZWQuJyl9KSwnJz09aSYmKGk9Jy8nKSwoZS5ob3N0dG9rZW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4ndGV4dCc9PT1hWzBdP3ZvaWQoaz1hWzFdK2spOnZvaWQoJ3ZhcmlhYmxlJz09PWFbMF0mJigoZnx8e30pW2FbM11dPyhiPWZbYVszXV0sZGVsZXRlIGdbYVszXV0pOmUuZGVmYXVsdHNbYVszXV0mJihiPWUuZGVmYXVsdHNbYVszXV0pLGs9YVsxXStiK2spKX0pLGk9Yi5jb250ZXh0Um91dGluZy5iYXNlX3VybCtpLGUucmVxdWlyZW1lbnRzW2hdJiZiLmdldFNjaGVtZSgpIT09ZS5yZXF1aXJlbWVudHNbaF0/aT1lLnJlcXVpcmVtZW50c1toXSsnOi8vJysoa3x8Yi5nZXRIb3N0KCkpK2k6ayYmYi5nZXRIb3N0KCkhPT1rP2k9Yi5nZXRTY2hlbWUoKSsnOi8vJytrK2k6ITA9PT1kJiYoaT1iLmdldFNjaGVtZSgpKyc6Ly8nK2IuZ2V0SG9zdCgpK2kpLDA8T2JqZWN0LmtleXMoZykubGVuZ3RoKXt2YXIgbD1bXSxtPWZ1bmN0aW9uKGEsYil7dmFyIGM9YjtjPSdmdW5jdGlvbic9PXR5cGVvZiBjP2MoKTpjLGM9bnVsbD09PWM/Jyc6YyxsLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGEpKyc9JytlbmNvZGVVUklDb21wb25lbnQoYykpfTtPYmplY3Qua2V5cyhnKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiLmJ1aWxkUXVlcnlQYXJhbXMoYSxnW2FdLG0pfSksaT1pKyc/JytsLmpvaW4oJyYnKS5yZXBsYWNlKC8lMjAvZywnKycpfXJldHVybiBpfSx0aGlzLnNldERhdGE9ZnVuY3Rpb24oYSl7Yi5zZXRCYXNlVXJsKGEuYmFzZV91cmwpLGIuc2V0Um91dGVzKGEucm91dGVzKSwncHJlZml4J2luIGEmJmIuc2V0UHJlZml4KGEucHJlZml4KSxiLnNldEhvc3QoYS5ob3N0KSxiLnNldFNjaGVtZShhLnNjaGVtZSl9LHRoaXMuY29udGV4dFJvdXRpbmc9e2Jhc2VfdXJsOicnLHByZWZpeDonJyxob3N0OicnLHNjaGVtZTonJ319O21vZHVsZS5leHBvcnRzPW5ldyBSb3V0aW5nOyIsIi8qKiogSU1QT1JUUyBGUk9NIGltcG9ydHMtbG9hZGVyICoqKi9cblxuKGZ1bmN0aW9uKG1vZHVsZSkge1xuLypcbiAqIGp3ZXJ0eSAtIEF3ZXNvbWUgaGFuZGxpbmcgb2Yga2V5Ym9hcmQgZXZlbnRzXG4gKlxuICogandlcnR5IGlzIGEgSlMgbGliIHdoaWNoIGFsbG93cyB5b3UgdG8gYmluZCwgZmlyZSBhbmQgYXNzZXJ0IGtleSBjb21iaW5hdGlvblxuICogc3RyaW5ncyBhZ2FpbnN0IGVsZW1lbnRzIGFuZCBldmVudHMuIEl0IG5vcm1hbGlzZXMgdGhlIHBvb3Igc3RkIGFwaSBpbnRvXG4gKiBzb21ldGhpbmcgZWFzeSB0byB1c2UgYW5kIGNsZWFyLlxuICpcbiAqIFRoaXMgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUXG4gKiBGb3IgdGhlIGZ1bGwgbGljZW5zZSBzZWU6IGh0dHA6Ly9rZWl0aGFtdXMubWl0LWxpY2Vuc2Uub3JnL1xuICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOiBodHRwOi8va2VpdGhhbXVzLmdpdGh1Yi5jb20vandlcnR5XG4gKlxuICogQGF1dGhvciBLZWl0aCBDaXJrZWwgKCdrZWl0aGFtdXMnKSA8andlcnR5QGtlaXRoY2lya2VsLmNvLnVrPlxuICogQGxpY2Vuc2UgaHR0cDovL2tlaXRoYW11cy5taXQtbGljZW5zZS5vcmcvXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCDCqSAyMDExLCBLZWl0aCBDaXJrZWxcbiAqXG4gKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBleHBvcnRzKSB7XG4gICAgXG4gICAgLy8gSGVscGVyIG1ldGhvZHMgJiB2YXJzOlxuICAgIHZhciAkZCA9IGdsb2JhbC5kb2N1bWVudFxuICAgICwgICAkID0gKGdsb2JhbC5qUXVlcnkgfHwgZ2xvYmFsLlplcHRvIHx8IGdsb2JhbC5lbmRlciB8fCAkZClcbiAgICAsICAgJCRcbiAgICAsICAgJGJcbiAgICAsICAga2UgPSAna2V5ZG93bic7XG4gICAgXG4gICAgZnVuY3Rpb24gcmVhbFR5cGVPZih2LCBzKSB7XG4gICAgICAgIHJldHVybiAodiA9PT0gbnVsbCkgPyBzID09PSAnbnVsbCdcbiAgICAgICAgOiAodiA9PT0gdW5kZWZpbmVkKSA/IHMgPT09ICd1bmRlZmluZWQnXG4gICAgICAgIDogKHYuaXMgJiYgdiBpbnN0YW5jZW9mICQpID8gcyA9PT0gJ2VsZW1lbnQnXG4gICAgICAgIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHYpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzKSA+IDc7XG4gICAgfVxuICAgIFxuICAgIGlmICgkID09PSAkZCkge1xuICAgICAgICAkJCA9IGZ1bmN0aW9uIChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yID8gJC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLCBjb250ZXh0IHx8ICQpIDogJDtcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgICRiID0gZnVuY3Rpb24gKGUsIGZuKSB7IGUuYWRkRXZlbnRMaXN0ZW5lcihrZSwgZm4sIGZhbHNlKTsgfTtcbiAgICAgICAgJGYgPSBmdW5jdGlvbiAoZSwgandlcnR5RXYpIHtcbiAgICAgICAgICAgIHZhciByZXQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKVxuICAgICAgICAgICAgLCAgIGk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldC5pbml0RXZlbnQoa2UsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBmb3IgKGkgaW4gandlcnR5RXYpIHJldFtpXSA9IGp3ZXJ0eUV2W2ldO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gKGUgfHwgJCkuZGlzcGF0Y2hFdmVudChyZXQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJCQgPSBmdW5jdGlvbiAoc2VsZWN0b3IsIGNvbnRleHQsIGZuKSB7IHJldHVybiAkKHNlbGVjdG9yIHx8ICRkLCBjb250ZXh0KTsgfTtcbiAgICAgICAgJGIgPSBmdW5jdGlvbiAoZSwgZm4pIHsgJChlKS5iaW5kKGtlICsgJy5qd2VydHknLCBmbik7IH07XG4gICAgICAgICRmID0gZnVuY3Rpb24gKGUsIG9iKSB7ICQoZSB8fCAkZCkudHJpZ2dlcigkLkV2ZW50KGtlLCBvYikpOyB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBQcml2YXRlXG4gICAgdmFyIF9tb2RQcm9wcyA9IHsgMTY6ICdzaGlmdEtleScsIDE3OiAnY3RybEtleScsIDE4OiAnYWx0S2V5JywgOTE6ICdtZXRhS2V5JyB9O1xuICAgIFxuICAgIC8vIEdlbmVyYXRlIGtleSBtYXBwaW5ncyBmb3IgY29tbW9uIGtleXMgdGhhdCBhcmUgbm90IHByaW50YWJsZS5cbiAgICB2YXIgX2tleXMgPSB7XG4gICAgICAgIFxuICAgICAgICAvLyBNT0QgYWthIHRvZ2dsZWFibGUga2V5c1xuICAgICAgICBtb2RzOiB7XG4gICAgICAgICAgICAvLyBTaGlmdCBrZXksIOKHp1xuICAgICAgICAgICAgJ+KHpyc6IDE2LCBzaGlmdDogMTYsXG4gICAgICAgICAgICAvLyBDVFJMIGtleSwgb24gTWFjOiDijINcbiAgICAgICAgICAgICfijIMnOiAxNywgY3RybDogMTcsXG4gICAgICAgICAgICAvLyBBTFQga2V5LCBvbiBNYWM6IOKMpSAoQWx0KVxuICAgICAgICAgICAgJ+KMpSc6IDE4LCBhbHQ6IDE4LCBvcHRpb246IDE4LFxuICAgICAgICAgICAgLy8gTUVUQSwgb24gTWFjOiDijJggKENNRCksIG9uIFdpbmRvd3MgKFdpbiksIG9uIExpbnV4IChTdXBlcilcbiAgICAgICAgICAgICfijJgnOiA5MSwgbWV0YTogOTEsIGNtZDogOTEsICdzdXBlcic6IDkxLCB3aW46IDkxXG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICAvLyBOb3JtYWwga2V5c1xuICAgICAgICBrZXlzOiB7XG4gICAgICAgICAgICAvLyBCYWNrc3BhY2Uga2V5LCBvbiBNYWM6IOKMqyAoQmFja3NwYWNlKVxuICAgICAgICAgICAgJ+KMqyc6IDgsIGJhY2tzcGFjZTogOCxcbiAgICAgICAgICAgIC8vIFRhYiBLZXksIG9uIE1hYzog4oelIChUYWIpLCBvbiBXaW5kb3dzIOKHpeKHpVxuICAgICAgICAgICAgJ+KHpSc6IDksICfih4YnOiA5LCB0YWI6IDksXG4gICAgICAgICAgICAvLyBSZXR1cm4ga2V5LCDihqlcbiAgICAgICAgICAgICfihqknOiAxMywgJ3JldHVybic6IDEzLCBlbnRlcjogMTMsICfijIUnOiAxMyxcbiAgICAgICAgICAgIC8vIFBhdXNlL0JyZWFrIGtleVxuICAgICAgICAgICAgJ3BhdXNlJzogMTksICdwYXVzZS1icmVhayc6IDE5LFxuICAgICAgICAgICAgLy8gQ2FwcyBMb2NrIGtleSwg4oeqXG4gICAgICAgICAgICAn4oeqJzogMjAsIGNhcHM6IDIwLCAnY2Fwcy1sb2NrJzogMjAsXG4gICAgICAgICAgICAvLyBFc2NhcGUga2V5LCBvbiBNYWM6IOKOiywgb24gV2luZG93czogRXNjXG4gICAgICAgICAgICAn4o6LJzogMjcsIGVzY2FwZTogMjcsIGVzYzogMjcsXG4gICAgICAgICAgICAvLyBTcGFjZSBrZXlcbiAgICAgICAgICAgIHNwYWNlOiAzMixcbiAgICAgICAgICAgIC8vIFBhZ2UtVXAga2V5LCBvciBwZ3VwLCBvbiBNYWM6IOKGllxuICAgICAgICAgICAgJ+KGlic6IDMzLCBwZ3VwOiAzMywgJ3BhZ2UtdXAnOiAzMyxcbiAgICAgICAgICAgIC8vIFBhZ2UtRG93biBrZXksIG9yIHBnZG93biwgb24gTWFjOiDihphcbiAgICAgICAgICAgICfihpgnOiAzNCwgcGdkb3duOiAzNCwgJ3BhZ2UtZG93bic6IDM0LFxuICAgICAgICAgICAgLy8gRU5EIGtleSwgb24gTWFjOiDih59cbiAgICAgICAgICAgICfih58nOiAzNSwgZW5kOiAzNSxcbiAgICAgICAgICAgIC8vIEhPTUUga2V5LCBvbiBNYWM6IOKHnlxuICAgICAgICAgICAgJ+KHnic6IDM2LCBob21lOiAzNixcbiAgICAgICAgICAgIC8vIEluc2VydCBrZXksIG9yIGluc1xuICAgICAgICAgICAgaW5zOiA0NSwgaW5zZXJ0OiA0NSxcbiAgICAgICAgICAgIC8vIERlbGV0ZSBrZXksIG9uIE1hYzog4oyrIChEZWxldGUpXG4gICAgICAgICAgICBkZWw6IDQ2LCAnZGVsZXRlJzogNDYsXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIExlZnQgQXJyb3cgS2V5LCBvciDihpBcbiAgICAgICAgICAgICfihpAnOiAzNywgbGVmdDogMzcsICdhcnJvdy1sZWZ0JzogMzcsXG4gICAgICAgICAgICAvLyBVcCBBcnJvdyBLZXksIG9yIOKGkVxuICAgICAgICAgICAgJ+KGkSc6IDM4LCB1cDogMzgsICdhcnJvdy11cCc6IDM4LFxuICAgICAgICAgICAgLy8gUmlnaHQgQXJyb3cgS2V5LCBvciDihpJcbiAgICAgICAgICAgICfihpInOiAzOSwgcmlnaHQ6IDM5LCAnYXJyb3ctcmlnaHQnOiAzOSxcbiAgICAgICAgICAgIC8vIFVwIEFycm93IEtleSwgb3Ig4oaTXG4gICAgICAgICAgICAn4oaTJzogNDAsIGRvd246IDQwLCAnYXJyb3ctZG93bic6IDQwLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBvZGl0aWVzLCBwcmludGluZyBjaGFyYWN0ZXJzIHRoYXQgY29tZSBvdXQgd3Jvbmc6XG4gICAgICAgICAgICAvLyBOdW0tTXVsdGlwbHksIG9yICpcbiAgICAgICAgICAgICcqJzogMTA2LCBzdGFyOiAxMDYsIGFzdGVyaXNrOiAxMDYsIG11bHRpcGx5OiAxMDYsXG4gICAgICAgICAgICAvLyBOdW0tUGx1cyBvciArXG4gICAgICAgICAgICAnKyc6IDEwNywgJ3BsdXMnOiAxMDcsXG4gICAgICAgICAgICAvLyBOdW0tU3VidHJhY3QsIG9yIC1cbiAgICAgICAgICAgICctJzogMTA5LCBzdWJ0cmFjdDogMTA5LFxuICAgICAgICAgICAgLy8gU2VtaWNvbG9uXG4gICAgICAgICAgICAnOyc6IDE4Niwgc2VtaWNvbG9uOjE4NixcbiAgICAgICAgICAgIC8vID0gb3IgZXF1YWxzXG4gICAgICAgICAgICAnPSc6IDE4NywgJ2VxdWFscyc6IDE4NyxcbiAgICAgICAgICAgIC8vIENvbW1hLCBvciAsXG4gICAgICAgICAgICAnLCc6IDE4OCwgY29tbWE6IDE4OCxcbiAgICAgICAgICAgIC8vJy0nOiAxODksIC8vPz8/XG4gICAgICAgICAgICAvLyBQZXJpb2QsIG9yIC4sIG9yIGZ1bGwtc3RvcFxuICAgICAgICAgICAgJy4nOiAxOTAsIHBlcmlvZDogMTkwLCAnZnVsbC1zdG9wJzogMTkwLFxuICAgICAgICAgICAgLy8gU2xhc2gsIG9yIC8sIG9yIGZvcndhcmQtc2xhc2hcbiAgICAgICAgICAgICcvJzogMTkxLCBzbGFzaDogMTkxLCAnZm9yd2FyZC1zbGFzaCc6IDE5MSxcbiAgICAgICAgICAgIC8vIFRpY2ssIG9yIGAsIG9yIGJhY2stcXVvdGUgXG4gICAgICAgICAgICAnYCc6IDE5MiwgdGljazogMTkyLCAnYmFjay1xdW90ZSc6IDE5MixcbiAgICAgICAgICAgIC8vIE9wZW4gYnJhY2tldCwgb3IgW1xuICAgICAgICAgICAgJ1snOiAyMTksICdvcGVuLWJyYWNrZXQnOiAyMTksXG4gICAgICAgICAgICAvLyBCYWNrIHNsYXNoLCBvciBcXFxuICAgICAgICAgICAgJ1xcXFwnOiAyMjAsICdiYWNrLXNsYXNoJzogMjIwLFxuICAgICAgICAgICAgLy8gQ2xvc2UgYmFja2V0LCBvciBdXG4gICAgICAgICAgICAnXSc6IDIyMSwgJ2Nsb3NlLWJyYWNrZXQnOiAyMjEsXG4gICAgICAgICAgICAvLyBBcG9zdHJhcGhlLCBvciBRdW90ZSwgb3IgJ1xuICAgICAgICAgICAgJ1xcJyc6IDIyMiwgcXVvdGU6IDIyMiwgYXBvc3RyYXBoZTogMjIyXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfTtcbiAgICBcbiAgICAvLyBUbyBtaW5pbWlzZSBjb2RlIGJsb2F0LCBhZGQgYWxsIG9mIHRoZSBOVU1QQUQgMC05IGtleXMgaW4gYSBsb29wXG4gICAgaSA9IDk1LCBuID0gMDtcbiAgICB3aGlsZSgrK2kgPCAxMDYpIHtcbiAgICAgICAgX2tleXMua2V5c1snbnVtLScgKyBuXSA9IGk7XG4gICAgICAgICsrbjtcbiAgICB9XG4gICAgXG4gICAgLy8gVG8gbWluaW1pc2UgY29kZSBibG9hdCwgYWRkIGFsbCBvZiB0aGUgdG9wIHJvdyAwLTkga2V5cyBpbiBhIGxvb3BcbiAgICBpID0gNDcsIG4gPSAwO1xuICAgIHdoaWxlKCsraSA8IDU4KSB7XG4gICAgICAgIF9rZXlzLmtleXNbbl0gPSBpO1xuICAgICAgICArK247XG4gICAgfVxuICAgIFxuICAgIC8vIFRvIG1pbmltaXNlIGNvZGUgYmxvYXQsIGFkZCBhbGwgb2YgdGhlIEYxLUYyNSBrZXlzIGluIGEgbG9vcFxuICAgIGkgPSAxMTEsIG4gPSAxO1xuICAgIHdoaWxlKCsraSA8IDEzNikge1xuICAgICAgICBfa2V5cy5rZXlzWydmJyArIG5dID0gaTtcbiAgICAgICAgKytuO1xuICAgIH1cbiAgICBcbiAgICAvLyBUbyBtaW5pbWlzZSBjb2RlIGJsb2F0LCBhZGQgYWxsIG9mIHRoZSBsZXR0ZXJzIG9mIHRoZSBhbHBoYWJldCBpbiBhIGxvb3BcbiAgICB2YXIgaSA9IDY0O1xuICAgIHdoaWxlKCsraSA8IDkxKSB7XG4gICAgICAgIF9rZXlzLmtleXNbU3RyaW5nLmZyb21DaGFyQ29kZShpKS50b0xvd2VyQ2FzZSgpXSA9IGk7XG4gICAgfVxuICAgIFxuICAgIGZ1bmN0aW9uIEp3ZXJ0eUNvZGUoandlcnR5Q29kZSkge1xuICAgICAgICB2YXIgaVxuICAgICAgICAsICAgY1xuICAgICAgICAsICAgblxuICAgICAgICAsICAgelxuICAgICAgICAsICAga2V5Q29tYm9cbiAgICAgICAgLCAgIG9wdGlvbmFsc1xuICAgICAgICAsICAgandlcnR5Q29kZUZyYWdtZW50XG4gICAgICAgICwgICByYW5nZU1hdGNoZXNcbiAgICAgICAgLCAgIHJhbmdlSTtcbiAgICAgICAgXG4gICAgICAgIC8vIEluLWNhc2Ugd2UgZ2V0IGNhbGxlZCB3aXRoIGFuIGluc3RhbmNlIG9mIG91cnNlbHZlcywganVzdCByZXR1cm4gdGhhdC5cbiAgICAgICAgaWYgKGp3ZXJ0eUNvZGUgaW5zdGFuY2VvZiBKd2VydHlDb2RlKSByZXR1cm4gandlcnR5Q29kZTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIGp3ZXJ0eUNvZGUgaXNuJ3QgYW4gYXJyYXksIGNhc3QgaXQgYXMgYSBzdHJpbmcgYW5kIHNwbGl0IGludG8gYXJyYXkuXG4gICAgICAgIGlmICghcmVhbFR5cGVPZihqd2VydHlDb2RlLCAnYXJyYXknKSkge1xuICAgICAgICAgICAgandlcnR5Q29kZSA9IChTdHJpbmcoandlcnR5Q29kZSkpLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKS5cbiAgICAgICAgICAgICAgICBtYXRjaCgvKD86XFwrLHxbXixdKSsvZyk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGtleSBzZXF1ZW5jZSBpbiBqd2VydHlDb2RlXG4gICAgICAgIGZvciAoaSA9IDAsIGMgPSBqd2VydHlDb2RlLmxlbmd0aDsgaSA8IGM7ICsraSkge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBJZiB0aGUga2V5IGNvbWJvIGF0IHRoaXMgcGFydCBvZiB0aGUgc2VxdWVuY2UgaXNuJ3QgYW4gYXJyYXksXG4gICAgICAgICAgICAvLyBjYXN0IGFzIGEgc3RyaW5nIGFuZCBzcGxpdCBpbnRvIGFuIGFycmF5LlxuICAgICAgICAgICAgaWYgKCFyZWFsVHlwZU9mKGp3ZXJ0eUNvZGVbaV0sICdhcnJheScpKSB7XG4gICAgICAgICAgICAgICAgandlcnR5Q29kZVtpXSA9IFN0cmluZyhqd2VydHlDb2RlW2ldKVxuICAgICAgICAgICAgICAgICAgICAubWF0Y2goLyg/OlxcK1xcL3xbXlxcL10pKy9nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gUGFyc2UgdGhlIGtleSBvcHRpb25hbHMgaW4gdGhpcyBzZXF1ZW5jZVxuICAgICAgICAgICAgb3B0aW9uYWxzID0gW10sIG4gPSBqd2VydHlDb2RlW2ldLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChuLS0pIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyBCZWdpbiBjcmVhdGluZyB0aGUgb2JqZWN0IGZvciB0aGlzIGtleSBjb21ib1xuICAgICAgICAgICAgICAgIHZhciBqd2VydHlDb2RlRnJhZ21lbnQgPSBqd2VydHlDb2RlW2ldW25dO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGtleUNvbWJvID0ge1xuICAgICAgICAgICAgICAgICAgICBqd2VydHlDb21ibzogU3RyaW5nKGp3ZXJ0eUNvZGVGcmFnbWVudCksXG4gICAgICAgICAgICAgICAgICAgIHNoaWZ0S2V5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY3RybEtleTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsdEtleTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1ldGFLZXk6IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIElmIGp3ZXJ0eUNvZGVGcmFnbWVudCBpc24ndCBhbiBhcnJheSB0aGVuIGNhc3QgYXMgYSBzdHJpbmdcbiAgICAgICAgICAgICAgICAvLyBhbmQgc3BsaXQgaXQgaW50byBvbmUuXG4gICAgICAgICAgICAgICAgaWYgKCFyZWFsVHlwZU9mKGp3ZXJ0eUNvZGVGcmFnbWVudCwgJ2FycmF5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgandlcnR5Q29kZUZyYWdtZW50ID0gU3RyaW5nKGp3ZXJ0eUNvZGVGcmFnbWVudCkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hdGNoKC8oPzooPzpbXlxcK10pK3xcXCtcXCt8XlxcKyQpL2cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB6ID0gandlcnR5Q29kZUZyYWdtZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoei0tKSB7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWxpc2UgbWF0Y2hpbmcgZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgIGlmIChqd2VydHlDb2RlRnJhZ21lbnRbel0gPT09ICcrKycpIGp3ZXJ0eUNvZGVGcmFnbWVudFt6XSA9ICcrJztcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIC8vIEluamVjdCBlaXRoZXIga2V5Q29kZSBvciBjdHJsL21ldGEvc2hpZnQvYWx0S2V5IGludG8ga2V5Q29tYm9cbiAgICAgICAgICAgICAgICAgICAgaWYgKGp3ZXJ0eUNvZGVGcmFnbWVudFt6XSBpbiBfa2V5cy5tb2RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb21ib1tfbW9kUHJvcHNbX2tleXMubW9kc1tqd2VydHlDb2RlRnJhZ21lbnRbel1dXV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoandlcnR5Q29kZUZyYWdtZW50W3pdIGluIF9rZXlzLmtleXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvbWJvLmtleUNvZGUgPSBfa2V5cy5rZXlzW2p3ZXJ0eUNvZGVGcmFnbWVudFt6XV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYW5nZU1hdGNoZXMgPSBqd2VydHlDb2RlRnJhZ21lbnRbel0ubWF0Y2goL15cXFsoW14tXStcXC0/W14tXSopLShbXi1dK1xcLT9bXi1dKilcXF0kLyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlYWxUeXBlT2Yoa2V5Q29tYm8ua2V5Q29kZSwgJ3VuZGVmaW5lZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHBpY2tlZCB1cCBhIHJhbmdlIG1hdGNoIGVhcmxpZXIuLi5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlTWF0Y2hlcyAmJiAocmFuZ2VNYXRjaGVzWzFdIGluIF9rZXlzLmtleXMpICYmIChyYW5nZU1hdGNoZXNbMl0gaW4gX2tleXMua2V5cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlTWF0Y2hlc1syXSA9IF9rZXlzLmtleXNbcmFuZ2VNYXRjaGVzWzJdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlTWF0Y2hlc1sxXSA9IF9rZXlzLmtleXNbcmFuZ2VNYXRjaGVzWzFdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR28gZnJvbSBtYXRjaCAxIGFuZCBjYXB0dXJlIGFsbCBrZXktY29tb2JzIHVwIHRvIG1hdGNoIDJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocmFuZ2VJID0gcmFuZ2VNYXRjaGVzWzFdOyByYW5nZUkgPCByYW5nZU1hdGNoZXNbMl07ICsrcmFuZ2VJKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRLZXk6IGtleUNvbWJvLmFsdEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRLZXk6IGtleUNvbWJvLnNoaWZ0S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhS2V5OiBrZXlDb21iby5tZXRhS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5OiBrZXlDb21iby5jdHJsS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOiByYW5nZUksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp3ZXJ0eUNvbWJvOiBTdHJpbmcoandlcnR5Q29kZUZyYWdtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29tYm8ua2V5Q29kZSA9IHJhbmdlSTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5qZWN0IGVpdGhlciBrZXlDb2RlIG9yIGN0cmwvbWV0YS9zaGlmdC9hbHRLZXkgaW50byBrZXlDb21ib1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29tYm8ua2V5Q29kZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9uYWxzLnB1c2goa2V5Q29tYm8pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzW2ldID0gb3B0aW9uYWxzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGVuZ3RoID0gaTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIFxuICAgIHZhciBqd2VydHkgPSBleHBvcnRzLmp3ZXJ0eSA9IHsgICAgICAgIFxuICAgICAgICAvKipcbiAgICAgICAgICogandlcnR5LmV2ZW50XG4gICAgICAgICAqXG4gICAgICAgICAqIGBqd2VydHkuZXZlbnRgIHdpbGwgcmV0dXJuIGEgZnVuY3Rpb24sIHdoaWNoIGV4cGVjdHMgdGhlIGZpcnN0XG4gICAgICAgICAqICBhcmd1bWVudCB0byBiZSBhIGtleSBldmVudC4gV2hlbiB0aGUga2V5IGV2ZW50IG1hdGNoZXMgYGp3ZXJ0eUNvZGVgLFxuICAgICAgICAgKiAgYGNhbGxiYWNrRnVuY3Rpb25gIGlzIGZpcmVkLiBgandlcnR5LmV2ZW50YCBpcyB1c2VkIGJ5IGBqd2VydHkua2V5YFxuICAgICAgICAgKiAgdG8gYmluZCB0aGUgZnVuY3Rpb24gaXQgcmV0dXJucy4gYGp3ZXJ0eS5ldmVudGAgaXMgdXNlZnVsIGZvclxuICAgICAgICAgKiAgYXR0YWNoaW5nIHRvIHlvdXIgb3duIGV2ZW50IGxpc3RlbmVycy4gSXQgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3JcbiAgICAgICAgICogIG1ldGhvZCB0byBlbmNhcHN1bGF0ZSBmdW5jdGlvbmFsaXR5IHRoYXQgeW91IG9ubHkgd2FudCB0byBmaXJlIGFmdGVyXG4gICAgICAgICAqICBhIHNwZWNpZmljIGtleSBjb21iby4gSWYgYGNhbGxiYWNrQ29udGV4dGAgaXMgc3BlY2lmaWVkIHRoZW4gaXQgd2lsbFxuICAgICAgICAgKiAgYmUgc3VwcGxpZWQgYXMgYGNhbGxiYWNrRnVuY3Rpb25gJ3MgY29udGV4dCAtIGluIG90aGVyIHdvcmRzLCB0aGVcbiAgICAgICAgICogIGtleXdvcmQgYHRoaXNgIHdpbGwgYmUgc2V0IHRvIGBjYWxsYmFja0NvbnRleHRgIGluc2lkZSB0aGVcbiAgICAgICAgICogIGBjYWxsYmFja0Z1bmN0aW9uYCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogICBAcGFyYW0ge01peGVkfSBqd2VydHlDb2RlIGNhbiBiZSBhbiBhcnJheSwgb3Igc3RyaW5nIG9mIGtleVxuICAgICAgICAgKiAgICAgIGNvbWJpbmF0aW9ucywgd2hpY2ggaW5jbHVkZXMgb3B0aW5hbHMgYW5kIG9yIHNlcXVlbmNlc1xuICAgICAgICAgKiAgIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrRnVjbnRpb24gaXMgYSBmdW5jdGlvbiAob3IgYm9vbGVhbikgd2hpY2hcbiAgICAgICAgICogICAgICBpcyBmaXJlZCB3aGVuIGp3ZXJ0eUNvZGUgaXMgbWF0Y2hlZC4gUmV0dXJuIGZhbHNlIHRvXG4gICAgICAgICAqICAgICAgcHJldmVudERlZmF1bHQoKVxuICAgICAgICAgKiAgIEBwYXJhbSB7T2JqZWN0fSBjYWxsYmFja0NvbnRleHQgKE9wdGlvbmFsKSBUaGUgY29udGV4dCB0byBjYWxsXG4gICAgICAgICAqICAgICAgYGNhbGxiYWNrYCB3aXRoIChpLmUgdGhpcylcbiAgICAgICAgICogICAgICBcbiAgICAgICAgICovXG4gICAgICAgIGV2ZW50OiBmdW5jdGlvbiAoandlcnR5Q29kZSwgY2FsbGJhY2tGdW5jdGlvbiwgY2FsbGJhY2tDb250ZXh0IC8qPyB0aGlzICovKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBhIGZ1bmN0aW9uIG91dCBvZiBjYWxsYmFja0Z1bmN0aW9uLCBpZiBpdCBpcyBhIGJvb2xlYW4uXG4gICAgICAgICAgICBpZiAocmVhbFR5cGVPZihjYWxsYmFja0Z1bmN0aW9uLCAnYm9vbGVhbicpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvb2wgPSBjYWxsYmFja0Z1bmN0aW9uO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBib29sOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGp3ZXJ0eUNvZGUgPSBuZXcgSndlcnR5Q29kZShqd2VydHlDb2RlKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gSW5pdGlhbGlzZSBpbi1zY29wZSB2YXJzLlxuICAgICAgICAgICAgdmFyIGkgPSAwXG4gICAgICAgICAgICAsICAgYyA9IGp3ZXJ0eUNvZGUubGVuZ3RoIC0gMVxuICAgICAgICAgICAgLCAgIHJldHVyblZhbHVlXG4gICAgICAgICAgICAsICAgandlcnR5Q29kZUlzO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB0aGF0IGdldHMgcmV0dXJuZWQuLi5cbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyBpZiBqd2VydHlDb2RlSXMgcmV0dXJucyB0cnV0aHkgKHN0cmluZykuLi5cbiAgICAgICAgICAgICAgICBpZiAoKGp3ZXJ0eUNvZGVJcyA9IGp3ZXJ0eS5pcyhqd2VydHlDb2RlLCBldmVudCwgaSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhbmQgdGhpcyBpc24ndCB0aGUgbGFzdCBrZXkgaW4gdGhlIHNlcXVlbmNlLFxuICAgICAgICAgICAgICAgICAgICAvLyBpbmNyaW1lbnQgdGhlIGtleSBpbiBzZXF1ZW5jZSB0byBjaGVjay5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiBhbmQgdGhpcyBpcyB0aGUgbGFzdCBpbiB0aGUgc2VxdWVuY2UgKG9yIHRoZSBvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8vIG9uZSBpbiBzZXF1ZW5jZSksIHRoZW4gZmlyZSB0aGUgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gY2FsbGJhY2tGdW5jdGlvbi5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCB8fCB0aGlzLCBldmVudCwgandlcnR5Q29kZUlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxiYWNrIHJldHVybmVkIGZhbHNlLCB0aGVuIHdlIHNob3VsZCBydW5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0dXJuVmFsdWUgPT09IGZhbHNlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCBpIGZvciB0aGUgbmV4dCBzZXF1ZW5jZSB0byBmaXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGRpZG4ndCBoaXQgdGhpcyB0aW1lLCB3ZSBzaG91bGQgcmVzZXQgaSB0byAwLFxuICAgICAgICAgICAgICAgIC8vIHRoYXQgaXMsIHVubGVzcyB0aGlzIGNvbWJvIHdhcyB0aGUgZmlyc3QgaW4gdGhlIHNlcXVlbmNlLFxuICAgICAgICAgICAgICAgIC8vIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIHJlc2V0IGkgdG8gMS5cbiAgICAgICAgICAgICAgICBpID0gandlcnR5LmlzKGp3ZXJ0eUNvZGUsIGV2ZW50KSA/IDEgOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGp3ZXJ0eS5pc1xuICAgICAgICAgKlxuICAgICAgICAgKiBgandlcnR5LmlzYCB3aWxsIHJldHVybiBhIGJvb2xlYW4gdmFsdWUsIGJhc2VkIG9uIGlmIGBldmVudGAgbWF0Y2hlc1xuICAgICAgICAgKiAgYGp3ZXJ0eUNvZGVgLiBgandlcnR5LmlzYCBpcyBjYWxsZWQgYnkgYGp3ZXJ0eS5ldmVudGAgdG8gY2hlY2tcbiAgICAgICAgICogIHdoZXRoZXIgb3Igbm90IHRvIGZpcmUgdGhlIGNhbGxiYWNrLiBgZXZlbnRgIGNhbiBiZSBhIERPTSBldmVudCwgb3JcbiAgICAgICAgICogIGEgalF1ZXJ5L1plcHRvL0VuZGVyIG1hbnVmYWN0dXJlZCBldmVudC4gVGhlIHByb3BlcnRpZXMgb2ZcbiAgICAgICAgICogIGBqd2VydHlDb2RlYCAoc3BlZmljaWFsbHkgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBzaGlmdEtleSBhbmRcbiAgICAgICAgICogIGtleUNvZGUpIHNob3VsZCBtYXRjaCBgandlcnR5Q29kZWAncyBwcm9wZXJ0aWVzIC0gaWYgdGhleSBkbywgdGhlblxuICAgICAgICAgKiAgYGp3ZXJ0eS5pc2Agd2lsbCByZXR1cm4gYHRydWVgLiBJZiB0aGV5IGRvbid0LCBgandlcnR5LmlzYCB3aWxsXG4gICAgICAgICAqICByZXR1cm4gYGZhbHNlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogICBAcGFyYW0ge01peGVkfSBqd2VydHlDb2RlIGNhbiBiZSBhbiBhcnJheSwgb3Igc3RyaW5nIG9mIGtleVxuICAgICAgICAgKiAgICAgIGNvbWJpbmF0aW9ucywgd2hpY2ggaW5jbHVkZXMgb3B0aW5hbHMgYW5kIG9yIHNlcXVlbmNlc1xuICAgICAgICAgKiAgIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgaXMgdGhlIEtleWJvYXJkRXZlbnQgdG8gYXNzZXJ0IGFnYWluc3RcbiAgICAgICAgICogICBAcGFyYW0ge0ludGVnZXJ9IGkgKE9wdGlvbmFsKSBjaGVja3MgdGhlIGBpYCBrZXkgaW4gandlcnR5Q29kZVxuICAgICAgICAgKiAgICAgIHNlcXVlbmNlXG4gICAgICAgICAqICAgICAgXG4gICAgICAgICAqL1xuICAgICAgICBpczogZnVuY3Rpb24gKGp3ZXJ0eUNvZGUsIGV2ZW50LCBpIC8qPyAwKi8pIHtcbiAgICAgICAgICAgIGp3ZXJ0eUNvZGUgPSBuZXcgSndlcnR5Q29kZShqd2VydHlDb2RlKTtcbiAgICAgICAgICAgIC8vIERlZmF1bHQgYGlgIHRvIDBcbiAgICAgICAgICAgIGkgPSBpIHx8IDA7XG4gICAgICAgICAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGluZyBpbiBgaWAgb2YgandlcnR5Q29kZTtcbiAgICAgICAgICAgIGp3ZXJ0eUNvZGUgPSBqd2VydHlDb2RlW2ldO1xuICAgICAgICAgICAgLy8galF1ZXJ5IHN0b3JlcyB0aGUgKnJlYWwqIGV2ZW50IGluIGBvcmlnaW5hbEV2ZW50YCwgd2hpY2ggd2UgdXNlXG4gICAgICAgICAgICAvLyBiZWNhdXNlIGl0IGRvZXMgYW5ub3l0aGluZyBzdHVmZiB0byBgbWV0YUtleWBcbiAgICAgICAgICAgIGV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gV2UnbGwgbG9vayBhdCBlYWNoIG9wdGlvbmFsIGluIHRoaXMgandlcnR5Q29kZSBzZXF1ZW5jZS4uLlxuICAgICAgICAgICAgdmFyIGtleVxuICAgICAgICAgICAgLCAgIG4gPSBqd2VydHlDb2RlLmxlbmd0aFxuICAgICAgICAgICAgLCAgIHJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZyYWdtZW50IG9mIGp3ZXJ0eUNvZGVcbiAgICAgICAgICAgIHdoaWxlIChuLS0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGp3ZXJ0eUNvZGVbbl0uandlcnR5Q29tYm87XG4gICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggcHJvcGVydHkgaW4gdGhlIGp3ZXJ0eUNvZGUgb2JqZWN0LCBjb21wYXJlIHRvIGBldmVudGBcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGp3ZXJ0eUNvZGVbbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uZXhjZXB0IGZvciBqd2VydHlDb2RlLmp3ZXJ0eUNvbWJvLi4uXG4gICAgICAgICAgICAgICAgICAgIGlmIChwICE9PSAnandlcnR5Q29tYm8nICYmIGV2ZW50W3BdICE9IGp3ZXJ0eUNvZGVbbl1bcF0pIHJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgandlcnR5Q29kZSBvcHRpb25hbCB3YXNuJ3QgZmFsc2V5LCB0aGVuIHdlIGNhbiByZXR1cm4gZWFybHkuXG4gICAgICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGp3ZXJ0eS5rZXlcbiAgICAgICAgICpcbiAgICAgICAgICogIGBqd2VydHkua2V5YCB3aWxsIGF0dGFjaCBhbiBldmVudCBsaXN0ZW5lciBhbmQgZmlyZVxuICAgICAgICAgKiAgIGBjYWxsYmFja0Z1bmN0aW9uYCB3aGVuIGBqd2VydHlDb2RlYCBtYXRjaGVzLiBUaGUgZXZlbnQgbGlzdGVuZXIgaXNcbiAgICAgICAgICogICBhdHRhY2hlZCB0byBgZG9jdW1lbnRgLCBtZWFuaW5nIGl0IHdpbGwgbGlzdGVuIGZvciBhbnkga2V5IGV2ZW50c1xuICAgICAgICAgKiAgIG9uIHRoZSBwYWdlIChhIGdsb2JhbCBzaG9ydGN1dCBsaXN0ZW5lcikuIElmIGBjYWxsYmFja0NvbnRleHRgIGlzXG4gICAgICAgICAqICAgc3BlY2lmaWVkIHRoZW4gaXQgd2lsbCBiZSBzdXBwbGllZCBhcyBgY2FsbGJhY2tGdW5jdGlvbmAncyBjb250ZXh0XG4gICAgICAgICAqICAgLSBpbiBvdGhlciB3b3JkcywgdGhlIGtleXdvcmQgYHRoaXNgIHdpbGwgYmUgc2V0IHRvXG4gICAgICAgICAqICAgYGNhbGxiYWNrQ29udGV4dGAgaW5zaWRlIHRoZSBgY2FsbGJhY2tGdW5jdGlvbmAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqICAgQHBhcmFtIHtNaXhlZH0gandlcnR5Q29kZSBjYW4gYmUgYW4gYXJyYXksIG9yIHN0cmluZyBvZiBrZXlcbiAgICAgICAgICogICAgICBjb21iaW5hdGlvbnMsIHdoaWNoIGluY2x1ZGVzIG9wdGluYWxzIGFuZCBvciBzZXF1ZW5jZXNcbiAgICAgICAgICogICBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja0Z1bmN0aW9uIGlzIGEgZnVuY3Rpb24gKG9yIGJvb2xlYW4pIHdoaWNoXG4gICAgICAgICAqICAgICAgaXMgZmlyZWQgd2hlbiBqd2VydHlDb2RlIGlzIG1hdGNoZWQuIFJldHVybiBmYWxzZSB0b1xuICAgICAgICAgKiAgICAgIHByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICogICBAcGFyYW0ge09iamVjdH0gY2FsbGJhY2tDb250ZXh0IChPcHRpb25hbCkgVGhlIGNvbnRleHQgdG8gY2FsbFxuICAgICAgICAgKiAgICAgIGBjYWxsYmFja2Agd2l0aCAoaS5lIHRoaXMpXG4gICAgICAgICAqICAgQHBhcmFtIHtNaXhlZH0gc2VsZWN0b3IgY2FuIGJlIGEgc3RyaW5nLCBqUXVlcnkvWmVwdG8vRW5kZXIgb2JqZWN0LFxuICAgICAgICAgKiAgICAgIG9yIGFuIEhUTUwqRWxlbWVudCBvbiB3aGljaCB0byBiaW5kIHRoZSBldmVudExpc3RlbmVyXG4gICAgICAgICAqICAgQHBhcmFtIHtNaXhlZH0gc2VsZWN0b3JDb250ZXh0IGNhbiBiZSBhIHN0cmluZywgalF1ZXJ5L1plcHRvL0VuZGVyXG4gICAgICAgICAqICAgICAgb2JqZWN0LCBvciBhbiBIVE1MKkVsZW1lbnQgb24gd2hpY2ggdG8gc2NvcGUgdGhlIHNlbGVjdG9yXG4gICAgICAgICAqICBcbiAgICAgICAgICovXG4gICAgICAgIGtleTogZnVuY3Rpb24gKGp3ZXJ0eUNvZGUsIGNhbGxiYWNrRnVuY3Rpb24sIGNhbGxiYWNrQ29udGV4dCAvKj8gdGhpcyAqLywgc2VsZWN0b3IgLyo/IGRvY3VtZW50ICovLCBzZWxlY3RvckNvbnRleHQgLyo/IGJvZHkgKi8pIHtcbiAgICAgICAgICAgIC8vIEJlY2F1c2UgY2FsbGJhY2tDb250ZXh0IGlzIG9wdGlvbmFsLCB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlXG4gICAgICAgICAgICAvLyBgY2FsbGJhY2tDb250ZXh0YCBpcyBhIHN0cmluZyBvciBlbGVtZW50LCBhbmQgaWYgaXQgaXMsIHRoZW4gdGhlXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGhvdXQgYSBjb250ZXh0LCBhbmQgYGNhbGxiYWNrQ29udGV4dGAgaXNcbiAgICAgICAgICAgIC8vIGFjdHVhbGx5IGBzZWxlY3RvcmBcbiAgICAgICAgICAgIHZhciByZWFsU2VsZWN0b3IgPSByZWFsVHlwZU9mKGNhbGxiYWNrQ29udGV4dCwgJ2VsZW1lbnQnKSB8fCByZWFsVHlwZU9mKGNhbGxiYWNrQ29udGV4dCwgJ3N0cmluZycpID8gY2FsbGJhY2tDb250ZXh0IDogc2VsZWN0b3JcbiAgICAgICAgICAgIC8vIElmIGBjYWxsYmFja0NvbnRleHRgIGlzIHVuZGVmaW5lZCwgb3IgaWYgd2Ugc2tpcHBlZCBpdCAoYW5kXG4gICAgICAgICAgICAvLyB0aGVyZWZvcmUgaXQgaXMgYHJlYWxTZWxlY3RvcmApLCBzZXQgY29udGV4dCB0byBgZ2xvYmFsYC5cbiAgICAgICAgICAgICwgICByZWFsY2FsbGJhY2tDb250ZXh0ID0gcmVhbFNlbGVjdG9yID09PSBjYWxsYmFja0NvbnRleHQgPyBnbG9iYWwgOiBjYWxsYmFja0NvbnRleHRcbiAgICAgICAgICAgIC8vIEZpbmFsbHkgaWYgd2UgZGlkIHNraXAgYGNhbGxiYWNrQ29udGV4dGAsIHRoZW4gc2hpZnRcbiAgICAgICAgICAgIC8vIGBzZWxlY3RvckNvbnRleHRgIHRvIHRoZSBsZWZ0ICh0YWtlIGl0IGZyb20gYHNlbGVjdG9yYClcbiAgICAgICAgICAgICwgICAgcmVhbFNlbGVjdG9yQ29udGV4dCA9IHJlYWxTZWxlY3RvciA9PT0gY2FsbGJhY2tDb250ZXh0ID8gc2VsZWN0b3IgOiBzZWxlY3RvckNvbnRleHQ7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIElmIGByZWFsU2VsZWN0b3JgIGlzIGFscmVhZHkgYSBqUXVlcnkvWmVwdG8vRW5kZXIvRE9NIGVsZW1lbnQsXG4gICAgICAgICAgICAvLyB0aGVuIGp1c3QgdXNlIGl0IG5lYXQsIG90aGVyd2lzZSBmaW5kIGl0IGluIERPTSB1c2luZyAkJCgpXG4gICAgICAgICAgICAkYihyZWFsVHlwZU9mKHJlYWxTZWxlY3RvciwgJ2VsZW1lbnQnKSA/XG4gICAgICAgICAgICAgICByZWFsU2VsZWN0b3IgOiAkJChyZWFsU2VsZWN0b3IsIHJlYWxTZWxlY3RvckNvbnRleHQpXG4gICAgICAgICAgICAsIGp3ZXJ0eS5ldmVudChqd2VydHlDb2RlLCBjYWxsYmFja0Z1bmN0aW9uLCByZWFsY2FsbGJhY2tDb250ZXh0KSk7XG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICAvKipcbiAgICAgICAgICogandlcnR5LmZpcmVcbiAgICAgICAgICpcbiAgICAgICAgICogYGp3ZXJ0eS5maXJlYCB3aWxsIGNvbnN0cnVjdCBhIGtleXVwIGV2ZW50IHRvIGZpcmUsIGJhc2VkIG9uXG4gICAgICAgICAqICBgandlcnR5Q29kZWAuIFRoZSBldmVudCB3aWxsIGJlIGZpcmVkIGFnYWluc3QgYHNlbGVjdG9yYC5cbiAgICAgICAgICogIGBzZWxlY3RvckNvbnRleHRgIGlzIHVzZWQgdG8gc2VhcmNoIGZvciBgc2VsZWN0b3JgIHdpdGhpblxuICAgICAgICAgKiAgYHNlbGVjdG9yQ29udGV4dGAsIHNpbWlsYXIgdG8galF1ZXJ5J3NcbiAgICAgICAgICogIGAkKCdzZWxlY3RvcicsICdjb250ZXh0JylgLlxuICAgICAgICAgKlxuICAgICAgICAgKiAgIEBwYXJhbSB7TWl4ZWR9IGp3ZXJ0eUNvZGUgY2FuIGJlIGFuIGFycmF5LCBvciBzdHJpbmcgb2Yga2V5XG4gICAgICAgICAqICAgICAgY29tYmluYXRpb25zLCB3aGljaCBpbmNsdWRlcyBvcHRpbmFscyBhbmQgb3Igc2VxdWVuY2VzXG4gICAgICAgICAqICAgQHBhcmFtIHtNaXhlZH0gc2VsZWN0b3IgY2FuIGJlIGEgc3RyaW5nLCBqUXVlcnkvWmVwdG8vRW5kZXIgb2JqZWN0LFxuICAgICAgICAgKiAgICAgIG9yIGFuIEhUTUwqRWxlbWVudCBvbiB3aGljaCB0byBiaW5kIHRoZSBldmVudExpc3RlbmVyXG4gICAgICAgICAqICAgQHBhcmFtIHtNaXhlZH0gc2VsZWN0b3JDb250ZXh0IGNhbiBiZSBhIHN0cmluZywgalF1ZXJ5L1plcHRvL0VuZGVyXG4gICAgICAgICAqICAgICAgb2JqZWN0LCBvciBhbiBIVE1MKkVsZW1lbnQgb24gd2hpY2ggdG8gc2NvcGUgdGhlIHNlbGVjdG9yXG4gICAgICAgICAqICBcbiAgICAgICAgICovXG4gICAgICAgIGZpcmU6IGZ1bmN0aW9uIChqd2VydHlDb2RlLCBzZWxlY3RvciAvKj8gZG9jdW1lbnQgKi8sIHNlbGVjdG9yQ29udGV4dCAvKj8gYm9keSAqLywgaSkge1xuICAgICAgICAgICAgandlcnR5Q29kZSA9IG5ldyBKd2VydHlDb2RlKGp3ZXJ0eUNvZGUpO1xuICAgICAgICAgICAgdmFyIHJlYWxJID0gcmVhbFR5cGVPZihzZWxlY3RvckNvbnRleHQsICdudW1iZXInKSA/IHNlbGVjdG9yQ29udGV4dCA6IGk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIElmIGByZWFsU2VsZWN0b3JgIGlzIGFscmVhZHkgYSBqUXVlcnkvWmVwdG8vRW5kZXIvRE9NIGVsZW1lbnQsXG4gICAgICAgICAgICAvLyB0aGVuIGp1c3QgdXNlIGl0IG5lYXQsIG90aGVyd2lzZSBmaW5kIGl0IGluIERPTSB1c2luZyAkJCgpXG4gICAgICAgICAgICAkZihyZWFsVHlwZU9mKHNlbGVjdG9yLCAnZWxlbWVudCcpID9cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA6ICQkKHNlbGVjdG9yLCBzZWxlY3RvckNvbnRleHQpXG4gICAgICAgICAgICAsIGp3ZXJ0eUNvZGVbcmVhbEkgfHwgMF1bMF0pO1xuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgS0VZUzogX2tleXNcbiAgICB9O1xuICAgIFxufSh0aGlzLCAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMgPyBtb2R1bGUuZXhwb3J0cyA6IHRoaXMpKSk7XG59LmNhbGwod2luZG93LCBmYWxzZSkpO1xuIiwiLyoqKiBJTVBPUlRTIEZST00gaW1wb3J0cy1sb2FkZXIgKioqL1xuXG4oZnVuY3Rpb24oZGVmaW5lKSB7XG4vKiEgalF1ZXJ5IFVJIC0gdjEuMTIuMSAtIDIwMTYtMDktMTRcbiogaHR0cDovL2pxdWVyeXVpLmNvbVxuKiBJbmNsdWRlczogd2lkZ2V0LmpzLCBwb3NpdGlvbi5qcywgZGF0YS5qcywgZGlzYWJsZS1zZWxlY3Rpb24uanMsIGVmZmVjdC5qcywgZWZmZWN0cy9lZmZlY3QtYmxpbmQuanMsIGVmZmVjdHMvZWZmZWN0LWJvdW5jZS5qcywgZWZmZWN0cy9lZmZlY3QtY2xpcC5qcywgZWZmZWN0cy9lZmZlY3QtZHJvcC5qcywgZWZmZWN0cy9lZmZlY3QtZXhwbG9kZS5qcywgZWZmZWN0cy9lZmZlY3QtZmFkZS5qcywgZWZmZWN0cy9lZmZlY3QtZm9sZC5qcywgZWZmZWN0cy9lZmZlY3QtaGlnaGxpZ2h0LmpzLCBlZmZlY3RzL2VmZmVjdC1wdWZmLmpzLCBlZmZlY3RzL2VmZmVjdC1wdWxzYXRlLmpzLCBlZmZlY3RzL2VmZmVjdC1zY2FsZS5qcywgZWZmZWN0cy9lZmZlY3Qtc2hha2UuanMsIGVmZmVjdHMvZWZmZWN0LXNpemUuanMsIGVmZmVjdHMvZWZmZWN0LXNsaWRlLmpzLCBlZmZlY3RzL2VmZmVjdC10cmFuc2Zlci5qcywgZm9jdXNhYmxlLmpzLCBmb3JtLXJlc2V0LW1peGluLmpzLCBqcXVlcnktMS03LmpzLCBrZXljb2RlLmpzLCBsYWJlbHMuanMsIHNjcm9sbC1wYXJlbnQuanMsIHRhYmJhYmxlLmpzLCB1bmlxdWUtaWQuanMsIHdpZGdldHMvYWNjb3JkaW9uLmpzLCB3aWRnZXRzL2F1dG9jb21wbGV0ZS5qcywgd2lkZ2V0cy9idXR0b24uanMsIHdpZGdldHMvY2hlY2tib3hyYWRpby5qcywgd2lkZ2V0cy9jb250cm9sZ3JvdXAuanMsIHdpZGdldHMvZGF0ZXBpY2tlci5qcywgd2lkZ2V0cy9kaWFsb2cuanMsIHdpZGdldHMvZHJhZ2dhYmxlLmpzLCB3aWRnZXRzL2Ryb3BwYWJsZS5qcywgd2lkZ2V0cy9tZW51LmpzLCB3aWRnZXRzL21vdXNlLmpzLCB3aWRnZXRzL3Byb2dyZXNzYmFyLmpzLCB3aWRnZXRzL3Jlc2l6YWJsZS5qcywgd2lkZ2V0cy9zZWxlY3RhYmxlLmpzLCB3aWRnZXRzL3NlbGVjdG1lbnUuanMsIHdpZGdldHMvc2xpZGVyLmpzLCB3aWRnZXRzL3NvcnRhYmxlLmpzLCB3aWRnZXRzL3NwaW5uZXIuanMsIHdpZGdldHMvdGFicy5qcywgd2lkZ2V0cy90b29sdGlwLmpzXG4qIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi9cblxuKGZ1bmN0aW9uKCBmYWN0b3J5ICkge1xuXHRpZiAoIHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kICkge1xuXG5cdFx0Ly8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLlxuXHRcdGRlZmluZShbIFwianF1ZXJ5XCIgXSwgZmFjdG9yeSApO1xuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gQnJvd3NlciBnbG9iYWxzXG5cdFx0ZmFjdG9yeSggalF1ZXJ5ICk7XG5cdH1cbn0oZnVuY3Rpb24oICQgKSB7XG5cbiQudWkgPSAkLnVpIHx8IHt9O1xuXG52YXIgdmVyc2lvbiA9ICQudWkudmVyc2lvbiA9IFwiMS4xMi4xXCI7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgV2lkZ2V0IDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBXaWRnZXRcbi8vPj5ncm91cDogQ29yZVxuLy8+PmRlc2NyaXB0aW9uOiBQcm92aWRlcyBhIGZhY3RvcnkgZm9yIGNyZWF0aW5nIHN0YXRlZnVsIHdpZGdldHMgd2l0aCBhIGNvbW1vbiBBUEkuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20valF1ZXJ5LndpZGdldC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS93aWRnZXQvXG5cblxuXG52YXIgd2lkZ2V0VXVpZCA9IDA7XG52YXIgd2lkZ2V0U2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbiQuY2xlYW5EYXRhID0gKCBmdW5jdGlvbiggb3JpZyApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZXZlbnRzLCBlbGVtLCBpO1xuXHRcdGZvciAoIGkgPSAwOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0dHJ5IHtcblxuXHRcdFx0XHQvLyBPbmx5IHRyaWdnZXIgcmVtb3ZlIHdoZW4gbmVjZXNzYXJ5IHRvIHNhdmUgdGltZVxuXHRcdFx0XHRldmVudHMgPSAkLl9kYXRhKCBlbGVtLCBcImV2ZW50c1wiICk7XG5cdFx0XHRcdGlmICggZXZlbnRzICYmIGV2ZW50cy5yZW1vdmUgKSB7XG5cdFx0XHRcdFx0JCggZWxlbSApLnRyaWdnZXJIYW5kbGVyKCBcInJlbW92ZVwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gSHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvODIzNVxuXHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXHRcdH1cblx0XHRvcmlnKCBlbGVtcyApO1xuXHR9O1xufSApKCAkLmNsZWFuRGF0YSApO1xuXG4kLndpZGdldCA9IGZ1bmN0aW9uKCBuYW1lLCBiYXNlLCBwcm90b3R5cGUgKSB7XG5cdHZhciBleGlzdGluZ0NvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgYmFzZVByb3RvdHlwZTtcblxuXHQvLyBQcm94aWVkUHJvdG90eXBlIGFsbG93cyB0aGUgcHJvdmlkZWQgcHJvdG90eXBlIHRvIHJlbWFpbiB1bm1vZGlmaWVkXG5cdC8vIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYXMgYSBtaXhpbiBmb3IgbXVsdGlwbGUgd2lkZ2V0cyAoIzg4NzYpXG5cdHZhciBwcm94aWVkUHJvdG90eXBlID0ge307XG5cblx0dmFyIG5hbWVzcGFjZSA9IG5hbWUuc3BsaXQoIFwiLlwiIClbIDAgXTtcblx0bmFtZSA9IG5hbWUuc3BsaXQoIFwiLlwiIClbIDEgXTtcblx0dmFyIGZ1bGxOYW1lID0gbmFtZXNwYWNlICsgXCItXCIgKyBuYW1lO1xuXG5cdGlmICggIXByb3RvdHlwZSApIHtcblx0XHRwcm90b3R5cGUgPSBiYXNlO1xuXHRcdGJhc2UgPSAkLldpZGdldDtcblx0fVxuXG5cdGlmICggJC5pc0FycmF5KCBwcm90b3R5cGUgKSApIHtcblx0XHRwcm90b3R5cGUgPSAkLmV4dGVuZC5hcHBseSggbnVsbCwgWyB7fSBdLmNvbmNhdCggcHJvdG90eXBlICkgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBzZWxlY3RvciBmb3IgcGx1Z2luXG5cdCQuZXhwclsgXCI6XCIgXVsgZnVsbE5hbWUudG9Mb3dlckNhc2UoKSBdID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuICEhJC5kYXRhKCBlbGVtLCBmdWxsTmFtZSApO1xuXHR9O1xuXG5cdCRbIG5hbWVzcGFjZSBdID0gJFsgbmFtZXNwYWNlIF0gfHwge307XG5cdGV4aXN0aW5nQ29uc3RydWN0b3IgPSAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdO1xuXHRjb25zdHJ1Y3RvciA9ICRbIG5hbWVzcGFjZSBdWyBuYW1lIF0gPSBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHtcblxuXHRcdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCBcIm5ld1wiIGtleXdvcmRcblx0XHRpZiAoICF0aGlzLl9jcmVhdGVXaWRnZXQgKSB7XG5cdFx0XHRyZXR1cm4gbmV3IGNvbnN0cnVjdG9yKCBvcHRpb25zLCBlbGVtZW50ICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlXG5cdFx0Ly8gbXVzdCB1c2UgXCJuZXdcIiBrZXl3b3JkICh0aGUgY29kZSBhYm92ZSBhbHdheXMgcGFzc2VzIGFyZ3MpXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5fY3JlYXRlV2lkZ2V0KCBvcHRpb25zLCBlbGVtZW50ICk7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIEV4dGVuZCB3aXRoIHRoZSBleGlzdGluZyBjb25zdHJ1Y3RvciB0byBjYXJyeSBvdmVyIGFueSBzdGF0aWMgcHJvcGVydGllc1xuXHQkLmV4dGVuZCggY29uc3RydWN0b3IsIGV4aXN0aW5nQ29uc3RydWN0b3IsIHtcblx0XHR2ZXJzaW9uOiBwcm90b3R5cGUudmVyc2lvbixcblxuXHRcdC8vIENvcHkgdGhlIG9iamVjdCB1c2VkIHRvIGNyZWF0ZSB0aGUgcHJvdG90eXBlIGluIGNhc2Ugd2UgbmVlZCB0b1xuXHRcdC8vIHJlZGVmaW5lIHRoZSB3aWRnZXQgbGF0ZXJcblx0XHRfcHJvdG86ICQuZXh0ZW5kKCB7fSwgcHJvdG90eXBlICksXG5cblx0XHQvLyBUcmFjayB3aWRnZXRzIHRoYXQgaW5oZXJpdCBmcm9tIHRoaXMgd2lkZ2V0IGluIGNhc2UgdGhpcyB3aWRnZXQgaXNcblx0XHQvLyByZWRlZmluZWQgYWZ0ZXIgYSB3aWRnZXQgaW5oZXJpdHMgZnJvbSBpdFxuXHRcdF9jaGlsZENvbnN0cnVjdG9yczogW11cblx0fSApO1xuXG5cdGJhc2VQcm90b3R5cGUgPSBuZXcgYmFzZSgpO1xuXG5cdC8vIFdlIG5lZWQgdG8gbWFrZSB0aGUgb3B0aW9ucyBoYXNoIGEgcHJvcGVydHkgZGlyZWN0bHkgb24gdGhlIG5ldyBpbnN0YW5jZVxuXHQvLyBvdGhlcndpc2Ugd2UnbGwgbW9kaWZ5IHRoZSBvcHRpb25zIGhhc2ggb24gdGhlIHByb3RvdHlwZSB0aGF0IHdlJ3JlXG5cdC8vIGluaGVyaXRpbmcgZnJvbVxuXHRiYXNlUHJvdG90eXBlLm9wdGlvbnMgPSAkLndpZGdldC5leHRlbmQoIHt9LCBiYXNlUHJvdG90eXBlLm9wdGlvbnMgKTtcblx0JC5lYWNoKCBwcm90b3R5cGUsIGZ1bmN0aW9uKCBwcm9wLCB2YWx1ZSApIHtcblx0XHRpZiAoICEkLmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRwcm94aWVkUHJvdG90eXBlWyBwcm9wIF0gPSB2YWx1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0cHJveGllZFByb3RvdHlwZVsgcHJvcCBdID0gKCBmdW5jdGlvbigpIHtcblx0XHRcdGZ1bmN0aW9uIF9zdXBlcigpIHtcblx0XHRcdFx0cmV0dXJuIGJhc2UucHJvdG90eXBlWyBwcm9wIF0uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0fVxuXG5cdFx0XHRmdW5jdGlvbiBfc3VwZXJBcHBseSggYXJncyApIHtcblx0XHRcdFx0cmV0dXJuIGJhc2UucHJvdG90eXBlWyBwcm9wIF0uYXBwbHkoIHRoaXMsIGFyZ3MgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgX19zdXBlciA9IHRoaXMuX3N1cGVyO1xuXHRcdFx0XHR2YXIgX19zdXBlckFwcGx5ID0gdGhpcy5fc3VwZXJBcHBseTtcblx0XHRcdFx0dmFyIHJldHVyblZhbHVlO1xuXG5cdFx0XHRcdHRoaXMuX3N1cGVyID0gX3N1cGVyO1xuXHRcdFx0XHR0aGlzLl9zdXBlckFwcGx5ID0gX3N1cGVyQXBwbHk7XG5cblx0XHRcdFx0cmV0dXJuVmFsdWUgPSB2YWx1ZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cblx0XHRcdFx0dGhpcy5fc3VwZXIgPSBfX3N1cGVyO1xuXHRcdFx0XHR0aGlzLl9zdXBlckFwcGx5ID0gX19zdXBlckFwcGx5O1xuXG5cdFx0XHRcdHJldHVybiByZXR1cm5WYWx1ZTtcblx0XHRcdH07XG5cdFx0fSApKCk7XG5cdH0gKTtcblx0Y29uc3RydWN0b3IucHJvdG90eXBlID0gJC53aWRnZXQuZXh0ZW5kKCBiYXNlUHJvdG90eXBlLCB7XG5cblx0XHQvLyBUT0RPOiByZW1vdmUgc3VwcG9ydCBmb3Igd2lkZ2V0RXZlbnRQcmVmaXhcblx0XHQvLyBhbHdheXMgdXNlIHRoZSBuYW1lICsgYSBjb2xvbiBhcyB0aGUgcHJlZml4LCBlLmcuLCBkcmFnZ2FibGU6c3RhcnRcblx0XHQvLyBkb24ndCBwcmVmaXggZm9yIHdpZGdldHMgdGhhdCBhcmVuJ3QgRE9NLWJhc2VkXG5cdFx0d2lkZ2V0RXZlbnRQcmVmaXg6IGV4aXN0aW5nQ29uc3RydWN0b3IgPyAoIGJhc2VQcm90b3R5cGUud2lkZ2V0RXZlbnRQcmVmaXggfHwgbmFtZSApIDogbmFtZVxuXHR9LCBwcm94aWVkUHJvdG90eXBlLCB7XG5cdFx0Y29uc3RydWN0b3I6IGNvbnN0cnVjdG9yLFxuXHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlLFxuXHRcdHdpZGdldE5hbWU6IG5hbWUsXG5cdFx0d2lkZ2V0RnVsbE5hbWU6IGZ1bGxOYW1lXG5cdH0gKTtcblxuXHQvLyBJZiB0aGlzIHdpZGdldCBpcyBiZWluZyByZWRlZmluZWQgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYWxsIHdpZGdldHMgdGhhdFxuXHQvLyBhcmUgaW5oZXJpdGluZyBmcm9tIGl0IGFuZCByZWRlZmluZSBhbGwgb2YgdGhlbSBzbyB0aGF0IHRoZXkgaW5oZXJpdCBmcm9tXG5cdC8vIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGlzIHdpZGdldC4gV2UncmUgZXNzZW50aWFsbHkgdHJ5aW5nIHRvIHJlcGxhY2Ugb25lXG5cdC8vIGxldmVsIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uXG5cdGlmICggZXhpc3RpbmdDb25zdHJ1Y3RvciApIHtcblx0XHQkLmVhY2goIGV4aXN0aW5nQ29uc3RydWN0b3IuX2NoaWxkQ29uc3RydWN0b3JzLCBmdW5jdGlvbiggaSwgY2hpbGQgKSB7XG5cdFx0XHR2YXIgY2hpbGRQcm90b3R5cGUgPSBjaGlsZC5wcm90b3R5cGU7XG5cblx0XHRcdC8vIFJlZGVmaW5lIHRoZSBjaGlsZCB3aWRnZXQgdXNpbmcgdGhlIHNhbWUgcHJvdG90eXBlIHRoYXQgd2FzXG5cdFx0XHQvLyBvcmlnaW5hbGx5IHVzZWQsIGJ1dCBpbmhlcml0IGZyb20gdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBiYXNlXG5cdFx0XHQkLndpZGdldCggY2hpbGRQcm90b3R5cGUubmFtZXNwYWNlICsgXCIuXCIgKyBjaGlsZFByb3RvdHlwZS53aWRnZXROYW1lLCBjb25zdHJ1Y3Rvcixcblx0XHRcdFx0Y2hpbGQuX3Byb3RvICk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIGNoaWxkIGNvbnN0cnVjdG9ycyBmcm9tIHRoZSBvbGQgY29uc3RydWN0b3Jcblx0XHQvLyBzbyB0aGUgb2xkIGNoaWxkIGNvbnN0cnVjdG9ycyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWRcblx0XHRkZWxldGUgZXhpc3RpbmdDb25zdHJ1Y3Rvci5fY2hpbGRDb25zdHJ1Y3RvcnM7XG5cdH0gZWxzZSB7XG5cdFx0YmFzZS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaCggY29uc3RydWN0b3IgKTtcblx0fVxuXG5cdCQud2lkZ2V0LmJyaWRnZSggbmFtZSwgY29uc3RydWN0b3IgKTtcblxuXHRyZXR1cm4gY29uc3RydWN0b3I7XG59O1xuXG4kLndpZGdldC5leHRlbmQgPSBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHR2YXIgaW5wdXQgPSB3aWRnZXRTbGljZS5jYWxsKCBhcmd1bWVudHMsIDEgKTtcblx0dmFyIGlucHV0SW5kZXggPSAwO1xuXHR2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cdHZhciBrZXk7XG5cdHZhciB2YWx1ZTtcblxuXHRmb3IgKCA7IGlucHV0SW5kZXggPCBpbnB1dExlbmd0aDsgaW5wdXRJbmRleCsrICkge1xuXHRcdGZvciAoIGtleSBpbiBpbnB1dFsgaW5wdXRJbmRleCBdICkge1xuXHRcdFx0dmFsdWUgPSBpbnB1dFsgaW5wdXRJbmRleCBdWyBrZXkgXTtcblx0XHRcdGlmICggaW5wdXRbIGlucHV0SW5kZXggXS5oYXNPd25Qcm9wZXJ0eSgga2V5ICkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHQvLyBDbG9uZSBvYmplY3RzXG5cdFx0XHRcdGlmICggJC5pc1BsYWluT2JqZWN0KCB2YWx1ZSApICkge1xuXHRcdFx0XHRcdHRhcmdldFsga2V5IF0gPSAkLmlzUGxhaW5PYmplY3QoIHRhcmdldFsga2V5IF0gKSA/XG5cdFx0XHRcdFx0XHQkLndpZGdldC5leHRlbmQoIHt9LCB0YXJnZXRbIGtleSBdLCB2YWx1ZSApIDpcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgZXh0ZW5kIHN0cmluZ3MsIGFycmF5cywgZXRjLiB3aXRoIG9iamVjdHNcblx0XHRcdFx0XHRcdCQud2lkZ2V0LmV4dGVuZCgge30sIHZhbHVlICk7XG5cblx0XHRcdFx0Ly8gQ29weSBldmVyeXRoaW5nIGVsc2UgYnkgcmVmZXJlbmNlXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0WyBrZXkgXSA9IHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG4kLndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbiggbmFtZSwgb2JqZWN0ICkge1xuXHR2YXIgZnVsbE5hbWUgPSBvYmplY3QucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lIHx8IG5hbWU7XG5cdCQuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdHZhciBpc01ldGhvZENhbGwgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIjtcblx0XHR2YXIgYXJncyA9IHdpZGdldFNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApO1xuXHRcdHZhciByZXR1cm5WYWx1ZSA9IHRoaXM7XG5cblx0XHRpZiAoIGlzTWV0aG9kQ2FsbCApIHtcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhbiBlbXB0eSBjb2xsZWN0aW9uLCB3ZSBuZWVkIHRvIGhhdmUgdGhlIGluc3RhbmNlIG1ldGhvZFxuXHRcdFx0Ly8gcmV0dXJuIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHRoZSBqUXVlcnkgaW5zdGFuY2Vcblx0XHRcdGlmICggIXRoaXMubGVuZ3RoICYmIG9wdGlvbnMgPT09IFwiaW5zdGFuY2VcIiApIHtcblx0XHRcdFx0cmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHZhciBtZXRob2RWYWx1ZTtcblx0XHRcdFx0XHR2YXIgaW5zdGFuY2UgPSAkLmRhdGEoIHRoaXMsIGZ1bGxOYW1lICk7XG5cblx0XHRcdFx0XHRpZiAoIG9wdGlvbnMgPT09IFwiaW5zdGFuY2VcIiApIHtcblx0XHRcdFx0XHRcdHJldHVyblZhbHVlID0gaW5zdGFuY2U7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCAhaW5zdGFuY2UgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gJC5lcnJvciggXCJjYW5ub3QgY2FsbCBtZXRob2RzIG9uIFwiICsgbmFtZSArXG5cdFx0XHRcdFx0XHRcdFwiIHByaW9yIHRvIGluaXRpYWxpemF0aW9uOyBcIiArXG5cdFx0XHRcdFx0XHRcdFwiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICdcIiArIG9wdGlvbnMgKyBcIidcIiApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICggISQuaXNGdW5jdGlvbiggaW5zdGFuY2VbIG9wdGlvbnMgXSApIHx8IG9wdGlvbnMuY2hhckF0KCAwICkgPT09IFwiX1wiICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuICQuZXJyb3IoIFwibm8gc3VjaCBtZXRob2QgJ1wiICsgb3B0aW9ucyArIFwiJyBmb3IgXCIgKyBuYW1lICtcblx0XHRcdFx0XHRcdFx0XCIgd2lkZ2V0IGluc3RhbmNlXCIgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZXRob2RWYWx1ZSA9IGluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1ldGhvZFZhbHVlICE9PSBpbnN0YW5jZSAmJiBtZXRob2RWYWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuVmFsdWUgPSBtZXRob2RWYWx1ZSAmJiBtZXRob2RWYWx1ZS5qcXVlcnkgP1xuXHRcdFx0XHRcdFx0XHRyZXR1cm5WYWx1ZS5wdXNoU3RhY2soIG1ldGhvZFZhbHVlLmdldCgpICkgOlxuXHRcdFx0XHRcdFx0XHRtZXRob2RWYWx1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBBbGxvdyBtdWx0aXBsZSBoYXNoZXMgdG8gYmUgcGFzc2VkIG9uIGluaXRcblx0XHRcdGlmICggYXJncy5sZW5ndGggKSB7XG5cdFx0XHRcdG9wdGlvbnMgPSAkLndpZGdldC5leHRlbmQuYXBwbHkoIG51bGwsIFsgb3B0aW9ucyBdLmNvbmNhdCggYXJncyApICk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgZnVsbE5hbWUgKTtcblx0XHRcdFx0aWYgKCBpbnN0YW5jZSApIHtcblx0XHRcdFx0XHRpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKTtcblx0XHRcdFx0XHRpZiAoIGluc3RhbmNlLl9pbml0ICkge1xuXHRcdFx0XHRcdFx0aW5zdGFuY2UuX2luaXQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0JC5kYXRhKCB0aGlzLCBmdWxsTmFtZSwgbmV3IG9iamVjdCggb3B0aW9ucywgdGhpcyApICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH07XG59O1xuXG4kLldpZGdldCA9IGZ1bmN0aW9uKCAvKiBvcHRpb25zLCBlbGVtZW50ICovICkge307XG4kLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnMgPSBbXTtcblxuJC5XaWRnZXQucHJvdG90eXBlID0ge1xuXHR3aWRnZXROYW1lOiBcIndpZGdldFwiLFxuXHR3aWRnZXRFdmVudFByZWZpeDogXCJcIixcblx0ZGVmYXVsdEVsZW1lbnQ6IFwiPGRpdj5cIixcblxuXHRvcHRpb25zOiB7XG5cdFx0Y2xhc3Nlczoge30sXG5cdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXG5cdFx0Ly8gQ2FsbGJhY2tzXG5cdFx0Y3JlYXRlOiBudWxsXG5cdH0sXG5cblx0X2NyZWF0ZVdpZGdldDogZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7XG5cdFx0ZWxlbWVudCA9ICQoIGVsZW1lbnQgfHwgdGhpcy5kZWZhdWx0RWxlbWVudCB8fCB0aGlzIClbIDAgXTtcblx0XHR0aGlzLmVsZW1lbnQgPSAkKCBlbGVtZW50ICk7XG5cdFx0dGhpcy51dWlkID0gd2lkZ2V0VXVpZCsrO1xuXHRcdHRoaXMuZXZlbnROYW1lc3BhY2UgPSBcIi5cIiArIHRoaXMud2lkZ2V0TmFtZSArIHRoaXMudXVpZDtcblxuXHRcdHRoaXMuYmluZGluZ3MgPSAkKCk7XG5cdFx0dGhpcy5ob3ZlcmFibGUgPSAkKCk7XG5cdFx0dGhpcy5mb2N1c2FibGUgPSAkKCk7XG5cdFx0dGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cCA9IHt9O1xuXG5cdFx0aWYgKCBlbGVtZW50ICE9PSB0aGlzICkge1xuXHRcdFx0JC5kYXRhKCBlbGVtZW50LCB0aGlzLndpZGdldEZ1bGxOYW1lLCB0aGlzICk7XG5cdFx0XHR0aGlzLl9vbiggdHJ1ZSwgdGhpcy5lbGVtZW50LCB7XG5cdFx0XHRcdHJlbW92ZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRcdGlmICggZXZlbnQudGFyZ2V0ID09PSBlbGVtZW50ICkge1xuXHRcdFx0XHRcdFx0dGhpcy5kZXN0cm95KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0XHR0aGlzLmRvY3VtZW50ID0gJCggZWxlbWVudC5zdHlsZSA/XG5cblx0XHRcdFx0Ly8gRWxlbWVudCB3aXRoaW4gdGhlIGRvY3VtZW50XG5cdFx0XHRcdGVsZW1lbnQub3duZXJEb2N1bWVudCA6XG5cblx0XHRcdFx0Ly8gRWxlbWVudCBpcyB3aW5kb3cgb3IgZG9jdW1lbnRcblx0XHRcdFx0ZWxlbWVudC5kb2N1bWVudCB8fCBlbGVtZW50ICk7XG5cdFx0XHR0aGlzLndpbmRvdyA9ICQoIHRoaXMuZG9jdW1lbnRbIDAgXS5kZWZhdWx0VmlldyB8fCB0aGlzLmRvY3VtZW50WyAwIF0ucGFyZW50V2luZG93ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5vcHRpb25zID0gJC53aWRnZXQuZXh0ZW5kKCB7fSxcblx0XHRcdHRoaXMub3B0aW9ucyxcblx0XHRcdHRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxcblx0XHRcdG9wdGlvbnMgKTtcblxuXHRcdHRoaXMuX2NyZWF0ZSgpO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKSB7XG5cdFx0XHR0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCggdGhpcy5vcHRpb25zLmRpc2FibGVkICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fdHJpZ2dlciggXCJjcmVhdGVcIiwgbnVsbCwgdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkgKTtcblx0XHR0aGlzLl9pbml0KCk7XG5cdH0sXG5cblx0X2dldENyZWF0ZU9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7fTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlRXZlbnREYXRhOiAkLm5vb3AsXG5cblx0X2NyZWF0ZTogJC5ub29wLFxuXG5cdF9pbml0OiAkLm5vb3AsXG5cblx0ZGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXG5cdFx0dGhpcy5fZGVzdHJveSgpO1xuXHRcdCQuZWFjaCggdGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cCwgZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggdmFsdWUsIGtleSApO1xuXHRcdH0gKTtcblxuXHRcdC8vIFdlIGNhbiBwcm9iYWJseSByZW1vdmUgdGhlIHVuYmluZCBjYWxscyBpbiAyLjBcblx0XHQvLyBhbGwgZXZlbnQgYmluZGluZ3Mgc2hvdWxkIGdvIHRocm91Z2ggdGhpcy5fb24oKVxuXHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0Lm9mZiggdGhpcy5ldmVudE5hbWVzcGFjZSApXG5cdFx0XHQucmVtb3ZlRGF0YSggdGhpcy53aWRnZXRGdWxsTmFtZSApO1xuXHRcdHRoaXMud2lkZ2V0KClcblx0XHRcdC5vZmYoIHRoaXMuZXZlbnROYW1lc3BhY2UgKVxuXHRcdFx0LnJlbW92ZUF0dHIoIFwiYXJpYS1kaXNhYmxlZFwiICk7XG5cblx0XHQvLyBDbGVhbiB1cCBldmVudHMgYW5kIHN0YXRlc1xuXHRcdHRoaXMuYmluZGluZ3Mub2ZmKCB0aGlzLmV2ZW50TmFtZXNwYWNlICk7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6ICQubm9vcCxcblxuXHR3aWRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVsZW1lbnQ7XG5cdH0sXG5cblx0b3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgb3B0aW9ucyA9IGtleTtcblx0XHR2YXIgcGFydHM7XG5cdFx0dmFyIGN1ck9wdGlvbjtcblx0XHR2YXIgaTtcblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMCApIHtcblxuXHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBoYXNoXG5cdFx0XHRyZXR1cm4gJC53aWRnZXQuZXh0ZW5kKCB7fSwgdGhpcy5vcHRpb25zICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyBIYW5kbGUgbmVzdGVkIGtleXMsIGUuZy4sIFwiZm9vLmJhclwiID0+IHsgZm9vOiB7IGJhcjogX19fIH0gfVxuXHRcdFx0b3B0aW9ucyA9IHt9O1xuXHRcdFx0cGFydHMgPSBrZXkuc3BsaXQoIFwiLlwiICk7XG5cdFx0XHRrZXkgPSBwYXJ0cy5zaGlmdCgpO1xuXHRcdFx0aWYgKCBwYXJ0cy5sZW5ndGggKSB7XG5cdFx0XHRcdGN1ck9wdGlvbiA9IG9wdGlvbnNbIGtleSBdID0gJC53aWRnZXQuZXh0ZW5kKCB7fSwgdGhpcy5vcHRpb25zWyBrZXkgXSApO1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKyApIHtcblx0XHRcdFx0XHRjdXJPcHRpb25bIHBhcnRzWyBpIF0gXSA9IGN1ck9wdGlvblsgcGFydHNbIGkgXSBdIHx8IHt9O1xuXHRcdFx0XHRcdGN1ck9wdGlvbiA9IGN1ck9wdGlvblsgcGFydHNbIGkgXSBdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGtleSA9IHBhcnRzLnBvcCgpO1xuXHRcdFx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGN1ck9wdGlvblsga2V5IF0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJPcHRpb25bIGtleSBdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN1ck9wdGlvblsga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vcHRpb25zWyBrZXkgXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMub3B0aW9uc1sga2V5IF07XG5cdFx0XHRcdH1cblx0XHRcdFx0b3B0aW9uc1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLl9zZXRPcHRpb25zKCBvcHRpb25zICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdFx0dmFyIGtleTtcblxuXHRcdGZvciAoIGtleSBpbiBvcHRpb25zICkge1xuXHRcdFx0dGhpcy5fc2V0T3B0aW9uKCBrZXksIG9wdGlvbnNbIGtleSBdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0aWYgKCBrZXkgPT09IFwiY2xhc3Nlc1wiICkge1xuXHRcdFx0dGhpcy5fc2V0T3B0aW9uQ2xhc3NlcyggdmFsdWUgKTtcblx0XHR9XG5cblx0XHR0aGlzLm9wdGlvbnNbIGtleSBdID0gdmFsdWU7XG5cblx0XHRpZiAoIGtleSA9PT0gXCJkaXNhYmxlZFwiICkge1xuXHRcdFx0dGhpcy5fc2V0T3B0aW9uRGlzYWJsZWQoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0X3NldE9wdGlvbkNsYXNzZXM6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NLZXksIGVsZW1lbnRzLCBjdXJyZW50RWxlbWVudHM7XG5cblx0XHRmb3IgKCBjbGFzc0tleSBpbiB2YWx1ZSApIHtcblx0XHRcdGN1cnJlbnRFbGVtZW50cyA9IHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXBbIGNsYXNzS2V5IF07XG5cdFx0XHRpZiAoIHZhbHVlWyBjbGFzc0tleSBdID09PSB0aGlzLm9wdGlvbnMuY2xhc3Nlc1sgY2xhc3NLZXkgXSB8fFxuXHRcdFx0XHRcdCFjdXJyZW50RWxlbWVudHMgfHxcblx0XHRcdFx0XHQhY3VycmVudEVsZW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlIGFyZSBkb2luZyB0aGlzIHRvIGNyZWF0ZSBhIG5ldyBqUXVlcnkgb2JqZWN0IGJlY2F1c2UgdGhlIF9yZW1vdmVDbGFzcygpIGNhbGxcblx0XHRcdC8vIG9uIHRoZSBuZXh0IGxpbmUgaXMgZ29pbmcgdG8gZGVzdHJveSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGVsZW1lbnRzIGJlaW5nXG5cdFx0XHQvLyB0cmFja2VkLiBXZSBuZWVkIHRvIHNhdmUgYSBjb3B5IG9mIHRoaXMgY29sbGVjdGlvbiBzbyB0aGF0IHdlIGNhbiBhZGQgdGhlIG5ldyBjbGFzc2VzXG5cdFx0XHQvLyBiZWxvdy5cblx0XHRcdGVsZW1lbnRzID0gJCggY3VycmVudEVsZW1lbnRzLmdldCgpICk7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggY3VycmVudEVsZW1lbnRzLCBjbGFzc0tleSApO1xuXG5cdFx0XHQvLyBXZSBkb24ndCB1c2UgX2FkZENsYXNzKCkgaGVyZSwgYmVjYXVzZSB0aGF0IHVzZXMgdGhpcy5vcHRpb25zLmNsYXNzZXNcblx0XHRcdC8vIGZvciBnZW5lcmF0aW5nIHRoZSBzdHJpbmcgb2YgY2xhc3Nlcy4gV2Ugd2FudCB0byB1c2UgdGhlIHZhbHVlIHBhc3NlZCBpbiBmcm9tXG5cdFx0XHQvLyBfc2V0T3B0aW9uKCksIHRoaXMgaXMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgY2xhc3NlcyBvcHRpb24gd2hpY2ggd2FzIHBhc3NlZCB0b1xuXHRcdFx0Ly8gX3NldE9wdGlvbigpLiBXZSBwYXNzIHRoaXMgdmFsdWUgZGlyZWN0bHkgdG8gX2NsYXNzZXMoKS5cblx0XHRcdGVsZW1lbnRzLmFkZENsYXNzKCB0aGlzLl9jbGFzc2VzKCB7XG5cdFx0XHRcdGVsZW1lbnQ6IGVsZW1lbnRzLFxuXHRcdFx0XHRrZXlzOiBjbGFzc0tleSxcblx0XHRcdFx0Y2xhc3NlczogdmFsdWUsXG5cdFx0XHRcdGFkZDogdHJ1ZVxuXHRcdFx0fSApICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRPcHRpb25EaXNhYmxlZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCB0aGlzLndpZGdldCgpLCB0aGlzLndpZGdldEZ1bGxOYW1lICsgXCItZGlzYWJsZWRcIiwgbnVsbCwgISF2YWx1ZSApO1xuXG5cdFx0Ly8gSWYgdGhlIHdpZGdldCBpcyBiZWNvbWluZyBkaXNhYmxlZCwgdGhlbiBub3RoaW5nIGlzIGludGVyYWN0aXZlXG5cdFx0aWYgKCB2YWx1ZSApIHtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmhvdmVyYWJsZSwgbnVsbCwgXCJ1aS1zdGF0ZS1ob3ZlclwiICk7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5mb2N1c2FibGUsIG51bGwsIFwidWktc3RhdGUtZm9jdXNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRlbmFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLl9zZXRPcHRpb25zKCB7IGRpc2FibGVkOiBmYWxzZSB9ICk7XG5cdH0sXG5cblx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoIHsgZGlzYWJsZWQ6IHRydWUgfSApO1xuXHR9LFxuXG5cdF9jbGFzc2VzOiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHR2YXIgZnVsbCA9IFtdO1xuXHRcdHZhciB0aGF0ID0gdGhpcztcblxuXHRcdG9wdGlvbnMgPSAkLmV4dGVuZCgge1xuXHRcdFx0ZWxlbWVudDogdGhpcy5lbGVtZW50LFxuXHRcdFx0Y2xhc3NlczogdGhpcy5vcHRpb25zLmNsYXNzZXMgfHwge31cblx0XHR9LCBvcHRpb25zICk7XG5cblx0XHRmdW5jdGlvbiBwcm9jZXNzQ2xhc3NTdHJpbmcoIGNsYXNzZXMsIGNoZWNrT3B0aW9uICkge1xuXHRcdFx0dmFyIGN1cnJlbnQsIGk7XG5cdFx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzZXMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGN1cnJlbnQgPSB0aGF0LmNsYXNzZXNFbGVtZW50TG9va3VwWyBjbGFzc2VzWyBpIF0gXSB8fCAkKCk7XG5cdFx0XHRcdGlmICggb3B0aW9ucy5hZGQgKSB7XG5cdFx0XHRcdFx0Y3VycmVudCA9ICQoICQudW5pcXVlKCBjdXJyZW50LmdldCgpLmNvbmNhdCggb3B0aW9ucy5lbGVtZW50LmdldCgpICkgKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGN1cnJlbnQgPSAkKCBjdXJyZW50Lm5vdCggb3B0aW9ucy5lbGVtZW50ICkuZ2V0KCkgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LmNsYXNzZXNFbGVtZW50TG9va3VwWyBjbGFzc2VzWyBpIF0gXSA9IGN1cnJlbnQ7XG5cdFx0XHRcdGZ1bGwucHVzaCggY2xhc3Nlc1sgaSBdICk7XG5cdFx0XHRcdGlmICggY2hlY2tPcHRpb24gJiYgb3B0aW9ucy5jbGFzc2VzWyBjbGFzc2VzWyBpIF0gXSApIHtcblx0XHRcdFx0XHRmdWxsLnB1c2goIG9wdGlvbnMuY2xhc3Nlc1sgY2xhc3Nlc1sgaSBdIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMuX29uKCBvcHRpb25zLmVsZW1lbnQsIHtcblx0XHRcdFwicmVtb3ZlXCI6IFwiX3VudHJhY2tDbGFzc2VzRWxlbWVudFwiXG5cdFx0fSApO1xuXG5cdFx0aWYgKCBvcHRpb25zLmtleXMgKSB7XG5cdFx0XHRwcm9jZXNzQ2xhc3NTdHJpbmcoIG9wdGlvbnMua2V5cy5tYXRjaCggL1xcUysvZyApIHx8IFtdLCB0cnVlICk7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5leHRyYSApIHtcblx0XHRcdHByb2Nlc3NDbGFzc1N0cmluZyggb3B0aW9ucy5leHRyYS5tYXRjaCggL1xcUysvZyApIHx8IFtdICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZ1bGwuam9pbiggXCIgXCIgKTtcblx0fSxcblxuXHRfdW50cmFja0NsYXNzZXNFbGVtZW50OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXHRcdCQuZWFjaCggdGhhdC5jbGFzc2VzRWxlbWVudExvb2t1cCwgZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoICQuaW5BcnJheSggZXZlbnQudGFyZ2V0LCB2YWx1ZSApICE9PSAtMSApIHtcblx0XHRcdFx0dGhhdC5jbGFzc2VzRWxlbWVudExvb2t1cFsga2V5IF0gPSAkKCB2YWx1ZS5ub3QoIGV2ZW50LnRhcmdldCApLmdldCgpICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9yZW1vdmVDbGFzczogZnVuY3Rpb24oIGVsZW1lbnQsIGtleXMsIGV4dHJhICkge1xuXHRcdHJldHVybiB0aGlzLl90b2dnbGVDbGFzcyggZWxlbWVudCwga2V5cywgZXh0cmEsIGZhbHNlICk7XG5cdH0sXG5cblx0X2FkZENsYXNzOiBmdW5jdGlvbiggZWxlbWVudCwga2V5cywgZXh0cmEgKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3RvZ2dsZUNsYXNzKCBlbGVtZW50LCBrZXlzLCBleHRyYSwgdHJ1ZSApO1xuXHR9LFxuXG5cdF90b2dnbGVDbGFzczogZnVuY3Rpb24oIGVsZW1lbnQsIGtleXMsIGV4dHJhLCBhZGQgKSB7XG5cdFx0YWRkID0gKCB0eXBlb2YgYWRkID09PSBcImJvb2xlYW5cIiApID8gYWRkIDogZXh0cmE7XG5cdFx0dmFyIHNoaWZ0ID0gKCB0eXBlb2YgZWxlbWVudCA9PT0gXCJzdHJpbmdcIiB8fCBlbGVtZW50ID09PSBudWxsICksXG5cdFx0XHRvcHRpb25zID0ge1xuXHRcdFx0XHRleHRyYTogc2hpZnQgPyBrZXlzIDogZXh0cmEsXG5cdFx0XHRcdGtleXM6IHNoaWZ0ID8gZWxlbWVudCA6IGtleXMsXG5cdFx0XHRcdGVsZW1lbnQ6IHNoaWZ0ID8gdGhpcy5lbGVtZW50IDogZWxlbWVudCxcblx0XHRcdFx0YWRkOiBhZGRcblx0XHRcdH07XG5cdFx0b3B0aW9ucy5lbGVtZW50LnRvZ2dsZUNsYXNzKCB0aGlzLl9jbGFzc2VzKCBvcHRpb25zICksIGFkZCApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdF9vbjogZnVuY3Rpb24oIHN1cHByZXNzRGlzYWJsZWRDaGVjaywgZWxlbWVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGRlbGVnYXRlRWxlbWVudDtcblx0XHR2YXIgaW5zdGFuY2UgPSB0aGlzO1xuXG5cdFx0Ly8gTm8gc3VwcHJlc3NEaXNhYmxlZENoZWNrIGZsYWcsIHNodWZmbGUgYXJndW1lbnRzXG5cdFx0aWYgKCB0eXBlb2Ygc3VwcHJlc3NEaXNhYmxlZENoZWNrICE9PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdGhhbmRsZXJzID0gZWxlbWVudDtcblx0XHRcdGVsZW1lbnQgPSBzdXBwcmVzc0Rpc2FibGVkQ2hlY2s7XG5cdFx0XHRzdXBwcmVzc0Rpc2FibGVkQ2hlY2sgPSBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBObyBlbGVtZW50IGFyZ3VtZW50LCBzaHVmZmxlIGFuZCB1c2UgdGhpcy5lbGVtZW50XG5cdFx0aWYgKCAhaGFuZGxlcnMgKSB7XG5cdFx0XHRoYW5kbGVycyA9IGVsZW1lbnQ7XG5cdFx0XHRlbGVtZW50ID0gdGhpcy5lbGVtZW50O1xuXHRcdFx0ZGVsZWdhdGVFbGVtZW50ID0gdGhpcy53aWRnZXQoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbWVudCA9IGRlbGVnYXRlRWxlbWVudCA9ICQoIGVsZW1lbnQgKTtcblx0XHRcdHRoaXMuYmluZGluZ3MgPSB0aGlzLmJpbmRpbmdzLmFkZCggZWxlbWVudCApO1xuXHRcdH1cblxuXHRcdCQuZWFjaCggaGFuZGxlcnMsIGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlciApIHtcblx0XHRcdGZ1bmN0aW9uIGhhbmRsZXJQcm94eSgpIHtcblxuXHRcdFx0XHQvLyBBbGxvdyB3aWRnZXRzIHRvIGN1c3RvbWl6ZSB0aGUgZGlzYWJsZWQgaGFuZGxpbmdcblx0XHRcdFx0Ly8gLSBkaXNhYmxlZCBhcyBhbiBhcnJheSBpbnN0ZWFkIG9mIGJvb2xlYW5cblx0XHRcdFx0Ly8gLSBkaXNhYmxlZCBjbGFzcyBhcyBtZXRob2QgZm9yIGRpc2FibGluZyBpbmRpdmlkdWFsIHBhcnRzXG5cdFx0XHRcdGlmICggIXN1cHByZXNzRGlzYWJsZWRDaGVjayAmJlxuXHRcdFx0XHRcdFx0KCBpbnN0YW5jZS5vcHRpb25zLmRpc2FibGVkID09PSB0cnVlIHx8XG5cdFx0XHRcdFx0XHQkKCB0aGlzICkuaGFzQ2xhc3MoIFwidWktc3RhdGUtZGlzYWJsZWRcIiApICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoIHR5cGVvZiBoYW5kbGVyID09PSBcInN0cmluZ1wiID8gaW5zdGFuY2VbIGhhbmRsZXIgXSA6IGhhbmRsZXIgKVxuXHRcdFx0XHRcdC5hcHBseSggaW5zdGFuY2UsIGFyZ3VtZW50cyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb3B5IHRoZSBndWlkIHNvIGRpcmVjdCB1bmJpbmRpbmcgd29ya3Ncblx0XHRcdGlmICggdHlwZW9mIGhhbmRsZXIgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdGhhbmRsZXJQcm94eS5ndWlkID0gaGFuZGxlci5ndWlkID1cblx0XHRcdFx0XHRoYW5kbGVyLmd1aWQgfHwgaGFuZGxlclByb3h5Lmd1aWQgfHwgJC5ndWlkKys7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBtYXRjaCA9IGV2ZW50Lm1hdGNoKCAvXihbXFx3Oi1dKilcXHMqKC4qKSQvICk7XG5cdFx0XHR2YXIgZXZlbnROYW1lID0gbWF0Y2hbIDEgXSArIGluc3RhbmNlLmV2ZW50TmFtZXNwYWNlO1xuXHRcdFx0dmFyIHNlbGVjdG9yID0gbWF0Y2hbIDIgXTtcblxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcblx0XHRcdFx0ZGVsZWdhdGVFbGVtZW50Lm9uKCBldmVudE5hbWUsIHNlbGVjdG9yLCBoYW5kbGVyUHJveHkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnQub24oIGV2ZW50TmFtZSwgaGFuZGxlclByb3h5ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9vZmY6IGZ1bmN0aW9uKCBlbGVtZW50LCBldmVudE5hbWUgKSB7XG5cdFx0ZXZlbnROYW1lID0gKCBldmVudE5hbWUgfHwgXCJcIiApLnNwbGl0KCBcIiBcIiApLmpvaW4oIHRoaXMuZXZlbnROYW1lc3BhY2UgKyBcIiBcIiApICtcblx0XHRcdHRoaXMuZXZlbnROYW1lc3BhY2U7XG5cdFx0ZWxlbWVudC5vZmYoIGV2ZW50TmFtZSApLm9mZiggZXZlbnROYW1lICk7XG5cblx0XHQvLyBDbGVhciB0aGUgc3RhY2sgdG8gYXZvaWQgbWVtb3J5IGxlYWtzICgjMTAwNTYpXG5cdFx0dGhpcy5iaW5kaW5ncyA9ICQoIHRoaXMuYmluZGluZ3Mubm90KCBlbGVtZW50ICkuZ2V0KCkgKTtcblx0XHR0aGlzLmZvY3VzYWJsZSA9ICQoIHRoaXMuZm9jdXNhYmxlLm5vdCggZWxlbWVudCApLmdldCgpICk7XG5cdFx0dGhpcy5ob3ZlcmFibGUgPSAkKCB0aGlzLmhvdmVyYWJsZS5ub3QoIGVsZW1lbnQgKS5nZXQoKSApO1xuXHR9LFxuXG5cdF9kZWxheTogZnVuY3Rpb24oIGhhbmRsZXIsIGRlbGF5ICkge1xuXHRcdGZ1bmN0aW9uIGhhbmRsZXJQcm94eSgpIHtcblx0XHRcdHJldHVybiAoIHR5cGVvZiBoYW5kbGVyID09PSBcInN0cmluZ1wiID8gaW5zdGFuY2VbIGhhbmRsZXIgXSA6IGhhbmRsZXIgKVxuXHRcdFx0XHQuYXBwbHkoIGluc3RhbmNlLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdFx0dmFyIGluc3RhbmNlID0gdGhpcztcblx0XHRyZXR1cm4gc2V0VGltZW91dCggaGFuZGxlclByb3h5LCBkZWxheSB8fCAwICk7XG5cdH0sXG5cblx0X2hvdmVyYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0dGhpcy5ob3ZlcmFibGUgPSB0aGlzLmhvdmVyYWJsZS5hZGQoIGVsZW1lbnQgKTtcblx0XHR0aGlzLl9vbiggZWxlbWVudCwge1xuXHRcdFx0bW91c2VlbnRlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHR0aGlzLl9hZGRDbGFzcyggJCggZXZlbnQuY3VycmVudFRhcmdldCApLCBudWxsLCBcInVpLXN0YXRlLWhvdmVyXCIgKTtcblx0XHRcdH0sXG5cdFx0XHRtb3VzZWxlYXZlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksIG51bGwsIFwidWktc3RhdGUtaG92ZXJcIiApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfZm9jdXNhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHtcblx0XHR0aGlzLmZvY3VzYWJsZSA9IHRoaXMuZm9jdXNhYmxlLmFkZCggZWxlbWVudCApO1xuXHRcdHRoaXMuX29uKCBlbGVtZW50LCB7XG5cdFx0XHRmb2N1c2luOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksIG51bGwsIFwidWktc3RhdGUtZm9jdXNcIiApO1xuXHRcdFx0fSxcblx0XHRcdGZvY3Vzb3V0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksIG51bGwsIFwidWktc3RhdGUtZm9jdXNcIiApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGV2ZW50LCBkYXRhICkge1xuXHRcdHZhciBwcm9wLCBvcmlnO1xuXHRcdHZhciBjYWxsYmFjayA9IHRoaXMub3B0aW9uc1sgdHlwZSBdO1xuXG5cdFx0ZGF0YSA9IGRhdGEgfHwge307XG5cdFx0ZXZlbnQgPSAkLkV2ZW50KCBldmVudCApO1xuXHRcdGV2ZW50LnR5cGUgPSAoIHR5cGUgPT09IHRoaXMud2lkZ2V0RXZlbnRQcmVmaXggP1xuXHRcdFx0dHlwZSA6XG5cdFx0XHR0aGlzLndpZGdldEV2ZW50UHJlZml4ICsgdHlwZSApLnRvTG93ZXJDYXNlKCk7XG5cblx0XHQvLyBUaGUgb3JpZ2luYWwgZXZlbnQgbWF5IGNvbWUgZnJvbSBhbnkgZWxlbWVudFxuXHRcdC8vIHNvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRhcmdldCBvbiB0aGUgbmV3IGV2ZW50XG5cdFx0ZXZlbnQudGFyZ2V0ID0gdGhpcy5lbGVtZW50WyAwIF07XG5cblx0XHQvLyBDb3B5IG9yaWdpbmFsIGV2ZW50IHByb3BlcnRpZXMgb3ZlciB0byB0aGUgbmV3IGV2ZW50XG5cdFx0b3JpZyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQ7XG5cdFx0aWYgKCBvcmlnICkge1xuXHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRpZiAoICEoIHByb3AgaW4gZXZlbnQgKSApIHtcblx0XHRcdFx0XHRldmVudFsgcHJvcCBdID0gb3JpZ1sgcHJvcCBdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5lbGVtZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhICk7XG5cdFx0cmV0dXJuICEoICQuaXNGdW5jdGlvbiggY2FsbGJhY2sgKSAmJlxuXHRcdFx0Y2FsbGJhY2suYXBwbHkoIHRoaXMuZWxlbWVudFsgMCBdLCBbIGV2ZW50IF0uY29uY2F0KCBkYXRhICkgKSA9PT0gZmFsc2UgfHxcblx0XHRcdGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICk7XG5cdH1cbn07XG5cbiQuZWFjaCggeyBzaG93OiBcImZhZGVJblwiLCBoaWRlOiBcImZhZGVPdXRcIiB9LCBmdW5jdGlvbiggbWV0aG9kLCBkZWZhdWx0RWZmZWN0ICkge1xuXHQkLldpZGdldC5wcm90b3R5cGVbIFwiX1wiICsgbWV0aG9kIF0gPSBmdW5jdGlvbiggZWxlbWVudCwgb3B0aW9ucywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB7IGVmZmVjdDogb3B0aW9ucyB9O1xuXHRcdH1cblxuXHRcdHZhciBoYXNPcHRpb25zO1xuXHRcdHZhciBlZmZlY3ROYW1lID0gIW9wdGlvbnMgP1xuXHRcdFx0bWV0aG9kIDpcblx0XHRcdG9wdGlvbnMgPT09IHRydWUgfHwgdHlwZW9mIG9wdGlvbnMgPT09IFwibnVtYmVyXCIgP1xuXHRcdFx0XHRkZWZhdWx0RWZmZWN0IDpcblx0XHRcdFx0b3B0aW9ucy5lZmZlY3QgfHwgZGVmYXVsdEVmZmVjdDtcblxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXHRcdGlmICggdHlwZW9mIG9wdGlvbnMgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRvcHRpb25zID0geyBkdXJhdGlvbjogb3B0aW9ucyB9O1xuXHRcdH1cblxuXHRcdGhhc09wdGlvbnMgPSAhJC5pc0VtcHR5T2JqZWN0KCBvcHRpb25zICk7XG5cdFx0b3B0aW9ucy5jb21wbGV0ZSA9IGNhbGxiYWNrO1xuXG5cdFx0aWYgKCBvcHRpb25zLmRlbGF5ICkge1xuXHRcdFx0ZWxlbWVudC5kZWxheSggb3B0aW9ucy5kZWxheSApO1xuXHRcdH1cblxuXHRcdGlmICggaGFzT3B0aW9ucyAmJiAkLmVmZmVjdHMgJiYgJC5lZmZlY3RzLmVmZmVjdFsgZWZmZWN0TmFtZSBdICkge1xuXHRcdFx0ZWxlbWVudFsgbWV0aG9kIF0oIG9wdGlvbnMgKTtcblx0XHR9IGVsc2UgaWYgKCBlZmZlY3ROYW1lICE9PSBtZXRob2QgJiYgZWxlbWVudFsgZWZmZWN0TmFtZSBdICkge1xuXHRcdFx0ZWxlbWVudFsgZWZmZWN0TmFtZSBdKCBvcHRpb25zLmR1cmF0aW9uLCBvcHRpb25zLmVhc2luZywgY2FsbGJhY2sgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbWVudC5xdWV1ZSggZnVuY3Rpb24oIG5leHQgKSB7XG5cdFx0XHRcdCQoIHRoaXMgKVsgbWV0aG9kIF0oKTtcblx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRjYWxsYmFjay5jYWxsKCBlbGVtZW50WyAwIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRuZXh0KCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9O1xufSApO1xuXG52YXIgd2lkZ2V0ID0gJC53aWRnZXQ7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgUG9zaXRpb24gMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9wb3NpdGlvbi9cbiAqL1xuXG4vLz4+bGFiZWw6IFBvc2l0aW9uXG4vLz4+Z3JvdXA6IENvcmVcbi8vPj5kZXNjcmlwdGlvbjogUG9zaXRpb25zIGVsZW1lbnRzIHJlbGF0aXZlIHRvIG90aGVyIGVsZW1lbnRzLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3Bvc2l0aW9uL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Bvc2l0aW9uL1xuXG5cbiggZnVuY3Rpb24oKSB7XG52YXIgY2FjaGVkU2Nyb2xsYmFyV2lkdGgsXG5cdG1heCA9IE1hdGgubWF4LFxuXHRhYnMgPSBNYXRoLmFicyxcblx0cmhvcml6b250YWwgPSAvbGVmdHxjZW50ZXJ8cmlnaHQvLFxuXHRydmVydGljYWwgPSAvdG9wfGNlbnRlcnxib3R0b20vLFxuXHRyb2Zmc2V0ID0gL1tcXCtcXC1dXFxkKyhcXC5bXFxkXSspPyU/Lyxcblx0cnBvc2l0aW9uID0gL15cXHcrLyxcblx0cnBlcmNlbnQgPSAvJSQvLFxuXHRfcG9zaXRpb24gPSAkLmZuLnBvc2l0aW9uO1xuXG5mdW5jdGlvbiBnZXRPZmZzZXRzKCBvZmZzZXRzLCB3aWR0aCwgaGVpZ2h0ICkge1xuXHRyZXR1cm4gW1xuXHRcdHBhcnNlRmxvYXQoIG9mZnNldHNbIDAgXSApICogKCBycGVyY2VudC50ZXN0KCBvZmZzZXRzWyAwIF0gKSA/IHdpZHRoIC8gMTAwIDogMSApLFxuXHRcdHBhcnNlRmxvYXQoIG9mZnNldHNbIDEgXSApICogKCBycGVyY2VudC50ZXN0KCBvZmZzZXRzWyAxIF0gKSA/IGhlaWdodCAvIDEwMCA6IDEgKVxuXHRdO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNzcyggZWxlbWVudCwgcHJvcGVydHkgKSB7XG5cdHJldHVybiBwYXJzZUludCggJC5jc3MoIGVsZW1lbnQsIHByb3BlcnR5ICksIDEwICkgfHwgMDtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyggZWxlbSApIHtcblx0dmFyIHJhdyA9IGVsZW1bIDAgXTtcblx0aWYgKCByYXcubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoOiBlbGVtLndpZHRoKCksXG5cdFx0XHRoZWlnaHQ6IGVsZW0uaGVpZ2h0KCksXG5cdFx0XHRvZmZzZXQ6IHsgdG9wOiAwLCBsZWZ0OiAwIH1cblx0XHR9O1xuXHR9XG5cdGlmICggJC5pc1dpbmRvdyggcmF3ICkgKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHdpZHRoOiBlbGVtLndpZHRoKCksXG5cdFx0XHRoZWlnaHQ6IGVsZW0uaGVpZ2h0KCksXG5cdFx0XHRvZmZzZXQ6IHsgdG9wOiBlbGVtLnNjcm9sbFRvcCgpLCBsZWZ0OiBlbGVtLnNjcm9sbExlZnQoKSB9XG5cdFx0fTtcblx0fVxuXHRpZiAoIHJhdy5wcmV2ZW50RGVmYXVsdCApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0d2lkdGg6IDAsXG5cdFx0XHRoZWlnaHQ6IDAsXG5cdFx0XHRvZmZzZXQ6IHsgdG9wOiByYXcucGFnZVksIGxlZnQ6IHJhdy5wYWdlWCB9XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdHdpZHRoOiBlbGVtLm91dGVyV2lkdGgoKSxcblx0XHRoZWlnaHQ6IGVsZW0ub3V0ZXJIZWlnaHQoKSxcblx0XHRvZmZzZXQ6IGVsZW0ub2Zmc2V0KClcblx0fTtcbn1cblxuJC5wb3NpdGlvbiA9IHtcblx0c2Nyb2xsYmFyV2lkdGg6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggY2FjaGVkU2Nyb2xsYmFyV2lkdGggIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybiBjYWNoZWRTY3JvbGxiYXJXaWR0aDtcblx0XHR9XG5cdFx0dmFyIHcxLCB3Mixcblx0XHRcdGRpdiA9ICQoIFwiPGRpdiBcIiArXG5cdFx0XHRcdFwic3R5bGU9J2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Jz5cIiArXG5cdFx0XHRcdFwiPGRpdiBzdHlsZT0naGVpZ2h0OjEwMHB4O3dpZHRoOmF1dG87Jz48L2Rpdj48L2Rpdj5cIiApLFxuXHRcdFx0aW5uZXJEaXYgPSBkaXYuY2hpbGRyZW4oKVsgMCBdO1xuXG5cdFx0JCggXCJib2R5XCIgKS5hcHBlbmQoIGRpdiApO1xuXHRcdHcxID0gaW5uZXJEaXYub2Zmc2V0V2lkdGg7XG5cdFx0ZGl2LmNzcyggXCJvdmVyZmxvd1wiLCBcInNjcm9sbFwiICk7XG5cblx0XHR3MiA9IGlubmVyRGl2Lm9mZnNldFdpZHRoO1xuXG5cdFx0aWYgKCB3MSA9PT0gdzIgKSB7XG5cdFx0XHR3MiA9IGRpdlsgMCBdLmNsaWVudFdpZHRoO1xuXHRcdH1cblxuXHRcdGRpdi5yZW1vdmUoKTtcblxuXHRcdHJldHVybiAoIGNhY2hlZFNjcm9sbGJhcldpZHRoID0gdzEgLSB3MiApO1xuXHR9LFxuXHRnZXRTY3JvbGxJbmZvOiBmdW5jdGlvbiggd2l0aGluICkge1xuXHRcdHZhciBvdmVyZmxvd1ggPSB3aXRoaW4uaXNXaW5kb3cgfHwgd2l0aGluLmlzRG9jdW1lbnQgPyBcIlwiIDpcblx0XHRcdFx0d2l0aGluLmVsZW1lbnQuY3NzKCBcIm92ZXJmbG93LXhcIiApLFxuXHRcdFx0b3ZlcmZsb3dZID0gd2l0aGluLmlzV2luZG93IHx8IHdpdGhpbi5pc0RvY3VtZW50ID8gXCJcIiA6XG5cdFx0XHRcdHdpdGhpbi5lbGVtZW50LmNzcyggXCJvdmVyZmxvdy15XCIgKSxcblx0XHRcdGhhc092ZXJmbG93WCA9IG92ZXJmbG93WCA9PT0gXCJzY3JvbGxcIiB8fFxuXHRcdFx0XHQoIG92ZXJmbG93WCA9PT0gXCJhdXRvXCIgJiYgd2l0aGluLndpZHRoIDwgd2l0aGluLmVsZW1lbnRbIDAgXS5zY3JvbGxXaWR0aCApLFxuXHRcdFx0aGFzT3ZlcmZsb3dZID0gb3ZlcmZsb3dZID09PSBcInNjcm9sbFwiIHx8XG5cdFx0XHRcdCggb3ZlcmZsb3dZID09PSBcImF1dG9cIiAmJiB3aXRoaW4uaGVpZ2h0IDwgd2l0aGluLmVsZW1lbnRbIDAgXS5zY3JvbGxIZWlnaHQgKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0d2lkdGg6IGhhc092ZXJmbG93WSA/ICQucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKSA6IDAsXG5cdFx0XHRoZWlnaHQ6IGhhc092ZXJmbG93WCA/ICQucG9zaXRpb24uc2Nyb2xsYmFyV2lkdGgoKSA6IDBcblx0XHR9O1xuXHR9LFxuXHRnZXRXaXRoaW5JbmZvOiBmdW5jdGlvbiggZWxlbWVudCApIHtcblx0XHR2YXIgd2l0aGluRWxlbWVudCA9ICQoIGVsZW1lbnQgfHwgd2luZG93ICksXG5cdFx0XHRpc1dpbmRvdyA9ICQuaXNXaW5kb3coIHdpdGhpbkVsZW1lbnRbIDAgXSApLFxuXHRcdFx0aXNEb2N1bWVudCA9ICEhd2l0aGluRWxlbWVudFsgMCBdICYmIHdpdGhpbkVsZW1lbnRbIDAgXS5ub2RlVHlwZSA9PT0gOSxcblx0XHRcdGhhc09mZnNldCA9ICFpc1dpbmRvdyAmJiAhaXNEb2N1bWVudDtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZWxlbWVudDogd2l0aGluRWxlbWVudCxcblx0XHRcdGlzV2luZG93OiBpc1dpbmRvdyxcblx0XHRcdGlzRG9jdW1lbnQ6IGlzRG9jdW1lbnQsXG5cdFx0XHRvZmZzZXQ6IGhhc09mZnNldCA/ICQoIGVsZW1lbnQgKS5vZmZzZXQoKSA6IHsgbGVmdDogMCwgdG9wOiAwIH0sXG5cdFx0XHRzY3JvbGxMZWZ0OiB3aXRoaW5FbGVtZW50LnNjcm9sbExlZnQoKSxcblx0XHRcdHNjcm9sbFRvcDogd2l0aGluRWxlbWVudC5zY3JvbGxUb3AoKSxcblx0XHRcdHdpZHRoOiB3aXRoaW5FbGVtZW50Lm91dGVyV2lkdGgoKSxcblx0XHRcdGhlaWdodDogd2l0aGluRWxlbWVudC5vdXRlckhlaWdodCgpXG5cdFx0fTtcblx0fVxufTtcblxuJC5mbi5wb3NpdGlvbiA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRpZiAoICFvcHRpb25zIHx8ICFvcHRpb25zLm9mICkge1xuXHRcdHJldHVybiBfcG9zaXRpb24uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHR9XG5cblx0Ly8gTWFrZSBhIGNvcHksIHdlIGRvbid0IHdhbnQgdG8gbW9kaWZ5IGFyZ3VtZW50c1xuXHRvcHRpb25zID0gJC5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIGF0T2Zmc2V0LCB0YXJnZXRXaWR0aCwgdGFyZ2V0SGVpZ2h0LCB0YXJnZXRPZmZzZXQsIGJhc2VQb3NpdGlvbiwgZGltZW5zaW9ucyxcblx0XHR0YXJnZXQgPSAkKCBvcHRpb25zLm9mICksXG5cdFx0d2l0aGluID0gJC5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKCBvcHRpb25zLndpdGhpbiApLFxuXHRcdHNjcm9sbEluZm8gPSAkLnBvc2l0aW9uLmdldFNjcm9sbEluZm8oIHdpdGhpbiApLFxuXHRcdGNvbGxpc2lvbiA9ICggb3B0aW9ucy5jb2xsaXNpb24gfHwgXCJmbGlwXCIgKS5zcGxpdCggXCIgXCIgKSxcblx0XHRvZmZzZXRzID0ge307XG5cblx0ZGltZW5zaW9ucyA9IGdldERpbWVuc2lvbnMoIHRhcmdldCApO1xuXHRpZiAoIHRhcmdldFsgMCBdLnByZXZlbnREZWZhdWx0ICkge1xuXG5cdFx0Ly8gRm9yY2UgbGVmdCB0b3AgdG8gYWxsb3cgZmxpcHBpbmdcblx0XHRvcHRpb25zLmF0ID0gXCJsZWZ0IHRvcFwiO1xuXHR9XG5cdHRhcmdldFdpZHRoID0gZGltZW5zaW9ucy53aWR0aDtcblx0dGFyZ2V0SGVpZ2h0ID0gZGltZW5zaW9ucy5oZWlnaHQ7XG5cdHRhcmdldE9mZnNldCA9IGRpbWVuc2lvbnMub2Zmc2V0O1xuXG5cdC8vIENsb25lIHRvIHJldXNlIG9yaWdpbmFsIHRhcmdldE9mZnNldCBsYXRlclxuXHRiYXNlUG9zaXRpb24gPSAkLmV4dGVuZCgge30sIHRhcmdldE9mZnNldCApO1xuXG5cdC8vIEZvcmNlIG15IGFuZCBhdCB0byBoYXZlIHZhbGlkIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHBvc2l0aW9uc1xuXHQvLyBpZiBhIHZhbHVlIGlzIG1pc3Npbmcgb3IgaW52YWxpZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gY2VudGVyXG5cdCQuZWFjaCggWyBcIm15XCIsIFwiYXRcIiBdLCBmdW5jdGlvbigpIHtcblx0XHR2YXIgcG9zID0gKCBvcHRpb25zWyB0aGlzIF0gfHwgXCJcIiApLnNwbGl0KCBcIiBcIiApLFxuXHRcdFx0aG9yaXpvbnRhbE9mZnNldCxcblx0XHRcdHZlcnRpY2FsT2Zmc2V0O1xuXG5cdFx0aWYgKCBwb3MubGVuZ3RoID09PSAxICkge1xuXHRcdFx0cG9zID0gcmhvcml6b250YWwudGVzdCggcG9zWyAwIF0gKSA/XG5cdFx0XHRcdHBvcy5jb25jYXQoIFsgXCJjZW50ZXJcIiBdICkgOlxuXHRcdFx0XHRydmVydGljYWwudGVzdCggcG9zWyAwIF0gKSA/XG5cdFx0XHRcdFx0WyBcImNlbnRlclwiIF0uY29uY2F0KCBwb3MgKSA6XG5cdFx0XHRcdFx0WyBcImNlbnRlclwiLCBcImNlbnRlclwiIF07XG5cdFx0fVxuXHRcdHBvc1sgMCBdID0gcmhvcml6b250YWwudGVzdCggcG9zWyAwIF0gKSA/IHBvc1sgMCBdIDogXCJjZW50ZXJcIjtcblx0XHRwb3NbIDEgXSA9IHJ2ZXJ0aWNhbC50ZXN0KCBwb3NbIDEgXSApID8gcG9zWyAxIF0gOiBcImNlbnRlclwiO1xuXG5cdFx0Ly8gQ2FsY3VsYXRlIG9mZnNldHNcblx0XHRob3Jpem9udGFsT2Zmc2V0ID0gcm9mZnNldC5leGVjKCBwb3NbIDAgXSApO1xuXHRcdHZlcnRpY2FsT2Zmc2V0ID0gcm9mZnNldC5leGVjKCBwb3NbIDEgXSApO1xuXHRcdG9mZnNldHNbIHRoaXMgXSA9IFtcblx0XHRcdGhvcml6b250YWxPZmZzZXQgPyBob3Jpem9udGFsT2Zmc2V0WyAwIF0gOiAwLFxuXHRcdFx0dmVydGljYWxPZmZzZXQgPyB2ZXJ0aWNhbE9mZnNldFsgMCBdIDogMFxuXHRcdF07XG5cblx0XHQvLyBSZWR1Y2UgdG8ganVzdCB0aGUgcG9zaXRpb25zIHdpdGhvdXQgdGhlIG9mZnNldHNcblx0XHRvcHRpb25zWyB0aGlzIF0gPSBbXG5cdFx0XHRycG9zaXRpb24uZXhlYyggcG9zWyAwIF0gKVsgMCBdLFxuXHRcdFx0cnBvc2l0aW9uLmV4ZWMoIHBvc1sgMSBdIClbIDAgXVxuXHRcdF07XG5cdH0gKTtcblxuXHQvLyBOb3JtYWxpemUgY29sbGlzaW9uIG9wdGlvblxuXHRpZiAoIGNvbGxpc2lvbi5sZW5ndGggPT09IDEgKSB7XG5cdFx0Y29sbGlzaW9uWyAxIF0gPSBjb2xsaXNpb25bIDAgXTtcblx0fVxuXG5cdGlmICggb3B0aW9ucy5hdFsgMCBdID09PSBcInJpZ2h0XCIgKSB7XG5cdFx0YmFzZVBvc2l0aW9uLmxlZnQgKz0gdGFyZ2V0V2lkdGg7XG5cdH0gZWxzZSBpZiAoIG9wdGlvbnMuYXRbIDAgXSA9PT0gXCJjZW50ZXJcIiApIHtcblx0XHRiYXNlUG9zaXRpb24ubGVmdCArPSB0YXJnZXRXaWR0aCAvIDI7XG5cdH1cblxuXHRpZiAoIG9wdGlvbnMuYXRbIDEgXSA9PT0gXCJib3R0b21cIiApIHtcblx0XHRiYXNlUG9zaXRpb24udG9wICs9IHRhcmdldEhlaWdodDtcblx0fSBlbHNlIGlmICggb3B0aW9ucy5hdFsgMSBdID09PSBcImNlbnRlclwiICkge1xuXHRcdGJhc2VQb3NpdGlvbi50b3AgKz0gdGFyZ2V0SGVpZ2h0IC8gMjtcblx0fVxuXG5cdGF0T2Zmc2V0ID0gZ2V0T2Zmc2V0cyggb2Zmc2V0cy5hdCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCApO1xuXHRiYXNlUG9zaXRpb24ubGVmdCArPSBhdE9mZnNldFsgMCBdO1xuXHRiYXNlUG9zaXRpb24udG9wICs9IGF0T2Zmc2V0WyAxIF07XG5cblx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNvbGxpc2lvblBvc2l0aW9uLCB1c2luZyxcblx0XHRcdGVsZW0gPSAkKCB0aGlzICksXG5cdFx0XHRlbGVtV2lkdGggPSBlbGVtLm91dGVyV2lkdGgoKSxcblx0XHRcdGVsZW1IZWlnaHQgPSBlbGVtLm91dGVySGVpZ2h0KCksXG5cdFx0XHRtYXJnaW5MZWZ0ID0gcGFyc2VDc3MoIHRoaXMsIFwibWFyZ2luTGVmdFwiICksXG5cdFx0XHRtYXJnaW5Ub3AgPSBwYXJzZUNzcyggdGhpcywgXCJtYXJnaW5Ub3BcIiApLFxuXHRcdFx0Y29sbGlzaW9uV2lkdGggPSBlbGVtV2lkdGggKyBtYXJnaW5MZWZ0ICsgcGFyc2VDc3MoIHRoaXMsIFwibWFyZ2luUmlnaHRcIiApICtcblx0XHRcdFx0c2Nyb2xsSW5mby53aWR0aCxcblx0XHRcdGNvbGxpc2lvbkhlaWdodCA9IGVsZW1IZWlnaHQgKyBtYXJnaW5Ub3AgKyBwYXJzZUNzcyggdGhpcywgXCJtYXJnaW5Cb3R0b21cIiApICtcblx0XHRcdFx0c2Nyb2xsSW5mby5oZWlnaHQsXG5cdFx0XHRwb3NpdGlvbiA9ICQuZXh0ZW5kKCB7fSwgYmFzZVBvc2l0aW9uICksXG5cdFx0XHRteU9mZnNldCA9IGdldE9mZnNldHMoIG9mZnNldHMubXksIGVsZW0ub3V0ZXJXaWR0aCgpLCBlbGVtLm91dGVySGVpZ2h0KCkgKTtcblxuXHRcdGlmICggb3B0aW9ucy5teVsgMCBdID09PSBcInJpZ2h0XCIgKSB7XG5cdFx0XHRwb3NpdGlvbi5sZWZ0IC09IGVsZW1XaWR0aDtcblx0XHR9IGVsc2UgaWYgKCBvcHRpb25zLm15WyAwIF0gPT09IFwiY2VudGVyXCIgKSB7XG5cdFx0XHRwb3NpdGlvbi5sZWZ0IC09IGVsZW1XaWR0aCAvIDI7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLm15WyAxIF0gPT09IFwiYm90dG9tXCIgKSB7XG5cdFx0XHRwb3NpdGlvbi50b3AgLT0gZWxlbUhlaWdodDtcblx0XHR9IGVsc2UgaWYgKCBvcHRpb25zLm15WyAxIF0gPT09IFwiY2VudGVyXCIgKSB7XG5cdFx0XHRwb3NpdGlvbi50b3AgLT0gZWxlbUhlaWdodCAvIDI7XG5cdFx0fVxuXG5cdFx0cG9zaXRpb24ubGVmdCArPSBteU9mZnNldFsgMCBdO1xuXHRcdHBvc2l0aW9uLnRvcCArPSBteU9mZnNldFsgMSBdO1xuXG5cdFx0Y29sbGlzaW9uUG9zaXRpb24gPSB7XG5cdFx0XHRtYXJnaW5MZWZ0OiBtYXJnaW5MZWZ0LFxuXHRcdFx0bWFyZ2luVG9wOiBtYXJnaW5Ub3Bcblx0XHR9O1xuXG5cdFx0JC5lYWNoKCBbIFwibGVmdFwiLCBcInRvcFwiIF0sIGZ1bmN0aW9uKCBpLCBkaXIgKSB7XG5cdFx0XHRpZiAoICQudWkucG9zaXRpb25bIGNvbGxpc2lvblsgaSBdIF0gKSB7XG5cdFx0XHRcdCQudWkucG9zaXRpb25bIGNvbGxpc2lvblsgaSBdIF1bIGRpciBdKCBwb3NpdGlvbiwge1xuXHRcdFx0XHRcdHRhcmdldFdpZHRoOiB0YXJnZXRXaWR0aCxcblx0XHRcdFx0XHR0YXJnZXRIZWlnaHQ6IHRhcmdldEhlaWdodCxcblx0XHRcdFx0XHRlbGVtV2lkdGg6IGVsZW1XaWR0aCxcblx0XHRcdFx0XHRlbGVtSGVpZ2h0OiBlbGVtSGVpZ2h0LFxuXHRcdFx0XHRcdGNvbGxpc2lvblBvc2l0aW9uOiBjb2xsaXNpb25Qb3NpdGlvbixcblx0XHRcdFx0XHRjb2xsaXNpb25XaWR0aDogY29sbGlzaW9uV2lkdGgsXG5cdFx0XHRcdFx0Y29sbGlzaW9uSGVpZ2h0OiBjb2xsaXNpb25IZWlnaHQsXG5cdFx0XHRcdFx0b2Zmc2V0OiBbIGF0T2Zmc2V0WyAwIF0gKyBteU9mZnNldFsgMCBdLCBhdE9mZnNldCBbIDEgXSArIG15T2Zmc2V0WyAxIF0gXSxcblx0XHRcdFx0XHRteTogb3B0aW9ucy5teSxcblx0XHRcdFx0XHRhdDogb3B0aW9ucy5hdCxcblx0XHRcdFx0XHR3aXRoaW46IHdpdGhpbixcblx0XHRcdFx0XHRlbGVtOiBlbGVtXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRpZiAoIG9wdGlvbnMudXNpbmcgKSB7XG5cblx0XHRcdC8vIEFkZHMgZmVlZGJhY2sgYXMgc2Vjb25kIGFyZ3VtZW50IHRvIHVzaW5nIGNhbGxiYWNrLCBpZiBwcmVzZW50XG5cdFx0XHR1c2luZyA9IGZ1bmN0aW9uKCBwcm9wcyApIHtcblx0XHRcdFx0dmFyIGxlZnQgPSB0YXJnZXRPZmZzZXQubGVmdCAtIHBvc2l0aW9uLmxlZnQsXG5cdFx0XHRcdFx0cmlnaHQgPSBsZWZ0ICsgdGFyZ2V0V2lkdGggLSBlbGVtV2lkdGgsXG5cdFx0XHRcdFx0dG9wID0gdGFyZ2V0T2Zmc2V0LnRvcCAtIHBvc2l0aW9uLnRvcCxcblx0XHRcdFx0XHRib3R0b20gPSB0b3AgKyB0YXJnZXRIZWlnaHQgLSBlbGVtSGVpZ2h0LFxuXHRcdFx0XHRcdGZlZWRiYWNrID0ge1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiB7XG5cdFx0XHRcdFx0XHRcdGVsZW1lbnQ6IHRhcmdldCxcblx0XHRcdFx0XHRcdFx0bGVmdDogdGFyZ2V0T2Zmc2V0LmxlZnQsXG5cdFx0XHRcdFx0XHRcdHRvcDogdGFyZ2V0T2Zmc2V0LnRvcCxcblx0XHRcdFx0XHRcdFx0d2lkdGg6IHRhcmdldFdpZHRoLFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IHRhcmdldEhlaWdodFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGVsZW1lbnQ6IHtcblx0XHRcdFx0XHRcdFx0ZWxlbWVudDogZWxlbSxcblx0XHRcdFx0XHRcdFx0bGVmdDogcG9zaXRpb24ubGVmdCxcblx0XHRcdFx0XHRcdFx0dG9wOiBwb3NpdGlvbi50b3AsXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiBlbGVtV2lkdGgsXG5cdFx0XHRcdFx0XHRcdGhlaWdodDogZWxlbUhlaWdodFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGhvcml6b250YWw6IHJpZ2h0IDwgMCA/IFwibGVmdFwiIDogbGVmdCA+IDAgPyBcInJpZ2h0XCIgOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0dmVydGljYWw6IGJvdHRvbSA8IDAgPyBcInRvcFwiIDogdG9wID4gMCA/IFwiYm90dG9tXCIgOiBcIm1pZGRsZVwiXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKCB0YXJnZXRXaWR0aCA8IGVsZW1XaWR0aCAmJiBhYnMoIGxlZnQgKyByaWdodCApIDwgdGFyZ2V0V2lkdGggKSB7XG5cdFx0XHRcdFx0ZmVlZGJhY2suaG9yaXpvbnRhbCA9IFwiY2VudGVyXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCB0YXJnZXRIZWlnaHQgPCBlbGVtSGVpZ2h0ICYmIGFicyggdG9wICsgYm90dG9tICkgPCB0YXJnZXRIZWlnaHQgKSB7XG5cdFx0XHRcdFx0ZmVlZGJhY2sudmVydGljYWwgPSBcIm1pZGRsZVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggbWF4KCBhYnMoIGxlZnQgKSwgYWJzKCByaWdodCApICkgPiBtYXgoIGFicyggdG9wICksIGFicyggYm90dG9tICkgKSApIHtcblx0XHRcdFx0XHRmZWVkYmFjay5pbXBvcnRhbnQgPSBcImhvcml6b250YWxcIjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmZWVkYmFjay5pbXBvcnRhbnQgPSBcInZlcnRpY2FsXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCB0aGlzLCBwcm9wcywgZmVlZGJhY2sgKTtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZWxlbS5vZmZzZXQoICQuZXh0ZW5kKCBwb3NpdGlvbiwgeyB1c2luZzogdXNpbmcgfSApICk7XG5cdH0gKTtcbn07XG5cbiQudWkucG9zaXRpb24gPSB7XG5cdGZpdDoge1xuXHRcdGxlZnQ6IGZ1bmN0aW9uKCBwb3NpdGlvbiwgZGF0YSApIHtcblx0XHRcdHZhciB3aXRoaW4gPSBkYXRhLndpdGhpbixcblx0XHRcdFx0d2l0aGluT2Zmc2V0ID0gd2l0aGluLmlzV2luZG93ID8gd2l0aGluLnNjcm9sbExlZnQgOiB3aXRoaW4ub2Zmc2V0LmxlZnQsXG5cdFx0XHRcdG91dGVyV2lkdGggPSB3aXRoaW4ud2lkdGgsXG5cdFx0XHRcdGNvbGxpc2lvblBvc0xlZnQgPSBwb3NpdGlvbi5sZWZ0IC0gZGF0YS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LFxuXHRcdFx0XHRvdmVyTGVmdCA9IHdpdGhpbk9mZnNldCAtIGNvbGxpc2lvblBvc0xlZnQsXG5cdFx0XHRcdG92ZXJSaWdodCA9IGNvbGxpc2lvblBvc0xlZnQgKyBkYXRhLmNvbGxpc2lvbldpZHRoIC0gb3V0ZXJXaWR0aCAtIHdpdGhpbk9mZnNldCxcblx0XHRcdFx0bmV3T3ZlclJpZ2h0O1xuXG5cdFx0XHQvLyBFbGVtZW50IGlzIHdpZGVyIHRoYW4gd2l0aGluXG5cdFx0XHRpZiAoIGRhdGEuY29sbGlzaW9uV2lkdGggPiBvdXRlcldpZHRoICkge1xuXG5cdFx0XHRcdC8vIEVsZW1lbnQgaXMgaW5pdGlhbGx5IG92ZXIgdGhlIGxlZnQgc2lkZSBvZiB3aXRoaW5cblx0XHRcdFx0aWYgKCBvdmVyTGVmdCA+IDAgJiYgb3ZlclJpZ2h0IDw9IDAgKSB7XG5cdFx0XHRcdFx0bmV3T3ZlclJpZ2h0ID0gcG9zaXRpb24ubGVmdCArIG92ZXJMZWZ0ICsgZGF0YS5jb2xsaXNpb25XaWR0aCAtIG91dGVyV2lkdGggLVxuXHRcdFx0XHRcdFx0d2l0aGluT2Zmc2V0O1xuXHRcdFx0XHRcdHBvc2l0aW9uLmxlZnQgKz0gb3ZlckxlZnQgLSBuZXdPdmVyUmlnaHQ7XG5cblx0XHRcdFx0Ly8gRWxlbWVudCBpcyBpbml0aWFsbHkgb3ZlciByaWdodCBzaWRlIG9mIHdpdGhpblxuXHRcdFx0XHR9IGVsc2UgaWYgKCBvdmVyUmlnaHQgPiAwICYmIG92ZXJMZWZ0IDw9IDAgKSB7XG5cdFx0XHRcdFx0cG9zaXRpb24ubGVmdCA9IHdpdGhpbk9mZnNldDtcblxuXHRcdFx0XHQvLyBFbGVtZW50IGlzIGluaXRpYWxseSBvdmVyIGJvdGggbGVmdCBhbmQgcmlnaHQgc2lkZXMgb2Ygd2l0aGluXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKCBvdmVyTGVmdCA+IG92ZXJSaWdodCApIHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uLmxlZnQgPSB3aXRoaW5PZmZzZXQgKyBvdXRlcldpZHRoIC0gZGF0YS5jb2xsaXNpb25XaWR0aDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cG9zaXRpb24ubGVmdCA9IHdpdGhpbk9mZnNldDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0Ly8gVG9vIGZhciBsZWZ0IC0+IGFsaWduIHdpdGggbGVmdCBlZGdlXG5cdFx0XHR9IGVsc2UgaWYgKCBvdmVyTGVmdCA+IDAgKSB7XG5cdFx0XHRcdHBvc2l0aW9uLmxlZnQgKz0gb3ZlckxlZnQ7XG5cblx0XHRcdC8vIFRvbyBmYXIgcmlnaHQgLT4gYWxpZ24gd2l0aCByaWdodCBlZGdlXG5cdFx0XHR9IGVsc2UgaWYgKCBvdmVyUmlnaHQgPiAwICkge1xuXHRcdFx0XHRwb3NpdGlvbi5sZWZ0IC09IG92ZXJSaWdodDtcblxuXHRcdFx0Ly8gQWRqdXN0IGJhc2VkIG9uIHBvc2l0aW9uIGFuZCBtYXJnaW5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBvc2l0aW9uLmxlZnQgPSBtYXgoIHBvc2l0aW9uLmxlZnQgLSBjb2xsaXNpb25Qb3NMZWZ0LCBwb3NpdGlvbi5sZWZ0ICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0b3A6IGZ1bmN0aW9uKCBwb3NpdGlvbiwgZGF0YSApIHtcblx0XHRcdHZhciB3aXRoaW4gPSBkYXRhLndpdGhpbixcblx0XHRcdFx0d2l0aGluT2Zmc2V0ID0gd2l0aGluLmlzV2luZG93ID8gd2l0aGluLnNjcm9sbFRvcCA6IHdpdGhpbi5vZmZzZXQudG9wLFxuXHRcdFx0XHRvdXRlckhlaWdodCA9IGRhdGEud2l0aGluLmhlaWdodCxcblx0XHRcdFx0Y29sbGlzaW9uUG9zVG9wID0gcG9zaXRpb24udG9wIC0gZGF0YS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsXG5cdFx0XHRcdG92ZXJUb3AgPSB3aXRoaW5PZmZzZXQgLSBjb2xsaXNpb25Qb3NUb3AsXG5cdFx0XHRcdG92ZXJCb3R0b20gPSBjb2xsaXNpb25Qb3NUb3AgKyBkYXRhLmNvbGxpc2lvbkhlaWdodCAtIG91dGVySGVpZ2h0IC0gd2l0aGluT2Zmc2V0LFxuXHRcdFx0XHRuZXdPdmVyQm90dG9tO1xuXG5cdFx0XHQvLyBFbGVtZW50IGlzIHRhbGxlciB0aGFuIHdpdGhpblxuXHRcdFx0aWYgKCBkYXRhLmNvbGxpc2lvbkhlaWdodCA+IG91dGVySGVpZ2h0ICkge1xuXG5cdFx0XHRcdC8vIEVsZW1lbnQgaXMgaW5pdGlhbGx5IG92ZXIgdGhlIHRvcCBvZiB3aXRoaW5cblx0XHRcdFx0aWYgKCBvdmVyVG9wID4gMCAmJiBvdmVyQm90dG9tIDw9IDAgKSB7XG5cdFx0XHRcdFx0bmV3T3ZlckJvdHRvbSA9IHBvc2l0aW9uLnRvcCArIG92ZXJUb3AgKyBkYXRhLmNvbGxpc2lvbkhlaWdodCAtIG91dGVySGVpZ2h0IC1cblx0XHRcdFx0XHRcdHdpdGhpbk9mZnNldDtcblx0XHRcdFx0XHRwb3NpdGlvbi50b3AgKz0gb3ZlclRvcCAtIG5ld092ZXJCb3R0b207XG5cblx0XHRcdFx0Ly8gRWxlbWVudCBpcyBpbml0aWFsbHkgb3ZlciBib3R0b20gb2Ygd2l0aGluXG5cdFx0XHRcdH0gZWxzZSBpZiAoIG92ZXJCb3R0b20gPiAwICYmIG92ZXJUb3AgPD0gMCApIHtcblx0XHRcdFx0XHRwb3NpdGlvbi50b3AgPSB3aXRoaW5PZmZzZXQ7XG5cblx0XHRcdFx0Ly8gRWxlbWVudCBpcyBpbml0aWFsbHkgb3ZlciBib3RoIHRvcCBhbmQgYm90dG9tIG9mIHdpdGhpblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICggb3ZlclRvcCA+IG92ZXJCb3R0b20gKSB7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbi50b3AgPSB3aXRoaW5PZmZzZXQgKyBvdXRlckhlaWdodCAtIGRhdGEuY29sbGlzaW9uSGVpZ2h0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbi50b3AgPSB3aXRoaW5PZmZzZXQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdC8vIFRvbyBmYXIgdXAgLT4gYWxpZ24gd2l0aCB0b3Bcblx0XHRcdH0gZWxzZSBpZiAoIG92ZXJUb3AgPiAwICkge1xuXHRcdFx0XHRwb3NpdGlvbi50b3AgKz0gb3ZlclRvcDtcblxuXHRcdFx0Ly8gVG9vIGZhciBkb3duIC0+IGFsaWduIHdpdGggYm90dG9tIGVkZ2Vcblx0XHRcdH0gZWxzZSBpZiAoIG92ZXJCb3R0b20gPiAwICkge1xuXHRcdFx0XHRwb3NpdGlvbi50b3AgLT0gb3ZlckJvdHRvbTtcblxuXHRcdFx0Ly8gQWRqdXN0IGJhc2VkIG9uIHBvc2l0aW9uIGFuZCBtYXJnaW5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBvc2l0aW9uLnRvcCA9IG1heCggcG9zaXRpb24udG9wIC0gY29sbGlzaW9uUG9zVG9wLCBwb3NpdGlvbi50b3AgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGZsaXA6IHtcblx0XHRsZWZ0OiBmdW5jdGlvbiggcG9zaXRpb24sIGRhdGEgKSB7XG5cdFx0XHR2YXIgd2l0aGluID0gZGF0YS53aXRoaW4sXG5cdFx0XHRcdHdpdGhpbk9mZnNldCA9IHdpdGhpbi5vZmZzZXQubGVmdCArIHdpdGhpbi5zY3JvbGxMZWZ0LFxuXHRcdFx0XHRvdXRlcldpZHRoID0gd2l0aGluLndpZHRoLFxuXHRcdFx0XHRvZmZzZXRMZWZ0ID0gd2l0aGluLmlzV2luZG93ID8gd2l0aGluLnNjcm9sbExlZnQgOiB3aXRoaW4ub2Zmc2V0LmxlZnQsXG5cdFx0XHRcdGNvbGxpc2lvblBvc0xlZnQgPSBwb3NpdGlvbi5sZWZ0IC0gZGF0YS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LFxuXHRcdFx0XHRvdmVyTGVmdCA9IGNvbGxpc2lvblBvc0xlZnQgLSBvZmZzZXRMZWZ0LFxuXHRcdFx0XHRvdmVyUmlnaHQgPSBjb2xsaXNpb25Qb3NMZWZ0ICsgZGF0YS5jb2xsaXNpb25XaWR0aCAtIG91dGVyV2lkdGggLSBvZmZzZXRMZWZ0LFxuXHRcdFx0XHRteU9mZnNldCA9IGRhdGEubXlbIDAgXSA9PT0gXCJsZWZ0XCIgP1xuXHRcdFx0XHRcdC1kYXRhLmVsZW1XaWR0aCA6XG5cdFx0XHRcdFx0ZGF0YS5teVsgMCBdID09PSBcInJpZ2h0XCIgP1xuXHRcdFx0XHRcdFx0ZGF0YS5lbGVtV2lkdGggOlxuXHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0YXRPZmZzZXQgPSBkYXRhLmF0WyAwIF0gPT09IFwibGVmdFwiID9cblx0XHRcdFx0XHRkYXRhLnRhcmdldFdpZHRoIDpcblx0XHRcdFx0XHRkYXRhLmF0WyAwIF0gPT09IFwicmlnaHRcIiA/XG5cdFx0XHRcdFx0XHQtZGF0YS50YXJnZXRXaWR0aCA6XG5cdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRvZmZzZXQgPSAtMiAqIGRhdGEub2Zmc2V0WyAwIF0sXG5cdFx0XHRcdG5ld092ZXJSaWdodCxcblx0XHRcdFx0bmV3T3ZlckxlZnQ7XG5cblx0XHRcdGlmICggb3ZlckxlZnQgPCAwICkge1xuXHRcdFx0XHRuZXdPdmVyUmlnaHQgPSBwb3NpdGlvbi5sZWZ0ICsgbXlPZmZzZXQgKyBhdE9mZnNldCArIG9mZnNldCArIGRhdGEuY29sbGlzaW9uV2lkdGggLVxuXHRcdFx0XHRcdG91dGVyV2lkdGggLSB3aXRoaW5PZmZzZXQ7XG5cdFx0XHRcdGlmICggbmV3T3ZlclJpZ2h0IDwgMCB8fCBuZXdPdmVyUmlnaHQgPCBhYnMoIG92ZXJMZWZ0ICkgKSB7XG5cdFx0XHRcdFx0cG9zaXRpb24ubGVmdCArPSBteU9mZnNldCArIGF0T2Zmc2V0ICsgb2Zmc2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKCBvdmVyUmlnaHQgPiAwICkge1xuXHRcdFx0XHRuZXdPdmVyTGVmdCA9IHBvc2l0aW9uLmxlZnQgLSBkYXRhLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQgKyBteU9mZnNldCArXG5cdFx0XHRcdFx0YXRPZmZzZXQgKyBvZmZzZXQgLSBvZmZzZXRMZWZ0O1xuXHRcdFx0XHRpZiAoIG5ld092ZXJMZWZ0ID4gMCB8fCBhYnMoIG5ld092ZXJMZWZ0ICkgPCBvdmVyUmlnaHQgKSB7XG5cdFx0XHRcdFx0cG9zaXRpb24ubGVmdCArPSBteU9mZnNldCArIGF0T2Zmc2V0ICsgb2Zmc2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHR0b3A6IGZ1bmN0aW9uKCBwb3NpdGlvbiwgZGF0YSApIHtcblx0XHRcdHZhciB3aXRoaW4gPSBkYXRhLndpdGhpbixcblx0XHRcdFx0d2l0aGluT2Zmc2V0ID0gd2l0aGluLm9mZnNldC50b3AgKyB3aXRoaW4uc2Nyb2xsVG9wLFxuXHRcdFx0XHRvdXRlckhlaWdodCA9IHdpdGhpbi5oZWlnaHQsXG5cdFx0XHRcdG9mZnNldFRvcCA9IHdpdGhpbi5pc1dpbmRvdyA/IHdpdGhpbi5zY3JvbGxUb3AgOiB3aXRoaW4ub2Zmc2V0LnRvcCxcblx0XHRcdFx0Y29sbGlzaW9uUG9zVG9wID0gcG9zaXRpb24udG9wIC0gZGF0YS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AsXG5cdFx0XHRcdG92ZXJUb3AgPSBjb2xsaXNpb25Qb3NUb3AgLSBvZmZzZXRUb3AsXG5cdFx0XHRcdG92ZXJCb3R0b20gPSBjb2xsaXNpb25Qb3NUb3AgKyBkYXRhLmNvbGxpc2lvbkhlaWdodCAtIG91dGVySGVpZ2h0IC0gb2Zmc2V0VG9wLFxuXHRcdFx0XHR0b3AgPSBkYXRhLm15WyAxIF0gPT09IFwidG9wXCIsXG5cdFx0XHRcdG15T2Zmc2V0ID0gdG9wID9cblx0XHRcdFx0XHQtZGF0YS5lbGVtSGVpZ2h0IDpcblx0XHRcdFx0XHRkYXRhLm15WyAxIF0gPT09IFwiYm90dG9tXCIgP1xuXHRcdFx0XHRcdFx0ZGF0YS5lbGVtSGVpZ2h0IDpcblx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdGF0T2Zmc2V0ID0gZGF0YS5hdFsgMSBdID09PSBcInRvcFwiID9cblx0XHRcdFx0XHRkYXRhLnRhcmdldEhlaWdodCA6XG5cdFx0XHRcdFx0ZGF0YS5hdFsgMSBdID09PSBcImJvdHRvbVwiID9cblx0XHRcdFx0XHRcdC1kYXRhLnRhcmdldEhlaWdodCA6XG5cdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRvZmZzZXQgPSAtMiAqIGRhdGEub2Zmc2V0WyAxIF0sXG5cdFx0XHRcdG5ld092ZXJUb3AsXG5cdFx0XHRcdG5ld092ZXJCb3R0b207XG5cdFx0XHRpZiAoIG92ZXJUb3AgPCAwICkge1xuXHRcdFx0XHRuZXdPdmVyQm90dG9tID0gcG9zaXRpb24udG9wICsgbXlPZmZzZXQgKyBhdE9mZnNldCArIG9mZnNldCArIGRhdGEuY29sbGlzaW9uSGVpZ2h0IC1cblx0XHRcdFx0XHRvdXRlckhlaWdodCAtIHdpdGhpbk9mZnNldDtcblx0XHRcdFx0aWYgKCBuZXdPdmVyQm90dG9tIDwgMCB8fCBuZXdPdmVyQm90dG9tIDwgYWJzKCBvdmVyVG9wICkgKSB7XG5cdFx0XHRcdFx0cG9zaXRpb24udG9wICs9IG15T2Zmc2V0ICsgYXRPZmZzZXQgKyBvZmZzZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoIG92ZXJCb3R0b20gPiAwICkge1xuXHRcdFx0XHRuZXdPdmVyVG9wID0gcG9zaXRpb24udG9wIC0gZGF0YS5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3AgKyBteU9mZnNldCArIGF0T2Zmc2V0ICtcblx0XHRcdFx0XHRvZmZzZXQgLSBvZmZzZXRUb3A7XG5cdFx0XHRcdGlmICggbmV3T3ZlclRvcCA+IDAgfHwgYWJzKCBuZXdPdmVyVG9wICkgPCBvdmVyQm90dG9tICkge1xuXHRcdFx0XHRcdHBvc2l0aW9uLnRvcCArPSBteU9mZnNldCArIGF0T2Zmc2V0ICsgb2Zmc2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRmbGlwZml0OiB7XG5cdFx0bGVmdDogZnVuY3Rpb24oKSB7XG5cdFx0XHQkLnVpLnBvc2l0aW9uLmZsaXAubGVmdC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHQkLnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9LFxuXHRcdHRvcDogZnVuY3Rpb24oKSB7XG5cdFx0XHQkLnVpLnBvc2l0aW9uLmZsaXAudG9wLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdCQudWkucG9zaXRpb24uZml0LnRvcC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fVxuXHR9XG59O1xuXG59ICkoKTtcblxudmFyIHBvc2l0aW9uID0gJC51aS5wb3NpdGlvbjtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSA6ZGF0YSAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogOmRhdGEgU2VsZWN0b3Jcbi8vPj5ncm91cDogQ29yZVxuLy8+PmRlc2NyaXB0aW9uOiBTZWxlY3RzIGVsZW1lbnRzIHdoaWNoIGhhdmUgZGF0YSBzdG9yZWQgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vZGF0YS1zZWxlY3Rvci9cblxuXG52YXIgZGF0YSA9ICQuZXh0ZW5kKCAkLmV4cHJbIFwiOlwiIF0sIHtcblx0ZGF0YTogJC5leHByLmNyZWF0ZVBzZXVkbyA/XG5cdFx0JC5leHByLmNyZWF0ZVBzZXVkbyggZnVuY3Rpb24oIGRhdGFOYW1lICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gISEkLmRhdGEoIGVsZW0sIGRhdGFOYW1lICk7XG5cdFx0XHR9O1xuXHRcdH0gKSA6XG5cblx0XHQvLyBTdXBwb3J0OiBqUXVlcnkgPDEuOFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBpLCBtYXRjaCApIHtcblx0XHRcdHJldHVybiAhISQuZGF0YSggZWxlbSwgbWF0Y2hbIDMgXSApO1xuXHRcdH1cbn0gKTtcblxuLyohXG4gKiBqUXVlcnkgVUkgRGlzYWJsZSBTZWxlY3Rpb24gMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IGRpc2FibGVTZWxlY3Rpb25cbi8vPj5ncm91cDogQ29yZVxuLy8+PmRlc2NyaXB0aW9uOiBEaXNhYmxlIHNlbGVjdGlvbiBvZiB0ZXh0IGNvbnRlbnQgd2l0aGluIHRoZSBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9kaXNhYmxlU2VsZWN0aW9uL1xuXG4vLyBUaGlzIGZpbGUgaXMgZGVwcmVjYXRlZFxuXG5cbnZhciBkaXNhYmxlU2VsZWN0aW9uID0gJC5mbi5leHRlbmQoIHtcblx0ZGlzYWJsZVNlbGVjdGlvbjogKCBmdW5jdGlvbigpIHtcblx0XHR2YXIgZXZlbnRUeXBlID0gXCJvbnNlbGVjdHN0YXJ0XCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApID9cblx0XHRcdFwic2VsZWN0c3RhcnRcIiA6XG5cdFx0XHRcIm1vdXNlZG93blwiO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMub24oIGV2ZW50VHlwZSArIFwiLnVpLWRpc2FibGVTZWxlY3Rpb25cIiwgZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fSApO1xuXHRcdH07XG5cdH0gKSgpLFxuXG5cdGVuYWJsZVNlbGVjdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMub2ZmKCBcIi51aS1kaXNhYmxlU2VsZWN0aW9uXCIgKTtcblx0fVxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIEVmZmVjdHMgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IEVmZmVjdHMgQ29yZVxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLyBqc2NzOmRpc2FibGUgbWF4aW11bUxpbmVMZW5ndGhcbi8vPj5kZXNjcmlwdGlvbjogRXh0ZW5kcyB0aGUgaW50ZXJuYWwgalF1ZXJ5IGVmZmVjdHMuIEluY2x1ZGVzIG1vcnBoaW5nIGFuZCBlYXNpbmcuIFJlcXVpcmVkIGJ5IGFsbCBvdGhlciBlZmZlY3RzLlxuLy8ganNjczplbmFibGUgbWF4aW11bUxpbmVMZW5ndGhcbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9jYXRlZ29yeS9lZmZlY3RzLWNvcmUvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vZWZmZWN0L1xuXG5cblxudmFyIGRhdGFTcGFjZSA9IFwidWktZWZmZWN0cy1cIixcblx0ZGF0YVNwYWNlU3R5bGUgPSBcInVpLWVmZmVjdHMtc3R5bGVcIixcblx0ZGF0YVNwYWNlQW5pbWF0ZWQgPSBcInVpLWVmZmVjdHMtYW5pbWF0ZWRcIixcblxuXHQvLyBDcmVhdGUgYSBsb2NhbCBqUXVlcnkgYmVjYXVzZSBqUXVlcnkgQ29sb3IgcmVsaWVzIG9uIGl0IGFuZCB0aGVcblx0Ly8gZ2xvYmFsIG1heSBub3QgZXhpc3Qgd2l0aCBBTUQgYW5kIGEgY3VzdG9tIGJ1aWxkICgjMTAxOTkpXG5cdGpRdWVyeSA9ICQ7XG5cbiQuZWZmZWN0cyA9IHtcblx0ZWZmZWN0OiB7fVxufTtcblxuLyohXG4gKiBqUXVlcnkgQ29sb3IgQW5pbWF0aW9ucyB2Mi4xLjJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5LWNvbG9yXG4gKlxuICogQ29weXJpZ2h0IDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IFdlZCBKYW4gMTYgMDg6NDc6MDkgMjAxMyAtMDYwMFxuICovXG4oIGZ1bmN0aW9uKCBqUXVlcnksIHVuZGVmaW5lZCApIHtcblxuXHR2YXIgc3RlcEhvb2tzID0gXCJiYWNrZ3JvdW5kQ29sb3IgYm9yZGVyQm90dG9tQ29sb3IgYm9yZGVyTGVmdENvbG9yIGJvcmRlclJpZ2h0Q29sb3IgXCIgK1xuXHRcdFwiYm9yZGVyVG9wQ29sb3IgY29sb3IgY29sdW1uUnVsZUNvbG9yIG91dGxpbmVDb2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9yIHRleHRFbXBoYXNpc0NvbG9yXCIsXG5cblx0Ly8gUGx1c2VxdWFscyB0ZXN0IGZvciArPSAxMDAgLT0gMTAwXG5cdHJwbHVzZXF1YWxzID0gL14oW1xcLStdKT1cXHMqKFxcZCtcXC4/XFxkKikvLFxuXG5cdC8vIEEgc2V0IG9mIFJFJ3MgdGhhdCBjYW4gbWF0Y2ggc3RyaW5ncyBhbmQgZ2VuZXJhdGUgY29sb3IgdHVwbGVzLlxuXHRzdHJpbmdQYXJzZXJzID0gWyB7XG5cdFx0XHRyZTogL3JnYmE/XFwoXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKixcXHMqKFxcZHsxLDN9KVxccyooPzosXFxzKihcXGQ/KD86XFwuXFxkKyk/KVxccyopP1xcKS8sXG5cdFx0XHRwYXJzZTogZnVuY3Rpb24oIGV4ZWNSZXN1bHQgKSB7XG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0ZXhlY1Jlc3VsdFsgMSBdLFxuXHRcdFx0XHRcdGV4ZWNSZXN1bHRbIDIgXSxcblx0XHRcdFx0XHRleGVjUmVzdWx0WyAzIF0sXG5cdFx0XHRcdFx0ZXhlY1Jlc3VsdFsgNCBdXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0fSwge1xuXHRcdFx0cmU6IC9yZ2JhP1xcKFxccyooXFxkKyg/OlxcLlxcZCspPylcXCVcXHMqLFxccyooXFxkKyg/OlxcLlxcZCspPylcXCVcXHMqLFxccyooXFxkKyg/OlxcLlxcZCspPylcXCVcXHMqKD86LFxccyooXFxkPyg/OlxcLlxcZCspPylcXHMqKT9cXCkvLFxuXHRcdFx0cGFyc2U6IGZ1bmN0aW9uKCBleGVjUmVzdWx0ICkge1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdGV4ZWNSZXN1bHRbIDEgXSAqIDIuNTUsXG5cdFx0XHRcdFx0ZXhlY1Jlc3VsdFsgMiBdICogMi41NSxcblx0XHRcdFx0XHRleGVjUmVzdWx0WyAzIF0gKiAyLjU1LFxuXHRcdFx0XHRcdGV4ZWNSZXN1bHRbIDQgXVxuXHRcdFx0XHRdO1xuXHRcdFx0fVxuXHRcdH0sIHtcblxuXHRcdFx0Ly8gVGhpcyByZWdleCBpZ25vcmVzIEEtRiBiZWNhdXNlIGl0J3MgY29tcGFyZWQgYWdhaW5zdCBhbiBhbHJlYWR5IGxvd2VyY2FzZWQgc3RyaW5nXG5cdFx0XHRyZTogLyMoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkvLFxuXHRcdFx0cGFyc2U6IGZ1bmN0aW9uKCBleGVjUmVzdWx0ICkge1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHBhcnNlSW50KCBleGVjUmVzdWx0WyAxIF0sIDE2ICksXG5cdFx0XHRcdFx0cGFyc2VJbnQoIGV4ZWNSZXN1bHRbIDIgXSwgMTYgKSxcblx0XHRcdFx0XHRwYXJzZUludCggZXhlY1Jlc3VsdFsgMyBdLCAxNiApXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0fSwge1xuXG5cdFx0XHQvLyBUaGlzIHJlZ2V4IGlnbm9yZXMgQS1GIGJlY2F1c2UgaXQncyBjb21wYXJlZCBhZ2FpbnN0IGFuIGFscmVhZHkgbG93ZXJjYXNlZCBzdHJpbmdcblx0XHRcdHJlOiAvIyhbYS1mMC05XSkoW2EtZjAtOV0pKFthLWYwLTldKS8sXG5cdFx0XHRwYXJzZTogZnVuY3Rpb24oIGV4ZWNSZXN1bHQgKSB7XG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0cGFyc2VJbnQoIGV4ZWNSZXN1bHRbIDEgXSArIGV4ZWNSZXN1bHRbIDEgXSwgMTYgKSxcblx0XHRcdFx0XHRwYXJzZUludCggZXhlY1Jlc3VsdFsgMiBdICsgZXhlY1Jlc3VsdFsgMiBdLCAxNiApLFxuXHRcdFx0XHRcdHBhcnNlSW50KCBleGVjUmVzdWx0WyAzIF0gKyBleGVjUmVzdWx0WyAzIF0sIDE2IClcblx0XHRcdFx0XTtcblx0XHRcdH1cblx0XHR9LCB7XG5cdFx0XHRyZTogL2hzbGE/XFwoXFxzKihcXGQrKD86XFwuXFxkKyk/KVxccyosXFxzKihcXGQrKD86XFwuXFxkKyk/KVxcJVxccyosXFxzKihcXGQrKD86XFwuXFxkKyk/KVxcJVxccyooPzosXFxzKihcXGQ/KD86XFwuXFxkKyk/KVxccyopP1xcKS8sXG5cdFx0XHRzcGFjZTogXCJoc2xhXCIsXG5cdFx0XHRwYXJzZTogZnVuY3Rpb24oIGV4ZWNSZXN1bHQgKSB7XG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0ZXhlY1Jlc3VsdFsgMSBdLFxuXHRcdFx0XHRcdGV4ZWNSZXN1bHRbIDIgXSAvIDEwMCxcblx0XHRcdFx0XHRleGVjUmVzdWx0WyAzIF0gLyAxMDAsXG5cdFx0XHRcdFx0ZXhlY1Jlc3VsdFsgNCBdXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0fSBdLFxuXG5cdC8vIEpRdWVyeS5Db2xvciggKVxuXHRjb2xvciA9IGpRdWVyeS5Db2xvciA9IGZ1bmN0aW9uKCBjb2xvciwgZ3JlZW4sIGJsdWUsIGFscGhhICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkNvbG9yLmZuLnBhcnNlKCBjb2xvciwgZ3JlZW4sIGJsdWUsIGFscGhhICk7XG5cdH0sXG5cdHNwYWNlcyA9IHtcblx0XHRyZ2JhOiB7XG5cdFx0XHRwcm9wczoge1xuXHRcdFx0XHRyZWQ6IHtcblx0XHRcdFx0XHRpZHg6IDAsXG5cdFx0XHRcdFx0dHlwZTogXCJieXRlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Z3JlZW46IHtcblx0XHRcdFx0XHRpZHg6IDEsXG5cdFx0XHRcdFx0dHlwZTogXCJieXRlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Ymx1ZToge1xuXHRcdFx0XHRcdGlkeDogMixcblx0XHRcdFx0XHR0eXBlOiBcImJ5dGVcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGhzbGE6IHtcblx0XHRcdHByb3BzOiB7XG5cdFx0XHRcdGh1ZToge1xuXHRcdFx0XHRcdGlkeDogMCxcblx0XHRcdFx0XHR0eXBlOiBcImRlZ3JlZXNcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzYXR1cmF0aW9uOiB7XG5cdFx0XHRcdFx0aWR4OiAxLFxuXHRcdFx0XHRcdHR5cGU6IFwicGVyY2VudFwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxpZ2h0bmVzczoge1xuXHRcdFx0XHRcdGlkeDogMixcblx0XHRcdFx0XHR0eXBlOiBcInBlcmNlbnRcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRwcm9wVHlwZXMgPSB7XG5cdFx0XCJieXRlXCI6IHtcblx0XHRcdGZsb29yOiB0cnVlLFxuXHRcdFx0bWF4OiAyNTVcblx0XHR9LFxuXHRcdFwicGVyY2VudFwiOiB7XG5cdFx0XHRtYXg6IDFcblx0XHR9LFxuXHRcdFwiZGVncmVlc1wiOiB7XG5cdFx0XHRtb2Q6IDM2MCxcblx0XHRcdGZsb29yOiB0cnVlXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0ID0gY29sb3Iuc3VwcG9ydCA9IHt9LFxuXG5cdC8vIEVsZW1lbnQgZm9yIHN1cHBvcnQgdGVzdHNcblx0c3VwcG9ydEVsZW0gPSBqUXVlcnkoIFwiPHA+XCIgKVsgMCBdLFxuXG5cdC8vIENvbG9ycyA9IGpRdWVyeS5Db2xvci5uYW1lc1xuXHRjb2xvcnMsXG5cblx0Ly8gTG9jYWwgYWxpYXNlcyBvZiBmdW5jdGlvbnMgY2FsbGVkIG9mdGVuXG5cdGVhY2ggPSBqUXVlcnkuZWFjaDtcblxuLy8gRGV0ZXJtaW5lIHJnYmEgc3VwcG9ydCBpbW1lZGlhdGVseVxuc3VwcG9ydEVsZW0uc3R5bGUuY3NzVGV4dCA9IFwiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEsMSwxLC41KVwiO1xuc3VwcG9ydC5yZ2JhID0gc3VwcG9ydEVsZW0uc3R5bGUuYmFja2dyb3VuZENvbG9yLmluZGV4T2YoIFwicmdiYVwiICkgPiAtMTtcblxuLy8gRGVmaW5lIGNhY2hlIG5hbWUgYW5kIGFscGhhIHByb3BlcnRpZXNcbi8vIGZvciByZ2JhIGFuZCBoc2xhIHNwYWNlc1xuZWFjaCggc3BhY2VzLCBmdW5jdGlvbiggc3BhY2VOYW1lLCBzcGFjZSApIHtcblx0c3BhY2UuY2FjaGUgPSBcIl9cIiArIHNwYWNlTmFtZTtcblx0c3BhY2UucHJvcHMuYWxwaGEgPSB7XG5cdFx0aWR4OiAzLFxuXHRcdHR5cGU6IFwicGVyY2VudFwiLFxuXHRcdGRlZjogMVxuXHR9O1xufSApO1xuXG5mdW5jdGlvbiBjbGFtcCggdmFsdWUsIHByb3AsIGFsbG93RW1wdHkgKSB7XG5cdHZhciB0eXBlID0gcHJvcFR5cGVzWyBwcm9wLnR5cGUgXSB8fCB7fTtcblxuXHRpZiAoIHZhbHVlID09IG51bGwgKSB7XG5cdFx0cmV0dXJuICggYWxsb3dFbXB0eSB8fCAhcHJvcC5kZWYgKSA/IG51bGwgOiBwcm9wLmRlZjtcblx0fVxuXG5cdC8vIH5+IGlzIGFuIHNob3J0IHdheSBvZiBkb2luZyBmbG9vciBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuXHR2YWx1ZSA9IHR5cGUuZmxvb3IgPyB+fnZhbHVlIDogcGFyc2VGbG9hdCggdmFsdWUgKTtcblxuXHQvLyBJRSB3aWxsIHBhc3MgaW4gZW1wdHkgc3RyaW5ncyBhcyB2YWx1ZSBmb3IgYWxwaGEsXG5cdC8vIHdoaWNoIHdpbGwgaGl0IHRoaXMgY2FzZVxuXHRpZiAoIGlzTmFOKCB2YWx1ZSApICkge1xuXHRcdHJldHVybiBwcm9wLmRlZjtcblx0fVxuXG5cdGlmICggdHlwZS5tb2QgKSB7XG5cblx0XHQvLyBXZSBhZGQgbW9kIGJlZm9yZSBtb2RkaW5nIHRvIG1ha2Ugc3VyZSB0aGF0IG5lZ2F0aXZlcyB2YWx1ZXNcblx0XHQvLyBnZXQgY29udmVydGVkIHByb3Blcmx5OiAtMTAgLT4gMzUwXG5cdFx0cmV0dXJuICggdmFsdWUgKyB0eXBlLm1vZCApICUgdHlwZS5tb2Q7XG5cdH1cblxuXHQvLyBGb3Igbm93IGFsbCBwcm9wZXJ0eSB0eXBlcyB3aXRob3V0IG1vZCBoYXZlIG1pbiBhbmQgbWF4XG5cdHJldHVybiAwID4gdmFsdWUgPyAwIDogdHlwZS5tYXggPCB2YWx1ZSA/IHR5cGUubWF4IDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhcnNlKCBzdHJpbmcgKSB7XG5cdHZhciBpbnN0ID0gY29sb3IoKSxcblx0XHRyZ2JhID0gaW5zdC5fcmdiYSA9IFtdO1xuXG5cdHN0cmluZyA9IHN0cmluZy50b0xvd2VyQ2FzZSgpO1xuXG5cdGVhY2goIHN0cmluZ1BhcnNlcnMsIGZ1bmN0aW9uKCBpLCBwYXJzZXIgKSB7XG5cdFx0dmFyIHBhcnNlZCxcblx0XHRcdG1hdGNoID0gcGFyc2VyLnJlLmV4ZWMoIHN0cmluZyApLFxuXHRcdFx0dmFsdWVzID0gbWF0Y2ggJiYgcGFyc2VyLnBhcnNlKCBtYXRjaCApLFxuXHRcdFx0c3BhY2VOYW1lID0gcGFyc2VyLnNwYWNlIHx8IFwicmdiYVwiO1xuXG5cdFx0aWYgKCB2YWx1ZXMgKSB7XG5cdFx0XHRwYXJzZWQgPSBpbnN0WyBzcGFjZU5hbWUgXSggdmFsdWVzICk7XG5cblx0XHRcdC8vIElmIHRoaXMgd2FzIGFuIHJnYmEgcGFyc2UgdGhlIGFzc2lnbm1lbnQgbWlnaHQgaGFwcGVuIHR3aWNlXG5cdFx0XHQvLyBvaCB3ZWxsLi4uLlxuXHRcdFx0aW5zdFsgc3BhY2VzWyBzcGFjZU5hbWUgXS5jYWNoZSBdID0gcGFyc2VkWyBzcGFjZXNbIHNwYWNlTmFtZSBdLmNhY2hlIF07XG5cdFx0XHRyZ2JhID0gaW5zdC5fcmdiYSA9IHBhcnNlZC5fcmdiYTtcblxuXHRcdFx0Ly8gRXhpdCBlYWNoKCBzdHJpbmdQYXJzZXJzICkgaGVyZSBiZWNhdXNlIHdlIG1hdGNoZWRcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0gKTtcblxuXHQvLyBGb3VuZCBhIHN0cmluZ1BhcnNlciB0aGF0IGhhbmRsZWQgaXRcblx0aWYgKCByZ2JhLmxlbmd0aCApIHtcblxuXHRcdC8vIElmIHRoaXMgY2FtZSBmcm9tIGEgcGFyc2VkIHN0cmluZywgZm9yY2UgXCJ0cmFuc3BhcmVudFwiIHdoZW4gYWxwaGEgaXMgMFxuXHRcdC8vIGNocm9tZSwgKGFuZCBtYXliZSBvdGhlcnMpIHJldHVybiBcInRyYW5zcGFyZW50XCIgYXMgcmdiYSgwLDAsMCwwKVxuXHRcdGlmICggcmdiYS5qb2luKCkgPT09IFwiMCwwLDAsMFwiICkge1xuXHRcdFx0alF1ZXJ5LmV4dGVuZCggcmdiYSwgY29sb3JzLnRyYW5zcGFyZW50ICk7XG5cdFx0fVxuXHRcdHJldHVybiBpbnN0O1xuXHR9XG5cblx0Ly8gTmFtZWQgY29sb3JzXG5cdHJldHVybiBjb2xvcnNbIHN0cmluZyBdO1xufVxuXG5jb2xvci5mbiA9IGpRdWVyeS5leHRlbmQoIGNvbG9yLnByb3RvdHlwZSwge1xuXHRwYXJzZTogZnVuY3Rpb24oIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhICkge1xuXHRcdGlmICggcmVkID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHR0aGlzLl9yZ2JhID0gWyBudWxsLCBudWxsLCBudWxsLCBudWxsIF07XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cdFx0aWYgKCByZWQuanF1ZXJ5IHx8IHJlZC5ub2RlVHlwZSApIHtcblx0XHRcdHJlZCA9IGpRdWVyeSggcmVkICkuY3NzKCBncmVlbiApO1xuXHRcdFx0Z3JlZW4gPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0dmFyIGluc3QgPSB0aGlzLFxuXHRcdFx0dHlwZSA9IGpRdWVyeS50eXBlKCByZWQgKSxcblx0XHRcdHJnYmEgPSB0aGlzLl9yZ2JhID0gW107XG5cblx0XHQvLyBNb3JlIHRoYW4gMSBhcmd1bWVudCBzcGVjaWZpZWQgLSBhc3N1bWUgKCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSApXG5cdFx0aWYgKCBncmVlbiAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmVkID0gWyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSBdO1xuXHRcdFx0dHlwZSA9IFwiYXJyYXlcIjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wYXJzZSggc3RyaW5nUGFyc2UoIHJlZCApIHx8IGNvbG9ycy5fZGVmYXVsdCApO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZSA9PT0gXCJhcnJheVwiICkge1xuXHRcdFx0ZWFjaCggc3BhY2VzLnJnYmEucHJvcHMsIGZ1bmN0aW9uKCBrZXksIHByb3AgKSB7XG5cdFx0XHRcdHJnYmFbIHByb3AuaWR4IF0gPSBjbGFtcCggcmVkWyBwcm9wLmlkeCBdLCBwcm9wICk7XG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHRpZiAoIHR5cGUgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRpZiAoIHJlZCBpbnN0YW5jZW9mIGNvbG9yICkge1xuXHRcdFx0XHRlYWNoKCBzcGFjZXMsIGZ1bmN0aW9uKCBzcGFjZU5hbWUsIHNwYWNlICkge1xuXHRcdFx0XHRcdGlmICggcmVkWyBzcGFjZS5jYWNoZSBdICkge1xuXHRcdFx0XHRcdFx0aW5zdFsgc3BhY2UuY2FjaGUgXSA9IHJlZFsgc3BhY2UuY2FjaGUgXS5zbGljZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWFjaCggc3BhY2VzLCBmdW5jdGlvbiggc3BhY2VOYW1lLCBzcGFjZSApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUgPSBzcGFjZS5jYWNoZTtcblx0XHRcdFx0XHRlYWNoKCBzcGFjZS5wcm9wcywgZnVuY3Rpb24oIGtleSwgcHJvcCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIGNhY2hlIGRvZXNuJ3QgZXhpc3QsIGFuZCB3ZSBrbm93IGhvdyB0byBjb252ZXJ0XG5cdFx0XHRcdFx0XHRpZiAoICFpbnN0WyBjYWNoZSBdICYmIHNwYWNlLnRvICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHRoZSB2YWx1ZSB3YXMgbnVsbCwgd2UgZG9uJ3QgbmVlZCB0byBjb3B5IGl0XG5cdFx0XHRcdFx0XHRcdC8vIGlmIHRoZSBrZXkgd2FzIGFscGhhLCB3ZSBkb24ndCBuZWVkIHRvIGNvcHkgaXQgZWl0aGVyXG5cdFx0XHRcdFx0XHRcdGlmICgga2V5ID09PSBcImFscGhhXCIgfHwgcmVkWyBrZXkgXSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpbnN0WyBjYWNoZSBdID0gc3BhY2UudG8oIGluc3QuX3JnYmEgKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHdoZXJlIHdlIGFsbG93IG51bGxzIGZvciBBTEwgcHJvcGVydGllcy5cblx0XHRcdFx0XHRcdC8vIGNhbGwgY2xhbXAgd2l0aCBhbHdheXNBbGxvd0VtcHR5XG5cdFx0XHRcdFx0XHRpbnN0WyBjYWNoZSBdWyBwcm9wLmlkeCBdID0gY2xhbXAoIHJlZFsga2V5IF0sIHByb3AsIHRydWUgKTtcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHQvLyBFdmVyeXRoaW5nIGRlZmluZWQgYnV0IGFscGhhP1xuXHRcdFx0XHRcdGlmICggaW5zdFsgY2FjaGUgXSAmJlxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggbnVsbCwgaW5zdFsgY2FjaGUgXS5zbGljZSggMCwgMyApICkgPCAwICkge1xuXG5cdFx0XHRcdFx0XHQvLyBVc2UgdGhlIGRlZmF1bHQgb2YgMVxuXHRcdFx0XHRcdFx0aW5zdFsgY2FjaGUgXVsgMyBdID0gMTtcblx0XHRcdFx0XHRcdGlmICggc3BhY2UuZnJvbSApIHtcblx0XHRcdFx0XHRcdFx0aW5zdC5fcmdiYSA9IHNwYWNlLmZyb20oIGluc3RbIGNhY2hlIF0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0fSxcblx0aXM6IGZ1bmN0aW9uKCBjb21wYXJlICkge1xuXHRcdHZhciBpcyA9IGNvbG9yKCBjb21wYXJlICksXG5cdFx0XHRzYW1lID0gdHJ1ZSxcblx0XHRcdGluc3QgPSB0aGlzO1xuXG5cdFx0ZWFjaCggc3BhY2VzLCBmdW5jdGlvbiggXywgc3BhY2UgKSB7XG5cdFx0XHR2YXIgbG9jYWxDYWNoZSxcblx0XHRcdFx0aXNDYWNoZSA9IGlzWyBzcGFjZS5jYWNoZSBdO1xuXHRcdFx0aWYgKCBpc0NhY2hlICkge1xuXHRcdFx0XHRsb2NhbENhY2hlID0gaW5zdFsgc3BhY2UuY2FjaGUgXSB8fCBzcGFjZS50byAmJiBzcGFjZS50byggaW5zdC5fcmdiYSApIHx8IFtdO1xuXHRcdFx0XHRlYWNoKCBzcGFjZS5wcm9wcywgZnVuY3Rpb24oIF8sIHByb3AgKSB7XG5cdFx0XHRcdFx0aWYgKCBpc0NhY2hlWyBwcm9wLmlkeCBdICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRzYW1lID0gKCBpc0NhY2hlWyBwcm9wLmlkeCBdID09PSBsb2NhbENhY2hlWyBwcm9wLmlkeCBdICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2FtZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBzYW1lO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gc2FtZTtcblx0fSxcblx0X3NwYWNlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdXNlZCA9IFtdLFxuXHRcdFx0aW5zdCA9IHRoaXM7XG5cdFx0ZWFjaCggc3BhY2VzLCBmdW5jdGlvbiggc3BhY2VOYW1lLCBzcGFjZSApIHtcblx0XHRcdGlmICggaW5zdFsgc3BhY2UuY2FjaGUgXSApIHtcblx0XHRcdFx0dXNlZC5wdXNoKCBzcGFjZU5hbWUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHVzZWQucG9wKCk7XG5cdH0sXG5cdHRyYW5zaXRpb246IGZ1bmN0aW9uKCBvdGhlciwgZGlzdGFuY2UgKSB7XG5cdFx0dmFyIGVuZCA9IGNvbG9yKCBvdGhlciApLFxuXHRcdFx0c3BhY2VOYW1lID0gZW5kLl9zcGFjZSgpLFxuXHRcdFx0c3BhY2UgPSBzcGFjZXNbIHNwYWNlTmFtZSBdLFxuXHRcdFx0c3RhcnRDb2xvciA9IHRoaXMuYWxwaGEoKSA9PT0gMCA/IGNvbG9yKCBcInRyYW5zcGFyZW50XCIgKSA6IHRoaXMsXG5cdFx0XHRzdGFydCA9IHN0YXJ0Q29sb3JbIHNwYWNlLmNhY2hlIF0gfHwgc3BhY2UudG8oIHN0YXJ0Q29sb3IuX3JnYmEgKSxcblx0XHRcdHJlc3VsdCA9IHN0YXJ0LnNsaWNlKCk7XG5cblx0XHRlbmQgPSBlbmRbIHNwYWNlLmNhY2hlIF07XG5cdFx0ZWFjaCggc3BhY2UucHJvcHMsIGZ1bmN0aW9uKCBrZXksIHByb3AgKSB7XG5cdFx0XHR2YXIgaW5kZXggPSBwcm9wLmlkeCxcblx0XHRcdFx0c3RhcnRWYWx1ZSA9IHN0YXJ0WyBpbmRleCBdLFxuXHRcdFx0XHRlbmRWYWx1ZSA9IGVuZFsgaW5kZXggXSxcblx0XHRcdFx0dHlwZSA9IHByb3BUeXBlc1sgcHJvcC50eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIG51bGwsIGRvbid0IG92ZXJyaWRlIHN0YXJ0IHZhbHVlXG5cdFx0XHRpZiAoIGVuZFZhbHVlID09PSBudWxsICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIG51bGwgLSB1c2UgZW5kXG5cdFx0XHRpZiAoIHN0YXJ0VmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdHJlc3VsdFsgaW5kZXggXSA9IGVuZFZhbHVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCB0eXBlLm1vZCApIHtcblx0XHRcdFx0XHRpZiAoIGVuZFZhbHVlIC0gc3RhcnRWYWx1ZSA+IHR5cGUubW9kIC8gMiApIHtcblx0XHRcdFx0XHRcdHN0YXJ0VmFsdWUgKz0gdHlwZS5tb2Q7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggc3RhcnRWYWx1ZSAtIGVuZFZhbHVlID4gdHlwZS5tb2QgLyAyICkge1xuXHRcdFx0XHRcdFx0c3RhcnRWYWx1ZSAtPSB0eXBlLm1vZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzdWx0WyBpbmRleCBdID0gY2xhbXAoICggZW5kVmFsdWUgLSBzdGFydFZhbHVlICkgKiBkaXN0YW5jZSArIHN0YXJ0VmFsdWUsIHByb3AgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXNbIHNwYWNlTmFtZSBdKCByZXN1bHQgKTtcblx0fSxcblx0YmxlbmQ6IGZ1bmN0aW9uKCBvcGFxdWUgKSB7XG5cblx0XHQvLyBJZiB3ZSBhcmUgYWxyZWFkeSBvcGFxdWUgLSByZXR1cm4gb3Vyc2VsZlxuXHRcdGlmICggdGhpcy5fcmdiYVsgMyBdID09PSAxICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0dmFyIHJnYiA9IHRoaXMuX3JnYmEuc2xpY2UoKSxcblx0XHRcdGEgPSByZ2IucG9wKCksXG5cdFx0XHRibGVuZCA9IGNvbG9yKCBvcGFxdWUgKS5fcmdiYTtcblxuXHRcdHJldHVybiBjb2xvciggalF1ZXJ5Lm1hcCggcmdiLCBmdW5jdGlvbiggdiwgaSApIHtcblx0XHRcdHJldHVybiAoIDEgLSBhICkgKiBibGVuZFsgaSBdICsgYSAqIHY7XG5cdFx0fSApICk7XG5cdH0sXG5cdHRvUmdiYVN0cmluZzogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHByZWZpeCA9IFwicmdiYShcIixcblx0XHRcdHJnYmEgPSBqUXVlcnkubWFwKCB0aGlzLl9yZ2JhLCBmdW5jdGlvbiggdiwgaSApIHtcblx0XHRcdFx0cmV0dXJuIHYgPT0gbnVsbCA/ICggaSA+IDIgPyAxIDogMCApIDogdjtcblx0XHRcdH0gKTtcblxuXHRcdGlmICggcmdiYVsgMyBdID09PSAxICkge1xuXHRcdFx0cmdiYS5wb3AoKTtcblx0XHRcdHByZWZpeCA9IFwicmdiKFwiO1xuXHRcdH1cblxuXHRcdHJldHVybiBwcmVmaXggKyByZ2JhLmpvaW4oKSArIFwiKVwiO1xuXHR9LFxuXHR0b0hzbGFTdHJpbmc6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBwcmVmaXggPSBcImhzbGEoXCIsXG5cdFx0XHRoc2xhID0galF1ZXJ5Lm1hcCggdGhpcy5oc2xhKCksIGZ1bmN0aW9uKCB2LCBpICkge1xuXHRcdFx0XHRpZiAoIHYgPT0gbnVsbCApIHtcblx0XHRcdFx0XHR2ID0gaSA+IDIgPyAxIDogMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhdGNoIDEgYW5kIDJcblx0XHRcdFx0aWYgKCBpICYmIGkgPCAzICkge1xuXHRcdFx0XHRcdHYgPSBNYXRoLnJvdW5kKCB2ICogMTAwICkgKyBcIiVcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdjtcblx0XHRcdH0gKTtcblxuXHRcdGlmICggaHNsYVsgMyBdID09PSAxICkge1xuXHRcdFx0aHNsYS5wb3AoKTtcblx0XHRcdHByZWZpeCA9IFwiaHNsKFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJlZml4ICsgaHNsYS5qb2luKCkgKyBcIilcIjtcblx0fSxcblx0dG9IZXhTdHJpbmc6IGZ1bmN0aW9uKCBpbmNsdWRlQWxwaGEgKSB7XG5cdFx0dmFyIHJnYmEgPSB0aGlzLl9yZ2JhLnNsaWNlKCksXG5cdFx0XHRhbHBoYSA9IHJnYmEucG9wKCk7XG5cblx0XHRpZiAoIGluY2x1ZGVBbHBoYSApIHtcblx0XHRcdHJnYmEucHVzaCggfn4oIGFscGhhICogMjU1ICkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gXCIjXCIgKyBqUXVlcnkubWFwKCByZ2JhLCBmdW5jdGlvbiggdiApIHtcblxuXHRcdFx0Ly8gRGVmYXVsdCB0byAwIHdoZW4gbnVsbHMgZXhpc3Rcblx0XHRcdHYgPSAoIHYgfHwgMCApLnRvU3RyaW5nKCAxNiApO1xuXHRcdFx0cmV0dXJuIHYubGVuZ3RoID09PSAxID8gXCIwXCIgKyB2IDogdjtcblx0XHR9ICkuam9pbiggXCJcIiApO1xuXHR9LFxuXHR0b1N0cmluZzogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3JnYmFbIDMgXSA9PT0gMCA/IFwidHJhbnNwYXJlbnRcIiA6IHRoaXMudG9SZ2JhU3RyaW5nKCk7XG5cdH1cbn0gKTtcbmNvbG9yLmZuLnBhcnNlLnByb3RvdHlwZSA9IGNvbG9yLmZuO1xuXG4vLyBIc2xhIGNvbnZlcnNpb25zIGFkYXB0ZWQgZnJvbTpcbi8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvbWFhc2hhYWNrL3NvdXJjZS9icm93c2UvcGFja2FnZXMvZ3JhcGhpY3MvdHJ1bmsvc3JjL2dyYXBoaWNzL2NvbG9ycy9IVUUyUkdCLmFzP3I9NTAyMVxuXG5mdW5jdGlvbiBodWUycmdiKCBwLCBxLCBoICkge1xuXHRoID0gKCBoICsgMSApICUgMTtcblx0aWYgKCBoICogNiA8IDEgKSB7XG5cdFx0cmV0dXJuIHAgKyAoIHEgLSBwICkgKiBoICogNjtcblx0fVxuXHRpZiAoIGggKiAyIDwgMSApIHtcblx0XHRyZXR1cm4gcTtcblx0fVxuXHRpZiAoIGggKiAzIDwgMiApIHtcblx0XHRyZXR1cm4gcCArICggcSAtIHAgKSAqICggKCAyIC8gMyApIC0gaCApICogNjtcblx0fVxuXHRyZXR1cm4gcDtcbn1cblxuc3BhY2VzLmhzbGEudG8gPSBmdW5jdGlvbiggcmdiYSApIHtcblx0aWYgKCByZ2JhWyAwIF0gPT0gbnVsbCB8fCByZ2JhWyAxIF0gPT0gbnVsbCB8fCByZ2JhWyAyIF0gPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gWyBudWxsLCBudWxsLCBudWxsLCByZ2JhWyAzIF0gXTtcblx0fVxuXHR2YXIgciA9IHJnYmFbIDAgXSAvIDI1NSxcblx0XHRnID0gcmdiYVsgMSBdIC8gMjU1LFxuXHRcdGIgPSByZ2JhWyAyIF0gLyAyNTUsXG5cdFx0YSA9IHJnYmFbIDMgXSxcblx0XHRtYXggPSBNYXRoLm1heCggciwgZywgYiApLFxuXHRcdG1pbiA9IE1hdGgubWluKCByLCBnLCBiICksXG5cdFx0ZGlmZiA9IG1heCAtIG1pbixcblx0XHRhZGQgPSBtYXggKyBtaW4sXG5cdFx0bCA9IGFkZCAqIDAuNSxcblx0XHRoLCBzO1xuXG5cdGlmICggbWluID09PSBtYXggKSB7XG5cdFx0aCA9IDA7XG5cdH0gZWxzZSBpZiAoIHIgPT09IG1heCApIHtcblx0XHRoID0gKCA2MCAqICggZyAtIGIgKSAvIGRpZmYgKSArIDM2MDtcblx0fSBlbHNlIGlmICggZyA9PT0gbWF4ICkge1xuXHRcdGggPSAoIDYwICogKCBiIC0gciApIC8gZGlmZiApICsgMTIwO1xuXHR9IGVsc2Uge1xuXHRcdGggPSAoIDYwICogKCByIC0gZyApIC8gZGlmZiApICsgMjQwO1xuXHR9XG5cblx0Ly8gQ2hyb21hIChkaWZmKSA9PSAwIG1lYW5zIGdyZXlzY2FsZSB3aGljaCwgYnkgZGVmaW5pdGlvbiwgc2F0dXJhdGlvbiA9IDAlXG5cdC8vIG90aGVyd2lzZSwgc2F0dXJhdGlvbiBpcyBiYXNlZCBvbiB0aGUgcmF0aW8gb2YgY2hyb21hIChkaWZmKSB0byBsaWdodG5lc3MgKGFkZClcblx0aWYgKCBkaWZmID09PSAwICkge1xuXHRcdHMgPSAwO1xuXHR9IGVsc2UgaWYgKCBsIDw9IDAuNSApIHtcblx0XHRzID0gZGlmZiAvIGFkZDtcblx0fSBlbHNlIHtcblx0XHRzID0gZGlmZiAvICggMiAtIGFkZCApO1xuXHR9XG5cdHJldHVybiBbIE1hdGgucm91bmQoIGggKSAlIDM2MCwgcywgbCwgYSA9PSBudWxsID8gMSA6IGEgXTtcbn07XG5cbnNwYWNlcy5oc2xhLmZyb20gPSBmdW5jdGlvbiggaHNsYSApIHtcblx0aWYgKCBoc2xhWyAwIF0gPT0gbnVsbCB8fCBoc2xhWyAxIF0gPT0gbnVsbCB8fCBoc2xhWyAyIF0gPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gWyBudWxsLCBudWxsLCBudWxsLCBoc2xhWyAzIF0gXTtcblx0fVxuXHR2YXIgaCA9IGhzbGFbIDAgXSAvIDM2MCxcblx0XHRzID0gaHNsYVsgMSBdLFxuXHRcdGwgPSBoc2xhWyAyIF0sXG5cdFx0YSA9IGhzbGFbIDMgXSxcblx0XHRxID0gbCA8PSAwLjUgPyBsICogKCAxICsgcyApIDogbCArIHMgLSBsICogcyxcblx0XHRwID0gMiAqIGwgLSBxO1xuXG5cdHJldHVybiBbXG5cdFx0TWF0aC5yb3VuZCggaHVlMnJnYiggcCwgcSwgaCArICggMSAvIDMgKSApICogMjU1ICksXG5cdFx0TWF0aC5yb3VuZCggaHVlMnJnYiggcCwgcSwgaCApICogMjU1ICksXG5cdFx0TWF0aC5yb3VuZCggaHVlMnJnYiggcCwgcSwgaCAtICggMSAvIDMgKSApICogMjU1ICksXG5cdFx0YVxuXHRdO1xufTtcblxuZWFjaCggc3BhY2VzLCBmdW5jdGlvbiggc3BhY2VOYW1lLCBzcGFjZSApIHtcblx0dmFyIHByb3BzID0gc3BhY2UucHJvcHMsXG5cdFx0Y2FjaGUgPSBzcGFjZS5jYWNoZSxcblx0XHR0byA9IHNwYWNlLnRvLFxuXHRcdGZyb20gPSBzcGFjZS5mcm9tO1xuXG5cdC8vIE1ha2VzIHJnYmEoKSBhbmQgaHNsYSgpXG5cdGNvbG9yLmZuWyBzcGFjZU5hbWUgXSA9IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblxuXHRcdC8vIEdlbmVyYXRlIGEgY2FjaGUgZm9yIHRoaXMgc3BhY2UgaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdGlmICggdG8gJiYgIXRoaXNbIGNhY2hlIF0gKSB7XG5cdFx0XHR0aGlzWyBjYWNoZSBdID0gdG8oIHRoaXMuX3JnYmEgKTtcblx0XHR9XG5cdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuIHRoaXNbIGNhY2hlIF0uc2xpY2UoKTtcblx0XHR9XG5cblx0XHR2YXIgcmV0LFxuXHRcdFx0dHlwZSA9IGpRdWVyeS50eXBlKCB2YWx1ZSApLFxuXHRcdFx0YXJyID0gKCB0eXBlID09PSBcImFycmF5XCIgfHwgdHlwZSA9PT0gXCJvYmplY3RcIiApID8gdmFsdWUgOiBhcmd1bWVudHMsXG5cdFx0XHRsb2NhbCA9IHRoaXNbIGNhY2hlIF0uc2xpY2UoKTtcblxuXHRcdGVhY2goIHByb3BzLCBmdW5jdGlvbigga2V5LCBwcm9wICkge1xuXHRcdFx0dmFyIHZhbCA9IGFyclsgdHlwZSA9PT0gXCJvYmplY3RcIiA/IGtleSA6IHByb3AuaWR4IF07XG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBsb2NhbFsgcHJvcC5pZHggXTtcblx0XHRcdH1cblx0XHRcdGxvY2FsWyBwcm9wLmlkeCBdID0gY2xhbXAoIHZhbCwgcHJvcCApO1xuXHRcdH0gKTtcblxuXHRcdGlmICggZnJvbSApIHtcblx0XHRcdHJldCA9IGNvbG9yKCBmcm9tKCBsb2NhbCApICk7XG5cdFx0XHRyZXRbIGNhY2hlIF0gPSBsb2NhbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjb2xvciggbG9jYWwgKTtcblx0XHR9XG5cdH07XG5cblx0Ly8gTWFrZXMgcmVkKCkgZ3JlZW4oKSBibHVlKCkgYWxwaGEoKSBodWUoKSBzYXR1cmF0aW9uKCkgbGlnaHRuZXNzKClcblx0ZWFjaCggcHJvcHMsIGZ1bmN0aW9uKCBrZXksIHByb3AgKSB7XG5cblx0XHQvLyBBbHBoYSBpcyBpbmNsdWRlZCBpbiBtb3JlIHRoYW4gb25lIHNwYWNlXG5cdFx0aWYgKCBjb2xvci5mblsga2V5IF0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbG9yLmZuWyBrZXkgXSA9IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciB2dHlwZSA9IGpRdWVyeS50eXBlKCB2YWx1ZSApLFxuXHRcdFx0XHRmbiA9ICgga2V5ID09PSBcImFscGhhXCIgPyAoIHRoaXMuX2hzbGEgPyBcImhzbGFcIiA6IFwicmdiYVwiICkgOiBzcGFjZU5hbWUgKSxcblx0XHRcdFx0bG9jYWwgPSB0aGlzWyBmbiBdKCksXG5cdFx0XHRcdGN1ciA9IGxvY2FsWyBwcm9wLmlkeCBdLFxuXHRcdFx0XHRtYXRjaDtcblxuXHRcdFx0aWYgKCB2dHlwZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRcdFx0cmV0dXJuIGN1cjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB2dHlwZSA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlLmNhbGwoIHRoaXMsIGN1ciApO1xuXHRcdFx0XHR2dHlwZSA9IGpRdWVyeS50eXBlKCB2YWx1ZSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsICYmIHByb3AuZW1wdHkgKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCB2dHlwZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0bWF0Y2ggPSBycGx1c2VxdWFscy5leGVjKCB2YWx1ZSApO1xuXHRcdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHRcdHZhbHVlID0gY3VyICsgcGFyc2VGbG9hdCggbWF0Y2hbIDIgXSApICogKCBtYXRjaFsgMSBdID09PSBcIitcIiA/IDEgOiAtMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRsb2NhbFsgcHJvcC5pZHggXSA9IHZhbHVlO1xuXHRcdFx0cmV0dXJuIHRoaXNbIGZuIF0oIGxvY2FsICk7XG5cdFx0fTtcblx0fSApO1xufSApO1xuXG4vLyBBZGQgY3NzSG9vayBhbmQgLmZ4LnN0ZXAgZnVuY3Rpb24gZm9yIGVhY2ggbmFtZWQgaG9vay5cbi8vIGFjY2VwdCBhIHNwYWNlIHNlcGFyYXRlZCBzdHJpbmcgb2YgcHJvcGVydGllc1xuY29sb3IuaG9vayA9IGZ1bmN0aW9uKCBob29rICkge1xuXHR2YXIgaG9va3MgPSBob29rLnNwbGl0KCBcIiBcIiApO1xuXHRlYWNoKCBob29rcywgZnVuY3Rpb24oIGksIGhvb2sgKSB7XG5cdFx0alF1ZXJ5LmNzc0hvb2tzWyBob29rIF0gPSB7XG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIHBhcnNlZCwgY3VyRWxlbSxcblx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3IgPSBcIlwiO1xuXG5cdFx0XHRcdGlmICggdmFsdWUgIT09IFwidHJhbnNwYXJlbnRcIiAmJiAoIGpRdWVyeS50eXBlKCB2YWx1ZSApICE9PSBcInN0cmluZ1wiIHx8XG5cdFx0XHRcdFx0XHQoIHBhcnNlZCA9IHN0cmluZ1BhcnNlKCB2YWx1ZSApICkgKSApIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGNvbG9yKCBwYXJzZWQgfHwgdmFsdWUgKTtcblx0XHRcdFx0XHRpZiAoICFzdXBwb3J0LnJnYmEgJiYgdmFsdWUuX3JnYmFbIDMgXSAhPT0gMSApIHtcblx0XHRcdFx0XHRcdGN1ckVsZW0gPSBob29rID09PSBcImJhY2tncm91bmRDb2xvclwiID8gZWxlbS5wYXJlbnROb2RlIDogZWxlbTtcblx0XHRcdFx0XHRcdHdoaWxlIChcblx0XHRcdFx0XHRcdFx0KCBiYWNrZ3JvdW5kQ29sb3IgPT09IFwiXCIgfHwgYmFja2dyb3VuZENvbG9yID09PSBcInRyYW5zcGFyZW50XCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRjdXJFbGVtICYmIGN1ckVsZW0uc3R5bGVcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvciA9IGpRdWVyeS5jc3MoIGN1ckVsZW0sIFwiYmFja2dyb3VuZENvbG9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRjdXJFbGVtID0gY3VyRWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlLmJsZW5kKCBiYWNrZ3JvdW5kQ29sb3IgJiYgYmFja2dyb3VuZENvbG9yICE9PSBcInRyYW5zcGFyZW50XCIgP1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3IgOlxuXHRcdFx0XHRcdFx0XHRcIl9kZWZhdWx0XCIgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnRvUmdiYVN0cmluZygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0ZWxlbS5zdHlsZVsgaG9vayBdID0gdmFsdWU7XG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0Ly8gV3JhcHBlZCB0byBwcmV2ZW50IElFIGZyb20gdGhyb3dpbmcgZXJyb3JzIG9uIFwiaW52YWxpZFwiIHZhbHVlcyBsaWtlXG5cdFx0XHRcdFx0Ly8gJ2F1dG8nIG9yICdpbmhlcml0J1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRqUXVlcnkuZnguc3RlcFsgaG9vayBdID0gZnVuY3Rpb24oIGZ4ICkge1xuXHRcdFx0aWYgKCAhZnguY29sb3JJbml0ICkge1xuXHRcdFx0XHRmeC5zdGFydCA9IGNvbG9yKCBmeC5lbGVtLCBob29rICk7XG5cdFx0XHRcdGZ4LmVuZCA9IGNvbG9yKCBmeC5lbmQgKTtcblx0XHRcdFx0ZnguY29sb3JJbml0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGpRdWVyeS5jc3NIb29rc1sgaG9vayBdLnNldCggZnguZWxlbSwgZnguc3RhcnQudHJhbnNpdGlvbiggZnguZW5kLCBmeC5wb3MgKSApO1xuXHRcdH07XG5cdH0gKTtcblxufTtcblxuY29sb3IuaG9vayggc3RlcEhvb2tzICk7XG5cbmpRdWVyeS5jc3NIb29rcy5ib3JkZXJDb2xvciA9IHtcblx0ZXhwYW5kOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGV4cGFuZGVkID0ge307XG5cblx0XHRlYWNoKCBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXSwgZnVuY3Rpb24oIGksIHBhcnQgKSB7XG5cdFx0XHRleHBhbmRlZFsgXCJib3JkZXJcIiArIHBhcnQgKyBcIkNvbG9yXCIgXSA9IHZhbHVlO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdH1cbn07XG5cbi8vIEJhc2ljIGNvbG9yIG5hbWVzIG9ubHkuXG4vLyBVc2FnZSBvZiBhbnkgb2YgdGhlIG90aGVyIGNvbG9yIG5hbWVzIHJlcXVpcmVzIGFkZGluZyB5b3Vyc2VsZiBvciBpbmNsdWRpbmdcbi8vIGpxdWVyeS5jb2xvci5zdmctbmFtZXMuanMuXG5jb2xvcnMgPSBqUXVlcnkuQ29sb3IubmFtZXMgPSB7XG5cblx0Ly8gNC4xLiBCYXNpYyBjb2xvciBrZXl3b3Jkc1xuXHRhcXVhOiBcIiMwMGZmZmZcIixcblx0YmxhY2s6IFwiIzAwMDAwMFwiLFxuXHRibHVlOiBcIiMwMDAwZmZcIixcblx0ZnVjaHNpYTogXCIjZmYwMGZmXCIsXG5cdGdyYXk6IFwiIzgwODA4MFwiLFxuXHRncmVlbjogXCIjMDA4MDAwXCIsXG5cdGxpbWU6IFwiIzAwZmYwMFwiLFxuXHRtYXJvb246IFwiIzgwMDAwMFwiLFxuXHRuYXZ5OiBcIiMwMDAwODBcIixcblx0b2xpdmU6IFwiIzgwODAwMFwiLFxuXHRwdXJwbGU6IFwiIzgwMDA4MFwiLFxuXHRyZWQ6IFwiI2ZmMDAwMFwiLFxuXHRzaWx2ZXI6IFwiI2MwYzBjMFwiLFxuXHR0ZWFsOiBcIiMwMDgwODBcIixcblx0d2hpdGU6IFwiI2ZmZmZmZlwiLFxuXHR5ZWxsb3c6IFwiI2ZmZmYwMFwiLFxuXG5cdC8vIDQuMi4zLiBcInRyYW5zcGFyZW50XCIgY29sb3Iga2V5d29yZFxuXHR0cmFuc3BhcmVudDogWyBudWxsLCBudWxsLCBudWxsLCAwIF0sXG5cblx0X2RlZmF1bHQ6IFwiI2ZmZmZmZlwiXG59O1xuXG59ICkoIGpRdWVyeSApO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBDTEFTUyBBTklNQVRJT05TICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4oIGZ1bmN0aW9uKCkge1xuXG52YXIgY2xhc3NBbmltYXRpb25BY3Rpb25zID0gWyBcImFkZFwiLCBcInJlbW92ZVwiLCBcInRvZ2dsZVwiIF0sXG5cdHNob3J0aGFuZFN0eWxlcyA9IHtcblx0XHRib3JkZXI6IDEsXG5cdFx0Ym9yZGVyQm90dG9tOiAxLFxuXHRcdGJvcmRlckNvbG9yOiAxLFxuXHRcdGJvcmRlckxlZnQ6IDEsXG5cdFx0Ym9yZGVyUmlnaHQ6IDEsXG5cdFx0Ym9yZGVyVG9wOiAxLFxuXHRcdGJvcmRlcldpZHRoOiAxLFxuXHRcdG1hcmdpbjogMSxcblx0XHRwYWRkaW5nOiAxXG5cdH07XG5cbiQuZWFjaChcblx0WyBcImJvcmRlckxlZnRTdHlsZVwiLCBcImJvcmRlclJpZ2h0U3R5bGVcIiwgXCJib3JkZXJCb3R0b21TdHlsZVwiLCBcImJvcmRlclRvcFN0eWxlXCIgXSxcblx0ZnVuY3Rpb24oIF8sIHByb3AgKSB7XG5cdFx0JC5meC5zdGVwWyBwcm9wIF0gPSBmdW5jdGlvbiggZnggKSB7XG5cdFx0XHRpZiAoIGZ4LmVuZCAhPT0gXCJub25lXCIgJiYgIWZ4LnNldEF0dHIgfHwgZngucG9zID09PSAxICYmICFmeC5zZXRBdHRyICkge1xuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGZ4LmVsZW0sIHByb3AsIGZ4LmVuZCApO1xuXHRcdFx0XHRmeC5zZXRBdHRyID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG4pO1xuXG5mdW5jdGlvbiBnZXRFbGVtZW50U3R5bGVzKCBlbGVtICkge1xuXHR2YXIga2V5LCBsZW4sXG5cdFx0c3R5bGUgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgP1xuXHRcdFx0ZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKSA6XG5cdFx0XHRlbGVtLmN1cnJlbnRTdHlsZSxcblx0XHRzdHlsZXMgPSB7fTtcblxuXHRpZiAoIHN0eWxlICYmIHN0eWxlLmxlbmd0aCAmJiBzdHlsZVsgMCBdICYmIHN0eWxlWyBzdHlsZVsgMCBdIF0gKSB7XG5cdFx0bGVuID0gc3R5bGUubGVuZ3RoO1xuXHRcdHdoaWxlICggbGVuLS0gKSB7XG5cdFx0XHRrZXkgPSBzdHlsZVsgbGVuIF07XG5cdFx0XHRpZiAoIHR5cGVvZiBzdHlsZVsga2V5IF0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdHN0eWxlc1sgJC5jYW1lbENhc2UoIGtleSApIF0gPSBzdHlsZVsga2V5IF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdC8vIFN1cHBvcnQ6IE9wZXJhLCBJRSA8OVxuXHR9IGVsc2Uge1xuXHRcdGZvciAoIGtleSBpbiBzdHlsZSApIHtcblx0XHRcdGlmICggdHlwZW9mIHN0eWxlWyBrZXkgXSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0c3R5bGVzWyBrZXkgXSA9IHN0eWxlWyBrZXkgXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc3R5bGVzO1xufVxuXG5mdW5jdGlvbiBzdHlsZURpZmZlcmVuY2UoIG9sZFN0eWxlLCBuZXdTdHlsZSApIHtcblx0dmFyIGRpZmYgPSB7fSxcblx0XHRuYW1lLCB2YWx1ZTtcblxuXHRmb3IgKCBuYW1lIGluIG5ld1N0eWxlICkge1xuXHRcdHZhbHVlID0gbmV3U3R5bGVbIG5hbWUgXTtcblx0XHRpZiAoIG9sZFN0eWxlWyBuYW1lIF0gIT09IHZhbHVlICkge1xuXHRcdFx0aWYgKCAhc2hvcnRoYW5kU3R5bGVzWyBuYW1lIF0gKSB7XG5cdFx0XHRcdGlmICggJC5meC5zdGVwWyBuYW1lIF0gfHwgIWlzTmFOKCBwYXJzZUZsb2F0KCB2YWx1ZSApICkgKSB7XG5cdFx0XHRcdFx0ZGlmZlsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZGlmZjtcbn1cblxuLy8gU3VwcG9ydDogalF1ZXJ5IDwxLjhcbmlmICggISQuZm4uYWRkQmFjayApIHtcblx0JC5mbi5hZGRCYWNrID0gZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fTtcbn1cblxuJC5lZmZlY3RzLmFuaW1hdGVDbGFzcyA9IGZ1bmN0aW9uKCB2YWx1ZSwgZHVyYXRpb24sIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdHZhciBvID0gJC5zcGVlZCggZHVyYXRpb24sIGVhc2luZywgY2FsbGJhY2sgKTtcblxuXHRyZXR1cm4gdGhpcy5xdWV1ZSggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGFuaW1hdGVkID0gJCggdGhpcyApLFxuXHRcdFx0YmFzZUNsYXNzID0gYW5pbWF0ZWQuYXR0ciggXCJjbGFzc1wiICkgfHwgXCJcIixcblx0XHRcdGFwcGx5Q2xhc3NDaGFuZ2UsXG5cdFx0XHRhbGxBbmltYXRpb25zID0gby5jaGlsZHJlbiA/IGFuaW1hdGVkLmZpbmQoIFwiKlwiICkuYWRkQmFjaygpIDogYW5pbWF0ZWQ7XG5cblx0XHQvLyBNYXAgdGhlIGFuaW1hdGVkIG9iamVjdHMgdG8gc3RvcmUgdGhlIG9yaWdpbmFsIHN0eWxlcy5cblx0XHRhbGxBbmltYXRpb25zID0gYWxsQW5pbWF0aW9ucy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsID0gJCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZWw6IGVsLFxuXHRcdFx0XHRzdGFydDogZ2V0RWxlbWVudFN0eWxlcyggdGhpcyApXG5cdFx0XHR9O1xuXHRcdH0gKTtcblxuXHRcdC8vIEFwcGx5IGNsYXNzIGNoYW5nZVxuXHRcdGFwcGx5Q2xhc3NDaGFuZ2UgPSBmdW5jdGlvbigpIHtcblx0XHRcdCQuZWFjaCggY2xhc3NBbmltYXRpb25BY3Rpb25zLCBmdW5jdGlvbiggaSwgYWN0aW9uICkge1xuXHRcdFx0XHRpZiAoIHZhbHVlWyBhY3Rpb24gXSApIHtcblx0XHRcdFx0XHRhbmltYXRlZFsgYWN0aW9uICsgXCJDbGFzc1wiIF0oIHZhbHVlWyBhY3Rpb24gXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fTtcblx0XHRhcHBseUNsYXNzQ2hhbmdlKCk7XG5cblx0XHQvLyBNYXAgYWxsIGFuaW1hdGVkIG9iamVjdHMgYWdhaW4gLSBjYWxjdWxhdGUgbmV3IHN0eWxlcyBhbmQgZGlmZlxuXHRcdGFsbEFuaW1hdGlvbnMgPSBhbGxBbmltYXRpb25zLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLmVuZCA9IGdldEVsZW1lbnRTdHlsZXMoIHRoaXMuZWxbIDAgXSApO1xuXHRcdFx0dGhpcy5kaWZmID0gc3R5bGVEaWZmZXJlbmNlKCB0aGlzLnN0YXJ0LCB0aGlzLmVuZCApO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSApO1xuXG5cdFx0Ly8gQXBwbHkgb3JpZ2luYWwgY2xhc3Ncblx0XHRhbmltYXRlZC5hdHRyKCBcImNsYXNzXCIsIGJhc2VDbGFzcyApO1xuXG5cdFx0Ly8gTWFwIGFsbCBhbmltYXRlZCBvYmplY3RzIGFnYWluIC0gdGhpcyB0aW1lIGNvbGxlY3RpbmcgYSBwcm9taXNlXG5cdFx0YWxsQW5pbWF0aW9ucyA9IGFsbEFuaW1hdGlvbnMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzdHlsZUluZm8gPSB0aGlzLFxuXHRcdFx0XHRkZmQgPSAkLkRlZmVycmVkKCksXG5cdFx0XHRcdG9wdHMgPSAkLmV4dGVuZCgge30sIG8sIHtcblx0XHRcdFx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0ZGZkLnJlc29sdmUoIHN0eWxlSW5mbyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXG5cdFx0XHR0aGlzLmVsLmFuaW1hdGUoIHRoaXMuZGlmZiwgb3B0cyApO1xuXHRcdFx0cmV0dXJuIGRmZC5wcm9taXNlKCk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gT25jZSBhbGwgYW5pbWF0aW9ucyBoYXZlIGNvbXBsZXRlZDpcblx0XHQkLndoZW4uYXBwbHkoICQsIGFsbEFuaW1hdGlvbnMuZ2V0KCkgKS5kb25lKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gU2V0IHRoZSBmaW5hbCBjbGFzc1xuXHRcdFx0YXBwbHlDbGFzc0NoYW5nZSgpO1xuXG5cdFx0XHQvLyBGb3IgZWFjaCBhbmltYXRlZCBlbGVtZW50LFxuXHRcdFx0Ly8gY2xlYXIgYWxsIGNzcyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBhbmltYXRlZFxuXHRcdFx0JC5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWwgPSB0aGlzLmVsO1xuXHRcdFx0XHQkLmVhY2goIHRoaXMuZGlmZiwgZnVuY3Rpb24oIGtleSApIHtcblx0XHRcdFx0XHRlbC5jc3MoIGtleSwgXCJcIiApO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vIFRoaXMgaXMgZ3Vhcm50ZWVkIHRvIGJlIHRoZXJlIGlmIHlvdSB1c2UgalF1ZXJ5LnNwZWVkKClcblx0XHRcdC8vIGl0IGFsc28gaGFuZGxlcyBkZXF1ZXVpbmcgdGhlIG5leHQgYW5pbS4uLlxuXHRcdFx0by5jb21wbGV0ZS5jYWxsKCBhbmltYXRlZFsgMCBdICk7XG5cdFx0fSApO1xuXHR9ICk7XG59O1xuXG4kLmZuLmV4dGVuZCgge1xuXHRhZGRDbGFzczogKCBmdW5jdGlvbiggb3JpZyApIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oIGNsYXNzTmFtZXMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdFx0cmV0dXJuIHNwZWVkID9cblx0XHRcdFx0JC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKCB0aGlzLFxuXHRcdFx0XHRcdHsgYWRkOiBjbGFzc05hbWVzIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgOlxuXHRcdFx0XHRvcmlnLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXHR9ICkoICQuZm4uYWRkQ2xhc3MgKSxcblxuXHRyZW1vdmVDbGFzczogKCBmdW5jdGlvbiggb3JpZyApIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oIGNsYXNzTmFtZXMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdFx0cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID9cblx0XHRcdFx0JC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKCB0aGlzLFxuXHRcdFx0XHRcdHsgcmVtb3ZlOiBjbGFzc05hbWVzIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgOlxuXHRcdFx0XHRvcmlnLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXHR9ICkoICQuZm4ucmVtb3ZlQ2xhc3MgKSxcblxuXHR0b2dnbGVDbGFzczogKCBmdW5jdGlvbiggb3JpZyApIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oIGNsYXNzTmFtZXMsIGZvcmNlLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRcdGlmICggdHlwZW9mIGZvcmNlID09PSBcImJvb2xlYW5cIiB8fCBmb3JjZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRpZiAoICFzcGVlZCApIHtcblxuXHRcdFx0XHRcdC8vIFdpdGhvdXQgc3BlZWQgcGFyYW1ldGVyXG5cdFx0XHRcdFx0cmV0dXJuIG9yaWcuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiAkLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwoIHRoaXMsXG5cdFx0XHRcdFx0XHQoIGZvcmNlID8geyBhZGQ6IGNsYXNzTmFtZXMgfSA6IHsgcmVtb3ZlOiBjbGFzc05hbWVzIH0gKSxcblx0XHRcdFx0XHRcdHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gV2l0aG91dCBmb3JjZSBwYXJhbWV0ZXJcblx0XHRcdFx0cmV0dXJuICQuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCggdGhpcyxcblx0XHRcdFx0XHR7IHRvZ2dsZTogY2xhc3NOYW1lcyB9LCBmb3JjZSwgc3BlZWQsIGVhc2luZyApO1xuXHRcdFx0fVxuXHRcdH07XG5cdH0gKSggJC5mbi50b2dnbGVDbGFzcyApLFxuXG5cdHN3aXRjaENsYXNzOiBmdW5jdGlvbiggcmVtb3ZlLCBhZGQsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiAkLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwoIHRoaXMsIHtcblx0XHRcdGFkZDogYWRkLFxuXHRcdFx0cmVtb3ZlOiByZW1vdmVcblx0XHR9LCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xuXHR9XG59ICk7XG5cbn0gKSgpO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEVGRkVDVFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiggZnVuY3Rpb24oKSB7XG5cbmlmICggJC5leHByICYmICQuZXhwci5maWx0ZXJzICYmICQuZXhwci5maWx0ZXJzLmFuaW1hdGVkICkge1xuXHQkLmV4cHIuZmlsdGVycy5hbmltYXRlZCA9ICggZnVuY3Rpb24oIG9yaWcgKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuICEhJCggZWxlbSApLmRhdGEoIGRhdGFTcGFjZUFuaW1hdGVkICkgfHwgb3JpZyggZWxlbSApO1xuXHRcdH07XG5cdH0gKSggJC5leHByLmZpbHRlcnMuYW5pbWF0ZWQgKTtcbn1cblxuaWYgKCAkLnVpQmFja0NvbXBhdCAhPT0gZmFsc2UgKSB7XG5cdCQuZXh0ZW5kKCAkLmVmZmVjdHMsIHtcblxuXHRcdC8vIFNhdmVzIGEgc2V0IG9mIHByb3BlcnRpZXMgaW4gYSBkYXRhIHN0b3JhZ2Vcblx0XHRzYXZlOiBmdW5jdGlvbiggZWxlbWVudCwgc2V0ICkge1xuXHRcdFx0dmFyIGkgPSAwLCBsZW5ndGggPSBzZXQubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggc2V0WyBpIF0gIT09IG51bGwgKSB7XG5cdFx0XHRcdFx0ZWxlbWVudC5kYXRhKCBkYXRhU3BhY2UgKyBzZXRbIGkgXSwgZWxlbWVudFsgMCBdLnN0eWxlWyBzZXRbIGkgXSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gUmVzdG9yZXMgYSBzZXQgb2YgcHJldmlvdXNseSBzYXZlZCBwcm9wZXJ0aWVzIGZyb20gYSBkYXRhIHN0b3JhZ2Vcblx0XHRyZXN0b3JlOiBmdW5jdGlvbiggZWxlbWVudCwgc2V0ICkge1xuXHRcdFx0dmFyIHZhbCwgaSA9IDAsIGxlbmd0aCA9IHNldC5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBzZXRbIGkgXSAhPT0gbnVsbCApIHtcblx0XHRcdFx0XHR2YWwgPSBlbGVtZW50LmRhdGEoIGRhdGFTcGFjZSArIHNldFsgaSBdICk7XG5cdFx0XHRcdFx0ZWxlbWVudC5jc3MoIHNldFsgaSBdLCB2YWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXRNb2RlOiBmdW5jdGlvbiggZWwsIG1vZGUgKSB7XG5cdFx0XHRpZiAoIG1vZGUgPT09IFwidG9nZ2xlXCIgKSB7XG5cdFx0XHRcdG1vZGUgPSBlbC5pcyggXCI6aGlkZGVuXCIgKSA/IFwic2hvd1wiIDogXCJoaWRlXCI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbW9kZTtcblx0XHR9LFxuXG5cdFx0Ly8gV3JhcHMgdGhlIGVsZW1lbnQgYXJvdW5kIGEgd3JhcHBlciB0aGF0IGNvcGllcyBwb3NpdGlvbiBwcm9wZXJ0aWVzXG5cdFx0Y3JlYXRlV3JhcHBlcjogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cblx0XHRcdC8vIElmIHRoZSBlbGVtZW50IGlzIGFscmVhZHkgd3JhcHBlZCwgcmV0dXJuIGl0XG5cdFx0XHRpZiAoIGVsZW1lbnQucGFyZW50KCkuaXMoIFwiLnVpLWVmZmVjdHMtd3JhcHBlclwiICkgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtZW50LnBhcmVudCgpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXcmFwIHRoZSBlbGVtZW50XG5cdFx0XHR2YXIgcHJvcHMgPSB7XG5cdFx0XHRcdFx0d2lkdGg6IGVsZW1lbnQub3V0ZXJXaWR0aCggdHJ1ZSApLFxuXHRcdFx0XHRcdGhlaWdodDogZWxlbWVudC5vdXRlckhlaWdodCggdHJ1ZSApLFxuXHRcdFx0XHRcdFwiZmxvYXRcIjogZWxlbWVudC5jc3MoIFwiZmxvYXRcIiApXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdyYXBwZXIgPSAkKCBcIjxkaXY+PC9kaXY+XCIgKVxuXHRcdFx0XHRcdC5hZGRDbGFzcyggXCJ1aS1lZmZlY3RzLXdyYXBwZXJcIiApXG5cdFx0XHRcdFx0LmNzcygge1xuXHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiMTAwJVwiLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuXHRcdFx0XHRcdFx0Ym9yZGVyOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdG1hcmdpbjogMCxcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDBcblx0XHRcdFx0XHR9ICksXG5cblx0XHRcdFx0Ly8gU3RvcmUgdGhlIHNpemUgaW4gY2FzZSB3aWR0aC9oZWlnaHQgYXJlIGRlZmluZWQgaW4gJSAtIEZpeGVzICM1MjQ1XG5cdFx0XHRcdHNpemUgPSB7XG5cdFx0XHRcdFx0d2lkdGg6IGVsZW1lbnQud2lkdGgoKSxcblx0XHRcdFx0XHRoZWlnaHQ6IGVsZW1lbnQuaGVpZ2h0KClcblx0XHRcdFx0fSxcblx0XHRcdFx0YWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveFxuXHRcdFx0Ly8gRmlyZWZveCBpbmNvcnJlY3RseSBleHBvc2VzIGFub255bW91cyBjb250ZW50XG5cdFx0XHQvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01NjE2NjRcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFjdGl2ZS5pZDtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRhY3RpdmUgPSBkb2N1bWVudC5ib2R5O1xuXHRcdFx0fVxuXG5cdFx0XHRlbGVtZW50LndyYXAoIHdyYXBwZXIgKTtcblxuXHRcdFx0Ly8gRml4ZXMgIzc1OTUgLSBFbGVtZW50cyBsb3NlIGZvY3VzIHdoZW4gd3JhcHBlZC5cblx0XHRcdGlmICggZWxlbWVudFsgMCBdID09PSBhY3RpdmUgfHwgJC5jb250YWlucyggZWxlbWVudFsgMCBdLCBhY3RpdmUgKSApIHtcblx0XHRcdFx0JCggYWN0aXZlICkudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvdGZpeCBmb3IgalF1ZXJ5IDEuNCBzaW5jZSBzb21lIGNoYW5nZSBpbiB3cmFwKCkgc2VlbXMgdG8gYWN0dWFsbHlcblx0XHRcdC8vIGxvc2UgdGhlIHJlZmVyZW5jZSB0byB0aGUgd3JhcHBlZCBlbGVtZW50XG5cdFx0XHR3cmFwcGVyID0gZWxlbWVudC5wYXJlbnQoKTtcblxuXHRcdFx0Ly8gVHJhbnNmZXIgcG9zaXRpb25pbmcgcHJvcGVydGllcyB0byB0aGUgd3JhcHBlclxuXHRcdFx0aWYgKCBlbGVtZW50LmNzcyggXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdHdyYXBwZXIuY3NzKCB7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfSApO1xuXHRcdFx0XHRlbGVtZW50LmNzcyggeyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCQuZXh0ZW5kKCBwcm9wcywge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBlbGVtZW50LmNzcyggXCJwb3NpdGlvblwiICksXG5cdFx0XHRcdFx0ekluZGV4OiBlbGVtZW50LmNzcyggXCJ6LWluZGV4XCIgKVxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdCQuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiwgXCJib3R0b21cIiwgXCJyaWdodFwiIF0sIGZ1bmN0aW9uKCBpLCBwb3MgKSB7XG5cdFx0XHRcdFx0cHJvcHNbIHBvcyBdID0gZWxlbWVudC5jc3MoIHBvcyApO1xuXHRcdFx0XHRcdGlmICggaXNOYU4oIHBhcnNlSW50KCBwcm9wc1sgcG9zIF0sIDEwICkgKSApIHtcblx0XHRcdFx0XHRcdHByb3BzWyBwb3MgXSA9IFwiYXV0b1wiO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRlbGVtZW50LmNzcygge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG5cdFx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHRcdGxlZnQ6IDAsXG5cdFx0XHRcdFx0cmlnaHQ6IFwiYXV0b1wiLFxuXHRcdFx0XHRcdGJvdHRvbTogXCJhdXRvXCJcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdFx0ZWxlbWVudC5jc3MoIHNpemUgKTtcblxuXHRcdFx0cmV0dXJuIHdyYXBwZXIuY3NzKCBwcm9wcyApLnNob3coKTtcblx0XHR9LFxuXG5cdFx0cmVtb3ZlV3JhcHBlcjogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0XHR2YXIgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuXHRcdFx0aWYgKCBlbGVtZW50LnBhcmVudCgpLmlzKCBcIi51aS1lZmZlY3RzLXdyYXBwZXJcIiApICkge1xuXHRcdFx0XHRlbGVtZW50LnBhcmVudCgpLnJlcGxhY2VXaXRoKCBlbGVtZW50ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgIzc1OTUgLSBFbGVtZW50cyBsb3NlIGZvY3VzIHdoZW4gd3JhcHBlZC5cblx0XHRcdFx0aWYgKCBlbGVtZW50WyAwIF0gPT09IGFjdGl2ZSB8fCAkLmNvbnRhaW5zKCBlbGVtZW50WyAwIF0sIGFjdGl2ZSApICkge1xuXHRcdFx0XHRcdCQoIGFjdGl2ZSApLnRyaWdnZXIoIFwiZm9jdXNcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtZW50O1xuXHRcdH1cblx0fSApO1xufVxuXG4kLmV4dGVuZCggJC5lZmZlY3RzLCB7XG5cdHZlcnNpb246IFwiMS4xMi4xXCIsXG5cblx0ZGVmaW5lOiBmdW5jdGlvbiggbmFtZSwgbW9kZSwgZWZmZWN0ICkge1xuXHRcdGlmICggIWVmZmVjdCApIHtcblx0XHRcdGVmZmVjdCA9IG1vZGU7XG5cdFx0XHRtb2RlID0gXCJlZmZlY3RcIjtcblx0XHR9XG5cblx0XHQkLmVmZmVjdHMuZWZmZWN0WyBuYW1lIF0gPSBlZmZlY3Q7XG5cdFx0JC5lZmZlY3RzLmVmZmVjdFsgbmFtZSBdLm1vZGUgPSBtb2RlO1xuXG5cdFx0cmV0dXJuIGVmZmVjdDtcblx0fSxcblxuXHRzY2FsZWREaW1lbnNpb25zOiBmdW5jdGlvbiggZWxlbWVudCwgcGVyY2VudCwgZGlyZWN0aW9uICkge1xuXHRcdGlmICggcGVyY2VudCA9PT0gMCApIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGhlaWdodDogMCxcblx0XHRcdFx0d2lkdGg6IDAsXG5cdFx0XHRcdG91dGVySGVpZ2h0OiAwLFxuXHRcdFx0XHRvdXRlcldpZHRoOiAwXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHZhciB4ID0gZGlyZWN0aW9uICE9PSBcImhvcml6b250YWxcIiA/ICggKCBwZXJjZW50IHx8IDEwMCApIC8gMTAwICkgOiAxLFxuXHRcdFx0eSA9IGRpcmVjdGlvbiAhPT0gXCJ2ZXJ0aWNhbFwiID8gKCAoIHBlcmNlbnQgfHwgMTAwICkgLyAxMDAgKSA6IDE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aGVpZ2h0OiBlbGVtZW50LmhlaWdodCgpICogeSxcblx0XHRcdHdpZHRoOiBlbGVtZW50LndpZHRoKCkgKiB4LFxuXHRcdFx0b3V0ZXJIZWlnaHQ6IGVsZW1lbnQub3V0ZXJIZWlnaHQoKSAqIHksXG5cdFx0XHRvdXRlcldpZHRoOiBlbGVtZW50Lm91dGVyV2lkdGgoKSAqIHhcblx0XHR9O1xuXG5cdH0sXG5cblx0Y2xpcFRvQm94OiBmdW5jdGlvbiggYW5pbWF0aW9uICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHR3aWR0aDogYW5pbWF0aW9uLmNsaXAucmlnaHQgLSBhbmltYXRpb24uY2xpcC5sZWZ0LFxuXHRcdFx0aGVpZ2h0OiBhbmltYXRpb24uY2xpcC5ib3R0b20gLSBhbmltYXRpb24uY2xpcC50b3AsXG5cdFx0XHRsZWZ0OiBhbmltYXRpb24uY2xpcC5sZWZ0LFxuXHRcdFx0dG9wOiBhbmltYXRpb24uY2xpcC50b3Bcblx0XHR9O1xuXHR9LFxuXG5cdC8vIEluamVjdHMgcmVjZW50bHkgcXVldWVkIGZ1bmN0aW9ucyB0byBiZSBmaXJzdCBpbiBsaW5lIChhZnRlciBcImlucHJvZ3Jlc3NcIilcblx0dW5zaGlmdDogZnVuY3Rpb24oIGVsZW1lbnQsIHF1ZXVlTGVuZ3RoLCBjb3VudCApIHtcblx0XHR2YXIgcXVldWUgPSBlbGVtZW50LnF1ZXVlKCk7XG5cblx0XHRpZiAoIHF1ZXVlTGVuZ3RoID4gMSApIHtcblx0XHRcdHF1ZXVlLnNwbGljZS5hcHBseSggcXVldWUsXG5cdFx0XHRcdFsgMSwgMCBdLmNvbmNhdCggcXVldWUuc3BsaWNlKCBxdWV1ZUxlbmd0aCwgY291bnQgKSApICk7XG5cdFx0fVxuXHRcdGVsZW1lbnQuZGVxdWV1ZSgpO1xuXHR9LFxuXG5cdHNhdmVTdHlsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0ZWxlbWVudC5kYXRhKCBkYXRhU3BhY2VTdHlsZSwgZWxlbWVudFsgMCBdLnN0eWxlLmNzc1RleHQgKTtcblx0fSxcblxuXHRyZXN0b3JlU3R5bGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuXHRcdGVsZW1lbnRbIDAgXS5zdHlsZS5jc3NUZXh0ID0gZWxlbWVudC5kYXRhKCBkYXRhU3BhY2VTdHlsZSApIHx8IFwiXCI7XG5cdFx0ZWxlbWVudC5yZW1vdmVEYXRhKCBkYXRhU3BhY2VTdHlsZSApO1xuXHR9LFxuXG5cdG1vZGU6IGZ1bmN0aW9uKCBlbGVtZW50LCBtb2RlICkge1xuXHRcdHZhciBoaWRkZW4gPSBlbGVtZW50LmlzKCBcIjpoaWRkZW5cIiApO1xuXG5cdFx0aWYgKCBtb2RlID09PSBcInRvZ2dsZVwiICkge1xuXHRcdFx0bW9kZSA9IGhpZGRlbiA/IFwic2hvd1wiIDogXCJoaWRlXCI7XG5cdFx0fVxuXHRcdGlmICggaGlkZGVuID8gbW9kZSA9PT0gXCJoaWRlXCIgOiBtb2RlID09PSBcInNob3dcIiApIHtcblx0XHRcdG1vZGUgPSBcIm5vbmVcIjtcblx0XHR9XG5cdFx0cmV0dXJuIG1vZGU7XG5cdH0sXG5cblx0Ly8gVHJhbnNsYXRlcyBhIFt0b3AsbGVmdF0gYXJyYXkgaW50byBhIGJhc2VsaW5lIHZhbHVlXG5cdGdldEJhc2VsaW5lOiBmdW5jdGlvbiggb3JpZ2luLCBvcmlnaW5hbCApIHtcblx0XHR2YXIgeSwgeDtcblxuXHRcdHN3aXRjaCAoIG9yaWdpblsgMCBdICkge1xuXHRcdGNhc2UgXCJ0b3BcIjpcblx0XHRcdHkgPSAwO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIm1pZGRsZVwiOlxuXHRcdFx0eSA9IDAuNTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJib3R0b21cIjpcblx0XHRcdHkgPSAxO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHkgPSBvcmlnaW5bIDAgXSAvIG9yaWdpbmFsLmhlaWdodDtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKCBvcmlnaW5bIDEgXSApIHtcblx0XHRjYXNlIFwibGVmdFwiOlxuXHRcdFx0eCA9IDA7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiY2VudGVyXCI6XG5cdFx0XHR4ID0gMC41O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInJpZ2h0XCI6XG5cdFx0XHR4ID0gMTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR4ID0gb3JpZ2luWyAxIF0gLyBvcmlnaW5hbC53aWR0aDtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0eDogeCxcblx0XHRcdHk6IHlcblx0XHR9O1xuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBwbGFjZWhvbGRlciBlbGVtZW50IHNvIHRoYXQgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY2FuIGJlIG1hZGUgYWJzb2x1dGVcblx0Y3JlYXRlUGxhY2Vob2xkZXI6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuXHRcdHZhciBwbGFjZWhvbGRlcixcblx0XHRcdGNzc1Bvc2l0aW9uID0gZWxlbWVudC5jc3MoIFwicG9zaXRpb25cIiApLFxuXHRcdFx0cG9zaXRpb24gPSBlbGVtZW50LnBvc2l0aW9uKCk7XG5cblx0XHQvLyBMb2NrIGluIG1hcmdpbnMgZmlyc3QgdG8gYWNjb3VudCBmb3IgZm9ybSBlbGVtZW50cywgd2hpY2hcblx0XHQvLyB3aWxsIGNoYW5nZSBtYXJnaW4gaWYgeW91IGV4cGxpY2l0bHkgc2V0IGhlaWdodFxuXHRcdC8vIHNlZTogaHR0cDovL2pzZmlkZGxlLm5ldC9KWlNNdC8zLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzgwXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpXG5cdFx0ZWxlbWVudC5jc3MoIHtcblx0XHRcdG1hcmdpblRvcDogZWxlbWVudC5jc3MoIFwibWFyZ2luVG9wXCIgKSxcblx0XHRcdG1hcmdpbkJvdHRvbTogZWxlbWVudC5jc3MoIFwibWFyZ2luQm90dG9tXCIgKSxcblx0XHRcdG1hcmdpbkxlZnQ6IGVsZW1lbnQuY3NzKCBcIm1hcmdpbkxlZnRcIiApLFxuXHRcdFx0bWFyZ2luUmlnaHQ6IGVsZW1lbnQuY3NzKCBcIm1hcmdpblJpZ2h0XCIgKVxuXHRcdH0gKVxuXHRcdC5vdXRlcldpZHRoKCBlbGVtZW50Lm91dGVyV2lkdGgoKSApXG5cdFx0Lm91dGVySGVpZ2h0KCBlbGVtZW50Lm91dGVySGVpZ2h0KCkgKTtcblxuXHRcdGlmICggL14oc3RhdGljfHJlbGF0aXZlKS8udGVzdCggY3NzUG9zaXRpb24gKSApIHtcblx0XHRcdGNzc1Bvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuXG5cdFx0XHRwbGFjZWhvbGRlciA9ICQoIFwiPFwiICsgZWxlbWVudFsgMCBdLm5vZGVOYW1lICsgXCI+XCIgKS5pbnNlcnRBZnRlciggZWxlbWVudCApLmNzcygge1xuXG5cdFx0XHRcdC8vIENvbnZlcnQgaW5saW5lIHRvIGlubGluZSBibG9jayB0byBhY2NvdW50IGZvciBpbmxpbmUgZWxlbWVudHNcblx0XHRcdFx0Ly8gdGhhdCB0dXJuIHRvIGlubGluZSBibG9jayBiYXNlZCBvbiBjb250ZW50IChsaWtlIGltZylcblx0XHRcdFx0ZGlzcGxheTogL14oaW5saW5lfHJ1YnkpLy50ZXN0KCBlbGVtZW50LmNzcyggXCJkaXNwbGF5XCIgKSApID9cblx0XHRcdFx0XHRcImlubGluZS1ibG9ja1wiIDpcblx0XHRcdFx0XHRcImJsb2NrXCIsXG5cdFx0XHRcdHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsXG5cblx0XHRcdFx0Ly8gTWFyZ2lucyBuZWVkIHRvIGJlIHNldCB0byBhY2NvdW50IGZvciBtYXJnaW4gY29sbGFwc2Vcblx0XHRcdFx0bWFyZ2luVG9wOiBlbGVtZW50LmNzcyggXCJtYXJnaW5Ub3BcIiApLFxuXHRcdFx0XHRtYXJnaW5Cb3R0b206IGVsZW1lbnQuY3NzKCBcIm1hcmdpbkJvdHRvbVwiICksXG5cdFx0XHRcdG1hcmdpbkxlZnQ6IGVsZW1lbnQuY3NzKCBcIm1hcmdpbkxlZnRcIiApLFxuXHRcdFx0XHRtYXJnaW5SaWdodDogZWxlbWVudC5jc3MoIFwibWFyZ2luUmlnaHRcIiApLFxuXHRcdFx0XHRcImZsb2F0XCI6IGVsZW1lbnQuY3NzKCBcImZsb2F0XCIgKVxuXHRcdFx0fSApXG5cdFx0XHQub3V0ZXJXaWR0aCggZWxlbWVudC5vdXRlcldpZHRoKCkgKVxuXHRcdFx0Lm91dGVySGVpZ2h0KCBlbGVtZW50Lm91dGVySGVpZ2h0KCkgKVxuXHRcdFx0LmFkZENsYXNzKCBcInVpLWVmZmVjdHMtcGxhY2Vob2xkZXJcIiApO1xuXG5cdFx0XHRlbGVtZW50LmRhdGEoIGRhdGFTcGFjZSArIFwicGxhY2Vob2xkZXJcIiwgcGxhY2Vob2xkZXIgKTtcblx0XHR9XG5cblx0XHRlbGVtZW50LmNzcygge1xuXHRcdFx0cG9zaXRpb246IGNzc1Bvc2l0aW9uLFxuXHRcdFx0bGVmdDogcG9zaXRpb24ubGVmdCxcblx0XHRcdHRvcDogcG9zaXRpb24udG9wXG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHBsYWNlaG9sZGVyO1xuXHR9LFxuXG5cdHJlbW92ZVBsYWNlaG9sZGVyOiBmdW5jdGlvbiggZWxlbWVudCApIHtcblx0XHR2YXIgZGF0YUtleSA9IGRhdGFTcGFjZSArIFwicGxhY2Vob2xkZXJcIixcblx0XHRcdFx0cGxhY2Vob2xkZXIgPSBlbGVtZW50LmRhdGEoIGRhdGFLZXkgKTtcblxuXHRcdGlmICggcGxhY2Vob2xkZXIgKSB7XG5cdFx0XHRwbGFjZWhvbGRlci5yZW1vdmUoKTtcblx0XHRcdGVsZW1lbnQucmVtb3ZlRGF0YSggZGF0YUtleSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBSZW1vdmVzIGEgcGxhY2Vob2xkZXIgaWYgaXQgZXhpc3RzIGFuZCByZXN0b3Jlc1xuXHQvLyBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBtb2RpZmllZCBkdXJpbmcgcGxhY2Vob2xkZXIgY3JlYXRpb25cblx0Y2xlYW5VcDogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0JC5lZmZlY3RzLnJlc3RvcmVTdHlsZSggZWxlbWVudCApO1xuXHRcdCQuZWZmZWN0cy5yZW1vdmVQbGFjZWhvbGRlciggZWxlbWVudCApO1xuXHR9LFxuXG5cdHNldFRyYW5zaXRpb246IGZ1bmN0aW9uKCBlbGVtZW50LCBsaXN0LCBmYWN0b3IsIHZhbHVlICkge1xuXHRcdHZhbHVlID0gdmFsdWUgfHwge307XG5cdFx0JC5lYWNoKCBsaXN0LCBmdW5jdGlvbiggaSwgeCApIHtcblx0XHRcdHZhciB1bml0ID0gZWxlbWVudC5jc3NVbml0KCB4ICk7XG5cdFx0XHRpZiAoIHVuaXRbIDAgXSA+IDAgKSB7XG5cdFx0XHRcdHZhbHVlWyB4IF0gPSB1bml0WyAwIF0gKiBmYWN0b3IgKyB1bml0WyAxIF07XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxufSApO1xuXG4vLyBSZXR1cm4gYW4gZWZmZWN0IG9wdGlvbnMgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczpcbmZ1bmN0aW9uIF9ub3JtYWxpemVBcmd1bWVudHMoIGVmZmVjdCwgb3B0aW9ucywgc3BlZWQsIGNhbGxiYWNrICkge1xuXG5cdC8vIEFsbG93IHBhc3NpbmcgYWxsIG9wdGlvbnMgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxuXHRpZiAoICQuaXNQbGFpbk9iamVjdCggZWZmZWN0ICkgKSB7XG5cdFx0b3B0aW9ucyA9IGVmZmVjdDtcblx0XHRlZmZlY3QgPSBlZmZlY3QuZWZmZWN0O1xuXHR9XG5cblx0Ly8gQ29udmVydCB0byBhbiBvYmplY3Rcblx0ZWZmZWN0ID0geyBlZmZlY3Q6IGVmZmVjdCB9O1xuXG5cdC8vIENhdGNoIChlZmZlY3QsIG51bGwsIC4uLilcblx0aWYgKCBvcHRpb25zID09IG51bGwgKSB7XG5cdFx0b3B0aW9ucyA9IHt9O1xuXHR9XG5cblx0Ly8gQ2F0Y2ggKGVmZmVjdCwgY2FsbGJhY2spXG5cdGlmICggJC5pc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cdFx0Y2FsbGJhY2sgPSBvcHRpb25zO1xuXHRcdHNwZWVkID0gbnVsbDtcblx0XHRvcHRpb25zID0ge307XG5cdH1cblxuXHQvLyBDYXRjaCAoZWZmZWN0LCBzcGVlZCwgPylcblx0aWYgKCB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJudW1iZXJcIiB8fCAkLmZ4LnNwZWVkc1sgb3B0aW9ucyBdICkge1xuXHRcdGNhbGxiYWNrID0gc3BlZWQ7XG5cdFx0c3BlZWQgPSBvcHRpb25zO1xuXHRcdG9wdGlvbnMgPSB7fTtcblx0fVxuXG5cdC8vIENhdGNoIChlZmZlY3QsIG9wdGlvbnMsIGNhbGxiYWNrKVxuXHRpZiAoICQuaXNGdW5jdGlvbiggc3BlZWQgKSApIHtcblx0XHRjYWxsYmFjayA9IHNwZWVkO1xuXHRcdHNwZWVkID0gbnVsbDtcblx0fVxuXG5cdC8vIEFkZCBvcHRpb25zIHRvIGVmZmVjdFxuXHRpZiAoIG9wdGlvbnMgKSB7XG5cdFx0JC5leHRlbmQoIGVmZmVjdCwgb3B0aW9ucyApO1xuXHR9XG5cblx0c3BlZWQgPSBzcGVlZCB8fCBvcHRpb25zLmR1cmF0aW9uO1xuXHRlZmZlY3QuZHVyYXRpb24gPSAkLmZ4Lm9mZiA/IDAgOlxuXHRcdHR5cGVvZiBzcGVlZCA9PT0gXCJudW1iZXJcIiA/IHNwZWVkIDpcblx0XHRzcGVlZCBpbiAkLmZ4LnNwZWVkcyA/ICQuZnguc3BlZWRzWyBzcGVlZCBdIDpcblx0XHQkLmZ4LnNwZWVkcy5fZGVmYXVsdDtcblxuXHRlZmZlY3QuY29tcGxldGUgPSBjYWxsYmFjayB8fCBvcHRpb25zLmNvbXBsZXRlO1xuXG5cdHJldHVybiBlZmZlY3Q7XG59XG5cbmZ1bmN0aW9uIHN0YW5kYXJkQW5pbWF0aW9uT3B0aW9uKCBvcHRpb24gKSB7XG5cblx0Ly8gVmFsaWQgc3RhbmRhcmQgc3BlZWRzIChub3RoaW5nLCBudW1iZXIsIG5hbWVkIHNwZWVkKVxuXHRpZiAoICFvcHRpb24gfHwgdHlwZW9mIG9wdGlvbiA9PT0gXCJudW1iZXJcIiB8fCAkLmZ4LnNwZWVkc1sgb3B0aW9uIF0gKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBJbnZhbGlkIHN0cmluZ3MgLSB0cmVhdCBhcyBcIm5vcm1hbFwiIHNwZWVkXG5cdGlmICggdHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIiAmJiAhJC5lZmZlY3RzLmVmZmVjdFsgb3B0aW9uIF0gKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBDb21wbGV0ZSBjYWxsYmFja1xuXHRpZiAoICQuaXNGdW5jdGlvbiggb3B0aW9uICkgKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvLyBPcHRpb25zIGhhc2ggKGJ1dCBub3QgbmFtaW5nIGFuIGVmZmVjdClcblx0aWYgKCB0eXBlb2Ygb3B0aW9uID09PSBcIm9iamVjdFwiICYmICFvcHRpb24uZWZmZWN0ICkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gRGlkbid0IG1hdGNoIGFueSBzdGFuZGFyZCBBUElcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4kLmZuLmV4dGVuZCgge1xuXHRlZmZlY3Q6IGZ1bmN0aW9uKCAvKiBlZmZlY3QsIG9wdGlvbnMsIHNwZWVkLCBjYWxsYmFjayAqLyApIHtcblx0XHR2YXIgYXJncyA9IF9ub3JtYWxpemVBcmd1bWVudHMuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApLFxuXHRcdFx0ZWZmZWN0TWV0aG9kID0gJC5lZmZlY3RzLmVmZmVjdFsgYXJncy5lZmZlY3QgXSxcblx0XHRcdGRlZmF1bHRNb2RlID0gZWZmZWN0TWV0aG9kLm1vZGUsXG5cdFx0XHRxdWV1ZSA9IGFyZ3MucXVldWUsXG5cdFx0XHRxdWV1ZU5hbWUgPSBxdWV1ZSB8fCBcImZ4XCIsXG5cdFx0XHRjb21wbGV0ZSA9IGFyZ3MuY29tcGxldGUsXG5cdFx0XHRtb2RlID0gYXJncy5tb2RlLFxuXHRcdFx0bW9kZXMgPSBbXSxcblx0XHRcdHByZWZpbHRlciA9IGZ1bmN0aW9uKCBuZXh0ICkge1xuXHRcdFx0XHR2YXIgZWwgPSAkKCB0aGlzICksXG5cdFx0XHRcdFx0bm9ybWFsaXplZE1vZGUgPSAkLmVmZmVjdHMubW9kZSggZWwsIG1vZGUgKSB8fCBkZWZhdWx0TW9kZTtcblxuXHRcdFx0XHQvLyBTZW50aW5lbCBmb3IgZHVjay1wdW5jaGluZyB0aGUgOmFuaW1hdGVkIHBzdWVkby1zZWxlY3RvclxuXHRcdFx0XHRlbC5kYXRhKCBkYXRhU3BhY2VBbmltYXRlZCwgdHJ1ZSApO1xuXG5cdFx0XHRcdC8vIFNhdmUgZWZmZWN0IG1vZGUgZm9yIGxhdGVyIHVzZSxcblx0XHRcdFx0Ly8gd2UgY2FuJ3QganVzdCBjYWxsICQuZWZmZWN0cy5tb2RlIGFnYWluIGxhdGVyLFxuXHRcdFx0XHQvLyBhcyB0aGUgLnNob3coKSBiZWxvdyBkZXN0cm95cyB0aGUgaW5pdGlhbCBzdGF0ZVxuXHRcdFx0XHRtb2Rlcy5wdXNoKCBub3JtYWxpemVkTW9kZSApO1xuXG5cdFx0XHRcdC8vIFNlZSAkLnVpQmFja0NvbXBhdCBpbnNpZGUgb2YgcnVuKCkgZm9yIHJlbW92YWwgb2YgZGVmYXVsdE1vZGUgaW4gMS4xM1xuXHRcdFx0XHRpZiAoIGRlZmF1bHRNb2RlICYmICggbm9ybWFsaXplZE1vZGUgPT09IFwic2hvd1wiIHx8XG5cdFx0XHRcdFx0XHQoIG5vcm1hbGl6ZWRNb2RlID09PSBkZWZhdWx0TW9kZSAmJiBub3JtYWxpemVkTW9kZSA9PT0gXCJoaWRlXCIgKSApICkge1xuXHRcdFx0XHRcdGVsLnNob3coKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggIWRlZmF1bHRNb2RlIHx8IG5vcm1hbGl6ZWRNb2RlICE9PSBcIm5vbmVcIiApIHtcblx0XHRcdFx0XHQkLmVmZmVjdHMuc2F2ZVN0eWxlKCBlbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCAkLmlzRnVuY3Rpb24oIG5leHQgKSApIHtcblx0XHRcdFx0XHRuZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoICQuZngub2ZmIHx8ICFlZmZlY3RNZXRob2QgKSB7XG5cblx0XHRcdC8vIERlbGVnYXRlIHRvIHRoZSBvcmlnaW5hbCBtZXRob2QgKGUuZy4sIC5zaG93KCkpIGlmIHBvc3NpYmxlXG5cdFx0XHRpZiAoIG1vZGUgKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzWyBtb2RlIF0oIGFyZ3MuZHVyYXRpb24sIGNvbXBsZXRlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlICkge1xuXHRcdFx0XHRcdFx0Y29tcGxldGUuY2FsbCggdGhpcyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHJ1biggbmV4dCApIHtcblx0XHRcdHZhciBlbGVtID0gJCggdGhpcyApO1xuXG5cdFx0XHRmdW5jdGlvbiBjbGVhbnVwKCkge1xuXHRcdFx0XHRlbGVtLnJlbW92ZURhdGEoIGRhdGFTcGFjZUFuaW1hdGVkICk7XG5cblx0XHRcdFx0JC5lZmZlY3RzLmNsZWFuVXAoIGVsZW0gKTtcblxuXHRcdFx0XHRpZiAoIGFyZ3MubW9kZSA9PT0gXCJoaWRlXCIgKSB7XG5cdFx0XHRcdFx0ZWxlbS5oaWRlKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkb25lKCk7XG5cdFx0XHR9XG5cblx0XHRcdGZ1bmN0aW9uIGRvbmUoKSB7XG5cdFx0XHRcdGlmICggJC5pc0Z1bmN0aW9uKCBjb21wbGV0ZSApICkge1xuXHRcdFx0XHRcdGNvbXBsZXRlLmNhbGwoIGVsZW1bIDAgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCAkLmlzRnVuY3Rpb24oIG5leHQgKSApIHtcblx0XHRcdFx0XHRuZXh0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gT3ZlcnJpZGUgbW9kZSBvcHRpb24gb24gYSBwZXIgZWxlbWVudCBiYXNpcyxcblx0XHRcdC8vIGFzIHRvZ2dsZSBjYW4gYmUgZWl0aGVyIHNob3cgb3IgaGlkZSBkZXBlbmRpbmcgb24gZWxlbWVudCBzdGF0ZVxuXHRcdFx0YXJncy5tb2RlID0gbW9kZXMuc2hpZnQoKTtcblxuXHRcdFx0aWYgKCAkLnVpQmFja0NvbXBhdCAhPT0gZmFsc2UgJiYgIWRlZmF1bHRNb2RlICkge1xuXHRcdFx0XHRpZiAoIGVsZW0uaXMoIFwiOmhpZGRlblwiICkgPyBtb2RlID09PSBcImhpZGVcIiA6IG1vZGUgPT09IFwic2hvd1wiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FsbCB0aGUgY29yZSBtZXRob2QgdG8gdHJhY2sgXCJvbGRkaXNwbGF5XCIgcHJvcGVybHlcblx0XHRcdFx0XHRlbGVtWyBtb2RlIF0oKTtcblx0XHRcdFx0XHRkb25lKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWZmZWN0TWV0aG9kLmNhbGwoIGVsZW1bIDAgXSwgYXJncywgZG9uZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIGFyZ3MubW9kZSA9PT0gXCJub25lXCIgKSB7XG5cblx0XHRcdFx0XHQvLyBDYWxsIHRoZSBjb3JlIG1ldGhvZCB0byB0cmFjayBcIm9sZGRpc3BsYXlcIiBwcm9wZXJseVxuXHRcdFx0XHRcdGVsZW1bIG1vZGUgXSgpO1xuXHRcdFx0XHRcdGRvbmUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlZmZlY3RNZXRob2QuY2FsbCggZWxlbVsgMCBdLCBhcmdzLCBjbGVhbnVwICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSdW4gcHJlZmlsdGVyIG9uIGFsbCBlbGVtZW50cyBmaXJzdCB0byBlbnN1cmUgdGhhdFxuXHRcdC8vIGFueSBzaG93aW5nIG9yIGhpZGluZyBoYXBwZW5zIGJlZm9yZSBwbGFjZWhvbGRlciBjcmVhdGlvbixcblx0XHQvLyB3aGljaCBlbnN1cmVzIHRoYXQgYW55IGxheW91dCBjaGFuZ2VzIGFyZSBjb3JyZWN0bHkgY2FwdHVyZWQuXG5cdFx0cmV0dXJuIHF1ZXVlID09PSBmYWxzZSA/XG5cdFx0XHR0aGlzLmVhY2goIHByZWZpbHRlciApLmVhY2goIHJ1biApIDpcblx0XHRcdHRoaXMucXVldWUoIHF1ZXVlTmFtZSwgcHJlZmlsdGVyICkucXVldWUoIHF1ZXVlTmFtZSwgcnVuICk7XG5cdH0sXG5cblx0c2hvdzogKCBmdW5jdGlvbiggb3JpZyApIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oIG9wdGlvbiApIHtcblx0XHRcdGlmICggc3RhbmRhcmRBbmltYXRpb25PcHRpb24oIG9wdGlvbiApICkge1xuXHRcdFx0XHRyZXR1cm4gb3JpZy5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgYXJncyA9IF9ub3JtYWxpemVBcmd1bWVudHMuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRhcmdzLm1vZGUgPSBcInNob3dcIjtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZWZmZWN0LmNhbGwoIHRoaXMsIGFyZ3MgKTtcblx0XHRcdH1cblx0XHR9O1xuXHR9ICkoICQuZm4uc2hvdyApLFxuXG5cdGhpZGU6ICggZnVuY3Rpb24oIG9yaWcgKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCBvcHRpb24gKSB7XG5cdFx0XHRpZiAoIHN0YW5kYXJkQW5pbWF0aW9uT3B0aW9uKCBvcHRpb24gKSApIHtcblx0XHRcdFx0cmV0dXJuIG9yaWcuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIGFyZ3MgPSBfbm9ybWFsaXplQXJndW1lbnRzLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0YXJncy5tb2RlID0gXCJoaWRlXCI7XG5cdFx0XHRcdHJldHVybiB0aGlzLmVmZmVjdC5jYWxsKCB0aGlzLCBhcmdzICk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fSApKCAkLmZuLmhpZGUgKSxcblxuXHR0b2dnbGU6ICggZnVuY3Rpb24oIG9yaWcgKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCBvcHRpb24gKSB7XG5cdFx0XHRpZiAoIHN0YW5kYXJkQW5pbWF0aW9uT3B0aW9uKCBvcHRpb24gKSB8fCB0eXBlb2Ygb3B0aW9uID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0cmV0dXJuIG9yaWcuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIGFyZ3MgPSBfbm9ybWFsaXplQXJndW1lbnRzLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0YXJncy5tb2RlID0gXCJ0b2dnbGVcIjtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZWZmZWN0LmNhbGwoIHRoaXMsIGFyZ3MgKTtcblx0XHRcdH1cblx0XHR9O1xuXHR9ICkoICQuZm4udG9nZ2xlICksXG5cblx0Y3NzVW5pdDogZnVuY3Rpb24oIGtleSApIHtcblx0XHR2YXIgc3R5bGUgPSB0aGlzLmNzcygga2V5ICksXG5cdFx0XHR2YWwgPSBbXTtcblxuXHRcdCQuZWFjaCggWyBcImVtXCIsIFwicHhcIiwgXCIlXCIsIFwicHRcIiBdLCBmdW5jdGlvbiggaSwgdW5pdCApIHtcblx0XHRcdGlmICggc3R5bGUuaW5kZXhPZiggdW5pdCApID4gMCApIHtcblx0XHRcdFx0dmFsID0gWyBwYXJzZUZsb2F0KCBzdHlsZSApLCB1bml0IF07XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiB2YWw7XG5cdH0sXG5cblx0Y3NzQ2xpcDogZnVuY3Rpb24oIGNsaXBPYmogKSB7XG5cdFx0aWYgKCBjbGlwT2JqICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY3NzKCBcImNsaXBcIiwgXCJyZWN0KFwiICsgY2xpcE9iai50b3AgKyBcInB4IFwiICsgY2xpcE9iai5yaWdodCArIFwicHggXCIgK1xuXHRcdFx0XHRjbGlwT2JqLmJvdHRvbSArIFwicHggXCIgKyBjbGlwT2JqLmxlZnQgKyBcInB4KVwiICk7XG5cdFx0fVxuXHRcdHJldHVybiBwYXJzZUNsaXAoIHRoaXMuY3NzKCBcImNsaXBcIiApLCB0aGlzICk7XG5cdH0sXG5cblx0dHJhbnNmZXI6IGZ1bmN0aW9uKCBvcHRpb25zLCBkb25lICkge1xuXHRcdHZhciBlbGVtZW50ID0gJCggdGhpcyApLFxuXHRcdFx0dGFyZ2V0ID0gJCggb3B0aW9ucy50byApLFxuXHRcdFx0dGFyZ2V0Rml4ZWQgPSB0YXJnZXQuY3NzKCBcInBvc2l0aW9uXCIgKSA9PT0gXCJmaXhlZFwiLFxuXHRcdFx0Ym9keSA9ICQoIFwiYm9keVwiICksXG5cdFx0XHRmaXhUb3AgPSB0YXJnZXRGaXhlZCA/IGJvZHkuc2Nyb2xsVG9wKCkgOiAwLFxuXHRcdFx0Zml4TGVmdCA9IHRhcmdldEZpeGVkID8gYm9keS5zY3JvbGxMZWZ0KCkgOiAwLFxuXHRcdFx0ZW5kUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0KCksXG5cdFx0XHRhbmltYXRpb24gPSB7XG5cdFx0XHRcdHRvcDogZW5kUG9zaXRpb24udG9wIC0gZml4VG9wLFxuXHRcdFx0XHRsZWZ0OiBlbmRQb3NpdGlvbi5sZWZ0IC0gZml4TGVmdCxcblx0XHRcdFx0aGVpZ2h0OiB0YXJnZXQuaW5uZXJIZWlnaHQoKSxcblx0XHRcdFx0d2lkdGg6IHRhcmdldC5pbm5lcldpZHRoKClcblx0XHRcdH0sXG5cdFx0XHRzdGFydFBvc2l0aW9uID0gZWxlbWVudC5vZmZzZXQoKSxcblx0XHRcdHRyYW5zZmVyID0gJCggXCI8ZGl2IGNsYXNzPSd1aS1lZmZlY3RzLXRyYW5zZmVyJz48L2Rpdj5cIiApXG5cdFx0XHRcdC5hcHBlbmRUbyggXCJib2R5XCIgKVxuXHRcdFx0XHQuYWRkQ2xhc3MoIG9wdGlvbnMuY2xhc3NOYW1lIClcblx0XHRcdFx0LmNzcygge1xuXHRcdFx0XHRcdHRvcDogc3RhcnRQb3NpdGlvbi50b3AgLSBmaXhUb3AsXG5cdFx0XHRcdFx0bGVmdDogc3RhcnRQb3NpdGlvbi5sZWZ0IC0gZml4TGVmdCxcblx0XHRcdFx0XHRoZWlnaHQ6IGVsZW1lbnQuaW5uZXJIZWlnaHQoKSxcblx0XHRcdFx0XHR3aWR0aDogZWxlbWVudC5pbm5lcldpZHRoKCksXG5cdFx0XHRcdFx0cG9zaXRpb246IHRhcmdldEZpeGVkID8gXCJmaXhlZFwiIDogXCJhYnNvbHV0ZVwiXG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQuYW5pbWF0ZSggYW5pbWF0aW9uLCBvcHRpb25zLmR1cmF0aW9uLCBvcHRpb25zLmVhc2luZywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0dHJhbnNmZXIucmVtb3ZlKCk7XG5cdFx0XHRcdFx0aWYgKCAkLmlzRnVuY3Rpb24oIGRvbmUgKSApIHtcblx0XHRcdFx0XHRcdGRvbmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBwYXJzZUNsaXAoIHN0ciwgZWxlbWVudCApIHtcblx0XHR2YXIgb3V0ZXJXaWR0aCA9IGVsZW1lbnQub3V0ZXJXaWR0aCgpLFxuXHRcdFx0b3V0ZXJIZWlnaHQgPSBlbGVtZW50Lm91dGVySGVpZ2h0KCksXG5cdFx0XHRjbGlwUmVnZXggPSAvXnJlY3RcXCgoLT9cXGQqXFwuP1xcZCpweHwtP1xcZCslfGF1dG8pLD9cXHMqKC0/XFxkKlxcLj9cXGQqcHh8LT9cXGQrJXxhdXRvKSw/XFxzKigtP1xcZCpcXC4/XFxkKnB4fC0/XFxkKyV8YXV0byksP1xccyooLT9cXGQqXFwuP1xcZCpweHwtP1xcZCslfGF1dG8pXFwpJC8sXG5cdFx0XHR2YWx1ZXMgPSBjbGlwUmVnZXguZXhlYyggc3RyICkgfHwgWyBcIlwiLCAwLCBvdXRlcldpZHRoLCBvdXRlckhlaWdodCwgMCBdO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogcGFyc2VGbG9hdCggdmFsdWVzWyAxIF0gKSB8fCAwLFxuXHRcdFx0cmlnaHQ6IHZhbHVlc1sgMiBdID09PSBcImF1dG9cIiA/IG91dGVyV2lkdGggOiBwYXJzZUZsb2F0KCB2YWx1ZXNbIDIgXSApLFxuXHRcdFx0Ym90dG9tOiB2YWx1ZXNbIDMgXSA9PT0gXCJhdXRvXCIgPyBvdXRlckhlaWdodCA6IHBhcnNlRmxvYXQoIHZhbHVlc1sgMyBdICksXG5cdFx0XHRsZWZ0OiBwYXJzZUZsb2F0KCB2YWx1ZXNbIDQgXSApIHx8IDBcblx0XHR9O1xufVxuXG4kLmZ4LnN0ZXAuY2xpcCA9IGZ1bmN0aW9uKCBmeCApIHtcblx0aWYgKCAhZnguY2xpcEluaXQgKSB7XG5cdFx0Znguc3RhcnQgPSAkKCBmeC5lbGVtICkuY3NzQ2xpcCgpO1xuXHRcdGlmICggdHlwZW9mIGZ4LmVuZCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ4LmVuZCA9IHBhcnNlQ2xpcCggZnguZW5kLCBmeC5lbGVtICk7XG5cdFx0fVxuXHRcdGZ4LmNsaXBJbml0ID0gdHJ1ZTtcblx0fVxuXG5cdCQoIGZ4LmVsZW0gKS5jc3NDbGlwKCB7XG5cdFx0dG9wOiBmeC5wb3MgKiAoIGZ4LmVuZC50b3AgLSBmeC5zdGFydC50b3AgKSArIGZ4LnN0YXJ0LnRvcCxcblx0XHRyaWdodDogZngucG9zICogKCBmeC5lbmQucmlnaHQgLSBmeC5zdGFydC5yaWdodCApICsgZnguc3RhcnQucmlnaHQsXG5cdFx0Ym90dG9tOiBmeC5wb3MgKiAoIGZ4LmVuZC5ib3R0b20gLSBmeC5zdGFydC5ib3R0b20gKSArIGZ4LnN0YXJ0LmJvdHRvbSxcblx0XHRsZWZ0OiBmeC5wb3MgKiAoIGZ4LmVuZC5sZWZ0IC0gZnguc3RhcnQubGVmdCApICsgZnguc3RhcnQubGVmdFxuXHR9ICk7XG59O1xuXG59ICkoKTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFQVNJTkcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4oIGZ1bmN0aW9uKCkge1xuXG4vLyBCYXNlZCBvbiBlYXNpbmcgZXF1YXRpb25zIGZyb20gUm9iZXJ0IFBlbm5lciAoaHR0cDovL3d3dy5yb2JlcnRwZW5uZXIuY29tL2Vhc2luZylcblxudmFyIGJhc2VFYXNpbmdzID0ge307XG5cbiQuZWFjaCggWyBcIlF1YWRcIiwgXCJDdWJpY1wiLCBcIlF1YXJ0XCIsIFwiUXVpbnRcIiwgXCJFeHBvXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGJhc2VFYXNpbmdzWyBuYW1lIF0gPSBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gTWF0aC5wb3coIHAsIGkgKyAyICk7XG5cdH07XG59ICk7XG5cbiQuZXh0ZW5kKCBiYXNlRWFzaW5ncywge1xuXHRTaW5lOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gMSAtIE1hdGguY29zKCBwICogTWF0aC5QSSAvIDIgKTtcblx0fSxcblx0Q2lyYzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDEgLSBNYXRoLnNxcnQoIDEgLSBwICogcCApO1xuXHR9LFxuXHRFbGFzdGljOiBmdW5jdGlvbiggcCApIHtcblx0XHRyZXR1cm4gcCA9PT0gMCB8fCBwID09PSAxID8gcCA6XG5cdFx0XHQtTWF0aC5wb3coIDIsIDggKiAoIHAgLSAxICkgKSAqIE1hdGguc2luKCAoICggcCAtIDEgKSAqIDgwIC0gNy41ICkgKiBNYXRoLlBJIC8gMTUgKTtcblx0fSxcblx0QmFjazogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHAgKiBwICogKCAzICogcCAtIDIgKTtcblx0fSxcblx0Qm91bmNlOiBmdW5jdGlvbiggcCApIHtcblx0XHR2YXIgcG93Mixcblx0XHRcdGJvdW5jZSA9IDQ7XG5cblx0XHR3aGlsZSAoIHAgPCAoICggcG93MiA9IE1hdGgucG93KCAyLCAtLWJvdW5jZSApICkgLSAxICkgLyAxMSApIHt9XG5cdFx0cmV0dXJuIDEgLyBNYXRoLnBvdyggNCwgMyAtIGJvdW5jZSApIC0gNy41NjI1ICogTWF0aC5wb3coICggcG93MiAqIDMgLSAyICkgLyAyMiAtIHAsIDIgKTtcblx0fVxufSApO1xuXG4kLmVhY2goIGJhc2VFYXNpbmdzLCBmdW5jdGlvbiggbmFtZSwgZWFzZUluICkge1xuXHQkLmVhc2luZ1sgXCJlYXNlSW5cIiArIG5hbWUgXSA9IGVhc2VJbjtcblx0JC5lYXNpbmdbIFwiZWFzZU91dFwiICsgbmFtZSBdID0gZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDEgLSBlYXNlSW4oIDEgLSBwICk7XG5cdH07XG5cdCQuZWFzaW5nWyBcImVhc2VJbk91dFwiICsgbmFtZSBdID0gZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIHAgPCAwLjUgP1xuXHRcdFx0ZWFzZUluKCBwICogMiApIC8gMiA6XG5cdFx0XHQxIC0gZWFzZUluKCBwICogLTIgKyAyICkgLyAyO1xuXHR9O1xufSApO1xuXG59ICkoKTtcblxudmFyIGVmZmVjdCA9ICQuZWZmZWN0cztcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBFZmZlY3RzIEJsaW5kIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBCbGluZCBFZmZlY3Rcbi8vPj5ncm91cDogRWZmZWN0c1xuLy8+PmRlc2NyaXB0aW9uOiBCbGluZHMgdGhlIGVsZW1lbnQuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vYmxpbmQtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0QmxpbmQgPSAkLmVmZmVjdHMuZGVmaW5lKCBcImJsaW5kXCIsIFwiaGlkZVwiLCBmdW5jdGlvbiggb3B0aW9ucywgZG9uZSApIHtcblx0dmFyIG1hcCA9IHtcblx0XHRcdHVwOiBbIFwiYm90dG9tXCIsIFwidG9wXCIgXSxcblx0XHRcdHZlcnRpY2FsOiBbIFwiYm90dG9tXCIsIFwidG9wXCIgXSxcblx0XHRcdGRvd246IFsgXCJ0b3BcIiwgXCJib3R0b21cIiBdLFxuXHRcdFx0bGVmdDogWyBcInJpZ2h0XCIsIFwibGVmdFwiIF0sXG5cdFx0XHRob3Jpem9udGFsOiBbIFwicmlnaHRcIiwgXCJsZWZ0XCIgXSxcblx0XHRcdHJpZ2h0OiBbIFwibGVmdFwiLCBcInJpZ2h0XCIgXVxuXHRcdH0sXG5cdFx0ZWxlbWVudCA9ICQoIHRoaXMgKSxcblx0XHRkaXJlY3Rpb24gPSBvcHRpb25zLmRpcmVjdGlvbiB8fCBcInVwXCIsXG5cdFx0c3RhcnQgPSBlbGVtZW50LmNzc0NsaXAoKSxcblx0XHRhbmltYXRlID0geyBjbGlwOiAkLmV4dGVuZCgge30sIHN0YXJ0ICkgfSxcblx0XHRwbGFjZWhvbGRlciA9ICQuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlciggZWxlbWVudCApO1xuXG5cdGFuaW1hdGUuY2xpcFsgbWFwWyBkaXJlY3Rpb24gXVsgMCBdIF0gPSBhbmltYXRlLmNsaXBbIG1hcFsgZGlyZWN0aW9uIF1bIDEgXSBdO1xuXG5cdGlmICggb3B0aW9ucy5tb2RlID09PSBcInNob3dcIiApIHtcblx0XHRlbGVtZW50LmNzc0NsaXAoIGFuaW1hdGUuY2xpcCApO1xuXHRcdGlmICggcGxhY2Vob2xkZXIgKSB7XG5cdFx0XHRwbGFjZWhvbGRlci5jc3MoICQuZWZmZWN0cy5jbGlwVG9Cb3goIGFuaW1hdGUgKSApO1xuXHRcdH1cblxuXHRcdGFuaW1hdGUuY2xpcCA9IHN0YXJ0O1xuXHR9XG5cblx0aWYgKCBwbGFjZWhvbGRlciApIHtcblx0XHRwbGFjZWhvbGRlci5hbmltYXRlKCAkLmVmZmVjdHMuY2xpcFRvQm94KCBhbmltYXRlICksIG9wdGlvbnMuZHVyYXRpb24sIG9wdGlvbnMuZWFzaW5nICk7XG5cdH1cblxuXHRlbGVtZW50LmFuaW1hdGUoIGFuaW1hdGUsIHtcblx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0ZWFzaW5nOiBvcHRpb25zLmVhc2luZyxcblx0XHRjb21wbGV0ZTogZG9uZVxuXHR9ICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBCb3VuY2UgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IEJvdW5jZSBFZmZlY3Rcbi8vPj5ncm91cDogRWZmZWN0c1xuLy8+PmRlc2NyaXB0aW9uOiBCb3VuY2VzIGFuIGVsZW1lbnQgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgbiB0aW1lcy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9ib3VuY2UtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0Qm91bmNlID0gJC5lZmZlY3RzLmRlZmluZSggXCJib3VuY2VcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdHZhciB1cEFuaW0sIGRvd25BbmltLCByZWZWYWx1ZSxcblx0XHRlbGVtZW50ID0gJCggdGhpcyApLFxuXG5cdFx0Ly8gRGVmYXVsdHM6XG5cdFx0bW9kZSA9IG9wdGlvbnMubW9kZSxcblx0XHRoaWRlID0gbW9kZSA9PT0gXCJoaWRlXCIsXG5cdFx0c2hvdyA9IG1vZGUgPT09IFwic2hvd1wiLFxuXHRcdGRpcmVjdGlvbiA9IG9wdGlvbnMuZGlyZWN0aW9uIHx8IFwidXBcIixcblx0XHRkaXN0YW5jZSA9IG9wdGlvbnMuZGlzdGFuY2UsXG5cdFx0dGltZXMgPSBvcHRpb25zLnRpbWVzIHx8IDUsXG5cblx0XHQvLyBOdW1iZXIgb2YgaW50ZXJuYWwgYW5pbWF0aW9uc1xuXHRcdGFuaW1zID0gdGltZXMgKiAyICsgKCBzaG93IHx8IGhpZGUgPyAxIDogMCApLFxuXHRcdHNwZWVkID0gb3B0aW9ucy5kdXJhdGlvbiAvIGFuaW1zLFxuXHRcdGVhc2luZyA9IG9wdGlvbnMuZWFzaW5nLFxuXG5cdFx0Ly8gVXRpbGl0eTpcblx0XHRyZWYgPSAoIGRpcmVjdGlvbiA9PT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJkb3duXCIgKSA/IFwidG9wXCIgOiBcImxlZnRcIixcblx0XHRtb3Rpb24gPSAoIGRpcmVjdGlvbiA9PT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgKSxcblx0XHRpID0gMCxcblxuXHRcdHF1ZXVlbGVuID0gZWxlbWVudC5xdWV1ZSgpLmxlbmd0aDtcblxuXHQkLmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIoIGVsZW1lbnQgKTtcblxuXHRyZWZWYWx1ZSA9IGVsZW1lbnQuY3NzKCByZWYgKTtcblxuXHQvLyBEZWZhdWx0IGRpc3RhbmNlIGZvciB0aGUgQklHR0VTVCBib3VuY2UgaXMgdGhlIG91dGVyIERpc3RhbmNlIC8gM1xuXHRpZiAoICFkaXN0YW5jZSApIHtcblx0XHRkaXN0YW5jZSA9IGVsZW1lbnRbIHJlZiA9PT0gXCJ0b3BcIiA/IFwib3V0ZXJIZWlnaHRcIiA6IFwib3V0ZXJXaWR0aFwiIF0oKSAvIDM7XG5cdH1cblxuXHRpZiAoIHNob3cgKSB7XG5cdFx0ZG93bkFuaW0gPSB7IG9wYWNpdHk6IDEgfTtcblx0XHRkb3duQW5pbVsgcmVmIF0gPSByZWZWYWx1ZTtcblxuXHRcdC8vIElmIHdlIGFyZSBzaG93aW5nLCBmb3JjZSBvcGFjaXR5IDAgYW5kIHNldCB0aGUgaW5pdGlhbCBwb3NpdGlvblxuXHRcdC8vIHRoZW4gZG8gdGhlIFwiZmlyc3RcIiBhbmltYXRpb25cblx0XHRlbGVtZW50XG5cdFx0XHQuY3NzKCBcIm9wYWNpdHlcIiwgMCApXG5cdFx0XHQuY3NzKCByZWYsIG1vdGlvbiA/IC1kaXN0YW5jZSAqIDIgOiBkaXN0YW5jZSAqIDIgKVxuXHRcdFx0LmFuaW1hdGUoIGRvd25BbmltLCBzcGVlZCwgZWFzaW5nICk7XG5cdH1cblxuXHQvLyBTdGFydCBhdCB0aGUgc21hbGxlc3QgZGlzdGFuY2UgaWYgd2UgYXJlIGhpZGluZ1xuXHRpZiAoIGhpZGUgKSB7XG5cdFx0ZGlzdGFuY2UgPSBkaXN0YW5jZSAvIE1hdGgucG93KCAyLCB0aW1lcyAtIDEgKTtcblx0fVxuXG5cdGRvd25BbmltID0ge307XG5cdGRvd25BbmltWyByZWYgXSA9IHJlZlZhbHVlO1xuXG5cdC8vIEJvdW5jZXMgdXAvZG93bi9sZWZ0L3JpZ2h0IHRoZW4gYmFjayB0byAwIC0tIHRpbWVzICogMiBhbmltYXRpb25zIGhhcHBlbiBoZXJlXG5cdGZvciAoIDsgaSA8IHRpbWVzOyBpKysgKSB7XG5cdFx0dXBBbmltID0ge307XG5cdFx0dXBBbmltWyByZWYgXSA9ICggbW90aW9uID8gXCItPVwiIDogXCIrPVwiICkgKyBkaXN0YW5jZTtcblxuXHRcdGVsZW1lbnRcblx0XHRcdC5hbmltYXRlKCB1cEFuaW0sIHNwZWVkLCBlYXNpbmcgKVxuXHRcdFx0LmFuaW1hdGUoIGRvd25BbmltLCBzcGVlZCwgZWFzaW5nICk7XG5cblx0XHRkaXN0YW5jZSA9IGhpZGUgPyBkaXN0YW5jZSAqIDIgOiBkaXN0YW5jZSAvIDI7XG5cdH1cblxuXHQvLyBMYXN0IEJvdW5jZSB3aGVuIEhpZGluZ1xuXHRpZiAoIGhpZGUgKSB7XG5cdFx0dXBBbmltID0geyBvcGFjaXR5OiAwIH07XG5cdFx0dXBBbmltWyByZWYgXSA9ICggbW90aW9uID8gXCItPVwiIDogXCIrPVwiICkgKyBkaXN0YW5jZTtcblxuXHRcdGVsZW1lbnQuYW5pbWF0ZSggdXBBbmltLCBzcGVlZCwgZWFzaW5nICk7XG5cdH1cblxuXHRlbGVtZW50LnF1ZXVlKCBkb25lICk7XG5cblx0JC5lZmZlY3RzLnVuc2hpZnQoIGVsZW1lbnQsIHF1ZXVlbGVuLCBhbmltcyArIDEgKTtcbn0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBFZmZlY3RzIENsaXAgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IENsaXAgRWZmZWN0XG4vLz4+Z3JvdXA6IEVmZmVjdHNcbi8vPj5kZXNjcmlwdGlvbjogQ2xpcHMgdGhlIGVsZW1lbnQgb24gYW5kIG9mZiBsaWtlIGFuIG9sZCBUVi5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9jbGlwLWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0c0VmZmVjdENsaXAgPSAkLmVmZmVjdHMuZGVmaW5lKCBcImNsaXBcIiwgXCJoaWRlXCIsIGZ1bmN0aW9uKCBvcHRpb25zLCBkb25lICkge1xuXHR2YXIgc3RhcnQsXG5cdFx0YW5pbWF0ZSA9IHt9LFxuXHRcdGVsZW1lbnQgPSAkKCB0aGlzICksXG5cdFx0ZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb24gfHwgXCJ2ZXJ0aWNhbFwiLFxuXHRcdGJvdGggPSBkaXJlY3Rpb24gPT09IFwiYm90aFwiLFxuXHRcdGhvcml6b250YWwgPSBib3RoIHx8IGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIsXG5cdFx0dmVydGljYWwgPSBib3RoIHx8IGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiO1xuXG5cdHN0YXJ0ID0gZWxlbWVudC5jc3NDbGlwKCk7XG5cdGFuaW1hdGUuY2xpcCA9IHtcblx0XHR0b3A6IHZlcnRpY2FsID8gKCBzdGFydC5ib3R0b20gLSBzdGFydC50b3AgKSAvIDIgOiBzdGFydC50b3AsXG5cdFx0cmlnaHQ6IGhvcml6b250YWwgPyAoIHN0YXJ0LnJpZ2h0IC0gc3RhcnQubGVmdCApIC8gMiA6IHN0YXJ0LnJpZ2h0LFxuXHRcdGJvdHRvbTogdmVydGljYWwgPyAoIHN0YXJ0LmJvdHRvbSAtIHN0YXJ0LnRvcCApIC8gMiA6IHN0YXJ0LmJvdHRvbSxcblx0XHRsZWZ0OiBob3Jpem9udGFsID8gKCBzdGFydC5yaWdodCAtIHN0YXJ0LmxlZnQgKSAvIDIgOiBzdGFydC5sZWZ0XG5cdH07XG5cblx0JC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKCBlbGVtZW50ICk7XG5cblx0aWYgKCBvcHRpb25zLm1vZGUgPT09IFwic2hvd1wiICkge1xuXHRcdGVsZW1lbnQuY3NzQ2xpcCggYW5pbWF0ZS5jbGlwICk7XG5cdFx0YW5pbWF0ZS5jbGlwID0gc3RhcnQ7XG5cdH1cblxuXHRlbGVtZW50LmFuaW1hdGUoIGFuaW1hdGUsIHtcblx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0ZWFzaW5nOiBvcHRpb25zLmVhc2luZyxcblx0XHRjb21wbGV0ZTogZG9uZVxuXHR9ICk7XG5cbn0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBFZmZlY3RzIERyb3AgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IERyb3AgRWZmZWN0XG4vLz4+Z3JvdXA6IEVmZmVjdHNcbi8vPj5kZXNjcmlwdGlvbjogTW92ZXMgYW4gZWxlbWVudCBpbiBvbmUgZGlyZWN0aW9uIGFuZCBoaWRlcyBpdCBhdCB0aGUgc2FtZSB0aW1lLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2Ryb3AtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0RHJvcCA9ICQuZWZmZWN0cy5kZWZpbmUoIFwiZHJvcFwiLCBcImhpZGVcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cblx0dmFyIGRpc3RhbmNlLFxuXHRcdGVsZW1lbnQgPSAkKCB0aGlzICksXG5cdFx0bW9kZSA9IG9wdGlvbnMubW9kZSxcblx0XHRzaG93ID0gbW9kZSA9PT0gXCJzaG93XCIsXG5cdFx0ZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb24gfHwgXCJsZWZ0XCIsXG5cdFx0cmVmID0gKCBkaXJlY3Rpb24gPT09IFwidXBcIiB8fCBkaXJlY3Rpb24gPT09IFwiZG93blwiICkgPyBcInRvcFwiIDogXCJsZWZ0XCIsXG5cdFx0bW90aW9uID0gKCBkaXJlY3Rpb24gPT09IFwidXBcIiB8fCBkaXJlY3Rpb24gPT09IFwibGVmdFwiICkgPyBcIi09XCIgOiBcIis9XCIsXG5cdFx0b3Bwb3NpdGVNb3Rpb24gPSAoIG1vdGlvbiA9PT0gXCIrPVwiICkgPyBcIi09XCIgOiBcIis9XCIsXG5cdFx0YW5pbWF0aW9uID0ge1xuXHRcdFx0b3BhY2l0eTogMFxuXHRcdH07XG5cblx0JC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKCBlbGVtZW50ICk7XG5cblx0ZGlzdGFuY2UgPSBvcHRpb25zLmRpc3RhbmNlIHx8XG5cdFx0ZWxlbWVudFsgcmVmID09PSBcInRvcFwiID8gXCJvdXRlckhlaWdodFwiIDogXCJvdXRlcldpZHRoXCIgXSggdHJ1ZSApIC8gMjtcblxuXHRhbmltYXRpb25bIHJlZiBdID0gbW90aW9uICsgZGlzdGFuY2U7XG5cblx0aWYgKCBzaG93ICkge1xuXHRcdGVsZW1lbnQuY3NzKCBhbmltYXRpb24gKTtcblxuXHRcdGFuaW1hdGlvblsgcmVmIF0gPSBvcHBvc2l0ZU1vdGlvbiArIGRpc3RhbmNlO1xuXHRcdGFuaW1hdGlvbi5vcGFjaXR5ID0gMTtcblx0fVxuXG5cdC8vIEFuaW1hdGVcblx0ZWxlbWVudC5hbmltYXRlKCBhbmltYXRpb24sIHtcblx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0ZWFzaW5nOiBvcHRpb25zLmVhc2luZyxcblx0XHRjb21wbGV0ZTogZG9uZVxuXHR9ICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBFeHBsb2RlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBFeHBsb2RlIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLyBqc2NzOmRpc2FibGUgbWF4aW11bUxpbmVMZW5ndGhcbi8vPj5kZXNjcmlwdGlvbjogRXhwbG9kZXMgYW4gZWxlbWVudCBpbiBhbGwgZGlyZWN0aW9ucyBpbnRvIG4gcGllY2VzLiBJbXBsb2RlcyBhbiBlbGVtZW50IHRvIGl0cyBvcmlnaW5hbCB3aG9sZW5lc3MuXG4vLyBqc2NzOmVuYWJsZSBtYXhpbXVtTGluZUxlbmd0aFxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2V4cGxvZGUtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0RXhwbG9kZSA9ICQuZWZmZWN0cy5kZWZpbmUoIFwiZXhwbG9kZVwiLCBcImhpZGVcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cblx0dmFyIGksIGosIGxlZnQsIHRvcCwgbXgsIG15LFxuXHRcdHJvd3MgPSBvcHRpb25zLnBpZWNlcyA/IE1hdGgucm91bmQoIE1hdGguc3FydCggb3B0aW9ucy5waWVjZXMgKSApIDogMyxcblx0XHRjZWxscyA9IHJvd3MsXG5cdFx0ZWxlbWVudCA9ICQoIHRoaXMgKSxcblx0XHRtb2RlID0gb3B0aW9ucy5tb2RlLFxuXHRcdHNob3cgPSBtb2RlID09PSBcInNob3dcIixcblxuXHRcdC8vIFNob3cgYW5kIHRoZW4gdmlzaWJpbGl0eTpoaWRkZW4gdGhlIGVsZW1lbnQgYmVmb3JlIGNhbGN1bGF0aW5nIG9mZnNldFxuXHRcdG9mZnNldCA9IGVsZW1lbnQuc2hvdygpLmNzcyggXCJ2aXNpYmlsaXR5XCIsIFwiaGlkZGVuXCIgKS5vZmZzZXQoKSxcblxuXHRcdC8vIFdpZHRoIGFuZCBoZWlnaHQgb2YgYSBwaWVjZVxuXHRcdHdpZHRoID0gTWF0aC5jZWlsKCBlbGVtZW50Lm91dGVyV2lkdGgoKSAvIGNlbGxzICksXG5cdFx0aGVpZ2h0ID0gTWF0aC5jZWlsKCBlbGVtZW50Lm91dGVySGVpZ2h0KCkgLyByb3dzICksXG5cdFx0cGllY2VzID0gW107XG5cblx0Ly8gQ2hpbGRyZW4gYW5pbWF0ZSBjb21wbGV0ZTpcblx0ZnVuY3Rpb24gY2hpbGRDb21wbGV0ZSgpIHtcblx0XHRwaWVjZXMucHVzaCggdGhpcyApO1xuXHRcdGlmICggcGllY2VzLmxlbmd0aCA9PT0gcm93cyAqIGNlbGxzICkge1xuXHRcdFx0YW5pbUNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xvbmUgdGhlIGVsZW1lbnQgZm9yIGVhY2ggcm93IGFuZCBjZWxsLlxuXHRmb3IgKCBpID0gMDsgaSA8IHJvd3M7IGkrKyApIHsgLy8gPT09PlxuXHRcdHRvcCA9IG9mZnNldC50b3AgKyBpICogaGVpZ2h0O1xuXHRcdG15ID0gaSAtICggcm93cyAtIDEgKSAvIDI7XG5cblx0XHRmb3IgKCBqID0gMDsgaiA8IGNlbGxzOyBqKysgKSB7IC8vIHx8fFxuXHRcdFx0bGVmdCA9IG9mZnNldC5sZWZ0ICsgaiAqIHdpZHRoO1xuXHRcdFx0bXggPSBqIC0gKCBjZWxscyAtIDEgKSAvIDI7XG5cblx0XHRcdC8vIENyZWF0ZSBhIGNsb25lIG9mIHRoZSBub3cgaGlkZGVuIG1haW4gZWxlbWVudCB0aGF0IHdpbGwgYmUgYWJzb2x1dGUgcG9zaXRpb25lZFxuXHRcdFx0Ly8gd2l0aGluIGEgd3JhcHBlciBkaXYgb2ZmIHRoZSAtbGVmdCBhbmQgLXRvcCBlcXVhbCB0byBzaXplIG9mIG91ciBwaWVjZXNcblx0XHRcdGVsZW1lbnRcblx0XHRcdFx0LmNsb25lKClcblx0XHRcdFx0LmFwcGVuZFRvKCBcImJvZHlcIiApXG5cdFx0XHRcdC53cmFwKCBcIjxkaXY+PC9kaXY+XCIgKVxuXHRcdFx0XHQuY3NzKCB7XG5cdFx0XHRcdFx0cG9zaXRpb246IFwiYWJzb2x1dGVcIixcblx0XHRcdFx0XHR2aXNpYmlsaXR5OiBcInZpc2libGVcIixcblx0XHRcdFx0XHRsZWZ0OiAtaiAqIHdpZHRoLFxuXHRcdFx0XHRcdHRvcDogLWkgKiBoZWlnaHRcblx0XHRcdFx0fSApXG5cblx0XHRcdFx0Ly8gU2VsZWN0IHRoZSB3cmFwcGVyIC0gbWFrZSBpdCBvdmVyZmxvdzogaGlkZGVuIGFuZCBhYnNvbHV0ZSBwb3NpdGlvbmVkIGJhc2VkIG9uXG5cdFx0XHRcdC8vIHdoZXJlIHRoZSBvcmlnaW5hbCB3YXMgbG9jYXRlZCArbGVmdCBhbmQgK3RvcCBlcXVhbCB0byB0aGUgc2l6ZSBvZiBwaWVjZXNcblx0XHRcdFx0LnBhcmVudCgpXG5cdFx0XHRcdFx0LmFkZENsYXNzKCBcInVpLWVmZmVjdHMtZXhwbG9kZVwiIClcblx0XHRcdFx0XHQuY3NzKCB7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuXHRcdFx0XHRcdFx0b3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG5cdFx0XHRcdFx0XHR3aWR0aDogd2lkdGgsXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IGhlaWdodCxcblx0XHRcdFx0XHRcdGxlZnQ6IGxlZnQgKyAoIHNob3cgPyBteCAqIHdpZHRoIDogMCApLFxuXHRcdFx0XHRcdFx0dG9wOiB0b3AgKyAoIHNob3cgPyBteSAqIGhlaWdodCA6IDAgKSxcblx0XHRcdFx0XHRcdG9wYWNpdHk6IHNob3cgPyAwIDogMVxuXHRcdFx0XHRcdH0gKVxuXHRcdFx0XHRcdC5hbmltYXRlKCB7XG5cdFx0XHRcdFx0XHRsZWZ0OiBsZWZ0ICsgKCBzaG93ID8gMCA6IG14ICogd2lkdGggKSxcblx0XHRcdFx0XHRcdHRvcDogdG9wICsgKCBzaG93ID8gMCA6IG15ICogaGVpZ2h0ICksXG5cdFx0XHRcdFx0XHRvcGFjaXR5OiBzaG93ID8gMSA6IDBcblx0XHRcdFx0XHR9LCBvcHRpb25zLmR1cmF0aW9uIHx8IDUwMCwgb3B0aW9ucy5lYXNpbmcsIGNoaWxkQ29tcGxldGUgKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBhbmltQ29tcGxldGUoKSB7XG5cdFx0ZWxlbWVudC5jc3MoIHtcblx0XHRcdHZpc2liaWxpdHk6IFwidmlzaWJsZVwiXG5cdFx0fSApO1xuXHRcdCQoIHBpZWNlcyApLnJlbW92ZSgpO1xuXHRcdGRvbmUoKTtcblx0fVxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIEVmZmVjdHMgRmFkZSAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogRmFkZSBFZmZlY3Rcbi8vPj5ncm91cDogRWZmZWN0c1xuLy8+PmRlc2NyaXB0aW9uOiBGYWRlcyB0aGUgZWxlbWVudC5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9mYWRlLWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0c0VmZmVjdEZhZGUgPSAkLmVmZmVjdHMuZGVmaW5lKCBcImZhZGVcIiwgXCJ0b2dnbGVcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdHZhciBzaG93ID0gb3B0aW9ucy5tb2RlID09PSBcInNob3dcIjtcblxuXHQkKCB0aGlzIClcblx0XHQuY3NzKCBcIm9wYWNpdHlcIiwgc2hvdyA/IDAgOiAxIClcblx0XHQuYW5pbWF0ZSgge1xuXHRcdFx0b3BhY2l0eTogc2hvdyA/IDEgOiAwXG5cdFx0fSwge1xuXHRcdFx0cXVldWU6IGZhbHNlLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHRlYXNpbmc6IG9wdGlvbnMuZWFzaW5nLFxuXHRcdFx0Y29tcGxldGU6IGRvbmVcblx0XHR9ICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBGb2xkIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBGb2xkIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLz4+ZGVzY3JpcHRpb246IEZvbGRzIGFuIGVsZW1lbnQgZmlyc3QgaG9yaXpvbnRhbGx5IGFuZCB0aGVuIHZlcnRpY2FsbHkuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vZm9sZC1lZmZlY3QvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vZWZmZWN0L1xuXG5cblxudmFyIGVmZmVjdHNFZmZlY3RGb2xkID0gJC5lZmZlY3RzLmRlZmluZSggXCJmb2xkXCIsIFwiaGlkZVwiLCBmdW5jdGlvbiggb3B0aW9ucywgZG9uZSApIHtcblxuXHQvLyBDcmVhdGUgZWxlbWVudFxuXHR2YXIgZWxlbWVudCA9ICQoIHRoaXMgKSxcblx0XHRtb2RlID0gb3B0aW9ucy5tb2RlLFxuXHRcdHNob3cgPSBtb2RlID09PSBcInNob3dcIixcblx0XHRoaWRlID0gbW9kZSA9PT0gXCJoaWRlXCIsXG5cdFx0c2l6ZSA9IG9wdGlvbnMuc2l6ZSB8fCAxNSxcblx0XHRwZXJjZW50ID0gLyhbMC05XSspJS8uZXhlYyggc2l6ZSApLFxuXHRcdGhvcml6Rmlyc3QgPSAhIW9wdGlvbnMuaG9yaXpGaXJzdCxcblx0XHRyZWYgPSBob3JpekZpcnN0ID8gWyBcInJpZ2h0XCIsIFwiYm90dG9tXCIgXSA6IFsgXCJib3R0b21cIiwgXCJyaWdodFwiIF0sXG5cdFx0ZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uIC8gMixcblxuXHRcdHBsYWNlaG9sZGVyID0gJC5lZmZlY3RzLmNyZWF0ZVBsYWNlaG9sZGVyKCBlbGVtZW50ICksXG5cblx0XHRzdGFydCA9IGVsZW1lbnQuY3NzQ2xpcCgpLFxuXHRcdGFuaW1hdGlvbjEgPSB7IGNsaXA6ICQuZXh0ZW5kKCB7fSwgc3RhcnQgKSB9LFxuXHRcdGFuaW1hdGlvbjIgPSB7IGNsaXA6ICQuZXh0ZW5kKCB7fSwgc3RhcnQgKSB9LFxuXG5cdFx0ZGlzdGFuY2UgPSBbIHN0YXJ0WyByZWZbIDAgXSBdLCBzdGFydFsgcmVmWyAxIF0gXSBdLFxuXG5cdFx0cXVldWVsZW4gPSBlbGVtZW50LnF1ZXVlKCkubGVuZ3RoO1xuXG5cdGlmICggcGVyY2VudCApIHtcblx0XHRzaXplID0gcGFyc2VJbnQoIHBlcmNlbnRbIDEgXSwgMTAgKSAvIDEwMCAqIGRpc3RhbmNlWyBoaWRlID8gMCA6IDEgXTtcblx0fVxuXHRhbmltYXRpb24xLmNsaXBbIHJlZlsgMCBdIF0gPSBzaXplO1xuXHRhbmltYXRpb24yLmNsaXBbIHJlZlsgMCBdIF0gPSBzaXplO1xuXHRhbmltYXRpb24yLmNsaXBbIHJlZlsgMSBdIF0gPSAwO1xuXG5cdGlmICggc2hvdyApIHtcblx0XHRlbGVtZW50LmNzc0NsaXAoIGFuaW1hdGlvbjIuY2xpcCApO1xuXHRcdGlmICggcGxhY2Vob2xkZXIgKSB7XG5cdFx0XHRwbGFjZWhvbGRlci5jc3MoICQuZWZmZWN0cy5jbGlwVG9Cb3goIGFuaW1hdGlvbjIgKSApO1xuXHRcdH1cblxuXHRcdGFuaW1hdGlvbjIuY2xpcCA9IHN0YXJ0O1xuXHR9XG5cblx0Ly8gQW5pbWF0ZVxuXHRlbGVtZW50XG5cdFx0LnF1ZXVlKCBmdW5jdGlvbiggbmV4dCApIHtcblx0XHRcdGlmICggcGxhY2Vob2xkZXIgKSB7XG5cdFx0XHRcdHBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0LmFuaW1hdGUoICQuZWZmZWN0cy5jbGlwVG9Cb3goIGFuaW1hdGlvbjEgKSwgZHVyYXRpb24sIG9wdGlvbnMuZWFzaW5nIClcblx0XHRcdFx0XHQuYW5pbWF0ZSggJC5lZmZlY3RzLmNsaXBUb0JveCggYW5pbWF0aW9uMiApLCBkdXJhdGlvbiwgb3B0aW9ucy5lYXNpbmcgKTtcblx0XHRcdH1cblxuXHRcdFx0bmV4dCgpO1xuXHRcdH0gKVxuXHRcdC5hbmltYXRlKCBhbmltYXRpb24xLCBkdXJhdGlvbiwgb3B0aW9ucy5lYXNpbmcgKVxuXHRcdC5hbmltYXRlKCBhbmltYXRpb24yLCBkdXJhdGlvbiwgb3B0aW9ucy5lYXNpbmcgKVxuXHRcdC5xdWV1ZSggZG9uZSApO1xuXG5cdCQuZWZmZWN0cy51bnNoaWZ0KCBlbGVtZW50LCBxdWV1ZWxlbiwgNCApO1xufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIEVmZmVjdHMgSGlnaGxpZ2h0IDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBIaWdobGlnaHQgRWZmZWN0XG4vLz4+Z3JvdXA6IEVmZmVjdHNcbi8vPj5kZXNjcmlwdGlvbjogSGlnaGxpZ2h0cyB0aGUgYmFja2dyb3VuZCBvZiBhbiBlbGVtZW50IGluIGEgZGVmaW5lZCBjb2xvciBmb3IgYSBjdXN0b20gZHVyYXRpb24uXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vaGlnaGxpZ2h0LWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0c0VmZmVjdEhpZ2hsaWdodCA9ICQuZWZmZWN0cy5kZWZpbmUoIFwiaGlnaGxpZ2h0XCIsIFwic2hvd1wiLCBmdW5jdGlvbiggb3B0aW9ucywgZG9uZSApIHtcblx0dmFyIGVsZW1lbnQgPSAkKCB0aGlzICksXG5cdFx0YW5pbWF0aW9uID0ge1xuXHRcdFx0YmFja2dyb3VuZENvbG9yOiBlbGVtZW50LmNzcyggXCJiYWNrZ3JvdW5kQ29sb3JcIiApXG5cdFx0fTtcblxuXHRpZiAoIG9wdGlvbnMubW9kZSA9PT0gXCJoaWRlXCIgKSB7XG5cdFx0YW5pbWF0aW9uLm9wYWNpdHkgPSAwO1xuXHR9XG5cblx0JC5lZmZlY3RzLnNhdmVTdHlsZSggZWxlbWVudCApO1xuXG5cdGVsZW1lbnRcblx0XHQuY3NzKCB7XG5cdFx0XHRiYWNrZ3JvdW5kSW1hZ2U6IFwibm9uZVwiLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOiBvcHRpb25zLmNvbG9yIHx8IFwiI2ZmZmY5OVwiXG5cdFx0fSApXG5cdFx0LmFuaW1hdGUoIGFuaW1hdGlvbiwge1xuXHRcdFx0cXVldWU6IGZhbHNlLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHRlYXNpbmc6IG9wdGlvbnMuZWFzaW5nLFxuXHRcdFx0Y29tcGxldGU6IGRvbmVcblx0XHR9ICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBTaXplIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBTaXplIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLz4+ZGVzY3JpcHRpb246IFJlc2l6ZSBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc2l6ZS1lZmZlY3QvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vZWZmZWN0L1xuXG5cblxudmFyIGVmZmVjdHNFZmZlY3RTaXplID0gJC5lZmZlY3RzLmRlZmluZSggXCJzaXplXCIsIGZ1bmN0aW9uKCBvcHRpb25zLCBkb25lICkge1xuXG5cdC8vIENyZWF0ZSBlbGVtZW50XG5cdHZhciBiYXNlbGluZSwgZmFjdG9yLCB0ZW1wLFxuXHRcdGVsZW1lbnQgPSAkKCB0aGlzICksXG5cblx0XHQvLyBDb3B5IGZvciBjaGlsZHJlblxuXHRcdGNQcm9wcyA9IFsgXCJmb250U2l6ZVwiIF0sXG5cdFx0dlByb3BzID0gWyBcImJvcmRlclRvcFdpZHRoXCIsIFwiYm9yZGVyQm90dG9tV2lkdGhcIiwgXCJwYWRkaW5nVG9wXCIsIFwicGFkZGluZ0JvdHRvbVwiIF0sXG5cdFx0aFByb3BzID0gWyBcImJvcmRlckxlZnRXaWR0aFwiLCBcImJvcmRlclJpZ2h0V2lkdGhcIiwgXCJwYWRkaW5nTGVmdFwiLCBcInBhZGRpbmdSaWdodFwiIF0sXG5cblx0XHQvLyBTZXQgb3B0aW9uc1xuXHRcdG1vZGUgPSBvcHRpb25zLm1vZGUsXG5cdFx0cmVzdG9yZSA9IG1vZGUgIT09IFwiZWZmZWN0XCIsXG5cdFx0c2NhbGUgPSBvcHRpb25zLnNjYWxlIHx8IFwiYm90aFwiLFxuXHRcdG9yaWdpbiA9IG9wdGlvbnMub3JpZ2luIHx8IFsgXCJtaWRkbGVcIiwgXCJjZW50ZXJcIiBdLFxuXHRcdHBvc2l0aW9uID0gZWxlbWVudC5jc3MoIFwicG9zaXRpb25cIiApLFxuXHRcdHBvcyA9IGVsZW1lbnQucG9zaXRpb24oKSxcblx0XHRvcmlnaW5hbCA9ICQuZWZmZWN0cy5zY2FsZWREaW1lbnNpb25zKCBlbGVtZW50ICksXG5cdFx0ZnJvbSA9IG9wdGlvbnMuZnJvbSB8fCBvcmlnaW5hbCxcblx0XHR0byA9IG9wdGlvbnMudG8gfHwgJC5lZmZlY3RzLnNjYWxlZERpbWVuc2lvbnMoIGVsZW1lbnQsIDAgKTtcblxuXHQkLmVmZmVjdHMuY3JlYXRlUGxhY2Vob2xkZXIoIGVsZW1lbnQgKTtcblxuXHRpZiAoIG1vZGUgPT09IFwic2hvd1wiICkge1xuXHRcdHRlbXAgPSBmcm9tO1xuXHRcdGZyb20gPSB0bztcblx0XHR0byA9IHRlbXA7XG5cdH1cblxuXHQvLyBTZXQgc2NhbGluZyBmYWN0b3Jcblx0ZmFjdG9yID0ge1xuXHRcdGZyb206IHtcblx0XHRcdHk6IGZyb20uaGVpZ2h0IC8gb3JpZ2luYWwuaGVpZ2h0LFxuXHRcdFx0eDogZnJvbS53aWR0aCAvIG9yaWdpbmFsLndpZHRoXG5cdFx0fSxcblx0XHR0bzoge1xuXHRcdFx0eTogdG8uaGVpZ2h0IC8gb3JpZ2luYWwuaGVpZ2h0LFxuXHRcdFx0eDogdG8ud2lkdGggLyBvcmlnaW5hbC53aWR0aFxuXHRcdH1cblx0fTtcblxuXHQvLyBTY2FsZSB0aGUgY3NzIGJveFxuXHRpZiAoIHNjYWxlID09PSBcImJveFwiIHx8IHNjYWxlID09PSBcImJvdGhcIiApIHtcblxuXHRcdC8vIFZlcnRpY2FsIHByb3BzIHNjYWxpbmdcblx0XHRpZiAoIGZhY3Rvci5mcm9tLnkgIT09IGZhY3Rvci50by55ICkge1xuXHRcdFx0ZnJvbSA9ICQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKCBlbGVtZW50LCB2UHJvcHMsIGZhY3Rvci5mcm9tLnksIGZyb20gKTtcblx0XHRcdHRvID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGVsZW1lbnQsIHZQcm9wcywgZmFjdG9yLnRvLnksIHRvICk7XG5cdFx0fVxuXG5cdFx0Ly8gSG9yaXpvbnRhbCBwcm9wcyBzY2FsaW5nXG5cdFx0aWYgKCBmYWN0b3IuZnJvbS54ICE9PSBmYWN0b3IudG8ueCApIHtcblx0XHRcdGZyb20gPSAkLmVmZmVjdHMuc2V0VHJhbnNpdGlvbiggZWxlbWVudCwgaFByb3BzLCBmYWN0b3IuZnJvbS54LCBmcm9tICk7XG5cdFx0XHR0byA9ICQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKCBlbGVtZW50LCBoUHJvcHMsIGZhY3Rvci50by54LCB0byApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFNjYWxlIHRoZSBjb250ZW50XG5cdGlmICggc2NhbGUgPT09IFwiY29udGVudFwiIHx8IHNjYWxlID09PSBcImJvdGhcIiApIHtcblxuXHRcdC8vIFZlcnRpY2FsIHByb3BzIHNjYWxpbmdcblx0XHRpZiAoIGZhY3Rvci5mcm9tLnkgIT09IGZhY3Rvci50by55ICkge1xuXHRcdFx0ZnJvbSA9ICQuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKCBlbGVtZW50LCBjUHJvcHMsIGZhY3Rvci5mcm9tLnksIGZyb20gKTtcblx0XHRcdHRvID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGVsZW1lbnQsIGNQcm9wcywgZmFjdG9yLnRvLnksIHRvICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWRqdXN0IHRoZSBwb3NpdGlvbiBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcmlnaW4gcG9pbnRzXG5cdGlmICggb3JpZ2luICkge1xuXHRcdGJhc2VsaW5lID0gJC5lZmZlY3RzLmdldEJhc2VsaW5lKCBvcmlnaW4sIG9yaWdpbmFsICk7XG5cdFx0ZnJvbS50b3AgPSAoIG9yaWdpbmFsLm91dGVySGVpZ2h0IC0gZnJvbS5vdXRlckhlaWdodCApICogYmFzZWxpbmUueSArIHBvcy50b3A7XG5cdFx0ZnJvbS5sZWZ0ID0gKCBvcmlnaW5hbC5vdXRlcldpZHRoIC0gZnJvbS5vdXRlcldpZHRoICkgKiBiYXNlbGluZS54ICsgcG9zLmxlZnQ7XG5cdFx0dG8udG9wID0gKCBvcmlnaW5hbC5vdXRlckhlaWdodCAtIHRvLm91dGVySGVpZ2h0ICkgKiBiYXNlbGluZS55ICsgcG9zLnRvcDtcblx0XHR0by5sZWZ0ID0gKCBvcmlnaW5hbC5vdXRlcldpZHRoIC0gdG8ub3V0ZXJXaWR0aCApICogYmFzZWxpbmUueCArIHBvcy5sZWZ0O1xuXHR9XG5cdGVsZW1lbnQuY3NzKCBmcm9tICk7XG5cblx0Ly8gQW5pbWF0ZSB0aGUgY2hpbGRyZW4gaWYgZGVzaXJlZFxuXHRpZiAoIHNjYWxlID09PSBcImNvbnRlbnRcIiB8fCBzY2FsZSA9PT0gXCJib3RoXCIgKSB7XG5cblx0XHR2UHJvcHMgPSB2UHJvcHMuY29uY2F0KCBbIFwibWFyZ2luVG9wXCIsIFwibWFyZ2luQm90dG9tXCIgXSApLmNvbmNhdCggY1Byb3BzICk7XG5cdFx0aFByb3BzID0gaFByb3BzLmNvbmNhdCggWyBcIm1hcmdpbkxlZnRcIiwgXCJtYXJnaW5SaWdodFwiIF0gKTtcblxuXHRcdC8vIE9ubHkgYW5pbWF0ZSBjaGlsZHJlbiB3aXRoIHdpZHRoIGF0dHJpYnV0ZXMgc3BlY2lmaWVkXG5cdFx0Ly8gVE9ETzogaXMgdGhpcyByaWdodD8gc2hvdWxkIHdlIGluY2x1ZGUgYW55dGhpbmcgd2l0aCBjc3Mgd2lkdGggc3BlY2lmaWVkIGFzIHdlbGxcblx0XHRlbGVtZW50LmZpbmQoIFwiKlt3aWR0aF1cIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGNoaWxkID0gJCggdGhpcyApLFxuXHRcdFx0XHRjaGlsZE9yaWdpbmFsID0gJC5lZmZlY3RzLnNjYWxlZERpbWVuc2lvbnMoIGNoaWxkICksXG5cdFx0XHRcdGNoaWxkRnJvbSA9IHtcblx0XHRcdFx0XHRoZWlnaHQ6IGNoaWxkT3JpZ2luYWwuaGVpZ2h0ICogZmFjdG9yLmZyb20ueSxcblx0XHRcdFx0XHR3aWR0aDogY2hpbGRPcmlnaW5hbC53aWR0aCAqIGZhY3Rvci5mcm9tLngsXG5cdFx0XHRcdFx0b3V0ZXJIZWlnaHQ6IGNoaWxkT3JpZ2luYWwub3V0ZXJIZWlnaHQgKiBmYWN0b3IuZnJvbS55LFxuXHRcdFx0XHRcdG91dGVyV2lkdGg6IGNoaWxkT3JpZ2luYWwub3V0ZXJXaWR0aCAqIGZhY3Rvci5mcm9tLnhcblx0XHRcdFx0fSxcblx0XHRcdFx0Y2hpbGRUbyA9IHtcblx0XHRcdFx0XHRoZWlnaHQ6IGNoaWxkT3JpZ2luYWwuaGVpZ2h0ICogZmFjdG9yLnRvLnksXG5cdFx0XHRcdFx0d2lkdGg6IGNoaWxkT3JpZ2luYWwud2lkdGggKiBmYWN0b3IudG8ueCxcblx0XHRcdFx0XHRvdXRlckhlaWdodDogY2hpbGRPcmlnaW5hbC5oZWlnaHQgKiBmYWN0b3IudG8ueSxcblx0XHRcdFx0XHRvdXRlcldpZHRoOiBjaGlsZE9yaWdpbmFsLndpZHRoICogZmFjdG9yLnRvLnhcblx0XHRcdFx0fTtcblxuXHRcdFx0Ly8gVmVydGljYWwgcHJvcHMgc2NhbGluZ1xuXHRcdFx0aWYgKCBmYWN0b3IuZnJvbS55ICE9PSBmYWN0b3IudG8ueSApIHtcblx0XHRcdFx0Y2hpbGRGcm9tID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGNoaWxkLCB2UHJvcHMsIGZhY3Rvci5mcm9tLnksIGNoaWxkRnJvbSApO1xuXHRcdFx0XHRjaGlsZFRvID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGNoaWxkLCB2UHJvcHMsIGZhY3Rvci50by55LCBjaGlsZFRvICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhvcml6b250YWwgcHJvcHMgc2NhbGluZ1xuXHRcdFx0aWYgKCBmYWN0b3IuZnJvbS54ICE9PSBmYWN0b3IudG8ueCApIHtcblx0XHRcdFx0Y2hpbGRGcm9tID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGNoaWxkLCBoUHJvcHMsIGZhY3Rvci5mcm9tLngsIGNoaWxkRnJvbSApO1xuXHRcdFx0XHRjaGlsZFRvID0gJC5lZmZlY3RzLnNldFRyYW5zaXRpb24oIGNoaWxkLCBoUHJvcHMsIGZhY3Rvci50by54LCBjaGlsZFRvICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggcmVzdG9yZSApIHtcblx0XHRcdFx0JC5lZmZlY3RzLnNhdmVTdHlsZSggY2hpbGQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQW5pbWF0ZSBjaGlsZHJlblxuXHRcdFx0Y2hpbGQuY3NzKCBjaGlsZEZyb20gKTtcblx0XHRcdGNoaWxkLmFuaW1hdGUoIGNoaWxkVG8sIG9wdGlvbnMuZHVyYXRpb24sIG9wdGlvbnMuZWFzaW5nLCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIGNoaWxkcmVuXG5cdFx0XHRcdGlmICggcmVzdG9yZSApIHtcblx0XHRcdFx0XHQkLmVmZmVjdHMucmVzdG9yZVN0eWxlKCBjaGlsZCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQW5pbWF0ZVxuXHRlbGVtZW50LmFuaW1hdGUoIHRvLCB7XG5cdFx0cXVldWU6IGZhbHNlLFxuXHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuXHRcdGVhc2luZzogb3B0aW9ucy5lYXNpbmcsXG5cdFx0Y29tcGxldGU6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHR2YXIgb2Zmc2V0ID0gZWxlbWVudC5vZmZzZXQoKTtcblxuXHRcdFx0aWYgKCB0by5vcGFjaXR5ID09PSAwICkge1xuXHRcdFx0XHRlbGVtZW50LmNzcyggXCJvcGFjaXR5XCIsIGZyb20ub3BhY2l0eSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoICFyZXN0b3JlICkge1xuXHRcdFx0XHRlbGVtZW50XG5cdFx0XHRcdFx0LmNzcyggXCJwb3NpdGlvblwiLCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiA/IFwicmVsYXRpdmVcIiA6IHBvc2l0aW9uIClcblx0XHRcdFx0XHQub2Zmc2V0KCBvZmZzZXQgKTtcblxuXHRcdFx0XHQvLyBOZWVkIHRvIHNhdmUgc3R5bGUgaGVyZSBzbyB0aGF0IGF1dG9tYXRpYyBzdHlsZSByZXN0b3JhdGlvblxuXHRcdFx0XHQvLyBkb2Vzbid0IHJlc3RvcmUgdG8gdGhlIG9yaWdpbmFsIHN0eWxlcyBmcm9tIGJlZm9yZSB0aGUgYW5pbWF0aW9uLlxuXHRcdFx0XHQkLmVmZmVjdHMuc2F2ZVN0eWxlKCBlbGVtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdGRvbmUoKTtcblx0XHR9XG5cdH0gKTtcblxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIEVmZmVjdHMgU2NhbGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNjYWxlIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLz4+ZGVzY3JpcHRpb246IEdyb3dzIG9yIHNocmlua3MgYW4gZWxlbWVudCBhbmQgaXRzIGNvbnRlbnQuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc2NhbGUtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0U2NhbGUgPSAkLmVmZmVjdHMuZGVmaW5lKCBcInNjYWxlXCIsIGZ1bmN0aW9uKCBvcHRpb25zLCBkb25lICkge1xuXG5cdC8vIENyZWF0ZSBlbGVtZW50XG5cdHZhciBlbCA9ICQoIHRoaXMgKSxcblx0XHRtb2RlID0gb3B0aW9ucy5tb2RlLFxuXHRcdHBlcmNlbnQgPSBwYXJzZUludCggb3B0aW9ucy5wZXJjZW50LCAxMCApIHx8XG5cdFx0XHQoIHBhcnNlSW50KCBvcHRpb25zLnBlcmNlbnQsIDEwICkgPT09IDAgPyAwIDogKCBtb2RlICE9PSBcImVmZmVjdFwiID8gMCA6IDEwMCApICksXG5cblx0XHRuZXdPcHRpb25zID0gJC5leHRlbmQoIHRydWUsIHtcblx0XHRcdGZyb206ICQuZWZmZWN0cy5zY2FsZWREaW1lbnNpb25zKCBlbCApLFxuXHRcdFx0dG86ICQuZWZmZWN0cy5zY2FsZWREaW1lbnNpb25zKCBlbCwgcGVyY2VudCwgb3B0aW9ucy5kaXJlY3Rpb24gfHwgXCJib3RoXCIgKSxcblx0XHRcdG9yaWdpbjogb3B0aW9ucy5vcmlnaW4gfHwgWyBcIm1pZGRsZVwiLCBcImNlbnRlclwiIF1cblx0XHR9LCBvcHRpb25zICk7XG5cblx0Ly8gRmFkZSBvcHRpb24gdG8gc3VwcG9ydCBwdWZmXG5cdGlmICggb3B0aW9ucy5mYWRlICkge1xuXHRcdG5ld09wdGlvbnMuZnJvbS5vcGFjaXR5ID0gMTtcblx0XHRuZXdPcHRpb25zLnRvLm9wYWNpdHkgPSAwO1xuXHR9XG5cblx0JC5lZmZlY3RzLmVmZmVjdC5zaXplLmNhbGwoIHRoaXMsIG5ld09wdGlvbnMsIGRvbmUgKTtcbn0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBFZmZlY3RzIFB1ZmYgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFB1ZmYgRWZmZWN0XG4vLz4+Z3JvdXA6IEVmZmVjdHNcbi8vPj5kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHB1ZmYgZWZmZWN0IGJ5IHNjYWxpbmcgdGhlIGVsZW1lbnQgdXAgYW5kIGhpZGluZyBpdCBhdCB0aGUgc2FtZSB0aW1lLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3B1ZmYtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0UHVmZiA9ICQuZWZmZWN0cy5kZWZpbmUoIFwicHVmZlwiLCBcImhpZGVcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdHZhciBuZXdPcHRpb25zID0gJC5leHRlbmQoIHRydWUsIHt9LCBvcHRpb25zLCB7XG5cdFx0ZmFkZTogdHJ1ZSxcblx0XHRwZXJjZW50OiBwYXJzZUludCggb3B0aW9ucy5wZXJjZW50LCAxMCApIHx8IDE1MFxuXHR9ICk7XG5cblx0JC5lZmZlY3RzLmVmZmVjdC5zY2FsZS5jYWxsKCB0aGlzLCBuZXdPcHRpb25zLCBkb25lICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBQdWxzYXRlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBQdWxzYXRlIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLz4+ZGVzY3JpcHRpb246IFB1bHNhdGVzIGFuIGVsZW1lbnQgbiB0aW1lcyBieSBjaGFuZ2luZyB0aGUgb3BhY2l0eSB0byB6ZXJvIGFuZCBiYWNrLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3B1bHNhdGUtZWZmZWN0L1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2VmZmVjdC9cblxuXG5cbnZhciBlZmZlY3RzRWZmZWN0UHVsc2F0ZSA9ICQuZWZmZWN0cy5kZWZpbmUoIFwicHVsc2F0ZVwiLCBcInNob3dcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdHZhciBlbGVtZW50ID0gJCggdGhpcyApLFxuXHRcdG1vZGUgPSBvcHRpb25zLm1vZGUsXG5cdFx0c2hvdyA9IG1vZGUgPT09IFwic2hvd1wiLFxuXHRcdGhpZGUgPSBtb2RlID09PSBcImhpZGVcIixcblx0XHRzaG93aGlkZSA9IHNob3cgfHwgaGlkZSxcblxuXHRcdC8vIFNob3dpbmcgb3IgaGlkaW5nIGxlYXZlcyBvZmYgdGhlIFwibGFzdFwiIGFuaW1hdGlvblxuXHRcdGFuaW1zID0gKCAoIG9wdGlvbnMudGltZXMgfHwgNSApICogMiApICsgKCBzaG93aGlkZSA/IDEgOiAwICksXG5cdFx0ZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uIC8gYW5pbXMsXG5cdFx0YW5pbWF0ZVRvID0gMCxcblx0XHRpID0gMSxcblx0XHRxdWV1ZWxlbiA9IGVsZW1lbnQucXVldWUoKS5sZW5ndGg7XG5cblx0aWYgKCBzaG93IHx8ICFlbGVtZW50LmlzKCBcIjp2aXNpYmxlXCIgKSApIHtcblx0XHRlbGVtZW50LmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KCk7XG5cdFx0YW5pbWF0ZVRvID0gMTtcblx0fVxuXG5cdC8vIEFuaW1zIC0gMSBvcGFjaXR5IFwidG9nZ2xlc1wiXG5cdGZvciAoIDsgaSA8IGFuaW1zOyBpKysgKSB7XG5cdFx0ZWxlbWVudC5hbmltYXRlKCB7IG9wYWNpdHk6IGFuaW1hdGVUbyB9LCBkdXJhdGlvbiwgb3B0aW9ucy5lYXNpbmcgKTtcblx0XHRhbmltYXRlVG8gPSAxIC0gYW5pbWF0ZVRvO1xuXHR9XG5cblx0ZWxlbWVudC5hbmltYXRlKCB7IG9wYWNpdHk6IGFuaW1hdGVUbyB9LCBkdXJhdGlvbiwgb3B0aW9ucy5lYXNpbmcgKTtcblxuXHRlbGVtZW50LnF1ZXVlKCBkb25lICk7XG5cblx0JC5lZmZlY3RzLnVuc2hpZnQoIGVsZW1lbnQsIHF1ZXVlbGVuLCBhbmltcyArIDEgKTtcbn0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBFZmZlY3RzIFNoYWtlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBTaGFrZSBFZmZlY3Rcbi8vPj5ncm91cDogRWZmZWN0c1xuLy8+PmRlc2NyaXB0aW9uOiBTaGFrZXMgYW4gZWxlbWVudCBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBuIHRpbWVzLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3NoYWtlLWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0c0VmZmVjdFNoYWtlID0gJC5lZmZlY3RzLmRlZmluZSggXCJzaGFrZVwiLCBmdW5jdGlvbiggb3B0aW9ucywgZG9uZSApIHtcblxuXHR2YXIgaSA9IDEsXG5cdFx0ZWxlbWVudCA9ICQoIHRoaXMgKSxcblx0XHRkaXJlY3Rpb24gPSBvcHRpb25zLmRpcmVjdGlvbiB8fCBcImxlZnRcIixcblx0XHRkaXN0YW5jZSA9IG9wdGlvbnMuZGlzdGFuY2UgfHwgMjAsXG5cdFx0dGltZXMgPSBvcHRpb25zLnRpbWVzIHx8IDMsXG5cdFx0YW5pbXMgPSB0aW1lcyAqIDIgKyAxLFxuXHRcdHNwZWVkID0gTWF0aC5yb3VuZCggb3B0aW9ucy5kdXJhdGlvbiAvIGFuaW1zICksXG5cdFx0cmVmID0gKCBkaXJlY3Rpb24gPT09IFwidXBcIiB8fCBkaXJlY3Rpb24gPT09IFwiZG93blwiICkgPyBcInRvcFwiIDogXCJsZWZ0XCIsXG5cdFx0cG9zaXRpdmVNb3Rpb24gPSAoIGRpcmVjdGlvbiA9PT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgKSxcblx0XHRhbmltYXRpb24gPSB7fSxcblx0XHRhbmltYXRpb24xID0ge30sXG5cdFx0YW5pbWF0aW9uMiA9IHt9LFxuXG5cdFx0cXVldWVsZW4gPSBlbGVtZW50LnF1ZXVlKCkubGVuZ3RoO1xuXG5cdCQuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlciggZWxlbWVudCApO1xuXG5cdC8vIEFuaW1hdGlvblxuXHRhbmltYXRpb25bIHJlZiBdID0gKCBwb3NpdGl2ZU1vdGlvbiA/IFwiLT1cIiA6IFwiKz1cIiApICsgZGlzdGFuY2U7XG5cdGFuaW1hdGlvbjFbIHJlZiBdID0gKCBwb3NpdGl2ZU1vdGlvbiA/IFwiKz1cIiA6IFwiLT1cIiApICsgZGlzdGFuY2UgKiAyO1xuXHRhbmltYXRpb24yWyByZWYgXSA9ICggcG9zaXRpdmVNb3Rpb24gPyBcIi09XCIgOiBcIis9XCIgKSArIGRpc3RhbmNlICogMjtcblxuXHQvLyBBbmltYXRlXG5cdGVsZW1lbnQuYW5pbWF0ZSggYW5pbWF0aW9uLCBzcGVlZCwgb3B0aW9ucy5lYXNpbmcgKTtcblxuXHQvLyBTaGFrZXNcblx0Zm9yICggOyBpIDwgdGltZXM7IGkrKyApIHtcblx0XHRlbGVtZW50XG5cdFx0XHQuYW5pbWF0ZSggYW5pbWF0aW9uMSwgc3BlZWQsIG9wdGlvbnMuZWFzaW5nIClcblx0XHRcdC5hbmltYXRlKCBhbmltYXRpb24yLCBzcGVlZCwgb3B0aW9ucy5lYXNpbmcgKTtcblx0fVxuXG5cdGVsZW1lbnRcblx0XHQuYW5pbWF0ZSggYW5pbWF0aW9uMSwgc3BlZWQsIG9wdGlvbnMuZWFzaW5nIClcblx0XHQuYW5pbWF0ZSggYW5pbWF0aW9uLCBzcGVlZCAvIDIsIG9wdGlvbnMuZWFzaW5nIClcblx0XHQucXVldWUoIGRvbmUgKTtcblxuXHQkLmVmZmVjdHMudW5zaGlmdCggZWxlbWVudCwgcXVldWVsZW4sIGFuaW1zICsgMSApO1xufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIEVmZmVjdHMgU2xpZGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNsaWRlIEVmZmVjdFxuLy8+Pmdyb3VwOiBFZmZlY3RzXG4vLz4+ZGVzY3JpcHRpb246IFNsaWRlcyBhbiBlbGVtZW50IGluIGFuZCBvdXQgb2YgdGhlIHZpZXdwb3J0LlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3NsaWRlLWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0c0VmZmVjdFNsaWRlID0gJC5lZmZlY3RzLmRlZmluZSggXCJzbGlkZVwiLCBcInNob3dcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdHZhciBzdGFydENsaXAsIHN0YXJ0UmVmLFxuXHRcdGVsZW1lbnQgPSAkKCB0aGlzICksXG5cdFx0bWFwID0ge1xuXHRcdFx0dXA6IFsgXCJib3R0b21cIiwgXCJ0b3BcIiBdLFxuXHRcdFx0ZG93bjogWyBcInRvcFwiLCBcImJvdHRvbVwiIF0sXG5cdFx0XHRsZWZ0OiBbIFwicmlnaHRcIiwgXCJsZWZ0XCIgXSxcblx0XHRcdHJpZ2h0OiBbIFwibGVmdFwiLCBcInJpZ2h0XCIgXVxuXHRcdH0sXG5cdFx0bW9kZSA9IG9wdGlvbnMubW9kZSxcblx0XHRkaXJlY3Rpb24gPSBvcHRpb25zLmRpcmVjdGlvbiB8fCBcImxlZnRcIixcblx0XHRyZWYgPSAoIGRpcmVjdGlvbiA9PT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJkb3duXCIgKSA/IFwidG9wXCIgOiBcImxlZnRcIixcblx0XHRwb3NpdGl2ZU1vdGlvbiA9ICggZGlyZWN0aW9uID09PSBcInVwXCIgfHwgZGlyZWN0aW9uID09PSBcImxlZnRcIiApLFxuXHRcdGRpc3RhbmNlID0gb3B0aW9ucy5kaXN0YW5jZSB8fFxuXHRcdFx0ZWxlbWVudFsgcmVmID09PSBcInRvcFwiID8gXCJvdXRlckhlaWdodFwiIDogXCJvdXRlcldpZHRoXCIgXSggdHJ1ZSApLFxuXHRcdGFuaW1hdGlvbiA9IHt9O1xuXG5cdCQuZWZmZWN0cy5jcmVhdGVQbGFjZWhvbGRlciggZWxlbWVudCApO1xuXG5cdHN0YXJ0Q2xpcCA9IGVsZW1lbnQuY3NzQ2xpcCgpO1xuXHRzdGFydFJlZiA9IGVsZW1lbnQucG9zaXRpb24oKVsgcmVmIF07XG5cblx0Ly8gRGVmaW5lIGhpZGUgYW5pbWF0aW9uXG5cdGFuaW1hdGlvblsgcmVmIF0gPSAoIHBvc2l0aXZlTW90aW9uID8gLTEgOiAxICkgKiBkaXN0YW5jZSArIHN0YXJ0UmVmO1xuXHRhbmltYXRpb24uY2xpcCA9IGVsZW1lbnQuY3NzQ2xpcCgpO1xuXHRhbmltYXRpb24uY2xpcFsgbWFwWyBkaXJlY3Rpb24gXVsgMSBdIF0gPSBhbmltYXRpb24uY2xpcFsgbWFwWyBkaXJlY3Rpb24gXVsgMCBdIF07XG5cblx0Ly8gUmV2ZXJzZSB0aGUgYW5pbWF0aW9uIGlmIHdlJ3JlIHNob3dpbmdcblx0aWYgKCBtb2RlID09PSBcInNob3dcIiApIHtcblx0XHRlbGVtZW50LmNzc0NsaXAoIGFuaW1hdGlvbi5jbGlwICk7XG5cdFx0ZWxlbWVudC5jc3MoIHJlZiwgYW5pbWF0aW9uWyByZWYgXSApO1xuXHRcdGFuaW1hdGlvbi5jbGlwID0gc3RhcnRDbGlwO1xuXHRcdGFuaW1hdGlvblsgcmVmIF0gPSBzdGFydFJlZjtcblx0fVxuXG5cdC8vIEFjdHVhbGx5IGFuaW1hdGVcblx0ZWxlbWVudC5hbmltYXRlKCBhbmltYXRpb24sIHtcblx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0ZWFzaW5nOiBvcHRpb25zLmVhc2luZyxcblx0XHRjb21wbGV0ZTogZG9uZVxuXHR9ICk7XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRWZmZWN0cyBUcmFuc2ZlciAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogVHJhbnNmZXIgRWZmZWN0XG4vLz4+Z3JvdXA6IEVmZmVjdHNcbi8vPj5kZXNjcmlwdGlvbjogRGlzcGxheXMgYSB0cmFuc2ZlciBlZmZlY3QgZnJvbSBvbmUgZWxlbWVudCB0byBhbm90aGVyLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3RyYW5zZmVyLWVmZmVjdC9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9lZmZlY3QvXG5cblxuXG52YXIgZWZmZWN0O1xuaWYgKCAkLnVpQmFja0NvbXBhdCAhPT0gZmFsc2UgKSB7XG5cdGVmZmVjdCA9ICQuZWZmZWN0cy5kZWZpbmUoIFwidHJhbnNmZXJcIiwgZnVuY3Rpb24oIG9wdGlvbnMsIGRvbmUgKSB7XG5cdFx0JCggdGhpcyApLnRyYW5zZmVyKCBvcHRpb25zLCBkb25lICk7XG5cdH0gKTtcbn1cbnZhciBlZmZlY3RzRWZmZWN0VHJhbnNmZXIgPSBlZmZlY3Q7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRm9jdXNhYmxlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiA6Zm9jdXNhYmxlIFNlbGVjdG9yXG4vLz4+Z3JvdXA6IENvcmVcbi8vPj5kZXNjcmlwdGlvbjogU2VsZWN0cyBlbGVtZW50cyB3aGljaCBjYW4gYmUgZm9jdXNlZC5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9mb2N1c2FibGUtc2VsZWN0b3IvXG5cblxuXG4vLyBTZWxlY3RvcnNcbiQudWkuZm9jdXNhYmxlID0gZnVuY3Rpb24oIGVsZW1lbnQsIGhhc1RhYmluZGV4ICkge1xuXHR2YXIgbWFwLCBtYXBOYW1lLCBpbWcsIGZvY3VzYWJsZUlmVmlzaWJsZSwgZmllbGRzZXQsXG5cdFx0bm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0aWYgKCBcImFyZWFcIiA9PT0gbm9kZU5hbWUgKSB7XG5cdFx0bWFwID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXHRcdG1hcE5hbWUgPSBtYXAubmFtZTtcblx0XHRpZiAoICFlbGVtZW50LmhyZWYgfHwgIW1hcE5hbWUgfHwgbWFwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwibWFwXCIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGltZyA9ICQoIFwiaW1nW3VzZW1hcD0nI1wiICsgbWFwTmFtZSArIFwiJ11cIiApO1xuXHRcdHJldHVybiBpbWcubGVuZ3RoID4gMCAmJiBpbWcuaXMoIFwiOnZpc2libGVcIiApO1xuXHR9XG5cblx0aWYgKCAvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkLy50ZXN0KCBub2RlTmFtZSApICkge1xuXHRcdGZvY3VzYWJsZUlmVmlzaWJsZSA9ICFlbGVtZW50LmRpc2FibGVkO1xuXG5cdFx0aWYgKCBmb2N1c2FibGVJZlZpc2libGUgKSB7XG5cblx0XHRcdC8vIEZvcm0gY29udHJvbHMgd2l0aGluIGEgZGlzYWJsZWQgZmllbGRzZXQgYXJlIGRpc2FibGVkLlxuXHRcdFx0Ly8gSG93ZXZlciwgY29udHJvbHMgd2l0aGluIHRoZSBmaWVsZHNldCdzIGxlZ2VuZCBkbyBub3QgZ2V0IGRpc2FibGVkLlxuXHRcdFx0Ly8gU2luY2UgY29udHJvbHMgZ2VuZXJhbGx5IGFyZW4ndCBwbGFjZWQgaW5zaWRlIGxlZ2VuZHMsIHdlIHNraXBcblx0XHRcdC8vIHRoaXMgcG9ydGlvbiBvZiB0aGUgY2hlY2suXG5cdFx0XHRmaWVsZHNldCA9ICQoIGVsZW1lbnQgKS5jbG9zZXN0KCBcImZpZWxkc2V0XCIgKVsgMCBdO1xuXHRcdFx0aWYgKCBmaWVsZHNldCApIHtcblx0XHRcdFx0Zm9jdXNhYmxlSWZWaXNpYmxlID0gIWZpZWxkc2V0LmRpc2FibGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggXCJhXCIgPT09IG5vZGVOYW1lICkge1xuXHRcdGZvY3VzYWJsZUlmVmlzaWJsZSA9IGVsZW1lbnQuaHJlZiB8fCBoYXNUYWJpbmRleDtcblx0fSBlbHNlIHtcblx0XHRmb2N1c2FibGVJZlZpc2libGUgPSBoYXNUYWJpbmRleDtcblx0fVxuXG5cdHJldHVybiBmb2N1c2FibGVJZlZpc2libGUgJiYgJCggZWxlbWVudCApLmlzKCBcIjp2aXNpYmxlXCIgKSAmJiB2aXNpYmxlKCAkKCBlbGVtZW50ICkgKTtcbn07XG5cbi8vIFN1cHBvcnQ6IElFIDggb25seVxuLy8gSUUgOCBkb2Vzbid0IHJlc29sdmUgaW5oZXJpdCB0byB2aXNpYmxlL2hpZGRlbiBmb3IgY29tcHV0ZWQgdmFsdWVzXG5mdW5jdGlvbiB2aXNpYmxlKCBlbGVtZW50ICkge1xuXHR2YXIgdmlzaWJpbGl0eSA9IGVsZW1lbnQuY3NzKCBcInZpc2liaWxpdHlcIiApO1xuXHR3aGlsZSAoIHZpc2liaWxpdHkgPT09IFwiaW5oZXJpdFwiICkge1xuXHRcdGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudCgpO1xuXHRcdHZpc2liaWxpdHkgPSBlbGVtZW50LmNzcyggXCJ2aXNpYmlsaXR5XCIgKTtcblx0fVxuXHRyZXR1cm4gdmlzaWJpbGl0eSAhPT0gXCJoaWRkZW5cIjtcbn1cblxuJC5leHRlbmQoICQuZXhwclsgXCI6XCIgXSwge1xuXHRmb2N1c2FibGU6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuXHRcdHJldHVybiAkLnVpLmZvY3VzYWJsZSggZWxlbWVudCwgJC5hdHRyKCBlbGVtZW50LCBcInRhYmluZGV4XCIgKSAhPSBudWxsICk7XG5cdH1cbn0gKTtcblxudmFyIGZvY3VzYWJsZSA9ICQudWkuZm9jdXNhYmxlO1xuXG5cblxuXG4vLyBTdXBwb3J0OiBJRTggT25seVxuLy8gSUU4IGRvZXMgbm90IHN1cHBvcnQgdGhlIGZvcm0gYXR0cmlidXRlIGFuZCB3aGVuIGl0IGlzIHN1cHBsaWVkLiBJdCBvdmVyd3JpdGVzIHRoZSBmb3JtIHByb3Bcbi8vIHdpdGggYSBzdHJpbmcsIHNvIHdlIG5lZWQgdG8gZmluZCB0aGUgcHJvcGVyIGZvcm0uXG52YXIgZm9ybSA9ICQuZm4uZm9ybSA9IGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdHlwZW9mIHRoaXNbIDAgXS5mb3JtID09PSBcInN0cmluZ1wiID8gdGhpcy5jbG9zZXN0KCBcImZvcm1cIiApIDogJCggdGhpc1sgMCBdLmZvcm0gKTtcbn07XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRm9ybSBSZXNldCBNaXhpbiAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogRm9ybSBSZXNldCBNaXhpblxuLy8+Pmdyb3VwOiBDb3JlXG4vLz4+ZGVzY3JpcHRpb246IFJlZnJlc2ggaW5wdXQgd2lkZ2V0cyB3aGVuIHRoZWlyIGZvcm0gaXMgcmVzZXRcbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9mb3JtLXJlc2V0LW1peGluL1xuXG5cblxudmFyIGZvcm1SZXNldE1peGluID0gJC51aS5mb3JtUmVzZXRNaXhpbiA9IHtcblx0X2Zvcm1SZXNldEhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBmb3JtID0gJCggdGhpcyApO1xuXG5cdFx0Ly8gV2FpdCBmb3IgdGhlIGZvcm0gcmVzZXQgdG8gYWN0dWFsbHkgaGFwcGVuIGJlZm9yZSByZWZyZXNoaW5nXG5cdFx0c2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5zdGFuY2VzID0gZm9ybS5kYXRhKCBcInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzXCIgKTtcblx0XHRcdCQuZWFjaCggaW5zdGFuY2VzLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dGhpcy5yZWZyZXNoKCk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9iaW5kRm9ybVJlc2V0SGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5mb3JtID0gdGhpcy5lbGVtZW50LmZvcm0oKTtcblx0XHRpZiAoICF0aGlzLmZvcm0ubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBpbnN0YW5jZXMgPSB0aGlzLmZvcm0uZGF0YSggXCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlc1wiICkgfHwgW107XG5cdFx0aWYgKCAhaW5zdGFuY2VzLmxlbmd0aCApIHtcblxuXHRcdFx0Ly8gV2UgZG9uJ3QgdXNlIF9vbigpIGhlcmUgYmVjYXVzZSB3ZSB1c2UgYSBzaW5nbGUgZXZlbnQgaGFuZGxlciBwZXIgZm9ybVxuXHRcdFx0dGhpcy5mb3JtLm9uKCBcInJlc2V0LnVpLWZvcm0tcmVzZXRcIiwgdGhpcy5fZm9ybVJlc2V0SGFuZGxlciApO1xuXHRcdH1cblx0XHRpbnN0YW5jZXMucHVzaCggdGhpcyApO1xuXHRcdHRoaXMuZm9ybS5kYXRhKCBcInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzXCIsIGluc3RhbmNlcyApO1xuXHR9LFxuXG5cdF91bmJpbmRGb3JtUmVzZXRIYW5kbGVyOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzLmZvcm0ubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBpbnN0YW5jZXMgPSB0aGlzLmZvcm0uZGF0YSggXCJ1aS1mb3JtLXJlc2V0LWluc3RhbmNlc1wiICk7XG5cdFx0aW5zdGFuY2VzLnNwbGljZSggJC5pbkFycmF5KCB0aGlzLCBpbnN0YW5jZXMgKSwgMSApO1xuXHRcdGlmICggaW5zdGFuY2VzLmxlbmd0aCApIHtcblx0XHRcdHRoaXMuZm9ybS5kYXRhKCBcInVpLWZvcm0tcmVzZXQtaW5zdGFuY2VzXCIsIGluc3RhbmNlcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmZvcm1cblx0XHRcdFx0LnJlbW92ZURhdGEoIFwidWktZm9ybS1yZXNldC1pbnN0YW5jZXNcIiApXG5cdFx0XHRcdC5vZmYoIFwicmVzZXQudWktZm9ybS1yZXNldFwiICk7XG5cdFx0fVxuXHR9XG59O1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFN1cHBvcnQgZm9yIGpRdWVyeSBjb3JlIDEuNy54IDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICovXG5cbi8vPj5sYWJlbDogalF1ZXJ5IDEuNyBTdXBwb3J0XG4vLz4+Z3JvdXA6IENvcmVcbi8vPj5kZXNjcmlwdGlvbjogU3VwcG9ydCB2ZXJzaW9uIDEuNy54IG9mIGpRdWVyeSBjb3JlXG5cblxuXG4vLyBTdXBwb3J0OiBqUXVlcnkgMS43IG9ubHlcbi8vIE5vdCBhIGdyZWF0IHdheSB0byBjaGVjayB2ZXJzaW9ucywgYnV0IHNpbmNlIHdlIG9ubHkgc3VwcG9ydCAxLjcrIGFuZCBvbmx5XG4vLyBuZWVkIHRvIGRldGVjdCA8MS44LCB0aGlzIGlzIGEgc2ltcGxlIGNoZWNrIHRoYXQgc2hvdWxkIHN1ZmZpY2UuIENoZWNraW5nXG4vLyBmb3IgXCIxLjcuXCIgd291bGQgYmUgYSBiaXQgc2FmZXIsIGJ1dCB0aGUgdmVyc2lvbiBzdHJpbmcgaXMgMS43LCBub3QgMS43LjBcbi8vIGFuZCB3ZSdsbCBuZXZlciByZWFjaCAxLjcwLjAgKGlmIHdlIGRvLCB3ZSBjZXJ0YWlubHkgd29uJ3QgYmUgc3VwcG9ydGluZ1xuLy8gMS43IGFueW1vcmUpLiBTZWUgIzExMTk3IGZvciB3aHkgd2UncmUgbm90IHVzaW5nIGZlYXR1cmUgZGV0ZWN0aW9uLlxuaWYgKCAkLmZuLmpxdWVyeS5zdWJzdHJpbmcoIDAsIDMgKSA9PT0gXCIxLjdcIiApIHtcblxuXHQvLyBTZXR0ZXJzIGZvciAuaW5uZXJXaWR0aCgpLCAuaW5uZXJIZWlnaHQoKSwgLm91dGVyV2lkdGgoKSwgLm91dGVySGVpZ2h0KClcblx0Ly8gVW5saWtlIGpRdWVyeSBDb3JlIDEuOCssIHRoZXNlIG9ubHkgc3VwcG9ydCBudW1lcmljIHZhbHVlcyB0byBzZXQgdGhlXG5cdC8vIGRpbWVuc2lvbnMgaW4gcGl4ZWxzXG5cdCQuZWFjaCggWyBcIldpZHRoXCIsIFwiSGVpZ2h0XCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdFx0dmFyIHNpZGUgPSBuYW1lID09PSBcIldpZHRoXCIgPyBbIFwiTGVmdFwiLCBcIlJpZ2h0XCIgXSA6IFsgXCJUb3BcIiwgXCJCb3R0b21cIiBdLFxuXHRcdFx0dHlwZSA9IG5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdG9yaWcgPSB7XG5cdFx0XHRcdGlubmVyV2lkdGg6ICQuZm4uaW5uZXJXaWR0aCxcblx0XHRcdFx0aW5uZXJIZWlnaHQ6ICQuZm4uaW5uZXJIZWlnaHQsXG5cdFx0XHRcdG91dGVyV2lkdGg6ICQuZm4ub3V0ZXJXaWR0aCxcblx0XHRcdFx0b3V0ZXJIZWlnaHQ6ICQuZm4ub3V0ZXJIZWlnaHRcblx0XHRcdH07XG5cblx0XHRmdW5jdGlvbiByZWR1Y2UoIGVsZW0sIHNpemUsIGJvcmRlciwgbWFyZ2luICkge1xuXHRcdFx0JC5lYWNoKCBzaWRlLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2l6ZSAtPSBwYXJzZUZsb2F0KCAkLmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyB0aGlzICkgKSB8fCAwO1xuXHRcdFx0XHRpZiAoIGJvcmRlciApIHtcblx0XHRcdFx0XHRzaXplIC09IHBhcnNlRmxvYXQoICQuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgdGhpcyArIFwiV2lkdGhcIiApICkgfHwgMDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIG1hcmdpbiApIHtcblx0XHRcdFx0XHRzaXplIC09IHBhcnNlRmxvYXQoICQuY3NzKCBlbGVtLCBcIm1hcmdpblwiICsgdGhpcyApICkgfHwgMDtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdFx0cmV0dXJuIHNpemU7XG5cdFx0fVxuXG5cdFx0JC5mblsgXCJpbm5lclwiICsgbmFtZSBdID0gZnVuY3Rpb24oIHNpemUgKSB7XG5cdFx0XHRpZiAoIHNpemUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIG9yaWdbIFwiaW5uZXJcIiArIG5hbWUgXS5jYWxsKCB0aGlzICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkKCB0aGlzICkuY3NzKCB0eXBlLCByZWR1Y2UoIHRoaXMsIHNpemUgKSArIFwicHhcIiApO1xuXHRcdFx0fSApO1xuXHRcdH07XG5cblx0XHQkLmZuWyBcIm91dGVyXCIgKyBuYW1lIF0gPSBmdW5jdGlvbiggc2l6ZSwgbWFyZ2luICkge1xuXHRcdFx0aWYgKCB0eXBlb2Ygc2l6ZSAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0cmV0dXJuIG9yaWdbIFwib3V0ZXJcIiArIG5hbWUgXS5jYWxsKCB0aGlzLCBzaXplICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkKCB0aGlzICkuY3NzKCB0eXBlLCByZWR1Y2UoIHRoaXMsIHNpemUsIHRydWUsIG1hcmdpbiApICsgXCJweFwiICk7XG5cdFx0XHR9ICk7XG5cdFx0fTtcblx0fSApO1xuXG5cdCQuZm4uYWRkQmFjayA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKVxuXHRcdCk7XG5cdH07XG59XG5cbjtcbi8qIVxuICogalF1ZXJ5IFVJIEtleWNvZGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IEtleWNvZGVcbi8vPj5ncm91cDogQ29yZVxuLy8+PmRlc2NyaXB0aW9uOiBQcm92aWRlIGtleWNvZGVzIGFzIGtleW5hbWVzXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20valF1ZXJ5LnVpLmtleUNvZGUvXG5cblxudmFyIGtleWNvZGUgPSAkLnVpLmtleUNvZGUgPSB7XG5cdEJBQ0tTUEFDRTogOCxcblx0Q09NTUE6IDE4OCxcblx0REVMRVRFOiA0Nixcblx0RE9XTjogNDAsXG5cdEVORDogMzUsXG5cdEVOVEVSOiAxMyxcblx0RVNDQVBFOiAyNyxcblx0SE9NRTogMzYsXG5cdExFRlQ6IDM3LFxuXHRQQUdFX0RPV046IDM0LFxuXHRQQUdFX1VQOiAzMyxcblx0UEVSSU9EOiAxOTAsXG5cdFJJR0hUOiAzOSxcblx0U1BBQ0U6IDMyLFxuXHRUQUI6IDksXG5cdFVQOiAzOFxufTtcblxuXG5cblxuLy8gSW50ZXJuYWwgdXNlIG9ubHlcbnZhciBlc2NhcGVTZWxlY3RvciA9ICQudWkuZXNjYXBlU2VsZWN0b3IgPSAoIGZ1bmN0aW9uKCkge1xuXHR2YXIgc2VsZWN0b3JFc2NhcGUgPSAvKFshXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXV5ge3x9fl0pL2c7XG5cdHJldHVybiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHNlbGVjdG9yLnJlcGxhY2UoIHNlbGVjdG9yRXNjYXBlLCBcIlxcXFwkMVwiICk7XG5cdH07XG59ICkoKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBMYWJlbHMgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IGxhYmVsc1xuLy8+Pmdyb3VwOiBDb3JlXG4vLz4+ZGVzY3JpcHRpb246IEZpbmQgYWxsIHRoZSBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gaW5wdXRcbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9sYWJlbHMvXG5cblxuXG52YXIgbGFiZWxzID0gJC5mbi5sYWJlbHMgPSBmdW5jdGlvbigpIHtcblx0dmFyIGFuY2VzdG9yLCBzZWxlY3RvciwgaWQsIGxhYmVscywgYW5jZXN0b3JzO1xuXG5cdC8vIENoZWNrIGNvbnRyb2wubGFiZWxzIGZpcnN0XG5cdGlmICggdGhpc1sgMCBdLmxhYmVscyAmJiB0aGlzWyAwIF0ubGFiZWxzLmxlbmd0aCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHRoaXNbIDAgXS5sYWJlbHMgKTtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDw9IDExLCBGRiA8PSAzNywgQW5kcm9pZCA8PSAyLjMgb25seVxuXHQvLyBBYm92ZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCBjb250cm9sLmxhYmVscy4gRXZlcnl0aGluZyBiZWxvdyBpcyB0byBzdXBwb3J0IHRoZW1cblx0Ly8gYXMgd2VsbCBhcyBkb2N1bWVudCBmcmFnbWVudHMuIGNvbnRyb2wubGFiZWxzIGRvZXMgbm90IHdvcmsgb24gZG9jdW1lbnQgZnJhZ21lbnRzXG5cdGxhYmVscyA9IHRoaXMuZXEoIDAgKS5wYXJlbnRzKCBcImxhYmVsXCIgKTtcblxuXHQvLyBMb29rIGZvciB0aGUgbGFiZWwgYmFzZWQgb24gdGhlIGlkXG5cdGlkID0gdGhpcy5hdHRyKCBcImlkXCIgKTtcblx0aWYgKCBpZCApIHtcblxuXHRcdC8vIFdlIGRvbid0IHNlYXJjaCBhZ2FpbnN0IHRoZSBkb2N1bWVudCBpbiBjYXNlIHRoZSBlbGVtZW50XG5cdFx0Ly8gaXMgZGlzY29ubmVjdGVkIGZyb20gdGhlIERPTVxuXHRcdGFuY2VzdG9yID0gdGhpcy5lcSggMCApLnBhcmVudHMoKS5sYXN0KCk7XG5cblx0XHQvLyBHZXQgYSBmdWxsIHNldCBvZiB0b3AgbGV2ZWwgYW5jZXN0b3JzXG5cdFx0YW5jZXN0b3JzID0gYW5jZXN0b3IuYWRkKCBhbmNlc3Rvci5sZW5ndGggPyBhbmNlc3Rvci5zaWJsaW5ncygpIDogdGhpcy5zaWJsaW5ncygpICk7XG5cblx0XHQvLyBDcmVhdGUgYSBzZWxlY3RvciBmb3IgdGhlIGxhYmVsIGJhc2VkIG9uIHRoZSBpZFxuXHRcdHNlbGVjdG9yID0gXCJsYWJlbFtmb3I9J1wiICsgJC51aS5lc2NhcGVTZWxlY3RvciggaWQgKSArIFwiJ11cIjtcblxuXHRcdGxhYmVscyA9IGxhYmVscy5hZGQoIGFuY2VzdG9ycy5maW5kKCBzZWxlY3RvciApLmFkZEJhY2soIHNlbGVjdG9yICkgKTtcblxuXHR9XG5cblx0Ly8gUmV0dXJuIHdoYXRldmVyIHdlIGhhdmUgZm91bmQgZm9yIGxhYmVsc1xuXHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGxhYmVscyApO1xufTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBTY3JvbGwgUGFyZW50IDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBzY3JvbGxQYXJlbnRcbi8vPj5ncm91cDogQ29yZVxuLy8+PmRlc2NyaXB0aW9uOiBHZXQgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgZWxlbWVudCB0aGF0IGlzIHNjcm9sbGFibGUuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc2Nyb2xsUGFyZW50L1xuXG5cblxudmFyIHNjcm9sbFBhcmVudCA9ICQuZm4uc2Nyb2xsUGFyZW50ID0gZnVuY3Rpb24oIGluY2x1ZGVIaWRkZW4gKSB7XG5cdHZhciBwb3NpdGlvbiA9IHRoaXMuY3NzKCBcInBvc2l0aW9uXCIgKSxcblx0XHRleGNsdWRlU3RhdGljUGFyZW50ID0gcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIixcblx0XHRvdmVyZmxvd1JlZ2V4ID0gaW5jbHVkZUhpZGRlbiA/IC8oYXV0b3xzY3JvbGx8aGlkZGVuKS8gOiAvKGF1dG98c2Nyb2xsKS8sXG5cdFx0c2Nyb2xsUGFyZW50ID0gdGhpcy5wYXJlbnRzKCkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwYXJlbnQgPSAkKCB0aGlzICk7XG5cdFx0XHRpZiAoIGV4Y2x1ZGVTdGF0aWNQYXJlbnQgJiYgcGFyZW50LmNzcyggXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdmVyZmxvd1JlZ2V4LnRlc3QoIHBhcmVudC5jc3MoIFwib3ZlcmZsb3dcIiApICsgcGFyZW50LmNzcyggXCJvdmVyZmxvdy15XCIgKSArXG5cdFx0XHRcdHBhcmVudC5jc3MoIFwib3ZlcmZsb3cteFwiICkgKTtcblx0XHR9ICkuZXEoIDAgKTtcblxuXHRyZXR1cm4gcG9zaXRpb24gPT09IFwiZml4ZWRcIiB8fCAhc2Nyb2xsUGFyZW50Lmxlbmd0aCA/XG5cdFx0JCggdGhpc1sgMCBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQgKSA6XG5cdFx0c2Nyb2xsUGFyZW50O1xufTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBUYWJiYWJsZSAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogOnRhYmJhYmxlIFNlbGVjdG9yXG4vLz4+Z3JvdXA6IENvcmVcbi8vPj5kZXNjcmlwdGlvbjogU2VsZWN0cyBlbGVtZW50cyB3aGljaCBjYW4gYmUgdGFiYmVkIHRvLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3RhYmJhYmxlLXNlbGVjdG9yL1xuXG5cblxudmFyIHRhYmJhYmxlID0gJC5leHRlbmQoICQuZXhwclsgXCI6XCIgXSwge1xuXHR0YWJiYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0dmFyIHRhYkluZGV4ID0gJC5hdHRyKCBlbGVtZW50LCBcInRhYmluZGV4XCIgKSxcblx0XHRcdGhhc1RhYmluZGV4ID0gdGFiSW5kZXggIT0gbnVsbDtcblx0XHRyZXR1cm4gKCAhaGFzVGFiaW5kZXggfHwgdGFiSW5kZXggPj0gMCApICYmICQudWkuZm9jdXNhYmxlKCBlbGVtZW50LCBoYXNUYWJpbmRleCApO1xuXHR9XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgVW5pcXVlIElEIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiB1bmlxdWVJZFxuLy8+Pmdyb3VwOiBDb3JlXG4vLz4+ZGVzY3JpcHRpb246IEZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBhbmQgcmVtb3ZlIHVuaXF1ZUlkJ3Ncbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS91bmlxdWVJZC9cblxuXG5cbnZhciB1bmlxdWVJZCA9ICQuZm4uZXh0ZW5kKCB7XG5cdHVuaXF1ZUlkOiAoIGZ1bmN0aW9uKCkge1xuXHRcdHZhciB1dWlkID0gMDtcblxuXHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICF0aGlzLmlkICkge1xuXHRcdFx0XHRcdHRoaXMuaWQgPSBcInVpLWlkLVwiICsgKCArK3V1aWQgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH07XG5cdH0gKSgpLFxuXG5cdHJlbW92ZVVuaXF1ZUlkOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggL151aS1pZC1cXGQrJC8udGVzdCggdGhpcy5pZCApICkge1xuXHRcdFx0XHQkKCB0aGlzICkucmVtb3ZlQXR0ciggXCJpZFwiICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBBY2NvcmRpb25cbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8ganNjczpkaXNhYmxlIG1heGltdW1MaW5lTGVuZ3RoXG4vLz4+ZGVzY3JpcHRpb246IERpc3BsYXlzIGNvbGxhcHNpYmxlIGNvbnRlbnQgcGFuZWxzIGZvciBwcmVzZW50aW5nIGluZm9ybWF0aW9uIGluIGEgbGltaXRlZCBhbW91bnQgb2Ygc3BhY2UuXG4vLyBqc2NzOmVuYWJsZSBtYXhpbXVtTGluZUxlbmd0aFxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2FjY29yZGlvbi9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9hY2NvcmRpb24vXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9hY2NvcmRpb24uY3NzXG4vLz4+Y3NzLnRoZW1lOiAuLi8uLi90aGVtZXMvYmFzZS90aGVtZS5jc3NcblxuXG5cbnZhciB3aWRnZXRzQWNjb3JkaW9uID0gJC53aWRnZXQoIFwidWkuYWNjb3JkaW9uXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGFjdGl2ZTogMCxcblx0XHRhbmltYXRlOiB7fSxcblx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcInVpLWFjY29yZGlvbi1oZWFkZXJcIjogXCJ1aS1jb3JuZXItdG9wXCIsXG5cdFx0XHRcInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkXCI6IFwidWktY29ybmVyLWFsbFwiLFxuXHRcdFx0XCJ1aS1hY2NvcmRpb24tY29udGVudFwiOiBcInVpLWNvcm5lci1ib3R0b21cIlxuXHRcdH0sXG5cdFx0Y29sbGFwc2libGU6IGZhbHNlLFxuXHRcdGV2ZW50OiBcImNsaWNrXCIsXG5cdFx0aGVhZGVyOiBcIj4gbGkgPiA6Zmlyc3QtY2hpbGQsID4gOm5vdChsaSk6ZXZlblwiLFxuXHRcdGhlaWdodFN0eWxlOiBcImF1dG9cIixcblx0XHRpY29uczoge1xuXHRcdFx0YWN0aXZlSGVhZGVyOiBcInVpLWljb24tdHJpYW5nbGUtMS1zXCIsXG5cdFx0XHRoZWFkZXI6IFwidWktaWNvbi10cmlhbmdsZS0xLWVcIlxuXHRcdH0sXG5cblx0XHQvLyBDYWxsYmFja3Ncblx0XHRhY3RpdmF0ZTogbnVsbCxcblx0XHRiZWZvcmVBY3RpdmF0ZTogbnVsbFxuXHR9LFxuXG5cdGhpZGVQcm9wczoge1xuXHRcdGJvcmRlclRvcFdpZHRoOiBcImhpZGVcIixcblx0XHRib3JkZXJCb3R0b21XaWR0aDogXCJoaWRlXCIsXG5cdFx0cGFkZGluZ1RvcDogXCJoaWRlXCIsXG5cdFx0cGFkZGluZ0JvdHRvbTogXCJoaWRlXCIsXG5cdFx0aGVpZ2h0OiBcImhpZGVcIlxuXHR9LFxuXG5cdHNob3dQcm9wczoge1xuXHRcdGJvcmRlclRvcFdpZHRoOiBcInNob3dcIixcblx0XHRib3JkZXJCb3R0b21XaWR0aDogXCJzaG93XCIsXG5cdFx0cGFkZGluZ1RvcDogXCJzaG93XCIsXG5cdFx0cGFkZGluZ0JvdHRvbTogXCJzaG93XCIsXG5cdFx0aGVpZ2h0OiBcInNob3dcIlxuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0dGhpcy5wcmV2U2hvdyA9IHRoaXMucHJldkhpZGUgPSAkKCk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktYWNjb3JkaW9uXCIsIFwidWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldFwiICk7XG5cdFx0dGhpcy5lbGVtZW50LmF0dHIoIFwicm9sZVwiLCBcInRhYmxpc3RcIiApO1xuXG5cdFx0Ly8gRG9uJ3QgYWxsb3cgY29sbGFwc2libGU6IGZhbHNlIGFuZCBhY3RpdmU6IGZhbHNlIC8gbnVsbFxuXHRcdGlmICggIW9wdGlvbnMuY29sbGFwc2libGUgJiYgKCBvcHRpb25zLmFjdGl2ZSA9PT0gZmFsc2UgfHwgb3B0aW9ucy5hY3RpdmUgPT0gbnVsbCApICkge1xuXHRcdFx0b3B0aW9ucy5hY3RpdmUgPSAwO1xuXHRcdH1cblxuXHRcdHRoaXMuX3Byb2Nlc3NQYW5lbHMoKTtcblxuXHRcdC8vIGhhbmRsZSBuZWdhdGl2ZSB2YWx1ZXNcblx0XHRpZiAoIG9wdGlvbnMuYWN0aXZlIDwgMCApIHtcblx0XHRcdG9wdGlvbnMuYWN0aXZlICs9IHRoaXMuaGVhZGVycy5sZW5ndGg7XG5cdFx0fVxuXHRcdHRoaXMuX3JlZnJlc2goKTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlRXZlbnREYXRhOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0aGVhZGVyOiB0aGlzLmFjdGl2ZSxcblx0XHRcdHBhbmVsOiAhdGhpcy5hY3RpdmUubGVuZ3RoID8gJCgpIDogdGhpcy5hY3RpdmUubmV4dCgpXG5cdFx0fTtcblx0fSxcblxuXHRfY3JlYXRlSWNvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpY29uLCBjaGlsZHJlbixcblx0XHRcdGljb25zID0gdGhpcy5vcHRpb25zLmljb25zO1xuXG5cdFx0aWYgKCBpY29ucyApIHtcblx0XHRcdGljb24gPSAkKCBcIjxzcGFuPlwiICk7XG5cdFx0XHR0aGlzLl9hZGRDbGFzcyggaWNvbiwgXCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb25cIiwgXCJ1aS1pY29uIFwiICsgaWNvbnMuaGVhZGVyICk7XG5cdFx0XHRpY29uLnByZXBlbmRUbyggdGhpcy5oZWFkZXJzICk7XG5cdFx0XHRjaGlsZHJlbiA9IHRoaXMuYWN0aXZlLmNoaWxkcmVuKCBcIi51aS1hY2NvcmRpb24taGVhZGVyLWljb25cIiApO1xuXHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIGNoaWxkcmVuLCBpY29ucy5oZWFkZXIgKVxuXHRcdFx0XHQuX2FkZENsYXNzKCBjaGlsZHJlbiwgbnVsbCwgaWNvbnMuYWN0aXZlSGVhZGVyIClcblx0XHRcdFx0Ll9hZGRDbGFzcyggdGhpcy5oZWFkZXJzLCBcInVpLWFjY29yZGlvbi1pY29uc1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9kZXN0cm95SWNvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmhlYWRlcnMsIFwidWktYWNjb3JkaW9uLWljb25zXCIgKTtcblx0XHR0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIFwiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvblwiICkucmVtb3ZlKCk7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjb250ZW50cztcblxuXHRcdC8vIENsZWFuIHVwIG1haW4gZWxlbWVudFxuXHRcdHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCBcInJvbGVcIiApO1xuXG5cdFx0Ly8gQ2xlYW4gdXAgaGVhZGVyc1xuXHRcdHRoaXMuaGVhZGVyc1xuXHRcdFx0LnJlbW92ZUF0dHIoIFwicm9sZSBhcmlhLWV4cGFuZGVkIGFyaWEtc2VsZWN0ZWQgYXJpYS1jb250cm9scyB0YWJJbmRleFwiIClcblx0XHRcdC5yZW1vdmVVbmlxdWVJZCgpO1xuXG5cdFx0dGhpcy5fZGVzdHJveUljb25zKCk7XG5cblx0XHQvLyBDbGVhbiB1cCBjb250ZW50IHBhbmVsc1xuXHRcdGNvbnRlbnRzID0gdGhpcy5oZWFkZXJzLm5leHQoKVxuXHRcdFx0LmNzcyggXCJkaXNwbGF5XCIsIFwiXCIgKVxuXHRcdFx0LnJlbW92ZUF0dHIoIFwicm9sZSBhcmlhLWhpZGRlbiBhcmlhLWxhYmVsbGVkYnlcIiApXG5cdFx0XHQucmVtb3ZlVW5pcXVlSWQoKTtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmhlaWdodFN0eWxlICE9PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdGNvbnRlbnRzLmNzcyggXCJoZWlnaHRcIiwgXCJcIiApO1xuXHRcdH1cblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRpZiAoIGtleSA9PT0gXCJhY3RpdmVcIiApIHtcblxuXHRcdFx0Ly8gX2FjdGl2YXRlKCkgd2lsbCBoYW5kbGUgaW52YWxpZCB2YWx1ZXMgYW5kIHVwZGF0ZSB0aGlzLm9wdGlvbnNcblx0XHRcdHRoaXMuX2FjdGl2YXRlKCB2YWx1ZSApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ID09PSBcImV2ZW50XCIgKSB7XG5cdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5ldmVudCApIHtcblx0XHRcdFx0dGhpcy5fb2ZmKCB0aGlzLmhlYWRlcnMsIHRoaXMub3B0aW9ucy5ldmVudCApO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fc2V0dXBFdmVudHMoIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblxuXHRcdC8vIFNldHRpbmcgY29sbGFwc2libGU6IGZhbHNlIHdoaWxlIGNvbGxhcHNlZDsgb3BlbiBmaXJzdCBwYW5lbFxuXHRcdGlmICgga2V5ID09PSBcImNvbGxhcHNpYmxlXCIgJiYgIXZhbHVlICYmIHRoaXMub3B0aW9ucy5hY3RpdmUgPT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIDAgKTtcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJpY29uc1wiICkge1xuXHRcdFx0dGhpcy5fZGVzdHJveUljb25zKCk7XG5cdFx0XHRpZiAoIHZhbHVlICkge1xuXHRcdFx0XHR0aGlzLl9jcmVhdGVJY29ucygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRfc2V0T3B0aW9uRGlzYWJsZWQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR0aGlzLl9zdXBlciggdmFsdWUgKTtcblxuXHRcdHRoaXMuZWxlbWVudC5hdHRyKCBcImFyaWEtZGlzYWJsZWRcIiwgdmFsdWUgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFOCBPbmx5XG5cdFx0Ly8gIzUzMzIgLyAjNjA1OSAtIG9wYWNpdHkgZG9lc24ndCBjYXNjYWRlIHRvIHBvc2l0aW9uZWQgZWxlbWVudHMgaW4gSUVcblx0XHQvLyBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgZGlzYWJsZWQgY2xhc3MgdG8gdGhlIGhlYWRlcnMgYW5kIHBhbmVsc1xuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIsICEhdmFsdWUgKTtcblx0XHR0aGlzLl90b2dnbGVDbGFzcyggdGhpcy5oZWFkZXJzLmFkZCggdGhpcy5oZWFkZXJzLm5leHQoKSApLCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIsXG5cdFx0XHQhIXZhbHVlICk7XG5cdH0sXG5cblx0X2tleWRvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoIGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhciBrZXlDb2RlID0gJC51aS5rZXlDb2RlLFxuXHRcdFx0bGVuZ3RoID0gdGhpcy5oZWFkZXJzLmxlbmd0aCxcblx0XHRcdGN1cnJlbnRJbmRleCA9IHRoaXMuaGVhZGVycy5pbmRleCggZXZlbnQudGFyZ2V0ICksXG5cdFx0XHR0b0ZvY3VzID0gZmFsc2U7XG5cblx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdGNhc2Uga2V5Q29kZS5SSUdIVDpcblx0XHRjYXNlIGtleUNvZGUuRE9XTjpcblx0XHRcdHRvRm9jdXMgPSB0aGlzLmhlYWRlcnNbICggY3VycmVudEluZGV4ICsgMSApICUgbGVuZ3RoIF07XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIGtleUNvZGUuTEVGVDpcblx0XHRjYXNlIGtleUNvZGUuVVA6XG5cdFx0XHR0b0ZvY3VzID0gdGhpcy5oZWFkZXJzWyAoIGN1cnJlbnRJbmRleCAtIDEgKyBsZW5ndGggKSAlIGxlbmd0aCBdO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBrZXlDb2RlLlNQQUNFOlxuXHRcdGNhc2Uga2V5Q29kZS5FTlRFUjpcblx0XHRcdHRoaXMuX2V2ZW50SGFuZGxlciggZXZlbnQgKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2Uga2V5Q29kZS5IT01FOlxuXHRcdFx0dG9Gb2N1cyA9IHRoaXMuaGVhZGVyc1sgMCBdO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBrZXlDb2RlLkVORDpcblx0XHRcdHRvRm9jdXMgPSB0aGlzLmhlYWRlcnNbIGxlbmd0aCAtIDEgXTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGlmICggdG9Gb2N1cyApIHtcblx0XHRcdCQoIGV2ZW50LnRhcmdldCApLmF0dHIoIFwidGFiSW5kZXhcIiwgLTEgKTtcblx0XHRcdCQoIHRvRm9jdXMgKS5hdHRyKCBcInRhYkluZGV4XCIsIDAgKTtcblx0XHRcdCQoIHRvRm9jdXMgKS50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9wYW5lbEtleURvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoIGV2ZW50LmtleUNvZGUgPT09ICQudWkua2V5Q29kZS5VUCAmJiBldmVudC5jdHJsS2V5ICkge1xuXHRcdFx0JCggZXZlbnQuY3VycmVudFRhcmdldCApLnByZXYoKS50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0cmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cdFx0dGhpcy5fcHJvY2Vzc1BhbmVscygpO1xuXG5cdFx0Ly8gV2FzIGNvbGxhcHNlZCBvciBubyBwYW5lbFxuXHRcdGlmICggKCBvcHRpb25zLmFjdGl2ZSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5jb2xsYXBzaWJsZSA9PT0gdHJ1ZSApIHx8XG5cdFx0XHRcdCF0aGlzLmhlYWRlcnMubGVuZ3RoICkge1xuXHRcdFx0b3B0aW9ucy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHRoaXMuYWN0aXZlID0gJCgpO1xuXG5cdFx0Ly8gYWN0aXZlIGZhbHNlIG9ubHkgd2hlbiBjb2xsYXBzaWJsZSBpcyB0cnVlXG5cdFx0fSBlbHNlIGlmICggb3B0aW9ucy5hY3RpdmUgPT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIDAgKTtcblxuXHRcdC8vIHdhcyBhY3RpdmUsIGJ1dCBhY3RpdmUgcGFuZWwgaXMgZ29uZVxuXHRcdH0gZWxzZSBpZiAoIHRoaXMuYWN0aXZlLmxlbmd0aCAmJiAhJC5jb250YWlucyggdGhpcy5lbGVtZW50WyAwIF0sIHRoaXMuYWN0aXZlWyAwIF0gKSApIHtcblxuXHRcdFx0Ly8gYWxsIHJlbWFpbmluZyBwYW5lbCBhcmUgZGlzYWJsZWRcblx0XHRcdGlmICggdGhpcy5oZWFkZXJzLmxlbmd0aCA9PT0gdGhpcy5oZWFkZXJzLmZpbmQoIFwiLnVpLXN0YXRlLWRpc2FibGVkXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdG9wdGlvbnMuYWN0aXZlID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuYWN0aXZlID0gJCgpO1xuXG5cdFx0XHQvLyBhY3RpdmF0ZSBwcmV2aW91cyBwYW5lbFxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fYWN0aXZhdGUoIE1hdGgubWF4KCAwLCBvcHRpb25zLmFjdGl2ZSAtIDEgKSApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gd2FzIGFjdGl2ZSwgYWN0aXZlIHBhbmVsIHN0aWxsIGV4aXN0c1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIG1ha2Ugc3VyZSBhY3RpdmUgaW5kZXggaXMgY29ycmVjdFxuXHRcdFx0b3B0aW9ucy5hY3RpdmUgPSB0aGlzLmhlYWRlcnMuaW5kZXgoIHRoaXMuYWN0aXZlICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fZGVzdHJveUljb25zKCk7XG5cblx0XHR0aGlzLl9yZWZyZXNoKCk7XG5cdH0sXG5cblx0X3Byb2Nlc3NQYW5lbHM6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBwcmV2SGVhZGVycyA9IHRoaXMuaGVhZGVycyxcblx0XHRcdHByZXZQYW5lbHMgPSB0aGlzLnBhbmVscztcblxuXHRcdHRoaXMuaGVhZGVycyA9IHRoaXMuZWxlbWVudC5maW5kKCB0aGlzLm9wdGlvbnMuaGVhZGVyICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaGVhZGVycywgXCJ1aS1hY2NvcmRpb24taGVhZGVyIHVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkXCIsXG5cdFx0XHRcInVpLXN0YXRlLWRlZmF1bHRcIiApO1xuXG5cdFx0dGhpcy5wYW5lbHMgPSB0aGlzLmhlYWRlcnMubmV4dCgpLmZpbHRlciggXCI6bm90KC51aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUpXCIgKS5oaWRlKCk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMucGFuZWxzLCBcInVpLWFjY29yZGlvbi1jb250ZW50XCIsIFwidWktaGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50XCIgKTtcblxuXHRcdC8vIEF2b2lkIG1lbW9yeSBsZWFrcyAoIzEwMDU2KVxuXHRcdGlmICggcHJldlBhbmVscyApIHtcblx0XHRcdHRoaXMuX29mZiggcHJldkhlYWRlcnMubm90KCB0aGlzLmhlYWRlcnMgKSApO1xuXHRcdFx0dGhpcy5fb2ZmKCBwcmV2UGFuZWxzLm5vdCggdGhpcy5wYW5lbHMgKSApO1xuXHRcdH1cblx0fSxcblxuXHRfcmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG1heEhlaWdodCxcblx0XHRcdG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRoZWlnaHRTdHlsZSA9IG9wdGlvbnMuaGVpZ2h0U3R5bGUsXG5cdFx0XHRwYXJlbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50KCk7XG5cblx0XHR0aGlzLmFjdGl2ZSA9IHRoaXMuX2ZpbmRBY3RpdmUoIG9wdGlvbnMuYWN0aXZlICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuYWN0aXZlLCBcInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKVxuXHRcdFx0Ll9yZW1vdmVDbGFzcyggdGhpcy5hY3RpdmUsIFwidWktYWNjb3JkaW9uLWhlYWRlci1jb2xsYXBzZWRcIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmFjdGl2ZS5uZXh0KCksIFwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlXCIgKTtcblx0XHR0aGlzLmFjdGl2ZS5uZXh0KCkuc2hvdygpO1xuXG5cdFx0dGhpcy5oZWFkZXJzXG5cdFx0XHQuYXR0ciggXCJyb2xlXCIsIFwidGFiXCIgKVxuXHRcdFx0LmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgaGVhZGVyID0gJCggdGhpcyApLFxuXHRcdFx0XHRcdGhlYWRlcklkID0gaGVhZGVyLnVuaXF1ZUlkKCkuYXR0ciggXCJpZFwiICksXG5cdFx0XHRcdFx0cGFuZWwgPSBoZWFkZXIubmV4dCgpLFxuXHRcdFx0XHRcdHBhbmVsSWQgPSBwYW5lbC51bmlxdWVJZCgpLmF0dHIoIFwiaWRcIiApO1xuXHRcdFx0XHRoZWFkZXIuYXR0ciggXCJhcmlhLWNvbnRyb2xzXCIsIHBhbmVsSWQgKTtcblx0XHRcdFx0cGFuZWwuYXR0ciggXCJhcmlhLWxhYmVsbGVkYnlcIiwgaGVhZGVySWQgKTtcblx0XHRcdH0gKVxuXHRcdFx0Lm5leHQoKVxuXHRcdFx0XHQuYXR0ciggXCJyb2xlXCIsIFwidGFicGFuZWxcIiApO1xuXG5cdFx0dGhpcy5oZWFkZXJzXG5cdFx0XHQubm90KCB0aGlzLmFjdGl2ZSApXG5cdFx0XHRcdC5hdHRyKCB7XG5cdFx0XHRcdFx0XCJhcmlhLXNlbGVjdGVkXCI6IFwiZmFsc2VcIixcblx0XHRcdFx0XHRcImFyaWEtZXhwYW5kZWRcIjogXCJmYWxzZVwiLFxuXHRcdFx0XHRcdHRhYkluZGV4OiAtMVxuXHRcdFx0XHR9IClcblx0XHRcdFx0Lm5leHQoKVxuXHRcdFx0XHRcdC5hdHRyKCB7XG5cdFx0XHRcdFx0XHRcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG5cdFx0XHRcdFx0fSApXG5cdFx0XHRcdFx0LmhpZGUoKTtcblxuXHRcdC8vIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgaGVhZGVyIGlzIGluIHRoZSB0YWIgb3JkZXJcblx0XHRpZiAoICF0aGlzLmFjdGl2ZS5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLmhlYWRlcnMuZXEoIDAgKS5hdHRyKCBcInRhYkluZGV4XCIsIDAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5hY3RpdmUuYXR0cigge1xuXHRcdFx0XHRcImFyaWEtc2VsZWN0ZWRcIjogXCJ0cnVlXCIsXG5cdFx0XHRcdFwiYXJpYS1leHBhbmRlZFwiOiBcInRydWVcIixcblx0XHRcdFx0dGFiSW5kZXg6IDBcblx0XHRcdH0gKVxuXHRcdFx0XHQubmV4dCgpXG5cdFx0XHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0XHRcdFwiYXJpYS1oaWRkZW5cIjogXCJmYWxzZVwiXG5cdFx0XHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NyZWF0ZUljb25zKCk7XG5cblx0XHR0aGlzLl9zZXR1cEV2ZW50cyggb3B0aW9ucy5ldmVudCApO1xuXG5cdFx0aWYgKCBoZWlnaHRTdHlsZSA9PT0gXCJmaWxsXCIgKSB7XG5cdFx0XHRtYXhIZWlnaHQgPSBwYXJlbnQuaGVpZ2h0KCk7XG5cdFx0XHR0aGlzLmVsZW1lbnQuc2libGluZ3MoIFwiOnZpc2libGVcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9ICQoIHRoaXMgKSxcblx0XHRcdFx0XHRwb3NpdGlvbiA9IGVsZW0uY3NzKCBcInBvc2l0aW9uXCIgKTtcblxuXHRcdFx0XHRpZiAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bWF4SGVpZ2h0IC09IGVsZW0ub3V0ZXJIZWlnaHQoIHRydWUgKTtcblx0XHRcdH0gKTtcblxuXHRcdFx0dGhpcy5oZWFkZXJzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRtYXhIZWlnaHQgLT0gJCggdGhpcyApLm91dGVySGVpZ2h0KCB0cnVlICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdHRoaXMuaGVhZGVycy5uZXh0KClcblx0XHRcdFx0LmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdCQoIHRoaXMgKS5oZWlnaHQoIE1hdGgubWF4KCAwLCBtYXhIZWlnaHQgLVxuXHRcdFx0XHRcdFx0JCggdGhpcyApLmlubmVySGVpZ2h0KCkgKyAkKCB0aGlzICkuaGVpZ2h0KCkgKSApO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0LmNzcyggXCJvdmVyZmxvd1wiLCBcImF1dG9cIiApO1xuXHRcdH0gZWxzZSBpZiAoIGhlaWdodFN0eWxlID09PSBcImF1dG9cIiApIHtcblx0XHRcdG1heEhlaWdodCA9IDA7XG5cdFx0XHR0aGlzLmhlYWRlcnMubmV4dCgpXG5cdFx0XHRcdC5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHR2YXIgaXNWaXNpYmxlID0gJCggdGhpcyApLmlzKCBcIjp2aXNpYmxlXCIgKTtcblx0XHRcdFx0XHRpZiAoICFpc1Zpc2libGUgKSB7XG5cdFx0XHRcdFx0XHQkKCB0aGlzICkuc2hvdygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtYXhIZWlnaHQgPSBNYXRoLm1heCggbWF4SGVpZ2h0LCAkKCB0aGlzICkuY3NzKCBcImhlaWdodFwiLCBcIlwiICkuaGVpZ2h0KCkgKTtcblx0XHRcdFx0XHRpZiAoICFpc1Zpc2libGUgKSB7XG5cdFx0XHRcdFx0XHQkKCB0aGlzICkuaGlkZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApXG5cdFx0XHRcdC5oZWlnaHQoIG1heEhlaWdodCApO1xuXHRcdH1cblx0fSxcblxuXHRfYWN0aXZhdGU6IGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHR2YXIgYWN0aXZlID0gdGhpcy5fZmluZEFjdGl2ZSggaW5kZXggKVsgMCBdO1xuXG5cdFx0Ly8gVHJ5aW5nIHRvIGFjdGl2YXRlIHRoZSBhbHJlYWR5IGFjdGl2ZSBwYW5lbFxuXHRcdGlmICggYWN0aXZlID09PSB0aGlzLmFjdGl2ZVsgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFRyeWluZyB0byBjb2xsYXBzZSwgc2ltdWxhdGUgYSBjbGljayBvbiB0aGUgY3VycmVudGx5IGFjdGl2ZSBoZWFkZXJcblx0XHRhY3RpdmUgPSBhY3RpdmUgfHwgdGhpcy5hY3RpdmVbIDAgXTtcblxuXHRcdHRoaXMuX2V2ZW50SGFuZGxlcigge1xuXHRcdFx0dGFyZ2V0OiBhY3RpdmUsXG5cdFx0XHRjdXJyZW50VGFyZ2V0OiBhY3RpdmUsXG5cdFx0XHRwcmV2ZW50RGVmYXVsdDogJC5ub29wXG5cdFx0fSApO1xuXHR9LFxuXG5cdF9maW5kQWN0aXZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJudW1iZXJcIiA/IHRoaXMuaGVhZGVycy5lcSggc2VsZWN0b3IgKSA6ICQoKTtcblx0fSxcblxuXHRfc2V0dXBFdmVudHM6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgZXZlbnRzID0ge1xuXHRcdFx0a2V5ZG93bjogXCJfa2V5ZG93blwiXG5cdFx0fTtcblx0XHRpZiAoIGV2ZW50ICkge1xuXHRcdFx0JC5lYWNoKCBldmVudC5zcGxpdCggXCIgXCIgKSwgZnVuY3Rpb24oIGluZGV4LCBldmVudE5hbWUgKSB7XG5cdFx0XHRcdGV2ZW50c1sgZXZlbnROYW1lIF0gPSBcIl9ldmVudEhhbmRsZXJcIjtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR0aGlzLl9vZmYoIHRoaXMuaGVhZGVycy5hZGQoIHRoaXMuaGVhZGVycy5uZXh0KCkgKSApO1xuXHRcdHRoaXMuX29uKCB0aGlzLmhlYWRlcnMsIGV2ZW50cyApO1xuXHRcdHRoaXMuX29uKCB0aGlzLmhlYWRlcnMubmV4dCgpLCB7IGtleWRvd246IFwiX3BhbmVsS2V5RG93blwiIH0gKTtcblx0XHR0aGlzLl9ob3ZlcmFibGUoIHRoaXMuaGVhZGVycyApO1xuXHRcdHRoaXMuX2ZvY3VzYWJsZSggdGhpcy5oZWFkZXJzICk7XG5cdH0sXG5cblx0X2V2ZW50SGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBhY3RpdmVDaGlsZHJlbiwgY2xpY2tlZENoaWxkcmVuLFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGFjdGl2ZSA9IHRoaXMuYWN0aXZlLFxuXHRcdFx0Y2xpY2tlZCA9ICQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKSxcblx0XHRcdGNsaWNrZWRJc0FjdGl2ZSA9IGNsaWNrZWRbIDAgXSA9PT0gYWN0aXZlWyAwIF0sXG5cdFx0XHRjb2xsYXBzaW5nID0gY2xpY2tlZElzQWN0aXZlICYmIG9wdGlvbnMuY29sbGFwc2libGUsXG5cdFx0XHR0b1Nob3cgPSBjb2xsYXBzaW5nID8gJCgpIDogY2xpY2tlZC5uZXh0KCksXG5cdFx0XHR0b0hpZGUgPSBhY3RpdmUubmV4dCgpLFxuXHRcdFx0ZXZlbnREYXRhID0ge1xuXHRcdFx0XHRvbGRIZWFkZXI6IGFjdGl2ZSxcblx0XHRcdFx0b2xkUGFuZWw6IHRvSGlkZSxcblx0XHRcdFx0bmV3SGVhZGVyOiBjb2xsYXBzaW5nID8gJCgpIDogY2xpY2tlZCxcblx0XHRcdFx0bmV3UGFuZWw6IHRvU2hvd1xuXHRcdFx0fTtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRpZiAoXG5cblx0XHRcdFx0Ly8gY2xpY2sgb24gYWN0aXZlIGhlYWRlciwgYnV0IG5vdCBjb2xsYXBzaWJsZVxuXHRcdFx0XHQoIGNsaWNrZWRJc0FjdGl2ZSAmJiAhb3B0aW9ucy5jb2xsYXBzaWJsZSApIHx8XG5cblx0XHRcdFx0Ly8gYWxsb3cgY2FuY2VsaW5nIGFjdGl2YXRpb25cblx0XHRcdFx0KCB0aGlzLl90cmlnZ2VyKCBcImJlZm9yZUFjdGl2YXRlXCIsIGV2ZW50LCBldmVudERhdGEgKSA9PT0gZmFsc2UgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRvcHRpb25zLmFjdGl2ZSA9IGNvbGxhcHNpbmcgPyBmYWxzZSA6IHRoaXMuaGVhZGVycy5pbmRleCggY2xpY2tlZCApO1xuXG5cdFx0Ly8gV2hlbiB0aGUgY2FsbCB0byAuX3RvZ2dsZSgpIGNvbWVzIGFmdGVyIHRoZSBjbGFzcyBjaGFuZ2VzXG5cdFx0Ly8gaXQgY2F1c2VzIGEgdmVyeSBvZGQgYnVnIGluIElFIDggKHNlZSAjNjcyMClcblx0XHR0aGlzLmFjdGl2ZSA9IGNsaWNrZWRJc0FjdGl2ZSA/ICQoKSA6IGNsaWNrZWQ7XG5cdFx0dGhpcy5fdG9nZ2xlKCBldmVudERhdGEgKTtcblxuXHRcdC8vIFN3aXRjaCBjbGFzc2VzXG5cdFx0Ly8gY29ybmVyIGNsYXNzZXMgb24gdGhlIHByZXZpb3VzbHkgYWN0aXZlIGhlYWRlciBzdGF5IGFmdGVyIHRoZSBhbmltYXRpb25cblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggYWN0aXZlLCBcInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRpZiAoIG9wdGlvbnMuaWNvbnMgKSB7XG5cdFx0XHRhY3RpdmVDaGlsZHJlbiA9IGFjdGl2ZS5jaGlsZHJlbiggXCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uXCIgKTtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBhY3RpdmVDaGlsZHJlbiwgbnVsbCwgb3B0aW9ucy5pY29ucy5hY3RpdmVIZWFkZXIgKVxuXHRcdFx0XHQuX2FkZENsYXNzKCBhY3RpdmVDaGlsZHJlbiwgbnVsbCwgb3B0aW9ucy5pY29ucy5oZWFkZXIgKTtcblx0XHR9XG5cblx0XHRpZiAoICFjbGlja2VkSXNBY3RpdmUgKSB7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggY2xpY2tlZCwgXCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZFwiIClcblx0XHRcdFx0Ll9hZGRDbGFzcyggY2xpY2tlZCwgXCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZVwiLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0XHRpZiAoIG9wdGlvbnMuaWNvbnMgKSB7XG5cdFx0XHRcdGNsaWNrZWRDaGlsZHJlbiA9IGNsaWNrZWQuY2hpbGRyZW4oIFwiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvblwiICk7XG5cdFx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBjbGlja2VkQ2hpbGRyZW4sIG51bGwsIG9wdGlvbnMuaWNvbnMuaGVhZGVyIClcblx0XHRcdFx0XHQuX2FkZENsYXNzKCBjbGlja2VkQ2hpbGRyZW4sIG51bGwsIG9wdGlvbnMuaWNvbnMuYWN0aXZlSGVhZGVyICk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuX2FkZENsYXNzKCBjbGlja2VkLm5leHQoKSwgXCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmVcIiApO1xuXHRcdH1cblx0fSxcblxuXHRfdG9nZ2xlOiBmdW5jdGlvbiggZGF0YSApIHtcblx0XHR2YXIgdG9TaG93ID0gZGF0YS5uZXdQYW5lbCxcblx0XHRcdHRvSGlkZSA9IHRoaXMucHJldlNob3cubGVuZ3RoID8gdGhpcy5wcmV2U2hvdyA6IGRhdGEub2xkUGFuZWw7XG5cblx0XHQvLyBIYW5kbGUgYWN0aXZhdGluZyBhIHBhbmVsIGR1cmluZyB0aGUgYW5pbWF0aW9uIGZvciBhbm90aGVyIGFjdGl2YXRpb25cblx0XHR0aGlzLnByZXZTaG93LmFkZCggdGhpcy5wcmV2SGlkZSApLnN0b3AoIHRydWUsIHRydWUgKTtcblx0XHR0aGlzLnByZXZTaG93ID0gdG9TaG93O1xuXHRcdHRoaXMucHJldkhpZGUgPSB0b0hpZGU7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5hbmltYXRlICkge1xuXHRcdFx0dGhpcy5fYW5pbWF0ZSggdG9TaG93LCB0b0hpZGUsIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dG9IaWRlLmhpZGUoKTtcblx0XHRcdHRvU2hvdy5zaG93KCk7XG5cdFx0XHR0aGlzLl90b2dnbGVDb21wbGV0ZSggZGF0YSApO1xuXHRcdH1cblxuXHRcdHRvSGlkZS5hdHRyKCB7XG5cdFx0XHRcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG5cdFx0fSApO1xuXHRcdHRvSGlkZS5wcmV2KCkuYXR0cigge1xuXHRcdFx0XCJhcmlhLXNlbGVjdGVkXCI6IFwiZmFsc2VcIixcblx0XHRcdFwiYXJpYS1leHBhbmRlZFwiOiBcImZhbHNlXCJcblx0XHR9ICk7XG5cblx0XHQvLyBpZiB3ZSdyZSBzd2l0Y2hpbmcgcGFuZWxzLCByZW1vdmUgdGhlIG9sZCBoZWFkZXIgZnJvbSB0aGUgdGFiIG9yZGVyXG5cdFx0Ly8gaWYgd2UncmUgb3BlbmluZyBmcm9tIGNvbGxhcHNlZCBzdGF0ZSwgcmVtb3ZlIHRoZSBwcmV2aW91cyBoZWFkZXIgZnJvbSB0aGUgdGFiIG9yZGVyXG5cdFx0Ly8gaWYgd2UncmUgY29sbGFwc2luZywgdGhlbiBrZWVwIHRoZSBjb2xsYXBzaW5nIGhlYWRlciBpbiB0aGUgdGFiIG9yZGVyXG5cdFx0aWYgKCB0b1Nob3cubGVuZ3RoICYmIHRvSGlkZS5sZW5ndGggKSB7XG5cdFx0XHR0b0hpZGUucHJldigpLmF0dHIoIHtcblx0XHRcdFx0XCJ0YWJJbmRleFwiOiAtMSxcblx0XHRcdFx0XCJhcmlhLWV4cGFuZGVkXCI6IFwiZmFsc2VcIlxuXHRcdFx0fSApO1xuXHRcdH0gZWxzZSBpZiAoIHRvU2hvdy5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLmhlYWRlcnMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIHBhcnNlSW50KCAkKCB0aGlzICkuYXR0ciggXCJ0YWJJbmRleFwiICksIDEwICkgPT09IDA7XG5cdFx0XHR9IClcblx0XHRcdFx0LmF0dHIoIFwidGFiSW5kZXhcIiwgLTEgKTtcblx0XHR9XG5cblx0XHR0b1Nob3dcblx0XHRcdC5hdHRyKCBcImFyaWEtaGlkZGVuXCIsIFwiZmFsc2VcIiApXG5cdFx0XHQucHJldigpXG5cdFx0XHRcdC5hdHRyKCB7XG5cdFx0XHRcdFx0XCJhcmlhLXNlbGVjdGVkXCI6IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdFwiYXJpYS1leHBhbmRlZFwiOiBcInRydWVcIixcblx0XHRcdFx0XHR0YWJJbmRleDogMFxuXHRcdFx0XHR9ICk7XG5cdH0sXG5cblx0X2FuaW1hdGU6IGZ1bmN0aW9uKCB0b1Nob3csIHRvSGlkZSwgZGF0YSApIHtcblx0XHR2YXIgdG90YWwsIGVhc2luZywgZHVyYXRpb24sXG5cdFx0XHR0aGF0ID0gdGhpcyxcblx0XHRcdGFkanVzdCA9IDAsXG5cdFx0XHRib3hTaXppbmcgPSB0b1Nob3cuY3NzKCBcImJveC1zaXppbmdcIiApLFxuXHRcdFx0ZG93biA9IHRvU2hvdy5sZW5ndGggJiZcblx0XHRcdFx0KCAhdG9IaWRlLmxlbmd0aCB8fCAoIHRvU2hvdy5pbmRleCgpIDwgdG9IaWRlLmluZGV4KCkgKSApLFxuXHRcdFx0YW5pbWF0ZSA9IHRoaXMub3B0aW9ucy5hbmltYXRlIHx8IHt9LFxuXHRcdFx0b3B0aW9ucyA9IGRvd24gJiYgYW5pbWF0ZS5kb3duIHx8IGFuaW1hdGUsXG5cdFx0XHRjb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGF0Ll90b2dnbGVDb21wbGV0ZSggZGF0YSApO1xuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIG9wdGlvbnMgPT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRkdXJhdGlvbiA9IG9wdGlvbnM7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRlYXNpbmcgPSBvcHRpb25zO1xuXHRcdH1cblxuXHRcdC8vIGZhbGwgYmFjayBmcm9tIG9wdGlvbnMgdG8gYW5pbWF0aW9uIGluIGNhc2Ugb2YgcGFydGlhbCBkb3duIHNldHRpbmdzXG5cdFx0ZWFzaW5nID0gZWFzaW5nIHx8IG9wdGlvbnMuZWFzaW5nIHx8IGFuaW1hdGUuZWFzaW5nO1xuXHRcdGR1cmF0aW9uID0gZHVyYXRpb24gfHwgb3B0aW9ucy5kdXJhdGlvbiB8fCBhbmltYXRlLmR1cmF0aW9uO1xuXG5cdFx0aWYgKCAhdG9IaWRlLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0b1Nob3cuYW5pbWF0ZSggdGhpcy5zaG93UHJvcHMsIGR1cmF0aW9uLCBlYXNpbmcsIGNvbXBsZXRlICk7XG5cdFx0fVxuXHRcdGlmICggIXRvU2hvdy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdG9IaWRlLmFuaW1hdGUoIHRoaXMuaGlkZVByb3BzLCBkdXJhdGlvbiwgZWFzaW5nLCBjb21wbGV0ZSApO1xuXHRcdH1cblxuXHRcdHRvdGFsID0gdG9TaG93LnNob3coKS5vdXRlckhlaWdodCgpO1xuXHRcdHRvSGlkZS5hbmltYXRlKCB0aGlzLmhpZGVQcm9wcywge1xuXHRcdFx0ZHVyYXRpb246IGR1cmF0aW9uLFxuXHRcdFx0ZWFzaW5nOiBlYXNpbmcsXG5cdFx0XHRzdGVwOiBmdW5jdGlvbiggbm93LCBmeCApIHtcblx0XHRcdFx0Zngubm93ID0gTWF0aC5yb3VuZCggbm93ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHRvU2hvd1xuXHRcdFx0LmhpZGUoKVxuXHRcdFx0LmFuaW1hdGUoIHRoaXMuc2hvd1Byb3BzLCB7XG5cdFx0XHRcdGR1cmF0aW9uOiBkdXJhdGlvbixcblx0XHRcdFx0ZWFzaW5nOiBlYXNpbmcsXG5cdFx0XHRcdGNvbXBsZXRlOiBjb21wbGV0ZSxcblx0XHRcdFx0c3RlcDogZnVuY3Rpb24oIG5vdywgZnggKSB7XG5cdFx0XHRcdFx0Zngubm93ID0gTWF0aC5yb3VuZCggbm93ICk7XG5cdFx0XHRcdFx0aWYgKCBmeC5wcm9wICE9PSBcImhlaWdodFwiICkge1xuXHRcdFx0XHRcdFx0aWYgKCBib3hTaXppbmcgPT09IFwiY29udGVudC1ib3hcIiApIHtcblx0XHRcdFx0XHRcdFx0YWRqdXN0ICs9IGZ4Lm5vdztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKCB0aGF0Lm9wdGlvbnMuaGVpZ2h0U3R5bGUgIT09IFwiY29udGVudFwiICkge1xuXHRcdFx0XHRcdFx0Zngubm93ID0gTWF0aC5yb3VuZCggdG90YWwgLSB0b0hpZGUub3V0ZXJIZWlnaHQoKSAtIGFkanVzdCApO1xuXHRcdFx0XHRcdFx0YWRqdXN0ID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0fSxcblxuXHRfdG9nZ2xlQ29tcGxldGU6IGZ1bmN0aW9uKCBkYXRhICkge1xuXHRcdHZhciB0b0hpZGUgPSBkYXRhLm9sZFBhbmVsLFxuXHRcdFx0cHJldiA9IHRvSGlkZS5wcmV2KCk7XG5cblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdG9IaWRlLCBcInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZVwiICk7XG5cdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHByZXYsIFwidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmVcIiApXG5cdFx0XHQuX2FkZENsYXNzKCBwcmV2LCBcInVpLWFjY29yZGlvbi1oZWFkZXItY29sbGFwc2VkXCIgKTtcblxuXHRcdC8vIFdvcmsgYXJvdW5kIGZvciByZW5kZXJpbmcgYnVnIGluIElFICgjNTQyMSlcblx0XHRpZiAoIHRvSGlkZS5sZW5ndGggKSB7XG5cdFx0XHR0b0hpZGUucGFyZW50KClbIDAgXS5jbGFzc05hbWUgPSB0b0hpZGUucGFyZW50KClbIDAgXS5jbGFzc05hbWU7XG5cdFx0fVxuXHRcdHRoaXMuX3RyaWdnZXIoIFwiYWN0aXZhdGVcIiwgbnVsbCwgZGF0YSApO1xuXHR9XG59ICk7XG5cblxuXG52YXIgc2FmZUFjdGl2ZUVsZW1lbnQgPSAkLnVpLnNhZmVBY3RpdmVFbGVtZW50ID0gZnVuY3Rpb24oIGRvY3VtZW50ICkge1xuXHR2YXIgYWN0aXZlRWxlbWVudDtcblxuXHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0Ly8gSUU5IHRocm93cyBhbiBcIlVuc3BlY2lmaWVkIGVycm9yXCIgYWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuXHR0cnkge1xuXHRcdGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXHR9IGNhdGNoICggZXJyb3IgKSB7XG5cdFx0YWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHQvLyBJRSBtYXkgcmV0dXJuIG51bGwgaW5zdGVhZCBvZiBhbiBlbGVtZW50XG5cdC8vIEludGVyZXN0aW5nbHksIHRoaXMgb25seSBzZWVtcyB0byBvY2N1ciB3aGVuIE5PVCBpbiBhbiBpZnJhbWVcblx0aWYgKCAhYWN0aXZlRWxlbWVudCApIHtcblx0XHRhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDExIG9ubHlcblx0Ly8gSUUxMSByZXR1cm5zIGEgc2VlbWluZ2x5IGVtcHR5IG9iamVjdCBpbiBzb21lIGNhc2VzIHdoZW4gYWNjZXNzaW5nXG5cdC8vIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuXHRpZiAoICFhY3RpdmVFbGVtZW50Lm5vZGVOYW1lICkge1xuXHRcdGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuXHR9XG5cblx0cmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG59O1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIE1lbnUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IE1lbnVcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBDcmVhdGVzIG5lc3RhYmxlIG1lbnVzLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL21lbnUvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vbWVudS9cbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9jb3JlLmNzc1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL21lbnUuY3NzXG4vLz4+Y3NzLnRoZW1lOiAuLi8uLi90aGVtZXMvYmFzZS90aGVtZS5jc3NcblxuXG5cbnZhciB3aWRnZXRzTWVudSA9ICQud2lkZ2V0KCBcInVpLm1lbnVcIiwge1xuXHR2ZXJzaW9uOiBcIjEuMTIuMVwiLFxuXHRkZWZhdWx0RWxlbWVudDogXCI8dWw+XCIsXG5cdGRlbGF5OiAzMDAsXG5cdG9wdGlvbnM6IHtcblx0XHRpY29uczoge1xuXHRcdFx0c3VibWVudTogXCJ1aS1pY29uLWNhcmV0LTEtZVwiXG5cdFx0fSxcblx0XHRpdGVtczogXCI+ICpcIixcblx0XHRtZW51czogXCJ1bFwiLFxuXHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRteTogXCJsZWZ0IHRvcFwiLFxuXHRcdFx0YXQ6IFwicmlnaHQgdG9wXCJcblx0XHR9LFxuXHRcdHJvbGU6IFwibWVudVwiLFxuXG5cdFx0Ly8gQ2FsbGJhY2tzXG5cdFx0Ymx1cjogbnVsbCxcblx0XHRmb2N1czogbnVsbCxcblx0XHRzZWxlY3Q6IG51bGxcblx0fSxcblxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmFjdGl2ZU1lbnUgPSB0aGlzLmVsZW1lbnQ7XG5cblx0XHQvLyBGbGFnIHVzZWQgdG8gcHJldmVudCBmaXJpbmcgb2YgdGhlIGNsaWNrIGhhbmRsZXJcblx0XHQvLyBhcyB0aGUgZXZlbnQgYnViYmxlcyB1cCB0aHJvdWdoIG5lc3RlZCBtZW51c1xuXHRcdHRoaXMubW91c2VIYW5kbGVkID0gZmFsc2U7XG5cdFx0dGhpcy5lbGVtZW50XG5cdFx0XHQudW5pcXVlSWQoKVxuXHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0cm9sZTogdGhpcy5vcHRpb25zLnJvbGUsXG5cdFx0XHRcdHRhYkluZGV4OiAwXG5cdFx0XHR9ICk7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1tZW51XCIsIFwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50XCIgKTtcblx0XHR0aGlzLl9vbigge1xuXG5cdFx0XHQvLyBQcmV2ZW50IGZvY3VzIGZyb20gc3RpY2tpbmcgdG8gbGlua3MgaW5zaWRlIG1lbnUgYWZ0ZXIgY2xpY2tpbmdcblx0XHRcdC8vIHRoZW0gKGZvY3VzIHNob3VsZCBhbHdheXMgc3RheSBvbiBVTCBkdXJpbmcgbmF2aWdhdGlvbikuXG5cdFx0XHRcIm1vdXNlZG93biAudWktbWVudS1pdGVtXCI6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdH0sXG5cdFx0XHRcImNsaWNrIC51aS1tZW51LWl0ZW1cIjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gJCggZXZlbnQudGFyZ2V0ICk7XG5cdFx0XHRcdHZhciBhY3RpdmUgPSAkKCAkLnVpLnNhZmVBY3RpdmVFbGVtZW50KCB0aGlzLmRvY3VtZW50WyAwIF0gKSApO1xuXHRcdFx0XHRpZiAoICF0aGlzLm1vdXNlSGFuZGxlZCAmJiB0YXJnZXQubm90KCBcIi51aS1zdGF0ZS1kaXNhYmxlZFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdHRoaXMuc2VsZWN0KCBldmVudCApO1xuXG5cdFx0XHRcdFx0Ly8gT25seSBzZXQgdGhlIG1vdXNlSGFuZGxlZCBmbGFnIGlmIHRoZSBldmVudCB3aWxsIGJ1YmJsZSwgc2VlICM5NDY5LlxuXHRcdFx0XHRcdGlmICggIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm1vdXNlSGFuZGxlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gT3BlbiBzdWJtZW51IG9uIGNsaWNrXG5cdFx0XHRcdFx0aWYgKCB0YXJnZXQuaGFzKCBcIi51aS1tZW51XCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmV4cGFuZCggZXZlbnQgKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCAhdGhpcy5lbGVtZW50LmlzKCBcIjpmb2N1c1wiICkgJiZcblx0XHRcdFx0XHRcdFx0YWN0aXZlLmNsb3Nlc3QoIFwiLnVpLW1lbnVcIiApLmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVkaXJlY3QgZm9jdXMgdG8gdGhlIG1lbnVcblx0XHRcdFx0XHRcdHRoaXMuZWxlbWVudC50cmlnZ2VyKCBcImZvY3VzXCIsIFsgdHJ1ZSBdICk7XG5cblx0XHRcdFx0XHRcdC8vIElmIHRoZSBhY3RpdmUgaXRlbSBpcyBvbiB0aGUgdG9wIGxldmVsLCBsZXQgaXQgc3RheSBhY3RpdmUuXG5cdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGJsdXIgdGhlIGFjdGl2ZSBpdGVtIHNpbmNlIGl0IGlzIG5vIGxvbmdlciB2aXNpYmxlLlxuXHRcdFx0XHRcdFx0aWYgKCB0aGlzLmFjdGl2ZSAmJiB0aGlzLmFjdGl2ZS5wYXJlbnRzKCBcIi51aS1tZW51XCIgKS5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGNsZWFyVGltZW91dCggdGhpcy50aW1lciApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdFwibW91c2VlbnRlciAudWktbWVudS1pdGVtXCI6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBJZ25vcmUgbW91c2UgZXZlbnRzIHdoaWxlIHR5cGVhaGVhZCBpcyBhY3RpdmUsIHNlZSAjMTA0NTguXG5cdFx0XHRcdC8vIFByZXZlbnRzIGZvY3VzaW5nIHRoZSB3cm9uZyBpdGVtIHdoZW4gdHlwZWFoZWFkIGNhdXNlcyBhIHNjcm9sbCB3aGlsZSB0aGUgbW91c2Vcblx0XHRcdFx0Ly8gaXMgb3ZlciBhbiBpdGVtIGluIHRoZSBtZW51XG5cdFx0XHRcdGlmICggdGhpcy5wcmV2aW91c0ZpbHRlciApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YXIgYWN0dWFsVGFyZ2V0ID0gJCggZXZlbnQudGFyZ2V0ICkuY2xvc2VzdCggXCIudWktbWVudS1pdGVtXCIgKSxcblx0XHRcdFx0XHR0YXJnZXQgPSAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICk7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGJ1YmJsZWQgZXZlbnRzIG9uIHBhcmVudCBpdGVtcywgc2VlICMxMTY0MVxuXHRcdFx0XHRpZiAoIGFjdHVhbFRhcmdldFsgMCBdICE9PSB0YXJnZXRbIDAgXSApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZW1vdmUgdWktc3RhdGUtYWN0aXZlIGNsYXNzIGZyb20gc2libGluZ3Mgb2YgdGhlIG5ld2x5IGZvY3VzZWQgbWVudSBpdGVtXG5cdFx0XHRcdC8vIHRvIGF2b2lkIGEganVtcCBjYXVzZWQgYnkgYWRqYWNlbnQgZWxlbWVudHMgYm90aCBoYXZpbmcgYSBjbGFzcyB3aXRoIGEgYm9yZGVyXG5cdFx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0YXJnZXQuc2libGluZ3MoKS5jaGlsZHJlbiggXCIudWktc3RhdGUtYWN0aXZlXCIgKSxcblx0XHRcdFx0XHRudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0XHRcdHRoaXMuZm9jdXMoIGV2ZW50LCB0YXJnZXQgKTtcblx0XHRcdH0sXG5cdFx0XHRtb3VzZWxlYXZlOiBcImNvbGxhcHNlQWxsXCIsXG5cdFx0XHRcIm1vdXNlbGVhdmUgLnVpLW1lbnVcIjogXCJjb2xsYXBzZUFsbFwiLFxuXHRcdFx0Zm9jdXM6IGZ1bmN0aW9uKCBldmVudCwga2VlcEFjdGl2ZUl0ZW0gKSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlcmUncyBhbHJlYWR5IGFuIGFjdGl2ZSBpdGVtLCBrZWVwIGl0IGFjdGl2ZVxuXHRcdFx0XHQvLyBJZiBub3QsIGFjdGl2YXRlIHRoZSBmaXJzdCBpdGVtXG5cdFx0XHRcdHZhciBpdGVtID0gdGhpcy5hY3RpdmUgfHwgdGhpcy5lbGVtZW50LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApLmVxKCAwICk7XG5cblx0XHRcdFx0aWYgKCAha2VlcEFjdGl2ZUl0ZW0gKSB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1cyggZXZlbnQsIGl0ZW0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGJsdXI6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHZhciBub3RDb250YWluZWQgPSAhJC5jb250YWlucyhcblx0XHRcdFx0XHRcdHRoaXMuZWxlbWVudFsgMCBdLFxuXHRcdFx0XHRcdFx0JC51aS5zYWZlQWN0aXZlRWxlbWVudCggdGhpcy5kb2N1bWVudFsgMCBdIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICggbm90Q29udGFpbmVkICkge1xuXHRcdFx0XHRcdFx0dGhpcy5jb2xsYXBzZUFsbCggZXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdH0sXG5cdFx0XHRrZXlkb3duOiBcIl9rZXlkb3duXCJcblx0XHR9ICk7XG5cblx0XHR0aGlzLnJlZnJlc2goKTtcblxuXHRcdC8vIENsaWNrcyBvdXRzaWRlIG9mIGEgbWVudSBjb2xsYXBzZSBhbnkgb3BlbiBtZW51c1xuXHRcdHRoaXMuX29uKCB0aGlzLmRvY3VtZW50LCB7XG5cdFx0XHRjbGljazogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRpZiAoIHRoaXMuX2Nsb3NlT25Eb2N1bWVudENsaWNrKCBldmVudCApICkge1xuXHRcdFx0XHRcdHRoaXMuY29sbGFwc2VBbGwoIGV2ZW50ICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNldCB0aGUgbW91c2VIYW5kbGVkIGZsYWdcblx0XHRcdFx0dGhpcy5tb3VzZUhhbmRsZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpdGVtcyA9IHRoaXMuZWxlbWVudC5maW5kKCBcIi51aS1tZW51LWl0ZW1cIiApXG5cdFx0XHRcdC5yZW1vdmVBdHRyKCBcInJvbGUgYXJpYS1kaXNhYmxlZFwiICksXG5cdFx0XHRzdWJtZW51cyA9IGl0ZW1zLmNoaWxkcmVuKCBcIi51aS1tZW51LWl0ZW0td3JhcHBlclwiIClcblx0XHRcdFx0LnJlbW92ZVVuaXF1ZUlkKClcblx0XHRcdFx0LnJlbW92ZUF0dHIoIFwidGFiSW5kZXggcm9sZSBhcmlhLWhhc3BvcHVwXCIgKTtcblxuXHRcdC8vIERlc3Ryb3kgKHN1YiltZW51c1xuXHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0LnJlbW92ZUF0dHIoIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIgKVxuXHRcdFx0LmZpbmQoIFwiLnVpLW1lbnVcIiApLmFkZEJhY2soKVxuXHRcdFx0XHQucmVtb3ZlQXR0ciggXCJyb2xlIGFyaWEtbGFiZWxsZWRieSBhcmlhLWV4cGFuZGVkIGFyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgXCIgK1xuXHRcdFx0XHRcdFwidGFiSW5kZXhcIiApXG5cdFx0XHRcdC5yZW1vdmVVbmlxdWVJZCgpXG5cdFx0XHRcdC5zaG93KCk7XG5cblx0XHRzdWJtZW51cy5jaGlsZHJlbigpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsZW0gPSAkKCB0aGlzICk7XG5cdFx0XHRpZiAoIGVsZW0uZGF0YSggXCJ1aS1tZW51LXN1Ym1lbnUtY2FyZXRcIiApICkge1xuXHRcdFx0XHRlbGVtLnJlbW92ZSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfa2V5ZG93bjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBtYXRjaCwgcHJldiwgY2hhcmFjdGVyLCBza2lwLFxuXHRcdFx0cHJldmVudERlZmF1bHQgPSB0cnVlO1xuXG5cdFx0c3dpdGNoICggZXZlbnQua2V5Q29kZSApIHtcblx0XHRjYXNlICQudWkua2V5Q29kZS5QQUdFX1VQOlxuXHRcdFx0dGhpcy5wcmV2aW91c1BhZ2UoIGV2ZW50ICk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5QQUdFX0RPV046XG5cdFx0XHR0aGlzLm5leHRQYWdlKCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAkLnVpLmtleUNvZGUuSE9NRTpcblx0XHRcdHRoaXMuX21vdmUoIFwiZmlyc3RcIiwgXCJmaXJzdFwiLCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAkLnVpLmtleUNvZGUuRU5EOlxuXHRcdFx0dGhpcy5fbW92ZSggXCJsYXN0XCIsIFwibGFzdFwiLCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAkLnVpLmtleUNvZGUuVVA6XG5cdFx0XHR0aGlzLnByZXZpb3VzKCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAkLnVpLmtleUNvZGUuRE9XTjpcblx0XHRcdHRoaXMubmV4dCggZXZlbnQgKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJC51aS5rZXlDb2RlLkxFRlQ6XG5cdFx0XHR0aGlzLmNvbGxhcHNlKCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAkLnVpLmtleUNvZGUuUklHSFQ6XG5cdFx0XHRpZiAoIHRoaXMuYWN0aXZlICYmICF0aGlzLmFjdGl2ZS5pcyggXCIudWktc3RhdGUtZGlzYWJsZWRcIiApICkge1xuXHRcdFx0XHR0aGlzLmV4cGFuZCggZXZlbnQgKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJC51aS5rZXlDb2RlLkVOVEVSOlxuXHRcdGNhc2UgJC51aS5rZXlDb2RlLlNQQUNFOlxuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIGV2ZW50ICk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5FU0NBUEU6XG5cdFx0XHR0aGlzLmNvbGxhcHNlKCBldmVudCApO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG5cdFx0XHRwcmV2ID0gdGhpcy5wcmV2aW91c0ZpbHRlciB8fCBcIlwiO1xuXHRcdFx0c2tpcCA9IGZhbHNlO1xuXG5cdFx0XHQvLyBTdXBwb3J0IG51bWJlciBwYWQgdmFsdWVzXG5cdFx0XHRjaGFyYWN0ZXIgPSBldmVudC5rZXlDb2RlID49IDk2ICYmIGV2ZW50LmtleUNvZGUgPD0gMTA1ID9cblx0XHRcdFx0KCBldmVudC5rZXlDb2RlIC0gOTYgKS50b1N0cmluZygpIDogU3RyaW5nLmZyb21DaGFyQ29kZSggZXZlbnQua2V5Q29kZSApO1xuXG5cdFx0XHRjbGVhclRpbWVvdXQoIHRoaXMuZmlsdGVyVGltZXIgKTtcblxuXHRcdFx0aWYgKCBjaGFyYWN0ZXIgPT09IHByZXYgKSB7XG5cdFx0XHRcdHNraXAgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2hhcmFjdGVyID0gcHJldiArIGNoYXJhY3Rlcjtcblx0XHRcdH1cblxuXHRcdFx0bWF0Y2ggPSB0aGlzLl9maWx0ZXJNZW51SXRlbXMoIGNoYXJhY3RlciApO1xuXHRcdFx0bWF0Y2ggPSBza2lwICYmIG1hdGNoLmluZGV4KCB0aGlzLmFjdGl2ZS5uZXh0KCkgKSAhPT0gLTEgP1xuXHRcdFx0XHR0aGlzLmFjdGl2ZS5uZXh0QWxsKCBcIi51aS1tZW51LWl0ZW1cIiApIDpcblx0XHRcdFx0bWF0Y2g7XG5cblx0XHRcdC8vIElmIG5vIG1hdGNoZXMgb24gdGhlIGN1cnJlbnQgZmlsdGVyLCByZXNldCB0byB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJlc3NlZFxuXHRcdFx0Ly8gdG8gbW92ZSBkb3duIHRoZSBtZW51IHRvIHRoZSBmaXJzdCBpdGVtIHRoYXQgc3RhcnRzIHdpdGggdGhhdCBjaGFyYWN0ZXJcblx0XHRcdGlmICggIW1hdGNoLmxlbmd0aCApIHtcblx0XHRcdFx0Y2hhcmFjdGVyID0gU3RyaW5nLmZyb21DaGFyQ29kZSggZXZlbnQua2V5Q29kZSApO1xuXHRcdFx0XHRtYXRjaCA9IHRoaXMuX2ZpbHRlck1lbnVJdGVtcyggY2hhcmFjdGVyICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggbWF0Y2gubGVuZ3RoICkge1xuXHRcdFx0XHR0aGlzLmZvY3VzKCBldmVudCwgbWF0Y2ggKTtcblx0XHRcdFx0dGhpcy5wcmV2aW91c0ZpbHRlciA9IGNoYXJhY3Rlcjtcblx0XHRcdFx0dGhpcy5maWx0ZXJUaW1lciA9IHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcjtcblx0XHRcdFx0fSwgMTAwMCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBwcmV2ZW50RGVmYXVsdCApIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hY3RpdmF0ZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggdGhpcy5hY3RpdmUgJiYgIXRoaXMuYWN0aXZlLmlzKCBcIi51aS1zdGF0ZS1kaXNhYmxlZFwiICkgKSB7XG5cdFx0XHRpZiAoIHRoaXMuYWN0aXZlLmNoaWxkcmVuKCBcIlthcmlhLWhhc3BvcHVwPSd0cnVlJ11cIiApLmxlbmd0aCApIHtcblx0XHRcdFx0dGhpcy5leHBhbmQoIGV2ZW50ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnNlbGVjdCggZXZlbnQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG1lbnVzLCBpdGVtcywgbmV3U3VibWVudXMsIG5ld0l0ZW1zLCBuZXdXcmFwcGVycyxcblx0XHRcdHRoYXQgPSB0aGlzLFxuXHRcdFx0aWNvbiA9IHRoaXMub3B0aW9ucy5pY29ucy5zdWJtZW51LFxuXHRcdFx0c3VibWVudXMgPSB0aGlzLmVsZW1lbnQuZmluZCggdGhpcy5vcHRpb25zLm1lbnVzICk7XG5cblx0XHR0aGlzLl90b2dnbGVDbGFzcyggXCJ1aS1tZW51LWljb25zXCIsIG51bGwsICEhdGhpcy5lbGVtZW50LmZpbmQoIFwiLnVpLWljb25cIiApLmxlbmd0aCApO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSBuZXN0ZWQgbWVudXNcblx0XHRuZXdTdWJtZW51cyA9IHN1Ym1lbnVzLmZpbHRlciggXCI6bm90KC51aS1tZW51KVwiIClcblx0XHRcdC5oaWRlKClcblx0XHRcdC5hdHRyKCB7XG5cdFx0XHRcdHJvbGU6IHRoaXMub3B0aW9ucy5yb2xlLFxuXHRcdFx0XHRcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLFxuXHRcdFx0XHRcImFyaWEtZXhwYW5kZWRcIjogXCJmYWxzZVwiXG5cdFx0XHR9IClcblx0XHRcdC5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIG1lbnUgPSAkKCB0aGlzICksXG5cdFx0XHRcdFx0aXRlbSA9IG1lbnUucHJldigpLFxuXHRcdFx0XHRcdHN1Ym1lbnVDYXJldCA9ICQoIFwiPHNwYW4+XCIgKS5kYXRhKCBcInVpLW1lbnUtc3VibWVudS1jYXJldFwiLCB0cnVlICk7XG5cblx0XHRcdFx0dGhhdC5fYWRkQ2xhc3MoIHN1Ym1lbnVDYXJldCwgXCJ1aS1tZW51LWljb25cIiwgXCJ1aS1pY29uIFwiICsgaWNvbiApO1xuXHRcdFx0XHRpdGVtXG5cdFx0XHRcdFx0LmF0dHIoIFwiYXJpYS1oYXNwb3B1cFwiLCBcInRydWVcIiApXG5cdFx0XHRcdFx0LnByZXBlbmQoIHN1Ym1lbnVDYXJldCApO1xuXHRcdFx0XHRtZW51LmF0dHIoIFwiYXJpYS1sYWJlbGxlZGJ5XCIsIGl0ZW0uYXR0ciggXCJpZFwiICkgKTtcblx0XHRcdH0gKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCBuZXdTdWJtZW51cywgXCJ1aS1tZW51XCIsIFwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWZyb250XCIgKTtcblxuXHRcdG1lbnVzID0gc3VibWVudXMuYWRkKCB0aGlzLmVsZW1lbnQgKTtcblx0XHRpdGVtcyA9IG1lbnVzLmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSBtZW51LWl0ZW1zIGNvbnRhaW5pbmcgc3BhY2VzIGFuZC9vciBkYXNoZXMgb25seSBhcyBkaXZpZGVyc1xuXHRcdGl0ZW1zLm5vdCggXCIudWktbWVudS1pdGVtXCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpdGVtID0gJCggdGhpcyApO1xuXHRcdFx0aWYgKCB0aGF0Ll9pc0RpdmlkZXIoIGl0ZW0gKSApIHtcblx0XHRcdFx0dGhhdC5fYWRkQ2xhc3MoIGl0ZW0sIFwidWktbWVudS1kaXZpZGVyXCIsIFwidWktd2lkZ2V0LWNvbnRlbnRcIiApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdC8vIERvbid0IHJlZnJlc2ggbGlzdCBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IGFkYXB0ZWRcblx0XHRuZXdJdGVtcyA9IGl0ZW1zLm5vdCggXCIudWktbWVudS1pdGVtLCAudWktbWVudS1kaXZpZGVyXCIgKTtcblx0XHRuZXdXcmFwcGVycyA9IG5ld0l0ZW1zLmNoaWxkcmVuKClcblx0XHRcdC5ub3QoIFwiLnVpLW1lbnVcIiApXG5cdFx0XHRcdC51bmlxdWVJZCgpXG5cdFx0XHRcdC5hdHRyKCB7XG5cdFx0XHRcdFx0dGFiSW5kZXg6IC0xLFxuXHRcdFx0XHRcdHJvbGU6IHRoaXMuX2l0ZW1Sb2xlKClcblx0XHRcdFx0fSApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCBuZXdJdGVtcywgXCJ1aS1tZW51LWl0ZW1cIiApXG5cdFx0XHQuX2FkZENsYXNzKCBuZXdXcmFwcGVycywgXCJ1aS1tZW51LWl0ZW0td3JhcHBlclwiICk7XG5cblx0XHQvLyBBZGQgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGUgdG8gYW55IGRpc2FibGVkIG1lbnUgaXRlbVxuXHRcdGl0ZW1zLmZpbHRlciggXCIudWktc3RhdGUtZGlzYWJsZWRcIiApLmF0dHIoIFwiYXJpYS1kaXNhYmxlZFwiLCBcInRydWVcIiApO1xuXG5cdFx0Ly8gSWYgdGhlIGFjdGl2ZSBpdGVtIGhhcyBiZWVuIHJlbW92ZWQsIGJsdXIgdGhlIG1lbnVcblx0XHRpZiAoIHRoaXMuYWN0aXZlICYmICEkLmNvbnRhaW5zKCB0aGlzLmVsZW1lbnRbIDAgXSwgdGhpcy5hY3RpdmVbIDAgXSApICkge1xuXHRcdFx0dGhpcy5ibHVyKCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9pdGVtUm9sZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1lbnU6IFwibWVudWl0ZW1cIixcblx0XHRcdGxpc3Rib3g6IFwib3B0aW9uXCJcblx0XHR9WyB0aGlzLm9wdGlvbnMucm9sZSBdO1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdGlmICgga2V5ID09PSBcImljb25zXCIgKSB7XG5cdFx0XHR2YXIgaWNvbnMgPSB0aGlzLmVsZW1lbnQuZmluZCggXCIudWktbWVudS1pY29uXCIgKTtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBpY29ucywgbnVsbCwgdGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUgKVxuXHRcdFx0XHQuX2FkZENsYXNzKCBpY29ucywgbnVsbCwgdmFsdWUuc3VibWVudSApO1xuXHRcdH1cblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb25EaXNhYmxlZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHRoaXMuX3N1cGVyKCB2YWx1ZSApO1xuXG5cdFx0dGhpcy5lbGVtZW50LmF0dHIoIFwiYXJpYS1kaXNhYmxlZFwiLCBTdHJpbmcoIHZhbHVlICkgKTtcblx0XHR0aGlzLl90b2dnbGVDbGFzcyggbnVsbCwgXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiLCAhIXZhbHVlICk7XG5cdH0sXG5cblx0Zm9jdXM6IGZ1bmN0aW9uKCBldmVudCwgaXRlbSApIHtcblx0XHR2YXIgbmVzdGVkLCBmb2N1c2VkLCBhY3RpdmVQYXJlbnQ7XG5cdFx0dGhpcy5ibHVyKCBldmVudCwgZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gXCJmb2N1c1wiICk7XG5cblx0XHR0aGlzLl9zY3JvbGxJbnRvVmlldyggaXRlbSApO1xuXG5cdFx0dGhpcy5hY3RpdmUgPSBpdGVtLmZpcnN0KCk7XG5cblx0XHRmb2N1c2VkID0gdGhpcy5hY3RpdmUuY2hpbGRyZW4oIFwiLnVpLW1lbnUtaXRlbS13cmFwcGVyXCIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggZm9jdXNlZCwgbnVsbCwgXCJ1aS1zdGF0ZS1hY3RpdmVcIiApO1xuXG5cdFx0Ly8gT25seSB1cGRhdGUgYXJpYS1hY3RpdmVkZXNjZW5kYW50IGlmIHRoZXJlJ3MgYSByb2xlXG5cdFx0Ly8gb3RoZXJ3aXNlIHdlIGFzc3VtZSBmb2N1cyBpcyBtYW5hZ2VkIGVsc2V3aGVyZVxuXHRcdGlmICggdGhpcy5vcHRpb25zLnJvbGUgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnQuYXR0ciggXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgZm9jdXNlZC5hdHRyKCBcImlkXCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIEhpZ2hsaWdodCBhY3RpdmUgcGFyZW50IG1lbnUgaXRlbSwgaWYgYW55XG5cdFx0YWN0aXZlUGFyZW50ID0gdGhpcy5hY3RpdmVcblx0XHRcdC5wYXJlbnQoKVxuXHRcdFx0XHQuY2xvc2VzdCggXCIudWktbWVudS1pdGVtXCIgKVxuXHRcdFx0XHRcdC5jaGlsZHJlbiggXCIudWktbWVudS1pdGVtLXdyYXBwZXJcIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCBhY3RpdmVQYXJlbnQsIG51bGwsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblxuXHRcdGlmICggZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gXCJrZXlkb3duXCIgKSB7XG5cdFx0XHR0aGlzLl9jbG9zZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnRpbWVyID0gdGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGlzLl9jbG9zZSgpO1xuXHRcdFx0fSwgdGhpcy5kZWxheSApO1xuXHRcdH1cblxuXHRcdG5lc3RlZCA9IGl0ZW0uY2hpbGRyZW4oIFwiLnVpLW1lbnVcIiApO1xuXHRcdGlmICggbmVzdGVkLmxlbmd0aCAmJiBldmVudCAmJiAoIC9ebW91c2UvLnRlc3QoIGV2ZW50LnR5cGUgKSApICkge1xuXHRcdFx0dGhpcy5fc3RhcnRPcGVuaW5nKCBuZXN0ZWQgKTtcblx0XHR9XG5cdFx0dGhpcy5hY3RpdmVNZW51ID0gaXRlbS5wYXJlbnQoKTtcblxuXHRcdHRoaXMuX3RyaWdnZXIoIFwiZm9jdXNcIiwgZXZlbnQsIHsgaXRlbTogaXRlbSB9ICk7XG5cdH0sXG5cblx0X3Njcm9sbEludG9WaWV3OiBmdW5jdGlvbiggaXRlbSApIHtcblx0XHR2YXIgYm9yZGVyVG9wLCBwYWRkaW5nVG9wLCBvZmZzZXQsIHNjcm9sbCwgZWxlbWVudEhlaWdodCwgaXRlbUhlaWdodDtcblx0XHRpZiAoIHRoaXMuX2hhc1Njcm9sbCgpICkge1xuXHRcdFx0Ym9yZGVyVG9wID0gcGFyc2VGbG9hdCggJC5jc3MoIHRoaXMuYWN0aXZlTWVudVsgMCBdLCBcImJvcmRlclRvcFdpZHRoXCIgKSApIHx8IDA7XG5cdFx0XHRwYWRkaW5nVG9wID0gcGFyc2VGbG9hdCggJC5jc3MoIHRoaXMuYWN0aXZlTWVudVsgMCBdLCBcInBhZGRpbmdUb3BcIiApICkgfHwgMDtcblx0XHRcdG9mZnNldCA9IGl0ZW0ub2Zmc2V0KCkudG9wIC0gdGhpcy5hY3RpdmVNZW51Lm9mZnNldCgpLnRvcCAtIGJvcmRlclRvcCAtIHBhZGRpbmdUb3A7XG5cdFx0XHRzY3JvbGwgPSB0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKCk7XG5cdFx0XHRlbGVtZW50SGVpZ2h0ID0gdGhpcy5hY3RpdmVNZW51LmhlaWdodCgpO1xuXHRcdFx0aXRlbUhlaWdodCA9IGl0ZW0ub3V0ZXJIZWlnaHQoKTtcblxuXHRcdFx0aWYgKCBvZmZzZXQgPCAwICkge1xuXHRcdFx0XHR0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKCBzY3JvbGwgKyBvZmZzZXQgKTtcblx0XHRcdH0gZWxzZSBpZiAoIG9mZnNldCArIGl0ZW1IZWlnaHQgPiBlbGVtZW50SGVpZ2h0ICkge1xuXHRcdFx0XHR0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKCBzY3JvbGwgKyBvZmZzZXQgLSBlbGVtZW50SGVpZ2h0ICsgaXRlbUhlaWdodCApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRibHVyOiBmdW5jdGlvbiggZXZlbnQsIGZyb21Gb2N1cyApIHtcblx0XHRpZiAoICFmcm9tRm9jdXMgKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQoIHRoaXMudGltZXIgKTtcblx0XHR9XG5cblx0XHRpZiAoICF0aGlzLmFjdGl2ZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5hY3RpdmUuY2hpbGRyZW4oIFwiLnVpLW1lbnUtaXRlbS13cmFwcGVyXCIgKSxcblx0XHRcdG51bGwsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblxuXHRcdHRoaXMuX3RyaWdnZXIoIFwiYmx1clwiLCBldmVudCwgeyBpdGVtOiB0aGlzLmFjdGl2ZSB9ICk7XG5cdFx0dGhpcy5hY3RpdmUgPSBudWxsO1xuXHR9LFxuXG5cdF9zdGFydE9wZW5pbmc6IGZ1bmN0aW9uKCBzdWJtZW51ICkge1xuXHRcdGNsZWFyVGltZW91dCggdGhpcy50aW1lciApO1xuXG5cdFx0Ly8gRG9uJ3Qgb3BlbiBpZiBhbHJlYWR5IG9wZW4gZml4ZXMgYSBGaXJlZm94IGJ1ZyB0aGF0IGNhdXNlZCBhIC41IHBpeGVsXG5cdFx0Ly8gc2hpZnQgaW4gdGhlIHN1Ym1lbnUgcG9zaXRpb24gd2hlbiBtb3VzaW5nIG92ZXIgdGhlIGNhcmV0IGljb25cblx0XHRpZiAoIHN1Ym1lbnUuYXR0ciggXCJhcmlhLWhpZGRlblwiICkgIT09IFwidHJ1ZVwiICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMudGltZXIgPSB0aGlzLl9kZWxheSggZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9jbG9zZSgpO1xuXHRcdFx0dGhpcy5fb3Blbiggc3VibWVudSApO1xuXHRcdH0sIHRoaXMuZGVsYXkgKTtcblx0fSxcblxuXHRfb3BlbjogZnVuY3Rpb24oIHN1Ym1lbnUgKSB7XG5cdFx0dmFyIHBvc2l0aW9uID0gJC5leHRlbmQoIHtcblx0XHRcdG9mOiB0aGlzLmFjdGl2ZVxuXHRcdH0sIHRoaXMub3B0aW9ucy5wb3NpdGlvbiApO1xuXG5cdFx0Y2xlYXJUaW1lb3V0KCB0aGlzLnRpbWVyICk7XG5cdFx0dGhpcy5lbGVtZW50LmZpbmQoIFwiLnVpLW1lbnVcIiApLm5vdCggc3VibWVudS5wYXJlbnRzKCBcIi51aS1tZW51XCIgKSApXG5cdFx0XHQuaGlkZSgpXG5cdFx0XHQuYXR0ciggXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIiApO1xuXG5cdFx0c3VibWVudVxuXHRcdFx0LnNob3coKVxuXHRcdFx0LnJlbW92ZUF0dHIoIFwiYXJpYS1oaWRkZW5cIiApXG5cdFx0XHQuYXR0ciggXCJhcmlhLWV4cGFuZGVkXCIsIFwidHJ1ZVwiIClcblx0XHRcdC5wb3NpdGlvbiggcG9zaXRpb24gKTtcblx0fSxcblxuXHRjb2xsYXBzZUFsbDogZnVuY3Rpb24oIGV2ZW50LCBhbGwgKSB7XG5cdFx0Y2xlYXJUaW1lb3V0KCB0aGlzLnRpbWVyICk7XG5cdFx0dGhpcy50aW1lciA9IHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gSWYgd2Ugd2VyZSBwYXNzZWQgYW4gZXZlbnQsIGxvb2sgZm9yIHRoZSBzdWJtZW51IHRoYXQgY29udGFpbnMgdGhlIGV2ZW50XG5cdFx0XHR2YXIgY3VycmVudE1lbnUgPSBhbGwgPyB0aGlzLmVsZW1lbnQgOlxuXHRcdFx0XHQkKCBldmVudCAmJiBldmVudC50YXJnZXQgKS5jbG9zZXN0KCB0aGlzLmVsZW1lbnQuZmluZCggXCIudWktbWVudVwiICkgKTtcblxuXHRcdFx0Ly8gSWYgd2UgZm91bmQgbm8gdmFsaWQgc3VibWVudSBhbmNlc3RvciwgdXNlIHRoZSBtYWluIG1lbnUgdG8gY2xvc2UgYWxsXG5cdFx0XHQvLyBzdWIgbWVudXMgYW55d2F5XG5cdFx0XHRpZiAoICFjdXJyZW50TWVudS5sZW5ndGggKSB7XG5cdFx0XHRcdGN1cnJlbnRNZW51ID0gdGhpcy5lbGVtZW50O1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLl9jbG9zZSggY3VycmVudE1lbnUgKTtcblxuXHRcdFx0dGhpcy5ibHVyKCBldmVudCApO1xuXG5cdFx0XHQvLyBXb3JrIGFyb3VuZCBhY3RpdmUgaXRlbSBzdGF5aW5nIGFjdGl2ZSBhZnRlciBtZW51IGlzIGJsdXJyZWRcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBjdXJyZW50TWVudS5maW5kKCBcIi51aS1zdGF0ZS1hY3RpdmVcIiApLCBudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cblx0XHRcdHRoaXMuYWN0aXZlTWVudSA9IGN1cnJlbnRNZW51O1xuXHRcdH0sIHRoaXMuZGVsYXkgKTtcblx0fSxcblxuXHQvLyBXaXRoIG5vIGFyZ3VtZW50cywgY2xvc2VzIHRoZSBjdXJyZW50bHkgYWN0aXZlIG1lbnUgLSBpZiBub3RoaW5nIGlzIGFjdGl2ZVxuXHQvLyBpdCBjbG9zZXMgYWxsIG1lbnVzLiAgSWYgcGFzc2VkIGFuIGFyZ3VtZW50LCBpdCB3aWxsIHNlYXJjaCBmb3IgbWVudXMgQkVMT1dcblx0X2Nsb3NlOiBmdW5jdGlvbiggc3RhcnRNZW51ICkge1xuXHRcdGlmICggIXN0YXJ0TWVudSApIHtcblx0XHRcdHN0YXJ0TWVudSA9IHRoaXMuYWN0aXZlID8gdGhpcy5hY3RpdmUucGFyZW50KCkgOiB0aGlzLmVsZW1lbnQ7XG5cdFx0fVxuXG5cdFx0c3RhcnRNZW51LmZpbmQoIFwiLnVpLW1lbnVcIiApXG5cdFx0XHQuaGlkZSgpXG5cdFx0XHQuYXR0ciggXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIiApXG5cdFx0XHQuYXR0ciggXCJhcmlhLWV4cGFuZGVkXCIsIFwiZmFsc2VcIiApO1xuXHR9LFxuXG5cdF9jbG9zZU9uRG9jdW1lbnRDbGljazogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHJldHVybiAhJCggZXZlbnQudGFyZ2V0ICkuY2xvc2VzdCggXCIudWktbWVudVwiICkubGVuZ3RoO1xuXHR9LFxuXG5cdF9pc0RpdmlkZXI6IGZ1bmN0aW9uKCBpdGVtICkge1xuXG5cdFx0Ly8gTWF0Y2ggaHlwaGVuLCBlbSBkYXNoLCBlbiBkYXNoXG5cdFx0cmV0dXJuICEvW15cXC1cXHUyMDE0XFx1MjAxM1xcc10vLnRlc3QoIGl0ZW0udGV4dCgpICk7XG5cdH0sXG5cblx0Y29sbGFwc2U6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgbmV3SXRlbSA9IHRoaXMuYWN0aXZlICYmXG5cdFx0XHR0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCBcIi51aS1tZW51LWl0ZW1cIiwgdGhpcy5lbGVtZW50ICk7XG5cdFx0aWYgKCBuZXdJdGVtICYmIG5ld0l0ZW0ubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5fY2xvc2UoKTtcblx0XHRcdHRoaXMuZm9jdXMoIGV2ZW50LCBuZXdJdGVtICk7XG5cdFx0fVxuXHR9LFxuXG5cdGV4cGFuZDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBuZXdJdGVtID0gdGhpcy5hY3RpdmUgJiZcblx0XHRcdHRoaXMuYWN0aXZlXG5cdFx0XHRcdC5jaGlsZHJlbiggXCIudWktbWVudSBcIiApXG5cdFx0XHRcdFx0LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApXG5cdFx0XHRcdFx0XHQuZmlyc3QoKTtcblxuXHRcdGlmICggbmV3SXRlbSAmJiBuZXdJdGVtLmxlbmd0aCApIHtcblx0XHRcdHRoaXMuX29wZW4oIG5ld0l0ZW0ucGFyZW50KCkgKTtcblxuXHRcdFx0Ly8gRGVsYXkgc28gRmlyZWZveCB3aWxsIG5vdCBoaWRlIGFjdGl2ZWRlc2NlbmRhbnQgY2hhbmdlIGluIGV4cGFuZGluZyBzdWJtZW51IGZyb20gQVRcblx0XHRcdHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dGhpcy5mb2N1cyggZXZlbnQsIG5ld0l0ZW0gKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0bmV4dDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHRoaXMuX21vdmUoIFwibmV4dFwiLCBcImZpcnN0XCIsIGV2ZW50ICk7XG5cdH0sXG5cblx0cHJldmlvdXM6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR0aGlzLl9tb3ZlKCBcInByZXZcIiwgXCJsYXN0XCIsIGV2ZW50ICk7XG5cdH0sXG5cblx0aXNGaXJzdEl0ZW06IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZSAmJiAhdGhpcy5hY3RpdmUucHJldkFsbCggXCIudWktbWVudS1pdGVtXCIgKS5sZW5ndGg7XG5cdH0sXG5cblx0aXNMYXN0SXRlbTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aXZlICYmICF0aGlzLmFjdGl2ZS5uZXh0QWxsKCBcIi51aS1tZW51LWl0ZW1cIiApLmxlbmd0aDtcblx0fSxcblxuXHRfbW92ZTogZnVuY3Rpb24oIGRpcmVjdGlvbiwgZmlsdGVyLCBldmVudCApIHtcblx0XHR2YXIgbmV4dDtcblx0XHRpZiAoIHRoaXMuYWN0aXZlICkge1xuXHRcdFx0aWYgKCBkaXJlY3Rpb24gPT09IFwiZmlyc3RcIiB8fCBkaXJlY3Rpb24gPT09IFwibGFzdFwiICkge1xuXHRcdFx0XHRuZXh0ID0gdGhpcy5hY3RpdmVcblx0XHRcdFx0XHRbIGRpcmVjdGlvbiA9PT0gXCJmaXJzdFwiID8gXCJwcmV2QWxsXCIgOiBcIm5leHRBbGxcIiBdKCBcIi51aS1tZW51LWl0ZW1cIiApXG5cdFx0XHRcdFx0LmVxKCAtMSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV4dCA9IHRoaXMuYWN0aXZlXG5cdFx0XHRcdFx0WyBkaXJlY3Rpb24gKyBcIkFsbFwiIF0oIFwiLnVpLW1lbnUtaXRlbVwiIClcblx0XHRcdFx0XHQuZXEoIDAgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCAhbmV4dCB8fCAhbmV4dC5sZW5ndGggfHwgIXRoaXMuYWN0aXZlICkge1xuXHRcdFx0bmV4dCA9IHRoaXMuYWN0aXZlTWVudS5maW5kKCB0aGlzLm9wdGlvbnMuaXRlbXMgKVsgZmlsdGVyIF0oKTtcblx0XHR9XG5cblx0XHR0aGlzLmZvY3VzKCBldmVudCwgbmV4dCApO1xuXHR9LFxuXG5cdG5leHRQYWdlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGl0ZW0sIGJhc2UsIGhlaWdodDtcblxuXHRcdGlmICggIXRoaXMuYWN0aXZlICkge1xuXHRcdFx0dGhpcy5uZXh0KCBldmVudCApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuaXNMYXN0SXRlbSgpICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuX2hhc1Njcm9sbCgpICkge1xuXHRcdFx0YmFzZSA9IHRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcDtcblx0XHRcdGhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQoKTtcblx0XHRcdHRoaXMuYWN0aXZlLm5leHRBbGwoIFwiLnVpLW1lbnUtaXRlbVwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGl0ZW0gPSAkKCB0aGlzICk7XG5cdFx0XHRcdHJldHVybiBpdGVtLm9mZnNldCgpLnRvcCAtIGJhc2UgLSBoZWlnaHQgPCAwO1xuXHRcdFx0fSApO1xuXG5cdFx0XHR0aGlzLmZvY3VzKCBldmVudCwgaXRlbSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmZvY3VzKCBldmVudCwgdGhpcy5hY3RpdmVNZW51LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApXG5cdFx0XHRcdFsgIXRoaXMuYWN0aXZlID8gXCJmaXJzdFwiIDogXCJsYXN0XCIgXSgpICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZXZpb3VzUGFnZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBpdGVtLCBiYXNlLCBoZWlnaHQ7XG5cdFx0aWYgKCAhdGhpcy5hY3RpdmUgKSB7XG5cdFx0XHR0aGlzLm5leHQoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICggdGhpcy5pc0ZpcnN0SXRlbSgpICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuX2hhc1Njcm9sbCgpICkge1xuXHRcdFx0YmFzZSA9IHRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcDtcblx0XHRcdGhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQoKTtcblx0XHRcdHRoaXMuYWN0aXZlLnByZXZBbGwoIFwiLnVpLW1lbnUtaXRlbVwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGl0ZW0gPSAkKCB0aGlzICk7XG5cdFx0XHRcdHJldHVybiBpdGVtLm9mZnNldCgpLnRvcCAtIGJhc2UgKyBoZWlnaHQgPiAwO1xuXHRcdFx0fSApO1xuXG5cdFx0XHR0aGlzLmZvY3VzKCBldmVudCwgaXRlbSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmZvY3VzKCBldmVudCwgdGhpcy5hY3RpdmVNZW51LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApLmZpcnN0KCkgKTtcblx0XHR9XG5cdH0sXG5cblx0X2hhc1Njcm9sbDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpIDwgdGhpcy5lbGVtZW50LnByb3AoIFwic2Nyb2xsSGVpZ2h0XCIgKTtcblx0fSxcblxuXHRzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdC8vIFRPRE86IEl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBub3QgaGF2ZSBhbiBhY3RpdmUgaXRlbSBhdCB0aGlzXG5cdFx0Ly8gcG9pbnQsIGJ1dCB0aGUgdGVzdHMgZG9uJ3QgdHJpZ2dlciBtb3VzZWVudGVyIGJlZm9yZSBjbGljay5cblx0XHR0aGlzLmFjdGl2ZSA9IHRoaXMuYWN0aXZlIHx8ICQoIGV2ZW50LnRhcmdldCApLmNsb3Nlc3QoIFwiLnVpLW1lbnUtaXRlbVwiICk7XG5cdFx0dmFyIHVpID0geyBpdGVtOiB0aGlzLmFjdGl2ZSB9O1xuXHRcdGlmICggIXRoaXMuYWN0aXZlLmhhcyggXCIudWktbWVudVwiICkubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5jb2xsYXBzZUFsbCggZXZlbnQsIHRydWUgKTtcblx0XHR9XG5cdFx0dGhpcy5fdHJpZ2dlciggXCJzZWxlY3RcIiwgZXZlbnQsIHVpICk7XG5cdH0sXG5cblx0X2ZpbHRlck1lbnVJdGVtczogZnVuY3Rpb24oIGNoYXJhY3RlciApIHtcblx0XHR2YXIgZXNjYXBlZENoYXJhY3RlciA9IGNoYXJhY3Rlci5yZXBsYWNlKCAvW1xcLVxcW1xcXXt9KCkqKz8uLFxcXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIgKSxcblx0XHRcdHJlZ2V4ID0gbmV3IFJlZ0V4cCggXCJeXCIgKyBlc2NhcGVkQ2hhcmFjdGVyLCBcImlcIiApO1xuXG5cdFx0cmV0dXJuIHRoaXMuYWN0aXZlTWVudVxuXHRcdFx0LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcyApXG5cblx0XHRcdFx0Ly8gT25seSBtYXRjaCBvbiBpdGVtcywgbm90IGRpdmlkZXJzIG9yIG90aGVyIGNvbnRlbnQgKCMxMDU3MSlcblx0XHRcdFx0LmZpbHRlciggXCIudWktbWVudS1pdGVtXCIgKVxuXHRcdFx0XHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHJlZ2V4LnRlc3QoXG5cdFx0XHRcdFx0XHRcdCQudHJpbSggJCggdGhpcyApLmNoaWxkcmVuKCBcIi51aS1tZW51LWl0ZW0td3JhcHBlclwiICkudGV4dCgpICkgKTtcblx0XHRcdFx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBBdXRvY29tcGxldGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IEF1dG9jb21wbGV0ZVxuLy8+Pmdyb3VwOiBXaWRnZXRzXG4vLz4+ZGVzY3JpcHRpb246IExpc3RzIHN1Z2dlc3RlZCB3b3JkcyBhcyB0aGUgdXNlciBpcyB0eXBpbmcuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vYXV0b2NvbXBsZXRlL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2F1dG9jb21wbGV0ZS9cbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9jb3JlLmNzc1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2F1dG9jb21wbGV0ZS5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxuJC53aWRnZXQoIFwidWkuYXV0b2NvbXBsZXRlXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0ZGVmYXVsdEVsZW1lbnQ6IFwiPGlucHV0PlwiLFxuXHRvcHRpb25zOiB7XG5cdFx0YXBwZW5kVG86IG51bGwsXG5cdFx0YXV0b0ZvY3VzOiBmYWxzZSxcblx0XHRkZWxheTogMzAwLFxuXHRcdG1pbkxlbmd0aDogMSxcblx0XHRwb3NpdGlvbjoge1xuXHRcdFx0bXk6IFwibGVmdCB0b3BcIixcblx0XHRcdGF0OiBcImxlZnQgYm90dG9tXCIsXG5cdFx0XHRjb2xsaXNpb246IFwibm9uZVwiXG5cdFx0fSxcblx0XHRzb3VyY2U6IG51bGwsXG5cblx0XHQvLyBDYWxsYmFja3Ncblx0XHRjaGFuZ2U6IG51bGwsXG5cdFx0Y2xvc2U6IG51bGwsXG5cdFx0Zm9jdXM6IG51bGwsXG5cdFx0b3BlbjogbnVsbCxcblx0XHRyZXNwb25zZTogbnVsbCxcblx0XHRzZWFyY2g6IG51bGwsXG5cdFx0c2VsZWN0OiBudWxsXG5cdH0sXG5cblx0cmVxdWVzdEluZGV4OiAwLFxuXHRwZW5kaW5nOiAwLFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXG5cdFx0Ly8gU29tZSBicm93c2VycyBvbmx5IHJlcGVhdCBrZXlkb3duIGV2ZW50cywgbm90IGtleXByZXNzIGV2ZW50cyxcblx0XHQvLyBzbyB3ZSB1c2UgdGhlIHN1cHByZXNzS2V5UHJlc3MgZmxhZyB0byBkZXRlcm1pbmUgaWYgd2UndmUgYWxyZWFkeVxuXHRcdC8vIGhhbmRsZWQgdGhlIGtleWRvd24gZXZlbnQuICM3MjY5XG5cdFx0Ly8gVW5mb3J0dW5hdGVseSB0aGUgY29kZSBmb3IgJiBpbiBrZXlwcmVzcyBpcyB0aGUgc2FtZSBhcyB0aGUgdXAgYXJyb3csXG5cdFx0Ly8gc28gd2UgdXNlIHRoZSBzdXBwcmVzc0tleVByZXNzUmVwZWF0IGZsYWcgdG8gYXZvaWQgaGFuZGxpbmcga2V5cHJlc3Ncblx0XHQvLyBldmVudHMgd2hlbiB3ZSBrbm93IHRoZSBrZXlkb3duIGV2ZW50IHdhcyB1c2VkIHRvIG1vZGlmeSB0aGVcblx0XHQvLyBzZWFyY2ggdGVybS4gIzc3OTlcblx0XHR2YXIgc3VwcHJlc3NLZXlQcmVzcywgc3VwcHJlc3NLZXlQcmVzc1JlcGVhdCwgc3VwcHJlc3NJbnB1dCxcblx0XHRcdG5vZGVOYW1lID0gdGhpcy5lbGVtZW50WyAwIF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdGlzVGV4dGFyZWEgPSBub2RlTmFtZSA9PT0gXCJ0ZXh0YXJlYVwiLFxuXHRcdFx0aXNJbnB1dCA9IG5vZGVOYW1lID09PSBcImlucHV0XCI7XG5cblx0XHQvLyBUZXh0YXJlYXMgYXJlIGFsd2F5cyBtdWx0aS1saW5lXG5cdFx0Ly8gSW5wdXRzIGFyZSBhbHdheXMgc2luZ2xlLWxpbmUsIGV2ZW4gaWYgaW5zaWRlIGEgY29udGVudEVkaXRhYmxlIGVsZW1lbnRcblx0XHQvLyBJRSBhbHNvIHRyZWF0cyBpbnB1dHMgYXMgY29udGVudEVkaXRhYmxlXG5cdFx0Ly8gQWxsIG90aGVyIGVsZW1lbnQgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgd2hldGhlciBvciBub3QgdGhleSdyZSBjb250ZW50RWRpdGFibGVcblx0XHR0aGlzLmlzTXVsdGlMaW5lID0gaXNUZXh0YXJlYSB8fCAhaXNJbnB1dCAmJiB0aGlzLl9pc0NvbnRlbnRFZGl0YWJsZSggdGhpcy5lbGVtZW50ICk7XG5cblx0XHR0aGlzLnZhbHVlTWV0aG9kID0gdGhpcy5lbGVtZW50WyBpc1RleHRhcmVhIHx8IGlzSW5wdXQgPyBcInZhbFwiIDogXCJ0ZXh0XCIgXTtcblx0XHR0aGlzLmlzTmV3TWVudSA9IHRydWU7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1hdXRvY29tcGxldGUtaW5wdXRcIiApO1xuXHRcdHRoaXMuZWxlbWVudC5hdHRyKCBcImF1dG9jb21wbGV0ZVwiLCBcIm9mZlwiICk7XG5cblx0XHR0aGlzLl9vbiggdGhpcy5lbGVtZW50LCB7XG5cdFx0XHRrZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGlmICggdGhpcy5lbGVtZW50LnByb3AoIFwicmVhZE9ubHlcIiApICkge1xuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdHN1cHByZXNzSW5wdXQgPSB0cnVlO1xuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3NSZXBlYXQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSBmYWxzZTtcblx0XHRcdFx0c3VwcHJlc3NJbnB1dCA9IGZhbHNlO1xuXHRcdFx0XHRzdXBwcmVzc0tleVByZXNzUmVwZWF0ID0gZmFsc2U7XG5cdFx0XHRcdHZhciBrZXlDb2RlID0gJC51aS5rZXlDb2RlO1xuXHRcdFx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdFx0XHRjYXNlIGtleUNvZGUuUEFHRV9VUDpcblx0XHRcdFx0XHRzdXBwcmVzc0tleVByZXNzID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9tb3ZlKCBcInByZXZpb3VzUGFnZVwiLCBldmVudCApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIGtleUNvZGUuUEFHRV9ET1dOOlxuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuX21vdmUoIFwibmV4dFBhZ2VcIiwgZXZlbnQgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBrZXlDb2RlLlVQOlxuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuX2tleUV2ZW50KCBcInByZXZpb3VzXCIsIGV2ZW50ICk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2Uga2V5Q29kZS5ET1dOOlxuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuX2tleUV2ZW50KCBcIm5leHRcIiwgZXZlbnQgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBrZXlDb2RlLkVOVEVSOlxuXG5cdFx0XHRcdFx0Ly8gd2hlbiBtZW51IGlzIG9wZW4gYW5kIGhhcyBmb2N1c1xuXHRcdFx0XHRcdGlmICggdGhpcy5tZW51LmFjdGl2ZSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gIzYwNTUgLSBPcGVyYSBzdGlsbCBhbGxvd3MgdGhlIGtleXByZXNzIHRvIG9jY3VyXG5cdFx0XHRcdFx0XHQvLyB3aGljaCBjYXVzZXMgZm9ybXMgdG8gc3VibWl0XG5cdFx0XHRcdFx0XHRzdXBwcmVzc0tleVByZXNzID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbnUuc2VsZWN0KCBldmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBrZXlDb2RlLlRBQjpcblx0XHRcdFx0XHRpZiAoIHRoaXMubWVudS5hY3RpdmUgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm1lbnUuc2VsZWN0KCBldmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBrZXlDb2RlLkVTQ0FQRTpcblx0XHRcdFx0XHRpZiAoIHRoaXMubWVudS5lbGVtZW50LmlzKCBcIjp2aXNpYmxlXCIgKSApIHtcblx0XHRcdFx0XHRcdGlmICggIXRoaXMuaXNNdWx0aUxpbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3ZhbHVlKCB0aGlzLnRlcm0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuY2xvc2UoIGV2ZW50ICk7XG5cblx0XHRcdFx0XHRcdC8vIERpZmZlcmVudCBicm93c2VycyBoYXZlIGRpZmZlcmVudCBkZWZhdWx0IGJlaGF2aW9yIGZvciBlc2NhcGVcblx0XHRcdFx0XHRcdC8vIFNpbmdsZSBwcmVzcyBjYW4gbWVhbiB1bmRvIG9yIGNsZWFyXG5cdFx0XHRcdFx0XHQvLyBEb3VibGUgcHJlc3MgaW4gSUUgbWVhbnMgY2xlYXIgdGhlIHdob2xlIGZvcm1cblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3NSZXBlYXQgPSB0cnVlO1xuXG5cdFx0XHRcdFx0Ly8gc2VhcmNoIHRpbWVvdXQgc2hvdWxkIGJlIHRyaWdnZXJlZCBiZWZvcmUgdGhlIGlucHV0IHZhbHVlIGlzIGNoYW5nZWRcblx0XHRcdFx0XHR0aGlzLl9zZWFyY2hUaW1lb3V0KCBldmVudCApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0a2V5cHJlc3M6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0aWYgKCBzdXBwcmVzc0tleVByZXNzICkge1xuXHRcdFx0XHRcdHN1cHByZXNzS2V5UHJlc3MgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAoICF0aGlzLmlzTXVsdGlMaW5lIHx8IHRoaXMubWVudS5lbGVtZW50LmlzKCBcIjp2aXNpYmxlXCIgKSApIHtcblx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIHN1cHByZXNzS2V5UHJlc3NSZXBlYXQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVwbGljYXRlIHNvbWUga2V5IGhhbmRsZXJzIHRvIGFsbG93IHRoZW0gdG8gcmVwZWF0IGluIEZpcmVmb3ggYW5kIE9wZXJhXG5cdFx0XHRcdHZhciBrZXlDb2RlID0gJC51aS5rZXlDb2RlO1xuXHRcdFx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdFx0XHRjYXNlIGtleUNvZGUuUEFHRV9VUDpcblx0XHRcdFx0XHR0aGlzLl9tb3ZlKCBcInByZXZpb3VzUGFnZVwiLCBldmVudCApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIGtleUNvZGUuUEFHRV9ET1dOOlxuXHRcdFx0XHRcdHRoaXMuX21vdmUoIFwibmV4dFBhZ2VcIiwgZXZlbnQgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBrZXlDb2RlLlVQOlxuXHRcdFx0XHRcdHRoaXMuX2tleUV2ZW50KCBcInByZXZpb3VzXCIsIGV2ZW50ICk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2Uga2V5Q29kZS5ET1dOOlxuXHRcdFx0XHRcdHRoaXMuX2tleUV2ZW50KCBcIm5leHRcIiwgZXZlbnQgKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGlucHV0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGlmICggc3VwcHJlc3NJbnB1dCApIHtcblx0XHRcdFx0XHRzdXBwcmVzc0lucHV0ID0gZmFsc2U7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fc2VhcmNoVGltZW91dCggZXZlbnQgKTtcblx0XHRcdH0sXG5cdFx0XHRmb2N1czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcblx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IHRoaXMuX3ZhbHVlKCk7XG5cdFx0XHR9LFxuXHRcdFx0Ymx1cjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRpZiAoIHRoaXMuY2FuY2VsQmx1ciApIHtcblx0XHRcdFx0XHRkZWxldGUgdGhpcy5jYW5jZWxCbHVyO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNsZWFyVGltZW91dCggdGhpcy5zZWFyY2hpbmcgKTtcblx0XHRcdFx0dGhpcy5jbG9zZSggZXZlbnQgKTtcblx0XHRcdFx0dGhpcy5fY2hhbmdlKCBldmVudCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdHRoaXMuX2luaXRTb3VyY2UoKTtcblx0XHR0aGlzLm1lbnUgPSAkKCBcIjx1bD5cIiApXG5cdFx0XHQuYXBwZW5kVG8oIHRoaXMuX2FwcGVuZFRvKCkgKVxuXHRcdFx0Lm1lbnUoIHtcblxuXHRcdFx0XHQvLyBkaXNhYmxlIEFSSUEgc3VwcG9ydCwgdGhlIGxpdmUgcmVnaW9uIHRha2VzIGNhcmUgb2YgdGhhdFxuXHRcdFx0XHRyb2xlOiBudWxsXG5cdFx0XHR9IClcblx0XHRcdC5oaWRlKClcblx0XHRcdC5tZW51KCBcImluc3RhbmNlXCIgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLm1lbnUuZWxlbWVudCwgXCJ1aS1hdXRvY29tcGxldGVcIiwgXCJ1aS1mcm9udFwiICk7XG5cdFx0dGhpcy5fb24oIHRoaXMubWVudS5lbGVtZW50LCB7XG5cdFx0XHRtb3VzZWRvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBwcmV2ZW50IG1vdmluZyBmb2N1cyBvdXQgb2YgdGhlIHRleHQgZmllbGRcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0XHQvLyBJRSBkb2Vzbid0IHByZXZlbnQgbW92aW5nIGZvY3VzIGV2ZW4gd2l0aCBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHRcdC8vIHNvIHdlIHNldCBhIGZsYWcgdG8ga25vdyB3aGVuIHdlIHNob3VsZCBpZ25vcmUgdGhlIGJsdXIgZXZlbnRcblx0XHRcdFx0dGhpcy5jYW5jZWxCbHVyID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLmNhbmNlbEJsdXI7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA4IG9ubHlcblx0XHRcdFx0XHQvLyBSaWdodCBjbGlja2luZyBhIG1lbnUgaXRlbSBvciBzZWxlY3RpbmcgdGV4dCBmcm9tIHRoZSBtZW51IGl0ZW1zIHdpbGxcblx0XHRcdFx0XHQvLyByZXN1bHQgaW4gZm9jdXMgbW92aW5nIG91dCBvZiB0aGUgaW5wdXQuIEhvd2V2ZXIsIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWRcblx0XHRcdFx0XHQvLyBhbmQgaWdub3JlZCB0aGUgYmx1ciBldmVudCBiZWNhdXNlIG9mIHRoZSBjYW5jZWxCbHVyIGZsYWcgc2V0IGFib3ZlLiBTb1xuXHRcdFx0XHRcdC8vIHdlIHJlc3RvcmUgZm9jdXMgdG8gZW5zdXJlIHRoYXQgdGhlIG1lbnUgY2xvc2VzIHByb3Blcmx5IGJhc2VkIG9uIHRoZSB1c2VyJ3Ncblx0XHRcdFx0XHQvLyBuZXh0IGFjdGlvbnMuXG5cdFx0XHRcdFx0aWYgKCB0aGlzLmVsZW1lbnRbIDAgXSAhPT0gJC51aS5zYWZlQWN0aXZlRWxlbWVudCggdGhpcy5kb2N1bWVudFsgMCBdICkgKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmVsZW1lbnQudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9LFxuXHRcdFx0bWVudWZvY3VzOiBmdW5jdGlvbiggZXZlbnQsIHVpICkge1xuXHRcdFx0XHR2YXIgbGFiZWwsIGl0ZW07XG5cblx0XHRcdFx0Ly8gc3VwcG9ydDogRmlyZWZveFxuXHRcdFx0XHQvLyBQcmV2ZW50IGFjY2lkZW50YWwgYWN0aXZhdGlvbiBvZiBtZW51IGl0ZW1zIGluIEZpcmVmb3ggKCM3MDI0ICM5MTE4KVxuXHRcdFx0XHRpZiAoIHRoaXMuaXNOZXdNZW51ICkge1xuXHRcdFx0XHRcdHRoaXMuaXNOZXdNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKCBldmVudC5vcmlnaW5hbEV2ZW50ICYmIC9ebW91c2UvLnRlc3QoIGV2ZW50Lm9yaWdpbmFsRXZlbnQudHlwZSApICkge1xuXHRcdFx0XHRcdFx0dGhpcy5tZW51LmJsdXIoKTtcblxuXHRcdFx0XHRcdFx0dGhpcy5kb2N1bWVudC5vbmUoIFwibW91c2Vtb3ZlXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHQkKCBldmVudC50YXJnZXQgKS50cmlnZ2VyKCBldmVudC5vcmlnaW5hbEV2ZW50ICk7XG5cdFx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpdGVtID0gdWkuaXRlbS5kYXRhKCBcInVpLWF1dG9jb21wbGV0ZS1pdGVtXCIgKTtcblx0XHRcdFx0aWYgKCBmYWxzZSAhPT0gdGhpcy5fdHJpZ2dlciggXCJmb2N1c1wiLCBldmVudCwgeyBpdGVtOiBpdGVtIH0gKSApIHtcblxuXHRcdFx0XHRcdC8vIHVzZSB2YWx1ZSB0byBtYXRjaCB3aGF0IHdpbGwgZW5kIHVwIGluIHRoZSBpbnB1dCwgaWYgaXQgd2FzIGEga2V5IGV2ZW50XG5cdFx0XHRcdFx0aWYgKCBldmVudC5vcmlnaW5hbEV2ZW50ICYmIC9ea2V5Ly50ZXN0KCBldmVudC5vcmlnaW5hbEV2ZW50LnR5cGUgKSApIHtcblx0XHRcdFx0XHRcdHRoaXMuX3ZhbHVlKCBpdGVtLnZhbHVlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQW5ub3VuY2UgdGhlIHZhbHVlIGluIHRoZSBsaXZlUmVnaW9uXG5cdFx0XHRcdGxhYmVsID0gdWkuaXRlbS5hdHRyKCBcImFyaWEtbGFiZWxcIiApIHx8IGl0ZW0udmFsdWU7XG5cdFx0XHRcdGlmICggbGFiZWwgJiYgJC50cmltKCBsYWJlbCApLmxlbmd0aCApIHtcblx0XHRcdFx0XHR0aGlzLmxpdmVSZWdpb24uY2hpbGRyZW4oKS5oaWRlKCk7XG5cdFx0XHRcdFx0JCggXCI8ZGl2PlwiICkudGV4dCggbGFiZWwgKS5hcHBlbmRUbyggdGhpcy5saXZlUmVnaW9uICk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRtZW51c2VsZWN0OiBmdW5jdGlvbiggZXZlbnQsIHVpICkge1xuXHRcdFx0XHR2YXIgaXRlbSA9IHVpLml0ZW0uZGF0YSggXCJ1aS1hdXRvY29tcGxldGUtaXRlbVwiICksXG5cdFx0XHRcdFx0cHJldmlvdXMgPSB0aGlzLnByZXZpb3VzO1xuXG5cdFx0XHRcdC8vIE9ubHkgdHJpZ2dlciB3aGVuIGZvY3VzIHdhcyBsb3N0IChjbGljayBvbiBtZW51KVxuXHRcdFx0XHRpZiAoIHRoaXMuZWxlbWVudFsgMCBdICE9PSAkLnVpLnNhZmVBY3RpdmVFbGVtZW50KCB0aGlzLmRvY3VtZW50WyAwIF0gKSApIHtcblx0XHRcdFx0XHR0aGlzLmVsZW1lbnQudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IHByZXZpb3VzO1xuXG5cdFx0XHRcdFx0Ly8gIzYxMDkgLSBJRSB0cmlnZ2VycyB0d28gZm9jdXMgZXZlbnRzIGFuZCB0aGUgc2Vjb25kXG5cdFx0XHRcdFx0Ly8gaXMgYXN5bmNocm9ub3VzLCBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBwcmV2aW91c1xuXHRcdFx0XHRcdC8vIHRlcm0gc3luY2hyb25vdXNseSBhbmQgYXN5bmNocm9ub3VzbHkgOi0oXG5cdFx0XHRcdFx0dGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IHByZXZpb3VzO1xuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggZmFsc2UgIT09IHRoaXMuX3RyaWdnZXIoIFwic2VsZWN0XCIsIGV2ZW50LCB7IGl0ZW06IGl0ZW0gfSApICkge1xuXHRcdFx0XHRcdHRoaXMuX3ZhbHVlKCBpdGVtLnZhbHVlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyByZXNldCB0aGUgdGVybSBhZnRlciB0aGUgc2VsZWN0IGV2ZW50XG5cdFx0XHRcdC8vIHRoaXMgYWxsb3dzIGN1c3RvbSBzZWxlY3QgaGFuZGxpbmcgdG8gd29yayBwcm9wZXJseVxuXHRcdFx0XHR0aGlzLnRlcm0gPSB0aGlzLl92YWx1ZSgpO1xuXG5cdFx0XHRcdHRoaXMuY2xvc2UoIGV2ZW50ICk7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHR0aGlzLmxpdmVSZWdpb24gPSAkKCBcIjxkaXY+XCIsIHtcblx0XHRcdHJvbGU6IFwic3RhdHVzXCIsXG5cdFx0XHRcImFyaWEtbGl2ZVwiOiBcImFzc2VydGl2ZVwiLFxuXHRcdFx0XCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zXCJcblx0XHR9IClcblx0XHRcdC5hcHBlbmRUbyggdGhpcy5kb2N1bWVudFsgMCBdLmJvZHkgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmxpdmVSZWdpb24sIG51bGwsIFwidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlXCIgKTtcblxuXHRcdC8vIFR1cm5pbmcgb2ZmIGF1dG9jb21wbGV0ZSBwcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHJlbWVtYmVyaW5nIHRoZVxuXHRcdC8vIHZhbHVlIHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIGhpc3RvcnksIHNvIHdlIHJlLWVuYWJsZSBhdXRvY29tcGxldGVcblx0XHQvLyBpZiB0aGUgcGFnZSBpcyB1bmxvYWRlZCBiZWZvcmUgdGhlIHdpZGdldCBpcyBkZXN0cm95ZWQuICM3NzkwXG5cdFx0dGhpcy5fb24oIHRoaXMud2luZG93LCB7XG5cdFx0XHRiZWZvcmV1bmxvYWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQucmVtb3ZlQXR0ciggXCJhdXRvY29tcGxldGVcIiApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfZGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0Y2xlYXJUaW1lb3V0KCB0aGlzLnNlYXJjaGluZyApO1xuXHRcdHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCBcImF1dG9jb21wbGV0ZVwiICk7XG5cdFx0dGhpcy5tZW51LmVsZW1lbnQucmVtb3ZlKCk7XG5cdFx0dGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpO1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHRoaXMuX3N1cGVyKCBrZXksIHZhbHVlICk7XG5cdFx0aWYgKCBrZXkgPT09IFwic291cmNlXCIgKSB7XG5cdFx0XHR0aGlzLl9pbml0U291cmNlKCk7XG5cdFx0fVxuXHRcdGlmICgga2V5ID09PSBcImFwcGVuZFRvXCIgKSB7XG5cdFx0XHR0aGlzLm1lbnUuZWxlbWVudC5hcHBlbmRUbyggdGhpcy5fYXBwZW5kVG8oKSApO1xuXHRcdH1cblx0XHRpZiAoIGtleSA9PT0gXCJkaXNhYmxlZFwiICYmIHZhbHVlICYmIHRoaXMueGhyICkge1xuXHRcdFx0dGhpcy54aHIuYWJvcnQoKTtcblx0XHR9XG5cdH0sXG5cblx0X2lzRXZlbnRUYXJnZXRJbldpZGdldDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBtZW51RWxlbWVudCA9IHRoaXMubWVudS5lbGVtZW50WyAwIF07XG5cblx0XHRyZXR1cm4gZXZlbnQudGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRbIDAgXSB8fFxuXHRcdFx0ZXZlbnQudGFyZ2V0ID09PSBtZW51RWxlbWVudCB8fFxuXHRcdFx0JC5jb250YWlucyggbWVudUVsZW1lbnQsIGV2ZW50LnRhcmdldCApO1xuXHR9LFxuXG5cdF9jbG9zZU9uQ2xpY2tPdXRzaWRlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0aWYgKCAhdGhpcy5faXNFdmVudFRhcmdldEluV2lkZ2V0KCBldmVudCApICkge1xuXHRcdFx0dGhpcy5jbG9zZSgpO1xuXHRcdH1cblx0fSxcblxuXHRfYXBwZW5kVG86IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtZW50ID0gdGhpcy5vcHRpb25zLmFwcGVuZFRvO1xuXG5cdFx0aWYgKCBlbGVtZW50ICkge1xuXHRcdFx0ZWxlbWVudCA9IGVsZW1lbnQuanF1ZXJ5IHx8IGVsZW1lbnQubm9kZVR5cGUgP1xuXHRcdFx0XHQkKCBlbGVtZW50ICkgOlxuXHRcdFx0XHR0aGlzLmRvY3VtZW50LmZpbmQoIGVsZW1lbnQgKS5lcSggMCApO1xuXHRcdH1cblxuXHRcdGlmICggIWVsZW1lbnQgfHwgIWVsZW1lbnRbIDAgXSApIHtcblx0XHRcdGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY2xvc2VzdCggXCIudWktZnJvbnQsIGRpYWxvZ1wiICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhZWxlbWVudC5sZW5ndGggKSB7XG5cdFx0XHRlbGVtZW50ID0gdGhpcy5kb2N1bWVudFsgMCBdLmJvZHk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1lbnQ7XG5cdH0sXG5cblx0X2luaXRTb3VyY2U6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBhcnJheSwgdXJsLFxuXHRcdFx0dGhhdCA9IHRoaXM7XG5cdFx0aWYgKCAkLmlzQXJyYXkoIHRoaXMub3B0aW9ucy5zb3VyY2UgKSApIHtcblx0XHRcdGFycmF5ID0gdGhpcy5vcHRpb25zLnNvdXJjZTtcblx0XHRcdHRoaXMuc291cmNlID0gZnVuY3Rpb24oIHJlcXVlc3QsIHJlc3BvbnNlICkge1xuXHRcdFx0XHRyZXNwb25zZSggJC51aS5hdXRvY29tcGxldGUuZmlsdGVyKCBhcnJheSwgcmVxdWVzdC50ZXJtICkgKTtcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmICggdHlwZW9mIHRoaXMub3B0aW9ucy5zb3VyY2UgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHR1cmwgPSB0aGlzLm9wdGlvbnMuc291cmNlO1xuXHRcdFx0dGhpcy5zb3VyY2UgPSBmdW5jdGlvbiggcmVxdWVzdCwgcmVzcG9uc2UgKSB7XG5cdFx0XHRcdGlmICggdGhhdC54aHIgKSB7XG5cdFx0XHRcdFx0dGhhdC54aHIuYWJvcnQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LnhociA9ICQuYWpheCgge1xuXHRcdFx0XHRcdHVybDogdXJsLFxuXHRcdFx0XHRcdGRhdGE6IHJlcXVlc3QsXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IFwianNvblwiLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UoIGRhdGEgKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGVycm9yOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlKCBbXSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zb3VyY2UgPSB0aGlzLm9wdGlvbnMuc291cmNlO1xuXHRcdH1cblx0fSxcblxuXHRfc2VhcmNoVGltZW91dDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGNsZWFyVGltZW91dCggdGhpcy5zZWFyY2hpbmcgKTtcblx0XHR0aGlzLnNlYXJjaGluZyA9IHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gU2VhcmNoIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZCwgb3IgaWYgdGhlIHVzZXIgcmV0eXBlcyB0aGUgc2FtZSB2YWx1ZSAoc2VlICM3NDM0KVxuXHRcdFx0dmFyIGVxdWFsVmFsdWVzID0gdGhpcy50ZXJtID09PSB0aGlzLl92YWx1ZSgpLFxuXHRcdFx0XHRtZW51VmlzaWJsZSA9IHRoaXMubWVudS5lbGVtZW50LmlzKCBcIjp2aXNpYmxlXCIgKSxcblx0XHRcdFx0bW9kaWZpZXJLZXkgPSBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LnNoaWZ0S2V5O1xuXG5cdFx0XHRpZiAoICFlcXVhbFZhbHVlcyB8fCAoIGVxdWFsVmFsdWVzICYmICFtZW51VmlzaWJsZSAmJiAhbW9kaWZpZXJLZXkgKSApIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuXHRcdFx0XHR0aGlzLnNlYXJjaCggbnVsbCwgZXZlbnQgKTtcblx0XHRcdH1cblx0XHR9LCB0aGlzLm9wdGlvbnMuZGVsYXkgKTtcblx0fSxcblxuXHRzZWFyY2g6IGZ1bmN0aW9uKCB2YWx1ZSwgZXZlbnQgKSB7XG5cdFx0dmFsdWUgPSB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiB0aGlzLl92YWx1ZSgpO1xuXG5cdFx0Ly8gQWx3YXlzIHNhdmUgdGhlIGFjdHVhbCB2YWx1ZSwgbm90IHRoZSBvbmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG5cdFx0dGhpcy50ZXJtID0gdGhpcy5fdmFsdWUoKTtcblxuXHRcdGlmICggdmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25zLm1pbkxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0aGlzLmNsb3NlKCBldmVudCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5fdHJpZ2dlciggXCJzZWFyY2hcIiwgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3NlYXJjaCggdmFsdWUgKTtcblx0fSxcblxuXHRfc2VhcmNoOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dGhpcy5wZW5kaW5nKys7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktYXV0b2NvbXBsZXRlLWxvYWRpbmdcIiApO1xuXHRcdHRoaXMuY2FuY2VsU2VhcmNoID0gZmFsc2U7XG5cblx0XHR0aGlzLnNvdXJjZSggeyB0ZXJtOiB2YWx1ZSB9LCB0aGlzLl9yZXNwb25zZSgpICk7XG5cdH0sXG5cblx0X3Jlc3BvbnNlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaW5kZXggPSArK3RoaXMucmVxdWVzdEluZGV4O1xuXG5cdFx0cmV0dXJuICQucHJveHkoIGZ1bmN0aW9uKCBjb250ZW50ICkge1xuXHRcdFx0aWYgKCBpbmRleCA9PT0gdGhpcy5yZXF1ZXN0SW5kZXggKSB7XG5cdFx0XHRcdHRoaXMuX19yZXNwb25zZSggY29udGVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnBlbmRpbmctLTtcblx0XHRcdGlmICggIXRoaXMucGVuZGluZyApIHtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIFwidWktYXV0b2NvbXBsZXRlLWxvYWRpbmdcIiApO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMgKTtcblx0fSxcblxuXHRfX3Jlc3BvbnNlOiBmdW5jdGlvbiggY29udGVudCApIHtcblx0XHRpZiAoIGNvbnRlbnQgKSB7XG5cdFx0XHRjb250ZW50ID0gdGhpcy5fbm9ybWFsaXplKCBjb250ZW50ICk7XG5cdFx0fVxuXHRcdHRoaXMuX3RyaWdnZXIoIFwicmVzcG9uc2VcIiwgbnVsbCwgeyBjb250ZW50OiBjb250ZW50IH0gKTtcblx0XHRpZiAoICF0aGlzLm9wdGlvbnMuZGlzYWJsZWQgJiYgY29udGVudCAmJiBjb250ZW50Lmxlbmd0aCAmJiAhdGhpcy5jYW5jZWxTZWFyY2ggKSB7XG5cdFx0XHR0aGlzLl9zdWdnZXN0KCBjb250ZW50ICk7XG5cdFx0XHR0aGlzLl90cmlnZ2VyKCBcIm9wZW5cIiApO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIHVzZSAuX2Nsb3NlKCkgaW5zdGVhZCBvZiAuY2xvc2UoKSBzbyB3ZSBkb24ndCBjYW5jZWwgZnV0dXJlIHNlYXJjaGVzXG5cdFx0XHR0aGlzLl9jbG9zZSgpO1xuXHRcdH1cblx0fSxcblxuXHRjbG9zZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHRoaXMuY2FuY2VsU2VhcmNoID0gdHJ1ZTtcblx0XHR0aGlzLl9jbG9zZSggZXZlbnQgKTtcblx0fSxcblxuXHRfY2xvc2U6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdC8vIFJlbW92ZSB0aGUgaGFuZGxlciB0aGF0IGNsb3NlcyB0aGUgbWVudSBvbiBvdXRzaWRlIGNsaWNrc1xuXHRcdHRoaXMuX29mZiggdGhpcy5kb2N1bWVudCwgXCJtb3VzZWRvd25cIiApO1xuXG5cdFx0aWYgKCB0aGlzLm1lbnUuZWxlbWVudC5pcyggXCI6dmlzaWJsZVwiICkgKSB7XG5cdFx0XHR0aGlzLm1lbnUuZWxlbWVudC5oaWRlKCk7XG5cdFx0XHR0aGlzLm1lbnUuYmx1cigpO1xuXHRcdFx0dGhpcy5pc05ld01lbnUgPSB0cnVlO1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJjbG9zZVwiLCBldmVudCApO1xuXHRcdH1cblx0fSxcblxuXHRfY2hhbmdlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0aWYgKCB0aGlzLnByZXZpb3VzICE9PSB0aGlzLl92YWx1ZSgpICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJjaGFuZ2VcIiwgZXZlbnQsIHsgaXRlbTogdGhpcy5zZWxlY3RlZEl0ZW0gfSApO1xuXHRcdH1cblx0fSxcblxuXHRfbm9ybWFsaXplOiBmdW5jdGlvbiggaXRlbXMgKSB7XG5cblx0XHQvLyBhc3N1bWUgYWxsIGl0ZW1zIGhhdmUgdGhlIHJpZ2h0IGZvcm1hdCB3aGVuIHRoZSBmaXJzdCBpdGVtIGlzIGNvbXBsZXRlXG5cdFx0aWYgKCBpdGVtcy5sZW5ndGggJiYgaXRlbXNbIDAgXS5sYWJlbCAmJiBpdGVtc1sgMCBdLnZhbHVlICkge1xuXHRcdFx0cmV0dXJuIGl0ZW1zO1xuXHRcdH1cblx0XHRyZXR1cm4gJC5tYXAoIGl0ZW1zLCBmdW5jdGlvbiggaXRlbSApIHtcblx0XHRcdGlmICggdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bGFiZWw6IGl0ZW0sXG5cdFx0XHRcdFx0dmFsdWU6IGl0ZW1cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAkLmV4dGVuZCgge30sIGl0ZW0sIHtcblx0XHRcdFx0bGFiZWw6IGl0ZW0ubGFiZWwgfHwgaXRlbS52YWx1ZSxcblx0XHRcdFx0dmFsdWU6IGl0ZW0udmFsdWUgfHwgaXRlbS5sYWJlbFxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRfc3VnZ2VzdDogZnVuY3Rpb24oIGl0ZW1zICkge1xuXHRcdHZhciB1bCA9IHRoaXMubWVudS5lbGVtZW50LmVtcHR5KCk7XG5cdFx0dGhpcy5fcmVuZGVyTWVudSggdWwsIGl0ZW1zICk7XG5cdFx0dGhpcy5pc05ld01lbnUgPSB0cnVlO1xuXHRcdHRoaXMubWVudS5yZWZyZXNoKCk7XG5cblx0XHQvLyBTaXplIGFuZCBwb3NpdGlvbiBtZW51XG5cdFx0dWwuc2hvdygpO1xuXHRcdHRoaXMuX3Jlc2l6ZU1lbnUoKTtcblx0XHR1bC5wb3NpdGlvbiggJC5leHRlbmQoIHtcblx0XHRcdG9mOiB0aGlzLmVsZW1lbnRcblx0XHR9LCB0aGlzLm9wdGlvbnMucG9zaXRpb24gKSApO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuYXV0b0ZvY3VzICkge1xuXHRcdFx0dGhpcy5tZW51Lm5leHQoKTtcblx0XHR9XG5cblx0XHQvLyBMaXN0ZW4gZm9yIGludGVyYWN0aW9ucyBvdXRzaWRlIG9mIHRoZSB3aWRnZXQgKCM2NjQyKVxuXHRcdHRoaXMuX29uKCB0aGlzLmRvY3VtZW50LCB7XG5cdFx0XHRtb3VzZWRvd246IFwiX2Nsb3NlT25DbGlja091dHNpZGVcIlxuXHRcdH0gKTtcblx0fSxcblxuXHRfcmVzaXplTWVudTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHVsID0gdGhpcy5tZW51LmVsZW1lbnQ7XG5cdFx0dWwub3V0ZXJXaWR0aCggTWF0aC5tYXgoXG5cblx0XHRcdC8vIEZpcmVmb3ggd3JhcHMgbG9uZyB0ZXh0IChwb3NzaWJseSBhIHJvdW5kaW5nIGJ1Zylcblx0XHRcdC8vIHNvIHdlIGFkZCAxcHggdG8gYXZvaWQgdGhlIHdyYXBwaW5nICgjNzUxMylcblx0XHRcdHVsLndpZHRoKCBcIlwiICkub3V0ZXJXaWR0aCgpICsgMSxcblx0XHRcdHRoaXMuZWxlbWVudC5vdXRlcldpZHRoKClcblx0XHQpICk7XG5cdH0sXG5cblx0X3JlbmRlck1lbnU6IGZ1bmN0aW9uKCB1bCwgaXRlbXMgKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXHRcdCQuZWFjaCggaXRlbXMsIGZ1bmN0aW9uKCBpbmRleCwgaXRlbSApIHtcblx0XHRcdHRoYXQuX3JlbmRlckl0ZW1EYXRhKCB1bCwgaXRlbSApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRfcmVuZGVySXRlbURhdGE6IGZ1bmN0aW9uKCB1bCwgaXRlbSApIHtcblx0XHRyZXR1cm4gdGhpcy5fcmVuZGVySXRlbSggdWwsIGl0ZW0gKS5kYXRhKCBcInVpLWF1dG9jb21wbGV0ZS1pdGVtXCIsIGl0ZW0gKTtcblx0fSxcblxuXHRfcmVuZGVySXRlbTogZnVuY3Rpb24oIHVsLCBpdGVtICkge1xuXHRcdHJldHVybiAkKCBcIjxsaT5cIiApXG5cdFx0XHQuYXBwZW5kKCAkKCBcIjxkaXY+XCIgKS50ZXh0KCBpdGVtLmxhYmVsICkgKVxuXHRcdFx0LmFwcGVuZFRvKCB1bCApO1xuXHR9LFxuXG5cdF9tb3ZlOiBmdW5jdGlvbiggZGlyZWN0aW9uLCBldmVudCApIHtcblx0XHRpZiAoICF0aGlzLm1lbnUuZWxlbWVudC5pcyggXCI6dmlzaWJsZVwiICkgKSB7XG5cdFx0XHR0aGlzLnNlYXJjaCggbnVsbCwgZXZlbnQgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLm1lbnUuaXNGaXJzdEl0ZW0oKSAmJiAvXnByZXZpb3VzLy50ZXN0KCBkaXJlY3Rpb24gKSB8fFxuXHRcdFx0XHR0aGlzLm1lbnUuaXNMYXN0SXRlbSgpICYmIC9ebmV4dC8udGVzdCggZGlyZWN0aW9uICkgKSB7XG5cblx0XHRcdGlmICggIXRoaXMuaXNNdWx0aUxpbmUgKSB7XG5cdFx0XHRcdHRoaXMuX3ZhbHVlKCB0aGlzLnRlcm0gKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5tZW51LmJsdXIoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5tZW51WyBkaXJlY3Rpb24gXSggZXZlbnQgKTtcblx0fSxcblxuXHR3aWRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1lbnUuZWxlbWVudDtcblx0fSxcblxuXHRfdmFsdWU6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnZhbHVlTWV0aG9kLmFwcGx5KCB0aGlzLmVsZW1lbnQsIGFyZ3VtZW50cyApO1xuXHR9LFxuXG5cdF9rZXlFdmVudDogZnVuY3Rpb24oIGtleUV2ZW50LCBldmVudCApIHtcblx0XHRpZiAoICF0aGlzLmlzTXVsdGlMaW5lIHx8IHRoaXMubWVudS5lbGVtZW50LmlzKCBcIjp2aXNpYmxlXCIgKSApIHtcblx0XHRcdHRoaXMuX21vdmUoIGtleUV2ZW50LCBldmVudCApO1xuXG5cdFx0XHQvLyBQcmV2ZW50cyBtb3ZpbmcgY3Vyc29yIHRvIGJlZ2lubmluZy9lbmQgb2YgdGhlIHRleHQgZmllbGQgaW4gc29tZSBicm93c2Vyc1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NTBcblx0Ly8gV2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCB1c2UgdGhpcy5lbGVtZW50LnByb3AoIFwiaXNDb250ZW50RWRpdGFibGVcIiApXG5cdC8vIGJ1dCBoaWRkZW4gZWxlbWVudHMgYWx3YXlzIHJlcG9ydCBmYWxzZSBpbiBDaHJvbWUuXG5cdC8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0zMTMwODJcblx0X2lzQ29udGVudEVkaXRhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHtcblx0XHRpZiAoICFlbGVtZW50Lmxlbmd0aCApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR2YXIgZWRpdGFibGUgPSBlbGVtZW50LnByb3AoIFwiY29udGVudEVkaXRhYmxlXCIgKTtcblxuXHRcdGlmICggZWRpdGFibGUgPT09IFwiaW5oZXJpdFwiICkge1xuXHRcdCAgcmV0dXJuIHRoaXMuX2lzQ29udGVudEVkaXRhYmxlKCBlbGVtZW50LnBhcmVudCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVkaXRhYmxlID09PSBcInRydWVcIjtcblx0fVxufSApO1xuXG4kLmV4dGVuZCggJC51aS5hdXRvY29tcGxldGUsIHtcblx0ZXNjYXBlUmVnZXg6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gdmFsdWUucmVwbGFjZSggL1tcXC1cXFtcXF17fSgpKis/LixcXFxcXFxeJHwjXFxzXS9nLCBcIlxcXFwkJlwiICk7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIGFycmF5LCB0ZXJtICkge1xuXHRcdHZhciBtYXRjaGVyID0gbmV3IFJlZ0V4cCggJC51aS5hdXRvY29tcGxldGUuZXNjYXBlUmVnZXgoIHRlcm0gKSwgXCJpXCIgKTtcblx0XHRyZXR1cm4gJC5ncmVwKCBhcnJheSwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIG1hdGNoZXIudGVzdCggdmFsdWUubGFiZWwgfHwgdmFsdWUudmFsdWUgfHwgdmFsdWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gTGl2ZSByZWdpb24gZXh0ZW5zaW9uLCBhZGRpbmcgYSBgbWVzc2FnZXNgIG9wdGlvblxuLy8gTk9URTogVGhpcyBpcyBhbiBleHBlcmltZW50YWwgQVBJLiBXZSBhcmUgc3RpbGwgaW52ZXN0aWdhdGluZ1xuLy8gYSBmdWxsIHNvbHV0aW9uIGZvciBzdHJpbmcgbWFuaXB1bGF0aW9uIGFuZCBpbnRlcm5hdGlvbmFsaXphdGlvbi5cbiQud2lkZ2V0KCBcInVpLmF1dG9jb21wbGV0ZVwiLCAkLnVpLmF1dG9jb21wbGV0ZSwge1xuXHRvcHRpb25zOiB7XG5cdFx0bWVzc2FnZXM6IHtcblx0XHRcdG5vUmVzdWx0czogXCJObyBzZWFyY2ggcmVzdWx0cy5cIixcblx0XHRcdHJlc3VsdHM6IGZ1bmN0aW9uKCBhbW91bnQgKSB7XG5cdFx0XHRcdHJldHVybiBhbW91bnQgKyAoIGFtb3VudCA+IDEgPyBcIiByZXN1bHRzIGFyZVwiIDogXCIgcmVzdWx0IGlzXCIgKSArXG5cdFx0XHRcdFx0XCIgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS5cIjtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0X19yZXNwb25zZTogZnVuY3Rpb24oIGNvbnRlbnQgKSB7XG5cdFx0dmFyIG1lc3NhZ2U7XG5cdFx0dGhpcy5fc3VwZXJBcHBseSggYXJndW1lbnRzICk7XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgfHwgdGhpcy5jYW5jZWxTZWFyY2ggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICggY29udGVudCAmJiBjb250ZW50Lmxlbmd0aCApIHtcblx0XHRcdG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMubWVzc2FnZXMucmVzdWx0cyggY29udGVudC5sZW5ndGggKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWVzc2FnZSA9IHRoaXMub3B0aW9ucy5tZXNzYWdlcy5ub1Jlc3VsdHM7XG5cdFx0fVxuXHRcdHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKTtcblx0XHQkKCBcIjxkaXY+XCIgKS50ZXh0KCBtZXNzYWdlICkuYXBwZW5kVG8oIHRoaXMubGl2ZVJlZ2lvbiApO1xuXHR9XG59ICk7XG5cbnZhciB3aWRnZXRzQXV0b2NvbXBsZXRlID0gJC51aS5hdXRvY29tcGxldGU7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgQ29udHJvbGdyb3VwIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBDb250cm9sZ3JvdXBcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBWaXN1YWxseSBncm91cHMgZm9ybSBjb250cm9sIHdpZGdldHNcbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9jb250cm9sZ3JvdXAvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vY29udHJvbGdyb3VwL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29udHJvbGdyb3VwLmNzc1xuLy8+PmNzcy50aGVtZTogLi4vLi4vdGhlbWVzL2Jhc2UvdGhlbWUuY3NzXG5cblxudmFyIGNvbnRyb2xncm91cENvcm5lclJlZ2V4ID0gL3VpLWNvcm5lci0oW2Etel0pezIsNn0vZztcblxudmFyIHdpZGdldHNDb250cm9sZ3JvdXAgPSAkLndpZGdldCggXCJ1aS5jb250cm9sZ3JvdXBcIiwge1xuXHR2ZXJzaW9uOiBcIjEuMTIuMVwiLFxuXHRkZWZhdWx0RWxlbWVudDogXCI8ZGl2PlwiLFxuXHRvcHRpb25zOiB7XG5cdFx0ZGlyZWN0aW9uOiBcImhvcml6b250YWxcIixcblx0XHRkaXNhYmxlZDogbnVsbCxcblx0XHRvbmx5VmlzaWJsZTogdHJ1ZSxcblx0XHRpdGVtczoge1xuXHRcdFx0XCJidXR0b25cIjogXCJpbnB1dFt0eXBlPWJ1dHRvbl0sIGlucHV0W3R5cGU9c3VibWl0XSwgaW5wdXRbdHlwZT1yZXNldF0sIGJ1dHRvbiwgYVwiLFxuXHRcdFx0XCJjb250cm9sZ3JvdXBMYWJlbFwiOiBcIi51aS1jb250cm9sZ3JvdXAtbGFiZWxcIixcblx0XHRcdFwiY2hlY2tib3hyYWRpb1wiOiBcImlucHV0W3R5cGU9J2NoZWNrYm94J10sIGlucHV0W3R5cGU9J3JhZGlvJ11cIixcblx0XHRcdFwic2VsZWN0bWVudVwiOiBcInNlbGVjdFwiLFxuXHRcdFx0XCJzcGlubmVyXCI6IFwiLnVpLXNwaW5uZXItaW5wdXRcIlxuXHRcdH1cblx0fSxcblxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9lbmhhbmNlKCk7XG5cdH0sXG5cblx0Ly8gVG8gc3VwcG9ydCB0aGUgZW5oYW5jZWQgb3B0aW9uIGluIGpRdWVyeSBNb2JpbGUsIHdlIGlzb2xhdGUgRE9NIG1hbmlwdWxhdGlvblxuXHRfZW5oYW5jZTogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5lbGVtZW50LmF0dHIoIFwicm9sZVwiLCBcInRvb2xiYXJcIiApO1xuXHRcdHRoaXMucmVmcmVzaCgpO1xuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9jYWxsQ2hpbGRNZXRob2QoIFwiZGVzdHJveVwiICk7XG5cdFx0dGhpcy5jaGlsZFdpZGdldHMucmVtb3ZlRGF0YSggXCJ1aS1jb250cm9sZ3JvdXAtZGF0YVwiICk7XG5cdFx0dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoIFwicm9sZVwiICk7XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuaXRlbXMuY29udHJvbGdyb3VwTGFiZWwgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnRcblx0XHRcdFx0LmZpbmQoIHRoaXMub3B0aW9ucy5pdGVtcy5jb250cm9sZ3JvdXBMYWJlbCApXG5cdFx0XHRcdC5maW5kKCBcIi51aS1jb250cm9sZ3JvdXAtbGFiZWwtY29udGVudHNcIiApXG5cdFx0XHRcdC5jb250ZW50cygpLnVud3JhcCgpO1xuXHRcdH1cblx0fSxcblxuXHRfaW5pdFdpZGdldHM6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdGNoaWxkV2lkZ2V0cyA9IFtdO1xuXG5cdFx0Ly8gRmlyc3Qgd2UgaXRlcmF0ZSBvdmVyIGVhY2ggb2YgdGhlIGl0ZW1zIG9wdGlvbnNcblx0XHQkLmVhY2goIHRoaXMub3B0aW9ucy5pdGVtcywgZnVuY3Rpb24oIHdpZGdldCwgc2VsZWN0b3IgKSB7XG5cdFx0XHR2YXIgbGFiZWxzO1xuXHRcdFx0dmFyIG9wdGlvbnMgPSB7fTtcblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoZSB3aWRnZXQgaGFzIGEgc2VsZWN0b3Igc2V0XG5cdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHdpZGdldCA9PT0gXCJjb250cm9sZ3JvdXBMYWJlbFwiICkge1xuXHRcdFx0XHRsYWJlbHMgPSB0aGF0LmVsZW1lbnQuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdFx0bGFiZWxzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHZhciBlbGVtZW50ID0gJCggdGhpcyApO1xuXG5cdFx0XHRcdFx0aWYgKCBlbGVtZW50LmNoaWxkcmVuKCBcIi51aS1jb250cm9sZ3JvdXAtbGFiZWwtY29udGVudHNcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxlbWVudC5jb250ZW50cygpXG5cdFx0XHRcdFx0XHQud3JhcEFsbCggXCI8c3BhbiBjbGFzcz0ndWktY29udHJvbGdyb3VwLWxhYmVsLWNvbnRlbnRzJz48L3NwYW4+XCIgKTtcblx0XHRcdFx0fSApO1xuXHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggbGFiZWxzLCBudWxsLCBcInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1zdGF0ZS1kZWZhdWx0XCIgKTtcblx0XHRcdFx0Y2hpbGRXaWRnZXRzID0gY2hpbGRXaWRnZXRzLmNvbmNhdCggbGFiZWxzLmdldCgpICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHRoZSB3aWRnZXQgYWN0dWFsbHkgZXhpc3RzXG5cdFx0XHRpZiAoICEkLmZuWyB3aWRnZXQgXSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZSBhc3N1bWUgZXZlcnl0aGluZyBpcyBpbiB0aGUgbWlkZGxlIHRvIHN0YXJ0IGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZXJtaW5lXG5cdFx0XHQvLyBmaXJzdCAvIGxhc3QgZWxlbWVudHMgdW50aWwgYWxsIGVuaGFuY21lbnRzIGFyZSBkb25lLlxuXHRcdFx0aWYgKCB0aGF0WyBcIl9cIiArIHdpZGdldCArIFwiT3B0aW9uc1wiIF0gKSB7XG5cdFx0XHRcdG9wdGlvbnMgPSB0aGF0WyBcIl9cIiArIHdpZGdldCArIFwiT3B0aW9uc1wiIF0oIFwibWlkZGxlXCIgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9wdGlvbnMgPSB7IGNsYXNzZXM6IHt9IH07XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZpbmQgaW5zdGFuY2VzIG9mIHRoaXMgd2lkZ2V0IGluc2lkZSBjb250cm9sZ3JvdXAgYW5kIGluaXQgdGhlbVxuXHRcdFx0dGhhdC5lbGVtZW50XG5cdFx0XHRcdC5maW5kKCBzZWxlY3RvciApXG5cdFx0XHRcdC5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHR2YXIgZWxlbWVudCA9ICQoIHRoaXMgKTtcblx0XHRcdFx0XHR2YXIgaW5zdGFuY2UgPSBlbGVtZW50WyB3aWRnZXQgXSggXCJpbnN0YW5jZVwiICk7XG5cblx0XHRcdFx0XHQvLyBXZSBuZWVkIHRvIGNsb25lIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoaXMgdHlwZSBvZiB3aWRnZXQgdG8gYXZvaWRcblx0XHRcdFx0XHQvLyBwb2xsdXRpbmcgdGhlIHZhcmlhYmxlIG9wdGlvbnMgd2hpY2ggaGFzIGEgd2lkZXIgc2NvcGUgdGhhbiBhIHNpbmdsZSB3aWRnZXQuXG5cdFx0XHRcdFx0dmFyIGluc3RhbmNlT3B0aW9ucyA9ICQud2lkZ2V0LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHRcdFx0XHRcdC8vIElmIHRoZSBidXR0b24gaXMgdGhlIGNoaWxkIG9mIGEgc3Bpbm5lciBpZ25vcmUgaXRcblx0XHRcdFx0XHQvLyBUT0RPOiBGaW5kIGEgbW9yZSBnZW5lcmljIHNvbHV0aW9uXG5cdFx0XHRcdFx0aWYgKCB3aWRnZXQgPT09IFwiYnV0dG9uXCIgJiYgZWxlbWVudC5wYXJlbnQoIFwiLnVpLXNwaW5uZXJcIiApLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBDcmVhdGUgdGhlIHdpZGdldCBpZiBpdCBkb2Vzbid0IGV4aXN0XG5cdFx0XHRcdFx0aWYgKCAhaW5zdGFuY2UgKSB7XG5cdFx0XHRcdFx0XHRpbnN0YW5jZSA9IGVsZW1lbnRbIHdpZGdldCBdKClbIHdpZGdldCBdKCBcImluc3RhbmNlXCIgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBpbnN0YW5jZSApIHtcblx0XHRcdFx0XHRcdGluc3RhbmNlT3B0aW9ucy5jbGFzc2VzID1cblx0XHRcdFx0XHRcdFx0dGhhdC5fcmVzb2x2ZUNsYXNzZXNWYWx1ZXMoIGluc3RhbmNlT3B0aW9ucy5jbGFzc2VzLCBpbnN0YW5jZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbGVtZW50WyB3aWRnZXQgXSggaW5zdGFuY2VPcHRpb25zICk7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBhbiBpbnN0YW5jZSBvZiB0aGUgY29udHJvbGdyb3VwIHRvIGJlIGFibGUgdG8gcmVmZXJlbmNlXG5cdFx0XHRcdFx0Ly8gZnJvbSB0aGUgb3V0ZXJtb3N0IGVsZW1lbnQgZm9yIGNoYW5naW5nIG9wdGlvbnMgYW5kIHJlZnJlc2hcblx0XHRcdFx0XHR2YXIgd2lkZ2V0RWxlbWVudCA9IGVsZW1lbnRbIHdpZGdldCBdKCBcIndpZGdldFwiICk7XG5cdFx0XHRcdFx0JC5kYXRhKCB3aWRnZXRFbGVtZW50WyAwIF0sIFwidWktY29udHJvbGdyb3VwLWRhdGFcIixcblx0XHRcdFx0XHRcdGluc3RhbmNlID8gaW5zdGFuY2UgOiBlbGVtZW50WyB3aWRnZXQgXSggXCJpbnN0YW5jZVwiICkgKTtcblxuXHRcdFx0XHRcdGNoaWxkV2lkZ2V0cy5wdXNoKCB3aWRnZXRFbGVtZW50WyAwIF0gKTtcblx0XHRcdFx0fSApO1xuXHRcdH0gKTtcblxuXHRcdHRoaXMuY2hpbGRXaWRnZXRzID0gJCggJC51bmlxdWUoIGNoaWxkV2lkZ2V0cyApICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuY2hpbGRXaWRnZXRzLCBcInVpLWNvbnRyb2xncm91cC1pdGVtXCIgKTtcblx0fSxcblxuXHRfY2FsbENoaWxkTWV0aG9kOiBmdW5jdGlvbiggbWV0aG9kICkge1xuXHRcdHRoaXMuY2hpbGRXaWRnZXRzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsZW1lbnQgPSAkKCB0aGlzICksXG5cdFx0XHRcdGRhdGEgPSBlbGVtZW50LmRhdGEoIFwidWktY29udHJvbGdyb3VwLWRhdGFcIiApO1xuXHRcdFx0aWYgKCBkYXRhICYmIGRhdGFbIG1ldGhvZCBdICkge1xuXHRcdFx0XHRkYXRhWyBtZXRob2QgXSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfdXBkYXRlQ29ybmVyQ2xhc3M6IGZ1bmN0aW9uKCBlbGVtZW50LCBwb3NpdGlvbiApIHtcblx0XHR2YXIgcmVtb3ZlID0gXCJ1aS1jb3JuZXItdG9wIHVpLWNvcm5lci1ib3R0b20gdWktY29ybmVyLWxlZnQgdWktY29ybmVyLXJpZ2h0IHVpLWNvcm5lci1hbGxcIjtcblx0XHR2YXIgYWRkID0gdGhpcy5fYnVpbGRTaW1wbGVPcHRpb25zKCBwb3NpdGlvbiwgXCJsYWJlbFwiICkuY2xhc3Nlcy5sYWJlbDtcblxuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBlbGVtZW50LCBudWxsLCByZW1vdmUgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggZWxlbWVudCwgbnVsbCwgYWRkICk7XG5cdH0sXG5cblx0X2J1aWxkU2ltcGxlT3B0aW9uczogZnVuY3Rpb24oIHBvc2l0aW9uLCBrZXkgKSB7XG5cdFx0dmFyIGRpcmVjdGlvbiA9IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFwidmVydGljYWxcIjtcblx0XHR2YXIgcmVzdWx0ID0ge1xuXHRcdFx0Y2xhc3Nlczoge31cblx0XHR9O1xuXHRcdHJlc3VsdC5jbGFzc2VzWyBrZXkgXSA9IHtcblx0XHRcdFwibWlkZGxlXCI6IFwiXCIsXG5cdFx0XHRcImZpcnN0XCI6IFwidWktY29ybmVyLVwiICsgKCBkaXJlY3Rpb24gPyBcInRvcFwiIDogXCJsZWZ0XCIgKSxcblx0XHRcdFwibGFzdFwiOiBcInVpLWNvcm5lci1cIiArICggZGlyZWN0aW9uID8gXCJib3R0b21cIiA6IFwicmlnaHRcIiApLFxuXHRcdFx0XCJvbmx5XCI6IFwidWktY29ybmVyLWFsbFwiXG5cdFx0fVsgcG9zaXRpb24gXTtcblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0X3NwaW5uZXJPcHRpb25zOiBmdW5jdGlvbiggcG9zaXRpb24gKSB7XG5cdFx0dmFyIG9wdGlvbnMgPSB0aGlzLl9idWlsZFNpbXBsZU9wdGlvbnMoIHBvc2l0aW9uLCBcInVpLXNwaW5uZXJcIiApO1xuXG5cdFx0b3B0aW9ucy5jbGFzc2VzWyBcInVpLXNwaW5uZXItdXBcIiBdID0gXCJcIjtcblx0XHRvcHRpb25zLmNsYXNzZXNbIFwidWktc3Bpbm5lci1kb3duXCIgXSA9IFwiXCI7XG5cblx0XHRyZXR1cm4gb3B0aW9ucztcblx0fSxcblxuXHRfYnV0dG9uT3B0aW9uczogZnVuY3Rpb24oIHBvc2l0aW9uICkge1xuXHRcdHJldHVybiB0aGlzLl9idWlsZFNpbXBsZU9wdGlvbnMoIHBvc2l0aW9uLCBcInVpLWJ1dHRvblwiICk7XG5cdH0sXG5cblx0X2NoZWNrYm94cmFkaW9PcHRpb25zOiBmdW5jdGlvbiggcG9zaXRpb24gKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2J1aWxkU2ltcGxlT3B0aW9ucyggcG9zaXRpb24sIFwidWktY2hlY2tib3hyYWRpby1sYWJlbFwiICk7XG5cdH0sXG5cblx0X3NlbGVjdG1lbnVPcHRpb25zOiBmdW5jdGlvbiggcG9zaXRpb24gKSB7XG5cdFx0dmFyIGRpcmVjdGlvbiA9IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFwidmVydGljYWxcIjtcblx0XHRyZXR1cm4ge1xuXHRcdFx0d2lkdGg6IGRpcmVjdGlvbiA/IFwiYXV0b1wiIDogZmFsc2UsXG5cdFx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcdG1pZGRsZToge1xuXHRcdFx0XHRcdFwidWktc2VsZWN0bWVudS1idXR0b24tb3BlblwiOiBcIlwiLFxuXHRcdFx0XHRcdFwidWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkXCI6IFwiXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Zmlyc3Q6IHtcblx0XHRcdFx0XHRcInVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW5cIjogXCJ1aS1jb3JuZXItXCIgKyAoIGRpcmVjdGlvbiA/IFwidG9wXCIgOiBcInRsXCIgKSxcblx0XHRcdFx0XHRcInVpLXNlbGVjdG1lbnUtYnV0dG9uLWNsb3NlZFwiOiBcInVpLWNvcm5lci1cIiArICggZGlyZWN0aW9uID8gXCJ0b3BcIiA6IFwibGVmdFwiIClcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFzdDoge1xuXHRcdFx0XHRcdFwidWktc2VsZWN0bWVudS1idXR0b24tb3BlblwiOiBkaXJlY3Rpb24gPyBcIlwiIDogXCJ1aS1jb3JuZXItdHJcIixcblx0XHRcdFx0XHRcInVpLXNlbGVjdG1lbnUtYnV0dG9uLWNsb3NlZFwiOiBcInVpLWNvcm5lci1cIiArICggZGlyZWN0aW9uID8gXCJib3R0b21cIiA6IFwicmlnaHRcIiApXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9ubHk6IHtcblx0XHRcdFx0XHRcInVpLXNlbGVjdG1lbnUtYnV0dG9uLW9wZW5cIjogXCJ1aS1jb3JuZXItdG9wXCIsXG5cdFx0XHRcdFx0XCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi1jbG9zZWRcIjogXCJ1aS1jb3JuZXItYWxsXCJcblx0XHRcdFx0fVxuXG5cdFx0XHR9WyBwb3NpdGlvbiBdXG5cdFx0fTtcblx0fSxcblxuXHRfcmVzb2x2ZUNsYXNzZXNWYWx1ZXM6IGZ1bmN0aW9uKCBjbGFzc2VzLCBpbnN0YW5jZSApIHtcblx0XHR2YXIgcmVzdWx0ID0ge307XG5cdFx0JC5lYWNoKCBjbGFzc2VzLCBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0dmFyIGN1cnJlbnQgPSBpbnN0YW5jZS5vcHRpb25zLmNsYXNzZXNbIGtleSBdIHx8IFwiXCI7XG5cdFx0XHRjdXJyZW50ID0gJC50cmltKCBjdXJyZW50LnJlcGxhY2UoIGNvbnRyb2xncm91cENvcm5lclJlZ2V4LCBcIlwiICkgKTtcblx0XHRcdHJlc3VsdFsga2V5IF0gPSAoIGN1cnJlbnQgKyBcIiBcIiArIGNsYXNzZXNbIGtleSBdICkucmVwbGFjZSggL1xccysvZywgXCIgXCIgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRpZiAoIGtleSA9PT0gXCJkaXJlY3Rpb25cIiApIHtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBcInVpLWNvbnRyb2xncm91cC1cIiArIHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXHRcdGlmICgga2V5ID09PSBcImRpc2FibGVkXCIgKSB7XG5cdFx0XHR0aGlzLl9jYWxsQ2hpbGRNZXRob2QoIHZhbHVlID8gXCJkaXNhYmxlXCIgOiBcImVuYWJsZVwiICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5yZWZyZXNoKCk7XG5cdH0sXG5cblx0cmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNoaWxkcmVuLFxuXHRcdFx0dGhhdCA9IHRoaXM7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1jb250cm9sZ3JvdXAgdWktY29udHJvbGdyb3VwLVwiICsgdGhpcy5vcHRpb25zLmRpcmVjdGlvbiApO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBcImhvcml6b250YWxcIiApIHtcblx0XHRcdHRoaXMuX2FkZENsYXNzKCBudWxsLCBcInVpLWhlbHBlci1jbGVhcmZpeFwiICk7XG5cdFx0fVxuXHRcdHRoaXMuX2luaXRXaWRnZXRzKCk7XG5cblx0XHRjaGlsZHJlbiA9IHRoaXMuY2hpbGRXaWRnZXRzO1xuXG5cdFx0Ly8gV2UgZmlsdGVyIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRvIHRyYWNrIGFsbCBjaGlsZFdpZGdldHMgbm90IGp1c3QgdGhlIHZpc2libGUgb25lc1xuXHRcdGlmICggdGhpcy5vcHRpb25zLm9ubHlWaXNpYmxlICkge1xuXHRcdFx0Y2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoIFwiOnZpc2libGVcIiApO1xuXHRcdH1cblxuXHRcdGlmICggY2hpbGRyZW4ubGVuZ3RoICkge1xuXG5cdFx0XHQvLyBXZSBkbyB0aGlzIGxhc3QgYmVjYXVzZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgZW5oYW5jbWVudCBpcyBkb25lXG5cdFx0XHQvLyBiZWZvcmUgZGV0ZXJtaW5pbmcgZmlyc3QgYW5kIGxhc3Rcblx0XHRcdCQuZWFjaCggWyBcImZpcnN0XCIsIFwibGFzdFwiIF0sIGZ1bmN0aW9uKCBpbmRleCwgdmFsdWUgKSB7XG5cdFx0XHRcdHZhciBpbnN0YW5jZSA9IGNoaWxkcmVuWyB2YWx1ZSBdKCkuZGF0YSggXCJ1aS1jb250cm9sZ3JvdXAtZGF0YVwiICk7XG5cblx0XHRcdFx0aWYgKCBpbnN0YW5jZSAmJiB0aGF0WyBcIl9cIiArIGluc3RhbmNlLndpZGdldE5hbWUgKyBcIk9wdGlvbnNcIiBdICkge1xuXHRcdFx0XHRcdHZhciBvcHRpb25zID0gdGhhdFsgXCJfXCIgKyBpbnN0YW5jZS53aWRnZXROYW1lICsgXCJPcHRpb25zXCIgXShcblx0XHRcdFx0XHRcdGNoaWxkcmVuLmxlbmd0aCA9PT0gMSA/IFwib25seVwiIDogdmFsdWVcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdG9wdGlvbnMuY2xhc3NlcyA9IHRoYXQuX3Jlc29sdmVDbGFzc2VzVmFsdWVzKCBvcHRpb25zLmNsYXNzZXMsIGluc3RhbmNlICk7XG5cdFx0XHRcdFx0aW5zdGFuY2UuZWxlbWVudFsgaW5zdGFuY2Uud2lkZ2V0TmFtZSBdKCBvcHRpb25zICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhhdC5fdXBkYXRlQ29ybmVyQ2xhc3MoIGNoaWxkcmVuWyB2YWx1ZSBdKCksIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gRmluYWxseSBjYWxsIHRoZSByZWZyZXNoIG1ldGhvZCBvbiBlYWNoIG9mIHRoZSBjaGlsZCB3aWRnZXRzLlxuXHRcdFx0dGhpcy5fY2FsbENoaWxkTWV0aG9kKCBcInJlZnJlc2hcIiApO1xuXHRcdH1cblx0fVxufSApO1xuXG4vKiFcbiAqIGpRdWVyeSBVSSBDaGVja2JveHJhZGlvIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBDaGVja2JveHJhZGlvXG4vLz4+Z3JvdXA6IFdpZGdldHNcbi8vPj5kZXNjcmlwdGlvbjogRW5oYW5jZXMgYSBmb3JtIHdpdGggbXVsdGlwbGUgdGhlbWVhYmxlIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9jaGVja2JveHJhZGlvL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2NoZWNrYm94cmFkaW8vXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9idXR0b24uY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY2hlY2tib3hyYWRpby5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxuJC53aWRnZXQoIFwidWkuY2hlY2tib3hyYWRpb1wiLCBbICQudWkuZm9ybVJlc2V0TWl4aW4sIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGRpc2FibGVkOiBudWxsLFxuXHRcdGxhYmVsOiBudWxsLFxuXHRcdGljb246IHRydWUsXG5cdFx0Y2xhc3Nlczoge1xuXHRcdFx0XCJ1aS1jaGVja2JveHJhZGlvLWxhYmVsXCI6IFwidWktY29ybmVyLWFsbFwiLFxuXHRcdFx0XCJ1aS1jaGVja2JveHJhZGlvLWljb25cIjogXCJ1aS1jb3JuZXItYWxsXCJcblx0XHR9XG5cdH0sXG5cblx0X2dldENyZWF0ZU9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBkaXNhYmxlZCwgbGFiZWxzO1xuXHRcdHZhciB0aGF0ID0gdGhpcztcblx0XHR2YXIgb3B0aW9ucyA9IHRoaXMuX3N1cGVyKCkgfHwge307XG5cblx0XHQvLyBXZSByZWFkIHRoZSB0eXBlIGhlcmUsIGJlY2F1c2UgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byB0aHJvdyBhIGVsZW1lbnQgdHlwZSBlcnJvciBmaXJzdCxcblx0XHQvLyByYXRoZXIgdGhlbiB0aGUgZXJyb3IgZm9yIGxhY2sgb2YgYSBsYWJlbC4gT2Z0ZW4gaWYgaXRzIHRoZSB3cm9uZyB0eXBlLCBpdFxuXHRcdC8vIHdvbid0IGhhdmUgYSBsYWJlbCAoZS5nLiBjYWxsaW5nIG9uIGEgZGl2LCBidG4sIGV0Yylcblx0XHR0aGlzLl9yZWFkVHlwZSgpO1xuXG5cdFx0bGFiZWxzID0gdGhpcy5lbGVtZW50LmxhYmVscygpO1xuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGxhYmVscywgdXNlIHRoZSBsYXN0IG9uZVxuXHRcdHRoaXMubGFiZWwgPSAkKCBsYWJlbHNbIGxhYmVscy5sZW5ndGggLSAxIF0gKTtcblx0XHRpZiAoICF0aGlzLmxhYmVsLmxlbmd0aCApIHtcblx0XHRcdCQuZXJyb3IoIFwiTm8gbGFiZWwgZm91bmQgZm9yIGNoZWNrYm94cmFkaW8gd2lkZ2V0XCIgKTtcblx0XHR9XG5cblx0XHR0aGlzLm9yaWdpbmFsTGFiZWwgPSBcIlwiO1xuXG5cdFx0Ly8gV2UgbmVlZCB0byBnZXQgdGhlIGxhYmVsIHRleHQgYnV0IHRoaXMgbWF5IGFsc28gbmVlZCB0byBtYWtlIHN1cmUgaXQgZG9lcyBub3QgY29udGFpbiB0aGVcblx0XHQvLyBpbnB1dCBpdHNlbGYuXG5cdFx0dGhpcy5sYWJlbC5jb250ZW50cygpLm5vdCggdGhpcy5lbGVtZW50WyAwIF0gKS5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gVGhlIGxhYmVsIGNvbnRlbnRzIGNvdWxkIGJlIHRleHQsIGh0bWwsIG9yIGEgbWl4LiBXZSBjb25jYXQgZWFjaCBlbGVtZW50IHRvIGdldCBhXG5cdFx0XHQvLyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxhYmVsLCB3aXRob3V0IHRoZSBpbnB1dCBhcyBwYXJ0IG9mIGl0LlxuXHRcdFx0dGhhdC5vcmlnaW5hbExhYmVsICs9IHRoaXMubm9kZVR5cGUgPT09IDMgPyAkKCB0aGlzICkudGV4dCgpIDogdGhpcy5vdXRlckhUTUw7XG5cdFx0fSApO1xuXG5cdFx0Ly8gU2V0IHRoZSBsYWJlbCBvcHRpb24gaWYgd2UgZm91bmQgbGFiZWwgdGV4dFxuXHRcdGlmICggdGhpcy5vcmlnaW5hbExhYmVsICkge1xuXHRcdFx0b3B0aW9ucy5sYWJlbCA9IHRoaXMub3JpZ2luYWxMYWJlbDtcblx0XHR9XG5cblx0XHRkaXNhYmxlZCA9IHRoaXMuZWxlbWVudFsgMCBdLmRpc2FibGVkO1xuXHRcdGlmICggZGlzYWJsZWQgIT0gbnVsbCApIHtcblx0XHRcdG9wdGlvbnMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcblx0XHR9XG5cdFx0cmV0dXJuIG9wdGlvbnM7XG5cdH0sXG5cblx0X2NyZWF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNoZWNrZWQgPSB0aGlzLmVsZW1lbnRbIDAgXS5jaGVja2VkO1xuXG5cdFx0dGhpcy5fYmluZEZvcm1SZXNldEhhbmRsZXIoKTtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmRpc2FibGVkID09IG51bGwgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSB0aGlzLmVsZW1lbnRbIDAgXS5kaXNhYmxlZDtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXRPcHRpb24oIFwiZGlzYWJsZWRcIiwgdGhpcy5vcHRpb25zLmRpc2FibGVkICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktY2hlY2tib3hyYWRpb1wiLCBcInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZVwiICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMubGFiZWwsIFwidWktY2hlY2tib3hyYWRpby1sYWJlbFwiLCBcInVpLWJ1dHRvbiB1aS13aWRnZXRcIiApO1xuXG5cdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwicmFkaW9cIiApIHtcblx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmxhYmVsLCBcInVpLWNoZWNrYm94cmFkaW8tcmFkaW8tbGFiZWxcIiApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmxhYmVsICYmIHRoaXMub3B0aW9ucy5sYWJlbCAhPT0gdGhpcy5vcmlnaW5hbExhYmVsICkge1xuXHRcdFx0dGhpcy5fdXBkYXRlTGFiZWwoKTtcblx0XHR9IGVsc2UgaWYgKCB0aGlzLm9yaWdpbmFsTGFiZWwgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMubGFiZWwgPSB0aGlzLm9yaWdpbmFsTGFiZWw7XG5cdFx0fVxuXG5cdFx0dGhpcy5fZW5oYW5jZSgpO1xuXG5cdFx0aWYgKCBjaGVja2VkICkge1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMubGFiZWwsIFwidWktY2hlY2tib3hyYWRpby1jaGVja2VkXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRcdGlmICggdGhpcy5pY29uICkge1xuXHRcdFx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5pY29uLCBudWxsLCBcInVpLXN0YXRlLWhvdmVyXCIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLl9vbigge1xuXHRcdFx0Y2hhbmdlOiBcIl90b2dnbGVDbGFzc2VzXCIsXG5cdFx0XHRmb2N1czogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmxhYmVsLCBudWxsLCBcInVpLXN0YXRlLWZvY3VzIHVpLXZpc3VhbC1mb2N1c1wiICk7XG5cdFx0XHR9LFxuXHRcdFx0Ymx1cjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmxhYmVsLCBudWxsLCBcInVpLXN0YXRlLWZvY3VzIHVpLXZpc3VhbC1mb2N1c1wiICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9yZWFkVHlwZTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5vZGVOYW1lID0gdGhpcy5lbGVtZW50WyAwIF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHR0aGlzLnR5cGUgPSB0aGlzLmVsZW1lbnRbIDAgXS50eXBlO1xuXHRcdGlmICggbm9kZU5hbWUgIT09IFwiaW5wdXRcIiB8fCAhL3JhZGlvfGNoZWNrYm94Ly50ZXN0KCB0aGlzLnR5cGUgKSApIHtcblx0XHRcdCQuZXJyb3IoIFwiQ2FuJ3QgY3JlYXRlIGNoZWNrYm94cmFkaW8gb24gZWxlbWVudC5ub2RlTmFtZT1cIiArIG5vZGVOYW1lICtcblx0XHRcdFx0XCIgYW5kIGVsZW1lbnQudHlwZT1cIiArIHRoaXMudHlwZSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBTdXBwb3J0IGpRdWVyeSBNb2JpbGUgZW5oYW5jZWQgb3B0aW9uXG5cdF9lbmhhbmNlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl91cGRhdGVJY29uKCB0aGlzLmVsZW1lbnRbIDAgXS5jaGVja2VkICk7XG5cdH0sXG5cblx0d2lkZ2V0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5sYWJlbDtcblx0fSxcblxuXHRfZ2V0UmFkaW9Hcm91cDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGdyb3VwO1xuXHRcdHZhciBuYW1lID0gdGhpcy5lbGVtZW50WyAwIF0ubmFtZTtcblx0XHR2YXIgbmFtZVNlbGVjdG9yID0gXCJpbnB1dFtuYW1lPSdcIiArICQudWkuZXNjYXBlU2VsZWN0b3IoIG5hbWUgKSArIFwiJ11cIjtcblxuXHRcdGlmICggIW5hbWUgKSB7XG5cdFx0XHRyZXR1cm4gJCggW10gKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMuZm9ybS5sZW5ndGggKSB7XG5cdFx0XHRncm91cCA9ICQoIHRoaXMuZm9ybVsgMCBdLmVsZW1lbnRzICkuZmlsdGVyKCBuYW1lU2VsZWN0b3IgKTtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBOb3QgaW5zaWRlIGEgZm9ybSwgY2hlY2sgYWxsIGlucHV0cyB0aGF0IGFsc28gYXJlIG5vdCBpbnNpZGUgYSBmb3JtXG5cdFx0XHRncm91cCA9ICQoIG5hbWVTZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAkKCB0aGlzICkuZm9ybSgpLmxlbmd0aCA9PT0gMDtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZ3JvdXAubm90KCB0aGlzLmVsZW1lbnQgKTtcblx0fSxcblxuXHRfdG9nZ2xlQ2xhc3NlczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGNoZWNrZWQgPSB0aGlzLmVsZW1lbnRbIDAgXS5jaGVja2VkO1xuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCB0aGlzLmxhYmVsLCBcInVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZFwiLCBcInVpLXN0YXRlLWFjdGl2ZVwiLCBjaGVja2VkICk7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5pY29uICYmIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICkge1xuXHRcdFx0dGhpcy5fdG9nZ2xlQ2xhc3MoIHRoaXMuaWNvbiwgbnVsbCwgXCJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNoZWNrZWRcIiwgY2hlY2tlZCApXG5cdFx0XHRcdC5fdG9nZ2xlQ2xhc3MoIHRoaXMuaWNvbiwgbnVsbCwgXCJ1aS1pY29uLWJsYW5rXCIsICFjaGVja2VkICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwicmFkaW9cIiApIHtcblx0XHRcdHRoaXMuX2dldFJhZGlvR3JvdXAoKVxuXHRcdFx0XHQuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0dmFyIGluc3RhbmNlID0gJCggdGhpcyApLmNoZWNrYm94cmFkaW8oIFwiaW5zdGFuY2VcIiApO1xuXG5cdFx0XHRcdFx0aWYgKCBpbnN0YW5jZSApIHtcblx0XHRcdFx0XHRcdGluc3RhbmNlLl9yZW1vdmVDbGFzcyggaW5zdGFuY2UubGFiZWwsXG5cdFx0XHRcdFx0XHRcdFwidWktY2hlY2tib3hyYWRpby1jaGVja2VkXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3VuYmluZEZvcm1SZXNldEhhbmRsZXIoKTtcblxuXHRcdGlmICggdGhpcy5pY29uICkge1xuXHRcdFx0dGhpcy5pY29uLnJlbW92ZSgpO1xuXHRcdFx0dGhpcy5pY29uU3BhY2UucmVtb3ZlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXG5cdFx0Ly8gV2UgZG9uJ3QgYWxsb3cgdGhlIHZhbHVlIHRvIGJlIHNldCB0byBub3RoaW5nXG5cdFx0aWYgKCBrZXkgPT09IFwibGFiZWxcIiAmJiAhdmFsdWUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblxuXHRcdGlmICgga2V5ID09PSBcImRpc2FibGVkXCIgKSB7XG5cdFx0XHR0aGlzLl90b2dnbGVDbGFzcyggdGhpcy5sYWJlbCwgbnVsbCwgXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiLCB2YWx1ZSApO1xuXHRcdFx0dGhpcy5lbGVtZW50WyAwIF0uZGlzYWJsZWQgPSB2YWx1ZTtcblxuXHRcdFx0Ly8gRG9uJ3QgcmVmcmVzaCB3aGVuIHNldHRpbmcgZGlzYWJsZWRcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5yZWZyZXNoKCk7XG5cdH0sXG5cblx0X3VwZGF0ZUljb246IGZ1bmN0aW9uKCBjaGVja2VkICkge1xuXHRcdHZhciB0b0FkZCA9IFwidWktaWNvbiB1aS1pY29uLWJhY2tncm91bmQgXCI7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5pY29uICkge1xuXHRcdFx0aWYgKCAhdGhpcy5pY29uICkge1xuXHRcdFx0XHR0aGlzLmljb24gPSAkKCBcIjxzcGFuPlwiICk7XG5cdFx0XHRcdHRoaXMuaWNvblNwYWNlID0gJCggXCI8c3Bhbj4gPC9zcGFuPlwiICk7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmljb25TcGFjZSwgXCJ1aS1jaGVja2JveHJhZGlvLWljb24tc3BhY2VcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICkge1xuXHRcdFx0XHR0b0FkZCArPSBjaGVja2VkID8gXCJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNoZWNrZWRcIiA6IFwidWktaWNvbi1ibGFua1wiO1xuXHRcdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5pY29uLCBudWxsLCBjaGVja2VkID8gXCJ1aS1pY29uLWJsYW5rXCIgOiBcInVpLWljb24tY2hlY2tcIiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG9BZGQgKz0gXCJ1aS1pY29uLWJsYW5rXCI7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5pY29uLCBcInVpLWNoZWNrYm94cmFkaW8taWNvblwiLCB0b0FkZCApO1xuXHRcdFx0aWYgKCAhY2hlY2tlZCApIHtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHRoaXMuaWNvbiwgbnVsbCwgXCJ1aS1pY29uLWNoZWNrIHVpLXN0YXRlLWNoZWNrZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pY29uLnByZXBlbmRUbyggdGhpcy5sYWJlbCApLmFmdGVyKCB0aGlzLmljb25TcGFjZSApO1xuXHRcdH0gZWxzZSBpZiAoIHRoaXMuaWNvbiAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dGhpcy5pY29uLnJlbW92ZSgpO1xuXHRcdFx0dGhpcy5pY29uU3BhY2UucmVtb3ZlKCk7XG5cdFx0XHRkZWxldGUgdGhpcy5pY29uO1xuXHRcdH1cblx0fSxcblxuXHRfdXBkYXRlTGFiZWw6IGZ1bmN0aW9uKCkge1xuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBjb250ZW50cyBvZiB0aGUgbGFiZWwgKCBtaW51cyB0aGUgaWNvbiwgaWNvbiBzcGFjZSwgYW5kIGlucHV0IClcblx0XHR2YXIgY29udGVudHMgPSB0aGlzLmxhYmVsLmNvbnRlbnRzKCkubm90KCB0aGlzLmVsZW1lbnRbIDAgXSApO1xuXHRcdGlmICggdGhpcy5pY29uICkge1xuXHRcdFx0Y29udGVudHMgPSBjb250ZW50cy5ub3QoIHRoaXMuaWNvblsgMCBdICk7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5pY29uU3BhY2UgKSB7XG5cdFx0XHRjb250ZW50cyA9IGNvbnRlbnRzLm5vdCggdGhpcy5pY29uU3BhY2VbIDAgXSApO1xuXHRcdH1cblx0XHRjb250ZW50cy5yZW1vdmUoKTtcblxuXHRcdHRoaXMubGFiZWwuYXBwZW5kKCB0aGlzLm9wdGlvbnMubGFiZWwgKTtcblx0fSxcblxuXHRyZWZyZXNoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hlY2tlZCA9IHRoaXMuZWxlbWVudFsgMCBdLmNoZWNrZWQsXG5cdFx0XHRpc0Rpc2FibGVkID0gdGhpcy5lbGVtZW50WyAwIF0uZGlzYWJsZWQ7XG5cblx0XHR0aGlzLl91cGRhdGVJY29uKCBjaGVja2VkICk7XG5cdFx0dGhpcy5fdG9nZ2xlQ2xhc3MoIHRoaXMubGFiZWwsIFwidWktY2hlY2tib3hyYWRpby1jaGVja2VkXCIsIFwidWktc3RhdGUtYWN0aXZlXCIsIGNoZWNrZWQgKTtcblx0XHRpZiAoIHRoaXMub3B0aW9ucy5sYWJlbCAhPT0gbnVsbCApIHtcblx0XHRcdHRoaXMuX3VwZGF0ZUxhYmVsKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Rpc2FibGVkICE9PSB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKSB7XG5cdFx0XHR0aGlzLl9zZXRPcHRpb25zKCB7IFwiZGlzYWJsZWRcIjogaXNEaXNhYmxlZCB9ICk7XG5cdFx0fVxuXHR9XG5cbn0gXSApO1xuXG52YXIgd2lkZ2V0c0NoZWNrYm94cmFkaW8gPSAkLnVpLmNoZWNrYm94cmFkaW87XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgQnV0dG9uIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBCdXR0b25cbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBFbmhhbmNlcyBhIGZvcm0gd2l0aCB0aGVtZWFibGUgYnV0dG9ucy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9idXR0b24vXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vYnV0dG9uL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvYnV0dG9uLmNzc1xuLy8+PmNzcy50aGVtZTogLi4vLi4vdGhlbWVzL2Jhc2UvdGhlbWUuY3NzXG5cblxuXG4kLndpZGdldCggXCJ1aS5idXR0b25cIiwge1xuXHR2ZXJzaW9uOiBcIjEuMTIuMVwiLFxuXHRkZWZhdWx0RWxlbWVudDogXCI8YnV0dG9uPlwiLFxuXHRvcHRpb25zOiB7XG5cdFx0Y2xhc3Nlczoge1xuXHRcdFx0XCJ1aS1idXR0b25cIjogXCJ1aS1jb3JuZXItYWxsXCJcblx0XHR9LFxuXHRcdGRpc2FibGVkOiBudWxsLFxuXHRcdGljb246IG51bGwsXG5cdFx0aWNvblBvc2l0aW9uOiBcImJlZ2lubmluZ1wiLFxuXHRcdGxhYmVsOiBudWxsLFxuXHRcdHNob3dMYWJlbDogdHJ1ZVxuXHR9LFxuXG5cdF9nZXRDcmVhdGVPcHRpb25zOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZGlzYWJsZWQsXG5cblx0XHRcdC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBjYXNlcyBsaWtlIGluIGpRdWVyeSBNb2JpbGUgd2hlcmUgdGhlIGJhc2Ugd2lkZ2V0IGRvZXMgaGF2ZVxuXHRcdFx0Ly8gYW4gaW1wbGVtZW50YXRpb24gb2YgX2dldENyZWF0ZU9wdGlvbnNcblx0XHRcdG9wdGlvbnMgPSB0aGlzLl9zdXBlcigpIHx8IHt9O1xuXG5cdFx0dGhpcy5pc0lucHV0ID0gdGhpcy5lbGVtZW50LmlzKCBcImlucHV0XCIgKTtcblxuXHRcdGRpc2FibGVkID0gdGhpcy5lbGVtZW50WyAwIF0uZGlzYWJsZWQ7XG5cdFx0aWYgKCBkaXNhYmxlZCAhPSBudWxsICkge1xuXHRcdFx0b3B0aW9ucy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuXHRcdH1cblxuXHRcdHRoaXMub3JpZ2luYWxMYWJlbCA9IHRoaXMuaXNJbnB1dCA/IHRoaXMuZWxlbWVudC52YWwoKSA6IHRoaXMuZWxlbWVudC5odG1sKCk7XG5cdFx0aWYgKCB0aGlzLm9yaWdpbmFsTGFiZWwgKSB7XG5cdFx0XHRvcHRpb25zLmxhYmVsID0gdGhpcy5vcmlnaW5hbExhYmVsO1xuXHRcdH1cblxuXHRcdHJldHVybiBvcHRpb25zO1xuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXMub3B0aW9uLnNob3dMYWJlbCAmICF0aGlzLm9wdGlvbnMuaWNvbiApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5zaG93TGFiZWwgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIFdlIGhhdmUgdG8gY2hlY2sgdGhlIG9wdGlvbiBhZ2FpbiBoZXJlIGV2ZW4gdGhvdWdoIHdlIGRpZCBpbiBfZ2V0Q3JlYXRlT3B0aW9ucyxcblx0XHQvLyBiZWNhdXNlIG51bGwgbWF5IGhhdmUgYmVlbiBwYXNzZWQgb24gaW5pdCB3aGljaCB3b3VsZCBvdmVycmlkZSB3aGF0IHdhcyBzZXQgaW5cblx0XHQvLyBfZ2V0Q3JlYXRlT3B0aW9uc1xuXHRcdGlmICggdGhpcy5vcHRpb25zLmRpc2FibGVkID09IG51bGwgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSB0aGlzLmVsZW1lbnRbIDAgXS5kaXNhYmxlZCB8fCBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLmhhc1RpdGxlID0gISF0aGlzLmVsZW1lbnQuYXR0ciggXCJ0aXRsZVwiICk7XG5cblx0XHQvLyBDaGVjayB0byBzZWUgaWYgdGhlIGxhYmVsIG5lZWRzIHRvIGJlIHNldCBvciBpZiBpdHMgYWxyZWFkeSBjb3JyZWN0XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMubGFiZWwgJiYgdGhpcy5vcHRpb25zLmxhYmVsICE9PSB0aGlzLm9yaWdpbmFsTGFiZWwgKSB7XG5cdFx0XHRpZiAoIHRoaXMuaXNJbnB1dCApIHtcblx0XHRcdFx0dGhpcy5lbGVtZW50LnZhbCggdGhpcy5vcHRpb25zLmxhYmVsICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQuaHRtbCggdGhpcy5vcHRpb25zLmxhYmVsICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuX2FkZENsYXNzKCBcInVpLWJ1dHRvblwiLCBcInVpLXdpZGdldFwiICk7XG5cdFx0dGhpcy5fc2V0T3B0aW9uKCBcImRpc2FibGVkXCIsIHRoaXMub3B0aW9ucy5kaXNhYmxlZCApO1xuXHRcdHRoaXMuX2VuaGFuY2UoKTtcblxuXHRcdGlmICggdGhpcy5lbGVtZW50LmlzKCBcImFcIiApICkge1xuXHRcdFx0dGhpcy5fb24oIHtcblx0XHRcdFx0XCJrZXl1cFwiOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdFx0aWYgKCBldmVudC5rZXlDb2RlID09PSAkLnVpLmtleUNvZGUuU1BBQ0UgKSB7XG5cdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQaGFudG9tSlMgPD0gMS45LCBJRSA4IE9ubHlcblx0XHRcdFx0XHRcdC8vIElmIGEgbmF0aXZlIGNsaWNrIGlzIGF2YWlsYWJsZSB1c2UgaXQgc28gd2UgYWN0dWFsbHkgY2F1c2UgbmF2aWdhdGlvblxuXHRcdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGp1c3QgdHJpZ2dlciBhIGNsaWNrIGV2ZW50XG5cdFx0XHRcdFx0XHRpZiAoIHRoaXMuZWxlbWVudFsgMCBdLmNsaWNrICkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmVsZW1lbnRbIDAgXS5jbGljaygpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5lbGVtZW50LnRyaWdnZXIoIFwiY2xpY2tcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblx0fSxcblxuXHRfZW5oYW5jZTogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAhdGhpcy5lbGVtZW50LmlzKCBcImJ1dHRvblwiICkgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnQuYXR0ciggXCJyb2xlXCIsIFwiYnV0dG9uXCIgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5pY29uICkge1xuXHRcdFx0dGhpcy5fdXBkYXRlSWNvbiggXCJpY29uXCIsIHRoaXMub3B0aW9ucy5pY29uICk7XG5cdFx0XHR0aGlzLl91cGRhdGVUb29sdGlwKCk7XG5cdFx0fVxuXHR9LFxuXG5cdF91cGRhdGVUb29sdGlwOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLnRpdGxlID0gdGhpcy5lbGVtZW50LmF0dHIoIFwidGl0bGVcIiApO1xuXG5cdFx0aWYgKCAhdGhpcy5vcHRpb25zLnNob3dMYWJlbCAmJiAhdGhpcy50aXRsZSApIHtcblx0XHRcdHRoaXMuZWxlbWVudC5hdHRyKCBcInRpdGxlXCIsIHRoaXMub3B0aW9ucy5sYWJlbCApO1xuXHRcdH1cblx0fSxcblxuXHRfdXBkYXRlSWNvbjogZnVuY3Rpb24oIG9wdGlvbiwgdmFsdWUgKSB7XG5cdFx0dmFyIGljb24gPSBvcHRpb24gIT09IFwiaWNvblBvc2l0aW9uXCIsXG5cdFx0XHRwb3NpdGlvbiA9IGljb24gPyB0aGlzLm9wdGlvbnMuaWNvblBvc2l0aW9uIDogdmFsdWUsXG5cdFx0XHRkaXNwbGF5QmxvY2sgPSBwb3NpdGlvbiA9PT0gXCJ0b3BcIiB8fCBwb3NpdGlvbiA9PT0gXCJib3R0b21cIjtcblxuXHRcdC8vIENyZWF0ZSBpY29uXG5cdFx0aWYgKCAhdGhpcy5pY29uICkge1xuXHRcdFx0dGhpcy5pY29uID0gJCggXCI8c3Bhbj5cIiApO1xuXG5cdFx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5pY29uLCBcInVpLWJ1dHRvbi1pY29uXCIsIFwidWktaWNvblwiICk7XG5cblx0XHRcdGlmICggIXRoaXMub3B0aW9ucy5zaG93TGFiZWwgKSB7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCBcInVpLWJ1dHRvbi1pY29uLW9ubHlcIiApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoIGljb24gKSB7XG5cblx0XHRcdC8vIElmIHdlIGFyZSB1cGRhdGluZyB0aGUgaWNvbiByZW1vdmUgdGhlIG9sZCBpY29uIGNsYXNzXG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5pY29uLCBudWxsLCB0aGlzLm9wdGlvbnMuaWNvbiApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGFyZSB1cGRhdGluZyB0aGUgaWNvbiBhZGQgdGhlIG5ldyBpY29uIGNsYXNzXG5cdFx0aWYgKCBpY29uICkge1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaWNvbiwgbnVsbCwgdmFsdWUgKTtcblx0XHR9XG5cblx0XHR0aGlzLl9hdHRhY2hJY29uKCBwb3NpdGlvbiApO1xuXG5cdFx0Ly8gSWYgdGhlIGljb24gaXMgb24gdG9wIG9yIGJvdHRvbSB3ZSBuZWVkIHRvIGFkZCB0aGUgdWktd2lkZ2V0LWljb24tYmxvY2sgY2xhc3MgYW5kIHJlbW92ZVxuXHRcdC8vIHRoZSBpY29uU3BhY2UgaWYgdGhlcmUgaXMgb25lLlxuXHRcdGlmICggZGlzcGxheUJsb2NrICkge1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaWNvbiwgbnVsbCwgXCJ1aS13aWRnZXQtaWNvbi1ibG9ja1wiICk7XG5cdFx0XHRpZiAoIHRoaXMuaWNvblNwYWNlICkge1xuXHRcdFx0XHR0aGlzLmljb25TcGFjZS5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBQb3NpdGlvbiBpcyBiZWdpbm5pbmcgb3IgZW5kIHNvIHJlbW92ZSB0aGUgdWktd2lkZ2V0LWljb24tYmxvY2sgY2xhc3MgYW5kIGFkZCB0aGVcblx0XHRcdC8vIHNwYWNlIGlmIGl0IGRvZXMgbm90IGV4aXN0XG5cdFx0XHRpZiAoICF0aGlzLmljb25TcGFjZSApIHtcblx0XHRcdFx0dGhpcy5pY29uU3BhY2UgPSAkKCBcIjxzcGFuPiA8L3NwYW4+XCIgKTtcblx0XHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaWNvblNwYWNlLCBcInVpLWJ1dHRvbi1pY29uLXNwYWNlXCIgKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmljb24sIG51bGwsIFwidWktd2lnZXQtaWNvbi1ibG9ja1wiICk7XG5cdFx0XHR0aGlzLl9hdHRhY2hJY29uU3BhY2UoIHBvc2l0aW9uICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmVsZW1lbnQucmVtb3ZlQXR0ciggXCJyb2xlXCIgKTtcblxuXHRcdGlmICggdGhpcy5pY29uICkge1xuXHRcdFx0dGhpcy5pY29uLnJlbW92ZSgpO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuaWNvblNwYWNlICkge1xuXHRcdFx0dGhpcy5pY29uU3BhY2UucmVtb3ZlKCk7XG5cdFx0fVxuXHRcdGlmICggIXRoaXMuaGFzVGl0bGUgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnQucmVtb3ZlQXR0ciggXCJ0aXRsZVwiICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9hdHRhY2hJY29uU3BhY2U6IGZ1bmN0aW9uKCBpY29uUG9zaXRpb24gKSB7XG5cdFx0dGhpcy5pY29uWyAvXig/OmVuZHxib3R0b20pLy50ZXN0KCBpY29uUG9zaXRpb24gKSA/IFwiYmVmb3JlXCIgOiBcImFmdGVyXCIgXSggdGhpcy5pY29uU3BhY2UgKTtcblx0fSxcblxuXHRfYXR0YWNoSWNvbjogZnVuY3Rpb24oIGljb25Qb3NpdGlvbiApIHtcblx0XHR0aGlzLmVsZW1lbnRbIC9eKD86ZW5kfGJvdHRvbSkvLnRlc3QoIGljb25Qb3NpdGlvbiApID8gXCJhcHBlbmRcIiA6IFwicHJlcGVuZFwiIF0oIHRoaXMuaWNvbiApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb25zOiBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHR2YXIgbmV3U2hvd0xhYmVsID0gb3B0aW9ucy5zaG93TGFiZWwgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMub3B0aW9ucy5zaG93TGFiZWwgOlxuXHRcdFx0XHRvcHRpb25zLnNob3dMYWJlbCxcblx0XHRcdG5ld0ljb24gPSBvcHRpb25zLmljb24gPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5pY29uIDogb3B0aW9ucy5pY29uO1xuXG5cdFx0aWYgKCAhbmV3U2hvd0xhYmVsICYmICFuZXdJY29uICkge1xuXHRcdFx0b3B0aW9ucy5zaG93TGFiZWwgPSB0cnVlO1xuXHRcdH1cblx0XHR0aGlzLl9zdXBlciggb3B0aW9ucyApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdGlmICgga2V5ID09PSBcImljb25cIiApIHtcblx0XHRcdGlmICggdmFsdWUgKSB7XG5cdFx0XHRcdHRoaXMuX3VwZGF0ZUljb24oIGtleSwgdmFsdWUgKTtcblx0XHRcdH0gZWxzZSBpZiAoIHRoaXMuaWNvbiApIHtcblx0XHRcdFx0dGhpcy5pY29uLnJlbW92ZSgpO1xuXHRcdFx0XHRpZiAoIHRoaXMuaWNvblNwYWNlICkge1xuXHRcdFx0XHRcdHRoaXMuaWNvblNwYWNlLnJlbW92ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwiaWNvblBvc2l0aW9uXCIgKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVJY29uKCBrZXksIHZhbHVlICk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHdlIGNhbid0IGVuZCB1cCB3aXRoIGEgYnV0dG9uIHRoYXQgaGFzIG5laXRoZXIgdGV4dCBub3IgaWNvblxuXHRcdGlmICgga2V5ID09PSBcInNob3dMYWJlbFwiICkge1xuXHRcdFx0XHR0aGlzLl90b2dnbGVDbGFzcyggXCJ1aS1idXR0b24taWNvbi1vbmx5XCIsIG51bGwsICF2YWx1ZSApO1xuXHRcdFx0XHR0aGlzLl91cGRhdGVUb29sdGlwKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwibGFiZWxcIiApIHtcblx0XHRcdGlmICggdGhpcy5pc0lucHV0ICkge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQudmFsKCB2YWx1ZSApO1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBpY29uLCBhcHBlbmQgaXQsIGVsc2Ugbm90aGluZyB0aGVuIGFwcGVuZCB0aGUgdmFsdWVcblx0XHRcdFx0Ly8gdGhpcyBhdm9pZHMgcmVtb3ZhbCBvZiB0aGUgaWNvbiB3aGVuIHNldHRpbmcgbGFiZWwgdGV4dFxuXHRcdFx0XHR0aGlzLmVsZW1lbnQuaHRtbCggdmFsdWUgKTtcblx0XHRcdFx0aWYgKCB0aGlzLmljb24gKSB7XG5cdFx0XHRcdFx0dGhpcy5fYXR0YWNoSWNvbiggdGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiApO1xuXHRcdFx0XHRcdHRoaXMuX2F0dGFjaEljb25TcGFjZSggdGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblxuXHRcdGlmICgga2V5ID09PSBcImRpc2FibGVkXCIgKSB7XG5cdFx0XHR0aGlzLl90b2dnbGVDbGFzcyggbnVsbCwgXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiLCB2YWx1ZSApO1xuXHRcdFx0dGhpcy5lbGVtZW50WyAwIF0uZGlzYWJsZWQgPSB2YWx1ZTtcblx0XHRcdGlmICggdmFsdWUgKSB7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5ibHVyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHJlZnJlc2g6IGZ1bmN0aW9uKCkge1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRvIG9ubHkgY2hlY2sgZGlzYWJsZWQgaWYgaXRzIGFuIGVsZW1lbnQgdGhhdCBzdXBwb3J0cyB0aGlzIG90aGVyd2lzZVxuXHRcdC8vIGNoZWNrIGZvciB0aGUgZGlzYWJsZWQgY2xhc3MgdG8gZGV0ZXJtaW5lIHN0YXRlXG5cdFx0dmFyIGlzRGlzYWJsZWQgPSB0aGlzLmVsZW1lbnQuaXMoIFwiaW5wdXQsIGJ1dHRvblwiICkgP1xuXHRcdFx0dGhpcy5lbGVtZW50WyAwIF0uZGlzYWJsZWQgOiB0aGlzLmVsZW1lbnQuaGFzQ2xhc3MoIFwidWktYnV0dG9uLWRpc2FibGVkXCIgKTtcblxuXHRcdGlmICggaXNEaXNhYmxlZCAhPT0gdGhpcy5vcHRpb25zLmRpc2FibGVkICkge1xuXHRcdFx0dGhpcy5fc2V0T3B0aW9ucyggeyBkaXNhYmxlZDogaXNEaXNhYmxlZCB9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fdXBkYXRlVG9vbHRpcCgpO1xuXHR9XG59ICk7XG5cbi8vIERFUFJFQ0FURURcbmlmICggJC51aUJhY2tDb21wYXQgIT09IGZhbHNlICkge1xuXG5cdC8vIFRleHQgYW5kIEljb25zIG9wdGlvbnNcblx0JC53aWRnZXQoIFwidWkuYnV0dG9uXCIsICQudWkuYnV0dG9uLCB7XG5cdFx0b3B0aW9uczoge1xuXHRcdFx0dGV4dDogdHJ1ZSxcblx0XHRcdGljb25zOiB7XG5cdFx0XHRcdHByaW1hcnk6IG51bGwsXG5cdFx0XHRcdHNlY29uZGFyeTogbnVsbFxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggdGhpcy5vcHRpb25zLnNob3dMYWJlbCAmJiAhdGhpcy5vcHRpb25zLnRleHQgKSB7XG5cdFx0XHRcdHRoaXMub3B0aW9ucy5zaG93TGFiZWwgPSB0aGlzLm9wdGlvbnMudGV4dDtcblx0XHRcdH1cblx0XHRcdGlmICggIXRoaXMub3B0aW9ucy5zaG93TGFiZWwgJiYgdGhpcy5vcHRpb25zLnRleHQgKSB7XG5cdFx0XHRcdHRoaXMub3B0aW9ucy50ZXh0ID0gdGhpcy5vcHRpb25zLnNob3dMYWJlbDtcblx0XHRcdH1cblx0XHRcdGlmICggIXRoaXMub3B0aW9ucy5pY29uICYmICggdGhpcy5vcHRpb25zLmljb25zLnByaW1hcnkgfHxcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMuaWNvbnMuc2Vjb25kYXJ5ICkgKSB7XG5cdFx0XHRcdGlmICggdGhpcy5vcHRpb25zLmljb25zLnByaW1hcnkgKSB7XG5cdFx0XHRcdFx0dGhpcy5vcHRpb25zLmljb24gPSB0aGlzLm9wdGlvbnMuaWNvbnMucHJpbWFyeTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMuaWNvbiA9IHRoaXMub3B0aW9ucy5pY29ucy5zZWNvbmRhcnk7XG5cdFx0XHRcdFx0dGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiA9IFwiZW5kXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoIHRoaXMub3B0aW9ucy5pY29uICkge1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMuaWNvbnMucHJpbWFyeSA9IHRoaXMub3B0aW9ucy5pY29uO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fc3VwZXIoKTtcblx0XHR9LFxuXG5cdFx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIGtleSA9PT0gXCJ0ZXh0XCIgKSB7XG5cdFx0XHRcdHRoaXMuX3N1cGVyKCBcInNob3dMYWJlbFwiLCB2YWx1ZSApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGtleSA9PT0gXCJzaG93TGFiZWxcIiApIHtcblx0XHRcdFx0dGhpcy5vcHRpb25zLnRleHQgPSB2YWx1ZTtcblx0XHRcdH1cblx0XHRcdGlmICgga2V5ID09PSBcImljb25cIiApIHtcblx0XHRcdFx0dGhpcy5vcHRpb25zLmljb25zLnByaW1hcnkgPSB2YWx1ZTtcblx0XHRcdH1cblx0XHRcdGlmICgga2V5ID09PSBcImljb25zXCIgKSB7XG5cdFx0XHRcdGlmICggdmFsdWUucHJpbWFyeSApIHtcblx0XHRcdFx0XHR0aGlzLl9zdXBlciggXCJpY29uXCIsIHZhbHVlLnByaW1hcnkgKTtcblx0XHRcdFx0XHR0aGlzLl9zdXBlciggXCJpY29uUG9zaXRpb25cIiwgXCJiZWdpbm5pbmdcIiApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCB2YWx1ZS5zZWNvbmRhcnkgKSB7XG5cdFx0XHRcdFx0dGhpcy5fc3VwZXIoIFwiaWNvblwiLCB2YWx1ZS5zZWNvbmRhcnkgKTtcblx0XHRcdFx0XHR0aGlzLl9zdXBlciggXCJpY29uUG9zaXRpb25cIiwgXCJlbmRcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9zdXBlckFwcGx5KCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH0gKTtcblxuXHQkLmZuLmJ1dHRvbiA9ICggZnVuY3Rpb24oIG9yaWcgKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhdGhpcy5sZW5ndGggfHwgKCB0aGlzLmxlbmd0aCAmJiB0aGlzWyAwIF0udGFnTmFtZSAhPT0gXCJJTlBVVFwiICkgfHxcblx0XHRcdFx0XHQoIHRoaXMubGVuZ3RoICYmIHRoaXNbIDAgXS50YWdOYW1lID09PSBcIklOUFVUXCIgJiYgKFxuXHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBcInR5cGVcIiApICE9PSBcImNoZWNrYm94XCIgJiYgdGhpcy5hdHRyKCBcInR5cGVcIiApICE9PSBcInJhZGlvXCJcblx0XHRcdFx0XHQpICkgKSB7XG5cdFx0XHRcdHJldHVybiBvcmlnLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdH1cblx0XHRcdGlmICggISQudWkuY2hlY2tib3hyYWRpbyApIHtcblx0XHRcdFx0JC5lcnJvciggXCJDaGVja2JveHJhZGlvIHdpZGdldCBtaXNzaW5nXCIgKTtcblx0XHRcdH1cblx0XHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMCApIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY2hlY2tib3hyYWRpbygge1xuXHRcdFx0XHRcdFwiaWNvblwiOiBmYWxzZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy5jaGVja2JveHJhZGlvLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXHR9ICkoICQuZm4uYnV0dG9uICk7XG5cblx0JC5mbi5idXR0b25zZXQgPSBmdW5jdGlvbigpIHtcblx0XHRpZiAoICEkLnVpLmNvbnRyb2xncm91cCApIHtcblx0XHRcdCQuZXJyb3IoIFwiQ29udHJvbGdyb3VwIHdpZGdldCBtaXNzaW5nXCIgKTtcblx0XHR9XG5cdFx0aWYgKCBhcmd1bWVudHNbIDAgXSA9PT0gXCJvcHRpb25cIiAmJiBhcmd1bWVudHNbIDEgXSA9PT0gXCJpdGVtc1wiICYmIGFyZ3VtZW50c1sgMiBdICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udHJvbGdyb3VwLmFwcGx5KCB0aGlzLFxuXHRcdFx0XHRbIGFyZ3VtZW50c1sgMCBdLCBcIml0ZW1zLmJ1dHRvblwiLCBhcmd1bWVudHNbIDIgXSBdICk7XG5cdFx0fVxuXHRcdGlmICggYXJndW1lbnRzWyAwIF0gPT09IFwib3B0aW9uXCIgJiYgYXJndW1lbnRzWyAxIF0gPT09IFwiaXRlbXNcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRyb2xncm91cC5hcHBseSggdGhpcywgWyBhcmd1bWVudHNbIDAgXSwgXCJpdGVtcy5idXR0b25cIiBdICk7XG5cdFx0fVxuXHRcdGlmICggdHlwZW9mIGFyZ3VtZW50c1sgMCBdID09PSBcIm9iamVjdFwiICYmIGFyZ3VtZW50c1sgMCBdLml0ZW1zICkge1xuXHRcdFx0YXJndW1lbnRzWyAwIF0uaXRlbXMgPSB7XG5cdFx0XHRcdGJ1dHRvbjogYXJndW1lbnRzWyAwIF0uaXRlbXNcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmNvbnRyb2xncm91cC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdH07XG59XG5cbnZhciB3aWRnZXRzQnV0dG9uID0gJC51aS5idXR0b247XG5cblxuLy8ganNjczpkaXNhYmxlIG1heGltdW1MaW5lTGVuZ3RoXG4vKiBqc2NzOmRpc2FibGUgcmVxdWlyZUNhbWVsQ2FzZU9yVXBwZXJDYXNlSWRlbnRpZmllcnMgKi9cbi8qIVxuICogalF1ZXJ5IFVJIERhdGVwaWNrZXIgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IERhdGVwaWNrZXJcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBEaXNwbGF5cyBhIGNhbGVuZGFyIGZyb20gYW4gaW5wdXQgb3IgaW5saW5lIGZvciBzZWxlY3RpbmcgZGF0ZXMuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vZGF0ZXBpY2tlci9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9kYXRlcGlja2VyL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvZGF0ZXBpY2tlci5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxuJC5leHRlbmQoICQudWksIHsgZGF0ZXBpY2tlcjogeyB2ZXJzaW9uOiBcIjEuMTIuMVwiIH0gfSApO1xuXG52YXIgZGF0ZXBpY2tlcl9pbnN0QWN0aXZlO1xuXG5mdW5jdGlvbiBkYXRlcGlja2VyX2dldFppbmRleCggZWxlbSApIHtcblx0dmFyIHBvc2l0aW9uLCB2YWx1ZTtcblx0d2hpbGUgKCBlbGVtLmxlbmd0aCAmJiBlbGVtWyAwIF0gIT09IGRvY3VtZW50ICkge1xuXG5cdFx0Ly8gSWdub3JlIHotaW5kZXggaWYgcG9zaXRpb24gaXMgc2V0IHRvIGEgdmFsdWUgd2hlcmUgei1pbmRleCBpcyBpZ25vcmVkIGJ5IHRoZSBicm93c2VyXG5cdFx0Ly8gVGhpcyBtYWtlcyBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzXG5cdFx0Ly8gV2ViS2l0IGFsd2F5cyByZXR1cm5zIGF1dG8gaWYgdGhlIGVsZW1lbnQgaXMgcG9zaXRpb25lZFxuXHRcdHBvc2l0aW9uID0gZWxlbS5jc3MoIFwicG9zaXRpb25cIiApO1xuXHRcdGlmICggcG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiB8fCBwb3NpdGlvbiA9PT0gXCJyZWxhdGl2ZVwiIHx8IHBvc2l0aW9uID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIElFIHJldHVybnMgMCB3aGVuIHpJbmRleCBpcyBub3Qgc3BlY2lmaWVkXG5cdFx0XHQvLyBvdGhlciBicm93c2VycyByZXR1cm4gYSBzdHJpbmdcblx0XHRcdC8vIHdlIGlnbm9yZSB0aGUgY2FzZSBvZiBuZXN0ZWQgZWxlbWVudHMgd2l0aCBhbiBleHBsaWNpdCB2YWx1ZSBvZiAwXG5cdFx0XHQvLyA8ZGl2IHN0eWxlPVwiei1pbmRleDogLTEwO1wiPjxkaXYgc3R5bGU9XCJ6LWluZGV4OiAwO1wiPjwvZGl2PjwvZGl2PlxuXHRcdFx0dmFsdWUgPSBwYXJzZUludCggZWxlbS5jc3MoIFwiekluZGV4XCIgKSwgMTAgKTtcblx0XHRcdGlmICggIWlzTmFOKCB2YWx1ZSApICYmIHZhbHVlICE9PSAwICkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsZW0gPSBlbGVtLnBhcmVudCgpO1xuXHR9XG5cblx0cmV0dXJuIDA7XG59XG4vKiBEYXRlIHBpY2tlciBtYW5hZ2VyLlxuICAgVXNlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywgJC5kYXRlcGlja2VyLCB0byBpbnRlcmFjdCB3aXRoIHRoZSBkYXRlIHBpY2tlci5cbiAgIFNldHRpbmdzIGZvciAoZ3JvdXBzIG9mKSBkYXRlIHBpY2tlcnMgYXJlIG1haW50YWluZWQgaW4gYW4gaW5zdGFuY2Ugb2JqZWN0LFxuICAgYWxsb3dpbmcgbXVsdGlwbGUgZGlmZmVyZW50IHNldHRpbmdzIG9uIHRoZSBzYW1lIHBhZ2UuICovXG5cbmZ1bmN0aW9uIERhdGVwaWNrZXIoKSB7XG5cdHRoaXMuX2N1ckluc3QgPSBudWxsOyAvLyBUaGUgY3VycmVudCBpbnN0YW5jZSBpbiB1c2Vcblx0dGhpcy5fa2V5RXZlbnQgPSBmYWxzZTsgLy8gSWYgdGhlIGxhc3QgZXZlbnQgd2FzIGEga2V5IGV2ZW50XG5cdHRoaXMuX2Rpc2FibGVkSW5wdXRzID0gW107IC8vIExpc3Qgb2YgZGF0ZSBwaWNrZXIgaW5wdXRzIHRoYXQgaGF2ZSBiZWVuIGRpc2FibGVkXG5cdHRoaXMuX2RhdGVwaWNrZXJTaG93aW5nID0gZmFsc2U7IC8vIFRydWUgaWYgdGhlIHBvcHVwIHBpY2tlciBpcyBzaG93aW5nICwgZmFsc2UgaWYgbm90XG5cdHRoaXMuX2luRGlhbG9nID0gZmFsc2U7IC8vIFRydWUgaWYgc2hvd2luZyB3aXRoaW4gYSBcImRpYWxvZ1wiLCBmYWxzZSBpZiBub3Rcblx0dGhpcy5fbWFpbkRpdklkID0gXCJ1aS1kYXRlcGlja2VyLWRpdlwiOyAvLyBUaGUgSUQgb2YgdGhlIG1haW4gZGF0ZXBpY2tlciBkaXZpc2lvblxuXHR0aGlzLl9pbmxpbmVDbGFzcyA9IFwidWktZGF0ZXBpY2tlci1pbmxpbmVcIjsgLy8gVGhlIG5hbWUgb2YgdGhlIGlubGluZSBtYXJrZXIgY2xhc3Ncblx0dGhpcy5fYXBwZW5kQ2xhc3MgPSBcInVpLWRhdGVwaWNrZXItYXBwZW5kXCI7IC8vIFRoZSBuYW1lIG9mIHRoZSBhcHBlbmQgbWFya2VyIGNsYXNzXG5cdHRoaXMuX3RyaWdnZXJDbGFzcyA9IFwidWktZGF0ZXBpY2tlci10cmlnZ2VyXCI7IC8vIFRoZSBuYW1lIG9mIHRoZSB0cmlnZ2VyIG1hcmtlciBjbGFzc1xuXHR0aGlzLl9kaWFsb2dDbGFzcyA9IFwidWktZGF0ZXBpY2tlci1kaWFsb2dcIjsgLy8gVGhlIG5hbWUgb2YgdGhlIGRpYWxvZyBtYXJrZXIgY2xhc3Ncblx0dGhpcy5fZGlzYWJsZUNsYXNzID0gXCJ1aS1kYXRlcGlja2VyLWRpc2FibGVkXCI7IC8vIFRoZSBuYW1lIG9mIHRoZSBkaXNhYmxlZCBjb3ZlcmluZyBtYXJrZXIgY2xhc3Ncblx0dGhpcy5fdW5zZWxlY3RhYmxlQ2xhc3MgPSBcInVpLWRhdGVwaWNrZXItdW5zZWxlY3RhYmxlXCI7IC8vIFRoZSBuYW1lIG9mIHRoZSB1bnNlbGVjdGFibGUgY2VsbCBtYXJrZXIgY2xhc3Ncblx0dGhpcy5fY3VycmVudENsYXNzID0gXCJ1aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5XCI7IC8vIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGRheSBtYXJrZXIgY2xhc3Ncblx0dGhpcy5fZGF5T3ZlckNsYXNzID0gXCJ1aS1kYXRlcGlja2VyLWRheXMtY2VsbC1vdmVyXCI7IC8vIFRoZSBuYW1lIG9mIHRoZSBkYXkgaG92ZXIgbWFya2VyIGNsYXNzXG5cdHRoaXMucmVnaW9uYWwgPSBbXTsgLy8gQXZhaWxhYmxlIHJlZ2lvbmFsIHNldHRpbmdzLCBpbmRleGVkIGJ5IGxhbmd1YWdlIGNvZGVcblx0dGhpcy5yZWdpb25hbFsgXCJcIiBdID0geyAvLyBEZWZhdWx0IHJlZ2lvbmFsIHNldHRpbmdzXG5cdFx0Y2xvc2VUZXh0OiBcIkRvbmVcIiwgLy8gRGlzcGxheSB0ZXh0IGZvciBjbG9zZSBsaW5rXG5cdFx0cHJldlRleHQ6IFwiUHJldlwiLCAvLyBEaXNwbGF5IHRleHQgZm9yIHByZXZpb3VzIG1vbnRoIGxpbmtcblx0XHRuZXh0VGV4dDogXCJOZXh0XCIsIC8vIERpc3BsYXkgdGV4dCBmb3IgbmV4dCBtb250aCBsaW5rXG5cdFx0Y3VycmVudFRleHQ6IFwiVG9kYXlcIiwgLy8gRGlzcGxheSB0ZXh0IGZvciBjdXJyZW50IG1vbnRoIGxpbmtcblx0XHRtb250aE5hbWVzOiBbIFwiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXG5cdFx0XHRcIkp1bHlcIixcIkF1Z3VzdFwiLFwiU2VwdGVtYmVyXCIsXCJPY3RvYmVyXCIsXCJOb3ZlbWJlclwiLFwiRGVjZW1iZXJcIiBdLCAvLyBOYW1lcyBvZiBtb250aHMgZm9yIGRyb3AtZG93biBhbmQgZm9ybWF0dGluZ1xuXHRcdG1vbnRoTmFtZXNTaG9ydDogWyBcIkphblwiLCBcIkZlYlwiLCBcIk1hclwiLCBcIkFwclwiLCBcIk1heVwiLCBcIkp1blwiLCBcIkp1bFwiLCBcIkF1Z1wiLCBcIlNlcFwiLCBcIk9jdFwiLCBcIk5vdlwiLCBcIkRlY1wiIF0sIC8vIEZvciBmb3JtYXR0aW5nXG5cdFx0ZGF5TmFtZXM6IFsgXCJTdW5kYXlcIiwgXCJNb25kYXlcIiwgXCJUdWVzZGF5XCIsIFwiV2VkbmVzZGF5XCIsIFwiVGh1cnNkYXlcIiwgXCJGcmlkYXlcIiwgXCJTYXR1cmRheVwiIF0sIC8vIEZvciBmb3JtYXR0aW5nXG5cdFx0ZGF5TmFtZXNTaG9ydDogWyBcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiIF0sIC8vIEZvciBmb3JtYXR0aW5nXG5cdFx0ZGF5TmFtZXNNaW46IFsgXCJTdVwiLFwiTW9cIixcIlR1XCIsXCJXZVwiLFwiVGhcIixcIkZyXCIsXCJTYVwiIF0sIC8vIENvbHVtbiBoZWFkaW5ncyBmb3IgZGF5cyBzdGFydGluZyBhdCBTdW5kYXlcblx0XHR3ZWVrSGVhZGVyOiBcIldrXCIsIC8vIENvbHVtbiBoZWFkZXIgZm9yIHdlZWsgb2YgdGhlIHllYXJcblx0XHRkYXRlRm9ybWF0OiBcIm1tL2RkL3l5XCIsIC8vIFNlZSBmb3JtYXQgb3B0aW9ucyBvbiBwYXJzZURhdGVcblx0XHRmaXJzdERheTogMCwgLy8gVGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaywgU3VuID0gMCwgTW9uID0gMSwgLi4uXG5cdFx0aXNSVEw6IGZhbHNlLCAvLyBUcnVlIGlmIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2UsIGZhbHNlIGlmIGxlZnQtdG8tcmlnaHRcblx0XHRzaG93TW9udGhBZnRlclllYXI6IGZhbHNlLCAvLyBUcnVlIGlmIHRoZSB5ZWFyIHNlbGVjdCBwcmVjZWRlcyBtb250aCwgZmFsc2UgZm9yIG1vbnRoIHRoZW4geWVhclxuXHRcdHllYXJTdWZmaXg6IFwiXCIgLy8gQWRkaXRpb25hbCB0ZXh0IHRvIGFwcGVuZCB0byB0aGUgeWVhciBpbiB0aGUgbW9udGggaGVhZGVyc1xuXHR9O1xuXHR0aGlzLl9kZWZhdWx0cyA9IHsgLy8gR2xvYmFsIGRlZmF1bHRzIGZvciBhbGwgdGhlIGRhdGUgcGlja2VyIGluc3RhbmNlc1xuXHRcdHNob3dPbjogXCJmb2N1c1wiLCAvLyBcImZvY3VzXCIgZm9yIHBvcHVwIG9uIGZvY3VzLFxuXHRcdFx0Ly8gXCJidXR0b25cIiBmb3IgdHJpZ2dlciBidXR0b24sIG9yIFwiYm90aFwiIGZvciBlaXRoZXJcblx0XHRzaG93QW5pbTogXCJmYWRlSW5cIiwgLy8gTmFtZSBvZiBqUXVlcnkgYW5pbWF0aW9uIGZvciBwb3B1cFxuXHRcdHNob3dPcHRpb25zOiB7fSwgLy8gT3B0aW9ucyBmb3IgZW5oYW5jZWQgYW5pbWF0aW9uc1xuXHRcdGRlZmF1bHREYXRlOiBudWxsLCAvLyBVc2VkIHdoZW4gZmllbGQgaXMgYmxhbms6IGFjdHVhbCBkYXRlLFxuXHRcdFx0Ly8gKy8tbnVtYmVyIGZvciBvZmZzZXQgZnJvbSB0b2RheSwgbnVsbCBmb3IgdG9kYXlcblx0XHRhcHBlbmRUZXh0OiBcIlwiLCAvLyBEaXNwbGF5IHRleHQgZm9sbG93aW5nIHRoZSBpbnB1dCBib3gsIGUuZy4gc2hvd2luZyB0aGUgZm9ybWF0XG5cdFx0YnV0dG9uVGV4dDogXCIuLi5cIiwgLy8gVGV4dCBmb3IgdHJpZ2dlciBidXR0b25cblx0XHRidXR0b25JbWFnZTogXCJcIiwgLy8gVVJMIGZvciB0cmlnZ2VyIGJ1dHRvbiBpbWFnZVxuXHRcdGJ1dHRvbkltYWdlT25seTogZmFsc2UsIC8vIFRydWUgaWYgdGhlIGltYWdlIGFwcGVhcnMgYWxvbmUsIGZhbHNlIGlmIGl0IGFwcGVhcnMgb24gYSBidXR0b25cblx0XHRoaWRlSWZOb1ByZXZOZXh0OiBmYWxzZSwgLy8gVHJ1ZSB0byBoaWRlIG5leHQvcHJldmlvdXMgbW9udGggbGlua3Ncblx0XHRcdC8vIGlmIG5vdCBhcHBsaWNhYmxlLCBmYWxzZSB0byBqdXN0IGRpc2FibGUgdGhlbVxuXHRcdG5hdmlnYXRpb25Bc0RhdGVGb3JtYXQ6IGZhbHNlLCAvLyBUcnVlIGlmIGRhdGUgZm9ybWF0dGluZyBhcHBsaWVkIHRvIHByZXYvdG9kYXkvbmV4dCBsaW5rc1xuXHRcdGdvdG9DdXJyZW50OiBmYWxzZSwgLy8gVHJ1ZSBpZiB0b2RheSBsaW5rIGdvZXMgYmFjayB0byBjdXJyZW50IHNlbGVjdGlvbiBpbnN0ZWFkXG5cdFx0Y2hhbmdlTW9udGg6IGZhbHNlLCAvLyBUcnVlIGlmIG1vbnRoIGNhbiBiZSBzZWxlY3RlZCBkaXJlY3RseSwgZmFsc2UgaWYgb25seSBwcmV2L25leHRcblx0XHRjaGFuZ2VZZWFyOiBmYWxzZSwgLy8gVHJ1ZSBpZiB5ZWFyIGNhbiBiZSBzZWxlY3RlZCBkaXJlY3RseSwgZmFsc2UgaWYgb25seSBwcmV2L25leHRcblx0XHR5ZWFyUmFuZ2U6IFwiYy0xMDpjKzEwXCIsIC8vIFJhbmdlIG9mIHllYXJzIHRvIGRpc3BsYXkgaW4gZHJvcC1kb3duLFxuXHRcdFx0Ly8gZWl0aGVyIHJlbGF0aXZlIHRvIHRvZGF5J3MgeWVhciAoLW5uOitubiksIHJlbGF0aXZlIHRvIGN1cnJlbnRseSBkaXNwbGF5ZWQgeWVhclxuXHRcdFx0Ly8gKGMtbm46YytubiksIGFic29sdXRlIChubm5uOm5ubm4pLCBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZSAobm5ubjotbilcblx0XHRzaG93T3RoZXJNb250aHM6IGZhbHNlLCAvLyBUcnVlIHRvIHNob3cgZGF0ZXMgaW4gb3RoZXIgbW9udGhzLCBmYWxzZSB0byBsZWF2ZSBibGFua1xuXHRcdHNlbGVjdE90aGVyTW9udGhzOiBmYWxzZSwgLy8gVHJ1ZSB0byBhbGxvdyBzZWxlY3Rpb24gb2YgZGF0ZXMgaW4gb3RoZXIgbW9udGhzLCBmYWxzZSBmb3IgdW5zZWxlY3RhYmxlXG5cdFx0c2hvd1dlZWs6IGZhbHNlLCAvLyBUcnVlIHRvIHNob3cgd2VlayBvZiB0aGUgeWVhciwgZmFsc2UgdG8gbm90IHNob3cgaXRcblx0XHRjYWxjdWxhdGVXZWVrOiB0aGlzLmlzbzg2MDFXZWVrLCAvLyBIb3cgdG8gY2FsY3VsYXRlIHRoZSB3ZWVrIG9mIHRoZSB5ZWFyLFxuXHRcdFx0Ly8gdGFrZXMgYSBEYXRlIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHdlZWsgZm9yIGl0XG5cdFx0c2hvcnRZZWFyQ3V0b2ZmOiBcIisxMFwiLCAvLyBTaG9ydCB5ZWFyIHZhbHVlcyA8IHRoaXMgYXJlIGluIHRoZSBjdXJyZW50IGNlbnR1cnksXG5cdFx0XHQvLyA+IHRoaXMgYXJlIGluIHRoZSBwcmV2aW91cyBjZW50dXJ5LFxuXHRcdFx0Ly8gc3RyaW5nIHZhbHVlIHN0YXJ0aW5nIHdpdGggXCIrXCIgZm9yIGN1cnJlbnQgeWVhciArIHZhbHVlXG5cdFx0bWluRGF0ZTogbnVsbCwgLy8gVGhlIGVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSwgb3IgbnVsbCBmb3Igbm8gbGltaXRcblx0XHRtYXhEYXRlOiBudWxsLCAvLyBUaGUgbGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSwgb3IgbnVsbCBmb3Igbm8gbGltaXRcblx0XHRkdXJhdGlvbjogXCJmYXN0XCIsIC8vIER1cmF0aW9uIG9mIGRpc3BsYXkvY2xvc3VyZVxuXHRcdGJlZm9yZVNob3dEYXk6IG51bGwsIC8vIEZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBkYXRlIGFuZCByZXR1cm5zIGFuIGFycmF5IHdpdGhcblx0XHRcdC8vIFswXSA9IHRydWUgaWYgc2VsZWN0YWJsZSwgZmFsc2UgaWYgbm90LCBbMV0gPSBjdXN0b20gQ1NTIGNsYXNzIG5hbWUocykgb3IgXCJcIixcblx0XHRcdC8vIFsyXSA9IGNlbGwgdGl0bGUgKG9wdGlvbmFsKSwgZS5nLiAkLmRhdGVwaWNrZXIubm9XZWVrZW5kc1xuXHRcdGJlZm9yZVNob3c6IG51bGwsIC8vIEZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gaW5wdXQgZmllbGQgYW5kXG5cdFx0XHQvLyByZXR1cm5zIGEgc2V0IG9mIGN1c3RvbSBzZXR0aW5ncyBmb3IgdGhlIGRhdGUgcGlja2VyXG5cdFx0b25TZWxlY3Q6IG51bGwsIC8vIERlZmluZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYSBkYXRlIGlzIHNlbGVjdGVkXG5cdFx0b25DaGFuZ2VNb250aFllYXI6IG51bGwsIC8vIERlZmluZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gdGhlIG1vbnRoIG9yIHllYXIgaXMgY2hhbmdlZFxuXHRcdG9uQ2xvc2U6IG51bGwsIC8vIERlZmluZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgY2xvc2VkXG5cdFx0bnVtYmVyT2ZNb250aHM6IDEsIC8vIE51bWJlciBvZiBtb250aHMgdG8gc2hvdyBhdCBhIHRpbWVcblx0XHRzaG93Q3VycmVudEF0UG9zOiAwLCAvLyBUaGUgcG9zaXRpb24gaW4gbXVsdGlwZSBtb250aHMgYXQgd2hpY2ggdG8gc2hvdyB0aGUgY3VycmVudCBtb250aCAoc3RhcnRpbmcgYXQgMClcblx0XHRzdGVwTW9udGhzOiAxLCAvLyBOdW1iZXIgb2YgbW9udGhzIHRvIHN0ZXAgYmFjay9mb3J3YXJkXG5cdFx0c3RlcEJpZ01vbnRoczogMTIsIC8vIE51bWJlciBvZiBtb250aHMgdG8gc3RlcCBiYWNrL2ZvcndhcmQgZm9yIHRoZSBiaWcgbGlua3Ncblx0XHRhbHRGaWVsZDogXCJcIiwgLy8gU2VsZWN0b3IgZm9yIGFuIGFsdGVybmF0ZSBmaWVsZCB0byBzdG9yZSBzZWxlY3RlZCBkYXRlcyBpbnRvXG5cdFx0YWx0Rm9ybWF0OiBcIlwiLCAvLyBUaGUgZGF0ZSBmb3JtYXQgdG8gdXNlIGZvciB0aGUgYWx0ZXJuYXRlIGZpZWxkXG5cdFx0Y29uc3RyYWluSW5wdXQ6IHRydWUsIC8vIFRoZSBpbnB1dCBpcyBjb25zdHJhaW5lZCBieSB0aGUgY3VycmVudCBkYXRlIGZvcm1hdFxuXHRcdHNob3dCdXR0b25QYW5lbDogZmFsc2UsIC8vIFRydWUgdG8gc2hvdyBidXR0b24gcGFuZWwsIGZhbHNlIHRvIG5vdCBzaG93IGl0XG5cdFx0YXV0b1NpemU6IGZhbHNlLCAvLyBUcnVlIHRvIHNpemUgdGhlIGlucHV0IGZvciB0aGUgZGF0ZSBmb3JtYXQsIGZhbHNlIHRvIGxlYXZlIGFzIGlzXG5cdFx0ZGlzYWJsZWQ6IGZhbHNlIC8vIFRoZSBpbml0aWFsIGRpc2FibGVkIHN0YXRlXG5cdH07XG5cdCQuZXh0ZW5kKCB0aGlzLl9kZWZhdWx0cywgdGhpcy5yZWdpb25hbFsgXCJcIiBdICk7XG5cdHRoaXMucmVnaW9uYWwuZW4gPSAkLmV4dGVuZCggdHJ1ZSwge30sIHRoaXMucmVnaW9uYWxbIFwiXCIgXSApO1xuXHR0aGlzLnJlZ2lvbmFsWyBcImVuLVVTXCIgXSA9ICQuZXh0ZW5kKCB0cnVlLCB7fSwgdGhpcy5yZWdpb25hbC5lbiApO1xuXHR0aGlzLmRwRGl2ID0gZGF0ZXBpY2tlcl9iaW5kSG92ZXIoICQoIFwiPGRpdiBpZD0nXCIgKyB0aGlzLl9tYWluRGl2SWQgKyBcIicgY2xhc3M9J3VpLWRhdGVwaWNrZXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItYWxsJz48L2Rpdj5cIiApICk7XG59XG5cbiQuZXh0ZW5kKCBEYXRlcGlja2VyLnByb3RvdHlwZSwge1xuXHQvKiBDbGFzcyBuYW1lIGFkZGVkIHRvIGVsZW1lbnRzIHRvIGluZGljYXRlIGFscmVhZHkgY29uZmlndXJlZCB3aXRoIGEgZGF0ZSBwaWNrZXIuICovXG5cdG1hcmtlckNsYXNzTmFtZTogXCJoYXNEYXRlcGlja2VyXCIsXG5cblx0Ly9LZWVwIHRyYWNrIG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb3dzIGRpc3BsYXllZCAoc2VlICM3MDQzKVxuXHRtYXhSb3dzOiA0LFxuXG5cdC8vIFRPRE8gcmVuYW1lIHRvIFwid2lkZ2V0XCIgd2hlbiBzd2l0Y2hpbmcgdG8gd2lkZ2V0IGZhY3Rvcnlcblx0X3dpZGdldERhdGVwaWNrZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmRwRGl2O1xuXHR9LFxuXG5cdC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhbGwgaW5zdGFuY2VzIG9mIHRoZSBkYXRlIHBpY2tlci5cblx0ICogQHBhcmFtICBzZXR0aW5ncyAgb2JqZWN0IC0gdGhlIG5ldyBzZXR0aW5ncyB0byB1c2UgYXMgZGVmYXVsdHMgKGFub255bW91cyBvYmplY3QpXG5cdCAqIEByZXR1cm4gdGhlIG1hbmFnZXIgb2JqZWN0XG5cdCAqL1xuXHRzZXREZWZhdWx0czogZnVuY3Rpb24oIHNldHRpbmdzICkge1xuXHRcdGRhdGVwaWNrZXJfZXh0ZW5kUmVtb3ZlKCB0aGlzLl9kZWZhdWx0cywgc2V0dGluZ3MgfHwge30gKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHQvKiBBdHRhY2ggdGhlIGRhdGUgcGlja2VyIHRvIGEgalF1ZXJ5IHNlbGVjdGlvbi5cblx0ICogQHBhcmFtICB0YXJnZXRcdGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICogQHBhcmFtICBzZXR0aW5ncyAgb2JqZWN0IC0gdGhlIG5ldyBzZXR0aW5ncyB0byB1c2UgZm9yIHRoaXMgZGF0ZSBwaWNrZXIgaW5zdGFuY2UgKGFub255bW91cylcblx0ICovXG5cdF9hdHRhY2hEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHR2YXIgbm9kZU5hbWUsIGlubGluZSwgaW5zdDtcblx0XHRub2RlTmFtZSA9IHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlubGluZSA9ICggbm9kZU5hbWUgPT09IFwiZGl2XCIgfHwgbm9kZU5hbWUgPT09IFwic3BhblwiICk7XG5cdFx0aWYgKCAhdGFyZ2V0LmlkICkge1xuXHRcdFx0dGhpcy51dWlkICs9IDE7XG5cdFx0XHR0YXJnZXQuaWQgPSBcImRwXCIgKyB0aGlzLnV1aWQ7XG5cdFx0fVxuXHRcdGluc3QgPSB0aGlzLl9uZXdJbnN0KCAkKCB0YXJnZXQgKSwgaW5saW5lICk7XG5cdFx0aW5zdC5zZXR0aW5ncyA9ICQuZXh0ZW5kKCB7fSwgc2V0dGluZ3MgfHwge30gKTtcblx0XHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHR0aGlzLl9jb25uZWN0RGF0ZXBpY2tlciggdGFyZ2V0LCBpbnN0ICk7XG5cdFx0fSBlbHNlIGlmICggaW5saW5lICkge1xuXHRcdFx0dGhpcy5faW5saW5lRGF0ZXBpY2tlciggdGFyZ2V0LCBpbnN0ICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvYmplY3QuICovXG5cdF9uZXdJbnN0OiBmdW5jdGlvbiggdGFyZ2V0LCBpbmxpbmUgKSB7XG5cdFx0dmFyIGlkID0gdGFyZ2V0WyAwIF0uaWQucmVwbGFjZSggLyhbXkEtWmEtejAtOV9cXC1dKS9nLCBcIlxcXFxcXFxcJDFcIiApOyAvLyBlc2NhcGUgalF1ZXJ5IG1ldGEgY2hhcnNcblx0XHRyZXR1cm4geyBpZDogaWQsIGlucHV0OiB0YXJnZXQsIC8vIGFzc29jaWF0ZWQgdGFyZ2V0XG5cdFx0XHRzZWxlY3RlZERheTogMCwgc2VsZWN0ZWRNb250aDogMCwgc2VsZWN0ZWRZZWFyOiAwLCAvLyBjdXJyZW50IHNlbGVjdGlvblxuXHRcdFx0ZHJhd01vbnRoOiAwLCBkcmF3WWVhcjogMCwgLy8gbW9udGggYmVpbmcgZHJhd25cblx0XHRcdGlubGluZTogaW5saW5lLCAvLyBpcyBkYXRlcGlja2VyIGlubGluZSBvciBub3Rcblx0XHRcdGRwRGl2OiAoICFpbmxpbmUgPyB0aGlzLmRwRGl2IDogLy8gcHJlc2VudGF0aW9uIGRpdlxuXHRcdFx0ZGF0ZXBpY2tlcl9iaW5kSG92ZXIoICQoIFwiPGRpdiBjbGFzcz0nXCIgKyB0aGlzLl9pbmxpbmVDbGFzcyArIFwiIHVpLWRhdGVwaWNrZXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWhlbHBlci1jbGVhcmZpeCB1aS1jb3JuZXItYWxsJz48L2Rpdj5cIiApICkgKSB9O1xuXHR9LFxuXG5cdC8qIEF0dGFjaCB0aGUgZGF0ZSBwaWNrZXIgdG8gYW4gaW5wdXQgZmllbGQuICovXG5cdF9jb25uZWN0RGF0ZXBpY2tlcjogZnVuY3Rpb24oIHRhcmdldCwgaW5zdCApIHtcblx0XHR2YXIgaW5wdXQgPSAkKCB0YXJnZXQgKTtcblx0XHRpbnN0LmFwcGVuZCA9ICQoIFtdICk7XG5cdFx0aW5zdC50cmlnZ2VyID0gJCggW10gKTtcblx0XHRpZiAoIGlucHV0Lmhhc0NsYXNzKCB0aGlzLm1hcmtlckNsYXNzTmFtZSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9hdHRhY2htZW50cyggaW5wdXQsIGluc3QgKTtcblx0XHRpbnB1dC5hZGRDbGFzcyggdGhpcy5tYXJrZXJDbGFzc05hbWUgKS5vbiggXCJrZXlkb3duXCIsIHRoaXMuX2RvS2V5RG93biApLlxuXHRcdFx0b24oIFwia2V5cHJlc3NcIiwgdGhpcy5fZG9LZXlQcmVzcyApLm9uKCBcImtleXVwXCIsIHRoaXMuX2RvS2V5VXAgKTtcblx0XHR0aGlzLl9hdXRvU2l6ZSggaW5zdCApO1xuXHRcdCQuZGF0YSggdGFyZ2V0LCBcImRhdGVwaWNrZXJcIiwgaW5zdCApO1xuXG5cdFx0Ly9JZiBkaXNhYmxlZCBvcHRpb24gaXMgdHJ1ZSwgZGlzYWJsZSB0aGUgZGF0ZXBpY2tlciBvbmNlIGl0IGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBpbnB1dCAoc2VlIHRpY2tldCAjNTY2NSlcblx0XHRpZiAoIGluc3Quc2V0dGluZ3MuZGlzYWJsZWQgKSB7XG5cdFx0XHR0aGlzLl9kaXNhYmxlRGF0ZXBpY2tlciggdGFyZ2V0ICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIE1ha2UgYXR0YWNobWVudHMgYmFzZWQgb24gc2V0dGluZ3MuICovXG5cdF9hdHRhY2htZW50czogZnVuY3Rpb24oIGlucHV0LCBpbnN0ICkge1xuXHRcdHZhciBzaG93T24sIGJ1dHRvblRleHQsIGJ1dHRvbkltYWdlLFxuXHRcdFx0YXBwZW5kVGV4dCA9IHRoaXMuX2dldCggaW5zdCwgXCJhcHBlbmRUZXh0XCIgKSxcblx0XHRcdGlzUlRMID0gdGhpcy5fZ2V0KCBpbnN0LCBcImlzUlRMXCIgKTtcblxuXHRcdGlmICggaW5zdC5hcHBlbmQgKSB7XG5cdFx0XHRpbnN0LmFwcGVuZC5yZW1vdmUoKTtcblx0XHR9XG5cdFx0aWYgKCBhcHBlbmRUZXh0ICkge1xuXHRcdFx0aW5zdC5hcHBlbmQgPSAkKCBcIjxzcGFuIGNsYXNzPSdcIiArIHRoaXMuX2FwcGVuZENsYXNzICsgXCInPlwiICsgYXBwZW5kVGV4dCArIFwiPC9zcGFuPlwiICk7XG5cdFx0XHRpbnB1dFsgaXNSVEwgPyBcImJlZm9yZVwiIDogXCJhZnRlclwiIF0oIGluc3QuYXBwZW5kICk7XG5cdFx0fVxuXG5cdFx0aW5wdXQub2ZmKCBcImZvY3VzXCIsIHRoaXMuX3Nob3dEYXRlcGlja2VyICk7XG5cblx0XHRpZiAoIGluc3QudHJpZ2dlciApIHtcblx0XHRcdGluc3QudHJpZ2dlci5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHRzaG93T24gPSB0aGlzLl9nZXQoIGluc3QsIFwic2hvd09uXCIgKTtcblx0XHRpZiAoIHNob3dPbiA9PT0gXCJmb2N1c1wiIHx8IHNob3dPbiA9PT0gXCJib3RoXCIgKSB7IC8vIHBvcC11cCBkYXRlIHBpY2tlciB3aGVuIGluIHRoZSBtYXJrZWQgZmllbGRcblx0XHRcdGlucHV0Lm9uKCBcImZvY3VzXCIsIHRoaXMuX3Nob3dEYXRlcGlja2VyICk7XG5cdFx0fVxuXHRcdGlmICggc2hvd09uID09PSBcImJ1dHRvblwiIHx8IHNob3dPbiA9PT0gXCJib3RoXCIgKSB7IC8vIHBvcC11cCBkYXRlIHBpY2tlciB3aGVuIGJ1dHRvbiBjbGlja2VkXG5cdFx0XHRidXR0b25UZXh0ID0gdGhpcy5fZ2V0KCBpbnN0LCBcImJ1dHRvblRleHRcIiApO1xuXHRcdFx0YnV0dG9uSW1hZ2UgPSB0aGlzLl9nZXQoIGluc3QsIFwiYnV0dG9uSW1hZ2VcIiApO1xuXHRcdFx0aW5zdC50cmlnZ2VyID0gJCggdGhpcy5fZ2V0KCBpbnN0LCBcImJ1dHRvbkltYWdlT25seVwiICkgP1xuXHRcdFx0XHQkKCBcIjxpbWcvPlwiICkuYWRkQ2xhc3MoIHRoaXMuX3RyaWdnZXJDbGFzcyApLlxuXHRcdFx0XHRcdGF0dHIoIHsgc3JjOiBidXR0b25JbWFnZSwgYWx0OiBidXR0b25UZXh0LCB0aXRsZTogYnV0dG9uVGV4dCB9ICkgOlxuXHRcdFx0XHQkKCBcIjxidXR0b24gdHlwZT0nYnV0dG9uJz48L2J1dHRvbj5cIiApLmFkZENsYXNzKCB0aGlzLl90cmlnZ2VyQ2xhc3MgKS5cblx0XHRcdFx0XHRodG1sKCAhYnV0dG9uSW1hZ2UgPyBidXR0b25UZXh0IDogJCggXCI8aW1nLz5cIiApLmF0dHIoXG5cdFx0XHRcdFx0eyBzcmM6YnV0dG9uSW1hZ2UsIGFsdDpidXR0b25UZXh0LCB0aXRsZTpidXR0b25UZXh0IH0gKSApICk7XG5cdFx0XHRpbnB1dFsgaXNSVEwgPyBcImJlZm9yZVwiIDogXCJhZnRlclwiIF0oIGluc3QudHJpZ2dlciApO1xuXHRcdFx0aW5zdC50cmlnZ2VyLm9uKCBcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcgJiYgJC5kYXRlcGlja2VyLl9sYXN0SW5wdXQgPT09IGlucHV0WyAwIF0gKSB7XG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCAkLmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nICYmICQuZGF0ZXBpY2tlci5fbGFzdElucHV0ICE9PSBpbnB1dFsgMCBdICkge1xuXHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKCBpbnB1dFsgMCBdICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9zaG93RGF0ZXBpY2tlciggaW5wdXRbIDAgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0LyogQXBwbHkgdGhlIG1heGltdW0gbGVuZ3RoIGZvciB0aGUgZGF0ZSBmb3JtYXQuICovXG5cdF9hdXRvU2l6ZTogZnVuY3Rpb24oIGluc3QgKSB7XG5cdFx0aWYgKCB0aGlzLl9nZXQoIGluc3QsIFwiYXV0b1NpemVcIiApICYmICFpbnN0LmlubGluZSApIHtcblx0XHRcdHZhciBmaW5kTWF4LCBtYXgsIG1heEksIGksXG5cdFx0XHRcdGRhdGUgPSBuZXcgRGF0ZSggMjAwOSwgMTIgLSAxLCAyMCApLCAvLyBFbnN1cmUgZG91YmxlIGRpZ2l0c1xuXHRcdFx0XHRkYXRlRm9ybWF0ID0gdGhpcy5fZ2V0KCBpbnN0LCBcImRhdGVGb3JtYXRcIiApO1xuXG5cdFx0XHRpZiAoIGRhdGVGb3JtYXQubWF0Y2goIC9bRE1dLyApICkge1xuXHRcdFx0XHRmaW5kTWF4ID0gZnVuY3Rpb24oIG5hbWVzICkge1xuXHRcdFx0XHRcdG1heCA9IDA7XG5cdFx0XHRcdFx0bWF4SSA9IDA7XG5cdFx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0XHRcdGlmICggbmFtZXNbIGkgXS5sZW5ndGggPiBtYXggKSB7XG5cdFx0XHRcdFx0XHRcdG1heCA9IG5hbWVzWyBpIF0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRtYXhJID0gaTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG1heEk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdGRhdGUuc2V0TW9udGgoIGZpbmRNYXgoIHRoaXMuX2dldCggaW5zdCwgKCBkYXRlRm9ybWF0Lm1hdGNoKCAvTU0vICkgP1xuXHRcdFx0XHRcdFwibW9udGhOYW1lc1wiIDogXCJtb250aE5hbWVzU2hvcnRcIiApICkgKSApO1xuXHRcdFx0XHRkYXRlLnNldERhdGUoIGZpbmRNYXgoIHRoaXMuX2dldCggaW5zdCwgKCBkYXRlRm9ybWF0Lm1hdGNoKCAvREQvICkgP1xuXHRcdFx0XHRcdFwiZGF5TmFtZXNcIiA6IFwiZGF5TmFtZXNTaG9ydFwiICkgKSApICsgMjAgLSBkYXRlLmdldERheSgpICk7XG5cdFx0XHR9XG5cdFx0XHRpbnN0LmlucHV0LmF0dHIoIFwic2l6ZVwiLCB0aGlzLl9mb3JtYXREYXRlKCBpbnN0LCBkYXRlICkubGVuZ3RoICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIEF0dGFjaCBhbiBpbmxpbmUgZGF0ZSBwaWNrZXIgdG8gYSBkaXYuICovXG5cdF9pbmxpbmVEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0LCBpbnN0ICkge1xuXHRcdHZhciBkaXZTcGFuID0gJCggdGFyZ2V0ICk7XG5cdFx0aWYgKCBkaXZTcGFuLmhhc0NsYXNzKCB0aGlzLm1hcmtlckNsYXNzTmFtZSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRkaXZTcGFuLmFkZENsYXNzKCB0aGlzLm1hcmtlckNsYXNzTmFtZSApLmFwcGVuZCggaW5zdC5kcERpdiApO1xuXHRcdCQuZGF0YSggdGFyZ2V0LCBcImRhdGVwaWNrZXJcIiwgaW5zdCApO1xuXHRcdHRoaXMuX3NldERhdGUoIGluc3QsIHRoaXMuX2dldERlZmF1bHREYXRlKCBpbnN0ICksIHRydWUgKTtcblx0XHR0aGlzLl91cGRhdGVEYXRlcGlja2VyKCBpbnN0ICk7XG5cdFx0dGhpcy5fdXBkYXRlQWx0ZXJuYXRlKCBpbnN0ICk7XG5cblx0XHQvL0lmIGRpc2FibGVkIG9wdGlvbiBpcyB0cnVlLCBkaXNhYmxlIHRoZSBkYXRlcGlja2VyIGJlZm9yZSBzaG93aW5nIGl0IChzZWUgdGlja2V0ICM1NjY1KVxuXHRcdGlmICggaW5zdC5zZXR0aW5ncy5kaXNhYmxlZCApIHtcblx0XHRcdHRoaXMuX2Rpc2FibGVEYXRlcGlja2VyKCB0YXJnZXQgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgZGlzcGxheTpibG9jayBpbiBwbGFjZSBvZiBpbnN0LmRwRGl2LnNob3coKSB3aGljaCB3b24ndCB3b3JrIG9uIGRpc2Nvbm5lY3RlZCBlbGVtZW50c1xuXHRcdC8vIGh0dHA6Ly9idWdzLmpxdWVyeXVpLmNvbS90aWNrZXQvNzU1MiAtIEEgRGF0ZXBpY2tlciBjcmVhdGVkIG9uIGEgZGV0YWNoZWQgZGl2IGhhcyB6ZXJvIGhlaWdodFxuXHRcdGluc3QuZHBEaXYuY3NzKCBcImRpc3BsYXlcIiwgXCJibG9ja1wiICk7XG5cdH0sXG5cblx0LyogUG9wLXVwIHRoZSBkYXRlIHBpY2tlciBpbiBhIFwiZGlhbG9nXCIgYm94LlxuXHQgKiBAcGFyYW0gIGlucHV0IGVsZW1lbnQgLSBpZ25vcmVkXG5cdCAqIEBwYXJhbSAgZGF0ZVx0c3RyaW5nIG9yIERhdGUgLSB0aGUgaW5pdGlhbCBkYXRlIHRvIGRpc3BsYXlcblx0ICogQHBhcmFtICBvblNlbGVjdCAgZnVuY3Rpb24gLSB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEgZGF0ZSBpcyBzZWxlY3RlZFxuXHQgKiBAcGFyYW0gIHNldHRpbmdzICBvYmplY3QgLSB1cGRhdGUgdGhlIGRpYWxvZyBkYXRlIHBpY2tlciBpbnN0YW5jZSdzIHNldHRpbmdzIChhbm9ueW1vdXMgb2JqZWN0KVxuXHQgKiBAcGFyYW0gIHBvcyBpbnRbMl0gLSBjb29yZGluYXRlcyBmb3IgdGhlIGRpYWxvZydzIHBvc2l0aW9uIHdpdGhpbiB0aGUgc2NyZWVuIG9yXG5cdCAqXHRcdFx0XHRcdGV2ZW50IC0gd2l0aCB4L3kgY29vcmRpbmF0ZXMgb3Jcblx0ICpcdFx0XHRcdFx0bGVhdmUgZW1wdHkgZm9yIGRlZmF1bHQgKHNjcmVlbiBjZW50cmUpXG5cdCAqIEByZXR1cm4gdGhlIG1hbmFnZXIgb2JqZWN0XG5cdCAqL1xuXHRfZGlhbG9nRGF0ZXBpY2tlcjogZnVuY3Rpb24oIGlucHV0LCBkYXRlLCBvblNlbGVjdCwgc2V0dGluZ3MsIHBvcyApIHtcblx0XHR2YXIgaWQsIGJyb3dzZXJXaWR0aCwgYnJvd3NlckhlaWdodCwgc2Nyb2xsWCwgc2Nyb2xsWSxcblx0XHRcdGluc3QgPSB0aGlzLl9kaWFsb2dJbnN0OyAvLyBpbnRlcm5hbCBpbnN0YW5jZVxuXG5cdFx0aWYgKCAhaW5zdCApIHtcblx0XHRcdHRoaXMudXVpZCArPSAxO1xuXHRcdFx0aWQgPSBcImRwXCIgKyB0aGlzLnV1aWQ7XG5cdFx0XHR0aGlzLl9kaWFsb2dJbnB1dCA9ICQoIFwiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdcIiArIGlkICtcblx0XHRcdFx0XCInIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTEwMHB4OyB3aWR0aDogMHB4OycvPlwiICk7XG5cdFx0XHR0aGlzLl9kaWFsb2dJbnB1dC5vbiggXCJrZXlkb3duXCIsIHRoaXMuX2RvS2V5RG93biApO1xuXHRcdFx0JCggXCJib2R5XCIgKS5hcHBlbmQoIHRoaXMuX2RpYWxvZ0lucHV0ICk7XG5cdFx0XHRpbnN0ID0gdGhpcy5fZGlhbG9nSW5zdCA9IHRoaXMuX25ld0luc3QoIHRoaXMuX2RpYWxvZ0lucHV0LCBmYWxzZSApO1xuXHRcdFx0aW5zdC5zZXR0aW5ncyA9IHt9O1xuXHRcdFx0JC5kYXRhKCB0aGlzLl9kaWFsb2dJbnB1dFsgMCBdLCBcImRhdGVwaWNrZXJcIiwgaW5zdCApO1xuXHRcdH1cblx0XHRkYXRlcGlja2VyX2V4dGVuZFJlbW92ZSggaW5zdC5zZXR0aW5ncywgc2V0dGluZ3MgfHwge30gKTtcblx0XHRkYXRlID0gKCBkYXRlICYmIGRhdGUuY29uc3RydWN0b3IgPT09IERhdGUgPyB0aGlzLl9mb3JtYXREYXRlKCBpbnN0LCBkYXRlICkgOiBkYXRlICk7XG5cdFx0dGhpcy5fZGlhbG9nSW5wdXQudmFsKCBkYXRlICk7XG5cblx0XHR0aGlzLl9wb3MgPSAoIHBvcyA/ICggcG9zLmxlbmd0aCA/IHBvcyA6IFsgcG9zLnBhZ2VYLCBwb3MucGFnZVkgXSApIDogbnVsbCApO1xuXHRcdGlmICggIXRoaXMuX3BvcyApIHtcblx0XHRcdGJyb3dzZXJXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcblx0XHRcdGJyb3dzZXJIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXHRcdFx0c2Nyb2xsWCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDtcblx0XHRcdHNjcm9sbFkgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wO1xuXHRcdFx0dGhpcy5fcG9zID0gLy8gc2hvdWxkIHVzZSBhY3R1YWwgd2lkdGgvaGVpZ2h0IGJlbG93XG5cdFx0XHRcdFsgKCBicm93c2VyV2lkdGggLyAyICkgLSAxMDAgKyBzY3JvbGxYLCAoIGJyb3dzZXJIZWlnaHQgLyAyICkgLSAxNTAgKyBzY3JvbGxZIF07XG5cdFx0fVxuXG5cdFx0Ly8gTW92ZSBpbnB1dCBvbiBzY3JlZW4gZm9yIGZvY3VzLCBidXQgaGlkZGVuIGJlaGluZCBkaWFsb2dcblx0XHR0aGlzLl9kaWFsb2dJbnB1dC5jc3MoIFwibGVmdFwiLCAoIHRoaXMuX3Bvc1sgMCBdICsgMjAgKSArIFwicHhcIiApLmNzcyggXCJ0b3BcIiwgdGhpcy5fcG9zWyAxIF0gKyBcInB4XCIgKTtcblx0XHRpbnN0LnNldHRpbmdzLm9uU2VsZWN0ID0gb25TZWxlY3Q7XG5cdFx0dGhpcy5faW5EaWFsb2cgPSB0cnVlO1xuXHRcdHRoaXMuZHBEaXYuYWRkQ2xhc3MoIHRoaXMuX2RpYWxvZ0NsYXNzICk7XG5cdFx0dGhpcy5fc2hvd0RhdGVwaWNrZXIoIHRoaXMuX2RpYWxvZ0lucHV0WyAwIF0gKTtcblx0XHRpZiAoICQuYmxvY2tVSSApIHtcblx0XHRcdCQuYmxvY2tVSSggdGhpcy5kcERpdiApO1xuXHRcdH1cblx0XHQkLmRhdGEoIHRoaXMuX2RpYWxvZ0lucHV0WyAwIF0sIFwiZGF0ZXBpY2tlclwiLCBpbnN0ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0LyogRGV0YWNoIGEgZGF0ZXBpY2tlciBmcm9tIGl0cyBjb250cm9sLlxuXHQgKiBAcGFyYW0gIHRhcmdldFx0ZWxlbWVudCAtIHRoZSB0YXJnZXQgaW5wdXQgZmllbGQgb3IgZGl2aXNpb24gb3Igc3BhblxuXHQgKi9cblx0X2Rlc3Ryb3lEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdHZhciBub2RlTmFtZSxcblx0XHRcdCR0YXJnZXQgPSAkKCB0YXJnZXQgKSxcblx0XHRcdGluc3QgPSAkLmRhdGEoIHRhcmdldCwgXCJkYXRlcGlja2VyXCIgKTtcblxuXHRcdGlmICggISR0YXJnZXQuaGFzQ2xhc3MoIHRoaXMubWFya2VyQ2xhc3NOYW1lICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bm9kZU5hbWUgPSB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHQkLnJlbW92ZURhdGEoIHRhcmdldCwgXCJkYXRlcGlja2VyXCIgKTtcblx0XHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHRpbnN0LmFwcGVuZC5yZW1vdmUoKTtcblx0XHRcdGluc3QudHJpZ2dlci5yZW1vdmUoKTtcblx0XHRcdCR0YXJnZXQucmVtb3ZlQ2xhc3MoIHRoaXMubWFya2VyQ2xhc3NOYW1lICkuXG5cdFx0XHRcdG9mZiggXCJmb2N1c1wiLCB0aGlzLl9zaG93RGF0ZXBpY2tlciApLlxuXHRcdFx0XHRvZmYoIFwia2V5ZG93blwiLCB0aGlzLl9kb0tleURvd24gKS5cblx0XHRcdFx0b2ZmKCBcImtleXByZXNzXCIsIHRoaXMuX2RvS2V5UHJlc3MgKS5cblx0XHRcdFx0b2ZmKCBcImtleXVwXCIsIHRoaXMuX2RvS2V5VXAgKTtcblx0XHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJkaXZcIiB8fCBub2RlTmFtZSA9PT0gXCJzcGFuXCIgKSB7XG5cdFx0XHQkdGFyZ2V0LnJlbW92ZUNsYXNzKCB0aGlzLm1hcmtlckNsYXNzTmFtZSApLmVtcHR5KCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBkYXRlcGlja2VyX2luc3RBY3RpdmUgPT09IGluc3QgKSB7XG5cdFx0XHRkYXRlcGlja2VyX2luc3RBY3RpdmUgPSBudWxsO1xuXHRcdH1cblx0fSxcblxuXHQvKiBFbmFibGUgdGhlIGRhdGUgcGlja2VyIHRvIGEgalF1ZXJ5IHNlbGVjdGlvbi5cblx0ICogQHBhcmFtICB0YXJnZXRcdGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICovXG5cdF9lbmFibGVEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdHZhciBub2RlTmFtZSwgaW5saW5lLFxuXHRcdFx0JHRhcmdldCA9ICQoIHRhcmdldCApLFxuXHRcdFx0aW5zdCA9ICQuZGF0YSggdGFyZ2V0LCBcImRhdGVwaWNrZXJcIiApO1xuXG5cdFx0aWYgKCAhJHRhcmdldC5oYXNDbGFzcyggdGhpcy5tYXJrZXJDbGFzc05hbWUgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRub2RlTmFtZSA9IHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHRhcmdldC5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0aW5zdC50cmlnZ2VyLmZpbHRlciggXCJidXR0b25cIiApLlxuXHRcdFx0XHRlYWNoKCBmdW5jdGlvbigpIHsgdGhpcy5kaXNhYmxlZCA9IGZhbHNlOyB9ICkuZW5kKCkuXG5cdFx0XHRcdGZpbHRlciggXCJpbWdcIiApLmNzcyggeyBvcGFjaXR5OiBcIjEuMFwiLCBjdXJzb3I6IFwiXCIgfSApO1xuXHRcdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImRpdlwiIHx8IG5vZGVOYW1lID09PSBcInNwYW5cIiApIHtcblx0XHRcdGlubGluZSA9ICR0YXJnZXQuY2hpbGRyZW4oIFwiLlwiICsgdGhpcy5faW5saW5lQ2xhc3MgKTtcblx0XHRcdGlubGluZS5jaGlsZHJlbigpLnJlbW92ZUNsYXNzKCBcInVpLXN0YXRlLWRpc2FibGVkXCIgKTtcblx0XHRcdGlubGluZS5maW5kKCBcInNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLCBzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFyXCIgKS5cblx0XHRcdFx0cHJvcCggXCJkaXNhYmxlZFwiLCBmYWxzZSApO1xuXHRcdH1cblx0XHR0aGlzLl9kaXNhYmxlZElucHV0cyA9ICQubWFwKCB0aGlzLl9kaXNhYmxlZElucHV0cyxcblx0XHRcdGZ1bmN0aW9uKCB2YWx1ZSApIHsgcmV0dXJuICggdmFsdWUgPT09IHRhcmdldCA/IG51bGwgOiB2YWx1ZSApOyB9ICk7IC8vIGRlbGV0ZSBlbnRyeVxuXHR9LFxuXG5cdC8qIERpc2FibGUgdGhlIGRhdGUgcGlja2VyIHRvIGEgalF1ZXJ5IHNlbGVjdGlvbi5cblx0ICogQHBhcmFtICB0YXJnZXRcdGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICovXG5cdF9kaXNhYmxlRGF0ZXBpY2tlcjogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgbm9kZU5hbWUsIGlubGluZSxcblx0XHRcdCR0YXJnZXQgPSAkKCB0YXJnZXQgKSxcblx0XHRcdGluc3QgPSAkLmRhdGEoIHRhcmdldCwgXCJkYXRlcGlja2VyXCIgKTtcblxuXHRcdGlmICggISR0YXJnZXQuaGFzQ2xhc3MoIHRoaXMubWFya2VyQ2xhc3NOYW1lICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bm9kZU5hbWUgPSB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgKSB7XG5cdFx0XHR0YXJnZXQuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aW5zdC50cmlnZ2VyLmZpbHRlciggXCJidXR0b25cIiApLlxuXHRcdFx0XHRlYWNoKCBmdW5jdGlvbigpIHsgdGhpcy5kaXNhYmxlZCA9IHRydWU7IH0gKS5lbmQoKS5cblx0XHRcdFx0ZmlsdGVyKCBcImltZ1wiICkuY3NzKCB7IG9wYWNpdHk6IFwiMC41XCIsIGN1cnNvcjogXCJkZWZhdWx0XCIgfSApO1xuXHRcdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImRpdlwiIHx8IG5vZGVOYW1lID09PSBcInNwYW5cIiApIHtcblx0XHRcdGlubGluZSA9ICR0YXJnZXQuY2hpbGRyZW4oIFwiLlwiICsgdGhpcy5faW5saW5lQ2xhc3MgKTtcblx0XHRcdGlubGluZS5jaGlsZHJlbigpLmFkZENsYXNzKCBcInVpLXN0YXRlLWRpc2FibGVkXCIgKTtcblx0XHRcdGlubGluZS5maW5kKCBcInNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLCBzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFyXCIgKS5cblx0XHRcdFx0cHJvcCggXCJkaXNhYmxlZFwiLCB0cnVlICk7XG5cdFx0fVxuXHRcdHRoaXMuX2Rpc2FibGVkSW5wdXRzID0gJC5tYXAoIHRoaXMuX2Rpc2FibGVkSW5wdXRzLFxuXHRcdFx0ZnVuY3Rpb24oIHZhbHVlICkgeyByZXR1cm4gKCB2YWx1ZSA9PT0gdGFyZ2V0ID8gbnVsbCA6IHZhbHVlICk7IH0gKTsgLy8gZGVsZXRlIGVudHJ5XG5cdFx0dGhpcy5fZGlzYWJsZWRJbnB1dHNbIHRoaXMuX2Rpc2FibGVkSW5wdXRzLmxlbmd0aCBdID0gdGFyZ2V0O1xuXHR9LFxuXG5cdC8qIElzIHRoZSBmaXJzdCBmaWVsZCBpbiBhIGpRdWVyeSBjb2xsZWN0aW9uIGRpc2FibGVkIGFzIGEgZGF0ZXBpY2tlcj9cblx0ICogQHBhcmFtICB0YXJnZXRcdGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICogQHJldHVybiBib29sZWFuIC0gdHJ1ZSBpZiBkaXNhYmxlZCwgZmFsc2UgaWYgZW5hYmxlZFxuXHQgKi9cblx0X2lzRGlzYWJsZWREYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdGlmICggIXRhcmdldCApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdGhpcy5fZGlzYWJsZWRJbnB1dHMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRpZiAoIHRoaXMuX2Rpc2FibGVkSW5wdXRzWyBpIF0gPT09IHRhcmdldCApIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKiBSZXRyaWV2ZSB0aGUgaW5zdGFuY2UgZGF0YSBmb3IgdGhlIHRhcmdldCBjb250cm9sLlxuXHQgKiBAcGFyYW0gIHRhcmdldCAgZWxlbWVudCAtIHRoZSB0YXJnZXQgaW5wdXQgZmllbGQgb3IgZGl2aXNpb24gb3Igc3BhblxuXHQgKiBAcmV0dXJuICBvYmplY3QgLSB0aGUgYXNzb2NpYXRlZCBpbnN0YW5jZSBkYXRhXG5cdCAqIEB0aHJvd3MgIGVycm9yIGlmIGEgalF1ZXJ5IHByb2JsZW0gZ2V0dGluZyBkYXRhXG5cdCAqL1xuXHRfZ2V0SW5zdDogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuICQuZGF0YSggdGFyZ2V0LCBcImRhdGVwaWNrZXJcIiApO1xuXHRcdH1cblx0XHRjYXRjaCAoIGVyciApIHtcblx0XHRcdHRocm93IFwiTWlzc2luZyBpbnN0YW5jZSBkYXRhIGZvciB0aGlzIGRhdGVwaWNrZXJcIjtcblx0XHR9XG5cdH0sXG5cblx0LyogVXBkYXRlIG9yIHJldHJpZXZlIHRoZSBzZXR0aW5ncyBmb3IgYSBkYXRlIHBpY2tlciBhdHRhY2hlZCB0byBhbiBpbnB1dCBmaWVsZCBvciBkaXZpc2lvbi5cblx0ICogQHBhcmFtICB0YXJnZXQgIGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICogQHBhcmFtICBuYW1lXHRvYmplY3QgLSB0aGUgbmV3IHNldHRpbmdzIHRvIHVwZGF0ZSBvclxuXHQgKlx0XHRcdFx0c3RyaW5nIC0gdGhlIG5hbWUgb2YgdGhlIHNldHRpbmcgdG8gY2hhbmdlIG9yIHJldHJpZXZlLFxuXHQgKlx0XHRcdFx0d2hlbiByZXRyaWV2aW5nIGFsc28gXCJhbGxcIiBmb3IgYWxsIGluc3RhbmNlIHNldHRpbmdzIG9yXG5cdCAqXHRcdFx0XHRcImRlZmF1bHRzXCIgZm9yIGFsbCBnbG9iYWwgZGVmYXVsdHNcblx0ICogQHBhcmFtICB2YWx1ZSAgIGFueSAtIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBzZXR0aW5nXG5cdCAqXHRcdFx0XHQob21pdCBpZiBhYm92ZSBpcyBhbiBvYmplY3Qgb3IgdG8gcmV0cmlldmUgYSB2YWx1ZSlcblx0ICovXG5cdF9vcHRpb25EYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0LCBuYW1lLCB2YWx1ZSApIHtcblx0XHR2YXIgc2V0dGluZ3MsIGRhdGUsIG1pbkRhdGUsIG1heERhdGUsXG5cdFx0XHRpbnN0ID0gdGhpcy5fZ2V0SW5zdCggdGFyZ2V0ICk7XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRyZXR1cm4gKCBuYW1lID09PSBcImRlZmF1bHRzXCIgPyAkLmV4dGVuZCgge30sICQuZGF0ZXBpY2tlci5fZGVmYXVsdHMgKSA6XG5cdFx0XHRcdCggaW5zdCA/ICggbmFtZSA9PT0gXCJhbGxcIiA/ICQuZXh0ZW5kKCB7fSwgaW5zdC5zZXR0aW5ncyApIDpcblx0XHRcdFx0dGhpcy5fZ2V0KCBpbnN0LCBuYW1lICkgKSA6IG51bGwgKSApO1xuXHRcdH1cblxuXHRcdHNldHRpbmdzID0gbmFtZSB8fCB7fTtcblx0XHRpZiAoIHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0c2V0dGluZ3MgPSB7fTtcblx0XHRcdHNldHRpbmdzWyBuYW1lIF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRpZiAoIGluc3QgKSB7XG5cdFx0XHRpZiAoIHRoaXMuX2N1ckluc3QgPT09IGluc3QgKSB7XG5cdFx0XHRcdHRoaXMuX2hpZGVEYXRlcGlja2VyKCk7XG5cdFx0XHR9XG5cblx0XHRcdGRhdGUgPSB0aGlzLl9nZXREYXRlRGF0ZXBpY2tlciggdGFyZ2V0LCB0cnVlICk7XG5cdFx0XHRtaW5EYXRlID0gdGhpcy5fZ2V0TWluTWF4RGF0ZSggaW5zdCwgXCJtaW5cIiApO1xuXHRcdFx0bWF4RGF0ZSA9IHRoaXMuX2dldE1pbk1heERhdGUoIGluc3QsIFwibWF4XCIgKTtcblx0XHRcdGRhdGVwaWNrZXJfZXh0ZW5kUmVtb3ZlKCBpbnN0LnNldHRpbmdzLCBzZXR0aW5ncyApO1xuXG5cdFx0XHQvLyByZWZvcm1hdCB0aGUgb2xkIG1pbkRhdGUvbWF4RGF0ZSB2YWx1ZXMgaWYgZGF0ZUZvcm1hdCBjaGFuZ2VzIGFuZCBhIG5ldyBtaW5EYXRlL21heERhdGUgaXNuJ3QgcHJvdmlkZWRcblx0XHRcdGlmICggbWluRGF0ZSAhPT0gbnVsbCAmJiBzZXR0aW5ncy5kYXRlRm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgc2V0dGluZ3MubWluRGF0ZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRpbnN0LnNldHRpbmdzLm1pbkRhdGUgPSB0aGlzLl9mb3JtYXREYXRlKCBpbnN0LCBtaW5EYXRlICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG1heERhdGUgIT09IG51bGwgJiYgc2V0dGluZ3MuZGF0ZUZvcm1hdCAhPT0gdW5kZWZpbmVkICYmIHNldHRpbmdzLm1heERhdGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0aW5zdC5zZXR0aW5ncy5tYXhEYXRlID0gdGhpcy5fZm9ybWF0RGF0ZSggaW5zdCwgbWF4RGF0ZSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBcImRpc2FibGVkXCIgaW4gc2V0dGluZ3MgKSB7XG5cdFx0XHRcdGlmICggc2V0dGluZ3MuZGlzYWJsZWQgKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGlzYWJsZURhdGVwaWNrZXIoIHRhcmdldCApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX2VuYWJsZURhdGVwaWNrZXIoIHRhcmdldCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9hdHRhY2htZW50cyggJCggdGFyZ2V0ICksIGluc3QgKTtcblx0XHRcdHRoaXMuX2F1dG9TaXplKCBpbnN0ICk7XG5cdFx0XHR0aGlzLl9zZXREYXRlKCBpbnN0LCBkYXRlICk7XG5cdFx0XHR0aGlzLl91cGRhdGVBbHRlcm5hdGUoIGluc3QgKTtcblx0XHRcdHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoIGluc3QgKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gQ2hhbmdlIG1ldGhvZCBkZXByZWNhdGVkXG5cdF9jaGFuZ2VEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0LCBuYW1lLCB2YWx1ZSApIHtcblx0XHR0aGlzLl9vcHRpb25EYXRlcGlja2VyKCB0YXJnZXQsIG5hbWUsIHZhbHVlICk7XG5cdH0sXG5cblx0LyogUmVkcmF3IHRoZSBkYXRlIHBpY2tlciBhdHRhY2hlZCB0byBhbiBpbnB1dCBmaWVsZCBvciBkaXZpc2lvbi5cblx0ICogQHBhcmFtICB0YXJnZXQgIGVsZW1lbnQgLSB0aGUgdGFyZ2V0IGlucHV0IGZpZWxkIG9yIGRpdmlzaW9uIG9yIHNwYW5cblx0ICovXG5cdF9yZWZyZXNoRGF0ZXBpY2tlcjogZnVuY3Rpb24oIHRhcmdldCApIHtcblx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoIHRhcmdldCApO1xuXHRcdGlmICggaW5zdCApIHtcblx0XHRcdHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoIGluc3QgKTtcblx0XHR9XG5cdH0sXG5cblx0LyogU2V0IHRoZSBkYXRlcyBmb3IgYSBqUXVlcnkgc2VsZWN0aW9uLlxuXHQgKiBAcGFyYW0gIHRhcmdldCBlbGVtZW50IC0gdGhlIHRhcmdldCBpbnB1dCBmaWVsZCBvciBkaXZpc2lvbiBvciBzcGFuXG5cdCAqIEBwYXJhbSAgZGF0ZVx0RGF0ZSAtIHRoZSBuZXcgZGF0ZVxuXHQgKi9cblx0X3NldERhdGVEYXRlcGlja2VyOiBmdW5jdGlvbiggdGFyZ2V0LCBkYXRlICkge1xuXHRcdHZhciBpbnN0ID0gdGhpcy5fZ2V0SW5zdCggdGFyZ2V0ICk7XG5cdFx0aWYgKCBpbnN0ICkge1xuXHRcdFx0dGhpcy5fc2V0RGF0ZSggaW5zdCwgZGF0ZSApO1xuXHRcdFx0dGhpcy5fdXBkYXRlRGF0ZXBpY2tlciggaW5zdCApO1xuXHRcdFx0dGhpcy5fdXBkYXRlQWx0ZXJuYXRlKCBpbnN0ICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIEdldCB0aGUgZGF0ZShzKSBmb3IgdGhlIGZpcnN0IGVudHJ5IGluIGEgalF1ZXJ5IHNlbGVjdGlvbi5cblx0ICogQHBhcmFtICB0YXJnZXQgZWxlbWVudCAtIHRoZSB0YXJnZXQgaW5wdXQgZmllbGQgb3IgZGl2aXNpb24gb3Igc3BhblxuXHQgKiBAcGFyYW0gIG5vRGVmYXVsdCBib29sZWFuIC0gdHJ1ZSBpZiBubyBkZWZhdWx0IGRhdGUgaXMgdG8gYmUgdXNlZFxuXHQgKiBAcmV0dXJuIERhdGUgLSB0aGUgY3VycmVudCBkYXRlXG5cdCAqL1xuXHRfZ2V0RGF0ZURhdGVwaWNrZXI6IGZ1bmN0aW9uKCB0YXJnZXQsIG5vRGVmYXVsdCApIHtcblx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoIHRhcmdldCApO1xuXHRcdGlmICggaW5zdCAmJiAhaW5zdC5pbmxpbmUgKSB7XG5cdFx0XHR0aGlzLl9zZXREYXRlRnJvbUZpZWxkKCBpbnN0LCBub0RlZmF1bHQgKTtcblx0XHR9XG5cdFx0cmV0dXJuICggaW5zdCA/IHRoaXMuX2dldERhdGUoIGluc3QgKSA6IG51bGwgKTtcblx0fSxcblxuXHQvKiBIYW5kbGUga2V5c3Ryb2tlcy4gKi9cblx0X2RvS2V5RG93bjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBvblNlbGVjdCwgZGF0ZVN0ciwgc2VsLFxuXHRcdFx0aW5zdCA9ICQuZGF0ZXBpY2tlci5fZ2V0SW5zdCggZXZlbnQudGFyZ2V0ICksXG5cdFx0XHRoYW5kbGVkID0gdHJ1ZSxcblx0XHRcdGlzUlRMID0gaW5zdC5kcERpdi5pcyggXCIudWktZGF0ZXBpY2tlci1ydGxcIiApO1xuXG5cdFx0aW5zdC5fa2V5RXZlbnQgPSB0cnVlO1xuXHRcdGlmICggJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyApIHtcblx0XHRcdHN3aXRjaCAoIGV2ZW50LmtleUNvZGUgKSB7XG5cdFx0XHRcdGNhc2UgOTogJC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpO1xuXHRcdFx0XHRcdFx0aGFuZGxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0YnJlYWs7IC8vIGhpZGUgb24gdGFiIG91dFxuXHRcdFx0XHRjYXNlIDEzOiBzZWwgPSAkKCBcInRkLlwiICsgJC5kYXRlcGlja2VyLl9kYXlPdmVyQ2xhc3MgKyBcIjpub3QoLlwiICtcblx0XHRcdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fY3VycmVudENsYXNzICsgXCIpXCIsIGluc3QuZHBEaXYgKTtcblx0XHRcdFx0XHRcdGlmICggc2VsWyAwIF0gKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fc2VsZWN0RGF5KCBldmVudC50YXJnZXQsIGluc3Quc2VsZWN0ZWRNb250aCwgaW5zdC5zZWxlY3RlZFllYXIsIHNlbFsgMCBdICk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdG9uU2VsZWN0ID0gJC5kYXRlcGlja2VyLl9nZXQoIGluc3QsIFwib25TZWxlY3RcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCBvblNlbGVjdCApIHtcblx0XHRcdFx0XHRcdFx0ZGF0ZVN0ciA9ICQuZGF0ZXBpY2tlci5fZm9ybWF0RGF0ZSggaW5zdCApO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRyaWdnZXIgY3VzdG9tIGNhbGxiYWNrXG5cdFx0XHRcdFx0XHRcdG9uU2VsZWN0LmFwcGx5KCAoIGluc3QuaW5wdXQgPyBpbnN0LmlucHV0WyAwIF0gOiBudWxsICksIFsgZGF0ZVN0ciwgaW5zdCBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gZG9uJ3Qgc3VibWl0IHRoZSBmb3JtXG5cdFx0XHRcdGNhc2UgMjc6ICQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTtcblx0XHRcdFx0XHRcdGJyZWFrOyAvLyBoaWRlIG9uIGVzY2FwZVxuXHRcdFx0XHRjYXNlIDMzOiAkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoIGV2ZW50LnRhcmdldCwgKCBldmVudC5jdHJsS2V5ID9cblx0XHRcdFx0XHRcdFx0LSQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBCaWdNb250aHNcIiApIDpcblx0XHRcdFx0XHRcdFx0LSQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBNb250aHNcIiApICksIFwiTVwiICk7XG5cdFx0XHRcdFx0XHRicmVhazsgLy8gcHJldmlvdXMgbW9udGgveWVhciBvbiBwYWdlIHVwLysgY3RybFxuXHRcdFx0XHRjYXNlIDM0OiAkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoIGV2ZW50LnRhcmdldCwgKCBldmVudC5jdHJsS2V5ID9cblx0XHRcdFx0XHRcdFx0KyQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBCaWdNb250aHNcIiApIDpcblx0XHRcdFx0XHRcdFx0KyQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBNb250aHNcIiApICksIFwiTVwiICk7XG5cdFx0XHRcdFx0XHRicmVhazsgLy8gbmV4dCBtb250aC95ZWFyIG9uIHBhZ2UgZG93bi8rIGN0cmxcblx0XHRcdFx0Y2FzZSAzNTogaWYgKCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fY2xlYXJEYXRlKCBldmVudC50YXJnZXQgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGhhbmRsZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cdFx0XHRcdFx0XHRicmVhazsgLy8gY2xlYXIgb24gY3RybCBvciBjb21tYW5kICtlbmRcblx0XHRcdFx0Y2FzZSAzNjogaWYgKCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fZ290b1RvZGF5KCBldmVudC50YXJnZXQgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGhhbmRsZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cdFx0XHRcdFx0XHRicmVhazsgLy8gY3VycmVudCBvbiBjdHJsIG9yIGNvbW1hbmQgK2hvbWVcblx0XHRcdFx0Y2FzZSAzNzogaWYgKCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZSggZXZlbnQudGFyZ2V0LCAoIGlzUlRMID8gKzEgOiAtMSApLCBcIkRcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aGFuZGxlZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcblxuXHRcdFx0XHRcdFx0Ly8gLTEgZGF5IG9uIGN0cmwgb3IgY29tbWFuZCArbGVmdFxuXHRcdFx0XHRcdFx0aWYgKCBldmVudC5vcmlnaW5hbEV2ZW50LmFsdEtleSApIHtcblx0XHRcdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKCBldmVudC50YXJnZXQsICggZXZlbnQuY3RybEtleSA/XG5cdFx0XHRcdFx0XHRcdFx0LSQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBCaWdNb250aHNcIiApIDpcblx0XHRcdFx0XHRcdFx0XHQtJC5kYXRlcGlja2VyLl9nZXQoIGluc3QsIFwic3RlcE1vbnRoc1wiICkgKSwgXCJNXCIgKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gbmV4dCBtb250aC95ZWFyIG9uIGFsdCArbGVmdCBvbiBNYWNcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDM4OiBpZiAoIGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSApIHtcblx0XHRcdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKCBldmVudC50YXJnZXQsIC03LCBcIkRcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aGFuZGxlZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcblx0XHRcdFx0XHRcdGJyZWFrOyAvLyAtMSB3ZWVrIG9uIGN0cmwgb3IgY29tbWFuZCArdXBcblx0XHRcdFx0Y2FzZSAzOTogaWYgKCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZSggZXZlbnQudGFyZ2V0LCAoIGlzUlRMID8gLTEgOiArMSApLCBcIkRcIiApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aGFuZGxlZCA9IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTtcblxuXHRcdFx0XHRcdFx0Ly8gKzEgZGF5IG9uIGN0cmwgb3IgY29tbWFuZCArcmlnaHRcblx0XHRcdFx0XHRcdGlmICggZXZlbnQub3JpZ2luYWxFdmVudC5hbHRLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZSggZXZlbnQudGFyZ2V0LCAoIGV2ZW50LmN0cmxLZXkgP1xuXHRcdFx0XHRcdFx0XHRcdCskLmRhdGVwaWNrZXIuX2dldCggaW5zdCwgXCJzdGVwQmlnTW9udGhzXCIgKSA6XG5cdFx0XHRcdFx0XHRcdFx0KyQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInN0ZXBNb250aHNcIiApICksIFwiTVwiICk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIG5leHQgbW9udGgveWVhciBvbiBhbHQgK3JpZ2h0XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSA0MDogaWYgKCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgKSB7XG5cdFx0XHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZSggZXZlbnQudGFyZ2V0LCArNywgXCJEXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGhhbmRsZWQgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cdFx0XHRcdFx0XHRicmVhazsgLy8gKzEgd2VlayBvbiBjdHJsIG9yIGNvbW1hbmQgK2Rvd25cblx0XHRcdFx0ZGVmYXVsdDogaGFuZGxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoIGV2ZW50LmtleUNvZGUgPT09IDM2ICYmIGV2ZW50LmN0cmxLZXkgKSB7IC8vIGRpc3BsYXkgdGhlIGRhdGUgcGlja2VyIG9uIGN0cmwraG9tZVxuXHRcdFx0JC5kYXRlcGlja2VyLl9zaG93RGF0ZXBpY2tlciggdGhpcyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRoYW5kbGVkID0gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCBoYW5kbGVkICkge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH1cblx0fSxcblxuXHQvKiBGaWx0ZXIgZW50ZXJlZCBjaGFyYWN0ZXJzIC0gYmFzZWQgb24gZGF0ZSBmb3JtYXQuICovXG5cdF9kb0tleVByZXNzOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGNoYXJzLCBjaHIsXG5cdFx0XHRpbnN0ID0gJC5kYXRlcGlja2VyLl9nZXRJbnN0KCBldmVudC50YXJnZXQgKTtcblxuXHRcdGlmICggJC5kYXRlcGlja2VyLl9nZXQoIGluc3QsIFwiY29uc3RyYWluSW5wdXRcIiApICkge1xuXHRcdFx0Y2hhcnMgPSAkLmRhdGVwaWNrZXIuX3Bvc3NpYmxlQ2hhcnMoICQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcImRhdGVGb3JtYXRcIiApICk7XG5cdFx0XHRjaHIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCBldmVudC5jaGFyQ29kZSA9PSBudWxsID8gZXZlbnQua2V5Q29kZSA6IGV2ZW50LmNoYXJDb2RlICk7XG5cdFx0XHRyZXR1cm4gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8ICggY2hyIDwgXCIgXCIgfHwgIWNoYXJzIHx8IGNoYXJzLmluZGV4T2YoIGNociApID4gLTEgKTtcblx0XHR9XG5cdH0sXG5cblx0LyogU3luY2hyb25pc2UgbWFudWFsIGVudHJ5IGFuZCBmaWVsZC9hbHRlcm5hdGUgZmllbGQuICovXG5cdF9kb0tleVVwOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGRhdGUsXG5cdFx0XHRpbnN0ID0gJC5kYXRlcGlja2VyLl9nZXRJbnN0KCBldmVudC50YXJnZXQgKTtcblxuXHRcdGlmICggaW5zdC5pbnB1dC52YWwoKSAhPT0gaW5zdC5sYXN0VmFsICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0ZSA9ICQuZGF0ZXBpY2tlci5wYXJzZURhdGUoICQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcImRhdGVGb3JtYXRcIiApLFxuXHRcdFx0XHRcdCggaW5zdC5pbnB1dCA/IGluc3QuaW5wdXQudmFsKCkgOiBudWxsICksXG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9nZXRGb3JtYXRDb25maWcoIGluc3QgKSApO1xuXG5cdFx0XHRcdGlmICggZGF0ZSApIHsgLy8gb25seSBpZiB2YWxpZFxuXHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fc2V0RGF0ZUZyb21GaWVsZCggaW5zdCApO1xuXHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fdXBkYXRlQWx0ZXJuYXRlKCBpbnN0ICk7XG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl91cGRhdGVEYXRlcGlja2VyKCBpbnN0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNhdGNoICggZXJyICkge1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHQvKiBQb3AtdXAgdGhlIGRhdGUgcGlja2VyIGZvciBhIGdpdmVuIGlucHV0IGZpZWxkLlxuXHQgKiBJZiBmYWxzZSByZXR1cm5lZCBmcm9tIGJlZm9yZVNob3cgZXZlbnQgaGFuZGxlciBkbyBub3Qgc2hvdy5cblx0ICogQHBhcmFtICBpbnB1dCAgZWxlbWVudCAtIHRoZSBpbnB1dCBmaWVsZCBhdHRhY2hlZCB0byB0aGUgZGF0ZSBwaWNrZXIgb3Jcblx0ICpcdFx0XHRcdFx0ZXZlbnQgLSBpZiB0cmlnZ2VyZWQgYnkgZm9jdXNcblx0ICovXG5cdF9zaG93RGF0ZXBpY2tlcjogZnVuY3Rpb24oIGlucHV0ICkge1xuXHRcdGlucHV0ID0gaW5wdXQudGFyZ2V0IHx8IGlucHV0O1xuXHRcdGlmICggaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJpbnB1dFwiICkgeyAvLyBmaW5kIGZyb20gYnV0dG9uL2ltYWdlIHRyaWdnZXJcblx0XHRcdGlucHV0ID0gJCggXCJpbnB1dFwiLCBpbnB1dC5wYXJlbnROb2RlIClbIDAgXTtcblx0XHR9XG5cblx0XHRpZiAoICQuZGF0ZXBpY2tlci5faXNEaXNhYmxlZERhdGVwaWNrZXIoIGlucHV0ICkgfHwgJC5kYXRlcGlja2VyLl9sYXN0SW5wdXQgPT09IGlucHV0ICkgeyAvLyBhbHJlYWR5IGhlcmVcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgaW5zdCwgYmVmb3JlU2hvdywgYmVmb3JlU2hvd1NldHRpbmdzLCBpc0ZpeGVkLFxuXHRcdFx0b2Zmc2V0LCBzaG93QW5pbSwgZHVyYXRpb247XG5cblx0XHRpbnN0ID0gJC5kYXRlcGlja2VyLl9nZXRJbnN0KCBpbnB1dCApO1xuXHRcdGlmICggJC5kYXRlcGlja2VyLl9jdXJJbnN0ICYmICQuZGF0ZXBpY2tlci5fY3VySW5zdCAhPT0gaW5zdCApIHtcblx0XHRcdCQuZGF0ZXBpY2tlci5fY3VySW5zdC5kcERpdi5zdG9wKCB0cnVlLCB0cnVlICk7XG5cdFx0XHRpZiAoIGluc3QgJiYgJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyApIHtcblx0XHRcdFx0JC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlciggJC5kYXRlcGlja2VyLl9jdXJJbnN0LmlucHV0WyAwIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRiZWZvcmVTaG93ID0gJC5kYXRlcGlja2VyLl9nZXQoIGluc3QsIFwiYmVmb3JlU2hvd1wiICk7XG5cdFx0YmVmb3JlU2hvd1NldHRpbmdzID0gYmVmb3JlU2hvdyA/IGJlZm9yZVNob3cuYXBwbHkoIGlucHV0LCBbIGlucHV0LCBpbnN0IF0gKSA6IHt9O1xuXHRcdGlmICggYmVmb3JlU2hvd1NldHRpbmdzID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZGF0ZXBpY2tlcl9leHRlbmRSZW1vdmUoIGluc3Quc2V0dGluZ3MsIGJlZm9yZVNob3dTZXR0aW5ncyApO1xuXG5cdFx0aW5zdC5sYXN0VmFsID0gbnVsbDtcblx0XHQkLmRhdGVwaWNrZXIuX2xhc3RJbnB1dCA9IGlucHV0O1xuXHRcdCQuZGF0ZXBpY2tlci5fc2V0RGF0ZUZyb21GaWVsZCggaW5zdCApO1xuXG5cdFx0aWYgKCAkLmRhdGVwaWNrZXIuX2luRGlhbG9nICkgeyAvLyBoaWRlIGN1cnNvclxuXHRcdFx0aW5wdXQudmFsdWUgPSBcIlwiO1xuXHRcdH1cblx0XHRpZiAoICEkLmRhdGVwaWNrZXIuX3BvcyApIHsgLy8gcG9zaXRpb24gYmVsb3cgaW5wdXRcblx0XHRcdCQuZGF0ZXBpY2tlci5fcG9zID0gJC5kYXRlcGlja2VyLl9maW5kUG9zKCBpbnB1dCApO1xuXHRcdFx0JC5kYXRlcGlja2VyLl9wb3NbIDEgXSArPSBpbnB1dC5vZmZzZXRIZWlnaHQ7IC8vIGFkZCB0aGUgaGVpZ2h0XG5cdFx0fVxuXG5cdFx0aXNGaXhlZCA9IGZhbHNlO1xuXHRcdCQoIGlucHV0ICkucGFyZW50cygpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0aXNGaXhlZCB8PSAkKCB0aGlzICkuY3NzKCBcInBvc2l0aW9uXCIgKSA9PT0gXCJmaXhlZFwiO1xuXHRcdFx0cmV0dXJuICFpc0ZpeGVkO1xuXHRcdH0gKTtcblxuXHRcdG9mZnNldCA9IHsgbGVmdDogJC5kYXRlcGlja2VyLl9wb3NbIDAgXSwgdG9wOiAkLmRhdGVwaWNrZXIuX3Bvc1sgMSBdIH07XG5cdFx0JC5kYXRlcGlja2VyLl9wb3MgPSBudWxsO1xuXG5cdFx0Ly90byBhdm9pZCBmbGFzaGVzIG9uIEZpcmVmb3hcblx0XHRpbnN0LmRwRGl2LmVtcHR5KCk7XG5cblx0XHQvLyBkZXRlcm1pbmUgc2l6aW5nIG9mZnNjcmVlblxuXHRcdGluc3QuZHBEaXYuY3NzKCB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiwgdG9wOiBcIi0xMDAwcHhcIiB9ICk7XG5cdFx0JC5kYXRlcGlja2VyLl91cGRhdGVEYXRlcGlja2VyKCBpbnN0ICk7XG5cblx0XHQvLyBmaXggd2lkdGggZm9yIGR5bmFtaWMgbnVtYmVyIG9mIGRhdGUgcGlja2Vyc1xuXHRcdC8vIGFuZCBhZGp1c3QgcG9zaXRpb24gYmVmb3JlIHNob3dpbmdcblx0XHRvZmZzZXQgPSAkLmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KCBpbnN0LCBvZmZzZXQsIGlzRml4ZWQgKTtcblx0XHRpbnN0LmRwRGl2LmNzcyggeyBwb3NpdGlvbjogKCAkLmRhdGVwaWNrZXIuX2luRGlhbG9nICYmICQuYmxvY2tVSSA/XG5cdFx0XHRcInN0YXRpY1wiIDogKCBpc0ZpeGVkID8gXCJmaXhlZFwiIDogXCJhYnNvbHV0ZVwiICkgKSwgZGlzcGxheTogXCJub25lXCIsXG5cdFx0XHRsZWZ0OiBvZmZzZXQubGVmdCArIFwicHhcIiwgdG9wOiBvZmZzZXQudG9wICsgXCJweFwiIH0gKTtcblxuXHRcdGlmICggIWluc3QuaW5saW5lICkge1xuXHRcdFx0c2hvd0FuaW0gPSAkLmRhdGVwaWNrZXIuX2dldCggaW5zdCwgXCJzaG93QW5pbVwiICk7XG5cdFx0XHRkdXJhdGlvbiA9ICQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcImR1cmF0aW9uXCIgKTtcblx0XHRcdGluc3QuZHBEaXYuY3NzKCBcInotaW5kZXhcIiwgZGF0ZXBpY2tlcl9nZXRaaW5kZXgoICQoIGlucHV0ICkgKSArIDEgKTtcblx0XHRcdCQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcgPSB0cnVlO1xuXG5cdFx0XHRpZiAoICQuZWZmZWN0cyAmJiAkLmVmZmVjdHMuZWZmZWN0WyBzaG93QW5pbSBdICkge1xuXHRcdFx0XHRpbnN0LmRwRGl2LnNob3coIHNob3dBbmltLCAkLmRhdGVwaWNrZXIuX2dldCggaW5zdCwgXCJzaG93T3B0aW9uc1wiICksIGR1cmF0aW9uICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbnN0LmRwRGl2WyBzaG93QW5pbSB8fCBcInNob3dcIiBdKCBzaG93QW5pbSA/IGR1cmF0aW9uIDogbnVsbCApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoICQuZGF0ZXBpY2tlci5fc2hvdWxkRm9jdXNJbnB1dCggaW5zdCApICkge1xuXHRcdFx0XHRpbnN0LmlucHV0LnRyaWdnZXIoIFwiZm9jdXNcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQkLmRhdGVwaWNrZXIuX2N1ckluc3QgPSBpbnN0O1xuXHRcdH1cblx0fSxcblxuXHQvKiBHZW5lcmF0ZSB0aGUgZGF0ZSBwaWNrZXIgY29udGVudC4gKi9cblx0X3VwZGF0ZURhdGVwaWNrZXI6IGZ1bmN0aW9uKCBpbnN0ICkge1xuXHRcdHRoaXMubWF4Um93cyA9IDQ7IC8vUmVzZXQgdGhlIG1heCBudW1iZXIgb2Ygcm93cyBiZWluZyBkaXNwbGF5ZWQgKHNlZSAjNzA0Mylcblx0XHRkYXRlcGlja2VyX2luc3RBY3RpdmUgPSBpbnN0OyAvLyBmb3IgZGVsZWdhdGUgaG92ZXIgZXZlbnRzXG5cdFx0aW5zdC5kcERpdi5lbXB0eSgpLmFwcGVuZCggdGhpcy5fZ2VuZXJhdGVIVE1MKCBpbnN0ICkgKTtcblx0XHR0aGlzLl9hdHRhY2hIYW5kbGVycyggaW5zdCApO1xuXG5cdFx0dmFyIG9yaWd5ZWFyc2h0bWwsXG5cdFx0XHRudW1Nb250aHMgPSB0aGlzLl9nZXROdW1iZXJPZk1vbnRocyggaW5zdCApLFxuXHRcdFx0Y29scyA9IG51bU1vbnRoc1sgMSBdLFxuXHRcdFx0d2lkdGggPSAxNyxcblx0XHRcdGFjdGl2ZUNlbGwgPSBpbnN0LmRwRGl2LmZpbmQoIFwiLlwiICsgdGhpcy5fZGF5T3ZlckNsYXNzICsgXCIgYVwiICk7XG5cblx0XHRpZiAoIGFjdGl2ZUNlbGwubGVuZ3RoID4gMCApIHtcblx0XHRcdGRhdGVwaWNrZXJfaGFuZGxlTW91c2VvdmVyLmFwcGx5KCBhY3RpdmVDZWxsLmdldCggMCApICk7XG5cdFx0fVxuXG5cdFx0aW5zdC5kcERpdi5yZW1vdmVDbGFzcyggXCJ1aS1kYXRlcGlja2VyLW11bHRpLTIgdWktZGF0ZXBpY2tlci1tdWx0aS0zIHVpLWRhdGVwaWNrZXItbXVsdGktNFwiICkud2lkdGgoIFwiXCIgKTtcblx0XHRpZiAoIGNvbHMgPiAxICkge1xuXHRcdFx0aW5zdC5kcERpdi5hZGRDbGFzcyggXCJ1aS1kYXRlcGlja2VyLW11bHRpLVwiICsgY29scyApLmNzcyggXCJ3aWR0aFwiLCAoIHdpZHRoICogY29scyApICsgXCJlbVwiICk7XG5cdFx0fVxuXHRcdGluc3QuZHBEaXZbICggbnVtTW9udGhzWyAwIF0gIT09IDEgfHwgbnVtTW9udGhzWyAxIF0gIT09IDEgPyBcImFkZFwiIDogXCJyZW1vdmVcIiApICtcblx0XHRcdFwiQ2xhc3NcIiBdKCBcInVpLWRhdGVwaWNrZXItbXVsdGlcIiApO1xuXHRcdGluc3QuZHBEaXZbICggdGhpcy5fZ2V0KCBpbnN0LCBcImlzUlRMXCIgKSA/IFwiYWRkXCIgOiBcInJlbW92ZVwiICkgK1xuXHRcdFx0XCJDbGFzc1wiIF0oIFwidWktZGF0ZXBpY2tlci1ydGxcIiApO1xuXG5cdFx0aWYgKCBpbnN0ID09PSAkLmRhdGVwaWNrZXIuX2N1ckluc3QgJiYgJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyAmJiAkLmRhdGVwaWNrZXIuX3Nob3VsZEZvY3VzSW5wdXQoIGluc3QgKSApIHtcblx0XHRcdGluc3QuaW5wdXQudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0fVxuXG5cdFx0Ly8gRGVmZmVyZWQgcmVuZGVyIG9mIHRoZSB5ZWFycyBzZWxlY3QgKHRvIGF2b2lkIGZsYXNoZXMgb24gRmlyZWZveClcblx0XHRpZiAoIGluc3QueWVhcnNodG1sICkge1xuXHRcdFx0b3JpZ3llYXJzaHRtbCA9IGluc3QueWVhcnNodG1sO1xuXHRcdFx0c2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly9hc3N1cmUgdGhhdCBpbnN0LnllYXJzaHRtbCBkaWRuJ3QgY2hhbmdlLlxuXHRcdFx0XHRpZiAoIG9yaWd5ZWFyc2h0bWwgPT09IGluc3QueWVhcnNodG1sICYmIGluc3QueWVhcnNodG1sICkge1xuXHRcdFx0XHRcdGluc3QuZHBEaXYuZmluZCggXCJzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFyOmZpcnN0XCIgKS5yZXBsYWNlV2l0aCggaW5zdC55ZWFyc2h0bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvcmlneWVhcnNodG1sID0gaW5zdC55ZWFyc2h0bWwgPSBudWxsO1xuXHRcdFx0fSwgMCApO1xuXHRcdH1cblx0fSxcblxuXHQvLyAjNjY5NCAtIGRvbid0IGZvY3VzIHRoZSBpbnB1dCBpZiBpdCdzIGFscmVhZHkgZm9jdXNlZFxuXHQvLyB0aGlzIGJyZWFrcyB0aGUgY2hhbmdlIGV2ZW50IGluIElFXG5cdC8vIFN1cHBvcnQ6IElFIGFuZCBqUXVlcnkgPDEuOVxuXHRfc2hvdWxkRm9jdXNJbnB1dDogZnVuY3Rpb24oIGluc3QgKSB7XG5cdFx0cmV0dXJuIGluc3QuaW5wdXQgJiYgaW5zdC5pbnB1dC5pcyggXCI6dmlzaWJsZVwiICkgJiYgIWluc3QuaW5wdXQuaXMoIFwiOmRpc2FibGVkXCIgKSAmJiAhaW5zdC5pbnB1dC5pcyggXCI6Zm9jdXNcIiApO1xuXHR9LFxuXG5cdC8qIENoZWNrIHBvc2l0aW9uaW5nIHRvIHJlbWFpbiBvbiBzY3JlZW4uICovXG5cdF9jaGVja09mZnNldDogZnVuY3Rpb24oIGluc3QsIG9mZnNldCwgaXNGaXhlZCApIHtcblx0XHR2YXIgZHBXaWR0aCA9IGluc3QuZHBEaXYub3V0ZXJXaWR0aCgpLFxuXHRcdFx0ZHBIZWlnaHQgPSBpbnN0LmRwRGl2Lm91dGVySGVpZ2h0KCksXG5cdFx0XHRpbnB1dFdpZHRoID0gaW5zdC5pbnB1dCA/IGluc3QuaW5wdXQub3V0ZXJXaWR0aCgpIDogMCxcblx0XHRcdGlucHV0SGVpZ2h0ID0gaW5zdC5pbnB1dCA/IGluc3QuaW5wdXQub3V0ZXJIZWlnaHQoKSA6IDAsXG5cdFx0XHR2aWV3V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggKyAoIGlzRml4ZWQgPyAwIDogJCggZG9jdW1lbnQgKS5zY3JvbGxMZWZ0KCkgKSxcblx0XHRcdHZpZXdIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ICsgKCBpc0ZpeGVkID8gMCA6ICQoIGRvY3VtZW50ICkuc2Nyb2xsVG9wKCkgKTtcblxuXHRcdG9mZnNldC5sZWZ0IC09ICggdGhpcy5fZ2V0KCBpbnN0LCBcImlzUlRMXCIgKSA/ICggZHBXaWR0aCAtIGlucHV0V2lkdGggKSA6IDAgKTtcblx0XHRvZmZzZXQubGVmdCAtPSAoIGlzRml4ZWQgJiYgb2Zmc2V0LmxlZnQgPT09IGluc3QuaW5wdXQub2Zmc2V0KCkubGVmdCApID8gJCggZG9jdW1lbnQgKS5zY3JvbGxMZWZ0KCkgOiAwO1xuXHRcdG9mZnNldC50b3AgLT0gKCBpc0ZpeGVkICYmIG9mZnNldC50b3AgPT09ICggaW5zdC5pbnB1dC5vZmZzZXQoKS50b3AgKyBpbnB1dEhlaWdodCApICkgPyAkKCBkb2N1bWVudCApLnNjcm9sbFRvcCgpIDogMDtcblxuXHRcdC8vIE5vdyBjaGVjayBpZiBkYXRlcGlja2VyIGlzIHNob3dpbmcgb3V0c2lkZSB3aW5kb3cgdmlld3BvcnQgLSBtb3ZlIHRvIGEgYmV0dGVyIHBsYWNlIGlmIHNvLlxuXHRcdG9mZnNldC5sZWZ0IC09IE1hdGgubWluKCBvZmZzZXQubGVmdCwgKCBvZmZzZXQubGVmdCArIGRwV2lkdGggPiB2aWV3V2lkdGggJiYgdmlld1dpZHRoID4gZHBXaWR0aCApID9cblx0XHRcdE1hdGguYWJzKCBvZmZzZXQubGVmdCArIGRwV2lkdGggLSB2aWV3V2lkdGggKSA6IDAgKTtcblx0XHRvZmZzZXQudG9wIC09IE1hdGgubWluKCBvZmZzZXQudG9wLCAoIG9mZnNldC50b3AgKyBkcEhlaWdodCA+IHZpZXdIZWlnaHQgJiYgdmlld0hlaWdodCA+IGRwSGVpZ2h0ICkgP1xuXHRcdFx0TWF0aC5hYnMoIGRwSGVpZ2h0ICsgaW5wdXRIZWlnaHQgKSA6IDAgKTtcblxuXHRcdHJldHVybiBvZmZzZXQ7XG5cdH0sXG5cblx0LyogRmluZCBhbiBvYmplY3QncyBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuLiAqL1xuXHRfZmluZFBvczogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgcG9zaXRpb24sXG5cdFx0XHRpbnN0ID0gdGhpcy5fZ2V0SW5zdCggb2JqICksXG5cdFx0XHRpc1JUTCA9IHRoaXMuX2dldCggaW5zdCwgXCJpc1JUTFwiICk7XG5cblx0XHR3aGlsZSAoIG9iaiAmJiAoIG9iai50eXBlID09PSBcImhpZGRlblwiIHx8IG9iai5ub2RlVHlwZSAhPT0gMSB8fCAkLmV4cHIuZmlsdGVycy5oaWRkZW4oIG9iaiApICkgKSB7XG5cdFx0XHRvYmogPSBvYmpbIGlzUlRMID8gXCJwcmV2aW91c1NpYmxpbmdcIiA6IFwibmV4dFNpYmxpbmdcIiBdO1xuXHRcdH1cblxuXHRcdHBvc2l0aW9uID0gJCggb2JqICkub2Zmc2V0KCk7XG5cdFx0cmV0dXJuIFsgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wIF07XG5cdH0sXG5cblx0LyogSGlkZSB0aGUgZGF0ZSBwaWNrZXIgZnJvbSB2aWV3LlxuXHQgKiBAcGFyYW0gIGlucHV0ICBlbGVtZW50IC0gdGhlIGlucHV0IGZpZWxkIGF0dGFjaGVkIHRvIHRoZSBkYXRlIHBpY2tlclxuXHQgKi9cblx0X2hpZGVEYXRlcGlja2VyOiBmdW5jdGlvbiggaW5wdXQgKSB7XG5cdFx0dmFyIHNob3dBbmltLCBkdXJhdGlvbiwgcG9zdFByb2Nlc3MsIG9uQ2xvc2UsXG5cdFx0XHRpbnN0ID0gdGhpcy5fY3VySW5zdDtcblxuXHRcdGlmICggIWluc3QgfHwgKCBpbnB1dCAmJiBpbnN0ICE9PSAkLmRhdGEoIGlucHV0LCBcImRhdGVwaWNrZXJcIiApICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLl9kYXRlcGlja2VyU2hvd2luZyApIHtcblx0XHRcdHNob3dBbmltID0gdGhpcy5fZ2V0KCBpbnN0LCBcInNob3dBbmltXCIgKTtcblx0XHRcdGR1cmF0aW9uID0gdGhpcy5fZ2V0KCBpbnN0LCBcImR1cmF0aW9uXCIgKTtcblx0XHRcdHBvc3RQcm9jZXNzID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdCQuZGF0ZXBpY2tlci5fdGlkeURpYWxvZyggaW5zdCApO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gREVQUkVDQVRFRDogYWZ0ZXIgQkMgZm9yIDEuOC54ICQuZWZmZWN0c1sgc2hvd0FuaW0gXSBpcyBub3QgbmVlZGVkXG5cdFx0XHRpZiAoICQuZWZmZWN0cyAmJiAoICQuZWZmZWN0cy5lZmZlY3RbIHNob3dBbmltIF0gfHwgJC5lZmZlY3RzWyBzaG93QW5pbSBdICkgKSB7XG5cdFx0XHRcdGluc3QuZHBEaXYuaGlkZSggc2hvd0FuaW0sICQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcInNob3dPcHRpb25zXCIgKSwgZHVyYXRpb24sIHBvc3RQcm9jZXNzICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbnN0LmRwRGl2WyAoIHNob3dBbmltID09PSBcInNsaWRlRG93blwiID8gXCJzbGlkZVVwXCIgOlxuXHRcdFx0XHRcdCggc2hvd0FuaW0gPT09IFwiZmFkZUluXCIgPyBcImZhZGVPdXRcIiA6IFwiaGlkZVwiICkgKSBdKCAoIHNob3dBbmltID8gZHVyYXRpb24gOiBudWxsICksIHBvc3RQcm9jZXNzICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggIXNob3dBbmltICkge1xuXHRcdFx0XHRwb3N0UHJvY2VzcygpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fZGF0ZXBpY2tlclNob3dpbmcgPSBmYWxzZTtcblxuXHRcdFx0b25DbG9zZSA9IHRoaXMuX2dldCggaW5zdCwgXCJvbkNsb3NlXCIgKTtcblx0XHRcdGlmICggb25DbG9zZSApIHtcblx0XHRcdFx0b25DbG9zZS5hcHBseSggKCBpbnN0LmlucHV0ID8gaW5zdC5pbnB1dFsgMCBdIDogbnVsbCApLCBbICggaW5zdC5pbnB1dCA/IGluc3QuaW5wdXQudmFsKCkgOiBcIlwiICksIGluc3QgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLl9sYXN0SW5wdXQgPSBudWxsO1xuXHRcdFx0aWYgKCB0aGlzLl9pbkRpYWxvZyApIHtcblx0XHRcdFx0dGhpcy5fZGlhbG9nSW5wdXQuY3NzKCB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIGxlZnQ6IFwiMFwiLCB0b3A6IFwiLTEwMHB4XCIgfSApO1xuXHRcdFx0XHRpZiAoICQuYmxvY2tVSSApIHtcblx0XHRcdFx0XHQkLnVuYmxvY2tVSSgpO1xuXHRcdFx0XHRcdCQoIFwiYm9keVwiICkuYXBwZW5kKCB0aGlzLmRwRGl2ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2luRGlhbG9nID0gZmFsc2U7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIFRpZHkgdXAgYWZ0ZXIgYSBkaWFsb2cgZGlzcGxheS4gKi9cblx0X3RpZHlEaWFsb2c6IGZ1bmN0aW9uKCBpbnN0ICkge1xuXHRcdGluc3QuZHBEaXYucmVtb3ZlQ2xhc3MoIHRoaXMuX2RpYWxvZ0NsYXNzICkub2ZmKCBcIi51aS1kYXRlcGlja2VyLWNhbGVuZGFyXCIgKTtcblx0fSxcblxuXHQvKiBDbG9zZSBkYXRlIHBpY2tlciBpZiBjbGlja2VkIGVsc2V3aGVyZS4gKi9cblx0X2NoZWNrRXh0ZXJuYWxDbGljazogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggISQuZGF0ZXBpY2tlci5fY3VySW5zdCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgJHRhcmdldCA9ICQoIGV2ZW50LnRhcmdldCApLFxuXHRcdFx0aW5zdCA9ICQuZGF0ZXBpY2tlci5fZ2V0SW5zdCggJHRhcmdldFsgMCBdICk7XG5cblx0XHRpZiAoICggKCAkdGFyZ2V0WyAwIF0uaWQgIT09ICQuZGF0ZXBpY2tlci5fbWFpbkRpdklkICYmXG5cdFx0XHRcdCR0YXJnZXQucGFyZW50cyggXCIjXCIgKyAkLmRhdGVwaWNrZXIuX21haW5EaXZJZCApLmxlbmd0aCA9PT0gMCAmJlxuXHRcdFx0XHQhJHRhcmdldC5oYXNDbGFzcyggJC5kYXRlcGlja2VyLm1hcmtlckNsYXNzTmFtZSApICYmXG5cdFx0XHRcdCEkdGFyZ2V0LmNsb3Nlc3QoIFwiLlwiICsgJC5kYXRlcGlja2VyLl90cmlnZ2VyQ2xhc3MgKS5sZW5ndGggJiZcblx0XHRcdFx0JC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyAmJiAhKCAkLmRhdGVwaWNrZXIuX2luRGlhbG9nICYmICQuYmxvY2tVSSApICkgKSB8fFxuXHRcdFx0KCAkdGFyZ2V0Lmhhc0NsYXNzKCAkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lICkgJiYgJC5kYXRlcGlja2VyLl9jdXJJbnN0ICE9PSBpbnN0ICkgKSB7XG5cdFx0XHRcdCQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTtcblx0XHR9XG5cdH0sXG5cblx0LyogQWRqdXN0IG9uZSBvZiB0aGUgZGF0ZSBzdWItZmllbGRzLiAqL1xuXHRfYWRqdXN0RGF0ZTogZnVuY3Rpb24oIGlkLCBvZmZzZXQsIHBlcmlvZCApIHtcblx0XHR2YXIgdGFyZ2V0ID0gJCggaWQgKSxcblx0XHRcdGluc3QgPSB0aGlzLl9nZXRJbnN0KCB0YXJnZXRbIDAgXSApO1xuXG5cdFx0aWYgKCB0aGlzLl9pc0Rpc2FibGVkRGF0ZXBpY2tlciggdGFyZ2V0WyAwIF0gKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5fYWRqdXN0SW5zdERhdGUoIGluc3QsIG9mZnNldCArXG5cdFx0XHQoIHBlcmlvZCA9PT0gXCJNXCIgPyB0aGlzLl9nZXQoIGluc3QsIFwic2hvd0N1cnJlbnRBdFBvc1wiICkgOiAwICksIC8vIHVuZG8gcG9zaXRpb25pbmdcblx0XHRcdHBlcmlvZCApO1xuXHRcdHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoIGluc3QgKTtcblx0fSxcblxuXHQvKiBBY3Rpb24gZm9yIGN1cnJlbnQgbGluay4gKi9cblx0X2dvdG9Ub2RheTogZnVuY3Rpb24oIGlkICkge1xuXHRcdHZhciBkYXRlLFxuXHRcdFx0dGFyZ2V0ID0gJCggaWQgKSxcblx0XHRcdGluc3QgPSB0aGlzLl9nZXRJbnN0KCB0YXJnZXRbIDAgXSApO1xuXG5cdFx0aWYgKCB0aGlzLl9nZXQoIGluc3QsIFwiZ290b0N1cnJlbnRcIiApICYmIGluc3QuY3VycmVudERheSApIHtcblx0XHRcdGluc3Quc2VsZWN0ZWREYXkgPSBpbnN0LmN1cnJlbnREYXk7XG5cdFx0XHRpbnN0LmRyYXdNb250aCA9IGluc3Quc2VsZWN0ZWRNb250aCA9IGluc3QuY3VycmVudE1vbnRoO1xuXHRcdFx0aW5zdC5kcmF3WWVhciA9IGluc3Quc2VsZWN0ZWRZZWFyID0gaW5zdC5jdXJyZW50WWVhcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRpbnN0LnNlbGVjdGVkRGF5ID0gZGF0ZS5nZXREYXRlKCk7XG5cdFx0XHRpbnN0LmRyYXdNb250aCA9IGluc3Quc2VsZWN0ZWRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcblx0XHRcdGluc3QuZHJhd1llYXIgPSBpbnN0LnNlbGVjdGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHR9XG5cdFx0dGhpcy5fbm90aWZ5Q2hhbmdlKCBpbnN0ICk7XG5cdFx0dGhpcy5fYWRqdXN0RGF0ZSggdGFyZ2V0ICk7XG5cdH0sXG5cblx0LyogQWN0aW9uIGZvciBzZWxlY3RpbmcgYSBuZXcgbW9udGgveWVhci4gKi9cblx0X3NlbGVjdE1vbnRoWWVhcjogZnVuY3Rpb24oIGlkLCBzZWxlY3QsIHBlcmlvZCApIHtcblx0XHR2YXIgdGFyZ2V0ID0gJCggaWQgKSxcblx0XHRcdGluc3QgPSB0aGlzLl9nZXRJbnN0KCB0YXJnZXRbIDAgXSApO1xuXG5cdFx0aW5zdFsgXCJzZWxlY3RlZFwiICsgKCBwZXJpb2QgPT09IFwiTVwiID8gXCJNb250aFwiIDogXCJZZWFyXCIgKSBdID1cblx0XHRpbnN0WyBcImRyYXdcIiArICggcGVyaW9kID09PSBcIk1cIiA/IFwiTW9udGhcIiA6IFwiWWVhclwiICkgXSA9XG5cdFx0XHRwYXJzZUludCggc2VsZWN0Lm9wdGlvbnNbIHNlbGVjdC5zZWxlY3RlZEluZGV4IF0udmFsdWUsIDEwICk7XG5cblx0XHR0aGlzLl9ub3RpZnlDaGFuZ2UoIGluc3QgKTtcblx0XHR0aGlzLl9hZGp1c3REYXRlKCB0YXJnZXQgKTtcblx0fSxcblxuXHQvKiBBY3Rpb24gZm9yIHNlbGVjdGluZyBhIGRheS4gKi9cblx0X3NlbGVjdERheTogZnVuY3Rpb24oIGlkLCBtb250aCwgeWVhciwgdGQgKSB7XG5cdFx0dmFyIGluc3QsXG5cdFx0XHR0YXJnZXQgPSAkKCBpZCApO1xuXG5cdFx0aWYgKCAkKCB0ZCApLmhhc0NsYXNzKCB0aGlzLl91bnNlbGVjdGFibGVDbGFzcyApIHx8IHRoaXMuX2lzRGlzYWJsZWREYXRlcGlja2VyKCB0YXJnZXRbIDAgXSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGluc3QgPSB0aGlzLl9nZXRJbnN0KCB0YXJnZXRbIDAgXSApO1xuXHRcdGluc3Quc2VsZWN0ZWREYXkgPSBpbnN0LmN1cnJlbnREYXkgPSAkKCBcImFcIiwgdGQgKS5odG1sKCk7XG5cdFx0aW5zdC5zZWxlY3RlZE1vbnRoID0gaW5zdC5jdXJyZW50TW9udGggPSBtb250aDtcblx0XHRpbnN0LnNlbGVjdGVkWWVhciA9IGluc3QuY3VycmVudFllYXIgPSB5ZWFyO1xuXHRcdHRoaXMuX3NlbGVjdERhdGUoIGlkLCB0aGlzLl9mb3JtYXREYXRlKCBpbnN0LFxuXHRcdFx0aW5zdC5jdXJyZW50RGF5LCBpbnN0LmN1cnJlbnRNb250aCwgaW5zdC5jdXJyZW50WWVhciApICk7XG5cdH0sXG5cblx0LyogRXJhc2UgdGhlIGlucHV0IGZpZWxkIGFuZCBoaWRlIHRoZSBkYXRlIHBpY2tlci4gKi9cblx0X2NsZWFyRGF0ZTogZnVuY3Rpb24oIGlkICkge1xuXHRcdHZhciB0YXJnZXQgPSAkKCBpZCApO1xuXHRcdHRoaXMuX3NlbGVjdERhdGUoIHRhcmdldCwgXCJcIiApO1xuXHR9LFxuXG5cdC8qIFVwZGF0ZSB0aGUgaW5wdXQgZmllbGQgd2l0aCB0aGUgc2VsZWN0ZWQgZGF0ZS4gKi9cblx0X3NlbGVjdERhdGU6IGZ1bmN0aW9uKCBpZCwgZGF0ZVN0ciApIHtcblx0XHR2YXIgb25TZWxlY3QsXG5cdFx0XHR0YXJnZXQgPSAkKCBpZCApLFxuXHRcdFx0aW5zdCA9IHRoaXMuX2dldEluc3QoIHRhcmdldFsgMCBdICk7XG5cblx0XHRkYXRlU3RyID0gKCBkYXRlU3RyICE9IG51bGwgPyBkYXRlU3RyIDogdGhpcy5fZm9ybWF0RGF0ZSggaW5zdCApICk7XG5cdFx0aWYgKCBpbnN0LmlucHV0ICkge1xuXHRcdFx0aW5zdC5pbnB1dC52YWwoIGRhdGVTdHIgKTtcblx0XHR9XG5cdFx0dGhpcy5fdXBkYXRlQWx0ZXJuYXRlKCBpbnN0ICk7XG5cblx0XHRvblNlbGVjdCA9IHRoaXMuX2dldCggaW5zdCwgXCJvblNlbGVjdFwiICk7XG5cdFx0aWYgKCBvblNlbGVjdCApIHtcblx0XHRcdG9uU2VsZWN0LmFwcGx5KCAoIGluc3QuaW5wdXQgPyBpbnN0LmlucHV0WyAwIF0gOiBudWxsICksIFsgZGF0ZVN0ciwgaW5zdCBdICk7ICAvLyB0cmlnZ2VyIGN1c3RvbSBjYWxsYmFja1xuXHRcdH0gZWxzZSBpZiAoIGluc3QuaW5wdXQgKSB7XG5cdFx0XHRpbnN0LmlucHV0LnRyaWdnZXIoIFwiY2hhbmdlXCIgKTsgLy8gZmlyZSB0aGUgY2hhbmdlIGV2ZW50XG5cdFx0fVxuXG5cdFx0aWYgKCBpbnN0LmlubGluZSApIHtcblx0XHRcdHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIoIGluc3QgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5faGlkZURhdGVwaWNrZXIoKTtcblx0XHRcdHRoaXMuX2xhc3RJbnB1dCA9IGluc3QuaW5wdXRbIDAgXTtcblx0XHRcdGlmICggdHlwZW9mKCBpbnN0LmlucHV0WyAwIF0gKSAhPT0gXCJvYmplY3RcIiApIHtcblx0XHRcdFx0aW5zdC5pbnB1dC50cmlnZ2VyKCBcImZvY3VzXCIgKTsgLy8gcmVzdG9yZSBmb2N1c1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fbGFzdElucHV0ID0gbnVsbDtcblx0XHR9XG5cdH0sXG5cblx0LyogVXBkYXRlIGFueSBhbHRlcm5hdGUgZmllbGQgdG8gc3luY2hyb25pc2Ugd2l0aCB0aGUgbWFpbiBmaWVsZC4gKi9cblx0X3VwZGF0ZUFsdGVybmF0ZTogZnVuY3Rpb24oIGluc3QgKSB7XG5cdFx0dmFyIGFsdEZvcm1hdCwgZGF0ZSwgZGF0ZVN0cixcblx0XHRcdGFsdEZpZWxkID0gdGhpcy5fZ2V0KCBpbnN0LCBcImFsdEZpZWxkXCIgKTtcblxuXHRcdGlmICggYWx0RmllbGQgKSB7IC8vIHVwZGF0ZSBhbHRlcm5hdGUgZmllbGQgdG9vXG5cdFx0XHRhbHRGb3JtYXQgPSB0aGlzLl9nZXQoIGluc3QsIFwiYWx0Rm9ybWF0XCIgKSB8fCB0aGlzLl9nZXQoIGluc3QsIFwiZGF0ZUZvcm1hdFwiICk7XG5cdFx0XHRkYXRlID0gdGhpcy5fZ2V0RGF0ZSggaW5zdCApO1xuXHRcdFx0ZGF0ZVN0ciA9IHRoaXMuZm9ybWF0RGF0ZSggYWx0Rm9ybWF0LCBkYXRlLCB0aGlzLl9nZXRGb3JtYXRDb25maWcoIGluc3QgKSApO1xuXHRcdFx0JCggYWx0RmllbGQgKS52YWwoIGRhdGVTdHIgKTtcblx0XHR9XG5cdH0sXG5cblx0LyogU2V0IGFzIGJlZm9yZVNob3dEYXkgZnVuY3Rpb24gdG8gcHJldmVudCBzZWxlY3Rpb24gb2Ygd2Vla2VuZHMuXG5cdCAqIEBwYXJhbSAgZGF0ZSAgRGF0ZSAtIHRoZSBkYXRlIHRvIGN1c3RvbWlzZVxuXHQgKiBAcmV0dXJuIFtib29sZWFuLCBzdHJpbmddIC0gaXMgdGhpcyBkYXRlIHNlbGVjdGFibGU/LCB3aGF0IGlzIGl0cyBDU1MgY2xhc3M/XG5cdCAqL1xuXHRub1dlZWtlbmRzOiBmdW5jdGlvbiggZGF0ZSApIHtcblx0XHR2YXIgZGF5ID0gZGF0ZS5nZXREYXkoKTtcblx0XHRyZXR1cm4gWyAoIGRheSA+IDAgJiYgZGF5IDwgNiApLCBcIlwiIF07XG5cdH0sXG5cblx0LyogU2V0IGFzIGNhbGN1bGF0ZVdlZWsgdG8gZGV0ZXJtaW5lIHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIGJhc2VkIG9uIHRoZSBJU08gODYwMSBkZWZpbml0aW9uLlxuXHQgKiBAcGFyYW0gIGRhdGUgIERhdGUgLSB0aGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgZm9yXG5cdCAqIEByZXR1cm4gIG51bWJlciAtIHRoZSBudW1iZXIgb2YgdGhlIHdlZWsgd2l0aGluIHRoZSB5ZWFyIHRoYXQgY29udGFpbnMgdGhpcyBkYXRlXG5cdCAqL1xuXHRpc284NjAxV2VlazogZnVuY3Rpb24oIGRhdGUgKSB7XG5cdFx0dmFyIHRpbWUsXG5cdFx0XHRjaGVja0RhdGUgPSBuZXcgRGF0ZSggZGF0ZS5nZXRUaW1lKCkgKTtcblxuXHRcdC8vIEZpbmQgVGh1cnNkYXkgb2YgdGhpcyB3ZWVrIHN0YXJ0aW5nIG9uIE1vbmRheVxuXHRcdGNoZWNrRGF0ZS5zZXREYXRlKCBjaGVja0RhdGUuZ2V0RGF0ZSgpICsgNCAtICggY2hlY2tEYXRlLmdldERheSgpIHx8IDcgKSApO1xuXG5cdFx0dGltZSA9IGNoZWNrRGF0ZS5nZXRUaW1lKCk7XG5cdFx0Y2hlY2tEYXRlLnNldE1vbnRoKCAwICk7IC8vIENvbXBhcmUgd2l0aCBKYW4gMVxuXHRcdGNoZWNrRGF0ZS5zZXREYXRlKCAxICk7XG5cdFx0cmV0dXJuIE1hdGguZmxvb3IoIE1hdGgucm91bmQoICggdGltZSAtIGNoZWNrRGF0ZSApIC8gODY0MDAwMDAgKSAvIDcgKSArIDE7XG5cdH0sXG5cblx0LyogUGFyc2UgYSBzdHJpbmcgdmFsdWUgaW50byBhIGRhdGUgb2JqZWN0LlxuXHQgKiBTZWUgZm9ybWF0RGF0ZSBiZWxvdyBmb3IgdGhlIHBvc3NpYmxlIGZvcm1hdHMuXG5cdCAqXG5cdCAqIEBwYXJhbSAgZm9ybWF0IHN0cmluZyAtIHRoZSBleHBlY3RlZCBmb3JtYXQgb2YgdGhlIGRhdGVcblx0ICogQHBhcmFtICB2YWx1ZSBzdHJpbmcgLSB0aGUgZGF0ZSBpbiB0aGUgYWJvdmUgZm9ybWF0XG5cdCAqIEBwYXJhbSAgc2V0dGluZ3MgT2JqZWN0IC0gYXR0cmlidXRlcyBpbmNsdWRlOlxuXHQgKlx0XHRcdFx0XHRzaG9ydFllYXJDdXRvZmYgIG51bWJlciAtIHRoZSBjdXRvZmYgeWVhciBmb3IgZGV0ZXJtaW5pbmcgdGhlIGNlbnR1cnkgKG9wdGlvbmFsKVxuXHQgKlx0XHRcdFx0XHRkYXlOYW1lc1Nob3J0XHRzdHJpbmdbN10gLSBhYmJyZXZpYXRlZCBuYW1lcyBvZiB0aGUgZGF5cyBmcm9tIFN1bmRheSAob3B0aW9uYWwpXG5cdCAqXHRcdFx0XHRcdGRheU5hbWVzXHRcdHN0cmluZ1s3XSAtIG5hbWVzIG9mIHRoZSBkYXlzIGZyb20gU3VuZGF5IChvcHRpb25hbClcblx0ICpcdFx0XHRcdFx0bW9udGhOYW1lc1Nob3J0IHN0cmluZ1sxMl0gLSBhYmJyZXZpYXRlZCBuYW1lcyBvZiB0aGUgbW9udGhzIChvcHRpb25hbClcblx0ICpcdFx0XHRcdFx0bW9udGhOYW1lc1x0XHRzdHJpbmdbMTJdIC0gbmFtZXMgb2YgdGhlIG1vbnRocyAob3B0aW9uYWwpXG5cdCAqIEByZXR1cm4gIERhdGUgLSB0aGUgZXh0cmFjdGVkIGRhdGUgdmFsdWUgb3IgbnVsbCBpZiB2YWx1ZSBpcyBibGFua1xuXHQgKi9cblx0cGFyc2VEYXRlOiBmdW5jdGlvbiggZm9ybWF0LCB2YWx1ZSwgc2V0dGluZ3MgKSB7XG5cdFx0aWYgKCBmb3JtYXQgPT0gbnVsbCB8fCB2YWx1ZSA9PSBudWxsICkge1xuXHRcdFx0dGhyb3cgXCJJbnZhbGlkIGFyZ3VtZW50c1wiO1xuXHRcdH1cblxuXHRcdHZhbHVlID0gKCB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgPyB2YWx1ZS50b1N0cmluZygpIDogdmFsdWUgKyBcIlwiICk7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gXCJcIiApIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdHZhciBpRm9ybWF0LCBkaW0sIGV4dHJhLFxuXHRcdFx0aVZhbHVlID0gMCxcblx0XHRcdHNob3J0WWVhckN1dG9mZlRlbXAgPSAoIHNldHRpbmdzID8gc2V0dGluZ3Muc2hvcnRZZWFyQ3V0b2ZmIDogbnVsbCApIHx8IHRoaXMuX2RlZmF1bHRzLnNob3J0WWVhckN1dG9mZixcblx0XHRcdHNob3J0WWVhckN1dG9mZiA9ICggdHlwZW9mIHNob3J0WWVhckN1dG9mZlRlbXAgIT09IFwic3RyaW5nXCIgPyBzaG9ydFllYXJDdXRvZmZUZW1wIDpcblx0XHRcdFx0bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICUgMTAwICsgcGFyc2VJbnQoIHNob3J0WWVhckN1dG9mZlRlbXAsIDEwICkgKSxcblx0XHRcdGRheU5hbWVzU2hvcnQgPSAoIHNldHRpbmdzID8gc2V0dGluZ3MuZGF5TmFtZXNTaG9ydCA6IG51bGwgKSB8fCB0aGlzLl9kZWZhdWx0cy5kYXlOYW1lc1Nob3J0LFxuXHRcdFx0ZGF5TmFtZXMgPSAoIHNldHRpbmdzID8gc2V0dGluZ3MuZGF5TmFtZXMgOiBudWxsICkgfHwgdGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMsXG5cdFx0XHRtb250aE5hbWVzU2hvcnQgPSAoIHNldHRpbmdzID8gc2V0dGluZ3MubW9udGhOYW1lc1Nob3J0IDogbnVsbCApIHx8IHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXNTaG9ydCxcblx0XHRcdG1vbnRoTmFtZXMgPSAoIHNldHRpbmdzID8gc2V0dGluZ3MubW9udGhOYW1lcyA6IG51bGwgKSB8fCB0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzLFxuXHRcdFx0eWVhciA9IC0xLFxuXHRcdFx0bW9udGggPSAtMSxcblx0XHRcdGRheSA9IC0xLFxuXHRcdFx0ZG95ID0gLTEsXG5cdFx0XHRsaXRlcmFsID0gZmFsc2UsXG5cdFx0XHRkYXRlLFxuXG5cdFx0XHQvLyBDaGVjayB3aGV0aGVyIGEgZm9ybWF0IGNoYXJhY3RlciBpcyBkb3VibGVkXG5cdFx0XHRsb29rQWhlYWQgPSBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRcdHZhciBtYXRjaGVzID0gKCBpRm9ybWF0ICsgMSA8IGZvcm1hdC5sZW5ndGggJiYgZm9ybWF0LmNoYXJBdCggaUZvcm1hdCArIDEgKSA9PT0gbWF0Y2ggKTtcblx0XHRcdFx0aWYgKCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdGlGb3JtYXQrKztcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbWF0Y2hlcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIEV4dHJhY3QgYSBudW1iZXIgZnJvbSB0aGUgc3RyaW5nIHZhbHVlXG5cdFx0XHRnZXROdW1iZXIgPSBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRcdHZhciBpc0RvdWJsZWQgPSBsb29rQWhlYWQoIG1hdGNoICksXG5cdFx0XHRcdFx0c2l6ZSA9ICggbWF0Y2ggPT09IFwiQFwiID8gMTQgOiAoIG1hdGNoID09PSBcIiFcIiA/IDIwIDpcblx0XHRcdFx0XHQoIG1hdGNoID09PSBcInlcIiAmJiBpc0RvdWJsZWQgPyA0IDogKCBtYXRjaCA9PT0gXCJvXCIgPyAzIDogMiApICkgKSApLFxuXHRcdFx0XHRcdG1pblNpemUgPSAoIG1hdGNoID09PSBcInlcIiA/IHNpemUgOiAxICksXG5cdFx0XHRcdFx0ZGlnaXRzID0gbmV3IFJlZ0V4cCggXCJeXFxcXGR7XCIgKyBtaW5TaXplICsgXCIsXCIgKyBzaXplICsgXCJ9XCIgKSxcblx0XHRcdFx0XHRudW0gPSB2YWx1ZS5zdWJzdHJpbmcoIGlWYWx1ZSApLm1hdGNoKCBkaWdpdHMgKTtcblx0XHRcdFx0aWYgKCAhbnVtICkge1xuXHRcdFx0XHRcdHRocm93IFwiTWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gXCIgKyBpVmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aVZhbHVlICs9IG51bVsgMCBdLmxlbmd0aDtcblx0XHRcdFx0cmV0dXJuIHBhcnNlSW50KCBudW1bIDAgXSwgMTAgKTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIEV4dHJhY3QgYSBuYW1lIGZyb20gdGhlIHN0cmluZyB2YWx1ZSBhbmQgY29udmVydCB0byBhbiBpbmRleFxuXHRcdFx0Z2V0TmFtZSA9IGZ1bmN0aW9uKCBtYXRjaCwgc2hvcnROYW1lcywgbG9uZ05hbWVzICkge1xuXHRcdFx0XHR2YXIgaW5kZXggPSAtMSxcblx0XHRcdFx0XHRuYW1lcyA9ICQubWFwKCBsb29rQWhlYWQoIG1hdGNoICkgPyBsb25nTmFtZXMgOiBzaG9ydE5hbWVzLCBmdW5jdGlvbiggdiwgayApIHtcblx0XHRcdFx0XHRcdHJldHVybiBbIFsgaywgdiBdIF07XG5cdFx0XHRcdFx0fSApLnNvcnQoIGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIC0oIGFbIDEgXS5sZW5ndGggLSBiWyAxIF0ubGVuZ3RoICk7XG5cdFx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdCQuZWFjaCggbmFtZXMsIGZ1bmN0aW9uKCBpLCBwYWlyICkge1xuXHRcdFx0XHRcdHZhciBuYW1lID0gcGFpclsgMSBdO1xuXHRcdFx0XHRcdGlmICggdmFsdWUuc3Vic3RyKCBpVmFsdWUsIG5hbWUubGVuZ3RoICkudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpICkge1xuXHRcdFx0XHRcdFx0aW5kZXggPSBwYWlyWyAwIF07XG5cdFx0XHRcdFx0XHRpVmFsdWUgKz0gbmFtZS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdGlmICggaW5kZXggIT09IC0xICkge1xuXHRcdFx0XHRcdHJldHVybiBpbmRleCArIDE7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhyb3cgXCJVbmtub3duIG5hbWUgYXQgcG9zaXRpb24gXCIgKyBpVmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIENvbmZpcm0gdGhhdCBhIGxpdGVyYWwgY2hhcmFjdGVyIG1hdGNoZXMgdGhlIHN0cmluZyB2YWx1ZVxuXHRcdFx0Y2hlY2tMaXRlcmFsID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdmFsdWUuY2hhckF0KCBpVmFsdWUgKSAhPT0gZm9ybWF0LmNoYXJBdCggaUZvcm1hdCApICkge1xuXHRcdFx0XHRcdHRocm93IFwiVW5leHBlY3RlZCBsaXRlcmFsIGF0IHBvc2l0aW9uIFwiICsgaVZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlWYWx1ZSsrO1xuXHRcdFx0fTtcblxuXHRcdGZvciAoIGlGb3JtYXQgPSAwOyBpRm9ybWF0IDwgZm9ybWF0Lmxlbmd0aDsgaUZvcm1hdCsrICkge1xuXHRcdFx0aWYgKCBsaXRlcmFsICkge1xuXHRcdFx0XHRpZiAoIGZvcm1hdC5jaGFyQXQoIGlGb3JtYXQgKSA9PT0gXCInXCIgJiYgIWxvb2tBaGVhZCggXCInXCIgKSApIHtcblx0XHRcdFx0XHRsaXRlcmFsID0gZmFsc2U7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y2hlY2tMaXRlcmFsKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAoIGZvcm1hdC5jaGFyQXQoIGlGb3JtYXQgKSApIHtcblx0XHRcdFx0XHRjYXNlIFwiZFwiOlxuXHRcdFx0XHRcdFx0ZGF5ID0gZ2V0TnVtYmVyKCBcImRcIiApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRcIjpcblx0XHRcdFx0XHRcdGdldE5hbWUoIFwiRFwiLCBkYXlOYW1lc1Nob3J0LCBkYXlOYW1lcyApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIm9cIjpcblx0XHRcdFx0XHRcdGRveSA9IGdldE51bWJlciggXCJvXCIgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJtXCI6XG5cdFx0XHRcdFx0XHRtb250aCA9IGdldE51bWJlciggXCJtXCIgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJNXCI6XG5cdFx0XHRcdFx0XHRtb250aCA9IGdldE5hbWUoIFwiTVwiLCBtb250aE5hbWVzU2hvcnQsIG1vbnRoTmFtZXMgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJ5XCI6XG5cdFx0XHRcdFx0XHR5ZWFyID0gZ2V0TnVtYmVyKCBcInlcIiApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkBcIjpcblx0XHRcdFx0XHRcdGRhdGUgPSBuZXcgRGF0ZSggZ2V0TnVtYmVyKCBcIkBcIiApICk7XG5cdFx0XHRcdFx0XHR5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHRcdFx0bW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuXHRcdFx0XHRcdFx0ZGF5ID0gZGF0ZS5nZXREYXRlKCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiIVwiOlxuXHRcdFx0XHRcdFx0ZGF0ZSA9IG5ldyBEYXRlKCAoIGdldE51bWJlciggXCIhXCIgKSAtIHRoaXMuX3RpY2tzVG8xOTcwICkgLyAxMDAwMCApO1xuXHRcdFx0XHRcdFx0eWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0XHRcdG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcblx0XHRcdFx0XHRcdGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIidcIjpcblx0XHRcdFx0XHRcdGlmICggbG9va0FoZWFkKCBcIidcIiApICkge1xuXHRcdFx0XHRcdFx0XHRjaGVja0xpdGVyYWwoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxpdGVyYWwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNoZWNrTGl0ZXJhbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBpVmFsdWUgPCB2YWx1ZS5sZW5ndGggKSB7XG5cdFx0XHRleHRyYSA9IHZhbHVlLnN1YnN0ciggaVZhbHVlICk7XG5cdFx0XHRpZiAoICEvXlxccysvLnRlc3QoIGV4dHJhICkgKSB7XG5cdFx0XHRcdHRocm93IFwiRXh0cmEvdW5wYXJzZWQgY2hhcmFjdGVycyBmb3VuZCBpbiBkYXRlOiBcIiArIGV4dHJhO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggeWVhciA9PT0gLTEgKSB7XG5cdFx0XHR5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXHRcdH0gZWxzZSBpZiAoIHllYXIgPCAxMDAgKSB7XG5cdFx0XHR5ZWFyICs9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAlIDEwMCArXG5cdFx0XHRcdCggeWVhciA8PSBzaG9ydFllYXJDdXRvZmYgPyAwIDogLTEwMCApO1xuXHRcdH1cblxuXHRcdGlmICggZG95ID4gLTEgKSB7XG5cdFx0XHRtb250aCA9IDE7XG5cdFx0XHRkYXkgPSBkb3k7XG5cdFx0XHRkbyB7XG5cdFx0XHRcdGRpbSA9IHRoaXMuX2dldERheXNJbk1vbnRoKCB5ZWFyLCBtb250aCAtIDEgKTtcblx0XHRcdFx0aWYgKCBkYXkgPD0gZGltICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1vbnRoKys7XG5cdFx0XHRcdGRheSAtPSBkaW07XG5cdFx0XHR9IHdoaWxlICggdHJ1ZSApO1xuXHRcdH1cblxuXHRcdGRhdGUgPSB0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoIHllYXIsIG1vbnRoIC0gMSwgZGF5ICkgKTtcblx0XHRpZiAoIGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fCBkYXRlLmdldE1vbnRoKCkgKyAxICE9PSBtb250aCB8fCBkYXRlLmdldERhdGUoKSAhPT0gZGF5ICkge1xuXHRcdFx0dGhyb3cgXCJJbnZhbGlkIGRhdGVcIjsgLy8gRS5nLiAzMS8wMi8wMFxuXHRcdH1cblx0XHRyZXR1cm4gZGF0ZTtcblx0fSxcblxuXHQvKiBTdGFuZGFyZCBkYXRlIGZvcm1hdHMuICovXG5cdEFUT006IFwieXktbW0tZGRcIiwgLy8gUkZDIDMzMzkgKElTTyA4NjAxKVxuXHRDT09LSUU6IFwiRCwgZGQgTSB5eVwiLFxuXHRJU09fODYwMTogXCJ5eS1tbS1kZFwiLFxuXHRSRkNfODIyOiBcIkQsIGQgTSB5XCIsXG5cdFJGQ184NTA6IFwiREQsIGRkLU0teVwiLFxuXHRSRkNfMTAzNjogXCJELCBkIE0geVwiLFxuXHRSRkNfMTEyMzogXCJELCBkIE0geXlcIixcblx0UkZDXzI4MjI6IFwiRCwgZCBNIHl5XCIsXG5cdFJTUzogXCJELCBkIE0geVwiLCAvLyBSRkMgODIyXG5cdFRJQ0tTOiBcIiFcIixcblx0VElNRVNUQU1QOiBcIkBcIixcblx0VzNDOiBcInl5LW1tLWRkXCIsIC8vIElTTyA4NjAxXG5cblx0X3RpY2tzVG8xOTcwOiAoICggKCAxOTcwIC0gMSApICogMzY1ICsgTWF0aC5mbG9vciggMTk3MCAvIDQgKSAtIE1hdGguZmxvb3IoIDE5NzAgLyAxMDAgKSArXG5cdFx0TWF0aC5mbG9vciggMTk3MCAvIDQwMCApICkgKiAyNCAqIDYwICogNjAgKiAxMDAwMDAwMCApLFxuXG5cdC8qIEZvcm1hdCBhIGRhdGUgb2JqZWN0IGludG8gYSBzdHJpbmcgdmFsdWUuXG5cdCAqIFRoZSBmb3JtYXQgY2FuIGJlIGNvbWJpbmF0aW9ucyBvZiB0aGUgZm9sbG93aW5nOlxuXHQgKiBkICAtIGRheSBvZiBtb250aCAobm8gbGVhZGluZyB6ZXJvKVxuXHQgKiBkZCAtIGRheSBvZiBtb250aCAodHdvIGRpZ2l0KVxuXHQgKiBvICAtIGRheSBvZiB5ZWFyIChubyBsZWFkaW5nIHplcm9zKVxuXHQgKiBvbyAtIGRheSBvZiB5ZWFyICh0aHJlZSBkaWdpdClcblx0ICogRCAgLSBkYXkgbmFtZSBzaG9ydFxuXHQgKiBERCAtIGRheSBuYW1lIGxvbmdcblx0ICogbSAgLSBtb250aCBvZiB5ZWFyIChubyBsZWFkaW5nIHplcm8pXG5cdCAqIG1tIC0gbW9udGggb2YgeWVhciAodHdvIGRpZ2l0KVxuXHQgKiBNICAtIG1vbnRoIG5hbWUgc2hvcnRcblx0ICogTU0gLSBtb250aCBuYW1lIGxvbmdcblx0ICogeSAgLSB5ZWFyICh0d28gZGlnaXQpXG5cdCAqIHl5IC0geWVhciAoZm91ciBkaWdpdClcblx0ICogQCAtIFVuaXggdGltZXN0YW1wIChtcyBzaW5jZSAwMS8wMS8xOTcwKVxuXHQgKiAhIC0gV2luZG93cyB0aWNrcyAoMTAwbnMgc2luY2UgMDEvMDEvMDAwMSlcblx0ICogXCIuLi5cIiAtIGxpdGVyYWwgdGV4dFxuXHQgKiAnJyAtIHNpbmdsZSBxdW90ZVxuXHQgKlxuXHQgKiBAcGFyYW0gIGZvcm1hdCBzdHJpbmcgLSB0aGUgZGVzaXJlZCBmb3JtYXQgb2YgdGhlIGRhdGVcblx0ICogQHBhcmFtICBkYXRlIERhdGUgLSB0aGUgZGF0ZSB2YWx1ZSB0byBmb3JtYXRcblx0ICogQHBhcmFtICBzZXR0aW5ncyBPYmplY3QgLSBhdHRyaWJ1dGVzIGluY2x1ZGU6XG5cdCAqXHRcdFx0XHRcdGRheU5hbWVzU2hvcnRcdHN0cmluZ1s3XSAtIGFiYnJldmlhdGVkIG5hbWVzIG9mIHRoZSBkYXlzIGZyb20gU3VuZGF5IChvcHRpb25hbClcblx0ICpcdFx0XHRcdFx0ZGF5TmFtZXNcdFx0c3RyaW5nWzddIC0gbmFtZXMgb2YgdGhlIGRheXMgZnJvbSBTdW5kYXkgKG9wdGlvbmFsKVxuXHQgKlx0XHRcdFx0XHRtb250aE5hbWVzU2hvcnQgc3RyaW5nWzEyXSAtIGFiYnJldmlhdGVkIG5hbWVzIG9mIHRoZSBtb250aHMgKG9wdGlvbmFsKVxuXHQgKlx0XHRcdFx0XHRtb250aE5hbWVzXHRcdHN0cmluZ1sxMl0gLSBuYW1lcyBvZiB0aGUgbW9udGhzIChvcHRpb25hbClcblx0ICogQHJldHVybiAgc3RyaW5nIC0gdGhlIGRhdGUgaW4gdGhlIGFib3ZlIGZvcm1hdFxuXHQgKi9cblx0Zm9ybWF0RGF0ZTogZnVuY3Rpb24oIGZvcm1hdCwgZGF0ZSwgc2V0dGluZ3MgKSB7XG5cdFx0aWYgKCAhZGF0ZSApIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblxuXHRcdHZhciBpRm9ybWF0LFxuXHRcdFx0ZGF5TmFtZXNTaG9ydCA9ICggc2V0dGluZ3MgPyBzZXR0aW5ncy5kYXlOYW1lc1Nob3J0IDogbnVsbCApIHx8IHRoaXMuX2RlZmF1bHRzLmRheU5hbWVzU2hvcnQsXG5cdFx0XHRkYXlOYW1lcyA9ICggc2V0dGluZ3MgPyBzZXR0aW5ncy5kYXlOYW1lcyA6IG51bGwgKSB8fCB0aGlzLl9kZWZhdWx0cy5kYXlOYW1lcyxcblx0XHRcdG1vbnRoTmFtZXNTaG9ydCA9ICggc2V0dGluZ3MgPyBzZXR0aW5ncy5tb250aE5hbWVzU2hvcnQgOiBudWxsICkgfHwgdGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0LFxuXHRcdFx0bW9udGhOYW1lcyA9ICggc2V0dGluZ3MgPyBzZXR0aW5ncy5tb250aE5hbWVzIDogbnVsbCApIHx8IHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXMsXG5cblx0XHRcdC8vIENoZWNrIHdoZXRoZXIgYSBmb3JtYXQgY2hhcmFjdGVyIGlzIGRvdWJsZWRcblx0XHRcdGxvb2tBaGVhZCA9IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdFx0dmFyIG1hdGNoZXMgPSAoIGlGb3JtYXQgKyAxIDwgZm9ybWF0Lmxlbmd0aCAmJiBmb3JtYXQuY2hhckF0KCBpRm9ybWF0ICsgMSApID09PSBtYXRjaCApO1xuXHRcdFx0XHRpZiAoIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0aUZvcm1hdCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtYXRjaGVzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRm9ybWF0IGEgbnVtYmVyLCB3aXRoIGxlYWRpbmcgemVybyBpZiBuZWNlc3Nhcnlcblx0XHRcdGZvcm1hdE51bWJlciA9IGZ1bmN0aW9uKCBtYXRjaCwgdmFsdWUsIGxlbiApIHtcblx0XHRcdFx0dmFyIG51bSA9IFwiXCIgKyB2YWx1ZTtcblx0XHRcdFx0aWYgKCBsb29rQWhlYWQoIG1hdGNoICkgKSB7XG5cdFx0XHRcdFx0d2hpbGUgKCBudW0ubGVuZ3RoIDwgbGVuICkge1xuXHRcdFx0XHRcdFx0bnVtID0gXCIwXCIgKyBudW07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBudW07XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBGb3JtYXQgYSBuYW1lLCBzaG9ydCBvciBsb25nIGFzIHJlcXVlc3RlZFxuXHRcdFx0Zm9ybWF0TmFtZSA9IGZ1bmN0aW9uKCBtYXRjaCwgdmFsdWUsIHNob3J0TmFtZXMsIGxvbmdOYW1lcyApIHtcblx0XHRcdFx0cmV0dXJuICggbG9va0FoZWFkKCBtYXRjaCApID8gbG9uZ05hbWVzWyB2YWx1ZSBdIDogc2hvcnROYW1lc1sgdmFsdWUgXSApO1xuXHRcdFx0fSxcblx0XHRcdG91dHB1dCA9IFwiXCIsXG5cdFx0XHRsaXRlcmFsID0gZmFsc2U7XG5cblx0XHRpZiAoIGRhdGUgKSB7XG5cdFx0XHRmb3IgKCBpRm9ybWF0ID0gMDsgaUZvcm1hdCA8IGZvcm1hdC5sZW5ndGg7IGlGb3JtYXQrKyApIHtcblx0XHRcdFx0aWYgKCBsaXRlcmFsICkge1xuXHRcdFx0XHRcdGlmICggZm9ybWF0LmNoYXJBdCggaUZvcm1hdCApID09PSBcIidcIiAmJiAhbG9va0FoZWFkKCBcIidcIiApICkge1xuXHRcdFx0XHRcdFx0bGl0ZXJhbCA9IGZhbHNlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvdXRwdXQgKz0gZm9ybWF0LmNoYXJBdCggaUZvcm1hdCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzd2l0Y2ggKCBmb3JtYXQuY2hhckF0KCBpRm9ybWF0ICkgKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZFwiOlxuXHRcdFx0XHRcdFx0XHRvdXRwdXQgKz0gZm9ybWF0TnVtYmVyKCBcImRcIiwgZGF0ZS5nZXREYXRlKCksIDIgKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiRFwiOlxuXHRcdFx0XHRcdFx0XHRvdXRwdXQgKz0gZm9ybWF0TmFtZSggXCJEXCIsIGRhdGUuZ2V0RGF5KCksIGRheU5hbWVzU2hvcnQsIGRheU5hbWVzICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIm9cIjpcblx0XHRcdFx0XHRcdFx0b3V0cHV0ICs9IGZvcm1hdE51bWJlciggXCJvXCIsXG5cdFx0XHRcdFx0XHRcdFx0TWF0aC5yb3VuZCggKCBuZXcgRGF0ZSggZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpICkuZ2V0VGltZSgpIC0gbmV3IERhdGUoIGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMCApLmdldFRpbWUoKSApIC8gODY0MDAwMDAgKSwgMyApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtXCI6XG5cdFx0XHRcdFx0XHRcdG91dHB1dCArPSBmb3JtYXROdW1iZXIoIFwibVwiLCBkYXRlLmdldE1vbnRoKCkgKyAxLCAyICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIk1cIjpcblx0XHRcdFx0XHRcdFx0b3V0cHV0ICs9IGZvcm1hdE5hbWUoIFwiTVwiLCBkYXRlLmdldE1vbnRoKCksIG1vbnRoTmFtZXNTaG9ydCwgbW9udGhOYW1lcyApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ5XCI6XG5cdFx0XHRcdFx0XHRcdG91dHB1dCArPSAoIGxvb2tBaGVhZCggXCJ5XCIgKSA/IGRhdGUuZ2V0RnVsbFllYXIoKSA6XG5cdFx0XHRcdFx0XHRcdFx0KCBkYXRlLmdldEZ1bGxZZWFyKCkgJSAxMDAgPCAxMCA/IFwiMFwiIDogXCJcIiApICsgZGF0ZS5nZXRGdWxsWWVhcigpICUgMTAwICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkBcIjpcblx0XHRcdFx0XHRcdFx0b3V0cHV0ICs9IGRhdGUuZ2V0VGltZSgpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCIhXCI6XG5cdFx0XHRcdFx0XHRcdG91dHB1dCArPSBkYXRlLmdldFRpbWUoKSAqIDEwMDAwICsgdGhpcy5fdGlja3NUbzE5NzA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIidcIjpcblx0XHRcdFx0XHRcdFx0aWYgKCBsb29rQWhlYWQoIFwiJ1wiICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0b3V0cHV0ICs9IFwiJ1wiO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGxpdGVyYWwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0b3V0cHV0ICs9IGZvcm1hdC5jaGFyQXQoIGlGb3JtYXQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fSxcblxuXHQvKiBFeHRyYWN0IGFsbCBwb3NzaWJsZSBjaGFyYWN0ZXJzIGZyb20gdGhlIGRhdGUgZm9ybWF0LiAqL1xuXHRfcG9zc2libGVDaGFyczogZnVuY3Rpb24oIGZvcm1hdCApIHtcblx0XHR2YXIgaUZvcm1hdCxcblx0XHRcdGNoYXJzID0gXCJcIixcblx0XHRcdGxpdGVyYWwgPSBmYWxzZSxcblxuXHRcdFx0Ly8gQ2hlY2sgd2hldGhlciBhIGZvcm1hdCBjaGFyYWN0ZXIgaXMgZG91YmxlZFxuXHRcdFx0bG9va0FoZWFkID0gZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0XHR2YXIgbWF0Y2hlcyA9ICggaUZvcm1hdCArIDEgPCBmb3JtYXQubGVuZ3RoICYmIGZvcm1hdC5jaGFyQXQoIGlGb3JtYXQgKyAxICkgPT09IG1hdGNoICk7XG5cdFx0XHRcdGlmICggbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRpRm9ybWF0Kys7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG1hdGNoZXM7XG5cdFx0XHR9O1xuXG5cdFx0Zm9yICggaUZvcm1hdCA9IDA7IGlGb3JtYXQgPCBmb3JtYXQubGVuZ3RoOyBpRm9ybWF0KysgKSB7XG5cdFx0XHRpZiAoIGxpdGVyYWwgKSB7XG5cdFx0XHRcdGlmICggZm9ybWF0LmNoYXJBdCggaUZvcm1hdCApID09PSBcIidcIiAmJiAhbG9va0FoZWFkKCBcIidcIiApICkge1xuXHRcdFx0XHRcdGxpdGVyYWwgPSBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjaGFycyArPSBmb3JtYXQuY2hhckF0KCBpRm9ybWF0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAoIGZvcm1hdC5jaGFyQXQoIGlGb3JtYXQgKSApIHtcblx0XHRcdFx0XHRjYXNlIFwiZFwiOiBjYXNlIFwibVwiOiBjYXNlIFwieVwiOiBjYXNlIFwiQFwiOlxuXHRcdFx0XHRcdFx0Y2hhcnMgKz0gXCIwMTIzNDU2Nzg5XCI7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRFwiOiBjYXNlIFwiTVwiOlxuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7IC8vIEFjY2VwdCBhbnl0aGluZ1xuXHRcdFx0XHRcdGNhc2UgXCInXCI6XG5cdFx0XHRcdFx0XHRpZiAoIGxvb2tBaGVhZCggXCInXCIgKSApIHtcblx0XHRcdFx0XHRcdFx0Y2hhcnMgKz0gXCInXCI7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRsaXRlcmFsID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFycyArPSBmb3JtYXQuY2hhckF0KCBpRm9ybWF0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNoYXJzO1xuXHR9LFxuXG5cdC8qIEdldCBhIHNldHRpbmcgdmFsdWUsIGRlZmF1bHRpbmcgaWYgbmVjZXNzYXJ5LiAqL1xuXHRfZ2V0OiBmdW5jdGlvbiggaW5zdCwgbmFtZSApIHtcblx0XHRyZXR1cm4gaW5zdC5zZXR0aW5nc1sgbmFtZSBdICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0aW5zdC5zZXR0aW5nc1sgbmFtZSBdIDogdGhpcy5fZGVmYXVsdHNbIG5hbWUgXTtcblx0fSxcblxuXHQvKiBQYXJzZSBleGlzdGluZyBkYXRlIGFuZCBpbml0aWFsaXNlIGRhdGUgcGlja2VyLiAqL1xuXHRfc2V0RGF0ZUZyb21GaWVsZDogZnVuY3Rpb24oIGluc3QsIG5vRGVmYXVsdCApIHtcblx0XHRpZiAoIGluc3QuaW5wdXQudmFsKCkgPT09IGluc3QubGFzdFZhbCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgZGF0ZUZvcm1hdCA9IHRoaXMuX2dldCggaW5zdCwgXCJkYXRlRm9ybWF0XCIgKSxcblx0XHRcdGRhdGVzID0gaW5zdC5sYXN0VmFsID0gaW5zdC5pbnB1dCA/IGluc3QuaW5wdXQudmFsKCkgOiBudWxsLFxuXHRcdFx0ZGVmYXVsdERhdGUgPSB0aGlzLl9nZXREZWZhdWx0RGF0ZSggaW5zdCApLFxuXHRcdFx0ZGF0ZSA9IGRlZmF1bHREYXRlLFxuXHRcdFx0c2V0dGluZ3MgPSB0aGlzLl9nZXRGb3JtYXRDb25maWcoIGluc3QgKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRkYXRlID0gdGhpcy5wYXJzZURhdGUoIGRhdGVGb3JtYXQsIGRhdGVzLCBzZXR0aW5ncyApIHx8IGRlZmF1bHREYXRlO1xuXHRcdH0gY2F0Y2ggKCBldmVudCApIHtcblx0XHRcdGRhdGVzID0gKCBub0RlZmF1bHQgPyBcIlwiIDogZGF0ZXMgKTtcblx0XHR9XG5cdFx0aW5zdC5zZWxlY3RlZERheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuXHRcdGluc3QuZHJhd01vbnRoID0gaW5zdC5zZWxlY3RlZE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuXHRcdGluc3QuZHJhd1llYXIgPSBpbnN0LnNlbGVjdGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHRpbnN0LmN1cnJlbnREYXkgPSAoIGRhdGVzID8gZGF0ZS5nZXREYXRlKCkgOiAwICk7XG5cdFx0aW5zdC5jdXJyZW50TW9udGggPSAoIGRhdGVzID8gZGF0ZS5nZXRNb250aCgpIDogMCApO1xuXHRcdGluc3QuY3VycmVudFllYXIgPSAoIGRhdGVzID8gZGF0ZS5nZXRGdWxsWWVhcigpIDogMCApO1xuXHRcdHRoaXMuX2FkanVzdEluc3REYXRlKCBpbnN0ICk7XG5cdH0sXG5cblx0LyogUmV0cmlldmUgdGhlIGRlZmF1bHQgZGF0ZSBzaG93biBvbiBvcGVuaW5nLiAqL1xuXHRfZ2V0RGVmYXVsdERhdGU6IGZ1bmN0aW9uKCBpbnN0ICkge1xuXHRcdHJldHVybiB0aGlzLl9yZXN0cmljdE1pbk1heCggaW5zdCxcblx0XHRcdHRoaXMuX2RldGVybWluZURhdGUoIGluc3QsIHRoaXMuX2dldCggaW5zdCwgXCJkZWZhdWx0RGF0ZVwiICksIG5ldyBEYXRlKCkgKSApO1xuXHR9LFxuXG5cdC8qIEEgZGF0ZSBtYXkgYmUgc3BlY2lmaWVkIGFzIGFuIGV4YWN0IHZhbHVlIG9yIGEgcmVsYXRpdmUgb25lLiAqL1xuXHRfZGV0ZXJtaW5lRGF0ZTogZnVuY3Rpb24oIGluc3QsIGRhdGUsIGRlZmF1bHREYXRlICkge1xuXHRcdHZhciBvZmZzZXROdW1lcmljID0gZnVuY3Rpb24oIG9mZnNldCApIHtcblx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRkYXRlLnNldERhdGUoIGRhdGUuZ2V0RGF0ZSgpICsgb2Zmc2V0ICk7XG5cdFx0XHRcdHJldHVybiBkYXRlO1xuXHRcdFx0fSxcblx0XHRcdG9mZnNldFN0cmluZyA9IGZ1bmN0aW9uKCBvZmZzZXQgKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0cmV0dXJuICQuZGF0ZXBpY2tlci5wYXJzZURhdGUoICQuZGF0ZXBpY2tlci5fZ2V0KCBpbnN0LCBcImRhdGVGb3JtYXRcIiApLFxuXHRcdFx0XHRcdFx0b2Zmc2V0LCAkLmRhdGVwaWNrZXIuX2dldEZvcm1hdENvbmZpZyggaW5zdCApICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0Ly8gSWdub3JlXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YXIgZGF0ZSA9ICggb2Zmc2V0LnRvTG93ZXJDYXNlKCkubWF0Y2goIC9eYy8gKSA/XG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9nZXREYXRlKCBpbnN0ICkgOiBudWxsICkgfHwgbmV3IERhdGUoKSxcblx0XHRcdFx0XHR5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLFxuXHRcdFx0XHRcdG1vbnRoID0gZGF0ZS5nZXRNb250aCgpLFxuXHRcdFx0XHRcdGRheSA9IGRhdGUuZ2V0RGF0ZSgpLFxuXHRcdFx0XHRcdHBhdHRlcm4gPSAvKFsrXFwtXT9bMC05XSspXFxzKihkfER8d3xXfG18TXx5fFkpPy9nLFxuXHRcdFx0XHRcdG1hdGNoZXMgPSBwYXR0ZXJuLmV4ZWMoIG9mZnNldCApO1xuXG5cdFx0XHRcdHdoaWxlICggbWF0Y2hlcyApIHtcblx0XHRcdFx0XHRzd2l0Y2ggKCBtYXRjaGVzWyAyIF0gfHwgXCJkXCIgKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZFwiIDogY2FzZSBcIkRcIiA6XG5cdFx0XHRcdFx0XHRcdGRheSArPSBwYXJzZUludCggbWF0Y2hlc1sgMSBdLCAxMCApOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ3XCIgOiBjYXNlIFwiV1wiIDpcblx0XHRcdFx0XHRcdFx0ZGF5ICs9IHBhcnNlSW50KCBtYXRjaGVzWyAxIF0sIDEwICkgKiA3OyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtXCIgOiBjYXNlIFwiTVwiIDpcblx0XHRcdFx0XHRcdFx0bW9udGggKz0gcGFyc2VJbnQoIG1hdGNoZXNbIDEgXSwgMTAgKTtcblx0XHRcdFx0XHRcdFx0ZGF5ID0gTWF0aC5taW4oIGRheSwgJC5kYXRlcGlja2VyLl9nZXREYXlzSW5Nb250aCggeWVhciwgbW9udGggKSApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ5XCI6IGNhc2UgXCJZXCIgOlxuXHRcdFx0XHRcdFx0XHR5ZWFyICs9IHBhcnNlSW50KCBtYXRjaGVzWyAxIF0sIDEwICk7XG5cdFx0XHRcdFx0XHRcdGRheSA9IE1hdGgubWluKCBkYXksICQuZGF0ZXBpY2tlci5fZ2V0RGF5c0luTW9udGgoIHllYXIsIG1vbnRoICkgKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1hdGNoZXMgPSBwYXR0ZXJuLmV4ZWMoIG9mZnNldCApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBuZXcgRGF0ZSggeWVhciwgbW9udGgsIGRheSApO1xuXHRcdFx0fSxcblx0XHRcdG5ld0RhdGUgPSAoIGRhdGUgPT0gbnVsbCB8fCBkYXRlID09PSBcIlwiID8gZGVmYXVsdERhdGUgOiAoIHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiID8gb2Zmc2V0U3RyaW5nKCBkYXRlICkgOlxuXHRcdFx0XHQoIHR5cGVvZiBkYXRlID09PSBcIm51bWJlclwiID8gKCBpc05hTiggZGF0ZSApID8gZGVmYXVsdERhdGUgOiBvZmZzZXROdW1lcmljKCBkYXRlICkgKSA6IG5ldyBEYXRlKCBkYXRlLmdldFRpbWUoKSApICkgKSApO1xuXG5cdFx0bmV3RGF0ZSA9ICggbmV3RGF0ZSAmJiBuZXdEYXRlLnRvU3RyaW5nKCkgPT09IFwiSW52YWxpZCBEYXRlXCIgPyBkZWZhdWx0RGF0ZSA6IG5ld0RhdGUgKTtcblx0XHRpZiAoIG5ld0RhdGUgKSB7XG5cdFx0XHRuZXdEYXRlLnNldEhvdXJzKCAwICk7XG5cdFx0XHRuZXdEYXRlLnNldE1pbnV0ZXMoIDAgKTtcblx0XHRcdG5ld0RhdGUuc2V0U2Vjb25kcyggMCApO1xuXHRcdFx0bmV3RGF0ZS5zZXRNaWxsaXNlY29uZHMoIDAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCBuZXdEYXRlICk7XG5cdH0sXG5cblx0LyogSGFuZGxlIHN3aXRjaCB0by9mcm9tIGRheWxpZ2h0IHNhdmluZy5cblx0ICogSG91cnMgbWF5IGJlIG5vbi16ZXJvIG9uIGRheWxpZ2h0IHNhdmluZyBjdXQtb3Zlcjpcblx0ICogPiAxMiB3aGVuIG1pZG5pZ2h0IGNoYW5nZW92ZXIsIGJ1dCB0aGVuIGNhbm5vdCBnZW5lcmF0ZVxuXHQgKiBtaWRuaWdodCBkYXRldGltZSwgc28ganVtcCB0byAxQU0sIG90aGVyd2lzZSByZXNldC5cblx0ICogQHBhcmFtICBkYXRlICAoRGF0ZSkgdGhlIGRhdGUgdG8gY2hlY2tcblx0ICogQHJldHVybiAgKERhdGUpIHRoZSBjb3JyZWN0ZWQgZGF0ZVxuXHQgKi9cblx0X2RheWxpZ2h0U2F2aW5nQWRqdXN0OiBmdW5jdGlvbiggZGF0ZSApIHtcblx0XHRpZiAoICFkYXRlICkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGRhdGUuc2V0SG91cnMoIGRhdGUuZ2V0SG91cnMoKSA+IDEyID8gZGF0ZS5nZXRIb3VycygpICsgMiA6IDAgKTtcblx0XHRyZXR1cm4gZGF0ZTtcblx0fSxcblxuXHQvKiBTZXQgdGhlIGRhdGUocykgZGlyZWN0bHkuICovXG5cdF9zZXREYXRlOiBmdW5jdGlvbiggaW5zdCwgZGF0ZSwgbm9DaGFuZ2UgKSB7XG5cdFx0dmFyIGNsZWFyID0gIWRhdGUsXG5cdFx0XHRvcmlnTW9udGggPSBpbnN0LnNlbGVjdGVkTW9udGgsXG5cdFx0XHRvcmlnWWVhciA9IGluc3Quc2VsZWN0ZWRZZWFyLFxuXHRcdFx0bmV3RGF0ZSA9IHRoaXMuX3Jlc3RyaWN0TWluTWF4KCBpbnN0LCB0aGlzLl9kZXRlcm1pbmVEYXRlKCBpbnN0LCBkYXRlLCBuZXcgRGF0ZSgpICkgKTtcblxuXHRcdGluc3Quc2VsZWN0ZWREYXkgPSBpbnN0LmN1cnJlbnREYXkgPSBuZXdEYXRlLmdldERhdGUoKTtcblx0XHRpbnN0LmRyYXdNb250aCA9IGluc3Quc2VsZWN0ZWRNb250aCA9IGluc3QuY3VycmVudE1vbnRoID0gbmV3RGF0ZS5nZXRNb250aCgpO1xuXHRcdGluc3QuZHJhd1llYXIgPSBpbnN0LnNlbGVjdGVkWWVhciA9IGluc3QuY3VycmVudFllYXIgPSBuZXdEYXRlLmdldEZ1bGxZZWFyKCk7XG5cdFx0aWYgKCAoIG9yaWdNb250aCAhPT0gaW5zdC5zZWxlY3RlZE1vbnRoIHx8IG9yaWdZZWFyICE9PSBpbnN0LnNlbGVjdGVkWWVhciApICYmICFub0NoYW5nZSApIHtcblx0XHRcdHRoaXMuX25vdGlmeUNoYW5nZSggaW5zdCApO1xuXHRcdH1cblx0XHR0aGlzLl9hZGp1c3RJbnN0RGF0ZSggaW5zdCApO1xuXHRcdGlmICggaW5zdC5pbnB1dCApIHtcblx0XHRcdGluc3QuaW5wdXQudmFsKCBjbGVhciA/IFwiXCIgOiB0aGlzLl9mb3JtYXREYXRlKCBpbnN0ICkgKTtcblx0XHR9XG5cdH0sXG5cblx0LyogUmV0cmlldmUgdGhlIGRhdGUocykgZGlyZWN0bHkuICovXG5cdF9nZXREYXRlOiBmdW5jdGlvbiggaW5zdCApIHtcblx0XHR2YXIgc3RhcnREYXRlID0gKCAhaW5zdC5jdXJyZW50WWVhciB8fCAoIGluc3QuaW5wdXQgJiYgaW5zdC5pbnB1dC52YWwoKSA9PT0gXCJcIiApID8gbnVsbCA6XG5cdFx0XHR0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoXG5cdFx0XHRpbnN0LmN1cnJlbnRZZWFyLCBpbnN0LmN1cnJlbnRNb250aCwgaW5zdC5jdXJyZW50RGF5ICkgKSApO1xuXHRcdFx0cmV0dXJuIHN0YXJ0RGF0ZTtcblx0fSxcblxuXHQvKiBBdHRhY2ggdGhlIG9ueHh4IGhhbmRsZXJzLiAgVGhlc2UgYXJlIGRlY2xhcmVkIHN0YXRpY2FsbHkgc29cblx0ICogdGhleSB3b3JrIHdpdGggc3RhdGljIGNvZGUgdHJhbnNmb3JtZXJzIGxpa2UgQ2FqYS5cblx0ICovXG5cdF9hdHRhY2hIYW5kbGVyczogZnVuY3Rpb24oIGluc3QgKSB7XG5cdFx0dmFyIHN0ZXBNb250aHMgPSB0aGlzLl9nZXQoIGluc3QsIFwic3RlcE1vbnRoc1wiICksXG5cdFx0XHRpZCA9IFwiI1wiICsgaW5zdC5pZC5yZXBsYWNlKCAvXFxcXFxcXFwvZywgXCJcXFxcXCIgKTtcblx0XHRpbnN0LmRwRGl2LmZpbmQoIFwiW2RhdGEtaGFuZGxlcl1cIiApLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaGFuZGxlciA9IHtcblx0XHRcdFx0cHJldjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKCBpZCwgLXN0ZXBNb250aHMsIFwiTVwiICk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5leHQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdCQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZSggaWQsICtzdGVwTW9udGhzLCBcIk1cIiApO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRvZGF5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX2dvdG9Ub2RheSggaWQgKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2VsZWN0RGF5OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX3NlbGVjdERheSggaWQsICt0aGlzLmdldEF0dHJpYnV0ZSggXCJkYXRhLW1vbnRoXCIgKSwgK3RoaXMuZ2V0QXR0cmlidXRlKCBcImRhdGEteWVhclwiICksIHRoaXMgKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNlbGVjdE1vbnRoOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhciggaWQsIHRoaXMsIFwiTVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzZWxlY3RZZWFyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHQkLmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhciggaWQsIHRoaXMsIFwiWVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0JCggdGhpcyApLm9uKCB0aGlzLmdldEF0dHJpYnV0ZSggXCJkYXRhLWV2ZW50XCIgKSwgaGFuZGxlclsgdGhpcy5nZXRBdHRyaWJ1dGUoIFwiZGF0YS1oYW5kbGVyXCIgKSBdICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdC8qIEdlbmVyYXRlIHRoZSBIVE1MIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZGF0ZSBwaWNrZXIuICovXG5cdF9nZW5lcmF0ZUhUTUw6IGZ1bmN0aW9uKCBpbnN0ICkge1xuXHRcdHZhciBtYXhEcmF3LCBwcmV2VGV4dCwgcHJldiwgbmV4dFRleHQsIG5leHQsIGN1cnJlbnRUZXh0LCBnb3RvRGF0ZSxcblx0XHRcdGNvbnRyb2xzLCBidXR0b25QYW5lbCwgZmlyc3REYXksIHNob3dXZWVrLCBkYXlOYW1lcywgZGF5TmFtZXNNaW4sXG5cdFx0XHRtb250aE5hbWVzLCBtb250aE5hbWVzU2hvcnQsIGJlZm9yZVNob3dEYXksIHNob3dPdGhlck1vbnRocyxcblx0XHRcdHNlbGVjdE90aGVyTW9udGhzLCBkZWZhdWx0RGF0ZSwgaHRtbCwgZG93LCByb3csIGdyb3VwLCBjb2wsIHNlbGVjdGVkRGF0ZSxcblx0XHRcdGNvcm5lckNsYXNzLCBjYWxlbmRlciwgdGhlYWQsIGRheSwgZGF5c0luTW9udGgsIGxlYWREYXlzLCBjdXJSb3dzLCBudW1Sb3dzLFxuXHRcdFx0cHJpbnREYXRlLCBkUm93LCB0Ym9keSwgZGF5U2V0dGluZ3MsIG90aGVyTW9udGgsIHVuc2VsZWN0YWJsZSxcblx0XHRcdHRlbXBEYXRlID0gbmV3IERhdGUoKSxcblx0XHRcdHRvZGF5ID0gdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoXG5cdFx0XHRcdG5ldyBEYXRlKCB0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpLCB0ZW1wRGF0ZS5nZXRNb250aCgpLCB0ZW1wRGF0ZS5nZXREYXRlKCkgKSApLCAvLyBjbGVhciB0aW1lXG5cdFx0XHRpc1JUTCA9IHRoaXMuX2dldCggaW5zdCwgXCJpc1JUTFwiICksXG5cdFx0XHRzaG93QnV0dG9uUGFuZWwgPSB0aGlzLl9nZXQoIGluc3QsIFwic2hvd0J1dHRvblBhbmVsXCIgKSxcblx0XHRcdGhpZGVJZk5vUHJldk5leHQgPSB0aGlzLl9nZXQoIGluc3QsIFwiaGlkZUlmTm9QcmV2TmV4dFwiICksXG5cdFx0XHRuYXZpZ2F0aW9uQXNEYXRlRm9ybWF0ID0gdGhpcy5fZ2V0KCBpbnN0LCBcIm5hdmlnYXRpb25Bc0RhdGVGb3JtYXRcIiApLFxuXHRcdFx0bnVtTW9udGhzID0gdGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoIGluc3QgKSxcblx0XHRcdHNob3dDdXJyZW50QXRQb3MgPSB0aGlzLl9nZXQoIGluc3QsIFwic2hvd0N1cnJlbnRBdFBvc1wiICksXG5cdFx0XHRzdGVwTW9udGhzID0gdGhpcy5fZ2V0KCBpbnN0LCBcInN0ZXBNb250aHNcIiApLFxuXHRcdFx0aXNNdWx0aU1vbnRoID0gKCBudW1Nb250aHNbIDAgXSAhPT0gMSB8fCBudW1Nb250aHNbIDEgXSAhPT0gMSApLFxuXHRcdFx0Y3VycmVudERhdGUgPSB0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggKCAhaW5zdC5jdXJyZW50RGF5ID8gbmV3IERhdGUoIDk5OTksIDksIDkgKSA6XG5cdFx0XHRcdG5ldyBEYXRlKCBpbnN0LmN1cnJlbnRZZWFyLCBpbnN0LmN1cnJlbnRNb250aCwgaW5zdC5jdXJyZW50RGF5ICkgKSApLFxuXHRcdFx0bWluRGF0ZSA9IHRoaXMuX2dldE1pbk1heERhdGUoIGluc3QsIFwibWluXCIgKSxcblx0XHRcdG1heERhdGUgPSB0aGlzLl9nZXRNaW5NYXhEYXRlKCBpbnN0LCBcIm1heFwiICksXG5cdFx0XHRkcmF3TW9udGggPSBpbnN0LmRyYXdNb250aCAtIHNob3dDdXJyZW50QXRQb3MsXG5cdFx0XHRkcmF3WWVhciA9IGluc3QuZHJhd1llYXI7XG5cblx0XHRpZiAoIGRyYXdNb250aCA8IDAgKSB7XG5cdFx0XHRkcmF3TW9udGggKz0gMTI7XG5cdFx0XHRkcmF3WWVhci0tO1xuXHRcdH1cblx0XHRpZiAoIG1heERhdGUgKSB7XG5cdFx0XHRtYXhEcmF3ID0gdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoIG5ldyBEYXRlKCBtYXhEYXRlLmdldEZ1bGxZZWFyKCksXG5cdFx0XHRcdG1heERhdGUuZ2V0TW9udGgoKSAtICggbnVtTW9udGhzWyAwIF0gKiBudW1Nb250aHNbIDEgXSApICsgMSwgbWF4RGF0ZS5nZXREYXRlKCkgKSApO1xuXHRcdFx0bWF4RHJhdyA9ICggbWluRGF0ZSAmJiBtYXhEcmF3IDwgbWluRGF0ZSA/IG1pbkRhdGUgOiBtYXhEcmF3ICk7XG5cdFx0XHR3aGlsZSAoIHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCBuZXcgRGF0ZSggZHJhd1llYXIsIGRyYXdNb250aCwgMSApICkgPiBtYXhEcmF3ICkge1xuXHRcdFx0XHRkcmF3TW9udGgtLTtcblx0XHRcdFx0aWYgKCBkcmF3TW9udGggPCAwICkge1xuXHRcdFx0XHRcdGRyYXdNb250aCA9IDExO1xuXHRcdFx0XHRcdGRyYXdZZWFyLS07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aW5zdC5kcmF3TW9udGggPSBkcmF3TW9udGg7XG5cdFx0aW5zdC5kcmF3WWVhciA9IGRyYXdZZWFyO1xuXG5cdFx0cHJldlRleHQgPSB0aGlzLl9nZXQoIGluc3QsIFwicHJldlRleHRcIiApO1xuXHRcdHByZXZUZXh0ID0gKCAhbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdCA/IHByZXZUZXh0IDogdGhpcy5mb3JtYXREYXRlKCBwcmV2VGV4dCxcblx0XHRcdHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCBuZXcgRGF0ZSggZHJhd1llYXIsIGRyYXdNb250aCAtIHN0ZXBNb250aHMsIDEgKSApLFxuXHRcdFx0dGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKCBpbnN0ICkgKSApO1xuXG5cdFx0cHJldiA9ICggdGhpcy5fY2FuQWRqdXN0TW9udGgoIGluc3QsIC0xLCBkcmF3WWVhciwgZHJhd01vbnRoICkgP1xuXHRcdFx0XCI8YSBjbGFzcz0ndWktZGF0ZXBpY2tlci1wcmV2IHVpLWNvcm5lci1hbGwnIGRhdGEtaGFuZGxlcj0ncHJldicgZGF0YS1ldmVudD0nY2xpY2snXCIgK1xuXHRcdFx0XCIgdGl0bGU9J1wiICsgcHJldlRleHQgKyBcIic+PHNwYW4gY2xhc3M9J3VpLWljb24gdWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtXCIgKyAoIGlzUlRMID8gXCJlXCIgOiBcIndcIiApICsgXCInPlwiICsgcHJldlRleHQgKyBcIjwvc3Bhbj48L2E+XCIgOlxuXHRcdFx0KCBoaWRlSWZOb1ByZXZOZXh0ID8gXCJcIiA6IFwiPGEgY2xhc3M9J3VpLWRhdGVwaWNrZXItcHJldiB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWRpc2FibGVkJyB0aXRsZT0nXCIgKyBwcmV2VGV4dCArIFwiJz48c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS1cIiArICggaXNSVEwgPyBcImVcIiA6IFwid1wiICkgKyBcIic+XCIgKyBwcmV2VGV4dCArIFwiPC9zcGFuPjwvYT5cIiApICk7XG5cblx0XHRuZXh0VGV4dCA9IHRoaXMuX2dldCggaW5zdCwgXCJuZXh0VGV4dFwiICk7XG5cdFx0bmV4dFRleHQgPSAoICFuYXZpZ2F0aW9uQXNEYXRlRm9ybWF0ID8gbmV4dFRleHQgOiB0aGlzLmZvcm1hdERhdGUoIG5leHRUZXh0LFxuXHRcdFx0dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoIG5ldyBEYXRlKCBkcmF3WWVhciwgZHJhd01vbnRoICsgc3RlcE1vbnRocywgMSApICksXG5cdFx0XHR0aGlzLl9nZXRGb3JtYXRDb25maWcoIGluc3QgKSApICk7XG5cblx0XHRuZXh0ID0gKCB0aGlzLl9jYW5BZGp1c3RNb250aCggaW5zdCwgKzEsIGRyYXdZZWFyLCBkcmF3TW9udGggKSA/XG5cdFx0XHRcIjxhIGNsYXNzPSd1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCcgZGF0YS1oYW5kbGVyPSduZXh0JyBkYXRhLWV2ZW50PSdjbGljaydcIiArXG5cdFx0XHRcIiB0aXRsZT0nXCIgKyBuZXh0VGV4dCArIFwiJz48c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS1cIiArICggaXNSVEwgPyBcIndcIiA6IFwiZVwiICkgKyBcIic+XCIgKyBuZXh0VGV4dCArIFwiPC9zcGFuPjwvYT5cIiA6XG5cdFx0XHQoIGhpZGVJZk5vUHJldk5leHQgPyBcIlwiIDogXCI8YSBjbGFzcz0ndWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtZGlzYWJsZWQnIHRpdGxlPSdcIiArIG5leHRUZXh0ICsgXCInPjxzcGFuIGNsYXNzPSd1aS1pY29uIHVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLVwiICsgKCBpc1JUTCA/IFwid1wiIDogXCJlXCIgKSArIFwiJz5cIiArIG5leHRUZXh0ICsgXCI8L3NwYW4+PC9hPlwiICkgKTtcblxuXHRcdGN1cnJlbnRUZXh0ID0gdGhpcy5fZ2V0KCBpbnN0LCBcImN1cnJlbnRUZXh0XCIgKTtcblx0XHRnb3RvRGF0ZSA9ICggdGhpcy5fZ2V0KCBpbnN0LCBcImdvdG9DdXJyZW50XCIgKSAmJiBpbnN0LmN1cnJlbnREYXkgPyBjdXJyZW50RGF0ZSA6IHRvZGF5ICk7XG5cdFx0Y3VycmVudFRleHQgPSAoICFuYXZpZ2F0aW9uQXNEYXRlRm9ybWF0ID8gY3VycmVudFRleHQgOlxuXHRcdFx0dGhpcy5mb3JtYXREYXRlKCBjdXJyZW50VGV4dCwgZ290b0RhdGUsIHRoaXMuX2dldEZvcm1hdENvbmZpZyggaW5zdCApICkgKTtcblxuXHRcdGNvbnRyb2xzID0gKCAhaW5zdC5pbmxpbmUgPyBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0ndWktZGF0ZXBpY2tlci1jbG9zZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXByaW1hcnkgdWktY29ybmVyLWFsbCcgZGF0YS1oYW5kbGVyPSdoaWRlJyBkYXRhLWV2ZW50PSdjbGljayc+XCIgK1xuXHRcdFx0dGhpcy5fZ2V0KCBpbnN0LCBcImNsb3NlVGV4dFwiICkgKyBcIjwvYnV0dG9uPlwiIDogXCJcIiApO1xuXG5cdFx0YnV0dG9uUGFuZWwgPSAoIHNob3dCdXR0b25QYW5lbCApID8gXCI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQnPlwiICsgKCBpc1JUTCA/IGNvbnRyb2xzIDogXCJcIiApICtcblx0XHRcdCggdGhpcy5faXNJblJhbmdlKCBpbnN0LCBnb3RvRGF0ZSApID8gXCI8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9J3VpLWRhdGVwaWNrZXItY3VycmVudCB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXNlY29uZGFyeSB1aS1jb3JuZXItYWxsJyBkYXRhLWhhbmRsZXI9J3RvZGF5JyBkYXRhLWV2ZW50PSdjbGljaydcIiArXG5cdFx0XHRcIj5cIiArIGN1cnJlbnRUZXh0ICsgXCI8L2J1dHRvbj5cIiA6IFwiXCIgKSArICggaXNSVEwgPyBcIlwiIDogY29udHJvbHMgKSArIFwiPC9kaXY+XCIgOiBcIlwiO1xuXG5cdFx0Zmlyc3REYXkgPSBwYXJzZUludCggdGhpcy5fZ2V0KCBpbnN0LCBcImZpcnN0RGF5XCIgKSwgMTAgKTtcblx0XHRmaXJzdERheSA9ICggaXNOYU4oIGZpcnN0RGF5ICkgPyAwIDogZmlyc3REYXkgKTtcblxuXHRcdHNob3dXZWVrID0gdGhpcy5fZ2V0KCBpbnN0LCBcInNob3dXZWVrXCIgKTtcblx0XHRkYXlOYW1lcyA9IHRoaXMuX2dldCggaW5zdCwgXCJkYXlOYW1lc1wiICk7XG5cdFx0ZGF5TmFtZXNNaW4gPSB0aGlzLl9nZXQoIGluc3QsIFwiZGF5TmFtZXNNaW5cIiApO1xuXHRcdG1vbnRoTmFtZXMgPSB0aGlzLl9nZXQoIGluc3QsIFwibW9udGhOYW1lc1wiICk7XG5cdFx0bW9udGhOYW1lc1Nob3J0ID0gdGhpcy5fZ2V0KCBpbnN0LCBcIm1vbnRoTmFtZXNTaG9ydFwiICk7XG5cdFx0YmVmb3JlU2hvd0RheSA9IHRoaXMuX2dldCggaW5zdCwgXCJiZWZvcmVTaG93RGF5XCIgKTtcblx0XHRzaG93T3RoZXJNb250aHMgPSB0aGlzLl9nZXQoIGluc3QsIFwic2hvd090aGVyTW9udGhzXCIgKTtcblx0XHRzZWxlY3RPdGhlck1vbnRocyA9IHRoaXMuX2dldCggaW5zdCwgXCJzZWxlY3RPdGhlck1vbnRoc1wiICk7XG5cdFx0ZGVmYXVsdERhdGUgPSB0aGlzLl9nZXREZWZhdWx0RGF0ZSggaW5zdCApO1xuXHRcdGh0bWwgPSBcIlwiO1xuXG5cdFx0Zm9yICggcm93ID0gMDsgcm93IDwgbnVtTW9udGhzWyAwIF07IHJvdysrICkge1xuXHRcdFx0Z3JvdXAgPSBcIlwiO1xuXHRcdFx0dGhpcy5tYXhSb3dzID0gNDtcblx0XHRcdGZvciAoIGNvbCA9IDA7IGNvbCA8IG51bU1vbnRoc1sgMSBdOyBjb2wrKyApIHtcblx0XHRcdFx0c2VsZWN0ZWREYXRlID0gdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoIG5ldyBEYXRlKCBkcmF3WWVhciwgZHJhd01vbnRoLCBpbnN0LnNlbGVjdGVkRGF5ICkgKTtcblx0XHRcdFx0Y29ybmVyQ2xhc3MgPSBcIiB1aS1jb3JuZXItYWxsXCI7XG5cdFx0XHRcdGNhbGVuZGVyID0gXCJcIjtcblx0XHRcdFx0aWYgKCBpc011bHRpTW9udGggKSB7XG5cdFx0XHRcdFx0Y2FsZW5kZXIgKz0gXCI8ZGl2IGNsYXNzPSd1aS1kYXRlcGlja2VyLWdyb3VwXCI7XG5cdFx0XHRcdFx0aWYgKCBudW1Nb250aHNbIDEgXSA+IDEgKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKCBjb2wgKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgMDogY2FsZW5kZXIgKz0gXCIgdWktZGF0ZXBpY2tlci1ncm91cC1maXJzdFwiO1xuXHRcdFx0XHRcdFx0XHRcdGNvcm5lckNsYXNzID0gXCIgdWktY29ybmVyLVwiICsgKCBpc1JUTCA/IFwicmlnaHRcIiA6IFwibGVmdFwiICk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIG51bU1vbnRoc1sgMSBdIC0gMTogY2FsZW5kZXIgKz0gXCIgdWktZGF0ZXBpY2tlci1ncm91cC1sYXN0XCI7XG5cdFx0XHRcdFx0XHRcdFx0Y29ybmVyQ2xhc3MgPSBcIiB1aS1jb3JuZXItXCIgKyAoIGlzUlRMID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCIgKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdGRlZmF1bHQ6IGNhbGVuZGVyICs9IFwiIHVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlXCI7IGNvcm5lckNsYXNzID0gXCJcIjsgYnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhbGVuZGVyICs9IFwiJz5cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRjYWxlbmRlciArPSBcIjxkaXYgY2xhc3M9J3VpLWRhdGVwaWNrZXItaGVhZGVyIHVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4XCIgKyBjb3JuZXJDbGFzcyArIFwiJz5cIiArXG5cdFx0XHRcdFx0KCAvYWxsfGxlZnQvLnRlc3QoIGNvcm5lckNsYXNzICkgJiYgcm93ID09PSAwID8gKCBpc1JUTCA/IG5leHQgOiBwcmV2ICkgOiBcIlwiICkgK1xuXHRcdFx0XHRcdCggL2FsbHxyaWdodC8udGVzdCggY29ybmVyQ2xhc3MgKSAmJiByb3cgPT09IDAgPyAoIGlzUlRMID8gcHJldiA6IG5leHQgKSA6IFwiXCIgKSArXG5cdFx0XHRcdFx0dGhpcy5fZ2VuZXJhdGVNb250aFllYXJIZWFkZXIoIGluc3QsIGRyYXdNb250aCwgZHJhd1llYXIsIG1pbkRhdGUsIG1heERhdGUsXG5cdFx0XHRcdFx0cm93ID4gMCB8fCBjb2wgPiAwLCBtb250aE5hbWVzLCBtb250aE5hbWVzU2hvcnQgKSArIC8vIGRyYXcgbW9udGggaGVhZGVyc1xuXHRcdFx0XHRcdFwiPC9kaXY+PHRhYmxlIGNsYXNzPSd1aS1kYXRlcGlja2VyLWNhbGVuZGFyJz48dGhlYWQ+XCIgK1xuXHRcdFx0XHRcdFwiPHRyPlwiO1xuXHRcdFx0XHR0aGVhZCA9ICggc2hvd1dlZWsgPyBcIjx0aCBjbGFzcz0ndWktZGF0ZXBpY2tlci13ZWVrLWNvbCc+XCIgKyB0aGlzLl9nZXQoIGluc3QsIFwid2Vla0hlYWRlclwiICkgKyBcIjwvdGg+XCIgOiBcIlwiICk7XG5cdFx0XHRcdGZvciAoIGRvdyA9IDA7IGRvdyA8IDc7IGRvdysrICkgeyAvLyBkYXlzIG9mIHRoZSB3ZWVrXG5cdFx0XHRcdFx0ZGF5ID0gKCBkb3cgKyBmaXJzdERheSApICUgNztcblx0XHRcdFx0XHR0aGVhZCArPSBcIjx0aCBzY29wZT0nY29sJ1wiICsgKCAoIGRvdyArIGZpcnN0RGF5ICsgNiApICUgNyA+PSA1ID8gXCIgY2xhc3M9J3VpLWRhdGVwaWNrZXItd2Vlay1lbmQnXCIgOiBcIlwiICkgKyBcIj5cIiArXG5cdFx0XHRcdFx0XHRcIjxzcGFuIHRpdGxlPSdcIiArIGRheU5hbWVzWyBkYXkgXSArIFwiJz5cIiArIGRheU5hbWVzTWluWyBkYXkgXSArIFwiPC9zcGFuPjwvdGg+XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FsZW5kZXIgKz0gdGhlYWQgKyBcIjwvdHI+PC90aGVhZD48dGJvZHk+XCI7XG5cdFx0XHRcdGRheXNJbk1vbnRoID0gdGhpcy5fZ2V0RGF5c0luTW9udGgoIGRyYXdZZWFyLCBkcmF3TW9udGggKTtcblx0XHRcdFx0aWYgKCBkcmF3WWVhciA9PT0gaW5zdC5zZWxlY3RlZFllYXIgJiYgZHJhd01vbnRoID09PSBpbnN0LnNlbGVjdGVkTW9udGggKSB7XG5cdFx0XHRcdFx0aW5zdC5zZWxlY3RlZERheSA9IE1hdGgubWluKCBpbnN0LnNlbGVjdGVkRGF5LCBkYXlzSW5Nb250aCApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxlYWREYXlzID0gKCB0aGlzLl9nZXRGaXJzdERheU9mTW9udGgoIGRyYXdZZWFyLCBkcmF3TW9udGggKSAtIGZpcnN0RGF5ICsgNyApICUgNztcblx0XHRcdFx0Y3VyUm93cyA9IE1hdGguY2VpbCggKCBsZWFkRGF5cyArIGRheXNJbk1vbnRoICkgLyA3ICk7IC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gZ2VuZXJhdGVcblx0XHRcdFx0bnVtUm93cyA9ICggaXNNdWx0aU1vbnRoID8gdGhpcy5tYXhSb3dzID4gY3VyUm93cyA/IHRoaXMubWF4Um93cyA6IGN1clJvd3MgOiBjdXJSb3dzICk7IC8vSWYgbXVsdGlwbGUgbW9udGhzLCB1c2UgdGhlIGhpZ2hlciBudW1iZXIgb2Ygcm93cyAoc2VlICM3MDQzKVxuXHRcdFx0XHR0aGlzLm1heFJvd3MgPSBudW1Sb3dzO1xuXHRcdFx0XHRwcmludERhdGUgPSB0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoIGRyYXdZZWFyLCBkcmF3TW9udGgsIDEgLSBsZWFkRGF5cyApICk7XG5cdFx0XHRcdGZvciAoIGRSb3cgPSAwOyBkUm93IDwgbnVtUm93czsgZFJvdysrICkgeyAvLyBjcmVhdGUgZGF0ZSBwaWNrZXIgcm93c1xuXHRcdFx0XHRcdGNhbGVuZGVyICs9IFwiPHRyPlwiO1xuXHRcdFx0XHRcdHRib2R5ID0gKCAhc2hvd1dlZWsgPyBcIlwiIDogXCI8dGQgY2xhc3M9J3VpLWRhdGVwaWNrZXItd2Vlay1jb2wnPlwiICtcblx0XHRcdFx0XHRcdHRoaXMuX2dldCggaW5zdCwgXCJjYWxjdWxhdGVXZWVrXCIgKSggcHJpbnREYXRlICkgKyBcIjwvdGQ+XCIgKTtcblx0XHRcdFx0XHRmb3IgKCBkb3cgPSAwOyBkb3cgPCA3OyBkb3crKyApIHsgLy8gY3JlYXRlIGRhdGUgcGlja2VyIGRheXNcblx0XHRcdFx0XHRcdGRheVNldHRpbmdzID0gKCBiZWZvcmVTaG93RGF5ID9cblx0XHRcdFx0XHRcdFx0YmVmb3JlU2hvd0RheS5hcHBseSggKCBpbnN0LmlucHV0ID8gaW5zdC5pbnB1dFsgMCBdIDogbnVsbCApLCBbIHByaW50RGF0ZSBdICkgOiBbIHRydWUsIFwiXCIgXSApO1xuXHRcdFx0XHRcdFx0b3RoZXJNb250aCA9ICggcHJpbnREYXRlLmdldE1vbnRoKCkgIT09IGRyYXdNb250aCApO1xuXHRcdFx0XHRcdFx0dW5zZWxlY3RhYmxlID0gKCBvdGhlck1vbnRoICYmICFzZWxlY3RPdGhlck1vbnRocyApIHx8ICFkYXlTZXR0aW5nc1sgMCBdIHx8XG5cdFx0XHRcdFx0XHRcdCggbWluRGF0ZSAmJiBwcmludERhdGUgPCBtaW5EYXRlICkgfHwgKCBtYXhEYXRlICYmIHByaW50RGF0ZSA+IG1heERhdGUgKTtcblx0XHRcdFx0XHRcdHRib2R5ICs9IFwiPHRkIGNsYXNzPSdcIiArXG5cdFx0XHRcdFx0XHRcdCggKCBkb3cgKyBmaXJzdERheSArIDYgKSAlIDcgPj0gNSA/IFwiIHVpLWRhdGVwaWNrZXItd2Vlay1lbmRcIiA6IFwiXCIgKSArIC8vIGhpZ2hsaWdodCB3ZWVrZW5kc1xuXHRcdFx0XHRcdFx0XHQoIG90aGVyTW9udGggPyBcIiB1aS1kYXRlcGlja2VyLW90aGVyLW1vbnRoXCIgOiBcIlwiICkgKyAvLyBoaWdobGlnaHQgZGF5cyBmcm9tIG90aGVyIG1vbnRoc1xuXHRcdFx0XHRcdFx0XHQoICggcHJpbnREYXRlLmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSAmJiBkcmF3TW9udGggPT09IGluc3Quc2VsZWN0ZWRNb250aCAmJiBpbnN0Ll9rZXlFdmVudCApIHx8IC8vIHVzZXIgcHJlc3NlZCBrZXlcblx0XHRcdFx0XHRcdFx0KCBkZWZhdWx0RGF0ZS5nZXRUaW1lKCkgPT09IHByaW50RGF0ZS5nZXRUaW1lKCkgJiYgZGVmYXVsdERhdGUuZ2V0VGltZSgpID09PSBzZWxlY3RlZERhdGUuZ2V0VGltZSgpICkgP1xuXG5cdFx0XHRcdFx0XHRcdC8vIG9yIGRlZmF1bHREYXRlIGlzIGN1cnJlbnQgcHJpbnRlZERhdGUgYW5kIGRlZmF1bHREYXRlIGlzIHNlbGVjdGVkRGF0ZVxuXHRcdFx0XHRcdFx0XHRcIiBcIiArIHRoaXMuX2RheU92ZXJDbGFzcyA6IFwiXCIgKSArIC8vIGhpZ2hsaWdodCBzZWxlY3RlZCBkYXlcblx0XHRcdFx0XHRcdFx0KCB1bnNlbGVjdGFibGUgPyBcIiBcIiArIHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzICsgXCIgdWktc3RhdGUtZGlzYWJsZWRcIiA6IFwiXCIgKSArICAvLyBoaWdobGlnaHQgdW5zZWxlY3RhYmxlIGRheXNcblx0XHRcdFx0XHRcdFx0KCBvdGhlck1vbnRoICYmICFzaG93T3RoZXJNb250aHMgPyBcIlwiIDogXCIgXCIgKyBkYXlTZXR0aW5nc1sgMSBdICsgLy8gaGlnaGxpZ2h0IGN1c3RvbSBkYXRlc1xuXHRcdFx0XHRcdFx0XHQoIHByaW50RGF0ZS5nZXRUaW1lKCkgPT09IGN1cnJlbnREYXRlLmdldFRpbWUoKSA/IFwiIFwiICsgdGhpcy5fY3VycmVudENsYXNzIDogXCJcIiApICsgLy8gaGlnaGxpZ2h0IHNlbGVjdGVkIGRheVxuXHRcdFx0XHRcdFx0XHQoIHByaW50RGF0ZS5nZXRUaW1lKCkgPT09IHRvZGF5LmdldFRpbWUoKSA/IFwiIHVpLWRhdGVwaWNrZXItdG9kYXlcIiA6IFwiXCIgKSApICsgXCInXCIgKyAvLyBoaWdobGlnaHQgdG9kYXkgKGlmIGRpZmZlcmVudClcblx0XHRcdFx0XHRcdFx0KCAoICFvdGhlck1vbnRoIHx8IHNob3dPdGhlck1vbnRocyApICYmIGRheVNldHRpbmdzWyAyIF0gPyBcIiB0aXRsZT0nXCIgKyBkYXlTZXR0aW5nc1sgMiBdLnJlcGxhY2UoIC8nL2csIFwiJiMzOTtcIiApICsgXCInXCIgOiBcIlwiICkgKyAvLyBjZWxsIHRpdGxlXG5cdFx0XHRcdFx0XHRcdCggdW5zZWxlY3RhYmxlID8gXCJcIiA6IFwiIGRhdGEtaGFuZGxlcj0nc2VsZWN0RGF5JyBkYXRhLWV2ZW50PSdjbGljaycgZGF0YS1tb250aD0nXCIgKyBwcmludERhdGUuZ2V0TW9udGgoKSArIFwiJyBkYXRhLXllYXI9J1wiICsgcHJpbnREYXRlLmdldEZ1bGxZZWFyKCkgKyBcIidcIiApICsgXCI+XCIgKyAvLyBhY3Rpb25zXG5cdFx0XHRcdFx0XHRcdCggb3RoZXJNb250aCAmJiAhc2hvd090aGVyTW9udGhzID8gXCImI3hhMDtcIiA6IC8vIGRpc3BsYXkgZm9yIG90aGVyIG1vbnRoc1xuXHRcdFx0XHRcdFx0XHQoIHVuc2VsZWN0YWJsZSA/IFwiPHNwYW4gY2xhc3M9J3VpLXN0YXRlLWRlZmF1bHQnPlwiICsgcHJpbnREYXRlLmdldERhdGUoKSArIFwiPC9zcGFuPlwiIDogXCI8YSBjbGFzcz0ndWktc3RhdGUtZGVmYXVsdFwiICtcblx0XHRcdFx0XHRcdFx0KCBwcmludERhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCkgPyBcIiB1aS1zdGF0ZS1oaWdobGlnaHRcIiA6IFwiXCIgKSArXG5cdFx0XHRcdFx0XHRcdCggcHJpbnREYXRlLmdldFRpbWUoKSA9PT0gY3VycmVudERhdGUuZ2V0VGltZSgpID8gXCIgdWktc3RhdGUtYWN0aXZlXCIgOiBcIlwiICkgKyAvLyBoaWdobGlnaHQgc2VsZWN0ZWQgZGF5XG5cdFx0XHRcdFx0XHRcdCggb3RoZXJNb250aCA/IFwiIHVpLXByaW9yaXR5LXNlY29uZGFyeVwiIDogXCJcIiApICsgLy8gZGlzdGluZ3Vpc2ggZGF0ZXMgZnJvbSBvdGhlciBtb250aHNcblx0XHRcdFx0XHRcdFx0XCInIGhyZWY9JyMnPlwiICsgcHJpbnREYXRlLmdldERhdGUoKSArIFwiPC9hPlwiICkgKSArIFwiPC90ZD5cIjsgLy8gZGlzcGxheSBzZWxlY3RhYmxlIGRhdGVcblx0XHRcdFx0XHRcdHByaW50RGF0ZS5zZXREYXRlKCBwcmludERhdGUuZ2V0RGF0ZSgpICsgMSApO1xuXHRcdFx0XHRcdFx0cHJpbnREYXRlID0gdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoIHByaW50RGF0ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYWxlbmRlciArPSB0Ym9keSArIFwiPC90cj5cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRkcmF3TW9udGgrKztcblx0XHRcdFx0aWYgKCBkcmF3TW9udGggPiAxMSApIHtcblx0XHRcdFx0XHRkcmF3TW9udGggPSAwO1xuXHRcdFx0XHRcdGRyYXdZZWFyKys7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FsZW5kZXIgKz0gXCI8L3Rib2R5PjwvdGFibGU+XCIgKyAoIGlzTXVsdGlNb250aCA/IFwiPC9kaXY+XCIgK1xuXHRcdFx0XHRcdFx0XHQoICggbnVtTW9udGhzWyAwIF0gPiAwICYmIGNvbCA9PT0gbnVtTW9udGhzWyAxIF0gLSAxICkgPyBcIjxkaXYgY2xhc3M9J3VpLWRhdGVwaWNrZXItcm93LWJyZWFrJz48L2Rpdj5cIiA6IFwiXCIgKSA6IFwiXCIgKTtcblx0XHRcdFx0Z3JvdXAgKz0gY2FsZW5kZXI7XG5cdFx0XHR9XG5cdFx0XHRodG1sICs9IGdyb3VwO1xuXHRcdH1cblx0XHRodG1sICs9IGJ1dHRvblBhbmVsO1xuXHRcdGluc3QuX2tleUV2ZW50ID0gZmFsc2U7XG5cdFx0cmV0dXJuIGh0bWw7XG5cdH0sXG5cblx0LyogR2VuZXJhdGUgdGhlIG1vbnRoIGFuZCB5ZWFyIGhlYWRlci4gKi9cblx0X2dlbmVyYXRlTW9udGhZZWFySGVhZGVyOiBmdW5jdGlvbiggaW5zdCwgZHJhd01vbnRoLCBkcmF3WWVhciwgbWluRGF0ZSwgbWF4RGF0ZSxcblx0XHRcdHNlY29uZGFyeSwgbW9udGhOYW1lcywgbW9udGhOYW1lc1Nob3J0ICkge1xuXG5cdFx0dmFyIGluTWluWWVhciwgaW5NYXhZZWFyLCBtb250aCwgeWVhcnMsIHRoaXNZZWFyLCBkZXRlcm1pbmVZZWFyLCB5ZWFyLCBlbmRZZWFyLFxuXHRcdFx0Y2hhbmdlTW9udGggPSB0aGlzLl9nZXQoIGluc3QsIFwiY2hhbmdlTW9udGhcIiApLFxuXHRcdFx0Y2hhbmdlWWVhciA9IHRoaXMuX2dldCggaW5zdCwgXCJjaGFuZ2VZZWFyXCIgKSxcblx0XHRcdHNob3dNb250aEFmdGVyWWVhciA9IHRoaXMuX2dldCggaW5zdCwgXCJzaG93TW9udGhBZnRlclllYXJcIiApLFxuXHRcdFx0aHRtbCA9IFwiPGRpdiBjbGFzcz0ndWktZGF0ZXBpY2tlci10aXRsZSc+XCIsXG5cdFx0XHRtb250aEh0bWwgPSBcIlwiO1xuXG5cdFx0Ly8gTW9udGggc2VsZWN0aW9uXG5cdFx0aWYgKCBzZWNvbmRhcnkgfHwgIWNoYW5nZU1vbnRoICkge1xuXHRcdFx0bW9udGhIdG1sICs9IFwiPHNwYW4gY2xhc3M9J3VpLWRhdGVwaWNrZXItbW9udGgnPlwiICsgbW9udGhOYW1lc1sgZHJhd01vbnRoIF0gKyBcIjwvc3Bhbj5cIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5NaW5ZZWFyID0gKCBtaW5EYXRlICYmIG1pbkRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gZHJhd1llYXIgKTtcblx0XHRcdGluTWF4WWVhciA9ICggbWF4RGF0ZSAmJiBtYXhEYXRlLmdldEZ1bGxZZWFyKCkgPT09IGRyYXdZZWFyICk7XG5cdFx0XHRtb250aEh0bWwgKz0gXCI8c2VsZWN0IGNsYXNzPSd1aS1kYXRlcGlja2VyLW1vbnRoJyBkYXRhLWhhbmRsZXI9J3NlbGVjdE1vbnRoJyBkYXRhLWV2ZW50PSdjaGFuZ2UnPlwiO1xuXHRcdFx0Zm9yICggbW9udGggPSAwOyBtb250aCA8IDEyOyBtb250aCsrICkge1xuXHRcdFx0XHRpZiAoICggIWluTWluWWVhciB8fCBtb250aCA+PSBtaW5EYXRlLmdldE1vbnRoKCkgKSAmJiAoICFpbk1heFllYXIgfHwgbW9udGggPD0gbWF4RGF0ZS5nZXRNb250aCgpICkgKSB7XG5cdFx0XHRcdFx0bW9udGhIdG1sICs9IFwiPG9wdGlvbiB2YWx1ZT0nXCIgKyBtb250aCArIFwiJ1wiICtcblx0XHRcdFx0XHRcdCggbW9udGggPT09IGRyYXdNb250aCA/IFwiIHNlbGVjdGVkPSdzZWxlY3RlZCdcIiA6IFwiXCIgKSArXG5cdFx0XHRcdFx0XHRcIj5cIiArIG1vbnRoTmFtZXNTaG9ydFsgbW9udGggXSArIFwiPC9vcHRpb24+XCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1vbnRoSHRtbCArPSBcIjwvc2VsZWN0PlwiO1xuXHRcdH1cblxuXHRcdGlmICggIXNob3dNb250aEFmdGVyWWVhciApIHtcblx0XHRcdGh0bWwgKz0gbW9udGhIdG1sICsgKCBzZWNvbmRhcnkgfHwgISggY2hhbmdlTW9udGggJiYgY2hhbmdlWWVhciApID8gXCImI3hhMDtcIiA6IFwiXCIgKTtcblx0XHR9XG5cblx0XHQvLyBZZWFyIHNlbGVjdGlvblxuXHRcdGlmICggIWluc3QueWVhcnNodG1sICkge1xuXHRcdFx0aW5zdC55ZWFyc2h0bWwgPSBcIlwiO1xuXHRcdFx0aWYgKCBzZWNvbmRhcnkgfHwgIWNoYW5nZVllYXIgKSB7XG5cdFx0XHRcdGh0bWwgKz0gXCI8c3BhbiBjbGFzcz0ndWktZGF0ZXBpY2tlci15ZWFyJz5cIiArIGRyYXdZZWFyICsgXCI8L3NwYW4+XCI7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIGRldGVybWluZSByYW5nZSBvZiB5ZWFycyB0byBkaXNwbGF5XG5cdFx0XHRcdHllYXJzID0gdGhpcy5fZ2V0KCBpbnN0LCBcInllYXJSYW5nZVwiICkuc3BsaXQoIFwiOlwiICk7XG5cdFx0XHRcdHRoaXNZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHRkZXRlcm1pbmVZZWFyID0gZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHZhciB5ZWFyID0gKCB2YWx1ZS5tYXRjaCggL2NbK1xcLV0uKi8gKSA/IGRyYXdZZWFyICsgcGFyc2VJbnQoIHZhbHVlLnN1YnN0cmluZyggMSApLCAxMCApIDpcblx0XHRcdFx0XHRcdCggdmFsdWUubWF0Y2goIC9bK1xcLV0uKi8gKSA/IHRoaXNZZWFyICsgcGFyc2VJbnQoIHZhbHVlLCAxMCApIDpcblx0XHRcdFx0XHRcdHBhcnNlSW50KCB2YWx1ZSwgMTAgKSApICk7XG5cdFx0XHRcdFx0cmV0dXJuICggaXNOYU4oIHllYXIgKSA/IHRoaXNZZWFyIDogeWVhciApO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR5ZWFyID0gZGV0ZXJtaW5lWWVhciggeWVhcnNbIDAgXSApO1xuXHRcdFx0XHRlbmRZZWFyID0gTWF0aC5tYXgoIHllYXIsIGRldGVybWluZVllYXIoIHllYXJzWyAxIF0gfHwgXCJcIiApICk7XG5cdFx0XHRcdHllYXIgPSAoIG1pbkRhdGUgPyBNYXRoLm1heCggeWVhciwgbWluRGF0ZS5nZXRGdWxsWWVhcigpICkgOiB5ZWFyICk7XG5cdFx0XHRcdGVuZFllYXIgPSAoIG1heERhdGUgPyBNYXRoLm1pbiggZW5kWWVhciwgbWF4RGF0ZS5nZXRGdWxsWWVhcigpICkgOiBlbmRZZWFyICk7XG5cdFx0XHRcdGluc3QueWVhcnNodG1sICs9IFwiPHNlbGVjdCBjbGFzcz0ndWktZGF0ZXBpY2tlci15ZWFyJyBkYXRhLWhhbmRsZXI9J3NlbGVjdFllYXInIGRhdGEtZXZlbnQ9J2NoYW5nZSc+XCI7XG5cdFx0XHRcdGZvciAoIDsgeWVhciA8PSBlbmRZZWFyOyB5ZWFyKysgKSB7XG5cdFx0XHRcdFx0aW5zdC55ZWFyc2h0bWwgKz0gXCI8b3B0aW9uIHZhbHVlPSdcIiArIHllYXIgKyBcIidcIiArXG5cdFx0XHRcdFx0XHQoIHllYXIgPT09IGRyYXdZZWFyID8gXCIgc2VsZWN0ZWQ9J3NlbGVjdGVkJ1wiIDogXCJcIiApICtcblx0XHRcdFx0XHRcdFwiPlwiICsgeWVhciArIFwiPC9vcHRpb24+XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5zdC55ZWFyc2h0bWwgKz0gXCI8L3NlbGVjdD5cIjtcblxuXHRcdFx0XHRodG1sICs9IGluc3QueWVhcnNodG1sO1xuXHRcdFx0XHRpbnN0LnllYXJzaHRtbCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aHRtbCArPSB0aGlzLl9nZXQoIGluc3QsIFwieWVhclN1ZmZpeFwiICk7XG5cdFx0aWYgKCBzaG93TW9udGhBZnRlclllYXIgKSB7XG5cdFx0XHRodG1sICs9ICggc2Vjb25kYXJ5IHx8ICEoIGNoYW5nZU1vbnRoICYmIGNoYW5nZVllYXIgKSA/IFwiJiN4YTA7XCIgOiBcIlwiICkgKyBtb250aEh0bWw7XG5cdFx0fVxuXHRcdGh0bWwgKz0gXCI8L2Rpdj5cIjsgLy8gQ2xvc2UgZGF0ZXBpY2tlcl9oZWFkZXJcblx0XHRyZXR1cm4gaHRtbDtcblx0fSxcblxuXHQvKiBBZGp1c3Qgb25lIG9mIHRoZSBkYXRlIHN1Yi1maWVsZHMuICovXG5cdF9hZGp1c3RJbnN0RGF0ZTogZnVuY3Rpb24oIGluc3QsIG9mZnNldCwgcGVyaW9kICkge1xuXHRcdHZhciB5ZWFyID0gaW5zdC5zZWxlY3RlZFllYXIgKyAoIHBlcmlvZCA9PT0gXCJZXCIgPyBvZmZzZXQgOiAwICksXG5cdFx0XHRtb250aCA9IGluc3Quc2VsZWN0ZWRNb250aCArICggcGVyaW9kID09PSBcIk1cIiA/IG9mZnNldCA6IDAgKSxcblx0XHRcdGRheSA9IE1hdGgubWluKCBpbnN0LnNlbGVjdGVkRGF5LCB0aGlzLl9nZXREYXlzSW5Nb250aCggeWVhciwgbW9udGggKSApICsgKCBwZXJpb2QgPT09IFwiRFwiID8gb2Zmc2V0IDogMCApLFxuXHRcdFx0ZGF0ZSA9IHRoaXMuX3Jlc3RyaWN0TWluTWF4KCBpbnN0LCB0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoIHllYXIsIG1vbnRoLCBkYXkgKSApICk7XG5cblx0XHRpbnN0LnNlbGVjdGVkRGF5ID0gZGF0ZS5nZXREYXRlKCk7XG5cdFx0aW5zdC5kcmF3TW9udGggPSBpbnN0LnNlbGVjdGVkTW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG5cdFx0aW5zdC5kcmF3WWVhciA9IGluc3Quc2VsZWN0ZWRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHRcdGlmICggcGVyaW9kID09PSBcIk1cIiB8fCBwZXJpb2QgPT09IFwiWVwiICkge1xuXHRcdFx0dGhpcy5fbm90aWZ5Q2hhbmdlKCBpbnN0ICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qIEVuc3VyZSBhIGRhdGUgaXMgd2l0aGluIGFueSBtaW4vbWF4IGJvdW5kcy4gKi9cblx0X3Jlc3RyaWN0TWluTWF4OiBmdW5jdGlvbiggaW5zdCwgZGF0ZSApIHtcblx0XHR2YXIgbWluRGF0ZSA9IHRoaXMuX2dldE1pbk1heERhdGUoIGluc3QsIFwibWluXCIgKSxcblx0XHRcdG1heERhdGUgPSB0aGlzLl9nZXRNaW5NYXhEYXRlKCBpbnN0LCBcIm1heFwiICksXG5cdFx0XHRuZXdEYXRlID0gKCBtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IGRhdGUgKTtcblx0XHRyZXR1cm4gKCBtYXhEYXRlICYmIG5ld0RhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IG5ld0RhdGUgKTtcblx0fSxcblxuXHQvKiBOb3RpZnkgY2hhbmdlIG9mIG1vbnRoL3llYXIuICovXG5cdF9ub3RpZnlDaGFuZ2U6IGZ1bmN0aW9uKCBpbnN0ICkge1xuXHRcdHZhciBvbkNoYW5nZSA9IHRoaXMuX2dldCggaW5zdCwgXCJvbkNoYW5nZU1vbnRoWWVhclwiICk7XG5cdFx0aWYgKCBvbkNoYW5nZSApIHtcblx0XHRcdG9uQ2hhbmdlLmFwcGx5KCAoIGluc3QuaW5wdXQgPyBpbnN0LmlucHV0WyAwIF0gOiBudWxsICksXG5cdFx0XHRcdFsgaW5zdC5zZWxlY3RlZFllYXIsIGluc3Quc2VsZWN0ZWRNb250aCArIDEsIGluc3QgXSApO1xuXHRcdH1cblx0fSxcblxuXHQvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBtb250aHMgdG8gc2hvdy4gKi9cblx0X2dldE51bWJlck9mTW9udGhzOiBmdW5jdGlvbiggaW5zdCApIHtcblx0XHR2YXIgbnVtTW9udGhzID0gdGhpcy5fZ2V0KCBpbnN0LCBcIm51bWJlck9mTW9udGhzXCIgKTtcblx0XHRyZXR1cm4gKCBudW1Nb250aHMgPT0gbnVsbCA/IFsgMSwgMSBdIDogKCB0eXBlb2YgbnVtTW9udGhzID09PSBcIm51bWJlclwiID8gWyAxLCBudW1Nb250aHMgXSA6IG51bU1vbnRocyApICk7XG5cdH0sXG5cblx0LyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IG1heGltdW0gZGF0ZSAtIGVuc3VyZSBubyB0aW1lIGNvbXBvbmVudHMgYXJlIHNldC4gKi9cblx0X2dldE1pbk1heERhdGU6IGZ1bmN0aW9uKCBpbnN0LCBtaW5NYXggKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2RldGVybWluZURhdGUoIGluc3QsIHRoaXMuX2dldCggaW5zdCwgbWluTWF4ICsgXCJEYXRlXCIgKSwgbnVsbCApO1xuXHR9LFxuXG5cdC8qIEZpbmQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGguICovXG5cdF9nZXREYXlzSW5Nb250aDogZnVuY3Rpb24oIHllYXIsIG1vbnRoICkge1xuXHRcdHJldHVybiAzMiAtIHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCBuZXcgRGF0ZSggeWVhciwgbW9udGgsIDMyICkgKS5nZXREYXRlKCk7XG5cdH0sXG5cblx0LyogRmluZCB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBmaXJzdCBvZiBhIG1vbnRoLiAqL1xuXHRfZ2V0Rmlyc3REYXlPZk1vbnRoOiBmdW5jdGlvbiggeWVhciwgbW9udGggKSB7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKCB5ZWFyLCBtb250aCwgMSApLmdldERheSgpO1xuXHR9LFxuXG5cdC8qIERldGVybWluZXMgaWYgd2Ugc2hvdWxkIGFsbG93IGEgXCJuZXh0L3ByZXZcIiBtb250aCBkaXNwbGF5IGNoYW5nZS4gKi9cblx0X2NhbkFkanVzdE1vbnRoOiBmdW5jdGlvbiggaW5zdCwgb2Zmc2V0LCBjdXJZZWFyLCBjdXJNb250aCApIHtcblx0XHR2YXIgbnVtTW9udGhzID0gdGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoIGluc3QgKSxcblx0XHRcdGRhdGUgPSB0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoIGN1clllYXIsXG5cdFx0XHRjdXJNb250aCArICggb2Zmc2V0IDwgMCA/IG9mZnNldCA6IG51bU1vbnRoc1sgMCBdICogbnVtTW9udGhzWyAxIF0gKSwgMSApICk7XG5cblx0XHRpZiAoIG9mZnNldCA8IDAgKSB7XG5cdFx0XHRkYXRlLnNldERhdGUoIHRoaXMuX2dldERheXNJbk1vbnRoKCBkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSApICk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9pc0luUmFuZ2UoIGluc3QsIGRhdGUgKTtcblx0fSxcblxuXHQvKiBJcyB0aGUgZ2l2ZW4gZGF0ZSBpbiB0aGUgYWNjZXB0ZWQgcmFuZ2U/ICovXG5cdF9pc0luUmFuZ2U6IGZ1bmN0aW9uKCBpbnN0LCBkYXRlICkge1xuXHRcdHZhciB5ZWFyU3BsaXQsIGN1cnJlbnRZZWFyLFxuXHRcdFx0bWluRGF0ZSA9IHRoaXMuX2dldE1pbk1heERhdGUoIGluc3QsIFwibWluXCIgKSxcblx0XHRcdG1heERhdGUgPSB0aGlzLl9nZXRNaW5NYXhEYXRlKCBpbnN0LCBcIm1heFwiICksXG5cdFx0XHRtaW5ZZWFyID0gbnVsbCxcblx0XHRcdG1heFllYXIgPSBudWxsLFxuXHRcdFx0eWVhcnMgPSB0aGlzLl9nZXQoIGluc3QsIFwieWVhclJhbmdlXCIgKTtcblx0XHRcdGlmICggeWVhcnMgKSB7XG5cdFx0XHRcdHllYXJTcGxpdCA9IHllYXJzLnNwbGl0KCBcIjpcIiApO1xuXHRcdFx0XHRjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0bWluWWVhciA9IHBhcnNlSW50KCB5ZWFyU3BsaXRbIDAgXSwgMTAgKTtcblx0XHRcdFx0bWF4WWVhciA9IHBhcnNlSW50KCB5ZWFyU3BsaXRbIDEgXSwgMTAgKTtcblx0XHRcdFx0aWYgKCB5ZWFyU3BsaXRbIDAgXS5tYXRjaCggL1srXFwtXS4qLyApICkge1xuXHRcdFx0XHRcdG1pblllYXIgKz0gY3VycmVudFllYXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCB5ZWFyU3BsaXRbIDEgXS5tYXRjaCggL1srXFwtXS4qLyApICkge1xuXHRcdFx0XHRcdG1heFllYXIgKz0gY3VycmVudFllYXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdHJldHVybiAoICggIW1pbkRhdGUgfHwgZGF0ZS5nZXRUaW1lKCkgPj0gbWluRGF0ZS5nZXRUaW1lKCkgKSAmJlxuXHRcdFx0KCAhbWF4RGF0ZSB8fCBkYXRlLmdldFRpbWUoKSA8PSBtYXhEYXRlLmdldFRpbWUoKSApICYmXG5cdFx0XHQoICFtaW5ZZWFyIHx8IGRhdGUuZ2V0RnVsbFllYXIoKSA+PSBtaW5ZZWFyICkgJiZcblx0XHRcdCggIW1heFllYXIgfHwgZGF0ZS5nZXRGdWxsWWVhcigpIDw9IG1heFllYXIgKSApO1xuXHR9LFxuXG5cdC8qIFByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIGZvcm1hdHRpbmcvcGFyc2luZy4gKi9cblx0X2dldEZvcm1hdENvbmZpZzogZnVuY3Rpb24oIGluc3QgKSB7XG5cdFx0dmFyIHNob3J0WWVhckN1dG9mZiA9IHRoaXMuX2dldCggaW5zdCwgXCJzaG9ydFllYXJDdXRvZmZcIiApO1xuXHRcdHNob3J0WWVhckN1dG9mZiA9ICggdHlwZW9mIHNob3J0WWVhckN1dG9mZiAhPT0gXCJzdHJpbmdcIiA/IHNob3J0WWVhckN1dG9mZiA6XG5cdFx0XHRuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgJSAxMDAgKyBwYXJzZUludCggc2hvcnRZZWFyQ3V0b2ZmLCAxMCApICk7XG5cdFx0cmV0dXJuIHsgc2hvcnRZZWFyQ3V0b2ZmOiBzaG9ydFllYXJDdXRvZmYsXG5cdFx0XHRkYXlOYW1lc1Nob3J0OiB0aGlzLl9nZXQoIGluc3QsIFwiZGF5TmFtZXNTaG9ydFwiICksIGRheU5hbWVzOiB0aGlzLl9nZXQoIGluc3QsIFwiZGF5TmFtZXNcIiApLFxuXHRcdFx0bW9udGhOYW1lc1Nob3J0OiB0aGlzLl9nZXQoIGluc3QsIFwibW9udGhOYW1lc1Nob3J0XCIgKSwgbW9udGhOYW1lczogdGhpcy5fZ2V0KCBpbnN0LCBcIm1vbnRoTmFtZXNcIiApIH07XG5cdH0sXG5cblx0LyogRm9ybWF0IHRoZSBnaXZlbiBkYXRlIGZvciBkaXNwbGF5LiAqL1xuXHRfZm9ybWF0RGF0ZTogZnVuY3Rpb24oIGluc3QsIGRheSwgbW9udGgsIHllYXIgKSB7XG5cdFx0aWYgKCAhZGF5ICkge1xuXHRcdFx0aW5zdC5jdXJyZW50RGF5ID0gaW5zdC5zZWxlY3RlZERheTtcblx0XHRcdGluc3QuY3VycmVudE1vbnRoID0gaW5zdC5zZWxlY3RlZE1vbnRoO1xuXHRcdFx0aW5zdC5jdXJyZW50WWVhciA9IGluc3Quc2VsZWN0ZWRZZWFyO1xuXHRcdH1cblx0XHR2YXIgZGF0ZSA9ICggZGF5ID8gKCB0eXBlb2YgZGF5ID09PSBcIm9iamVjdFwiID8gZGF5IDpcblx0XHRcdHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KCBuZXcgRGF0ZSggeWVhciwgbW9udGgsIGRheSApICkgKSA6XG5cdFx0XHR0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdCggbmV3IERhdGUoIGluc3QuY3VycmVudFllYXIsIGluc3QuY3VycmVudE1vbnRoLCBpbnN0LmN1cnJlbnREYXkgKSApICk7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSggdGhpcy5fZ2V0KCBpbnN0LCBcImRhdGVGb3JtYXRcIiApLCBkYXRlLCB0aGlzLl9nZXRGb3JtYXRDb25maWcoIGluc3QgKSApO1xuXHR9XG59ICk7XG5cbi8qXG4gKiBCaW5kIGhvdmVyIGV2ZW50cyBmb3IgZGF0ZXBpY2tlciBlbGVtZW50cy5cbiAqIERvbmUgdmlhIGRlbGVnYXRlIHNvIHRoZSBiaW5kaW5nIG9ubHkgb2NjdXJzIG9uY2UgaW4gdGhlIGxpZmV0aW1lIG9mIHRoZSBwYXJlbnQgZGl2LlxuICogR2xvYmFsIGRhdGVwaWNrZXJfaW5zdEFjdGl2ZSwgc2V0IGJ5IF91cGRhdGVEYXRlcGlja2VyIGFsbG93cyB0aGUgaGFuZGxlcnMgdG8gZmluZCB0aGVpciB3YXkgYmFjayB0byB0aGUgYWN0aXZlIHBpY2tlci5cbiAqL1xuZnVuY3Rpb24gZGF0ZXBpY2tlcl9iaW5kSG92ZXIoIGRwRGl2ICkge1xuXHR2YXIgc2VsZWN0b3IgPSBcImJ1dHRvbiwgLnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRhdGVwaWNrZXItbmV4dCwgLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgYVwiO1xuXHRyZXR1cm4gZHBEaXYub24oIFwibW91c2VvdXRcIiwgc2VsZWN0b3IsIGZ1bmN0aW9uKCkge1xuXHRcdFx0JCggdGhpcyApLnJlbW92ZUNsYXNzKCBcInVpLXN0YXRlLWhvdmVyXCIgKTtcblx0XHRcdGlmICggdGhpcy5jbGFzc05hbWUuaW5kZXhPZiggXCJ1aS1kYXRlcGlja2VyLXByZXZcIiApICE9PSAtMSApIHtcblx0XHRcdFx0JCggdGhpcyApLnJlbW92ZUNsYXNzKCBcInVpLWRhdGVwaWNrZXItcHJldi1ob3ZlclwiICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIHRoaXMuY2xhc3NOYW1lLmluZGV4T2YoIFwidWktZGF0ZXBpY2tlci1uZXh0XCIgKSAhPT0gLTEgKSB7XG5cdFx0XHRcdCQoIHRoaXMgKS5yZW1vdmVDbGFzcyggXCJ1aS1kYXRlcGlja2VyLW5leHQtaG92ZXJcIiApO1xuXHRcdFx0fVxuXHRcdH0gKVxuXHRcdC5vbiggXCJtb3VzZW92ZXJcIiwgc2VsZWN0b3IsIGRhdGVwaWNrZXJfaGFuZGxlTW91c2VvdmVyICk7XG59XG5cbmZ1bmN0aW9uIGRhdGVwaWNrZXJfaGFuZGxlTW91c2VvdmVyKCkge1xuXHRpZiAoICEkLmRhdGVwaWNrZXIuX2lzRGlzYWJsZWREYXRlcGlja2VyKCBkYXRlcGlja2VyX2luc3RBY3RpdmUuaW5saW5lID8gZGF0ZXBpY2tlcl9pbnN0QWN0aXZlLmRwRGl2LnBhcmVudCgpWyAwIF0gOiBkYXRlcGlja2VyX2luc3RBY3RpdmUuaW5wdXRbIDAgXSApICkge1xuXHRcdCQoIHRoaXMgKS5wYXJlbnRzKCBcIi51aS1kYXRlcGlja2VyLWNhbGVuZGFyXCIgKS5maW5kKCBcImFcIiApLnJlbW92ZUNsYXNzKCBcInVpLXN0YXRlLWhvdmVyXCIgKTtcblx0XHQkKCB0aGlzICkuYWRkQ2xhc3MoIFwidWktc3RhdGUtaG92ZXJcIiApO1xuXHRcdGlmICggdGhpcy5jbGFzc05hbWUuaW5kZXhPZiggXCJ1aS1kYXRlcGlja2VyLXByZXZcIiApICE9PSAtMSApIHtcblx0XHRcdCQoIHRoaXMgKS5hZGRDbGFzcyggXCJ1aS1kYXRlcGlja2VyLXByZXYtaG92ZXJcIiApO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuY2xhc3NOYW1lLmluZGV4T2YoIFwidWktZGF0ZXBpY2tlci1uZXh0XCIgKSAhPT0gLTEgKSB7XG5cdFx0XHQkKCB0aGlzICkuYWRkQ2xhc3MoIFwidWktZGF0ZXBpY2tlci1uZXh0LWhvdmVyXCIgKTtcblx0XHR9XG5cdH1cbn1cblxuLyogalF1ZXJ5IGV4dGVuZCBub3cgaWdub3JlcyBudWxscyEgKi9cbmZ1bmN0aW9uIGRhdGVwaWNrZXJfZXh0ZW5kUmVtb3ZlKCB0YXJnZXQsIHByb3BzICkge1xuXHQkLmV4dGVuZCggdGFyZ2V0LCBwcm9wcyApO1xuXHRmb3IgKCB2YXIgbmFtZSBpbiBwcm9wcyApIHtcblx0XHRpZiAoIHByb3BzWyBuYW1lIF0gPT0gbnVsbCApIHtcblx0XHRcdHRhcmdldFsgbmFtZSBdID0gcHJvcHNbIG5hbWUgXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRhcmdldDtcbn1cblxuLyogSW52b2tlIHRoZSBkYXRlcGlja2VyIGZ1bmN0aW9uYWxpdHkuXG4gICBAcGFyYW0gIG9wdGlvbnMgIHN0cmluZyAtIGEgY29tbWFuZCwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgb3Jcblx0XHRcdFx0XHRPYmplY3QgLSBzZXR0aW5ncyBmb3IgYXR0YWNoaW5nIG5ldyBkYXRlcGlja2VyIGZ1bmN0aW9uYWxpdHlcbiAgIEByZXR1cm4gIGpRdWVyeSBvYmplY3QgKi9cbiQuZm4uZGF0ZXBpY2tlciA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8qIFZlcmlmeSBhbiBlbXB0eSBjb2xsZWN0aW9uIHdhc24ndCBwYXNzZWQgLSBGaXhlcyAjNjk3NiAqL1xuXHRpZiAoICF0aGlzLmxlbmd0aCApIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qIEluaXRpYWxpc2UgdGhlIGRhdGUgcGlja2VyLiAqL1xuXHRpZiAoICEkLmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWQgKSB7XG5cdFx0JCggZG9jdW1lbnQgKS5vbiggXCJtb3VzZWRvd25cIiwgJC5kYXRlcGlja2VyLl9jaGVja0V4dGVybmFsQ2xpY2sgKTtcblx0XHQkLmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0LyogQXBwZW5kIGRhdGVwaWNrZXIgbWFpbiBjb250YWluZXIgdG8gYm9keSBpZiBub3QgZXhpc3QuICovXG5cdGlmICggJCggXCIjXCIgKyAkLmRhdGVwaWNrZXIuX21haW5EaXZJZCApLmxlbmd0aCA9PT0gMCApIHtcblx0XHQkKCBcImJvZHlcIiApLmFwcGVuZCggJC5kYXRlcGlja2VyLmRwRGl2ICk7XG5cdH1cblxuXHR2YXIgb3RoZXJBcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApO1xuXHRpZiAoIHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiICYmICggb3B0aW9ucyA9PT0gXCJpc0Rpc2FibGVkXCIgfHwgb3B0aW9ucyA9PT0gXCJnZXREYXRlXCIgfHwgb3B0aW9ucyA9PT0gXCJ3aWRnZXRcIiApICkge1xuXHRcdHJldHVybiAkLmRhdGVwaWNrZXJbIFwiX1wiICsgb3B0aW9ucyArIFwiRGF0ZXBpY2tlclwiIF0uXG5cdFx0XHRhcHBseSggJC5kYXRlcGlja2VyLCBbIHRoaXNbIDAgXSBdLmNvbmNhdCggb3RoZXJBcmdzICkgKTtcblx0fVxuXHRpZiAoIG9wdGlvbnMgPT09IFwib3B0aW9uXCIgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiB0eXBlb2YgYXJndW1lbnRzWyAxIF0gPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuICQuZGF0ZXBpY2tlclsgXCJfXCIgKyBvcHRpb25zICsgXCJEYXRlcGlja2VyXCIgXS5cblx0XHRcdGFwcGx5KCAkLmRhdGVwaWNrZXIsIFsgdGhpc1sgMCBdIF0uY29uY2F0KCBvdGhlckFyZ3MgKSApO1xuXHR9XG5cdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHRcdCQuZGF0ZXBpY2tlclsgXCJfXCIgKyBvcHRpb25zICsgXCJEYXRlcGlja2VyXCIgXS5cblx0XHRcdFx0YXBwbHkoICQuZGF0ZXBpY2tlciwgWyB0aGlzIF0uY29uY2F0KCBvdGhlckFyZ3MgKSApIDpcblx0XHRcdCQuZGF0ZXBpY2tlci5fYXR0YWNoRGF0ZXBpY2tlciggdGhpcywgb3B0aW9ucyApO1xuXHR9ICk7XG59O1xuXG4kLmRhdGVwaWNrZXIgPSBuZXcgRGF0ZXBpY2tlcigpOyAvLyBzaW5nbGV0b24gaW5zdGFuY2VcbiQuZGF0ZXBpY2tlci5pbml0aWFsaXplZCA9IGZhbHNlO1xuJC5kYXRlcGlja2VyLnV1aWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiQuZGF0ZXBpY2tlci52ZXJzaW9uID0gXCIxLjEyLjFcIjtcblxudmFyIHdpZGdldHNEYXRlcGlja2VyID0gJC5kYXRlcGlja2VyO1xuXG5cblxuXG4vLyBUaGlzIGZpbGUgaXMgZGVwcmVjYXRlZFxudmFyIGllID0gJC51aS5pZSA9ICEhL21zaWUgW1xcdy5dKy8uZXhlYyggbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpICk7XG5cbi8qIVxuICogalF1ZXJ5IFVJIE1vdXNlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBNb3VzZVxuLy8+Pmdyb3VwOiBXaWRnZXRzXG4vLz4+ZGVzY3JpcHRpb246IEFic3RyYWN0cyBtb3VzZS1iYXNlZCBpbnRlcmFjdGlvbnMgdG8gYXNzaXN0IGluIGNyZWF0aW5nIGNlcnRhaW4gd2lkZ2V0cy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9tb3VzZS9cblxuXG5cbnZhciBtb3VzZUhhbmRsZWQgPSBmYWxzZTtcbiQoIGRvY3VtZW50ICkub24oIFwibW91c2V1cFwiLCBmdW5jdGlvbigpIHtcblx0bW91c2VIYW5kbGVkID0gZmFsc2U7XG59ICk7XG5cbnZhciB3aWRnZXRzTW91c2UgPSAkLndpZGdldCggXCJ1aS5tb3VzZVwiLCB7XG5cdHZlcnNpb246IFwiMS4xMi4xXCIsXG5cdG9wdGlvbnM6IHtcblx0XHRjYW5jZWw6IFwiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCwgb3B0aW9uXCIsXG5cdFx0ZGlzdGFuY2U6IDEsXG5cdFx0ZGVsYXk6IDBcblx0fSxcblx0X21vdXNlSW5pdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXG5cdFx0dGhpcy5lbGVtZW50XG5cdFx0XHQub24oIFwibW91c2Vkb3duLlwiICsgdGhpcy53aWRnZXROYW1lLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHJldHVybiB0aGF0Ll9tb3VzZURvd24oIGV2ZW50ICk7XG5cdFx0XHR9IClcblx0XHRcdC5vbiggXCJjbGljay5cIiArIHRoaXMud2lkZ2V0TmFtZSwgZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRpZiAoIHRydWUgPT09ICQuZGF0YSggZXZlbnQudGFyZ2V0LCB0aGF0LndpZGdldE5hbWUgKyBcIi5wcmV2ZW50Q2xpY2tFdmVudFwiICkgKSB7XG5cdFx0XHRcdFx0JC5yZW1vdmVEYXRhKCBldmVudC50YXJnZXQsIHRoYXQud2lkZ2V0TmFtZSArIFwiLnByZXZlbnRDbGlja0V2ZW50XCIgKTtcblx0XHRcdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuXHR9LFxuXG5cdC8vIFRPRE86IG1ha2Ugc3VyZSBkZXN0cm95aW5nIG9uZSBpbnN0YW5jZSBvZiBtb3VzZSBkb2Vzbid0IG1lc3Mgd2l0aFxuXHQvLyBvdGhlciBpbnN0YW5jZXMgb2YgbW91c2Vcblx0X21vdXNlRGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5lbGVtZW50Lm9mZiggXCIuXCIgKyB0aGlzLndpZGdldE5hbWUgKTtcblx0XHRpZiAoIHRoaXMuX21vdXNlTW92ZURlbGVnYXRlICkge1xuXHRcdFx0dGhpcy5kb2N1bWVudFxuXHRcdFx0XHQub2ZmKCBcIm1vdXNlbW92ZS5cIiArIHRoaXMud2lkZ2V0TmFtZSwgdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUgKVxuXHRcdFx0XHQub2ZmKCBcIm1vdXNldXAuXCIgKyB0aGlzLndpZGdldE5hbWUsIHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSApO1xuXHRcdH1cblx0fSxcblxuXHRfbW91c2VEb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHQvLyBkb24ndCBsZXQgbW9yZSB0aGFuIG9uZSB3aWRnZXQgaGFuZGxlIG1vdXNlU3RhcnRcblx0XHRpZiAoIG1vdXNlSGFuZGxlZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9tb3VzZU1vdmVkID0gZmFsc2U7XG5cblx0XHQvLyBXZSBtYXkgaGF2ZSBtaXNzZWQgbW91c2V1cCAob3V0IG9mIHdpbmRvdylcblx0XHQoIHRoaXMuX21vdXNlU3RhcnRlZCAmJiB0aGlzLl9tb3VzZVVwKCBldmVudCApICk7XG5cblx0XHR0aGlzLl9tb3VzZURvd25FdmVudCA9IGV2ZW50O1xuXG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0YnRuSXNMZWZ0ID0gKCBldmVudC53aGljaCA9PT0gMSApLFxuXG5cdFx0XHQvLyBldmVudC50YXJnZXQubm9kZU5hbWUgd29ya3MgYXJvdW5kIGEgYnVnIGluIElFIDggd2l0aFxuXHRcdFx0Ly8gZGlzYWJsZWQgaW5wdXRzICgjNzYyMClcblx0XHRcdGVsSXNDYW5jZWwgPSAoIHR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsID09PSBcInN0cmluZ1wiICYmIGV2ZW50LnRhcmdldC5ub2RlTmFtZSA/XG5cdFx0XHRcdCQoIGV2ZW50LnRhcmdldCApLmNsb3Nlc3QoIHRoaXMub3B0aW9ucy5jYW5jZWwgKS5sZW5ndGggOiBmYWxzZSApO1xuXHRcdGlmICggIWJ0bklzTGVmdCB8fCBlbElzQ2FuY2VsIHx8ICF0aGlzLl9tb3VzZUNhcHR1cmUoIGV2ZW50ICkgKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHR0aGlzLm1vdXNlRGVsYXlNZXQgPSAhdGhpcy5vcHRpb25zLmRlbGF5O1xuXHRcdGlmICggIXRoaXMubW91c2VEZWxheU1ldCApIHtcblx0XHRcdHRoaXMuX21vdXNlRGVsYXlUaW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGF0Lm1vdXNlRGVsYXlNZXQgPSB0cnVlO1xuXHRcdFx0fSwgdGhpcy5vcHRpb25zLmRlbGF5ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLl9tb3VzZURpc3RhbmNlTWV0KCBldmVudCApICYmIHRoaXMuX21vdXNlRGVsYXlNZXQoIGV2ZW50ICkgKSB7XG5cdFx0XHR0aGlzLl9tb3VzZVN0YXJ0ZWQgPSAoIHRoaXMuX21vdXNlU3RhcnQoIGV2ZW50ICkgIT09IGZhbHNlICk7XG5cdFx0XHRpZiAoICF0aGlzLl9tb3VzZVN0YXJ0ZWQgKSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENsaWNrIGV2ZW50IG1heSBuZXZlciBoYXZlIGZpcmVkIChHZWNrbyAmIE9wZXJhKVxuXHRcdGlmICggdHJ1ZSA9PT0gJC5kYXRhKCBldmVudC50YXJnZXQsIHRoaXMud2lkZ2V0TmFtZSArIFwiLnByZXZlbnRDbGlja0V2ZW50XCIgKSApIHtcblx0XHRcdCQucmVtb3ZlRGF0YSggZXZlbnQudGFyZ2V0LCB0aGlzLndpZGdldE5hbWUgKyBcIi5wcmV2ZW50Q2xpY2tFdmVudFwiICk7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlc2UgZGVsZWdhdGVzIGFyZSByZXF1aXJlZCB0byBrZWVwIGNvbnRleHRcblx0XHR0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSA9IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHJldHVybiB0aGF0Ll9tb3VzZU1vdmUoIGV2ZW50ICk7XG5cdFx0fTtcblx0XHR0aGlzLl9tb3VzZVVwRGVsZWdhdGUgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRyZXR1cm4gdGhhdC5fbW91c2VVcCggZXZlbnQgKTtcblx0XHR9O1xuXG5cdFx0dGhpcy5kb2N1bWVudFxuXHRcdFx0Lm9uKCBcIm1vdXNlbW92ZS5cIiArIHRoaXMud2lkZ2V0TmFtZSwgdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUgKVxuXHRcdFx0Lm9uKCBcIm1vdXNldXAuXCIgKyB0aGlzLndpZGdldE5hbWUsIHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSApO1xuXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdG1vdXNlSGFuZGxlZCA9IHRydWU7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0X21vdXNlTW92ZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0Ly8gT25seSBjaGVjayBmb3IgbW91c2V1cHMgb3V0c2lkZSB0aGUgZG9jdW1lbnQgaWYgeW91J3ZlIG1vdmVkIGluc2lkZSB0aGUgZG9jdW1lbnRcblx0XHQvLyBhdCBsZWFzdCBvbmNlLiBUaGlzIHByZXZlbnRzIHRoZSBmaXJpbmcgb2YgbW91c2V1cCBpbiB0aGUgY2FzZSBvZiBJRTw5LCB3aGljaCB3aWxsXG5cdFx0Ly8gZmlyZSBhIG1vdXNlbW92ZSBldmVudCBpZiBjb250ZW50IGlzIHBsYWNlZCB1bmRlciB0aGUgY3Vyc29yLiBTZWUgIzc3Nzhcblx0XHQvLyBTdXBwb3J0OiBJRSA8OVxuXHRcdGlmICggdGhpcy5fbW91c2VNb3ZlZCApIHtcblxuXHRcdFx0Ly8gSUUgbW91c2V1cCBjaGVjayAtIG1vdXNldXAgaGFwcGVuZWQgd2hlbiBtb3VzZSB3YXMgb3V0IG9mIHdpbmRvd1xuXHRcdFx0aWYgKCAkLnVpLmllICYmICggIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA5ICkgJiZcblx0XHRcdFx0XHQhZXZlbnQuYnV0dG9uICkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fbW91c2VVcCggZXZlbnQgKTtcblxuXHRcdFx0Ly8gSWZyYW1lIG1vdXNldXAgY2hlY2sgLSBtb3VzZXVwIG9jY3VycmVkIGluIGFub3RoZXIgZG9jdW1lbnRcblx0XHRcdH0gZWxzZSBpZiAoICFldmVudC53aGljaCApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgPD04IC0gOVxuXHRcdFx0XHQvLyBTYWZhcmkgc2V0cyB3aGljaCB0byAwIGlmIHlvdSBwcmVzcyBhbnkgb2YgdGhlIGZvbGxvd2luZyBrZXlzXG5cdFx0XHRcdC8vIGR1cmluZyBhIGRyYWcgKCMxNDQ2MSlcblx0XHRcdFx0aWYgKCBldmVudC5vcmlnaW5hbEV2ZW50LmFsdEtleSB8fCBldmVudC5vcmlnaW5hbEV2ZW50LmN0cmxLZXkgfHxcblx0XHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQubWV0YUtleSB8fCBldmVudC5vcmlnaW5hbEV2ZW50LnNoaWZ0S2V5ICkge1xuXHRcdFx0XHRcdHRoaXMuaWdub3JlTWlzc2luZ1doaWNoID0gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICggIXRoaXMuaWdub3JlTWlzc2luZ1doaWNoICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9tb3VzZVVwKCBldmVudCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBldmVudC53aGljaCB8fCBldmVudC5idXR0b24gKSB7XG5cdFx0XHR0aGlzLl9tb3VzZU1vdmVkID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMuX21vdXNlU3RhcnRlZCApIHtcblx0XHRcdHRoaXMuX21vdXNlRHJhZyggZXZlbnQgKTtcblx0XHRcdHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5fbW91c2VEaXN0YW5jZU1ldCggZXZlbnQgKSAmJiB0aGlzLl9tb3VzZURlbGF5TWV0KCBldmVudCApICkge1xuXHRcdFx0dGhpcy5fbW91c2VTdGFydGVkID1cblx0XHRcdFx0KCB0aGlzLl9tb3VzZVN0YXJ0KCB0aGlzLl9tb3VzZURvd25FdmVudCwgZXZlbnQgKSAhPT0gZmFsc2UgKTtcblx0XHRcdCggdGhpcy5fbW91c2VTdGFydGVkID8gdGhpcy5fbW91c2VEcmFnKCBldmVudCApIDogdGhpcy5fbW91c2VVcCggZXZlbnQgKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiAhdGhpcy5fbW91c2VTdGFydGVkO1xuXHR9LFxuXG5cdF9tb3VzZVVwOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dGhpcy5kb2N1bWVudFxuXHRcdFx0Lm9mZiggXCJtb3VzZW1vdmUuXCIgKyB0aGlzLndpZGdldE5hbWUsIHRoaXMuX21vdXNlTW92ZURlbGVnYXRlIClcblx0XHRcdC5vZmYoIFwibW91c2V1cC5cIiArIHRoaXMud2lkZ2V0TmFtZSwgdGhpcy5fbW91c2VVcERlbGVnYXRlICk7XG5cblx0XHRpZiAoIHRoaXMuX21vdXNlU3RhcnRlZCApIHtcblx0XHRcdHRoaXMuX21vdXNlU3RhcnRlZCA9IGZhbHNlO1xuXG5cdFx0XHRpZiAoIGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0XHQkLmRhdGEoIGV2ZW50LnRhcmdldCwgdGhpcy53aWRnZXROYW1lICsgXCIucHJldmVudENsaWNrRXZlbnRcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLl9tb3VzZVN0b3AoIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLl9tb3VzZURlbGF5VGltZXIgKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQoIHRoaXMuX21vdXNlRGVsYXlUaW1lciApO1xuXHRcdFx0ZGVsZXRlIHRoaXMuX21vdXNlRGVsYXlUaW1lcjtcblx0XHR9XG5cblx0XHR0aGlzLmlnbm9yZU1pc3NpbmdXaGljaCA9IGZhbHNlO1xuXHRcdG1vdXNlSGFuZGxlZCA9IGZhbHNlO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdH0sXG5cblx0X21vdXNlRGlzdGFuY2VNZXQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRyZXR1cm4gKCBNYXRoLm1heChcblx0XHRcdFx0TWF0aC5hYnMoIHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYIC0gZXZlbnQucGFnZVggKSxcblx0XHRcdFx0TWF0aC5hYnMoIHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZIC0gZXZlbnQucGFnZVkgKVxuXHRcdFx0KSA+PSB0aGlzLm9wdGlvbnMuZGlzdGFuY2Vcblx0XHQpO1xuXHR9LFxuXG5cdF9tb3VzZURlbGF5TWV0OiBmdW5jdGlvbiggLyogZXZlbnQgKi8gKSB7XG5cdFx0cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldDtcblx0fSxcblxuXHQvLyBUaGVzZSBhcmUgcGxhY2Vob2xkZXIgbWV0aG9kcywgdG8gYmUgb3ZlcnJpZGVuIGJ5IGV4dGVuZGluZyBwbHVnaW5cblx0X21vdXNlU3RhcnQ6IGZ1bmN0aW9uKCAvKiBldmVudCAqLyApIHt9LFxuXHRfbW91c2VEcmFnOiBmdW5jdGlvbiggLyogZXZlbnQgKi8gKSB7fSxcblx0X21vdXNlU3RvcDogZnVuY3Rpb24oIC8qIGV2ZW50ICovICkge30sXG5cdF9tb3VzZUNhcHR1cmU6IGZ1bmN0aW9uKCAvKiBldmVudCAqLyApIHsgcmV0dXJuIHRydWU7IH1cbn0gKTtcblxuXG5cblxuLy8gJC51aS5wbHVnaW4gaXMgZGVwcmVjYXRlZC4gVXNlICQud2lkZ2V0KCkgZXh0ZW5zaW9ucyBpbnN0ZWFkLlxudmFyIHBsdWdpbiA9ICQudWkucGx1Z2luID0ge1xuXHRhZGQ6IGZ1bmN0aW9uKCBtb2R1bGUsIG9wdGlvbiwgc2V0ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0cHJvdG8gPSAkLnVpWyBtb2R1bGUgXS5wcm90b3R5cGU7XG5cdFx0Zm9yICggaSBpbiBzZXQgKSB7XG5cdFx0XHRwcm90by5wbHVnaW5zWyBpIF0gPSBwcm90by5wbHVnaW5zWyBpIF0gfHwgW107XG5cdFx0XHRwcm90by5wbHVnaW5zWyBpIF0ucHVzaCggWyBvcHRpb24sIHNldFsgaSBdIF0gKTtcblx0XHR9XG5cdH0sXG5cdGNhbGw6IGZ1bmN0aW9uKCBpbnN0YW5jZSwgbmFtZSwgYXJncywgYWxsb3dEaXNjb25uZWN0ZWQgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHRzZXQgPSBpbnN0YW5jZS5wbHVnaW5zWyBuYW1lIF07XG5cblx0XHRpZiAoICFzZXQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCAhYWxsb3dEaXNjb25uZWN0ZWQgJiYgKCAhaW5zdGFuY2UuZWxlbWVudFsgMCBdLnBhcmVudE5vZGUgfHxcblx0XHRcdFx0aW5zdGFuY2UuZWxlbWVudFsgMCBdLnBhcmVudE5vZGUubm9kZVR5cGUgPT09IDExICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBzZXQubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRpZiAoIGluc3RhbmNlLm9wdGlvbnNbIHNldFsgaSBdWyAwIF0gXSApIHtcblx0XHRcdFx0c2V0WyBpIF1bIDEgXS5hcHBseSggaW5zdGFuY2UuZWxlbWVudCwgYXJncyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxuXG5cbnZhciBzYWZlQmx1ciA9ICQudWkuc2FmZUJsdXIgPSBmdW5jdGlvbiggZWxlbWVudCApIHtcblxuXHQvLyBTdXBwb3J0OiBJRTkgLSAxMCBvbmx5XG5cdC8vIElmIHRoZSA8Ym9keT4gaXMgYmx1cnJlZCwgSUUgd2lsbCBzd2l0Y2ggd2luZG93cywgc2VlICM5NDIwXG5cdGlmICggZWxlbWVudCAmJiBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwiYm9keVwiICkge1xuXHRcdCQoIGVsZW1lbnQgKS50cmlnZ2VyKCBcImJsdXJcIiApO1xuXHR9XG59O1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIERyYWdnYWJsZSAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogRHJhZ2dhYmxlXG4vLz4+Z3JvdXA6IEludGVyYWN0aW9uc1xuLy8+PmRlc2NyaXB0aW9uOiBFbmFibGVzIGRyYWdnaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGFueSBlbGVtZW50LlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2RyYWdnYWJsZS9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9kcmFnZ2FibGUvXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvZHJhZ2dhYmxlLmNzc1xuXG5cblxuJC53aWRnZXQoIFwidWkuZHJhZ2dhYmxlXCIsICQudWkubW91c2UsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0d2lkZ2V0RXZlbnRQcmVmaXg6IFwiZHJhZ1wiLFxuXHRvcHRpb25zOiB7XG5cdFx0YWRkQ2xhc3NlczogdHJ1ZSxcblx0XHRhcHBlbmRUbzogXCJwYXJlbnRcIixcblx0XHRheGlzOiBmYWxzZSxcblx0XHRjb25uZWN0VG9Tb3J0YWJsZTogZmFsc2UsXG5cdFx0Y29udGFpbm1lbnQ6IGZhbHNlLFxuXHRcdGN1cnNvcjogXCJhdXRvXCIsXG5cdFx0Y3Vyc29yQXQ6IGZhbHNlLFxuXHRcdGdyaWQ6IGZhbHNlLFxuXHRcdGhhbmRsZTogZmFsc2UsXG5cdFx0aGVscGVyOiBcIm9yaWdpbmFsXCIsXG5cdFx0aWZyYW1lRml4OiBmYWxzZSxcblx0XHRvcGFjaXR5OiBmYWxzZSxcblx0XHRyZWZyZXNoUG9zaXRpb25zOiBmYWxzZSxcblx0XHRyZXZlcnQ6IGZhbHNlLFxuXHRcdHJldmVydER1cmF0aW9uOiA1MDAsXG5cdFx0c2NvcGU6IFwiZGVmYXVsdFwiLFxuXHRcdHNjcm9sbDogdHJ1ZSxcblx0XHRzY3JvbGxTZW5zaXRpdml0eTogMjAsXG5cdFx0c2Nyb2xsU3BlZWQ6IDIwLFxuXHRcdHNuYXA6IGZhbHNlLFxuXHRcdHNuYXBNb2RlOiBcImJvdGhcIixcblx0XHRzbmFwVG9sZXJhbmNlOiAyMCxcblx0XHRzdGFjazogZmFsc2UsXG5cdFx0ekluZGV4OiBmYWxzZSxcblxuXHRcdC8vIENhbGxiYWNrc1xuXHRcdGRyYWc6IG51bGwsXG5cdFx0c3RhcnQ6IG51bGwsXG5cdFx0c3RvcDogbnVsbFxuXHR9LFxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmhlbHBlciA9PT0gXCJvcmlnaW5hbFwiICkge1xuXHRcdFx0dGhpcy5fc2V0UG9zaXRpb25SZWxhdGl2ZSgpO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5hZGRDbGFzc2VzICkge1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktZHJhZ2dhYmxlXCIgKTtcblx0XHR9XG5cdFx0dGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCk7XG5cblx0XHR0aGlzLl9tb3VzZUluaXQoKTtcblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXHRcdGlmICgga2V5ID09PSBcImhhbmRsZVwiICkge1xuXHRcdFx0dGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCk7XG5cdFx0XHR0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKTtcblx0XHR9XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggKCB0aGlzLmhlbHBlciB8fCB0aGlzLmVsZW1lbnQgKS5pcyggXCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nXCIgKSApIHtcblx0XHRcdHRoaXMuZGVzdHJveU9uQ2xlYXIgPSB0cnVlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9yZW1vdmVIYW5kbGVDbGFzc05hbWUoKTtcblx0XHR0aGlzLl9tb3VzZURlc3Ryb3koKTtcblx0fSxcblxuXHRfbW91c2VDYXB0dXJlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIG8gPSB0aGlzLm9wdGlvbnM7XG5cblx0XHQvLyBBbW9uZyBvdGhlcnMsIHByZXZlbnQgYSBkcmFnIG9uIGEgcmVzaXphYmxlLWhhbmRsZVxuXHRcdGlmICggdGhpcy5oZWxwZXIgfHwgby5kaXNhYmxlZCB8fFxuXHRcdFx0XHQkKCBldmVudC50YXJnZXQgKS5jbG9zZXN0KCBcIi51aS1yZXNpemFibGUtaGFuZGxlXCIgKS5sZW5ndGggPiAwICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vUXVpdCBpZiB3ZSdyZSBub3Qgb24gYSB2YWxpZCBoYW5kbGVcblx0XHR0aGlzLmhhbmRsZSA9IHRoaXMuX2dldEhhbmRsZSggZXZlbnQgKTtcblx0XHRpZiAoICF0aGlzLmhhbmRsZSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLl9ibHVyQWN0aXZlRWxlbWVudCggZXZlbnQgKTtcblxuXHRcdHRoaXMuX2Jsb2NrRnJhbWVzKCBvLmlmcmFtZUZpeCA9PT0gdHJ1ZSA/IFwiaWZyYW1lXCIgOiBvLmlmcmFtZUZpeCApO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cblx0fSxcblxuXHRfYmxvY2tGcmFtZXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR0aGlzLmlmcmFtZUJsb2NrcyA9IHRoaXMuZG9jdW1lbnQuZmluZCggc2VsZWN0b3IgKS5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGlmcmFtZSA9ICQoIHRoaXMgKTtcblxuXHRcdFx0cmV0dXJuICQoIFwiPGRpdj5cIiApXG5cdFx0XHRcdC5jc3MoIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiIClcblx0XHRcdFx0LmFwcGVuZFRvKCBpZnJhbWUucGFyZW50KCkgKVxuXHRcdFx0XHQub3V0ZXJXaWR0aCggaWZyYW1lLm91dGVyV2lkdGgoKSApXG5cdFx0XHRcdC5vdXRlckhlaWdodCggaWZyYW1lLm91dGVySGVpZ2h0KCkgKVxuXHRcdFx0XHQub2Zmc2V0KCBpZnJhbWUub2Zmc2V0KCkgKVsgMCBdO1xuXHRcdH0gKTtcblx0fSxcblxuXHRfdW5ibG9ja0ZyYW1lczogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCB0aGlzLmlmcmFtZUJsb2NrcyApIHtcblx0XHRcdHRoaXMuaWZyYW1lQmxvY2tzLnJlbW92ZSgpO1xuXHRcdFx0ZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzO1xuXHRcdH1cblx0fSxcblxuXHRfYmx1ckFjdGl2ZUVsZW1lbnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgYWN0aXZlRWxlbWVudCA9ICQudWkuc2FmZUFjdGl2ZUVsZW1lbnQoIHRoaXMuZG9jdW1lbnRbIDAgXSApLFxuXHRcdFx0dGFyZ2V0ID0gJCggZXZlbnQudGFyZ2V0ICk7XG5cblx0XHQvLyBEb24ndCBibHVyIGlmIHRoZSBldmVudCBvY2N1cnJlZCBvbiBhbiBlbGVtZW50IHRoYXQgaXMgd2l0aGluXG5cdFx0Ly8gdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnRcblx0XHQvLyBTZWUgIzEwNTI3LCAjMTI0NzJcblx0XHRpZiAoIHRhcmdldC5jbG9zZXN0KCBhY3RpdmVFbGVtZW50ICkubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEJsdXIgYW55IGVsZW1lbnQgdGhhdCBjdXJyZW50bHkgaGFzIGZvY3VzLCBzZWUgIzQyNjFcblx0XHQkLnVpLnNhZmVCbHVyKCBhY3RpdmVFbGVtZW50ICk7XG5cdH0sXG5cblx0X21vdXNlU3RhcnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdHZhciBvID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0Ly9DcmVhdGUgYW5kIGFwcGVuZCB0aGUgdmlzaWJsZSBoZWxwZXJcblx0XHR0aGlzLmhlbHBlciA9IHRoaXMuX2NyZWF0ZUhlbHBlciggZXZlbnQgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmhlbHBlciwgXCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmdcIiApO1xuXG5cdFx0Ly9DYWNoZSB0aGUgaGVscGVyIHNpemVcblx0XHR0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCk7XG5cblx0XHQvL0lmIGRkbWFuYWdlciBpcyB1c2VkIGZvciBkcm9wcGFibGVzLCBzZXQgdGhlIGdsb2JhbCBkcmFnZ2FibGVcblx0XHRpZiAoICQudWkuZGRtYW5hZ2VyICkge1xuXHRcdFx0JC51aS5kZG1hbmFnZXIuY3VycmVudCA9IHRoaXM7XG5cdFx0fVxuXG5cdFx0Lypcblx0XHQgKiAtIFBvc2l0aW9uIGdlbmVyYXRpb24gLVxuXHRcdCAqIFRoaXMgYmxvY2sgZ2VuZXJhdGVzIGV2ZXJ5dGhpbmcgcG9zaXRpb24gcmVsYXRlZCAtIGl0J3MgdGhlIGNvcmUgb2YgZHJhZ2dhYmxlcy5cblx0XHQgKi9cblxuXHRcdC8vQ2FjaGUgdGhlIG1hcmdpbnMgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnRcblx0XHR0aGlzLl9jYWNoZU1hcmdpbnMoKTtcblxuXHRcdC8vU3RvcmUgdGhlIGhlbHBlcidzIGNzcyBwb3NpdGlvblxuXHRcdHRoaXMuY3NzUG9zaXRpb24gPSB0aGlzLmhlbHBlci5jc3MoIFwicG9zaXRpb25cIiApO1xuXHRcdHRoaXMuc2Nyb2xsUGFyZW50ID0gdGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCB0cnVlICk7XG5cdFx0dGhpcy5vZmZzZXRQYXJlbnQgPSB0aGlzLmhlbHBlci5vZmZzZXRQYXJlbnQoKTtcblx0XHR0aGlzLmhhc0ZpeGVkQW5jZXN0b3IgPSB0aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICQoIHRoaXMgKS5jc3MoIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCI7XG5cdFx0XHR9ICkubGVuZ3RoID4gMDtcblxuXHRcdC8vVGhlIGVsZW1lbnQncyBhYnNvbHV0ZSBwb3NpdGlvbiBvbiB0aGUgcGFnZSBtaW51cyBtYXJnaW5zXG5cdFx0dGhpcy5wb3NpdGlvbkFicyA9IHRoaXMuZWxlbWVudC5vZmZzZXQoKTtcblx0XHR0aGlzLl9yZWZyZXNoT2Zmc2V0cyggZXZlbnQgKTtcblxuXHRcdC8vR2VuZXJhdGUgdGhlIG9yaWdpbmFsIHBvc2l0aW9uXG5cdFx0dGhpcy5vcmlnaW5hbFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiA9IHRoaXMuX2dlbmVyYXRlUG9zaXRpb24oIGV2ZW50LCBmYWxzZSApO1xuXHRcdHRoaXMub3JpZ2luYWxQYWdlWCA9IGV2ZW50LnBhZ2VYO1xuXHRcdHRoaXMub3JpZ2luYWxQYWdlWSA9IGV2ZW50LnBhZ2VZO1xuXG5cdFx0Ly9BZGp1c3QgdGhlIG1vdXNlIG9mZnNldCByZWxhdGl2ZSB0byB0aGUgaGVscGVyIGlmIFwiY3Vyc29yQXRcIiBpcyBzdXBwbGllZFxuXHRcdCggby5jdXJzb3JBdCAmJiB0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKCBvLmN1cnNvckF0ICkgKTtcblxuXHRcdC8vU2V0IGEgY29udGFpbm1lbnQgaWYgZ2l2ZW4gaW4gdGhlIG9wdGlvbnNcblx0XHR0aGlzLl9zZXRDb250YWlubWVudCgpO1xuXG5cdFx0Ly9UcmlnZ2VyIGV2ZW50ICsgY2FsbGJhY2tzXG5cdFx0aWYgKCB0aGlzLl90cmlnZ2VyKCBcInN0YXJ0XCIsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0dGhpcy5fY2xlYXIoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvL1JlY2FjaGUgdGhlIGhlbHBlciBzaXplXG5cdFx0dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO1xuXG5cdFx0Ly9QcmVwYXJlIHRoZSBkcm9wcGFibGUgb2Zmc2V0c1xuXHRcdGlmICggJC51aS5kZG1hbmFnZXIgJiYgIW8uZHJvcEJlaGF2aW91ciApIHtcblx0XHRcdCQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdC8vIEV4ZWN1dGUgdGhlIGRyYWcgb25jZSAtIHRoaXMgY2F1c2VzIHRoZSBoZWxwZXIgbm90IHRvIGJlIHZpc2libGUgYmVmb3JlIGdldHRpbmcgaXRzXG5cdFx0Ly8gY29ycmVjdCBwb3NpdGlvblxuXHRcdHRoaXMuX21vdXNlRHJhZyggZXZlbnQsIHRydWUgKTtcblxuXHRcdC8vIElmIHRoZSBkZG1hbmFnZXIgaXMgdXNlZCBmb3IgZHJvcHBhYmxlcywgaW5mb3JtIHRoZSBtYW5hZ2VyIHRoYXQgZHJhZ2dpbmcgaGFzIHN0YXJ0ZWRcblx0XHQvLyAoc2VlICM1MDAzKVxuXHRcdGlmICggJC51aS5kZG1hbmFnZXIgKSB7XG5cdFx0XHQkLnVpLmRkbWFuYWdlci5kcmFnU3RhcnQoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0X3JlZnJlc2hPZmZzZXRzOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dGhpcy5vZmZzZXQgPSB7XG5cdFx0XHR0b3A6IHRoaXMucG9zaXRpb25BYnMudG9wIC0gdGhpcy5tYXJnaW5zLnRvcCxcblx0XHRcdGxlZnQ6IHRoaXMucG9zaXRpb25BYnMubGVmdCAtIHRoaXMubWFyZ2lucy5sZWZ0LFxuXHRcdFx0c2Nyb2xsOiBmYWxzZSxcblx0XHRcdHBhcmVudDogdGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCksXG5cdFx0XHRyZWxhdGl2ZTogdGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKVxuXHRcdH07XG5cblx0XHR0aGlzLm9mZnNldC5jbGljayA9IHtcblx0XHRcdGxlZnQ6IGV2ZW50LnBhZ2VYIC0gdGhpcy5vZmZzZXQubGVmdCxcblx0XHRcdHRvcDogZXZlbnQucGFnZVkgLSB0aGlzLm9mZnNldC50b3Bcblx0XHR9O1xuXHR9LFxuXG5cdF9tb3VzZURyYWc6IGZ1bmN0aW9uKCBldmVudCwgbm9Qcm9wYWdhdGlvbiApIHtcblxuXHRcdC8vIHJlc2V0IGFueSBuZWNlc3NhcnkgY2FjaGVkIHByb3BlcnRpZXMgKHNlZSAjNTAwOSlcblx0XHRpZiAoIHRoaXMuaGFzRml4ZWRBbmNlc3RvciApIHtcblx0XHRcdHRoaXMub2Zmc2V0LnBhcmVudCA9IHRoaXMuX2dldFBhcmVudE9mZnNldCgpO1xuXHRcdH1cblxuXHRcdC8vQ29tcHV0ZSB0aGUgaGVscGVycyBwb3NpdGlvblxuXHRcdHRoaXMucG9zaXRpb24gPSB0aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKCBldmVudCwgdHJ1ZSApO1xuXHRcdHRoaXMucG9zaXRpb25BYnMgPSB0aGlzLl9jb252ZXJ0UG9zaXRpb25UbyggXCJhYnNvbHV0ZVwiICk7XG5cblx0XHQvL0NhbGwgcGx1Z2lucyBhbmQgY2FsbGJhY2tzIGFuZCB1c2UgdGhlIHJlc3VsdGluZyBwb3NpdGlvbiBpZiBzb21ldGhpbmcgaXMgcmV0dXJuZWRcblx0XHRpZiAoICFub1Byb3BhZ2F0aW9uICkge1xuXHRcdFx0dmFyIHVpID0gdGhpcy5fdWlIYXNoKCk7XG5cdFx0XHRpZiAoIHRoaXMuX3RyaWdnZXIoIFwiZHJhZ1wiLCBldmVudCwgdWkgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdHRoaXMuX21vdXNlVXAoIG5ldyAkLkV2ZW50KCBcIm1vdXNldXBcIiwgZXZlbnQgKSApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnBvc2l0aW9uID0gdWkucG9zaXRpb247XG5cdFx0fVxuXG5cdFx0dGhpcy5oZWxwZXJbIDAgXS5zdHlsZS5sZWZ0ID0gdGhpcy5wb3NpdGlvbi5sZWZ0ICsgXCJweFwiO1xuXHRcdHRoaXMuaGVscGVyWyAwIF0uc3R5bGUudG9wID0gdGhpcy5wb3NpdGlvbi50b3AgKyBcInB4XCI7XG5cblx0XHRpZiAoICQudWkuZGRtYW5hZ2VyICkge1xuXHRcdFx0JC51aS5kZG1hbmFnZXIuZHJhZyggdGhpcywgZXZlbnQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0X21vdXNlU3RvcDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0Ly9JZiB3ZSBhcmUgdXNpbmcgZHJvcHBhYmxlcywgaW5mb3JtIHRoZSBtYW5hZ2VyIGFib3V0IHRoZSBkcm9wXG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0ZHJvcHBlZCA9IGZhbHNlO1xuXHRcdGlmICggJC51aS5kZG1hbmFnZXIgJiYgIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyICkge1xuXHRcdFx0ZHJvcHBlZCA9ICQudWkuZGRtYW5hZ2VyLmRyb3AoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0Ly9pZiBhIGRyb3AgY29tZXMgZnJvbSBvdXRzaWRlIChhIHNvcnRhYmxlKVxuXHRcdGlmICggdGhpcy5kcm9wcGVkICkge1xuXHRcdFx0ZHJvcHBlZCA9IHRoaXMuZHJvcHBlZDtcblx0XHRcdHRoaXMuZHJvcHBlZCA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICggKCB0aGlzLm9wdGlvbnMucmV2ZXJ0ID09PSBcImludmFsaWRcIiAmJiAhZHJvcHBlZCApIHx8XG5cdFx0XHRcdCggdGhpcy5vcHRpb25zLnJldmVydCA9PT0gXCJ2YWxpZFwiICYmIGRyb3BwZWQgKSB8fFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMucmV2ZXJ0ID09PSB0cnVlIHx8ICggJC5pc0Z1bmN0aW9uKCB0aGlzLm9wdGlvbnMucmV2ZXJ0ICkgJiZcblx0XHRcdFx0dGhpcy5vcHRpb25zLnJldmVydC5jYWxsKCB0aGlzLmVsZW1lbnQsIGRyb3BwZWQgKSApXG5cdFx0KSB7XG5cdFx0XHQkKCB0aGlzLmhlbHBlciApLmFuaW1hdGUoXG5cdFx0XHRcdHRoaXMub3JpZ2luYWxQb3NpdGlvbixcblx0XHRcdFx0cGFyc2VJbnQoIHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwgMTAgKSxcblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGF0Ll90cmlnZ2VyKCBcInN0b3BcIiwgZXZlbnQgKSAhPT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHR0aGF0Ll9jbGVhcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCB0aGlzLl90cmlnZ2VyKCBcInN0b3BcIiwgZXZlbnQgKSAhPT0gZmFsc2UgKSB7XG5cdFx0XHRcdHRoaXMuX2NsZWFyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdF9tb3VzZVVwOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dGhpcy5fdW5ibG9ja0ZyYW1lcygpO1xuXG5cdFx0Ly8gSWYgdGhlIGRkbWFuYWdlciBpcyB1c2VkIGZvciBkcm9wcGFibGVzLCBpbmZvcm0gdGhlIG1hbmFnZXIgdGhhdCBkcmFnZ2luZyBoYXMgc3RvcHBlZFxuXHRcdC8vIChzZWUgIzUwMDMpXG5cdFx0aWYgKCAkLnVpLmRkbWFuYWdlciApIHtcblx0XHRcdCQudWkuZGRtYW5hZ2VyLmRyYWdTdG9wKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdC8vIE9ubHkgbmVlZCB0byBmb2N1cyBpZiB0aGUgZXZlbnQgb2NjdXJyZWQgb24gdGhlIGRyYWdnYWJsZSBpdHNlbGYsIHNlZSAjMTA1Mjdcblx0XHRpZiAoIHRoaXMuaGFuZGxlRWxlbWVudC5pcyggZXZlbnQudGFyZ2V0ICkgKSB7XG5cblx0XHRcdC8vIFRoZSBpbnRlcmFjdGlvbiBpcyBvdmVyOyB3aGV0aGVyIG9yIG5vdCB0aGUgY2xpY2sgcmVzdWx0ZWQgaW4gYSBkcmFnLFxuXHRcdFx0Ly8gZm9jdXMgdGhlIGVsZW1lbnRcblx0XHRcdHRoaXMuZWxlbWVudC50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gJC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlVXAuY2FsbCggdGhpcywgZXZlbnQgKTtcblx0fSxcblxuXHRjYW5jZWw6IGZ1bmN0aW9uKCkge1xuXG5cdFx0aWYgKCB0aGlzLmhlbHBlci5pcyggXCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nXCIgKSApIHtcblx0XHRcdHRoaXMuX21vdXNlVXAoIG5ldyAkLkV2ZW50KCBcIm1vdXNldXBcIiwgeyB0YXJnZXQ6IHRoaXMuZWxlbWVudFsgMCBdIH0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9jbGVhcigpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0X2dldEhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHJldHVybiB0aGlzLm9wdGlvbnMuaGFuZGxlID9cblx0XHRcdCEhJCggZXZlbnQudGFyZ2V0ICkuY2xvc2VzdCggdGhpcy5lbGVtZW50LmZpbmQoIHRoaXMub3B0aW9ucy5oYW5kbGUgKSApLmxlbmd0aCA6XG5cdFx0XHR0cnVlO1xuXHR9LFxuXG5cdF9zZXRIYW5kbGVDbGFzc05hbWU6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuaGFuZGxlRWxlbWVudCA9IHRoaXMub3B0aW9ucy5oYW5kbGUgP1xuXHRcdFx0dGhpcy5lbGVtZW50LmZpbmQoIHRoaXMub3B0aW9ucy5oYW5kbGUgKSA6IHRoaXMuZWxlbWVudDtcblx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5oYW5kbGVFbGVtZW50LCBcInVpLWRyYWdnYWJsZS1oYW5kbGVcIiApO1xuXHR9LFxuXG5cdF9yZW1vdmVIYW5kbGVDbGFzc05hbWU6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmhhbmRsZUVsZW1lbnQsIFwidWktZHJhZ2dhYmxlLWhhbmRsZVwiICk7XG5cdH0sXG5cblx0X2NyZWF0ZUhlbHBlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0dmFyIG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRoZWxwZXJJc0Z1bmN0aW9uID0gJC5pc0Z1bmN0aW9uKCBvLmhlbHBlciApLFxuXHRcdFx0aGVscGVyID0gaGVscGVySXNGdW5jdGlvbiA/XG5cdFx0XHRcdCQoIG8uaGVscGVyLmFwcGx5KCB0aGlzLmVsZW1lbnRbIDAgXSwgWyBldmVudCBdICkgKSA6XG5cdFx0XHRcdCggby5oZWxwZXIgPT09IFwiY2xvbmVcIiA/XG5cdFx0XHRcdFx0dGhpcy5lbGVtZW50LmNsb25lKCkucmVtb3ZlQXR0ciggXCJpZFwiICkgOlxuXHRcdFx0XHRcdHRoaXMuZWxlbWVudCApO1xuXG5cdFx0aWYgKCAhaGVscGVyLnBhcmVudHMoIFwiYm9keVwiICkubGVuZ3RoICkge1xuXHRcdFx0aGVscGVyLmFwcGVuZFRvKCAoIG8uYXBwZW5kVG8gPT09IFwicGFyZW50XCIgP1xuXHRcdFx0XHR0aGlzLmVsZW1lbnRbIDAgXS5wYXJlbnROb2RlIDpcblx0XHRcdFx0by5hcHBlbmRUbyApICk7XG5cdFx0fVxuXG5cdFx0Ly8gSHR0cDovL2J1Z3MuanF1ZXJ5dWkuY29tL3RpY2tldC85NDQ2XG5cdFx0Ly8gYSBoZWxwZXIgZnVuY3Rpb24gY2FuIHJldHVybiB0aGUgb3JpZ2luYWwgZWxlbWVudFxuXHRcdC8vIHdoaWNoIHdvdWxkbid0IGhhdmUgYmVlbiBzZXQgdG8gcmVsYXRpdmUgaW4gX2NyZWF0ZVxuXHRcdGlmICggaGVscGVySXNGdW5jdGlvbiAmJiBoZWxwZXJbIDAgXSA9PT0gdGhpcy5lbGVtZW50WyAwIF0gKSB7XG5cdFx0XHR0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBoZWxwZXJbIDAgXSAhPT0gdGhpcy5lbGVtZW50WyAwIF0gJiZcblx0XHRcdFx0ISggLyhmaXhlZHxhYnNvbHV0ZSkvICkudGVzdCggaGVscGVyLmNzcyggXCJwb3NpdGlvblwiICkgKSApIHtcblx0XHRcdGhlbHBlci5jc3MoIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhlbHBlcjtcblxuXHR9LFxuXG5cdF9zZXRQb3NpdGlvblJlbGF0aXZlOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICEoIC9eKD86cnxhfGYpLyApLnRlc3QoIHRoaXMuZWxlbWVudC5jc3MoIFwicG9zaXRpb25cIiApICkgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnRbIDAgXS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblx0XHR9XG5cdH0sXG5cblx0X2FkanVzdE9mZnNldEZyb21IZWxwZXI6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0aWYgKCB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gb2JqLnNwbGl0KCBcIiBcIiApO1xuXHRcdH1cblx0XHRpZiAoICQuaXNBcnJheSggb2JqICkgKSB7XG5cdFx0XHRvYmogPSB7IGxlZnQ6ICtvYmpbIDAgXSwgdG9wOiArb2JqWyAxIF0gfHwgMCB9O1xuXHRcdH1cblx0XHRpZiAoIFwibGVmdFwiIGluIG9iaiApIHtcblx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQgPSBvYmoubGVmdCArIHRoaXMubWFyZ2lucy5sZWZ0O1xuXHRcdH1cblx0XHRpZiAoIFwicmlnaHRcIiBpbiBvYmogKSB7XG5cdFx0XHR0aGlzLm9mZnNldC5jbGljay5sZWZ0ID0gdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCAtIG9iai5yaWdodCArIHRoaXMubWFyZ2lucy5sZWZ0O1xuXHRcdH1cblx0XHRpZiAoIFwidG9wXCIgaW4gb2JqICkge1xuXHRcdFx0dGhpcy5vZmZzZXQuY2xpY2sudG9wID0gb2JqLnRvcCArIHRoaXMubWFyZ2lucy50b3A7XG5cdFx0fVxuXHRcdGlmICggXCJib3R0b21cIiBpbiBvYmogKSB7XG5cdFx0XHR0aGlzLm9mZnNldC5jbGljay50b3AgPSB0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCAtIG9iai5ib3R0b20gKyB0aGlzLm1hcmdpbnMudG9wO1xuXHRcdH1cblx0fSxcblxuXHRfaXNSb290Tm9kZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0cmV0dXJuICggLyhodG1sfGJvZHkpL2kgKS50ZXN0KCBlbGVtZW50LnRhZ05hbWUgKSB8fCBlbGVtZW50ID09PSB0aGlzLmRvY3VtZW50WyAwIF07XG5cdH0sXG5cblx0X2dldFBhcmVudE9mZnNldDogZnVuY3Rpb24oKSB7XG5cblx0XHQvL0dldCB0aGUgb2Zmc2V0UGFyZW50IGFuZCBjYWNoZSBpdHMgcG9zaXRpb25cblx0XHR2YXIgcG8gPSB0aGlzLm9mZnNldFBhcmVudC5vZmZzZXQoKSxcblx0XHRcdGRvY3VtZW50ID0gdGhpcy5kb2N1bWVudFsgMCBdO1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBuZWVkIHRvIG1vZGlmeSBhIG9mZnNldCBjYWxjdWxhdGVkIG9uIHN0YXJ0LCBzaW5jZSB0aGVcblx0XHQvLyBmb2xsb3dpbmcgaGFwcGVuZWQ6XG5cdFx0Ly8gMS4gVGhlIHBvc2l0aW9uIG9mIHRoZSBoZWxwZXIgaXMgYWJzb2x1dGUsIHNvIGl0J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGVcblx0XHQvLyBuZXh0IHBvc2l0aW9uZWQgcGFyZW50XG5cdFx0Ly8gMi4gVGhlIGFjdHVhbCBvZmZzZXQgcGFyZW50IGlzIGEgY2hpbGQgb2YgdGhlIHNjcm9sbCBwYXJlbnQsIGFuZCB0aGUgc2Nyb2xsIHBhcmVudCBpc24ndFxuXHRcdC8vIHRoZSBkb2N1bWVudCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgc2Nyb2xsIGlzIGluY2x1ZGVkIGluIHRoZSBpbml0aWFsIGNhbGN1bGF0aW9uIG9mIHRoZVxuXHRcdC8vIG9mZnNldCBvZiB0aGUgcGFyZW50LCBhbmQgbmV2ZXIgcmVjYWxjdWxhdGVkIHVwb24gZHJhZ1xuXHRcdGlmICggdGhpcy5jc3NQb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiICYmIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0gIT09IGRvY3VtZW50ICYmXG5cdFx0XHRcdCQuY29udGFpbnMoIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0sIHRoaXMub2Zmc2V0UGFyZW50WyAwIF0gKSApIHtcblx0XHRcdHBvLmxlZnQgKz0gdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpO1xuXHRcdFx0cG8udG9wICs9IHRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5faXNSb290Tm9kZSggdGhpcy5vZmZzZXRQYXJlbnRbIDAgXSApICkge1xuXHRcdFx0cG8gPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHBvLnRvcCArICggcGFyc2VJbnQoIHRoaXMub2Zmc2V0UGFyZW50LmNzcyggXCJib3JkZXJUb3BXaWR0aFwiICksIDEwICkgfHwgMCApLFxuXHRcdFx0bGVmdDogcG8ubGVmdCArICggcGFyc2VJbnQoIHRoaXMub2Zmc2V0UGFyZW50LmNzcyggXCJib3JkZXJMZWZ0V2lkdGhcIiApLCAxMCApIHx8IDAgKVxuXHRcdH07XG5cblx0fSxcblxuXHRfZ2V0UmVsYXRpdmVPZmZzZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggdGhpcy5jc3NQb3NpdGlvbiAhPT0gXCJyZWxhdGl2ZVwiICkge1xuXHRcdFx0cmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdFx0dmFyIHAgPSB0aGlzLmVsZW1lbnQucG9zaXRpb24oKSxcblx0XHRcdHNjcm9sbElzUm9vdE5vZGUgPSB0aGlzLl9pc1Jvb3ROb2RlKCB0aGlzLnNjcm9sbFBhcmVudFsgMCBdICk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBwLnRvcCAtICggcGFyc2VJbnQoIHRoaXMuaGVscGVyLmNzcyggXCJ0b3BcIiApLCAxMCApIHx8IDAgKSArXG5cdFx0XHRcdCggIXNjcm9sbElzUm9vdE5vZGUgPyB0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSA6IDAgKSxcblx0XHRcdGxlZnQ6IHAubGVmdCAtICggcGFyc2VJbnQoIHRoaXMuaGVscGVyLmNzcyggXCJsZWZ0XCIgKSwgMTAgKSB8fCAwICkgK1xuXHRcdFx0XHQoICFzY3JvbGxJc1Jvb3ROb2RlID8gdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpIDogMCApXG5cdFx0fTtcblxuXHR9LFxuXG5cdF9jYWNoZU1hcmdpbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMubWFyZ2lucyA9IHtcblx0XHRcdGxlZnQ6ICggcGFyc2VJbnQoIHRoaXMuZWxlbWVudC5jc3MoIFwibWFyZ2luTGVmdFwiICksIDEwICkgfHwgMCApLFxuXHRcdFx0dG9wOiAoIHBhcnNlSW50KCB0aGlzLmVsZW1lbnQuY3NzKCBcIm1hcmdpblRvcFwiICksIDEwICkgfHwgMCApLFxuXHRcdFx0cmlnaHQ6ICggcGFyc2VJbnQoIHRoaXMuZWxlbWVudC5jc3MoIFwibWFyZ2luUmlnaHRcIiApLCAxMCApIHx8IDAgKSxcblx0XHRcdGJvdHRvbTogKCBwYXJzZUludCggdGhpcy5lbGVtZW50LmNzcyggXCJtYXJnaW5Cb3R0b21cIiApLCAxMCApIHx8IDAgKVxuXHRcdH07XG5cdH0sXG5cblx0X2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuaGVscGVyUHJvcG9ydGlvbnMgPSB7XG5cdFx0XHR3aWR0aDogdGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLFxuXHRcdFx0aGVpZ2h0OiB0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpXG5cdFx0fTtcblx0fSxcblxuXHRfc2V0Q29udGFpbm1lbnQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0dmFyIGlzVXNlclNjcm9sbGFibGUsIGMsIGNlLFxuXHRcdFx0byA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGRvY3VtZW50ID0gdGhpcy5kb2N1bWVudFsgMCBdO1xuXG5cdFx0dGhpcy5yZWxhdGl2ZUNvbnRhaW5lciA9IG51bGw7XG5cblx0XHRpZiAoICFvLmNvbnRhaW5tZW50ICkge1xuXHRcdFx0dGhpcy5jb250YWlubWVudCA9IG51bGw7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ID09PSBcIndpbmRvd1wiICkge1xuXHRcdFx0dGhpcy5jb250YWlubWVudCA9IFtcblx0XHRcdFx0JCggd2luZG93ICkuc2Nyb2xsTGVmdCgpIC0gdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCAtIHRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LFxuXHRcdFx0XHQkKCB3aW5kb3cgKS5zY3JvbGxUb3AoKSAtIHRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCAtIHRoaXMub2Zmc2V0LnBhcmVudC50b3AsXG5cdFx0XHRcdCQoIHdpbmRvdyApLnNjcm9sbExlZnQoKSArICQoIHdpbmRvdyApLndpZHRoKCkgLVxuXHRcdFx0XHRcdHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGggLSB0aGlzLm1hcmdpbnMubGVmdCxcblx0XHRcdFx0JCggd2luZG93ICkuc2Nyb2xsVG9wKCkgK1xuXHRcdFx0XHRcdCggJCggd2luZG93ICkuaGVpZ2h0KCkgfHwgZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCApIC1cblx0XHRcdFx0XHR0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCAtIHRoaXMubWFyZ2lucy50b3Bcblx0XHRcdF07XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ID09PSBcImRvY3VtZW50XCIgKSB7XG5cdFx0XHR0aGlzLmNvbnRhaW5tZW50ID0gW1xuXHRcdFx0XHQwLFxuXHRcdFx0XHQwLFxuXHRcdFx0XHQkKCBkb2N1bWVudCApLndpZHRoKCkgLSB0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoIC0gdGhpcy5tYXJnaW5zLmxlZnQsXG5cdFx0XHRcdCggJCggZG9jdW1lbnQgKS5oZWlnaHQoKSB8fCBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0ICkgLVxuXHRcdFx0XHRcdHRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0IC0gdGhpcy5tYXJnaW5zLnRvcFxuXHRcdFx0XTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIG8uY29udGFpbm1lbnQuY29uc3RydWN0b3IgPT09IEFycmF5ICkge1xuXHRcdFx0dGhpcy5jb250YWlubWVudCA9IG8uY29udGFpbm1lbnQ7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ID09PSBcInBhcmVudFwiICkge1xuXHRcdFx0by5jb250YWlubWVudCA9IHRoaXMuaGVscGVyWyAwIF0ucGFyZW50Tm9kZTtcblx0XHR9XG5cblx0XHRjID0gJCggby5jb250YWlubWVudCApO1xuXHRcdGNlID0gY1sgMCBdO1xuXG5cdFx0aWYgKCAhY2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXNVc2VyU2Nyb2xsYWJsZSA9IC8oc2Nyb2xsfGF1dG8pLy50ZXN0KCBjLmNzcyggXCJvdmVyZmxvd1wiICkgKTtcblxuXHRcdHRoaXMuY29udGFpbm1lbnQgPSBbXG5cdFx0XHQoIHBhcnNlSW50KCBjLmNzcyggXCJib3JkZXJMZWZ0V2lkdGhcIiApLCAxMCApIHx8IDAgKSArXG5cdFx0XHRcdCggcGFyc2VJbnQoIGMuY3NzKCBcInBhZGRpbmdMZWZ0XCIgKSwgMTAgKSB8fCAwICksXG5cdFx0XHQoIHBhcnNlSW50KCBjLmNzcyggXCJib3JkZXJUb3BXaWR0aFwiICksIDEwICkgfHwgMCApICtcblx0XHRcdFx0KCBwYXJzZUludCggYy5jc3MoIFwicGFkZGluZ1RvcFwiICksIDEwICkgfHwgMCApLFxuXHRcdFx0KCBpc1VzZXJTY3JvbGxhYmxlID8gTWF0aC5tYXgoIGNlLnNjcm9sbFdpZHRoLCBjZS5vZmZzZXRXaWR0aCApIDogY2Uub2Zmc2V0V2lkdGggKSAtXG5cdFx0XHRcdCggcGFyc2VJbnQoIGMuY3NzKCBcImJvcmRlclJpZ2h0V2lkdGhcIiApLCAxMCApIHx8IDAgKSAtXG5cdFx0XHRcdCggcGFyc2VJbnQoIGMuY3NzKCBcInBhZGRpbmdSaWdodFwiICksIDEwICkgfHwgMCApIC1cblx0XHRcdFx0dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCAtXG5cdFx0XHRcdHRoaXMubWFyZ2lucy5sZWZ0IC1cblx0XHRcdFx0dGhpcy5tYXJnaW5zLnJpZ2h0LFxuXHRcdFx0KCBpc1VzZXJTY3JvbGxhYmxlID8gTWF0aC5tYXgoIGNlLnNjcm9sbEhlaWdodCwgY2Uub2Zmc2V0SGVpZ2h0ICkgOiBjZS5vZmZzZXRIZWlnaHQgKSAtXG5cdFx0XHRcdCggcGFyc2VJbnQoIGMuY3NzKCBcImJvcmRlckJvdHRvbVdpZHRoXCIgKSwgMTAgKSB8fCAwICkgLVxuXHRcdFx0XHQoIHBhcnNlSW50KCBjLmNzcyggXCJwYWRkaW5nQm90dG9tXCIgKSwgMTAgKSB8fCAwICkgLVxuXHRcdFx0XHR0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCAtXG5cdFx0XHRcdHRoaXMubWFyZ2lucy50b3AgLVxuXHRcdFx0XHR0aGlzLm1hcmdpbnMuYm90dG9tXG5cdFx0XTtcblx0XHR0aGlzLnJlbGF0aXZlQ29udGFpbmVyID0gYztcblx0fSxcblxuXHRfY29udmVydFBvc2l0aW9uVG86IGZ1bmN0aW9uKCBkLCBwb3MgKSB7XG5cblx0XHRpZiAoICFwb3MgKSB7XG5cdFx0XHRwb3MgPSB0aGlzLnBvc2l0aW9uO1xuXHRcdH1cblxuXHRcdHZhciBtb2QgPSBkID09PSBcImFic29sdXRlXCIgPyAxIDogLTEsXG5cdFx0XHRzY3JvbGxJc1Jvb3ROb2RlID0gdGhpcy5faXNSb290Tm9kZSggdGhpcy5zY3JvbGxQYXJlbnRbIDAgXSApO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogKFxuXG5cdFx0XHRcdC8vIFRoZSBhYnNvbHV0ZSBtb3VzZSBwb3NpdGlvblxuXHRcdFx0XHRwb3MudG9wXHQrXG5cblx0XHRcdFx0Ly8gT25seSBmb3IgcmVsYXRpdmUgcG9zaXRpb25lZCBub2RlczogUmVsYXRpdmUgb2Zmc2V0IGZyb20gZWxlbWVudCB0byBvZmZzZXQgcGFyZW50XG5cdFx0XHRcdHRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCAqIG1vZCArXG5cblx0XHRcdFx0Ly8gVGhlIG9mZnNldFBhcmVudCdzIG9mZnNldCB3aXRob3V0IGJvcmRlcnMgKG9mZnNldCArIGJvcmRlcilcblx0XHRcdFx0dGhpcy5vZmZzZXQucGFyZW50LnRvcCAqIG1vZCAtXG5cdFx0XHRcdCggKCB0aGlzLmNzc1Bvc2l0aW9uID09PSBcImZpeGVkXCIgP1xuXHRcdFx0XHRcdC10aGlzLm9mZnNldC5zY3JvbGwudG9wIDpcblx0XHRcdFx0XHQoIHNjcm9sbElzUm9vdE5vZGUgPyAwIDogdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCApICkgKiBtb2QgKVxuXHRcdFx0KSxcblx0XHRcdGxlZnQ6IChcblxuXHRcdFx0XHQvLyBUaGUgYWJzb2x1dGUgbW91c2UgcG9zaXRpb25cblx0XHRcdFx0cG9zLmxlZnQgK1xuXG5cdFx0XHRcdC8vIE9ubHkgZm9yIHJlbGF0aXZlIHBvc2l0aW9uZWQgbm9kZXM6IFJlbGF0aXZlIG9mZnNldCBmcm9tIGVsZW1lbnQgdG8gb2Zmc2V0IHBhcmVudFxuXHRcdFx0XHR0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0ICogbW9kICtcblxuXHRcdFx0XHQvLyBUaGUgb2Zmc2V0UGFyZW50J3Mgb2Zmc2V0IHdpdGhvdXQgYm9yZGVycyAob2Zmc2V0ICsgYm9yZGVyKVxuXHRcdFx0XHR0aGlzLm9mZnNldC5wYXJlbnQubGVmdCAqIG1vZFx0LVxuXHRcdFx0XHQoICggdGhpcy5jc3NQb3NpdGlvbiA9PT0gXCJmaXhlZFwiID9cblx0XHRcdFx0XHQtdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQgOlxuXHRcdFx0XHRcdCggc2Nyb2xsSXNSb290Tm9kZSA/IDAgOiB0aGlzLm9mZnNldC5zY3JvbGwubGVmdCApICkgKiBtb2QgKVxuXHRcdFx0KVxuXHRcdH07XG5cblx0fSxcblxuXHRfZ2VuZXJhdGVQb3NpdGlvbjogZnVuY3Rpb24oIGV2ZW50LCBjb25zdHJhaW5Qb3NpdGlvbiApIHtcblxuXHRcdHZhciBjb250YWlubWVudCwgY28sIHRvcCwgbGVmdCxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRzY3JvbGxJc1Jvb3ROb2RlID0gdGhpcy5faXNSb290Tm9kZSggdGhpcy5zY3JvbGxQYXJlbnRbIDAgXSApLFxuXHRcdFx0cGFnZVggPSBldmVudC5wYWdlWCxcblx0XHRcdHBhZ2VZID0gZXZlbnQucGFnZVk7XG5cblx0XHQvLyBDYWNoZSB0aGUgc2Nyb2xsXG5cdFx0aWYgKCAhc2Nyb2xsSXNSb290Tm9kZSB8fCAhdGhpcy5vZmZzZXQuc2Nyb2xsICkge1xuXHRcdFx0dGhpcy5vZmZzZXQuc2Nyb2xsID0ge1xuXHRcdFx0XHR0b3A6IHRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLFxuXHRcdFx0XHRsZWZ0OiB0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KClcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Lypcblx0XHQgKiAtIFBvc2l0aW9uIGNvbnN0cmFpbmluZyAtXG5cdFx0ICogQ29uc3RyYWluIHRoZSBwb3NpdGlvbiB0byBhIG1peCBvZiBncmlkLCBjb250YWlubWVudC5cblx0XHQgKi9cblxuXHRcdC8vIElmIHdlIGFyZSBub3QgZHJhZ2dpbmcgeWV0LCB3ZSB3b24ndCBjaGVjayBmb3Igb3B0aW9uc1xuXHRcdGlmICggY29uc3RyYWluUG9zaXRpb24gKSB7XG5cdFx0XHRpZiAoIHRoaXMuY29udGFpbm1lbnQgKSB7XG5cdFx0XHRcdGlmICggdGhpcy5yZWxhdGl2ZUNvbnRhaW5lciApIHtcblx0XHRcdFx0XHRjbyA9IHRoaXMucmVsYXRpdmVDb250YWluZXIub2Zmc2V0KCk7XG5cdFx0XHRcdFx0Y29udGFpbm1lbnQgPSBbXG5cdFx0XHRcdFx0XHR0aGlzLmNvbnRhaW5tZW50WyAwIF0gKyBjby5sZWZ0LFxuXHRcdFx0XHRcdFx0dGhpcy5jb250YWlubWVudFsgMSBdICsgY28udG9wLFxuXHRcdFx0XHRcdFx0dGhpcy5jb250YWlubWVudFsgMiBdICsgY28ubGVmdCxcblx0XHRcdFx0XHRcdHRoaXMuY29udGFpbm1lbnRbIDMgXSArIGNvLnRvcFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29udGFpbm1lbnQgPSB0aGlzLmNvbnRhaW5tZW50O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWCAtIHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQgPCBjb250YWlubWVudFsgMCBdICkge1xuXHRcdFx0XHRcdHBhZ2VYID0gY29udGFpbm1lbnRbIDAgXSArIHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWSAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA8IGNvbnRhaW5tZW50WyAxIF0gKSB7XG5cdFx0XHRcdFx0cGFnZVkgPSBjb250YWlubWVudFsgMSBdICsgdGhpcy5vZmZzZXQuY2xpY2sudG9wO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZXZlbnQucGFnZVggLSB0aGlzLm9mZnNldC5jbGljay5sZWZ0ID4gY29udGFpbm1lbnRbIDIgXSApIHtcblx0XHRcdFx0XHRwYWdlWCA9IGNvbnRhaW5tZW50WyAyIF0gKyB0aGlzLm9mZnNldC5jbGljay5sZWZ0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZXZlbnQucGFnZVkgLSB0aGlzLm9mZnNldC5jbGljay50b3AgPiBjb250YWlubWVudFsgMyBdICkge1xuXHRcdFx0XHRcdHBhZ2VZID0gY29udGFpbm1lbnRbIDMgXSArIHRoaXMub2Zmc2V0LmNsaWNrLnRvcDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG8uZ3JpZCApIHtcblxuXHRcdFx0XHQvL0NoZWNrIGZvciBncmlkIGVsZW1lbnRzIHNldCB0byAwIHRvIHByZXZlbnQgZGl2aWRlIGJ5IDAgZXJyb3IgY2F1c2luZyBpbnZhbGlkXG5cdFx0XHRcdC8vIGFyZ3VtZW50IGVycm9ycyBpbiBJRSAoc2VlIHRpY2tldCAjNjk1MClcblx0XHRcdFx0dG9wID0gby5ncmlkWyAxIF0gPyB0aGlzLm9yaWdpbmFsUGFnZVkgKyBNYXRoLnJvdW5kKCAoIHBhZ2VZIC1cblx0XHRcdFx0XHR0aGlzLm9yaWdpbmFsUGFnZVkgKSAvIG8uZ3JpZFsgMSBdICkgKiBvLmdyaWRbIDEgXSA6IHRoaXMub3JpZ2luYWxQYWdlWTtcblx0XHRcdFx0cGFnZVkgPSBjb250YWlubWVudCA/ICggKCB0b3AgLSB0aGlzLm9mZnNldC5jbGljay50b3AgPj0gY29udGFpbm1lbnRbIDEgXSB8fFxuXHRcdFx0XHRcdHRvcCAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA+IGNvbnRhaW5tZW50WyAzIF0gKSA/XG5cdFx0XHRcdFx0XHR0b3AgOlxuXHRcdFx0XHRcdFx0KCAoIHRvcCAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA+PSBjb250YWlubWVudFsgMSBdICkgP1xuXHRcdFx0XHRcdFx0XHR0b3AgLSBvLmdyaWRbIDEgXSA6IHRvcCArIG8uZ3JpZFsgMSBdICkgKSA6IHRvcDtcblxuXHRcdFx0XHRsZWZ0ID0gby5ncmlkWyAwIF0gPyB0aGlzLm9yaWdpbmFsUGFnZVggK1xuXHRcdFx0XHRcdE1hdGgucm91bmQoICggcGFnZVggLSB0aGlzLm9yaWdpbmFsUGFnZVggKSAvIG8uZ3JpZFsgMCBdICkgKiBvLmdyaWRbIDAgXSA6XG5cdFx0XHRcdFx0dGhpcy5vcmlnaW5hbFBhZ2VYO1xuXHRcdFx0XHRwYWdlWCA9IGNvbnRhaW5tZW50ID8gKCAoIGxlZnQgLSB0aGlzLm9mZnNldC5jbGljay5sZWZ0ID49IGNvbnRhaW5tZW50WyAwIF0gfHxcblx0XHRcdFx0XHRsZWZ0IC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA+IGNvbnRhaW5tZW50WyAyIF0gKSA/XG5cdFx0XHRcdFx0XHRsZWZ0IDpcblx0XHRcdFx0XHRcdCggKCBsZWZ0IC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA+PSBjb250YWlubWVudFsgMCBdICkgP1xuXHRcdFx0XHRcdFx0XHRsZWZ0IC0gby5ncmlkWyAwIF0gOiBsZWZ0ICsgby5ncmlkWyAwIF0gKSApIDogbGVmdDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLmF4aXMgPT09IFwieVwiICkge1xuXHRcdFx0XHRwYWdlWCA9IHRoaXMub3JpZ2luYWxQYWdlWDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLmF4aXMgPT09IFwieFwiICkge1xuXHRcdFx0XHRwYWdlWSA9IHRoaXMub3JpZ2luYWxQYWdlWTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiAoXG5cblx0XHRcdFx0Ly8gVGhlIGFic29sdXRlIG1vdXNlIHBvc2l0aW9uXG5cdFx0XHRcdHBhZ2VZIC1cblxuXHRcdFx0XHQvLyBDbGljayBvZmZzZXQgKHJlbGF0aXZlIHRvIHRoZSBlbGVtZW50KVxuXHRcdFx0XHR0aGlzLm9mZnNldC5jbGljay50b3AgLVxuXG5cdFx0XHRcdC8vIE9ubHkgZm9yIHJlbGF0aXZlIHBvc2l0aW9uZWQgbm9kZXM6IFJlbGF0aXZlIG9mZnNldCBmcm9tIGVsZW1lbnQgdG8gb2Zmc2V0IHBhcmVudFxuXHRcdFx0XHR0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AgLVxuXG5cdFx0XHRcdC8vIFRoZSBvZmZzZXRQYXJlbnQncyBvZmZzZXQgd2l0aG91dCBib3JkZXJzIChvZmZzZXQgKyBib3JkZXIpXG5cdFx0XHRcdHRoaXMub2Zmc2V0LnBhcmVudC50b3AgK1xuXHRcdFx0XHQoIHRoaXMuY3NzUG9zaXRpb24gPT09IFwiZml4ZWRcIiA/XG5cdFx0XHRcdFx0LXRoaXMub2Zmc2V0LnNjcm9sbC50b3AgOlxuXHRcdFx0XHRcdCggc2Nyb2xsSXNSb290Tm9kZSA/IDAgOiB0aGlzLm9mZnNldC5zY3JvbGwudG9wICkgKVxuXHRcdFx0KSxcblx0XHRcdGxlZnQ6IChcblxuXHRcdFx0XHQvLyBUaGUgYWJzb2x1dGUgbW91c2UgcG9zaXRpb25cblx0XHRcdFx0cGFnZVggLVxuXG5cdFx0XHRcdC8vIENsaWNrIG9mZnNldCAocmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQpXG5cdFx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQgLVxuXG5cdFx0XHRcdC8vIE9ubHkgZm9yIHJlbGF0aXZlIHBvc2l0aW9uZWQgbm9kZXM6IFJlbGF0aXZlIG9mZnNldCBmcm9tIGVsZW1lbnQgdG8gb2Zmc2V0IHBhcmVudFxuXHRcdFx0XHR0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0IC1cblxuXHRcdFx0XHQvLyBUaGUgb2Zmc2V0UGFyZW50J3Mgb2Zmc2V0IHdpdGhvdXQgYm9yZGVycyAob2Zmc2V0ICsgYm9yZGVyKVxuXHRcdFx0XHR0aGlzLm9mZnNldC5wYXJlbnQubGVmdCArXG5cdFx0XHRcdCggdGhpcy5jc3NQb3NpdGlvbiA9PT0gXCJmaXhlZFwiID9cblx0XHRcdFx0XHQtdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQgOlxuXHRcdFx0XHRcdCggc2Nyb2xsSXNSb290Tm9kZSA/IDAgOiB0aGlzLm9mZnNldC5zY3JvbGwubGVmdCApIClcblx0XHRcdClcblx0XHR9O1xuXG5cdH0sXG5cblx0X2NsZWFyOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5oZWxwZXIsIFwidWktZHJhZ2dhYmxlLWRyYWdnaW5nXCIgKTtcblx0XHRpZiAoIHRoaXMuaGVscGVyWyAwIF0gIT09IHRoaXMuZWxlbWVudFsgMCBdICYmICF0aGlzLmNhbmNlbEhlbHBlclJlbW92YWwgKSB7XG5cdFx0XHR0aGlzLmhlbHBlci5yZW1vdmUoKTtcblx0XHR9XG5cdFx0dGhpcy5oZWxwZXIgPSBudWxsO1xuXHRcdHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCA9IGZhbHNlO1xuXHRcdGlmICggdGhpcy5kZXN0cm95T25DbGVhciApIHtcblx0XHRcdHRoaXMuZGVzdHJveSgpO1xuXHRcdH1cblx0fSxcblxuXHQvLyBGcm9tIG5vdyBvbiBidWxrIHN0dWZmIC0gbWFpbmx5IGhlbHBlcnNcblxuXHRfdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGV2ZW50LCB1aSApIHtcblx0XHR1aSA9IHVpIHx8IHRoaXMuX3VpSGFzaCgpO1xuXHRcdCQudWkucGx1Z2luLmNhbGwoIHRoaXMsIHR5cGUsIFsgZXZlbnQsIHVpLCB0aGlzIF0sIHRydWUgKTtcblxuXHRcdC8vIEFic29sdXRlIHBvc2l0aW9uIGFuZCBvZmZzZXQgKHNlZSAjNjg4NCApIGhhdmUgdG8gYmUgcmVjYWxjdWxhdGVkIGFmdGVyIHBsdWdpbnNcblx0XHRpZiAoIC9eKGRyYWd8c3RhcnR8c3RvcCkvLnRlc3QoIHR5cGUgKSApIHtcblx0XHRcdHRoaXMucG9zaXRpb25BYnMgPSB0aGlzLl9jb252ZXJ0UG9zaXRpb25UbyggXCJhYnNvbHV0ZVwiICk7XG5cdFx0XHR1aS5vZmZzZXQgPSB0aGlzLnBvc2l0aW9uQWJzO1xuXHRcdH1cblx0XHRyZXR1cm4gJC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmNhbGwoIHRoaXMsIHR5cGUsIGV2ZW50LCB1aSApO1xuXHR9LFxuXG5cdHBsdWdpbnM6IHt9LFxuXG5cdF91aUhhc2g6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRoZWxwZXI6IHRoaXMuaGVscGVyLFxuXHRcdFx0cG9zaXRpb246IHRoaXMucG9zaXRpb24sXG5cdFx0XHRvcmlnaW5hbFBvc2l0aW9uOiB0aGlzLm9yaWdpbmFsUG9zaXRpb24sXG5cdFx0XHRvZmZzZXQ6IHRoaXMucG9zaXRpb25BYnNcblx0XHR9O1xuXHR9XG5cbn0gKTtcblxuJC51aS5wbHVnaW4uYWRkKCBcImRyYWdnYWJsZVwiLCBcImNvbm5lY3RUb1NvcnRhYmxlXCIsIHtcblx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgdWksIGRyYWdnYWJsZSApIHtcblx0XHR2YXIgdWlTb3J0YWJsZSA9ICQuZXh0ZW5kKCB7fSwgdWksIHtcblx0XHRcdGl0ZW06IGRyYWdnYWJsZS5lbGVtZW50XG5cdFx0fSApO1xuXG5cdFx0ZHJhZ2dhYmxlLnNvcnRhYmxlcyA9IFtdO1xuXHRcdCQoIGRyYWdnYWJsZS5vcHRpb25zLmNvbm5lY3RUb1NvcnRhYmxlICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc29ydGFibGUgPSAkKCB0aGlzICkuc29ydGFibGUoIFwiaW5zdGFuY2VcIiApO1xuXG5cdFx0XHRpZiAoIHNvcnRhYmxlICYmICFzb3J0YWJsZS5vcHRpb25zLmRpc2FibGVkICkge1xuXHRcdFx0XHRkcmFnZ2FibGUuc29ydGFibGVzLnB1c2goIHNvcnRhYmxlICk7XG5cblx0XHRcdFx0Ly8gUmVmcmVzaFBvc2l0aW9ucyBpcyBjYWxsZWQgYXQgZHJhZyBzdGFydCB0byByZWZyZXNoIHRoZSBjb250YWluZXJDYWNoZVxuXHRcdFx0XHQvLyB3aGljaCBpcyB1c2VkIGluIGRyYWcuIFRoaXMgZW5zdXJlcyBpdCdzIGluaXRpYWxpemVkIGFuZCBzeW5jaHJvbml6ZWRcblx0XHRcdFx0Ly8gd2l0aCBhbnkgY2hhbmdlcyB0aGF0IG1pZ2h0IGhhdmUgaGFwcGVuZWQgb24gdGhlIHBhZ2Ugc2luY2UgaW5pdGlhbGl6YXRpb24uXG5cdFx0XHRcdHNvcnRhYmxlLnJlZnJlc2hQb3NpdGlvbnMoKTtcblx0XHRcdFx0c29ydGFibGUuX3RyaWdnZXIoIFwiYWN0aXZhdGVcIiwgZXZlbnQsIHVpU29ydGFibGUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCBldmVudCwgdWksIGRyYWdnYWJsZSApIHtcblx0XHR2YXIgdWlTb3J0YWJsZSA9ICQuZXh0ZW5kKCB7fSwgdWksIHtcblx0XHRcdGl0ZW06IGRyYWdnYWJsZS5lbGVtZW50XG5cdFx0fSApO1xuXG5cdFx0ZHJhZ2dhYmxlLmNhbmNlbEhlbHBlclJlbW92YWwgPSBmYWxzZTtcblxuXHRcdCQuZWFjaCggZHJhZ2dhYmxlLnNvcnRhYmxlcywgZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc29ydGFibGUgPSB0aGlzO1xuXG5cdFx0XHRpZiAoIHNvcnRhYmxlLmlzT3ZlciApIHtcblx0XHRcdFx0c29ydGFibGUuaXNPdmVyID0gMDtcblxuXHRcdFx0XHQvLyBBbGxvdyB0aGlzIHNvcnRhYmxlIHRvIGhhbmRsZSByZW1vdmluZyB0aGUgaGVscGVyXG5cdFx0XHRcdGRyYWdnYWJsZS5jYW5jZWxIZWxwZXJSZW1vdmFsID0gdHJ1ZTtcblx0XHRcdFx0c29ydGFibGUuY2FuY2VsSGVscGVyUmVtb3ZhbCA9IGZhbHNlO1xuXG5cdFx0XHRcdC8vIFVzZSBfc3RvcmVkQ1NTIFRvIHJlc3RvcmUgcHJvcGVydGllcyBpbiB0aGUgc29ydGFibGUsXG5cdFx0XHRcdC8vIGFzIHRoaXMgYWxzbyBoYW5kbGVzIHJldmVydCAoIzk2NzUpIHNpbmNlIHRoZSBkcmFnZ2FibGVcblx0XHRcdFx0Ly8gbWF5IGhhdmUgbW9kaWZpZWQgdGhlbSBpbiB1bmV4cGVjdGVkIHdheXMgKCM4ODA5KVxuXHRcdFx0XHRzb3J0YWJsZS5fc3RvcmVkQ1NTID0ge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBzb3J0YWJsZS5wbGFjZWhvbGRlci5jc3MoIFwicG9zaXRpb25cIiApLFxuXHRcdFx0XHRcdHRvcDogc29ydGFibGUucGxhY2Vob2xkZXIuY3NzKCBcInRvcFwiICksXG5cdFx0XHRcdFx0bGVmdDogc29ydGFibGUucGxhY2Vob2xkZXIuY3NzKCBcImxlZnRcIiApXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0c29ydGFibGUuX21vdXNlU3RvcCggZXZlbnQgKTtcblxuXHRcdFx0XHQvLyBPbmNlIGRyYWcgaGFzIGVuZGVkLCB0aGUgc29ydGFibGUgc2hvdWxkIHJldHVybiB0byB1c2luZ1xuXHRcdFx0XHQvLyBpdHMgb3JpZ2luYWwgaGVscGVyLCBub3QgdGhlIHNoYXJlZCBoZWxwZXIgZnJvbSBkcmFnZ2FibGVcblx0XHRcdFx0c29ydGFibGUub3B0aW9ucy5oZWxwZXIgPSBzb3J0YWJsZS5vcHRpb25zLl9oZWxwZXI7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIFByZXZlbnQgdGhpcyBTb3J0YWJsZSBmcm9tIHJlbW92aW5nIHRoZSBoZWxwZXIuXG5cdFx0XHRcdC8vIEhvd2V2ZXIsIGRvbid0IHNldCB0aGUgZHJhZ2dhYmxlIHRvIHJlbW92ZSB0aGUgaGVscGVyXG5cdFx0XHRcdC8vIGVpdGhlciBhcyBhbm90aGVyIGNvbm5lY3RlZCBTb3J0YWJsZSBtYXkgeWV0IGhhbmRsZSB0aGUgcmVtb3ZhbC5cblx0XHRcdFx0c29ydGFibGUuY2FuY2VsSGVscGVyUmVtb3ZhbCA9IHRydWU7XG5cblx0XHRcdFx0c29ydGFibGUuX3RyaWdnZXIoIFwiZGVhY3RpdmF0ZVwiLCBldmVudCwgdWlTb3J0YWJsZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblx0ZHJhZzogZnVuY3Rpb24oIGV2ZW50LCB1aSwgZHJhZ2dhYmxlICkge1xuXHRcdCQuZWFjaCggZHJhZ2dhYmxlLnNvcnRhYmxlcywgZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW5uZXJtb3N0SW50ZXJzZWN0aW5nID0gZmFsc2UsXG5cdFx0XHRcdHNvcnRhYmxlID0gdGhpcztcblxuXHRcdFx0Ly8gQ29weSBvdmVyIHZhcmlhYmxlcyB0aGF0IHNvcnRhYmxlJ3MgX2ludGVyc2VjdHNXaXRoIHVzZXNcblx0XHRcdHNvcnRhYmxlLnBvc2l0aW9uQWJzID0gZHJhZ2dhYmxlLnBvc2l0aW9uQWJzO1xuXHRcdFx0c29ydGFibGUuaGVscGVyUHJvcG9ydGlvbnMgPSBkcmFnZ2FibGUuaGVscGVyUHJvcG9ydGlvbnM7XG5cdFx0XHRzb3J0YWJsZS5vZmZzZXQuY2xpY2sgPSBkcmFnZ2FibGUub2Zmc2V0LmNsaWNrO1xuXG5cdFx0XHRpZiAoIHNvcnRhYmxlLl9pbnRlcnNlY3RzV2l0aCggc29ydGFibGUuY29udGFpbmVyQ2FjaGUgKSApIHtcblx0XHRcdFx0aW5uZXJtb3N0SW50ZXJzZWN0aW5nID0gdHJ1ZTtcblxuXHRcdFx0XHQkLmVhY2goIGRyYWdnYWJsZS5zb3J0YWJsZXMsIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0Ly8gQ29weSBvdmVyIHZhcmlhYmxlcyB0aGF0IHNvcnRhYmxlJ3MgX2ludGVyc2VjdHNXaXRoIHVzZXNcblx0XHRcdFx0XHR0aGlzLnBvc2l0aW9uQWJzID0gZHJhZ2dhYmxlLnBvc2l0aW9uQWJzO1xuXHRcdFx0XHRcdHRoaXMuaGVscGVyUHJvcG9ydGlvbnMgPSBkcmFnZ2FibGUuaGVscGVyUHJvcG9ydGlvbnM7XG5cdFx0XHRcdFx0dGhpcy5vZmZzZXQuY2xpY2sgPSBkcmFnZ2FibGUub2Zmc2V0LmNsaWNrO1xuXG5cdFx0XHRcdFx0aWYgKCB0aGlzICE9PSBzb3J0YWJsZSAmJlxuXHRcdFx0XHRcdFx0XHR0aGlzLl9pbnRlcnNlY3RzV2l0aCggdGhpcy5jb250YWluZXJDYWNoZSApICYmXG5cdFx0XHRcdFx0XHRcdCQuY29udGFpbnMoIHNvcnRhYmxlLmVsZW1lbnRbIDAgXSwgdGhpcy5lbGVtZW50WyAwIF0gKSApIHtcblx0XHRcdFx0XHRcdGlubmVybW9zdEludGVyc2VjdGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBpbm5lcm1vc3RJbnRlcnNlY3Rpbmc7XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBpbm5lcm1vc3RJbnRlcnNlY3RpbmcgKSB7XG5cblx0XHRcdFx0Ly8gSWYgaXQgaW50ZXJzZWN0cywgd2UgdXNlIGEgbGl0dGxlIGlzT3ZlciB2YXJpYWJsZSBhbmQgc2V0IGl0IG9uY2UsXG5cdFx0XHRcdC8vIHNvIHRoYXQgdGhlIG1vdmUtaW4gc3R1ZmYgZ2V0cyBmaXJlZCBvbmx5IG9uY2UuXG5cdFx0XHRcdGlmICggIXNvcnRhYmxlLmlzT3ZlciApIHtcblx0XHRcdFx0XHRzb3J0YWJsZS5pc092ZXIgPSAxO1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgZHJhZ2dhYmxlJ3MgcGFyZW50IGluIGNhc2Ugd2UgbmVlZCB0byByZWFwcGVuZCB0byBpdCBsYXRlci5cblx0XHRcdFx0XHRkcmFnZ2FibGUuX3BhcmVudCA9IHVpLmhlbHBlci5wYXJlbnQoKTtcblxuXHRcdFx0XHRcdHNvcnRhYmxlLmN1cnJlbnRJdGVtID0gdWkuaGVscGVyXG5cdFx0XHRcdFx0XHQuYXBwZW5kVG8oIHNvcnRhYmxlLmVsZW1lbnQgKVxuXHRcdFx0XHRcdFx0LmRhdGEoIFwidWktc29ydGFibGUtaXRlbVwiLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBoZWxwZXIgb3B0aW9uIHRvIGxhdGVyIHJlc3RvcmUgaXRcblx0XHRcdFx0XHRzb3J0YWJsZS5vcHRpb25zLl9oZWxwZXIgPSBzb3J0YWJsZS5vcHRpb25zLmhlbHBlcjtcblxuXHRcdFx0XHRcdHNvcnRhYmxlLm9wdGlvbnMuaGVscGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdWkuaGVscGVyWyAwIF07XG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdC8vIEZpcmUgdGhlIHN0YXJ0IGV2ZW50cyBvZiB0aGUgc29ydGFibGUgd2l0aCBvdXIgcGFzc2VkIGJyb3dzZXIgZXZlbnQsXG5cdFx0XHRcdFx0Ly8gYW5kIG91ciBvd24gaGVscGVyIChzbyBpdCBkb2Vzbid0IGNyZWF0ZSBhIG5ldyBvbmUpXG5cdFx0XHRcdFx0ZXZlbnQudGFyZ2V0ID0gc29ydGFibGUuY3VycmVudEl0ZW1bIDAgXTtcblx0XHRcdFx0XHRzb3J0YWJsZS5fbW91c2VDYXB0dXJlKCBldmVudCwgdHJ1ZSApO1xuXHRcdFx0XHRcdHNvcnRhYmxlLl9tb3VzZVN0YXJ0KCBldmVudCwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0XHRcdFx0Ly8gQmVjYXVzZSB0aGUgYnJvd3NlciBldmVudCBpcyB3YXkgb2ZmIHRoZSBuZXcgYXBwZW5kZWQgcG9ydGxldCxcblx0XHRcdFx0XHQvLyBtb2RpZnkgbmVjZXNzYXJ5IHZhcmlhYmxlcyB0byByZWZsZWN0IHRoZSBjaGFuZ2VzXG5cdFx0XHRcdFx0c29ydGFibGUub2Zmc2V0LmNsaWNrLnRvcCA9IGRyYWdnYWJsZS5vZmZzZXQuY2xpY2sudG9wO1xuXHRcdFx0XHRcdHNvcnRhYmxlLm9mZnNldC5jbGljay5sZWZ0ID0gZHJhZ2dhYmxlLm9mZnNldC5jbGljay5sZWZ0O1xuXHRcdFx0XHRcdHNvcnRhYmxlLm9mZnNldC5wYXJlbnQubGVmdCAtPSBkcmFnZ2FibGUub2Zmc2V0LnBhcmVudC5sZWZ0IC1cblx0XHRcdFx0XHRcdHNvcnRhYmxlLm9mZnNldC5wYXJlbnQubGVmdDtcblx0XHRcdFx0XHRzb3J0YWJsZS5vZmZzZXQucGFyZW50LnRvcCAtPSBkcmFnZ2FibGUub2Zmc2V0LnBhcmVudC50b3AgLVxuXHRcdFx0XHRcdFx0c29ydGFibGUub2Zmc2V0LnBhcmVudC50b3A7XG5cblx0XHRcdFx0XHRkcmFnZ2FibGUuX3RyaWdnZXIoIFwidG9Tb3J0YWJsZVwiLCBldmVudCApO1xuXG5cdFx0XHRcdFx0Ly8gSW5mb3JtIGRyYWdnYWJsZSB0aGF0IHRoZSBoZWxwZXIgaXMgaW4gYSB2YWxpZCBkcm9wIHpvbmUsXG5cdFx0XHRcdFx0Ly8gdXNlZCBzb2xlbHkgaW4gdGhlIHJldmVydCBvcHRpb24gdG8gaGFuZGxlIFwidmFsaWQvaW52YWxpZFwiLlxuXHRcdFx0XHRcdGRyYWdnYWJsZS5kcm9wcGVkID0gc29ydGFibGUuZWxlbWVudDtcblxuXHRcdFx0XHRcdC8vIE5lZWQgdG8gcmVmcmVzaFBvc2l0aW9ucyBvZiBhbGwgc29ydGFibGVzIGluIHRoZSBjYXNlIHRoYXRcblx0XHRcdFx0XHQvLyBhZGRpbmcgdG8gb25lIHNvcnRhYmxlIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBvdGhlciBzb3J0YWJsZXMgKCM5Njc1KVxuXHRcdFx0XHRcdCQuZWFjaCggZHJhZ2dhYmxlLnNvcnRhYmxlcywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKTtcblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0XHQvLyBIYWNrIHNvIHJlY2VpdmUvdXBkYXRlIGNhbGxiYWNrcyB3b3JrIChtb3N0bHkpXG5cdFx0XHRcdFx0ZHJhZ2dhYmxlLmN1cnJlbnRJdGVtID0gZHJhZ2dhYmxlLmVsZW1lbnQ7XG5cdFx0XHRcdFx0c29ydGFibGUuZnJvbU91dHNpZGUgPSBkcmFnZ2FibGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHNvcnRhYmxlLmN1cnJlbnRJdGVtICkge1xuXHRcdFx0XHRcdHNvcnRhYmxlLl9tb3VzZURyYWcoIGV2ZW50ICk7XG5cblx0XHRcdFx0XHQvLyBDb3B5IHRoZSBzb3J0YWJsZSdzIHBvc2l0aW9uIGJlY2F1c2UgdGhlIGRyYWdnYWJsZSdzIGNhbiBwb3RlbnRpYWxseSByZWZsZWN0XG5cdFx0XHRcdFx0Ly8gYSByZWxhdGl2ZSBwb3NpdGlvbiwgd2hpbGUgc29ydGFibGUgaXMgYWx3YXlzIGFic29sdXRlLCB3aGljaCB0aGUgZHJhZ2dlZFxuXHRcdFx0XHRcdC8vIGVsZW1lbnQgaGFzIG5vdyBiZWNvbWUuICgjODgwOSlcblx0XHRcdFx0XHR1aS5wb3NpdGlvbiA9IHNvcnRhYmxlLnBvc2l0aW9uO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIElmIGl0IGRvZXNuJ3QgaW50ZXJzZWN0IHdpdGggdGhlIHNvcnRhYmxlLCBhbmQgaXQgaW50ZXJzZWN0ZWQgYmVmb3JlLFxuXHRcdFx0XHQvLyB3ZSBmYWtlIHRoZSBkcmFnIHN0b3Agb2YgdGhlIHNvcnRhYmxlLCBidXQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgcmVtb3ZlXG5cdFx0XHRcdC8vIHRoZSBoZWxwZXIgYnkgdXNpbmcgY2FuY2VsSGVscGVyUmVtb3ZhbC5cblx0XHRcdFx0aWYgKCBzb3J0YWJsZS5pc092ZXIgKSB7XG5cblx0XHRcdFx0XHRzb3J0YWJsZS5pc092ZXIgPSAwO1xuXHRcdFx0XHRcdHNvcnRhYmxlLmNhbmNlbEhlbHBlclJlbW92YWwgPSB0cnVlO1xuXG5cdFx0XHRcdFx0Ly8gQ2FsbGluZyBzb3J0YWJsZSdzIG1vdXNlU3RvcCB3b3VsZCB0cmlnZ2VyIGEgcmV2ZXJ0LFxuXHRcdFx0XHRcdC8vIHNvIHJldmVydCBtdXN0IGJlIHRlbXBvcmFyaWx5IGZhbHNlIHVudGlsIGFmdGVyIG1vdXNlU3RvcCBpcyBjYWxsZWQuXG5cdFx0XHRcdFx0c29ydGFibGUub3B0aW9ucy5fcmV2ZXJ0ID0gc29ydGFibGUub3B0aW9ucy5yZXZlcnQ7XG5cdFx0XHRcdFx0c29ydGFibGUub3B0aW9ucy5yZXZlcnQgPSBmYWxzZTtcblxuXHRcdFx0XHRcdHNvcnRhYmxlLl90cmlnZ2VyKCBcIm91dFwiLCBldmVudCwgc29ydGFibGUuX3VpSGFzaCggc29ydGFibGUgKSApO1xuXHRcdFx0XHRcdHNvcnRhYmxlLl9tb3VzZVN0b3AoIGV2ZW50LCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBSZXN0b3JlIHNvcnRhYmxlIGJlaGF2aW9ycyB0aGF0IHdlcmUgbW9kZmllZFxuXHRcdFx0XHRcdC8vIHdoZW4gdGhlIGRyYWdnYWJsZSBlbnRlcmVkIHRoZSBzb3J0YWJsZSBhcmVhICgjOTQ4MSlcblx0XHRcdFx0XHRzb3J0YWJsZS5vcHRpb25zLnJldmVydCA9IHNvcnRhYmxlLm9wdGlvbnMuX3JldmVydDtcblx0XHRcdFx0XHRzb3J0YWJsZS5vcHRpb25zLmhlbHBlciA9IHNvcnRhYmxlLm9wdGlvbnMuX2hlbHBlcjtcblxuXHRcdFx0XHRcdGlmICggc29ydGFibGUucGxhY2Vob2xkZXIgKSB7XG5cdFx0XHRcdFx0XHRzb3J0YWJsZS5wbGFjZWhvbGRlci5yZW1vdmUoKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBSZXN0b3JlIGFuZCByZWNhbGN1bGF0ZSB0aGUgZHJhZ2dhYmxlJ3Mgb2Zmc2V0IGNvbnNpZGVyaW5nIHRoZSBzb3J0YWJsZVxuXHRcdFx0XHRcdC8vIG1heSBoYXZlIG1vZGlmaWVkIHRoZW0gaW4gdW5leHBlY3RlZCB3YXlzLiAoIzg4MDksICMxMDY2OSlcblx0XHRcdFx0XHR1aS5oZWxwZXIuYXBwZW5kVG8oIGRyYWdnYWJsZS5fcGFyZW50ICk7XG5cdFx0XHRcdFx0ZHJhZ2dhYmxlLl9yZWZyZXNoT2Zmc2V0cyggZXZlbnQgKTtcblx0XHRcdFx0XHR1aS5wb3NpdGlvbiA9IGRyYWdnYWJsZS5fZ2VuZXJhdGVQb3NpdGlvbiggZXZlbnQsIHRydWUgKTtcblxuXHRcdFx0XHRcdGRyYWdnYWJsZS5fdHJpZ2dlciggXCJmcm9tU29ydGFibGVcIiwgZXZlbnQgKTtcblxuXHRcdFx0XHRcdC8vIEluZm9ybSBkcmFnZ2FibGUgdGhhdCB0aGUgaGVscGVyIGlzIG5vIGxvbmdlciBpbiBhIHZhbGlkIGRyb3Agem9uZVxuXHRcdFx0XHRcdGRyYWdnYWJsZS5kcm9wcGVkID0gZmFsc2U7XG5cblx0XHRcdFx0XHQvLyBOZWVkIHRvIHJlZnJlc2hQb3NpdGlvbnMgb2YgYWxsIHNvcnRhYmxlcyBqdXN0IGluIGNhc2UgcmVtb3Zpbmdcblx0XHRcdFx0XHQvLyBmcm9tIG9uZSBzb3J0YWJsZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBvdGhlciBzb3J0YWJsZXMgKCM5Njc1KVxuXHRcdFx0XHRcdCQuZWFjaCggZHJhZ2dhYmxlLnNvcnRhYmxlcywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuJC51aS5wbHVnaW4uYWRkKCBcImRyYWdnYWJsZVwiLCBcImN1cnNvclwiLCB7XG5cdHN0YXJ0OiBmdW5jdGlvbiggZXZlbnQsIHVpLCBpbnN0YW5jZSApIHtcblx0XHR2YXIgdCA9ICQoIFwiYm9keVwiICksXG5cdFx0XHRvID0gaW5zdGFuY2Uub3B0aW9ucztcblxuXHRcdGlmICggdC5jc3MoIFwiY3Vyc29yXCIgKSApIHtcblx0XHRcdG8uX2N1cnNvciA9IHQuY3NzKCBcImN1cnNvclwiICk7XG5cdFx0fVxuXHRcdHQuY3NzKCBcImN1cnNvclwiLCBvLmN1cnNvciApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggZXZlbnQsIHVpLCBpbnN0YW5jZSApIHtcblx0XHR2YXIgbyA9IGluc3RhbmNlLm9wdGlvbnM7XG5cdFx0aWYgKCBvLl9jdXJzb3IgKSB7XG5cdFx0XHQkKCBcImJvZHlcIiApLmNzcyggXCJjdXJzb3JcIiwgby5fY3Vyc29yICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbiQudWkucGx1Z2luLmFkZCggXCJkcmFnZ2FibGVcIiwgXCJvcGFjaXR5XCIsIHtcblx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgdWksIGluc3RhbmNlICkge1xuXHRcdHZhciB0ID0gJCggdWkuaGVscGVyICksXG5cdFx0XHRvID0gaW5zdGFuY2Uub3B0aW9ucztcblx0XHRpZiAoIHQuY3NzKCBcIm9wYWNpdHlcIiApICkge1xuXHRcdFx0by5fb3BhY2l0eSA9IHQuY3NzKCBcIm9wYWNpdHlcIiApO1xuXHRcdH1cblx0XHR0LmNzcyggXCJvcGFjaXR5XCIsIG8ub3BhY2l0eSApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggZXZlbnQsIHVpLCBpbnN0YW5jZSApIHtcblx0XHR2YXIgbyA9IGluc3RhbmNlLm9wdGlvbnM7XG5cdFx0aWYgKCBvLl9vcGFjaXR5ICkge1xuXHRcdFx0JCggdWkuaGVscGVyICkuY3NzKCBcIm9wYWNpdHlcIiwgby5fb3BhY2l0eSApO1xuXHRcdH1cblx0fVxufSApO1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwiZHJhZ2dhYmxlXCIsIFwic2Nyb2xsXCIsIHtcblx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgdWksIGkgKSB7XG5cdFx0aWYgKCAhaS5zY3JvbGxQYXJlbnROb3RIaWRkZW4gKSB7XG5cdFx0XHRpLnNjcm9sbFBhcmVudE5vdEhpZGRlbiA9IGkuaGVscGVyLnNjcm9sbFBhcmVudCggZmFsc2UgKTtcblx0XHR9XG5cblx0XHRpZiAoIGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWyAwIF0gIT09IGkuZG9jdW1lbnRbIDAgXSAmJlxuXHRcdFx0XHRpLnNjcm9sbFBhcmVudE5vdEhpZGRlblsgMCBdLnRhZ05hbWUgIT09IFwiSFRNTFwiICkge1xuXHRcdFx0aS5vdmVyZmxvd09mZnNldCA9IGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuLm9mZnNldCgpO1xuXHRcdH1cblx0fSxcblx0ZHJhZzogZnVuY3Rpb24oIGV2ZW50LCB1aSwgaSAgKSB7XG5cblx0XHR2YXIgbyA9IGkub3B0aW9ucyxcblx0XHRcdHNjcm9sbGVkID0gZmFsc2UsXG5cdFx0XHRzY3JvbGxQYXJlbnQgPSBpLnNjcm9sbFBhcmVudE5vdEhpZGRlblsgMCBdLFxuXHRcdFx0ZG9jdW1lbnQgPSBpLmRvY3VtZW50WyAwIF07XG5cblx0XHRpZiAoIHNjcm9sbFBhcmVudCAhPT0gZG9jdW1lbnQgJiYgc2Nyb2xsUGFyZW50LnRhZ05hbWUgIT09IFwiSFRNTFwiICkge1xuXHRcdFx0aWYgKCAhby5heGlzIHx8IG8uYXhpcyAhPT0gXCJ4XCIgKSB7XG5cdFx0XHRcdGlmICggKCBpLm92ZXJmbG93T2Zmc2V0LnRvcCArIHNjcm9sbFBhcmVudC5vZmZzZXRIZWlnaHQgKSAtIGV2ZW50LnBhZ2VZIDxcblx0XHRcdFx0XHRcdG8uc2Nyb2xsU2Vuc2l0aXZpdHkgKSB7XG5cdFx0XHRcdFx0c2Nyb2xsUGFyZW50LnNjcm9sbFRvcCA9IHNjcm9sbGVkID0gc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCArIG8uc2Nyb2xsU3BlZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIGV2ZW50LnBhZ2VZIC0gaS5vdmVyZmxvd09mZnNldC50b3AgPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbFBhcmVudC5zY3JvbGxUb3AgPSBzY3JvbGxlZCA9IHNjcm9sbFBhcmVudC5zY3JvbGxUb3AgLSBvLnNjcm9sbFNwZWVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggIW8uYXhpcyB8fCBvLmF4aXMgIT09IFwieVwiICkge1xuXHRcdFx0XHRpZiAoICggaS5vdmVyZmxvd09mZnNldC5sZWZ0ICsgc2Nyb2xsUGFyZW50Lm9mZnNldFdpZHRoICkgLSBldmVudC5wYWdlWCA8XG5cdFx0XHRcdFx0XHRvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsZWQgPSBzY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCArIG8uc2Nyb2xsU3BlZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIGV2ZW50LnBhZ2VYIC0gaS5vdmVyZmxvd09mZnNldC5sZWZ0IDwgby5zY3JvbGxTZW5zaXRpdml0eSApIHtcblx0XHRcdFx0XHRzY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbGVkID0gc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQgLSBvLnNjcm9sbFNwZWVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRpZiAoICFvLmF4aXMgfHwgby5heGlzICE9PSBcInhcIiApIHtcblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWSAtICQoIGRvY3VtZW50ICkuc2Nyb2xsVG9wKCkgPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbGVkID0gJCggZG9jdW1lbnQgKS5zY3JvbGxUb3AoICQoIGRvY3VtZW50ICkuc2Nyb2xsVG9wKCkgLSBvLnNjcm9sbFNwZWVkICk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoICQoIHdpbmRvdyApLmhlaWdodCgpIC0gKCBldmVudC5wYWdlWSAtICQoIGRvY3VtZW50ICkuc2Nyb2xsVG9wKCkgKSA8XG5cdFx0XHRcdFx0XHRvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbGVkID0gJCggZG9jdW1lbnQgKS5zY3JvbGxUb3AoICQoIGRvY3VtZW50ICkuc2Nyb2xsVG9wKCkgKyBvLnNjcm9sbFNwZWVkICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCAhby5heGlzIHx8IG8uYXhpcyAhPT0gXCJ5XCIgKSB7XG5cdFx0XHRcdGlmICggZXZlbnQucGFnZVggLSAkKCBkb2N1bWVudCApLnNjcm9sbExlZnQoKSA8IG8uc2Nyb2xsU2Vuc2l0aXZpdHkgKSB7XG5cdFx0XHRcdFx0c2Nyb2xsZWQgPSAkKCBkb2N1bWVudCApLnNjcm9sbExlZnQoXG5cdFx0XHRcdFx0XHQkKCBkb2N1bWVudCApLnNjcm9sbExlZnQoKSAtIG8uc2Nyb2xsU3BlZWRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCAkKCB3aW5kb3cgKS53aWR0aCgpIC0gKCBldmVudC5wYWdlWCAtICQoIGRvY3VtZW50ICkuc2Nyb2xsTGVmdCgpICkgPFxuXHRcdFx0XHRcdFx0by5zY3JvbGxTZW5zaXRpdml0eSApIHtcblx0XHRcdFx0XHRzY3JvbGxlZCA9ICQoIGRvY3VtZW50ICkuc2Nyb2xsTGVmdChcblx0XHRcdFx0XHRcdCQoIGRvY3VtZW50ICkuc2Nyb2xsTGVmdCgpICsgby5zY3JvbGxTcGVlZFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdGlmICggc2Nyb2xsZWQgIT09IGZhbHNlICYmICQudWkuZGRtYW5hZ2VyICYmICFvLmRyb3BCZWhhdmlvdXIgKSB7XG5cdFx0XHQkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyggaSwgZXZlbnQgKTtcblx0XHR9XG5cblx0fVxufSApO1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwiZHJhZ2dhYmxlXCIsIFwic25hcFwiLCB7XG5cdHN0YXJ0OiBmdW5jdGlvbiggZXZlbnQsIHVpLCBpICkge1xuXG5cdFx0dmFyIG8gPSBpLm9wdGlvbnM7XG5cblx0XHRpLnNuYXBFbGVtZW50cyA9IFtdO1xuXG5cdFx0JCggby5zbmFwLmNvbnN0cnVjdG9yICE9PSBTdHJpbmcgPyAoIG8uc25hcC5pdGVtcyB8fCBcIjpkYXRhKHVpLWRyYWdnYWJsZSlcIiApIDogby5zbmFwIClcblx0XHRcdC5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyICR0ID0gJCggdGhpcyApLFxuXHRcdFx0XHRcdCRvID0gJHQub2Zmc2V0KCk7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gaS5lbGVtZW50WyAwIF0gKSB7XG5cdFx0XHRcdFx0aS5zbmFwRWxlbWVudHMucHVzaCgge1xuXHRcdFx0XHRcdFx0aXRlbTogdGhpcyxcblx0XHRcdFx0XHRcdHdpZHRoOiAkdC5vdXRlcldpZHRoKCksIGhlaWdodDogJHQub3V0ZXJIZWlnaHQoKSxcblx0XHRcdFx0XHRcdHRvcDogJG8udG9wLCBsZWZ0OiAkby5sZWZ0XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cblx0fSxcblx0ZHJhZzogZnVuY3Rpb24oIGV2ZW50LCB1aSwgaW5zdCApIHtcblxuXHRcdHZhciB0cywgYnMsIGxzLCBycywgbCwgciwgdCwgYiwgaSwgZmlyc3QsXG5cdFx0XHRvID0gaW5zdC5vcHRpb25zLFxuXHRcdFx0ZCA9IG8uc25hcFRvbGVyYW5jZSxcblx0XHRcdHgxID0gdWkub2Zmc2V0LmxlZnQsIHgyID0geDEgKyBpbnN0LmhlbHBlclByb3BvcnRpb25zLndpZHRoLFxuXHRcdFx0eTEgPSB1aS5vZmZzZXQudG9wLCB5MiA9IHkxICsgaW5zdC5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQ7XG5cblx0XHRmb3IgKCBpID0gaW5zdC5zbmFwRWxlbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cblx0XHRcdGwgPSBpbnN0LnNuYXBFbGVtZW50c1sgaSBdLmxlZnQgLSBpbnN0Lm1hcmdpbnMubGVmdDtcblx0XHRcdHIgPSBsICsgaW5zdC5zbmFwRWxlbWVudHNbIGkgXS53aWR0aDtcblx0XHRcdHQgPSBpbnN0LnNuYXBFbGVtZW50c1sgaSBdLnRvcCAtIGluc3QubWFyZ2lucy50b3A7XG5cdFx0XHRiID0gdCArIGluc3Quc25hcEVsZW1lbnRzWyBpIF0uaGVpZ2h0O1xuXG5cdFx0XHRpZiAoIHgyIDwgbCAtIGQgfHwgeDEgPiByICsgZCB8fCB5MiA8IHQgLSBkIHx8IHkxID4gYiArIGQgfHxcblx0XHRcdFx0XHQhJC5jb250YWlucyggaW5zdC5zbmFwRWxlbWVudHNbIGkgXS5pdGVtLm93bmVyRG9jdW1lbnQsXG5cdFx0XHRcdFx0aW5zdC5zbmFwRWxlbWVudHNbIGkgXS5pdGVtICkgKSB7XG5cdFx0XHRcdGlmICggaW5zdC5zbmFwRWxlbWVudHNbIGkgXS5zbmFwcGluZyApIHtcblx0XHRcdFx0XHQoIGluc3Qub3B0aW9ucy5zbmFwLnJlbGVhc2UgJiZcblx0XHRcdFx0XHRcdGluc3Qub3B0aW9ucy5zbmFwLnJlbGVhc2UuY2FsbChcblx0XHRcdFx0XHRcdFx0aW5zdC5lbGVtZW50LFxuXHRcdFx0XHRcdFx0XHRldmVudCxcblx0XHRcdFx0XHRcdFx0JC5leHRlbmQoIGluc3QuX3VpSGFzaCgpLCB7IHNuYXBJdGVtOiBpbnN0LnNuYXBFbGVtZW50c1sgaSBdLml0ZW0gfSApXG5cdFx0XHRcdFx0XHQpICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5zdC5zbmFwRWxlbWVudHNbIGkgXS5zbmFwcGluZyA9IGZhbHNlO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLnNuYXBNb2RlICE9PSBcImlubmVyXCIgKSB7XG5cdFx0XHRcdHRzID0gTWF0aC5hYnMoIHQgLSB5MiApIDw9IGQ7XG5cdFx0XHRcdGJzID0gTWF0aC5hYnMoIGIgLSB5MSApIDw9IGQ7XG5cdFx0XHRcdGxzID0gTWF0aC5hYnMoIGwgLSB4MiApIDw9IGQ7XG5cdFx0XHRcdHJzID0gTWF0aC5hYnMoIHIgLSB4MSApIDw9IGQ7XG5cdFx0XHRcdGlmICggdHMgKSB7XG5cdFx0XHRcdFx0dWkucG9zaXRpb24udG9wID0gaW5zdC5fY29udmVydFBvc2l0aW9uVG8oIFwicmVsYXRpdmVcIiwge1xuXHRcdFx0XHRcdFx0dG9wOiB0IC0gaW5zdC5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsXG5cdFx0XHRcdFx0XHRsZWZ0OiAwXG5cdFx0XHRcdFx0fSApLnRvcDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGJzICkge1xuXHRcdFx0XHRcdHVpLnBvc2l0aW9uLnRvcCA9IGluc3QuX2NvbnZlcnRQb3NpdGlvblRvKCBcInJlbGF0aXZlXCIsIHtcblx0XHRcdFx0XHRcdHRvcDogYixcblx0XHRcdFx0XHRcdGxlZnQ6IDBcblx0XHRcdFx0XHR9ICkudG9wO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggbHMgKSB7XG5cdFx0XHRcdFx0dWkucG9zaXRpb24ubGVmdCA9IGluc3QuX2NvbnZlcnRQb3NpdGlvblRvKCBcInJlbGF0aXZlXCIsIHtcblx0XHRcdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0XHRcdGxlZnQ6IGwgLSBpbnN0LmhlbHBlclByb3BvcnRpb25zLndpZHRoXG5cdFx0XHRcdFx0fSApLmxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBycyApIHtcblx0XHRcdFx0XHR1aS5wb3NpdGlvbi5sZWZ0ID0gaW5zdC5fY29udmVydFBvc2l0aW9uVG8oIFwicmVsYXRpdmVcIiwge1xuXHRcdFx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHRcdFx0bGVmdDogclxuXHRcdFx0XHRcdH0gKS5sZWZ0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZpcnN0ID0gKCB0cyB8fCBicyB8fCBscyB8fCBycyApO1xuXG5cdFx0XHRpZiAoIG8uc25hcE1vZGUgIT09IFwib3V0ZXJcIiApIHtcblx0XHRcdFx0dHMgPSBNYXRoLmFicyggdCAtIHkxICkgPD0gZDtcblx0XHRcdFx0YnMgPSBNYXRoLmFicyggYiAtIHkyICkgPD0gZDtcblx0XHRcdFx0bHMgPSBNYXRoLmFicyggbCAtIHgxICkgPD0gZDtcblx0XHRcdFx0cnMgPSBNYXRoLmFicyggciAtIHgyICkgPD0gZDtcblx0XHRcdFx0aWYgKCB0cyApIHtcblx0XHRcdFx0XHR1aS5wb3NpdGlvbi50b3AgPSBpbnN0Ll9jb252ZXJ0UG9zaXRpb25UbyggXCJyZWxhdGl2ZVwiLCB7XG5cdFx0XHRcdFx0XHR0b3A6IHQsXG5cdFx0XHRcdFx0XHRsZWZ0OiAwXG5cdFx0XHRcdFx0fSApLnRvcDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGJzICkge1xuXHRcdFx0XHRcdHVpLnBvc2l0aW9uLnRvcCA9IGluc3QuX2NvbnZlcnRQb3NpdGlvblRvKCBcInJlbGF0aXZlXCIsIHtcblx0XHRcdFx0XHRcdHRvcDogYiAtIGluc3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0bGVmdDogMFxuXHRcdFx0XHRcdH0gKS50b3A7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBscyApIHtcblx0XHRcdFx0XHR1aS5wb3NpdGlvbi5sZWZ0ID0gaW5zdC5fY29udmVydFBvc2l0aW9uVG8oIFwicmVsYXRpdmVcIiwge1xuXHRcdFx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHRcdFx0bGVmdDogbFxuXHRcdFx0XHRcdH0gKS5sZWZ0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggcnMgKSB7XG5cdFx0XHRcdFx0dWkucG9zaXRpb24ubGVmdCA9IGluc3QuX2NvbnZlcnRQb3NpdGlvblRvKCBcInJlbGF0aXZlXCIsIHtcblx0XHRcdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0XHRcdGxlZnQ6IHIgLSBpbnN0LmhlbHBlclByb3BvcnRpb25zLndpZHRoXG5cdFx0XHRcdFx0fSApLmxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCAhaW5zdC5zbmFwRWxlbWVudHNbIGkgXS5zbmFwcGluZyAmJiAoIHRzIHx8IGJzIHx8IGxzIHx8IHJzIHx8IGZpcnN0ICkgKSB7XG5cdFx0XHRcdCggaW5zdC5vcHRpb25zLnNuYXAuc25hcCAmJlxuXHRcdFx0XHRcdGluc3Qub3B0aW9ucy5zbmFwLnNuYXAuY2FsbChcblx0XHRcdFx0XHRcdGluc3QuZWxlbWVudCxcblx0XHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdFx0JC5leHRlbmQoIGluc3QuX3VpSGFzaCgpLCB7XG5cdFx0XHRcdFx0XHRcdHNuYXBJdGVtOiBpbnN0LnNuYXBFbGVtZW50c1sgaSBdLml0ZW1cblx0XHRcdFx0XHRcdH0gKSApICk7XG5cdFx0XHR9XG5cdFx0XHRpbnN0LnNuYXBFbGVtZW50c1sgaSBdLnNuYXBwaW5nID0gKCB0cyB8fCBicyB8fCBscyB8fCBycyB8fCBmaXJzdCApO1xuXG5cdFx0fVxuXG5cdH1cbn0gKTtcblxuJC51aS5wbHVnaW4uYWRkKCBcImRyYWdnYWJsZVwiLCBcInN0YWNrXCIsIHtcblx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgdWksIGluc3RhbmNlICkge1xuXHRcdHZhciBtaW4sXG5cdFx0XHRvID0gaW5zdGFuY2Uub3B0aW9ucyxcblx0XHRcdGdyb3VwID0gJC5tYWtlQXJyYXkoICQoIG8uc3RhY2sgKSApLnNvcnQoIGZ1bmN0aW9uKCBhLCBiICkge1xuXHRcdFx0XHRyZXR1cm4gKCBwYXJzZUludCggJCggYSApLmNzcyggXCJ6SW5kZXhcIiApLCAxMCApIHx8IDAgKSAtXG5cdFx0XHRcdFx0KCBwYXJzZUludCggJCggYiApLmNzcyggXCJ6SW5kZXhcIiApLCAxMCApIHx8IDAgKTtcblx0XHRcdH0gKTtcblxuXHRcdGlmICggIWdyb3VwLmxlbmd0aCApIHsgcmV0dXJuOyB9XG5cblx0XHRtaW4gPSBwYXJzZUludCggJCggZ3JvdXBbIDAgXSApLmNzcyggXCJ6SW5kZXhcIiApLCAxMCApIHx8IDA7XG5cdFx0JCggZ3JvdXAgKS5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdCQoIHRoaXMgKS5jc3MoIFwiekluZGV4XCIsIG1pbiArIGkgKTtcblx0XHR9ICk7XG5cdFx0dGhpcy5jc3MoIFwiekluZGV4XCIsICggbWluICsgZ3JvdXAubGVuZ3RoICkgKTtcblx0fVxufSApO1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwiZHJhZ2dhYmxlXCIsIFwiekluZGV4XCIsIHtcblx0c3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgdWksIGluc3RhbmNlICkge1xuXHRcdHZhciB0ID0gJCggdWkuaGVscGVyICksXG5cdFx0XHRvID0gaW5zdGFuY2Uub3B0aW9ucztcblxuXHRcdGlmICggdC5jc3MoIFwiekluZGV4XCIgKSApIHtcblx0XHRcdG8uX3pJbmRleCA9IHQuY3NzKCBcInpJbmRleFwiICk7XG5cdFx0fVxuXHRcdHQuY3NzKCBcInpJbmRleFwiLCBvLnpJbmRleCApO1xuXHR9LFxuXHRzdG9wOiBmdW5jdGlvbiggZXZlbnQsIHVpLCBpbnN0YW5jZSApIHtcblx0XHR2YXIgbyA9IGluc3RhbmNlLm9wdGlvbnM7XG5cblx0XHRpZiAoIG8uX3pJbmRleCApIHtcblx0XHRcdCQoIHVpLmhlbHBlciApLmNzcyggXCJ6SW5kZXhcIiwgby5fekluZGV4ICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbnZhciB3aWRnZXRzRHJhZ2dhYmxlID0gJC51aS5kcmFnZ2FibGU7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgUmVzaXphYmxlIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBSZXNpemFibGVcbi8vPj5ncm91cDogSW50ZXJhY3Rpb25zXG4vLz4+ZGVzY3JpcHRpb246IEVuYWJsZXMgcmVzaXplIGZ1bmN0aW9uYWxpdHkgZm9yIGFueSBlbGVtZW50LlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3Jlc2l6YWJsZS9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9yZXNpemFibGUvXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9yZXNpemFibGUuY3NzXG4vLz4+Y3NzLnRoZW1lOiAuLi8uLi90aGVtZXMvYmFzZS90aGVtZS5jc3NcblxuXG5cbiQud2lkZ2V0KCBcInVpLnJlc2l6YWJsZVwiLCAkLnVpLm1vdXNlLCB7XG5cdHZlcnNpb246IFwiMS4xMi4xXCIsXG5cdHdpZGdldEV2ZW50UHJlZml4OiBcInJlc2l6ZVwiLFxuXHRvcHRpb25zOiB7XG5cdFx0YWxzb1Jlc2l6ZTogZmFsc2UsXG5cdFx0YW5pbWF0ZTogZmFsc2UsXG5cdFx0YW5pbWF0ZUR1cmF0aW9uOiBcInNsb3dcIixcblx0XHRhbmltYXRlRWFzaW5nOiBcInN3aW5nXCIsXG5cdFx0YXNwZWN0UmF0aW86IGZhbHNlLFxuXHRcdGF1dG9IaWRlOiBmYWxzZSxcblx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcInVpLXJlc2l6YWJsZS1zZVwiOiBcInVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2VcIlxuXHRcdH0sXG5cdFx0Y29udGFpbm1lbnQ6IGZhbHNlLFxuXHRcdGdob3N0OiBmYWxzZSxcblx0XHRncmlkOiBmYWxzZSxcblx0XHRoYW5kbGVzOiBcImUscyxzZVwiLFxuXHRcdGhlbHBlcjogZmFsc2UsXG5cdFx0bWF4SGVpZ2h0OiBudWxsLFxuXHRcdG1heFdpZHRoOiBudWxsLFxuXHRcdG1pbkhlaWdodDogMTAsXG5cdFx0bWluV2lkdGg6IDEwLFxuXG5cdFx0Ly8gU2VlICM3OTYwXG5cdFx0ekluZGV4OiA5MCxcblxuXHRcdC8vIENhbGxiYWNrc1xuXHRcdHJlc2l6ZTogbnVsbCxcblx0XHRzdGFydDogbnVsbCxcblx0XHRzdG9wOiBudWxsXG5cdH0sXG5cblx0X251bTogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBwYXJzZUZsb2F0KCB2YWx1ZSApIHx8IDA7XG5cdH0sXG5cblx0X2lzTnVtYmVyOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuICFpc05hTiggcGFyc2VGbG9hdCggdmFsdWUgKSApO1xuXHR9LFxuXG5cdF9oYXNTY3JvbGw6IGZ1bmN0aW9uKCBlbCwgYSApIHtcblxuXHRcdGlmICggJCggZWwgKS5jc3MoIFwib3ZlcmZsb3dcIiApID09PSBcImhpZGRlblwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHZhciBzY3JvbGwgPSAoIGEgJiYgYSA9PT0gXCJsZWZ0XCIgKSA/IFwic2Nyb2xsTGVmdFwiIDogXCJzY3JvbGxUb3BcIixcblx0XHRcdGhhcyA9IGZhbHNlO1xuXG5cdFx0aWYgKCBlbFsgc2Nyb2xsIF0gPiAwICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gVE9ETzogZGV0ZXJtaW5lIHdoaWNoIGNhc2VzIGFjdHVhbGx5IGNhdXNlIHRoaXMgdG8gaGFwcGVuXG5cdFx0Ly8gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIHRoZSBzY3JvbGwgc2V0LCBzZWUgaWYgaXQncyBwb3NzaWJsZSB0b1xuXHRcdC8vIHNldCB0aGUgc2Nyb2xsXG5cdFx0ZWxbIHNjcm9sbCBdID0gMTtcblx0XHRoYXMgPSAoIGVsWyBzY3JvbGwgXSA+IDAgKTtcblx0XHRlbFsgc2Nyb2xsIF0gPSAwO1xuXHRcdHJldHVybiBoYXM7XG5cdH0sXG5cblx0X2NyZWF0ZTogZnVuY3Rpb24oKSB7XG5cblx0XHR2YXIgbWFyZ2lucyxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHR0aGF0ID0gdGhpcztcblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1yZXNpemFibGVcIiApO1xuXG5cdFx0JC5leHRlbmQoIHRoaXMsIHtcblx0XHRcdF9hc3BlY3RSYXRpbzogISEoIG8uYXNwZWN0UmF0aW8gKSxcblx0XHRcdGFzcGVjdFJhdGlvOiBvLmFzcGVjdFJhdGlvLFxuXHRcdFx0b3JpZ2luYWxFbGVtZW50OiB0aGlzLmVsZW1lbnQsXG5cdFx0XHRfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czogW10sXG5cdFx0XHRfaGVscGVyOiBvLmhlbHBlciB8fCBvLmdob3N0IHx8IG8uYW5pbWF0ZSA/IG8uaGVscGVyIHx8IFwidWktcmVzaXphYmxlLWhlbHBlclwiIDogbnVsbFxuXHRcdH0gKTtcblxuXHRcdC8vIFdyYXAgdGhlIGVsZW1lbnQgaWYgaXQgY2Fubm90IGhvbGQgY2hpbGQgbm9kZXNcblx0XHRpZiAoIHRoaXMuZWxlbWVudFsgMCBdLm5vZGVOYW1lLm1hdGNoKCAvXihjYW52YXN8dGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbnxpbWcpJC9pICkgKSB7XG5cblx0XHRcdHRoaXMuZWxlbWVudC53cmFwKFxuXHRcdFx0XHQkKCBcIjxkaXYgY2xhc3M9J3VpLXdyYXBwZXInIHN0eWxlPSdvdmVyZmxvdzogaGlkZGVuOyc+PC9kaXY+XCIgKS5jc3MoIHtcblx0XHRcdFx0XHRwb3NpdGlvbjogdGhpcy5lbGVtZW50LmNzcyggXCJwb3NpdGlvblwiICksXG5cdFx0XHRcdFx0d2lkdGg6IHRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksXG5cdFx0XHRcdFx0aGVpZ2h0OiB0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKSxcblx0XHRcdFx0XHR0b3A6IHRoaXMuZWxlbWVudC5jc3MoIFwidG9wXCIgKSxcblx0XHRcdFx0XHRsZWZ0OiB0aGlzLmVsZW1lbnQuY3NzKCBcImxlZnRcIiApXG5cdFx0XHRcdH0gKVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudCgpLmRhdGEoXG5cdFx0XHRcdFwidWktcmVzaXphYmxlXCIsIHRoaXMuZWxlbWVudC5yZXNpemFibGUoIFwiaW5zdGFuY2VcIiApXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmVsZW1lbnRJc1dyYXBwZXIgPSB0cnVlO1xuXG5cdFx0XHRtYXJnaW5zID0ge1xuXHRcdFx0XHRtYXJnaW5Ub3A6IHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyggXCJtYXJnaW5Ub3BcIiApLFxuXHRcdFx0XHRtYXJnaW5SaWdodDogdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCBcIm1hcmdpblJpZ2h0XCIgKSxcblx0XHRcdFx0bWFyZ2luQm90dG9tOiB0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIFwibWFyZ2luQm90dG9tXCIgKSxcblx0XHRcdFx0bWFyZ2luTGVmdDogdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCBcIm1hcmdpbkxlZnRcIiApXG5cdFx0XHR9O1xuXG5cdFx0XHR0aGlzLmVsZW1lbnQuY3NzKCBtYXJnaW5zICk7XG5cdFx0XHR0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIFwibWFyZ2luXCIsIDAgKTtcblxuXHRcdFx0Ly8gc3VwcG9ydDogU2FmYXJpXG5cdFx0XHQvLyBQcmV2ZW50IFNhZmFyaSB0ZXh0YXJlYSByZXNpemVcblx0XHRcdHRoaXMub3JpZ2luYWxSZXNpemVTdHlsZSA9IHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyggXCJyZXNpemVcIiApO1xuXHRcdFx0dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCBcInJlc2l6ZVwiLCBcIm5vbmVcIiApO1xuXG5cdFx0XHR0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLnB1c2goIHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygge1xuXHRcdFx0XHRwb3NpdGlvbjogXCJzdGF0aWNcIixcblx0XHRcdFx0em9vbTogMSxcblx0XHRcdFx0ZGlzcGxheTogXCJibG9ja1wiXG5cdFx0XHR9ICkgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU5XG5cdFx0XHQvLyBhdm9pZCBJRSBqdW1wIChoYXJkIHNldCB0aGUgbWFyZ2luKVxuXHRcdFx0dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCBtYXJnaW5zICk7XG5cblx0XHRcdHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dXBIYW5kbGVzKCk7XG5cblx0XHRpZiAoIG8uYXV0b0hpZGUgKSB7XG5cdFx0XHQkKCB0aGlzLmVsZW1lbnQgKVxuXHRcdFx0XHQub24oIFwibW91c2VlbnRlclwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIG8uZGlzYWJsZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCBcInVpLXJlc2l6YWJsZS1hdXRvaGlkZVwiICk7XG5cdFx0XHRcdFx0dGhhdC5faGFuZGxlcy5zaG93KCk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQub24oIFwibW91c2VsZWF2ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIG8uZGlzYWJsZWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggIXRoYXQucmVzaXppbmcgKSB7XG5cdFx0XHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggXCJ1aS1yZXNpemFibGUtYXV0b2hpZGVcIiApO1xuXHRcdFx0XHRcdFx0dGhhdC5faGFuZGxlcy5oaWRlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fbW91c2VJbml0KCk7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXG5cdFx0dGhpcy5fbW91c2VEZXN0cm95KCk7XG5cblx0XHR2YXIgd3JhcHBlcixcblx0XHRcdF9kZXN0cm95ID0gZnVuY3Rpb24oIGV4cCApIHtcblx0XHRcdFx0JCggZXhwIClcblx0XHRcdFx0XHQucmVtb3ZlRGF0YSggXCJyZXNpemFibGVcIiApXG5cdFx0XHRcdFx0LnJlbW92ZURhdGEoIFwidWktcmVzaXphYmxlXCIgKVxuXHRcdFx0XHRcdC5vZmYoIFwiLnJlc2l6YWJsZVwiIClcblx0XHRcdFx0XHQuZmluZCggXCIudWktcmVzaXphYmxlLWhhbmRsZVwiIClcblx0XHRcdFx0XHRcdC5yZW1vdmUoKTtcblx0XHRcdH07XG5cblx0XHQvLyBUT0RPOiBVbndyYXAgYXQgc2FtZSBET00gcG9zaXRpb25cblx0XHRpZiAoIHRoaXMuZWxlbWVudElzV3JhcHBlciApIHtcblx0XHRcdF9kZXN0cm95KCB0aGlzLmVsZW1lbnQgKTtcblx0XHRcdHdyYXBwZXIgPSB0aGlzLmVsZW1lbnQ7XG5cdFx0XHR0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIHtcblx0XHRcdFx0cG9zaXRpb246IHdyYXBwZXIuY3NzKCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdFx0d2lkdGg6IHdyYXBwZXIub3V0ZXJXaWR0aCgpLFxuXHRcdFx0XHRoZWlnaHQ6IHdyYXBwZXIub3V0ZXJIZWlnaHQoKSxcblx0XHRcdFx0dG9wOiB3cmFwcGVyLmNzcyggXCJ0b3BcIiApLFxuXHRcdFx0XHRsZWZ0OiB3cmFwcGVyLmNzcyggXCJsZWZ0XCIgKVxuXHRcdFx0fSApLmluc2VydEFmdGVyKCB3cmFwcGVyICk7XG5cdFx0XHR3cmFwcGVyLnJlbW92ZSgpO1xuXHRcdH1cblxuXHRcdHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyggXCJyZXNpemVcIiwgdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlICk7XG5cdFx0X2Rlc3Ryb3koIHRoaXMub3JpZ2luYWxFbGVtZW50ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXG5cdFx0c3dpdGNoICgga2V5ICkge1xuXHRcdGNhc2UgXCJoYW5kbGVzXCI6XG5cdFx0XHR0aGlzLl9yZW1vdmVIYW5kbGVzKCk7XG5cdFx0XHR0aGlzLl9zZXR1cEhhbmRsZXMoKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdH0sXG5cblx0X3NldHVwSGFuZGxlczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG8gPSB0aGlzLm9wdGlvbnMsIGhhbmRsZSwgaSwgbiwgaG5hbWUsIGF4aXMsIHRoYXQgPSB0aGlzO1xuXHRcdHRoaXMuaGFuZGxlcyA9IG8uaGFuZGxlcyB8fFxuXHRcdFx0KCAhJCggXCIudWktcmVzaXphYmxlLWhhbmRsZVwiLCB0aGlzLmVsZW1lbnQgKS5sZW5ndGggP1xuXHRcdFx0XHRcImUscyxzZVwiIDoge1xuXHRcdFx0XHRcdG46IFwiLnVpLXJlc2l6YWJsZS1uXCIsXG5cdFx0XHRcdFx0ZTogXCIudWktcmVzaXphYmxlLWVcIixcblx0XHRcdFx0XHRzOiBcIi51aS1yZXNpemFibGUtc1wiLFxuXHRcdFx0XHRcdHc6IFwiLnVpLXJlc2l6YWJsZS13XCIsXG5cdFx0XHRcdFx0c2U6IFwiLnVpLXJlc2l6YWJsZS1zZVwiLFxuXHRcdFx0XHRcdHN3OiBcIi51aS1yZXNpemFibGUtc3dcIixcblx0XHRcdFx0XHRuZTogXCIudWktcmVzaXphYmxlLW5lXCIsXG5cdFx0XHRcdFx0bnc6IFwiLnVpLXJlc2l6YWJsZS1ud1wiXG5cdFx0XHRcdH0gKTtcblxuXHRcdHRoaXMuX2hhbmRsZXMgPSAkKCk7XG5cdFx0aWYgKCB0aGlzLmhhbmRsZXMuY29uc3RydWN0b3IgPT09IFN0cmluZyApIHtcblxuXHRcdFx0aWYgKCB0aGlzLmhhbmRsZXMgPT09IFwiYWxsXCIgKSB7XG5cdFx0XHRcdHRoaXMuaGFuZGxlcyA9IFwibixlLHMsdyxzZSxzdyxuZSxud1wiO1xuXHRcdFx0fVxuXG5cdFx0XHRuID0gdGhpcy5oYW5kbGVzLnNwbGl0KCBcIixcIiApO1xuXHRcdFx0dGhpcy5oYW5kbGVzID0ge307XG5cblx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbi5sZW5ndGg7IGkrKyApIHtcblxuXHRcdFx0XHRoYW5kbGUgPSAkLnRyaW0oIG5bIGkgXSApO1xuXHRcdFx0XHRobmFtZSA9IFwidWktcmVzaXphYmxlLVwiICsgaGFuZGxlO1xuXHRcdFx0XHRheGlzID0gJCggXCI8ZGl2PlwiICk7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCBheGlzLCBcInVpLXJlc2l6YWJsZS1oYW5kbGUgXCIgKyBobmFtZSApO1xuXG5cdFx0XHRcdGF4aXMuY3NzKCB7IHpJbmRleDogby56SW5kZXggfSApO1xuXG5cdFx0XHRcdHRoaXMuaGFuZGxlc1sgaGFuZGxlIF0gPSBcIi51aS1yZXNpemFibGUtXCIgKyBoYW5kbGU7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5hcHBlbmQoIGF4aXMgKTtcblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHRoaXMuX3JlbmRlckF4aXMgPSBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXG5cdFx0XHR2YXIgaSwgYXhpcywgcGFkUG9zLCBwYWRXcmFwcGVyO1xuXG5cdFx0XHR0YXJnZXQgPSB0YXJnZXQgfHwgdGhpcy5lbGVtZW50O1xuXG5cdFx0XHRmb3IgKCBpIGluIHRoaXMuaGFuZGxlcyApIHtcblxuXHRcdFx0XHRpZiAoIHRoaXMuaGFuZGxlc1sgaSBdLmNvbnN0cnVjdG9yID09PSBTdHJpbmcgKSB7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVzWyBpIF0gPSB0aGlzLmVsZW1lbnQuY2hpbGRyZW4oIHRoaXMuaGFuZGxlc1sgaSBdICkuZmlyc3QoKS5zaG93KCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIHRoaXMuaGFuZGxlc1sgaSBdLmpxdWVyeSB8fCB0aGlzLmhhbmRsZXNbIGkgXS5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHR0aGlzLmhhbmRsZXNbIGkgXSA9ICQoIHRoaXMuaGFuZGxlc1sgaSBdICk7XG5cdFx0XHRcdFx0dGhpcy5fb24oIHRoaXMuaGFuZGxlc1sgaSBdLCB7IFwibW91c2Vkb3duXCI6IHRoYXQuX21vdXNlRG93biB9ICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIHRoaXMuZWxlbWVudElzV3JhcHBlciAmJlxuXHRcdFx0XHRcdFx0dGhpcy5vcmlnaW5hbEVsZW1lbnRbIDAgXVxuXHRcdFx0XHRcdFx0XHQubm9kZU5hbWVcblx0XHRcdFx0XHRcdFx0Lm1hdGNoKCAvXih0ZXh0YXJlYXxpbnB1dHxzZWxlY3R8YnV0dG9uKSQvaSApICkge1xuXHRcdFx0XHRcdGF4aXMgPSAkKCB0aGlzLmhhbmRsZXNbIGkgXSwgdGhpcy5lbGVtZW50ICk7XG5cblx0XHRcdFx0XHRwYWRXcmFwcGVyID0gL3N3fG5lfG53fHNlfG58cy8udGVzdCggaSApID9cblx0XHRcdFx0XHRcdGF4aXMub3V0ZXJIZWlnaHQoKSA6XG5cdFx0XHRcdFx0XHRheGlzLm91dGVyV2lkdGgoKTtcblxuXHRcdFx0XHRcdHBhZFBvcyA9IFsgXCJwYWRkaW5nXCIsXG5cdFx0XHRcdFx0XHQvbmV8bnd8bi8udGVzdCggaSApID8gXCJUb3BcIiA6XG5cdFx0XHRcdFx0XHQvc2V8c3d8cy8udGVzdCggaSApID8gXCJCb3R0b21cIiA6XG5cdFx0XHRcdFx0XHQvXmUkLy50ZXN0KCBpICkgPyBcIlJpZ2h0XCIgOiBcIkxlZnRcIiBdLmpvaW4oIFwiXCIgKTtcblxuXHRcdFx0XHRcdHRhcmdldC5jc3MoIHBhZFBvcywgcGFkV3JhcHBlciApO1xuXG5cdFx0XHRcdFx0dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuX2hhbmRsZXMgPSB0aGlzLl9oYW5kbGVzLmFkZCggdGhpcy5oYW5kbGVzWyBpIF0gKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Ly8gVE9ETzogbWFrZSByZW5kZXJBeGlzIGEgcHJvdG90eXBlIGZ1bmN0aW9uXG5cdFx0dGhpcy5fcmVuZGVyQXhpcyggdGhpcy5lbGVtZW50ICk7XG5cblx0XHR0aGlzLl9oYW5kbGVzID0gdGhpcy5faGFuZGxlcy5hZGQoIHRoaXMuZWxlbWVudC5maW5kKCBcIi51aS1yZXNpemFibGUtaGFuZGxlXCIgKSApO1xuXHRcdHRoaXMuX2hhbmRsZXMuZGlzYWJsZVNlbGVjdGlvbigpO1xuXG5cdFx0dGhpcy5faGFuZGxlcy5vbiggXCJtb3VzZW92ZXJcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICF0aGF0LnJlc2l6aW5nICkge1xuXHRcdFx0XHRpZiAoIHRoaXMuY2xhc3NOYW1lICkge1xuXHRcdFx0XHRcdGF4aXMgPSB0aGlzLmNsYXNzTmFtZS5tYXRjaCggL3VpLXJlc2l6YWJsZS0oc2V8c3d8bmV8bnd8bnxlfHN8dykvaSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoYXQuYXhpcyA9IGF4aXMgJiYgYXhpc1sgMSBdID8gYXhpc1sgMSBdIDogXCJzZVwiO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGlmICggby5hdXRvSGlkZSApIHtcblx0XHRcdHRoaXMuX2hhbmRsZXMuaGlkZSgpO1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktcmVzaXphYmxlLWF1dG9oaWRlXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0X3JlbW92ZUhhbmRsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX2hhbmRsZXMucmVtb3ZlKCk7XG5cdH0sXG5cblx0X21vdXNlQ2FwdHVyZTogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBpLCBoYW5kbGUsXG5cdFx0XHRjYXB0dXJlID0gZmFsc2U7XG5cblx0XHRmb3IgKCBpIGluIHRoaXMuaGFuZGxlcyApIHtcblx0XHRcdGhhbmRsZSA9ICQoIHRoaXMuaGFuZGxlc1sgaSBdIClbIDAgXTtcblx0XHRcdGlmICggaGFuZGxlID09PSBldmVudC50YXJnZXQgfHwgJC5jb250YWlucyggaGFuZGxlLCBldmVudC50YXJnZXQgKSApIHtcblx0XHRcdFx0Y2FwdHVyZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuICF0aGlzLm9wdGlvbnMuZGlzYWJsZWQgJiYgY2FwdHVyZTtcblx0fSxcblxuXHRfbW91c2VTdGFydDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0dmFyIGN1cmxlZnQsIGN1cnRvcCwgY3Vyc29yLFxuXHRcdFx0byA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGVsID0gdGhpcy5lbGVtZW50O1xuXG5cdFx0dGhpcy5yZXNpemluZyA9IHRydWU7XG5cblx0XHR0aGlzLl9yZW5kZXJQcm94eSgpO1xuXG5cdFx0Y3VybGVmdCA9IHRoaXMuX251bSggdGhpcy5oZWxwZXIuY3NzKCBcImxlZnRcIiApICk7XG5cdFx0Y3VydG9wID0gdGhpcy5fbnVtKCB0aGlzLmhlbHBlci5jc3MoIFwidG9wXCIgKSApO1xuXG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ICkge1xuXHRcdFx0Y3VybGVmdCArPSAkKCBvLmNvbnRhaW5tZW50ICkuc2Nyb2xsTGVmdCgpIHx8IDA7XG5cdFx0XHRjdXJ0b3AgKz0gJCggby5jb250YWlubWVudCApLnNjcm9sbFRvcCgpIHx8IDA7XG5cdFx0fVxuXG5cdFx0dGhpcy5vZmZzZXQgPSB0aGlzLmhlbHBlci5vZmZzZXQoKTtcblx0XHR0aGlzLnBvc2l0aW9uID0geyBsZWZ0OiBjdXJsZWZ0LCB0b3A6IGN1cnRvcCB9O1xuXG5cdFx0dGhpcy5zaXplID0gdGhpcy5faGVscGVyID8ge1xuXHRcdFx0XHR3aWR0aDogdGhpcy5oZWxwZXIud2lkdGgoKSxcblx0XHRcdFx0aGVpZ2h0OiB0aGlzLmhlbHBlci5oZWlnaHQoKVxuXHRcdFx0fSA6IHtcblx0XHRcdFx0d2lkdGg6IGVsLndpZHRoKCksXG5cdFx0XHRcdGhlaWdodDogZWwuaGVpZ2h0KClcblx0XHRcdH07XG5cblx0XHR0aGlzLm9yaWdpbmFsU2l6ZSA9IHRoaXMuX2hlbHBlciA/IHtcblx0XHRcdFx0d2lkdGg6IGVsLm91dGVyV2lkdGgoKSxcblx0XHRcdFx0aGVpZ2h0OiBlbC5vdXRlckhlaWdodCgpXG5cdFx0XHR9IDoge1xuXHRcdFx0XHR3aWR0aDogZWwud2lkdGgoKSxcblx0XHRcdFx0aGVpZ2h0OiBlbC5oZWlnaHQoKVxuXHRcdFx0fTtcblxuXHRcdHRoaXMuc2l6ZURpZmYgPSB7XG5cdFx0XHR3aWR0aDogZWwub3V0ZXJXaWR0aCgpIC0gZWwud2lkdGgoKSxcblx0XHRcdGhlaWdodDogZWwub3V0ZXJIZWlnaHQoKSAtIGVsLmhlaWdodCgpXG5cdFx0fTtcblxuXHRcdHRoaXMub3JpZ2luYWxQb3NpdGlvbiA9IHsgbGVmdDogY3VybGVmdCwgdG9wOiBjdXJ0b3AgfTtcblx0XHR0aGlzLm9yaWdpbmFsTW91c2VQb3NpdGlvbiA9IHsgbGVmdDogZXZlbnQucGFnZVgsIHRvcDogZXZlbnQucGFnZVkgfTtcblxuXHRcdHRoaXMuYXNwZWN0UmF0aW8gPSAoIHR5cGVvZiBvLmFzcGVjdFJhdGlvID09PSBcIm51bWJlclwiICkgP1xuXHRcdFx0by5hc3BlY3RSYXRpbyA6XG5cdFx0XHQoICggdGhpcy5vcmlnaW5hbFNpemUud2lkdGggLyB0aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHQgKSB8fCAxICk7XG5cblx0XHRjdXJzb3IgPSAkKCBcIi51aS1yZXNpemFibGUtXCIgKyB0aGlzLmF4aXMgKS5jc3MoIFwiY3Vyc29yXCIgKTtcblx0XHQkKCBcImJvZHlcIiApLmNzcyggXCJjdXJzb3JcIiwgY3Vyc29yID09PSBcImF1dG9cIiA/IHRoaXMuYXhpcyArIFwiLXJlc2l6ZVwiIDogY3Vyc29yICk7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1yZXNpemFibGUtcmVzaXppbmdcIiApO1xuXHRcdHRoaXMuX3Byb3BhZ2F0ZSggXCJzdGFydFwiLCBldmVudCApO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdF9tb3VzZURyYWc6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdHZhciBkYXRhLCBwcm9wcyxcblx0XHRcdHNtcCA9IHRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uLFxuXHRcdFx0YSA9IHRoaXMuYXhpcyxcblx0XHRcdGR4ID0gKCBldmVudC5wYWdlWCAtIHNtcC5sZWZ0ICkgfHwgMCxcblx0XHRcdGR5ID0gKCBldmVudC5wYWdlWSAtIHNtcC50b3AgKSB8fCAwLFxuXHRcdFx0dHJpZ2dlciA9IHRoaXMuX2NoYW5nZVsgYSBdO1xuXG5cdFx0dGhpcy5fdXBkYXRlUHJldlByb3BlcnRpZXMoKTtcblxuXHRcdGlmICggIXRyaWdnZXIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0ZGF0YSA9IHRyaWdnZXIuYXBwbHkoIHRoaXMsIFsgZXZlbnQsIGR4LCBkeSBdICk7XG5cblx0XHR0aGlzLl91cGRhdGVWaXJ0dWFsQm91bmRhcmllcyggZXZlbnQuc2hpZnRLZXkgKTtcblx0XHRpZiAoIHRoaXMuX2FzcGVjdFJhdGlvIHx8IGV2ZW50LnNoaWZ0S2V5ICkge1xuXHRcdFx0ZGF0YSA9IHRoaXMuX3VwZGF0ZVJhdGlvKCBkYXRhLCBldmVudCApO1xuXHRcdH1cblxuXHRcdGRhdGEgPSB0aGlzLl9yZXNwZWN0U2l6ZSggZGF0YSwgZXZlbnQgKTtcblxuXHRcdHRoaXMuX3VwZGF0ZUNhY2hlKCBkYXRhICk7XG5cblx0XHR0aGlzLl9wcm9wYWdhdGUoIFwicmVzaXplXCIsIGV2ZW50ICk7XG5cblx0XHRwcm9wcyA9IHRoaXMuX2FwcGx5Q2hhbmdlcygpO1xuXG5cdFx0aWYgKCAhdGhpcy5faGVscGVyICYmIHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKTtcblx0XHR9XG5cblx0XHRpZiAoICEkLmlzRW1wdHlPYmplY3QoIHByb3BzICkgKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVQcmV2UHJvcGVydGllcygpO1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJyZXNpemVcIiwgZXZlbnQsIHRoaXMudWkoKSApO1xuXHRcdFx0dGhpcy5fYXBwbHlDaGFuZ2VzKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdF9tb3VzZVN0b3A6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdHRoaXMucmVzaXppbmcgPSBmYWxzZTtcblx0XHR2YXIgcHIsIGlzdGEsIHNvZmZzZXRoLCBzb2Zmc2V0dywgcywgbGVmdCwgdG9wLFxuXHRcdFx0byA9IHRoaXMub3B0aW9ucywgdGhhdCA9IHRoaXM7XG5cblx0XHRpZiAoIHRoaXMuX2hlbHBlciApIHtcblxuXHRcdFx0cHIgPSB0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzO1xuXHRcdFx0aXN0YSA9IHByLmxlbmd0aCAmJiAoIC90ZXh0YXJlYS9pICkudGVzdCggcHJbIDAgXS5ub2RlTmFtZSApO1xuXHRcdFx0c29mZnNldGggPSBpc3RhICYmIHRoaXMuX2hhc1Njcm9sbCggcHJbIDAgXSwgXCJsZWZ0XCIgKSA/IDAgOiB0aGF0LnNpemVEaWZmLmhlaWdodDtcblx0XHRcdHNvZmZzZXR3ID0gaXN0YSA/IDAgOiB0aGF0LnNpemVEaWZmLndpZHRoO1xuXG5cdFx0XHRzID0ge1xuXHRcdFx0XHR3aWR0aDogKCB0aGF0LmhlbHBlci53aWR0aCgpICAtIHNvZmZzZXR3ICksXG5cdFx0XHRcdGhlaWdodDogKCB0aGF0LmhlbHBlci5oZWlnaHQoKSAtIHNvZmZzZXRoIClcblx0XHRcdH07XG5cdFx0XHRsZWZ0ID0gKCBwYXJzZUZsb2F0KCB0aGF0LmVsZW1lbnQuY3NzKCBcImxlZnRcIiApICkgK1xuXHRcdFx0XHQoIHRoYXQucG9zaXRpb24ubGVmdCAtIHRoYXQub3JpZ2luYWxQb3NpdGlvbi5sZWZ0ICkgKSB8fCBudWxsO1xuXHRcdFx0dG9wID0gKCBwYXJzZUZsb2F0KCB0aGF0LmVsZW1lbnQuY3NzKCBcInRvcFwiICkgKSArXG5cdFx0XHRcdCggdGhhdC5wb3NpdGlvbi50b3AgLSB0aGF0Lm9yaWdpbmFsUG9zaXRpb24udG9wICkgKSB8fCBudWxsO1xuXG5cdFx0XHRpZiAoICFvLmFuaW1hdGUgKSB7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5jc3MoICQuZXh0ZW5kKCBzLCB7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH0gKSApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGF0LmhlbHBlci5oZWlnaHQoIHRoYXQuc2l6ZS5oZWlnaHQgKTtcblx0XHRcdHRoYXQuaGVscGVyLndpZHRoKCB0aGF0LnNpemUud2lkdGggKTtcblxuXHRcdFx0aWYgKCB0aGlzLl9oZWxwZXIgJiYgIW8uYW5pbWF0ZSApIHtcblx0XHRcdFx0dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQkKCBcImJvZHlcIiApLmNzcyggXCJjdXJzb3JcIiwgXCJhdXRvXCIgKTtcblxuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBcInVpLXJlc2l6YWJsZS1yZXNpemluZ1wiICk7XG5cblx0XHR0aGlzLl9wcm9wYWdhdGUoIFwic3RvcFwiLCBldmVudCApO1xuXG5cdFx0aWYgKCB0aGlzLl9oZWxwZXIgKSB7XG5cdFx0XHR0aGlzLmhlbHBlci5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cblx0fSxcblxuXHRfdXBkYXRlUHJldlByb3BlcnRpZXM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMucHJldlBvc2l0aW9uID0ge1xuXHRcdFx0dG9wOiB0aGlzLnBvc2l0aW9uLnRvcCxcblx0XHRcdGxlZnQ6IHRoaXMucG9zaXRpb24ubGVmdFxuXHRcdH07XG5cdFx0dGhpcy5wcmV2U2l6ZSA9IHtcblx0XHRcdHdpZHRoOiB0aGlzLnNpemUud2lkdGgsXG5cdFx0XHRoZWlnaHQ6IHRoaXMuc2l6ZS5oZWlnaHRcblx0XHR9O1xuXHR9LFxuXG5cdF9hcHBseUNoYW5nZXM6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBwcm9wcyA9IHt9O1xuXG5cdFx0aWYgKCB0aGlzLnBvc2l0aW9uLnRvcCAhPT0gdGhpcy5wcmV2UG9zaXRpb24udG9wICkge1xuXHRcdFx0cHJvcHMudG9wID0gdGhpcy5wb3NpdGlvbi50b3AgKyBcInB4XCI7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5wb3NpdGlvbi5sZWZ0ICE9PSB0aGlzLnByZXZQb3NpdGlvbi5sZWZ0ICkge1xuXHRcdFx0cHJvcHMubGVmdCA9IHRoaXMucG9zaXRpb24ubGVmdCArIFwicHhcIjtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLnNpemUud2lkdGggIT09IHRoaXMucHJldlNpemUud2lkdGggKSB7XG5cdFx0XHRwcm9wcy53aWR0aCA9IHRoaXMuc2l6ZS53aWR0aCArIFwicHhcIjtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLnNpemUuaGVpZ2h0ICE9PSB0aGlzLnByZXZTaXplLmhlaWdodCApIHtcblx0XHRcdHByb3BzLmhlaWdodCA9IHRoaXMuc2l6ZS5oZWlnaHQgKyBcInB4XCI7XG5cdFx0fVxuXG5cdFx0dGhpcy5oZWxwZXIuY3NzKCBwcm9wcyApO1xuXG5cdFx0cmV0dXJuIHByb3BzO1xuXHR9LFxuXG5cdF91cGRhdGVWaXJ0dWFsQm91bmRhcmllczogZnVuY3Rpb24oIGZvcmNlQXNwZWN0UmF0aW8gKSB7XG5cdFx0dmFyIHBNaW5XaWR0aCwgcE1heFdpZHRoLCBwTWluSGVpZ2h0LCBwTWF4SGVpZ2h0LCBiLFxuXHRcdFx0byA9IHRoaXMub3B0aW9ucztcblxuXHRcdGIgPSB7XG5cdFx0XHRtaW5XaWR0aDogdGhpcy5faXNOdW1iZXIoIG8ubWluV2lkdGggKSA/IG8ubWluV2lkdGggOiAwLFxuXHRcdFx0bWF4V2lkdGg6IHRoaXMuX2lzTnVtYmVyKCBvLm1heFdpZHRoICkgPyBvLm1heFdpZHRoIDogSW5maW5pdHksXG5cdFx0XHRtaW5IZWlnaHQ6IHRoaXMuX2lzTnVtYmVyKCBvLm1pbkhlaWdodCApID8gby5taW5IZWlnaHQgOiAwLFxuXHRcdFx0bWF4SGVpZ2h0OiB0aGlzLl9pc051bWJlciggby5tYXhIZWlnaHQgKSA/IG8ubWF4SGVpZ2h0IDogSW5maW5pdHlcblx0XHR9O1xuXG5cdFx0aWYgKCB0aGlzLl9hc3BlY3RSYXRpbyB8fCBmb3JjZUFzcGVjdFJhdGlvICkge1xuXHRcdFx0cE1pbldpZHRoID0gYi5taW5IZWlnaHQgKiB0aGlzLmFzcGVjdFJhdGlvO1xuXHRcdFx0cE1pbkhlaWdodCA9IGIubWluV2lkdGggLyB0aGlzLmFzcGVjdFJhdGlvO1xuXHRcdFx0cE1heFdpZHRoID0gYi5tYXhIZWlnaHQgKiB0aGlzLmFzcGVjdFJhdGlvO1xuXHRcdFx0cE1heEhlaWdodCA9IGIubWF4V2lkdGggLyB0aGlzLmFzcGVjdFJhdGlvO1xuXG5cdFx0XHRpZiAoIHBNaW5XaWR0aCA+IGIubWluV2lkdGggKSB7XG5cdFx0XHRcdGIubWluV2lkdGggPSBwTWluV2lkdGg7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIHBNaW5IZWlnaHQgPiBiLm1pbkhlaWdodCApIHtcblx0XHRcdFx0Yi5taW5IZWlnaHQgPSBwTWluSGVpZ2h0O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBwTWF4V2lkdGggPCBiLm1heFdpZHRoICkge1xuXHRcdFx0XHRiLm1heFdpZHRoID0gcE1heFdpZHRoO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBwTWF4SGVpZ2h0IDwgYi5tYXhIZWlnaHQgKSB7XG5cdFx0XHRcdGIubWF4SGVpZ2h0ID0gcE1heEhlaWdodDtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5fdkJvdW5kYXJpZXMgPSBiO1xuXHR9LFxuXG5cdF91cGRhdGVDYWNoZTogZnVuY3Rpb24oIGRhdGEgKSB7XG5cdFx0dGhpcy5vZmZzZXQgPSB0aGlzLmhlbHBlci5vZmZzZXQoKTtcblx0XHRpZiAoIHRoaXMuX2lzTnVtYmVyKCBkYXRhLmxlZnQgKSApIHtcblx0XHRcdHRoaXMucG9zaXRpb24ubGVmdCA9IGRhdGEubGVmdDtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLl9pc051bWJlciggZGF0YS50b3AgKSApIHtcblx0XHRcdHRoaXMucG9zaXRpb24udG9wID0gZGF0YS50b3A7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5faXNOdW1iZXIoIGRhdGEuaGVpZ2h0ICkgKSB7XG5cdFx0XHR0aGlzLnNpemUuaGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5faXNOdW1iZXIoIGRhdGEud2lkdGggKSApIHtcblx0XHRcdHRoaXMuc2l6ZS53aWR0aCA9IGRhdGEud2lkdGg7XG5cdFx0fVxuXHR9LFxuXG5cdF91cGRhdGVSYXRpbzogZnVuY3Rpb24oIGRhdGEgKSB7XG5cblx0XHR2YXIgY3BvcyA9IHRoaXMucG9zaXRpb24sXG5cdFx0XHRjc2l6ZSA9IHRoaXMuc2l6ZSxcblx0XHRcdGEgPSB0aGlzLmF4aXM7XG5cblx0XHRpZiAoIHRoaXMuX2lzTnVtYmVyKCBkYXRhLmhlaWdodCApICkge1xuXHRcdFx0ZGF0YS53aWR0aCA9ICggZGF0YS5oZWlnaHQgKiB0aGlzLmFzcGVjdFJhdGlvICk7XG5cdFx0fSBlbHNlIGlmICggdGhpcy5faXNOdW1iZXIoIGRhdGEud2lkdGggKSApIHtcblx0XHRcdGRhdGEuaGVpZ2h0ID0gKCBkYXRhLndpZHRoIC8gdGhpcy5hc3BlY3RSYXRpbyApO1xuXHRcdH1cblxuXHRcdGlmICggYSA9PT0gXCJzd1wiICkge1xuXHRcdFx0ZGF0YS5sZWZ0ID0gY3Bvcy5sZWZ0ICsgKCBjc2l6ZS53aWR0aCAtIGRhdGEud2lkdGggKTtcblx0XHRcdGRhdGEudG9wID0gbnVsbDtcblx0XHR9XG5cdFx0aWYgKCBhID09PSBcIm53XCIgKSB7XG5cdFx0XHRkYXRhLnRvcCA9IGNwb3MudG9wICsgKCBjc2l6ZS5oZWlnaHQgLSBkYXRhLmhlaWdodCApO1xuXHRcdFx0ZGF0YS5sZWZ0ID0gY3Bvcy5sZWZ0ICsgKCBjc2l6ZS53aWR0aCAtIGRhdGEud2lkdGggKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YTtcblx0fSxcblxuXHRfcmVzcGVjdFNpemU6IGZ1bmN0aW9uKCBkYXRhICkge1xuXG5cdFx0dmFyIG8gPSB0aGlzLl92Qm91bmRhcmllcyxcblx0XHRcdGEgPSB0aGlzLmF4aXMsXG5cdFx0XHRpc21heHcgPSB0aGlzLl9pc051bWJlciggZGF0YS53aWR0aCApICYmIG8ubWF4V2lkdGggJiYgKCBvLm1heFdpZHRoIDwgZGF0YS53aWR0aCApLFxuXHRcdFx0aXNtYXhoID0gdGhpcy5faXNOdW1iZXIoIGRhdGEuaGVpZ2h0ICkgJiYgby5tYXhIZWlnaHQgJiYgKCBvLm1heEhlaWdodCA8IGRhdGEuaGVpZ2h0ICksXG5cdFx0XHRpc21pbncgPSB0aGlzLl9pc051bWJlciggZGF0YS53aWR0aCApICYmIG8ubWluV2lkdGggJiYgKCBvLm1pbldpZHRoID4gZGF0YS53aWR0aCApLFxuXHRcdFx0aXNtaW5oID0gdGhpcy5faXNOdW1iZXIoIGRhdGEuaGVpZ2h0ICkgJiYgby5taW5IZWlnaHQgJiYgKCBvLm1pbkhlaWdodCA+IGRhdGEuaGVpZ2h0ICksXG5cdFx0XHRkdyA9IHRoaXMub3JpZ2luYWxQb3NpdGlvbi5sZWZ0ICsgdGhpcy5vcmlnaW5hbFNpemUud2lkdGgsXG5cdFx0XHRkaCA9IHRoaXMub3JpZ2luYWxQb3NpdGlvbi50b3AgKyB0aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHQsXG5cdFx0XHRjdyA9IC9zd3xud3x3Ly50ZXN0KCBhICksIGNoID0gL253fG5lfG4vLnRlc3QoIGEgKTtcblx0XHRpZiAoIGlzbWludyApIHtcblx0XHRcdGRhdGEud2lkdGggPSBvLm1pbldpZHRoO1xuXHRcdH1cblx0XHRpZiAoIGlzbWluaCApIHtcblx0XHRcdGRhdGEuaGVpZ2h0ID0gby5taW5IZWlnaHQ7XG5cdFx0fVxuXHRcdGlmICggaXNtYXh3ICkge1xuXHRcdFx0ZGF0YS53aWR0aCA9IG8ubWF4V2lkdGg7XG5cdFx0fVxuXHRcdGlmICggaXNtYXhoICkge1xuXHRcdFx0ZGF0YS5oZWlnaHQgPSBvLm1heEhlaWdodDtcblx0XHR9XG5cblx0XHRpZiAoIGlzbWludyAmJiBjdyApIHtcblx0XHRcdGRhdGEubGVmdCA9IGR3IC0gby5taW5XaWR0aDtcblx0XHR9XG5cdFx0aWYgKCBpc21heHcgJiYgY3cgKSB7XG5cdFx0XHRkYXRhLmxlZnQgPSBkdyAtIG8ubWF4V2lkdGg7XG5cdFx0fVxuXHRcdGlmICggaXNtaW5oICYmIGNoICkge1xuXHRcdFx0ZGF0YS50b3AgPSBkaCAtIG8ubWluSGVpZ2h0O1xuXHRcdH1cblx0XHRpZiAoIGlzbWF4aCAmJiBjaCApIHtcblx0XHRcdGRhdGEudG9wID0gZGggLSBvLm1heEhlaWdodDtcblx0XHR9XG5cblx0XHQvLyBGaXhpbmcganVtcCBlcnJvciBvbiB0b3AvbGVmdCAtIGJ1ZyAjMjMzMFxuXHRcdGlmICggIWRhdGEud2lkdGggJiYgIWRhdGEuaGVpZ2h0ICYmICFkYXRhLmxlZnQgJiYgZGF0YS50b3AgKSB7XG5cdFx0XHRkYXRhLnRvcCA9IG51bGw7XG5cdFx0fSBlbHNlIGlmICggIWRhdGEud2lkdGggJiYgIWRhdGEuaGVpZ2h0ICYmICFkYXRhLnRvcCAmJiBkYXRhLmxlZnQgKSB7XG5cdFx0XHRkYXRhLmxlZnQgPSBudWxsO1xuXHRcdH1cblxuXHRcdHJldHVybiBkYXRhO1xuXHR9LFxuXG5cdF9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnM6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHdpZHRocyA9IFtdLFxuXHRcdFx0Ym9yZGVycyA9IFtcblx0XHRcdFx0ZWxlbWVudC5jc3MoIFwiYm9yZGVyVG9wV2lkdGhcIiApLFxuXHRcdFx0XHRlbGVtZW50LmNzcyggXCJib3JkZXJSaWdodFdpZHRoXCIgKSxcblx0XHRcdFx0ZWxlbWVudC5jc3MoIFwiYm9yZGVyQm90dG9tV2lkdGhcIiApLFxuXHRcdFx0XHRlbGVtZW50LmNzcyggXCJib3JkZXJMZWZ0V2lkdGhcIiApXG5cdFx0XHRdLFxuXHRcdFx0cGFkZGluZ3MgPSBbXG5cdFx0XHRcdGVsZW1lbnQuY3NzKCBcInBhZGRpbmdUb3BcIiApLFxuXHRcdFx0XHRlbGVtZW50LmNzcyggXCJwYWRkaW5nUmlnaHRcIiApLFxuXHRcdFx0XHRlbGVtZW50LmNzcyggXCJwYWRkaW5nQm90dG9tXCIgKSxcblx0XHRcdFx0ZWxlbWVudC5jc3MoIFwicGFkZGluZ0xlZnRcIiApXG5cdFx0XHRdO1xuXG5cdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0d2lkdGhzWyBpIF0gPSAoIHBhcnNlRmxvYXQoIGJvcmRlcnNbIGkgXSApIHx8IDAgKTtcblx0XHRcdHdpZHRoc1sgaSBdICs9ICggcGFyc2VGbG9hdCggcGFkZGluZ3NbIGkgXSApIHx8IDAgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aGVpZ2h0OiB3aWR0aHNbIDAgXSArIHdpZHRoc1sgMiBdLFxuXHRcdFx0d2lkdGg6IHdpZHRoc1sgMSBdICsgd2lkdGhzWyAzIF1cblx0XHR9O1xuXHR9LFxuXG5cdF9wcm9wb3J0aW9uYWxseVJlc2l6ZTogZnVuY3Rpb24oKSB7XG5cblx0XHRpZiAoICF0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgcHJlbCxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZWxlbWVudCA9IHRoaXMuaGVscGVyIHx8IHRoaXMuZWxlbWVudDtcblxuXHRcdGZvciAoIDsgaSA8IHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoOyBpKysgKSB7XG5cblx0XHRcdHByZWwgPSB0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzWyBpIF07XG5cblx0XHRcdC8vIFRPRE86IFNlZW1zIGxpa2UgYSBidWcgdG8gY2FjaGUgdGhpcy5vdXRlckRpbWVuc2lvbnNcblx0XHRcdC8vIGNvbnNpZGVyaW5nIHRoYXQgd2UgYXJlIGluIGEgbG9vcC5cblx0XHRcdGlmICggIXRoaXMub3V0ZXJEaW1lbnNpb25zICkge1xuXHRcdFx0XHR0aGlzLm91dGVyRGltZW5zaW9ucyA9IHRoaXMuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyggcHJlbCApO1xuXHRcdFx0fVxuXG5cdFx0XHRwcmVsLmNzcygge1xuXHRcdFx0XHRoZWlnaHQ6ICggZWxlbWVudC5oZWlnaHQoKSAtIHRoaXMub3V0ZXJEaW1lbnNpb25zLmhlaWdodCApIHx8IDAsXG5cdFx0XHRcdHdpZHRoOiAoIGVsZW1lbnQud2lkdGgoKSAtIHRoaXMub3V0ZXJEaW1lbnNpb25zLndpZHRoICkgfHwgMFxuXHRcdFx0fSApO1xuXG5cdFx0fVxuXG5cdH0sXG5cblx0X3JlbmRlclByb3h5OiBmdW5jdGlvbigpIHtcblxuXHRcdHZhciBlbCA9IHRoaXMuZWxlbWVudCwgbyA9IHRoaXMub3B0aW9ucztcblx0XHR0aGlzLmVsZW1lbnRPZmZzZXQgPSBlbC5vZmZzZXQoKTtcblxuXHRcdGlmICggdGhpcy5faGVscGVyICkge1xuXG5cdFx0XHR0aGlzLmhlbHBlciA9IHRoaXMuaGVscGVyIHx8ICQoIFwiPGRpdiBzdHlsZT0nb3ZlcmZsb3c6aGlkZGVuOyc+PC9kaXY+XCIgKTtcblxuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaGVscGVyLCB0aGlzLl9oZWxwZXIgKTtcblx0XHRcdHRoaXMuaGVscGVyLmNzcygge1xuXHRcdFx0XHR3aWR0aDogdGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxcblx0XHRcdFx0aGVpZ2h0OiB0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKSxcblx0XHRcdFx0cG9zaXRpb246IFwiYWJzb2x1dGVcIixcblx0XHRcdFx0bGVmdDogdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQgKyBcInB4XCIsXG5cdFx0XHRcdHRvcDogdGhpcy5lbGVtZW50T2Zmc2V0LnRvcCArIFwicHhcIixcblx0XHRcdFx0ekluZGV4OiArK28uekluZGV4IC8vVE9ETzogRG9uJ3QgbW9kaWZ5IG9wdGlvblxuXHRcdFx0fSApO1xuXG5cdFx0XHR0aGlzLmhlbHBlclxuXHRcdFx0XHQuYXBwZW5kVG8oIFwiYm9keVwiIClcblx0XHRcdFx0LmRpc2FibGVTZWxlY3Rpb24oKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmhlbHBlciA9IHRoaXMuZWxlbWVudDtcblx0XHR9XG5cblx0fSxcblxuXHRfY2hhbmdlOiB7XG5cdFx0ZTogZnVuY3Rpb24oIGV2ZW50LCBkeCApIHtcblx0XHRcdHJldHVybiB7IHdpZHRoOiB0aGlzLm9yaWdpbmFsU2l6ZS53aWR0aCArIGR4IH07XG5cdFx0fSxcblx0XHR3OiBmdW5jdGlvbiggZXZlbnQsIGR4ICkge1xuXHRcdFx0dmFyIGNzID0gdGhpcy5vcmlnaW5hbFNpemUsIHNwID0gdGhpcy5vcmlnaW5hbFBvc2l0aW9uO1xuXHRcdFx0cmV0dXJuIHsgbGVmdDogc3AubGVmdCArIGR4LCB3aWR0aDogY3Mud2lkdGggLSBkeCB9O1xuXHRcdH0sXG5cdFx0bjogZnVuY3Rpb24oIGV2ZW50LCBkeCwgZHkgKSB7XG5cdFx0XHR2YXIgY3MgPSB0aGlzLm9yaWdpbmFsU2l6ZSwgc3AgPSB0aGlzLm9yaWdpbmFsUG9zaXRpb247XG5cdFx0XHRyZXR1cm4geyB0b3A6IHNwLnRvcCArIGR5LCBoZWlnaHQ6IGNzLmhlaWdodCAtIGR5IH07XG5cdFx0fSxcblx0XHRzOiBmdW5jdGlvbiggZXZlbnQsIGR4LCBkeSApIHtcblx0XHRcdHJldHVybiB7IGhlaWdodDogdGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0ICsgZHkgfTtcblx0XHR9LFxuXHRcdHNlOiBmdW5jdGlvbiggZXZlbnQsIGR4LCBkeSApIHtcblx0XHRcdHJldHVybiAkLmV4dGVuZCggdGhpcy5fY2hhbmdlLnMuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApLFxuXHRcdFx0XHR0aGlzLl9jaGFuZ2UuZS5hcHBseSggdGhpcywgWyBldmVudCwgZHgsIGR5IF0gKSApO1xuXHRcdH0sXG5cdFx0c3c6IGZ1bmN0aW9uKCBldmVudCwgZHgsIGR5ICkge1xuXHRcdFx0cmV0dXJuICQuZXh0ZW5kKCB0aGlzLl9jaGFuZ2Uucy5hcHBseSggdGhpcywgYXJndW1lbnRzICksXG5cdFx0XHRcdHRoaXMuX2NoYW5nZS53LmFwcGx5KCB0aGlzLCBbIGV2ZW50LCBkeCwgZHkgXSApICk7XG5cdFx0fSxcblx0XHRuZTogZnVuY3Rpb24oIGV2ZW50LCBkeCwgZHkgKSB7XG5cdFx0XHRyZXR1cm4gJC5leHRlbmQoIHRoaXMuX2NoYW5nZS5uLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSxcblx0XHRcdFx0dGhpcy5fY2hhbmdlLmUuYXBwbHkoIHRoaXMsIFsgZXZlbnQsIGR4LCBkeSBdICkgKTtcblx0XHR9LFxuXHRcdG53OiBmdW5jdGlvbiggZXZlbnQsIGR4LCBkeSApIHtcblx0XHRcdHJldHVybiAkLmV4dGVuZCggdGhpcy5fY2hhbmdlLm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApLFxuXHRcdFx0XHR0aGlzLl9jaGFuZ2Uudy5hcHBseSggdGhpcywgWyBldmVudCwgZHgsIGR5IF0gKSApO1xuXHRcdH1cblx0fSxcblxuXHRfcHJvcGFnYXRlOiBmdW5jdGlvbiggbiwgZXZlbnQgKSB7XG5cdFx0JC51aS5wbHVnaW4uY2FsbCggdGhpcywgbiwgWyBldmVudCwgdGhpcy51aSgpIF0gKTtcblx0XHQoIG4gIT09IFwicmVzaXplXCIgJiYgdGhpcy5fdHJpZ2dlciggbiwgZXZlbnQsIHRoaXMudWkoKSApICk7XG5cdH0sXG5cblx0cGx1Z2luczoge30sXG5cblx0dWk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRvcmlnaW5hbEVsZW1lbnQ6IHRoaXMub3JpZ2luYWxFbGVtZW50LFxuXHRcdFx0ZWxlbWVudDogdGhpcy5lbGVtZW50LFxuXHRcdFx0aGVscGVyOiB0aGlzLmhlbHBlcixcblx0XHRcdHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuXHRcdFx0c2l6ZTogdGhpcy5zaXplLFxuXHRcdFx0b3JpZ2luYWxTaXplOiB0aGlzLm9yaWdpbmFsU2l6ZSxcblx0XHRcdG9yaWdpbmFsUG9zaXRpb246IHRoaXMub3JpZ2luYWxQb3NpdGlvblxuXHRcdH07XG5cdH1cblxufSApO1xuXG4vKlxuICogUmVzaXphYmxlIEV4dGVuc2lvbnNcbiAqL1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwicmVzaXphYmxlXCIsIFwiYW5pbWF0ZVwiLCB7XG5cblx0c3RvcDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciB0aGF0ID0gJCggdGhpcyApLnJlc2l6YWJsZSggXCJpbnN0YW5jZVwiICksXG5cdFx0XHRvID0gdGhhdC5vcHRpb25zLFxuXHRcdFx0cHIgPSB0aGF0Ll9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLFxuXHRcdFx0aXN0YSA9IHByLmxlbmd0aCAmJiAoIC90ZXh0YXJlYS9pICkudGVzdCggcHJbIDAgXS5ub2RlTmFtZSApLFxuXHRcdFx0c29mZnNldGggPSBpc3RhICYmIHRoYXQuX2hhc1Njcm9sbCggcHJbIDAgXSwgXCJsZWZ0XCIgKSA/IDAgOiB0aGF0LnNpemVEaWZmLmhlaWdodCxcblx0XHRcdHNvZmZzZXR3ID0gaXN0YSA/IDAgOiB0aGF0LnNpemVEaWZmLndpZHRoLFxuXHRcdFx0c3R5bGUgPSB7XG5cdFx0XHRcdHdpZHRoOiAoIHRoYXQuc2l6ZS53aWR0aCAtIHNvZmZzZXR3ICksXG5cdFx0XHRcdGhlaWdodDogKCB0aGF0LnNpemUuaGVpZ2h0IC0gc29mZnNldGggKVxuXHRcdFx0fSxcblx0XHRcdGxlZnQgPSAoIHBhcnNlRmxvYXQoIHRoYXQuZWxlbWVudC5jc3MoIFwibGVmdFwiICkgKSArXG5cdFx0XHRcdCggdGhhdC5wb3NpdGlvbi5sZWZ0IC0gdGhhdC5vcmlnaW5hbFBvc2l0aW9uLmxlZnQgKSApIHx8IG51bGwsXG5cdFx0XHR0b3AgPSAoIHBhcnNlRmxvYXQoIHRoYXQuZWxlbWVudC5jc3MoIFwidG9wXCIgKSApICtcblx0XHRcdFx0KCB0aGF0LnBvc2l0aW9uLnRvcCAtIHRoYXQub3JpZ2luYWxQb3NpdGlvbi50b3AgKSApIHx8IG51bGw7XG5cblx0XHR0aGF0LmVsZW1lbnQuYW5pbWF0ZShcblx0XHRcdCQuZXh0ZW5kKCBzdHlsZSwgdG9wICYmIGxlZnQgPyB7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH0gOiB7fSApLCB7XG5cdFx0XHRcdGR1cmF0aW9uOiBvLmFuaW1hdGVEdXJhdGlvbixcblx0XHRcdFx0ZWFzaW5nOiBvLmFuaW1hdGVFYXNpbmcsXG5cdFx0XHRcdHN0ZXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0dmFyIGRhdGEgPSB7XG5cdFx0XHRcdFx0XHR3aWR0aDogcGFyc2VGbG9hdCggdGhhdC5lbGVtZW50LmNzcyggXCJ3aWR0aFwiICkgKSxcblx0XHRcdFx0XHRcdGhlaWdodDogcGFyc2VGbG9hdCggdGhhdC5lbGVtZW50LmNzcyggXCJoZWlnaHRcIiApICksXG5cdFx0XHRcdFx0XHR0b3A6IHBhcnNlRmxvYXQoIHRoYXQuZWxlbWVudC5jc3MoIFwidG9wXCIgKSApLFxuXHRcdFx0XHRcdFx0bGVmdDogcGFyc2VGbG9hdCggdGhhdC5lbGVtZW50LmNzcyggXCJsZWZ0XCIgKSApXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdGlmICggcHIgJiYgcHIubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0JCggcHJbIDAgXSApLmNzcyggeyB3aWR0aDogZGF0YS53aWR0aCwgaGVpZ2h0OiBkYXRhLmhlaWdodCB9ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJvcGFnYXRpbmcgcmVzaXplLCBhbmQgdXBkYXRpbmcgdmFsdWVzIGZvciBlYWNoIGFuaW1hdGlvbiBzdGVwXG5cdFx0XHRcdFx0dGhhdC5fdXBkYXRlQ2FjaGUoIGRhdGEgKTtcblx0XHRcdFx0XHR0aGF0Ll9wcm9wYWdhdGUoIFwicmVzaXplXCIsIGV2ZW50ICk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblxufSApO1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwicmVzaXphYmxlXCIsIFwiY29udGFpbm1lbnRcIiwge1xuXG5cdHN0YXJ0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbWVudCwgcCwgY28sIGNoLCBjdywgd2lkdGgsIGhlaWdodCxcblx0XHRcdHRoYXQgPSAkKCB0aGlzICkucmVzaXphYmxlKCBcImluc3RhbmNlXCIgKSxcblx0XHRcdG8gPSB0aGF0Lm9wdGlvbnMsXG5cdFx0XHRlbCA9IHRoYXQuZWxlbWVudCxcblx0XHRcdG9jID0gby5jb250YWlubWVudCxcblx0XHRcdGNlID0gKCBvYyBpbnN0YW5jZW9mICQgKSA/XG5cdFx0XHRcdG9jLmdldCggMCApIDpcblx0XHRcdFx0KCAvcGFyZW50Ly50ZXN0KCBvYyApICkgPyBlbC5wYXJlbnQoKS5nZXQoIDAgKSA6IG9jO1xuXG5cdFx0aWYgKCAhY2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhhdC5jb250YWluZXJFbGVtZW50ID0gJCggY2UgKTtcblxuXHRcdGlmICggL2RvY3VtZW50Ly50ZXN0KCBvYyApIHx8IG9jID09PSBkb2N1bWVudCApIHtcblx0XHRcdHRoYXQuY29udGFpbmVyT2Zmc2V0ID0ge1xuXHRcdFx0XHRsZWZ0OiAwLFxuXHRcdFx0XHR0b3A6IDBcblx0XHRcdH07XG5cdFx0XHR0aGF0LmNvbnRhaW5lclBvc2l0aW9uID0ge1xuXHRcdFx0XHRsZWZ0OiAwLFxuXHRcdFx0XHR0b3A6IDBcblx0XHRcdH07XG5cblx0XHRcdHRoYXQucGFyZW50RGF0YSA9IHtcblx0XHRcdFx0ZWxlbWVudDogJCggZG9jdW1lbnQgKSxcblx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHR3aWR0aDogJCggZG9jdW1lbnQgKS53aWR0aCgpLFxuXHRcdFx0XHRoZWlnaHQ6ICQoIGRvY3VtZW50ICkuaGVpZ2h0KCkgfHwgZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbWVudCA9ICQoIGNlICk7XG5cdFx0XHRwID0gW107XG5cdFx0XHQkKCBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJMZWZ0XCIsIFwiQm90dG9tXCIgXSApLmVhY2goIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHRcdFx0XHRwWyBpIF0gPSB0aGF0Ll9udW0oIGVsZW1lbnQuY3NzKCBcInBhZGRpbmdcIiArIG5hbWUgKSApO1xuXHRcdFx0fSApO1xuXG5cdFx0XHR0aGF0LmNvbnRhaW5lck9mZnNldCA9IGVsZW1lbnQub2Zmc2V0KCk7XG5cdFx0XHR0aGF0LmNvbnRhaW5lclBvc2l0aW9uID0gZWxlbWVudC5wb3NpdGlvbigpO1xuXHRcdFx0dGhhdC5jb250YWluZXJTaXplID0ge1xuXHRcdFx0XHRoZWlnaHQ6ICggZWxlbWVudC5pbm5lckhlaWdodCgpIC0gcFsgMyBdICksXG5cdFx0XHRcdHdpZHRoOiAoIGVsZW1lbnQuaW5uZXJXaWR0aCgpIC0gcFsgMSBdIClcblx0XHRcdH07XG5cblx0XHRcdGNvID0gdGhhdC5jb250YWluZXJPZmZzZXQ7XG5cdFx0XHRjaCA9IHRoYXQuY29udGFpbmVyU2l6ZS5oZWlnaHQ7XG5cdFx0XHRjdyA9IHRoYXQuY29udGFpbmVyU2l6ZS53aWR0aDtcblx0XHRcdHdpZHRoID0gKCB0aGF0Ll9oYXNTY3JvbGwgKCBjZSwgXCJsZWZ0XCIgKSA/IGNlLnNjcm9sbFdpZHRoIDogY3cgKTtcblx0XHRcdGhlaWdodCA9ICggdGhhdC5faGFzU2Nyb2xsICggY2UgKSA/IGNlLnNjcm9sbEhlaWdodCA6IGNoICkgO1xuXG5cdFx0XHR0aGF0LnBhcmVudERhdGEgPSB7XG5cdFx0XHRcdGVsZW1lbnQ6IGNlLFxuXHRcdFx0XHRsZWZ0OiBjby5sZWZ0LFxuXHRcdFx0XHR0b3A6IGNvLnRvcCxcblx0XHRcdFx0d2lkdGg6IHdpZHRoLFxuXHRcdFx0XHRoZWlnaHQ6IGhlaWdodFxuXHRcdFx0fTtcblx0XHR9XG5cdH0sXG5cblx0cmVzaXplOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHdvc2V0LCBob3NldCwgaXNQYXJlbnQsIGlzT2Zmc2V0UmVsYXRpdmUsXG5cdFx0XHR0aGF0ID0gJCggdGhpcyApLnJlc2l6YWJsZSggXCJpbnN0YW5jZVwiICksXG5cdFx0XHRvID0gdGhhdC5vcHRpb25zLFxuXHRcdFx0Y28gPSB0aGF0LmNvbnRhaW5lck9mZnNldCxcblx0XHRcdGNwID0gdGhhdC5wb3NpdGlvbixcblx0XHRcdHBSYXRpbyA9IHRoYXQuX2FzcGVjdFJhdGlvIHx8IGV2ZW50LnNoaWZ0S2V5LFxuXHRcdFx0Y29wID0ge1xuXHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdGxlZnQ6IDBcblx0XHRcdH0sXG5cdFx0XHRjZSA9IHRoYXQuY29udGFpbmVyRWxlbWVudCxcblx0XHRcdGNvbnRpbnVlUmVzaXplID0gdHJ1ZTtcblxuXHRcdGlmICggY2VbIDAgXSAhPT0gZG9jdW1lbnQgJiYgKCAvc3RhdGljLyApLnRlc3QoIGNlLmNzcyggXCJwb3NpdGlvblwiICkgKSApIHtcblx0XHRcdGNvcCA9IGNvO1xuXHRcdH1cblxuXHRcdGlmICggY3AubGVmdCA8ICggdGhhdC5faGVscGVyID8gY28ubGVmdCA6IDAgKSApIHtcblx0XHRcdHRoYXQuc2l6ZS53aWR0aCA9IHRoYXQuc2l6ZS53aWR0aCArXG5cdFx0XHRcdCggdGhhdC5faGVscGVyID9cblx0XHRcdFx0XHQoIHRoYXQucG9zaXRpb24ubGVmdCAtIGNvLmxlZnQgKSA6XG5cdFx0XHRcdFx0KCB0aGF0LnBvc2l0aW9uLmxlZnQgLSBjb3AubGVmdCApICk7XG5cblx0XHRcdGlmICggcFJhdGlvICkge1xuXHRcdFx0XHR0aGF0LnNpemUuaGVpZ2h0ID0gdGhhdC5zaXplLndpZHRoIC8gdGhhdC5hc3BlY3RSYXRpbztcblx0XHRcdFx0Y29udGludWVSZXNpemUgPSBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHRoYXQucG9zaXRpb24ubGVmdCA9IG8uaGVscGVyID8gY28ubGVmdCA6IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBjcC50b3AgPCAoIHRoYXQuX2hlbHBlciA/IGNvLnRvcCA6IDAgKSApIHtcblx0XHRcdHRoYXQuc2l6ZS5oZWlnaHQgPSB0aGF0LnNpemUuaGVpZ2h0ICtcblx0XHRcdFx0KCB0aGF0Ll9oZWxwZXIgP1xuXHRcdFx0XHRcdCggdGhhdC5wb3NpdGlvbi50b3AgLSBjby50b3AgKSA6XG5cdFx0XHRcdFx0dGhhdC5wb3NpdGlvbi50b3AgKTtcblxuXHRcdFx0aWYgKCBwUmF0aW8gKSB7XG5cdFx0XHRcdHRoYXQuc2l6ZS53aWR0aCA9IHRoYXQuc2l6ZS5oZWlnaHQgKiB0aGF0LmFzcGVjdFJhdGlvO1xuXHRcdFx0XHRjb250aW51ZVJlc2l6ZSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dGhhdC5wb3NpdGlvbi50b3AgPSB0aGF0Ll9oZWxwZXIgPyBjby50b3AgOiAwO1xuXHRcdH1cblxuXHRcdGlzUGFyZW50ID0gdGhhdC5jb250YWluZXJFbGVtZW50LmdldCggMCApID09PSB0aGF0LmVsZW1lbnQucGFyZW50KCkuZ2V0KCAwICk7XG5cdFx0aXNPZmZzZXRSZWxhdGl2ZSA9IC9yZWxhdGl2ZXxhYnNvbHV0ZS8udGVzdCggdGhhdC5jb250YWluZXJFbGVtZW50LmNzcyggXCJwb3NpdGlvblwiICkgKTtcblxuXHRcdGlmICggaXNQYXJlbnQgJiYgaXNPZmZzZXRSZWxhdGl2ZSApIHtcblx0XHRcdHRoYXQub2Zmc2V0LmxlZnQgPSB0aGF0LnBhcmVudERhdGEubGVmdCArIHRoYXQucG9zaXRpb24ubGVmdDtcblx0XHRcdHRoYXQub2Zmc2V0LnRvcCA9IHRoYXQucGFyZW50RGF0YS50b3AgKyB0aGF0LnBvc2l0aW9uLnRvcDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhhdC5vZmZzZXQubGVmdCA9IHRoYXQuZWxlbWVudC5vZmZzZXQoKS5sZWZ0O1xuXHRcdFx0dGhhdC5vZmZzZXQudG9wID0gdGhhdC5lbGVtZW50Lm9mZnNldCgpLnRvcDtcblx0XHR9XG5cblx0XHR3b3NldCA9IE1hdGguYWJzKCB0aGF0LnNpemVEaWZmLndpZHRoICtcblx0XHRcdCggdGhhdC5faGVscGVyID9cblx0XHRcdFx0dGhhdC5vZmZzZXQubGVmdCAtIGNvcC5sZWZ0IDpcblx0XHRcdFx0KCB0aGF0Lm9mZnNldC5sZWZ0IC0gY28ubGVmdCApICkgKTtcblxuXHRcdGhvc2V0ID0gTWF0aC5hYnMoIHRoYXQuc2l6ZURpZmYuaGVpZ2h0ICtcblx0XHRcdCggdGhhdC5faGVscGVyID9cblx0XHRcdFx0dGhhdC5vZmZzZXQudG9wIC0gY29wLnRvcCA6XG5cdFx0XHRcdCggdGhhdC5vZmZzZXQudG9wIC0gY28udG9wICkgKSApO1xuXG5cdFx0aWYgKCB3b3NldCArIHRoYXQuc2l6ZS53aWR0aCA+PSB0aGF0LnBhcmVudERhdGEud2lkdGggKSB7XG5cdFx0XHR0aGF0LnNpemUud2lkdGggPSB0aGF0LnBhcmVudERhdGEud2lkdGggLSB3b3NldDtcblx0XHRcdGlmICggcFJhdGlvICkge1xuXHRcdFx0XHR0aGF0LnNpemUuaGVpZ2h0ID0gdGhhdC5zaXplLndpZHRoIC8gdGhhdC5hc3BlY3RSYXRpbztcblx0XHRcdFx0Y29udGludWVSZXNpemUgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGhvc2V0ICsgdGhhdC5zaXplLmhlaWdodCA+PSB0aGF0LnBhcmVudERhdGEuaGVpZ2h0ICkge1xuXHRcdFx0dGhhdC5zaXplLmhlaWdodCA9IHRoYXQucGFyZW50RGF0YS5oZWlnaHQgLSBob3NldDtcblx0XHRcdGlmICggcFJhdGlvICkge1xuXHRcdFx0XHR0aGF0LnNpemUud2lkdGggPSB0aGF0LnNpemUuaGVpZ2h0ICogdGhhdC5hc3BlY3RSYXRpbztcblx0XHRcdFx0Y29udGludWVSZXNpemUgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFjb250aW51ZVJlc2l6ZSApIHtcblx0XHRcdHRoYXQucG9zaXRpb24ubGVmdCA9IHRoYXQucHJldlBvc2l0aW9uLmxlZnQ7XG5cdFx0XHR0aGF0LnBvc2l0aW9uLnRvcCA9IHRoYXQucHJldlBvc2l0aW9uLnRvcDtcblx0XHRcdHRoYXQuc2l6ZS53aWR0aCA9IHRoYXQucHJldlNpemUud2lkdGg7XG5cdFx0XHR0aGF0LnNpemUuaGVpZ2h0ID0gdGhhdC5wcmV2U2l6ZS5oZWlnaHQ7XG5cdFx0fVxuXHR9LFxuXG5cdHN0b3A6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0aGF0ID0gJCggdGhpcyApLnJlc2l6YWJsZSggXCJpbnN0YW5jZVwiICksXG5cdFx0XHRvID0gdGhhdC5vcHRpb25zLFxuXHRcdFx0Y28gPSB0aGF0LmNvbnRhaW5lck9mZnNldCxcblx0XHRcdGNvcCA9IHRoYXQuY29udGFpbmVyUG9zaXRpb24sXG5cdFx0XHRjZSA9IHRoYXQuY29udGFpbmVyRWxlbWVudCxcblx0XHRcdGhlbHBlciA9ICQoIHRoYXQuaGVscGVyICksXG5cdFx0XHRobyA9IGhlbHBlci5vZmZzZXQoKSxcblx0XHRcdHcgPSBoZWxwZXIub3V0ZXJXaWR0aCgpIC0gdGhhdC5zaXplRGlmZi53aWR0aCxcblx0XHRcdGggPSBoZWxwZXIub3V0ZXJIZWlnaHQoKSAtIHRoYXQuc2l6ZURpZmYuaGVpZ2h0O1xuXG5cdFx0aWYgKCB0aGF0Ll9oZWxwZXIgJiYgIW8uYW5pbWF0ZSAmJiAoIC9yZWxhdGl2ZS8gKS50ZXN0KCBjZS5jc3MoIFwicG9zaXRpb25cIiApICkgKSB7XG5cdFx0XHQkKCB0aGlzICkuY3NzKCB7XG5cdFx0XHRcdGxlZnQ6IGhvLmxlZnQgLSBjb3AubGVmdCAtIGNvLmxlZnQsXG5cdFx0XHRcdHdpZHRoOiB3LFxuXHRcdFx0XHRoZWlnaHQ6IGhcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoYXQuX2hlbHBlciAmJiAhby5hbmltYXRlICYmICggL3N0YXRpYy8gKS50ZXN0KCBjZS5jc3MoIFwicG9zaXRpb25cIiApICkgKSB7XG5cdFx0XHQkKCB0aGlzICkuY3NzKCB7XG5cdFx0XHRcdGxlZnQ6IGhvLmxlZnQgLSBjb3AubGVmdCAtIGNvLmxlZnQsXG5cdFx0XHRcdHdpZHRoOiB3LFxuXHRcdFx0XHRoZWlnaHQ6IGhcblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cbn0gKTtcblxuJC51aS5wbHVnaW4uYWRkKCBcInJlc2l6YWJsZVwiLCBcImFsc29SZXNpemVcIiwge1xuXG5cdHN0YXJ0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9ICQoIHRoaXMgKS5yZXNpemFibGUoIFwiaW5zdGFuY2VcIiApLFxuXHRcdFx0byA9IHRoYXQub3B0aW9ucztcblxuXHRcdCQoIG8uYWxzb1Jlc2l6ZSApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsID0gJCggdGhpcyApO1xuXHRcdFx0ZWwuZGF0YSggXCJ1aS1yZXNpemFibGUtYWxzb3Jlc2l6ZVwiLCB7XG5cdFx0XHRcdHdpZHRoOiBwYXJzZUZsb2F0KCBlbC53aWR0aCgpICksIGhlaWdodDogcGFyc2VGbG9hdCggZWwuaGVpZ2h0KCkgKSxcblx0XHRcdFx0bGVmdDogcGFyc2VGbG9hdCggZWwuY3NzKCBcImxlZnRcIiApICksIHRvcDogcGFyc2VGbG9hdCggZWwuY3NzKCBcInRvcFwiICkgKVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRyZXNpemU6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7XG5cdFx0dmFyIHRoYXQgPSAkKCB0aGlzICkucmVzaXphYmxlKCBcImluc3RhbmNlXCIgKSxcblx0XHRcdG8gPSB0aGF0Lm9wdGlvbnMsXG5cdFx0XHRvcyA9IHRoYXQub3JpZ2luYWxTaXplLFxuXHRcdFx0b3AgPSB0aGF0Lm9yaWdpbmFsUG9zaXRpb24sXG5cdFx0XHRkZWx0YSA9IHtcblx0XHRcdFx0aGVpZ2h0OiAoIHRoYXQuc2l6ZS5oZWlnaHQgLSBvcy5oZWlnaHQgKSB8fCAwLFxuXHRcdFx0XHR3aWR0aDogKCB0aGF0LnNpemUud2lkdGggLSBvcy53aWR0aCApIHx8IDAsXG5cdFx0XHRcdHRvcDogKCB0aGF0LnBvc2l0aW9uLnRvcCAtIG9wLnRvcCApIHx8IDAsXG5cdFx0XHRcdGxlZnQ6ICggdGhhdC5wb3NpdGlvbi5sZWZ0IC0gb3AubGVmdCApIHx8IDBcblx0XHRcdH07XG5cblx0XHRcdCQoIG8uYWxzb1Jlc2l6ZSApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWwgPSAkKCB0aGlzICksIHN0YXJ0ID0gJCggdGhpcyApLmRhdGEoIFwidWktcmVzaXphYmxlLWFsc29yZXNpemVcIiApLCBzdHlsZSA9IHt9LFxuXHRcdFx0XHRcdGNzcyA9IGVsLnBhcmVudHMoIHVpLm9yaWdpbmFsRWxlbWVudFsgMCBdICkubGVuZ3RoID9cblx0XHRcdFx0XHRcdFx0WyBcIndpZHRoXCIsIFwiaGVpZ2h0XCIgXSA6XG5cdFx0XHRcdFx0XHRcdFsgXCJ3aWR0aFwiLCBcImhlaWdodFwiLCBcInRvcFwiLCBcImxlZnRcIiBdO1xuXG5cdFx0XHRcdCQuZWFjaCggY3NzLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0XHRcdFx0XHR2YXIgc3VtID0gKCBzdGFydFsgcHJvcCBdIHx8IDAgKSArICggZGVsdGFbIHByb3AgXSB8fCAwICk7XG5cdFx0XHRcdFx0aWYgKCBzdW0gJiYgc3VtID49IDAgKSB7XG5cdFx0XHRcdFx0XHRzdHlsZVsgcHJvcCBdID0gc3VtIHx8IG51bGw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0ZWwuY3NzKCBzdHlsZSApO1xuXHRcdFx0fSApO1xuXHR9LFxuXG5cdHN0b3A6IGZ1bmN0aW9uKCkge1xuXHRcdCQoIHRoaXMgKS5yZW1vdmVEYXRhKCBcInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplXCIgKTtcblx0fVxufSApO1xuXG4kLnVpLnBsdWdpbi5hZGQoIFwicmVzaXphYmxlXCIsIFwiZ2hvc3RcIiwge1xuXG5cdHN0YXJ0OiBmdW5jdGlvbigpIHtcblxuXHRcdHZhciB0aGF0ID0gJCggdGhpcyApLnJlc2l6YWJsZSggXCJpbnN0YW5jZVwiICksIGNzID0gdGhhdC5zaXplO1xuXG5cdFx0dGhhdC5naG9zdCA9IHRoYXQub3JpZ2luYWxFbGVtZW50LmNsb25lKCk7XG5cdFx0dGhhdC5naG9zdC5jc3MoIHtcblx0XHRcdG9wYWNpdHk6IDAuMjUsXG5cdFx0XHRkaXNwbGF5OiBcImJsb2NrXCIsXG5cdFx0XHRwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuXHRcdFx0aGVpZ2h0OiBjcy5oZWlnaHQsXG5cdFx0XHR3aWR0aDogY3Mud2lkdGgsXG5cdFx0XHRtYXJnaW46IDAsXG5cdFx0XHRsZWZ0OiAwLFxuXHRcdFx0dG9wOiAwXG5cdFx0fSApO1xuXG5cdFx0dGhhdC5fYWRkQ2xhc3MoIHRoYXQuZ2hvc3QsIFwidWktcmVzaXphYmxlLWdob3N0XCIgKTtcblxuXHRcdC8vIERFUFJFQ0FURURcblx0XHQvLyBUT0RPOiByZW1vdmUgYWZ0ZXIgMS4xMlxuXHRcdGlmICggJC51aUJhY2tDb21wYXQgIT09IGZhbHNlICYmIHR5cGVvZiB0aGF0Lm9wdGlvbnMuZ2hvc3QgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vIEdob3N0IG9wdGlvblxuXHRcdFx0dGhhdC5naG9zdC5hZGRDbGFzcyggdGhpcy5vcHRpb25zLmdob3N0ICk7XG5cdFx0fVxuXG5cdFx0dGhhdC5naG9zdC5hcHBlbmRUbyggdGhhdC5oZWxwZXIgKTtcblxuXHR9LFxuXG5cdHJlc2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSAkKCB0aGlzICkucmVzaXphYmxlKCBcImluc3RhbmNlXCIgKTtcblx0XHRpZiAoIHRoYXQuZ2hvc3QgKSB7XG5cdFx0XHR0aGF0Lmdob3N0LmNzcygge1xuXHRcdFx0XHRwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuXHRcdFx0XHRoZWlnaHQ6IHRoYXQuc2l6ZS5oZWlnaHQsXG5cdFx0XHRcdHdpZHRoOiB0aGF0LnNpemUud2lkdGhcblx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0c3RvcDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSAkKCB0aGlzICkucmVzaXphYmxlKCBcImluc3RhbmNlXCIgKTtcblx0XHRpZiAoIHRoYXQuZ2hvc3QgJiYgdGhhdC5oZWxwZXIgKSB7XG5cdFx0XHR0aGF0LmhlbHBlci5nZXQoIDAgKS5yZW1vdmVDaGlsZCggdGhhdC5naG9zdC5nZXQoIDAgKSApO1xuXHRcdH1cblx0fVxuXG59ICk7XG5cbiQudWkucGx1Z2luLmFkZCggXCJyZXNpemFibGVcIiwgXCJncmlkXCIsIHtcblxuXHRyZXNpemU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBvdXRlckRpbWVuc2lvbnMsXG5cdFx0XHR0aGF0ID0gJCggdGhpcyApLnJlc2l6YWJsZSggXCJpbnN0YW5jZVwiICksXG5cdFx0XHRvID0gdGhhdC5vcHRpb25zLFxuXHRcdFx0Y3MgPSB0aGF0LnNpemUsXG5cdFx0XHRvcyA9IHRoYXQub3JpZ2luYWxTaXplLFxuXHRcdFx0b3AgPSB0aGF0Lm9yaWdpbmFsUG9zaXRpb24sXG5cdFx0XHRhID0gdGhhdC5heGlzLFxuXHRcdFx0Z3JpZCA9IHR5cGVvZiBvLmdyaWQgPT09IFwibnVtYmVyXCIgPyBbIG8uZ3JpZCwgby5ncmlkIF0gOiBvLmdyaWQsXG5cdFx0XHRncmlkWCA9ICggZ3JpZFsgMCBdIHx8IDEgKSxcblx0XHRcdGdyaWRZID0gKCBncmlkWyAxIF0gfHwgMSApLFxuXHRcdFx0b3ggPSBNYXRoLnJvdW5kKCAoIGNzLndpZHRoIC0gb3Mud2lkdGggKSAvIGdyaWRYICkgKiBncmlkWCxcblx0XHRcdG95ID0gTWF0aC5yb3VuZCggKCBjcy5oZWlnaHQgLSBvcy5oZWlnaHQgKSAvIGdyaWRZICkgKiBncmlkWSxcblx0XHRcdG5ld1dpZHRoID0gb3Mud2lkdGggKyBveCxcblx0XHRcdG5ld0hlaWdodCA9IG9zLmhlaWdodCArIG95LFxuXHRcdFx0aXNNYXhXaWR0aCA9IG8ubWF4V2lkdGggJiYgKCBvLm1heFdpZHRoIDwgbmV3V2lkdGggKSxcblx0XHRcdGlzTWF4SGVpZ2h0ID0gby5tYXhIZWlnaHQgJiYgKCBvLm1heEhlaWdodCA8IG5ld0hlaWdodCApLFxuXHRcdFx0aXNNaW5XaWR0aCA9IG8ubWluV2lkdGggJiYgKCBvLm1pbldpZHRoID4gbmV3V2lkdGggKSxcblx0XHRcdGlzTWluSGVpZ2h0ID0gby5taW5IZWlnaHQgJiYgKCBvLm1pbkhlaWdodCA+IG5ld0hlaWdodCApO1xuXG5cdFx0by5ncmlkID0gZ3JpZDtcblxuXHRcdGlmICggaXNNaW5XaWR0aCApIHtcblx0XHRcdG5ld1dpZHRoICs9IGdyaWRYO1xuXHRcdH1cblx0XHRpZiAoIGlzTWluSGVpZ2h0ICkge1xuXHRcdFx0bmV3SGVpZ2h0ICs9IGdyaWRZO1xuXHRcdH1cblx0XHRpZiAoIGlzTWF4V2lkdGggKSB7XG5cdFx0XHRuZXdXaWR0aCAtPSBncmlkWDtcblx0XHR9XG5cdFx0aWYgKCBpc01heEhlaWdodCApIHtcblx0XHRcdG5ld0hlaWdodCAtPSBncmlkWTtcblx0XHR9XG5cblx0XHRpZiAoIC9eKHNlfHN8ZSkkLy50ZXN0KCBhICkgKSB7XG5cdFx0XHR0aGF0LnNpemUud2lkdGggPSBuZXdXaWR0aDtcblx0XHRcdHRoYXQuc2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7XG5cdFx0fSBlbHNlIGlmICggL14obmUpJC8udGVzdCggYSApICkge1xuXHRcdFx0dGhhdC5zaXplLndpZHRoID0gbmV3V2lkdGg7XG5cdFx0XHR0aGF0LnNpemUuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xuXHRcdFx0dGhhdC5wb3NpdGlvbi50b3AgPSBvcC50b3AgLSBveTtcblx0XHR9IGVsc2UgaWYgKCAvXihzdykkLy50ZXN0KCBhICkgKSB7XG5cdFx0XHR0aGF0LnNpemUud2lkdGggPSBuZXdXaWR0aDtcblx0XHRcdHRoYXQuc2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7XG5cdFx0XHR0aGF0LnBvc2l0aW9uLmxlZnQgPSBvcC5sZWZ0IC0gb3g7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggbmV3SGVpZ2h0IC0gZ3JpZFkgPD0gMCB8fCBuZXdXaWR0aCAtIGdyaWRYIDw9IDAgKSB7XG5cdFx0XHRcdG91dGVyRGltZW5zaW9ucyA9IHRoYXQuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyggdGhpcyApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG5ld0hlaWdodCAtIGdyaWRZID4gMCApIHtcblx0XHRcdFx0dGhhdC5zaXplLmhlaWdodCA9IG5ld0hlaWdodDtcblx0XHRcdFx0dGhhdC5wb3NpdGlvbi50b3AgPSBvcC50b3AgLSBveTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5ld0hlaWdodCA9IGdyaWRZIC0gb3V0ZXJEaW1lbnNpb25zLmhlaWdodDtcblx0XHRcdFx0dGhhdC5zaXplLmhlaWdodCA9IG5ld0hlaWdodDtcblx0XHRcdFx0dGhhdC5wb3NpdGlvbi50b3AgPSBvcC50b3AgKyBvcy5oZWlnaHQgLSBuZXdIZWlnaHQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG5ld1dpZHRoIC0gZ3JpZFggPiAwICkge1xuXHRcdFx0XHR0aGF0LnNpemUud2lkdGggPSBuZXdXaWR0aDtcblx0XHRcdFx0dGhhdC5wb3NpdGlvbi5sZWZ0ID0gb3AubGVmdCAtIG94O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3V2lkdGggPSBncmlkWCAtIG91dGVyRGltZW5zaW9ucy53aWR0aDtcblx0XHRcdFx0dGhhdC5zaXplLndpZHRoID0gbmV3V2lkdGg7XG5cdFx0XHRcdHRoYXQucG9zaXRpb24ubGVmdCA9IG9wLmxlZnQgKyBvcy53aWR0aCAtIG5ld1dpZHRoO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG59ICk7XG5cbnZhciB3aWRnZXRzUmVzaXphYmxlID0gJC51aS5yZXNpemFibGU7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgRGlhbG9nIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBEaWFsb2dcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBEaXNwbGF5cyBjdXN0b21pemFibGUgZGlhbG9nIHdpbmRvd3MuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vZGlhbG9nL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL2RpYWxvZy9cbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9jb3JlLmNzc1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2RpYWxvZy5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxuJC53aWRnZXQoIFwidWkuZGlhbG9nXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGFwcGVuZFRvOiBcImJvZHlcIixcblx0XHRhdXRvT3BlbjogdHJ1ZSxcblx0XHRidXR0b25zOiBbXSxcblx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcInVpLWRpYWxvZ1wiOiBcInVpLWNvcm5lci1hbGxcIixcblx0XHRcdFwidWktZGlhbG9nLXRpdGxlYmFyXCI6IFwidWktY29ybmVyLWFsbFwiXG5cdFx0fSxcblx0XHRjbG9zZU9uRXNjYXBlOiB0cnVlLFxuXHRcdGNsb3NlVGV4dDogXCJDbG9zZVwiLFxuXHRcdGRyYWdnYWJsZTogdHJ1ZSxcblx0XHRoaWRlOiBudWxsLFxuXHRcdGhlaWdodDogXCJhdXRvXCIsXG5cdFx0bWF4SGVpZ2h0OiBudWxsLFxuXHRcdG1heFdpZHRoOiBudWxsLFxuXHRcdG1pbkhlaWdodDogMTUwLFxuXHRcdG1pbldpZHRoOiAxNTAsXG5cdFx0bW9kYWw6IGZhbHNlLFxuXHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRteTogXCJjZW50ZXJcIixcblx0XHRcdGF0OiBcImNlbnRlclwiLFxuXHRcdFx0b2Y6IHdpbmRvdyxcblx0XHRcdGNvbGxpc2lvbjogXCJmaXRcIixcblxuXHRcdFx0Ly8gRW5zdXJlIHRoZSB0aXRsZWJhciBpcyBhbHdheXMgdmlzaWJsZVxuXHRcdFx0dXNpbmc6IGZ1bmN0aW9uKCBwb3MgKSB7XG5cdFx0XHRcdHZhciB0b3BPZmZzZXQgPSAkKCB0aGlzICkuY3NzKCBwb3MgKS5vZmZzZXQoKS50b3A7XG5cdFx0XHRcdGlmICggdG9wT2Zmc2V0IDwgMCApIHtcblx0XHRcdFx0XHQkKCB0aGlzICkuY3NzKCBcInRvcFwiLCBwb3MudG9wIC0gdG9wT2Zmc2V0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlc2l6YWJsZTogdHJ1ZSxcblx0XHRzaG93OiBudWxsLFxuXHRcdHRpdGxlOiBudWxsLFxuXHRcdHdpZHRoOiAzMDAsXG5cblx0XHQvLyBDYWxsYmFja3Ncblx0XHRiZWZvcmVDbG9zZTogbnVsbCxcblx0XHRjbG9zZTogbnVsbCxcblx0XHRkcmFnOiBudWxsLFxuXHRcdGRyYWdTdGFydDogbnVsbCxcblx0XHRkcmFnU3RvcDogbnVsbCxcblx0XHRmb2N1czogbnVsbCxcblx0XHRvcGVuOiBudWxsLFxuXHRcdHJlc2l6ZTogbnVsbCxcblx0XHRyZXNpemVTdGFydDogbnVsbCxcblx0XHRyZXNpemVTdG9wOiBudWxsXG5cdH0sXG5cblx0c2l6ZVJlbGF0ZWRPcHRpb25zOiB7XG5cdFx0YnV0dG9uczogdHJ1ZSxcblx0XHRoZWlnaHQ6IHRydWUsXG5cdFx0bWF4SGVpZ2h0OiB0cnVlLFxuXHRcdG1heFdpZHRoOiB0cnVlLFxuXHRcdG1pbkhlaWdodDogdHJ1ZSxcblx0XHRtaW5XaWR0aDogdHJ1ZSxcblx0XHR3aWR0aDogdHJ1ZVxuXHR9LFxuXG5cdHJlc2l6YWJsZVJlbGF0ZWRPcHRpb25zOiB7XG5cdFx0bWF4SGVpZ2h0OiB0cnVlLFxuXHRcdG1heFdpZHRoOiB0cnVlLFxuXHRcdG1pbkhlaWdodDogdHJ1ZSxcblx0XHRtaW5XaWR0aDogdHJ1ZVxuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMub3JpZ2luYWxDc3MgPSB7XG5cdFx0XHRkaXNwbGF5OiB0aGlzLmVsZW1lbnRbIDAgXS5zdHlsZS5kaXNwbGF5LFxuXHRcdFx0d2lkdGg6IHRoaXMuZWxlbWVudFsgMCBdLnN0eWxlLndpZHRoLFxuXHRcdFx0bWluSGVpZ2h0OiB0aGlzLmVsZW1lbnRbIDAgXS5zdHlsZS5taW5IZWlnaHQsXG5cdFx0XHRtYXhIZWlnaHQ6IHRoaXMuZWxlbWVudFsgMCBdLnN0eWxlLm1heEhlaWdodCxcblx0XHRcdGhlaWdodDogdGhpcy5lbGVtZW50WyAwIF0uc3R5bGUuaGVpZ2h0XG5cdFx0fTtcblx0XHR0aGlzLm9yaWdpbmFsUG9zaXRpb24gPSB7XG5cdFx0XHRwYXJlbnQ6IHRoaXMuZWxlbWVudC5wYXJlbnQoKSxcblx0XHRcdGluZGV4OiB0aGlzLmVsZW1lbnQucGFyZW50KCkuY2hpbGRyZW4oKS5pbmRleCggdGhpcy5lbGVtZW50IClcblx0XHR9O1xuXHRcdHRoaXMub3JpZ2luYWxUaXRsZSA9IHRoaXMuZWxlbWVudC5hdHRyKCBcInRpdGxlXCIgKTtcblx0XHRpZiAoIHRoaXMub3B0aW9ucy50aXRsZSA9PSBudWxsICYmIHRoaXMub3JpZ2luYWxUaXRsZSAhPSBudWxsICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnRpdGxlID0gdGhpcy5vcmlnaW5hbFRpdGxlO1xuXHRcdH1cblxuXHRcdC8vIERpYWxvZ3MgY2FuJ3QgYmUgZGlzYWJsZWRcblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kaXNhYmxlZCApIHtcblx0XHRcdHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdHRoaXMuX2NyZWF0ZVdyYXBwZXIoKTtcblxuXHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0LnNob3coKVxuXHRcdFx0LnJlbW92ZUF0dHIoIFwidGl0bGVcIiApXG5cdFx0XHQuYXBwZW5kVG8oIHRoaXMudWlEaWFsb2cgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCBcInVpLWRpYWxvZy1jb250ZW50XCIsIFwidWktd2lkZ2V0LWNvbnRlbnRcIiApO1xuXG5cdFx0dGhpcy5fY3JlYXRlVGl0bGViYXIoKTtcblx0XHR0aGlzLl9jcmVhdGVCdXR0b25QYW5lKCk7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kcmFnZ2FibGUgJiYgJC5mbi5kcmFnZ2FibGUgKSB7XG5cdFx0XHR0aGlzLl9tYWtlRHJhZ2dhYmxlKCk7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5vcHRpb25zLnJlc2l6YWJsZSAmJiAkLmZuLnJlc2l6YWJsZSApIHtcblx0XHRcdHRoaXMuX21ha2VSZXNpemFibGUoKTtcblx0XHR9XG5cblx0XHR0aGlzLl9pc09wZW4gPSBmYWxzZTtcblxuXHRcdHRoaXMuX3RyYWNrRm9jdXMoKTtcblx0fSxcblxuXHRfaW5pdDogZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuYXV0b09wZW4gKSB7XG5cdFx0XHR0aGlzLm9wZW4oKTtcblx0XHR9XG5cdH0sXG5cblx0X2FwcGVuZFRvOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbWVudCA9IHRoaXMub3B0aW9ucy5hcHBlbmRUbztcblx0XHRpZiAoIGVsZW1lbnQgJiYgKCBlbGVtZW50LmpxdWVyeSB8fCBlbGVtZW50Lm5vZGVUeXBlICkgKSB7XG5cdFx0XHRyZXR1cm4gJCggZWxlbWVudCApO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kb2N1bWVudC5maW5kKCBlbGVtZW50IHx8IFwiYm9keVwiICkuZXEoIDAgKTtcblx0fSxcblxuXHRfZGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5leHQsXG5cdFx0XHRvcmlnaW5hbFBvc2l0aW9uID0gdGhpcy5vcmlnaW5hbFBvc2l0aW9uO1xuXG5cdFx0dGhpcy5fdW50cmFja0luc3RhbmNlKCk7XG5cdFx0dGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcblxuXHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0LnJlbW92ZVVuaXF1ZUlkKClcblx0XHRcdC5jc3MoIHRoaXMub3JpZ2luYWxDc3MgKVxuXG5cdFx0XHQvLyBXaXRob3V0IGRldGFjaGluZyBmaXJzdCwgdGhlIGZvbGxvd2luZyBiZWNvbWVzIHJlYWxseSBzbG93XG5cdFx0XHQuZGV0YWNoKCk7XG5cblx0XHR0aGlzLnVpRGlhbG9nLnJlbW92ZSgpO1xuXG5cdFx0aWYgKCB0aGlzLm9yaWdpbmFsVGl0bGUgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnQuYXR0ciggXCJ0aXRsZVwiLCB0aGlzLm9yaWdpbmFsVGl0bGUgKTtcblx0XHR9XG5cblx0XHRuZXh0ID0gb3JpZ2luYWxQb3NpdGlvbi5wYXJlbnQuY2hpbGRyZW4oKS5lcSggb3JpZ2luYWxQb3NpdGlvbi5pbmRleCApO1xuXG5cdFx0Ly8gRG9uJ3QgdHJ5IHRvIHBsYWNlIHRoZSBkaWFsb2cgbmV4dCB0byBpdHNlbGYgKCM4NjEzKVxuXHRcdGlmICggbmV4dC5sZW5ndGggJiYgbmV4dFsgMCBdICE9PSB0aGlzLmVsZW1lbnRbIDAgXSApIHtcblx0XHRcdG5leHQuYmVmb3JlKCB0aGlzLmVsZW1lbnQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3JpZ2luYWxQb3NpdGlvbi5wYXJlbnQuYXBwZW5kKCB0aGlzLmVsZW1lbnQgKTtcblx0XHR9XG5cdH0sXG5cblx0d2lkZ2V0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy51aURpYWxvZztcblx0fSxcblxuXHRkaXNhYmxlOiAkLm5vb3AsXG5cdGVuYWJsZTogJC5ub29wLFxuXG5cdGNsb3NlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXG5cdFx0aWYgKCAhdGhpcy5faXNPcGVuIHx8IHRoaXMuX3RyaWdnZXIoIFwiYmVmb3JlQ2xvc2VcIiwgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5faXNPcGVuID0gZmFsc2U7XG5cdFx0dGhpcy5fZm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuXHRcdHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG5cdFx0dGhpcy5fdW50cmFja0luc3RhbmNlKCk7XG5cblx0XHRpZiAoICF0aGlzLm9wZW5lci5maWx0ZXIoIFwiOmZvY3VzYWJsZVwiICkudHJpZ2dlciggXCJmb2N1c1wiICkubGVuZ3RoICkge1xuXG5cdFx0XHQvLyBIaWRpbmcgYSBmb2N1c2VkIGVsZW1lbnQgZG9lc24ndCB0cmlnZ2VyIGJsdXIgaW4gV2ViS2l0XG5cdFx0XHQvLyBzbyBpbiBjYXNlIHdlIGhhdmUgbm90aGluZyB0byBmb2N1cyBvbiwgZXhwbGljaXRseSBibHVyIHRoZSBhY3RpdmUgZWxlbWVudFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTgyXG5cdFx0XHQkLnVpLnNhZmVCbHVyKCAkLnVpLnNhZmVBY3RpdmVFbGVtZW50KCB0aGlzLmRvY3VtZW50WyAwIF0gKSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX2hpZGUoIHRoaXMudWlEaWFsb2csIHRoaXMub3B0aW9ucy5oaWRlLCBmdW5jdGlvbigpIHtcblx0XHRcdHRoYXQuX3RyaWdnZXIoIFwiY2xvc2VcIiwgZXZlbnQgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0aXNPcGVuOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5faXNPcGVuO1xuXHR9LFxuXG5cdG1vdmVUb1RvcDogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fbW92ZVRvVG9wKCk7XG5cdH0sXG5cblx0X21vdmVUb1RvcDogZnVuY3Rpb24oIGV2ZW50LCBzaWxlbnQgKSB7XG5cdFx0dmFyIG1vdmVkID0gZmFsc2UsXG5cdFx0XHR6SW5kaWNlcyA9IHRoaXMudWlEaWFsb2cuc2libGluZ3MoIFwiLnVpLWZyb250OnZpc2libGVcIiApLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiArJCggdGhpcyApLmNzcyggXCJ6LWluZGV4XCIgKTtcblx0XHRcdH0gKS5nZXQoKSxcblx0XHRcdHpJbmRleE1heCA9IE1hdGgubWF4LmFwcGx5KCBudWxsLCB6SW5kaWNlcyApO1xuXG5cdFx0aWYgKCB6SW5kZXhNYXggPj0gK3RoaXMudWlEaWFsb2cuY3NzKCBcInotaW5kZXhcIiApICkge1xuXHRcdFx0dGhpcy51aURpYWxvZy5jc3MoIFwiei1pbmRleFwiLCB6SW5kZXhNYXggKyAxICk7XG5cdFx0XHRtb3ZlZCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBtb3ZlZCAmJiAhc2lsZW50ICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJmb2N1c1wiLCBldmVudCApO1xuXHRcdH1cblx0XHRyZXR1cm4gbW92ZWQ7XG5cdH0sXG5cblx0b3BlbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXHRcdGlmICggdGhpcy5faXNPcGVuICkge1xuXHRcdFx0aWYgKCB0aGlzLl9tb3ZlVG9Ub3AoKSApIHtcblx0XHRcdFx0dGhpcy5fZm9jdXNUYWJiYWJsZSgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuX2lzT3BlbiA9IHRydWU7XG5cdFx0dGhpcy5vcGVuZXIgPSAkKCAkLnVpLnNhZmVBY3RpdmVFbGVtZW50KCB0aGlzLmRvY3VtZW50WyAwIF0gKSApO1xuXG5cdFx0dGhpcy5fc2l6ZSgpO1xuXHRcdHRoaXMuX3Bvc2l0aW9uKCk7XG5cdFx0dGhpcy5fY3JlYXRlT3ZlcmxheSgpO1xuXHRcdHRoaXMuX21vdmVUb1RvcCggbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly8gRW5zdXJlIHRoZSBvdmVybGF5IGlzIG1vdmVkIHRvIHRoZSB0b3Agd2l0aCB0aGUgZGlhbG9nLCBidXQgb25seSB3aGVuXG5cdFx0Ly8gb3BlbmluZy4gVGhlIG92ZXJsYXkgc2hvdWxkbid0IG1vdmUgYWZ0ZXIgdGhlIGRpYWxvZyBpcyBvcGVuIHNvIHRoYXRcblx0XHQvLyBtb2RlbGVzcyBkaWFsb2dzIG9wZW5lZCBhZnRlciB0aGUgbW9kYWwgZGlhbG9nIHN0YWNrIHByb3Blcmx5LlxuXHRcdGlmICggdGhpcy5vdmVybGF5ICkge1xuXHRcdFx0dGhpcy5vdmVybGF5LmNzcyggXCJ6LWluZGV4XCIsIHRoaXMudWlEaWFsb2cuY3NzKCBcInotaW5kZXhcIiApIC0gMSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX3Nob3coIHRoaXMudWlEaWFsb2csIHRoaXMub3B0aW9ucy5zaG93LCBmdW5jdGlvbigpIHtcblx0XHRcdHRoYXQuX2ZvY3VzVGFiYmFibGUoKTtcblx0XHRcdHRoYXQuX3RyaWdnZXIoIFwiZm9jdXNcIiApO1xuXHRcdH0gKTtcblxuXHRcdC8vIFRyYWNrIHRoZSBkaWFsb2cgaW1tZWRpYXRlbHkgdXBvbiBvcGVuZW5pbmcgaW4gY2FzZSBhIGZvY3VzIGV2ZW50XG5cdFx0Ly8gc29tZWhvdyBvY2N1cnMgb3V0c2lkZSBvZiB0aGUgZGlhbG9nIGJlZm9yZSBhbiBlbGVtZW50IGluc2lkZSB0aGVcblx0XHQvLyBkaWFsb2cgaXMgZm9jdXNlZCAoIzEwMTUyKVxuXHRcdHRoaXMuX21ha2VGb2N1c1RhcmdldCgpO1xuXG5cdFx0dGhpcy5fdHJpZ2dlciggXCJvcGVuXCIgKTtcblx0fSxcblxuXHRfZm9jdXNUYWJiYWJsZTogZnVuY3Rpb24oKSB7XG5cblx0XHQvLyBTZXQgZm9jdXMgdG8gdGhlIGZpcnN0IG1hdGNoOlxuXHRcdC8vIDEuIEFuIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBwcmV2aW91c2x5XG5cdFx0Ly8gMi4gRmlyc3QgZWxlbWVudCBpbnNpZGUgdGhlIGRpYWxvZyBtYXRjaGluZyBbYXV0b2ZvY3VzXVxuXHRcdC8vIDMuIFRhYmJhYmxlIGVsZW1lbnQgaW5zaWRlIHRoZSBjb250ZW50IGVsZW1lbnRcblx0XHQvLyA0LiBUYWJiYWJsZSBlbGVtZW50IGluc2lkZSB0aGUgYnV0dG9ucGFuZVxuXHRcdC8vIDUuIFRoZSBjbG9zZSBidXR0b25cblx0XHQvLyA2LiBUaGUgZGlhbG9nIGl0c2VsZlxuXHRcdHZhciBoYXNGb2N1cyA9IHRoaXMuX2ZvY3VzZWRFbGVtZW50O1xuXHRcdGlmICggIWhhc0ZvY3VzICkge1xuXHRcdFx0aGFzRm9jdXMgPSB0aGlzLmVsZW1lbnQuZmluZCggXCJbYXV0b2ZvY3VzXVwiICk7XG5cdFx0fVxuXHRcdGlmICggIWhhc0ZvY3VzLmxlbmd0aCApIHtcblx0XHRcdGhhc0ZvY3VzID0gdGhpcy5lbGVtZW50LmZpbmQoIFwiOnRhYmJhYmxlXCIgKTtcblx0XHR9XG5cdFx0aWYgKCAhaGFzRm9jdXMubGVuZ3RoICkge1xuXHRcdFx0aGFzRm9jdXMgPSB0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5maW5kKCBcIjp0YWJiYWJsZVwiICk7XG5cdFx0fVxuXHRcdGlmICggIWhhc0ZvY3VzLmxlbmd0aCApIHtcblx0XHRcdGhhc0ZvY3VzID0gdGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2UuZmlsdGVyKCBcIjp0YWJiYWJsZVwiICk7XG5cdFx0fVxuXHRcdGlmICggIWhhc0ZvY3VzLmxlbmd0aCApIHtcblx0XHRcdGhhc0ZvY3VzID0gdGhpcy51aURpYWxvZztcblx0XHR9XG5cdFx0aGFzRm9jdXMuZXEoIDAgKS50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblx0fSxcblxuXHRfa2VlcEZvY3VzOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0ZnVuY3Rpb24gY2hlY2tGb2N1cygpIHtcblx0XHRcdHZhciBhY3RpdmVFbGVtZW50ID0gJC51aS5zYWZlQWN0aXZlRWxlbWVudCggdGhpcy5kb2N1bWVudFsgMCBdICksXG5cdFx0XHRcdGlzQWN0aXZlID0gdGhpcy51aURpYWxvZ1sgMCBdID09PSBhY3RpdmVFbGVtZW50IHx8XG5cdFx0XHRcdFx0JC5jb250YWlucyggdGhpcy51aURpYWxvZ1sgMCBdLCBhY3RpdmVFbGVtZW50ICk7XG5cdFx0XHRpZiAoICFpc0FjdGl2ZSApIHtcblx0XHRcdFx0dGhpcy5fZm9jdXNUYWJiYWJsZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGNoZWNrRm9jdXMuY2FsbCggdGhpcyApO1xuXG5cdFx0Ly8gc3VwcG9ydDogSUVcblx0XHQvLyBJRSA8PSA4IGRvZXNuJ3QgcHJldmVudCBtb3ZpbmcgZm9jdXMgZXZlbiB3aXRoIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblx0XHQvLyBzbyB3ZSBjaGVjayBhZ2FpbiBsYXRlclxuXHRcdHRoaXMuX2RlbGF5KCBjaGVja0ZvY3VzICk7XG5cdH0sXG5cblx0X2NyZWF0ZVdyYXBwZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMudWlEaWFsb2cgPSAkKCBcIjxkaXY+XCIgKVxuXHRcdFx0LmhpZGUoKVxuXHRcdFx0LmF0dHIoIHtcblxuXHRcdFx0XHQvLyBTZXR0aW5nIHRhYkluZGV4IG1ha2VzIHRoZSBkaXYgZm9jdXNhYmxlXG5cdFx0XHRcdHRhYkluZGV4OiAtMSxcblx0XHRcdFx0cm9sZTogXCJkaWFsb2dcIlxuXHRcdFx0fSApXG5cdFx0XHQuYXBwZW5kVG8oIHRoaXMuX2FwcGVuZFRvKCkgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnVpRGlhbG9nLCBcInVpLWRpYWxvZ1wiLCBcInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1mcm9udFwiICk7XG5cdFx0dGhpcy5fb24oIHRoaXMudWlEaWFsb2csIHtcblx0XHRcdGtleWRvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0aWYgKCB0aGlzLm9wdGlvbnMuY2xvc2VPbkVzY2FwZSAmJiAhZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgZXZlbnQua2V5Q29kZSAmJlxuXHRcdFx0XHRcdFx0ZXZlbnQua2V5Q29kZSA9PT0gJC51aS5rZXlDb2RlLkVTQ0FQRSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuY2xvc2UoIGV2ZW50ICk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUHJldmVudCB0YWJiaW5nIG91dCBvZiBkaWFsb2dzXG5cdFx0XHRcdGlmICggZXZlbnQua2V5Q29kZSAhPT0gJC51aS5rZXlDb2RlLlRBQiB8fCBldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIHRhYmJhYmxlcyA9IHRoaXMudWlEaWFsb2cuZmluZCggXCI6dGFiYmFibGVcIiApLFxuXHRcdFx0XHRcdGZpcnN0ID0gdGFiYmFibGVzLmZpbHRlciggXCI6Zmlyc3RcIiApLFxuXHRcdFx0XHRcdGxhc3QgPSB0YWJiYWJsZXMuZmlsdGVyKCBcIjpsYXN0XCIgKTtcblxuXHRcdFx0XHRpZiAoICggZXZlbnQudGFyZ2V0ID09PSBsYXN0WyAwIF0gfHwgZXZlbnQudGFyZ2V0ID09PSB0aGlzLnVpRGlhbG9nWyAwIF0gKSAmJlxuXHRcdFx0XHRcdFx0IWV2ZW50LnNoaWZ0S2V5ICkge1xuXHRcdFx0XHRcdHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGZpcnN0LnRyaWdnZXIoIFwiZm9jdXNcIiApO1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCAoIGV2ZW50LnRhcmdldCA9PT0gZmlyc3RbIDAgXSB8fFxuXHRcdFx0XHRcdFx0ZXZlbnQudGFyZ2V0ID09PSB0aGlzLnVpRGlhbG9nWyAwIF0gKSAmJiBldmVudC5zaGlmdEtleSApIHtcblx0XHRcdFx0XHR0aGlzLl9kZWxheSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRsYXN0LnRyaWdnZXIoIFwiZm9jdXNcIiApO1xuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0bW91c2Vkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGlmICggdGhpcy5fbW92ZVRvVG9wKCBldmVudCApICkge1xuXHRcdFx0XHRcdHRoaXMuX2ZvY3VzVGFiYmFibGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGFueSBleGlzdGluZyBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBtZWFuc1xuXHRcdC8vIHRoYXQgdGhlIGRpYWxvZyBjb250ZW50IGlzIG1hcmtlZCB1cCBwcm9wZXJseVxuXHRcdC8vIG90aGVyd2lzZSB3ZSBicnV0ZSBmb3JjZSB0aGUgY29udGVudCBhcyB0aGUgZGVzY3JpcHRpb25cblx0XHRpZiAoICF0aGlzLmVsZW1lbnQuZmluZCggXCJbYXJpYS1kZXNjcmliZWRieV1cIiApLmxlbmd0aCApIHtcblx0XHRcdHRoaXMudWlEaWFsb2cuYXR0cigge1xuXHRcdFx0XHRcImFyaWEtZGVzY3JpYmVkYnlcIjogdGhpcy5lbGVtZW50LnVuaXF1ZUlkKCkuYXR0ciggXCJpZFwiIClcblx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0X2NyZWF0ZVRpdGxlYmFyOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdWlEaWFsb2dUaXRsZTtcblxuXHRcdHRoaXMudWlEaWFsb2dUaXRsZWJhciA9ICQoIFwiPGRpdj5cIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnVpRGlhbG9nVGl0bGViYXIsXG5cdFx0XHRcInVpLWRpYWxvZy10aXRsZWJhclwiLCBcInVpLXdpZGdldC1oZWFkZXIgdWktaGVscGVyLWNsZWFyZml4XCIgKTtcblx0XHR0aGlzLl9vbiggdGhpcy51aURpYWxvZ1RpdGxlYmFyLCB7XG5cdFx0XHRtb3VzZWRvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0XHQvLyBEb24ndCBwcmV2ZW50IGNsaWNrIG9uIGNsb3NlIGJ1dHRvbiAoIzg4MzgpXG5cdFx0XHRcdC8vIEZvY3VzaW5nIGEgZGlhbG9nIHRoYXQgaXMgcGFydGlhbGx5IHNjcm9sbGVkIG91dCBvZiB2aWV3XG5cdFx0XHRcdC8vIGNhdXNlcyB0aGUgYnJvd3NlciB0byBzY3JvbGwgaXQgaW50byB2aWV3LCBwcmV2ZW50aW5nIHRoZSBjbGljayBldmVudFxuXHRcdFx0XHRpZiAoICEkKCBldmVudC50YXJnZXQgKS5jbG9zZXN0KCBcIi51aS1kaWFsb2ctdGl0bGViYXItY2xvc2VcIiApICkge1xuXG5cdFx0XHRcdFx0Ly8gRGlhbG9nIGlzbid0IGdldHRpbmcgZm9jdXMgd2hlbiBkcmFnZ2luZyAoIzgwNjMpXG5cdFx0XHRcdFx0dGhpcy51aURpYWxvZy50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0Ly8gVXNlIHR5cGU9XCJidXR0b25cIiB0byBwcmV2ZW50IGVudGVyIGtleXByZXNzZXMgaW4gdGV4dGJveGVzIGZyb20gY2xvc2luZyB0aGVcblx0XHQvLyBkaWFsb2cgaW4gSUUgKCM5MzEyKVxuXHRcdHRoaXMudWlEaWFsb2dUaXRsZWJhckNsb3NlID0gJCggXCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+PC9idXR0b24+XCIgKVxuXHRcdFx0LmJ1dHRvbigge1xuXHRcdFx0XHRsYWJlbDogJCggXCI8YT5cIiApLnRleHQoIHRoaXMub3B0aW9ucy5jbG9zZVRleHQgKS5odG1sKCksXG5cdFx0XHRcdGljb246IFwidWktaWNvbi1jbG9zZXRoaWNrXCIsXG5cdFx0XHRcdHNob3dMYWJlbDogZmFsc2Vcblx0XHRcdH0gKVxuXHRcdFx0LmFwcGVuZFRvKCB0aGlzLnVpRGlhbG9nVGl0bGViYXIgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZSwgXCJ1aS1kaWFsb2ctdGl0bGViYXItY2xvc2VcIiApO1xuXHRcdHRoaXMuX29uKCB0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZSwge1xuXHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0dGhpcy5jbG9zZSggZXZlbnQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHR1aURpYWxvZ1RpdGxlID0gJCggXCI8c3Bhbj5cIiApLnVuaXF1ZUlkKCkucHJlcGVuZFRvKCB0aGlzLnVpRGlhbG9nVGl0bGViYXIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggdWlEaWFsb2dUaXRsZSwgXCJ1aS1kaWFsb2ctdGl0bGVcIiApO1xuXHRcdHRoaXMuX3RpdGxlKCB1aURpYWxvZ1RpdGxlICk7XG5cblx0XHR0aGlzLnVpRGlhbG9nVGl0bGViYXIucHJlcGVuZFRvKCB0aGlzLnVpRGlhbG9nICk7XG5cblx0XHR0aGlzLnVpRGlhbG9nLmF0dHIoIHtcblx0XHRcdFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHVpRGlhbG9nVGl0bGUuYXR0ciggXCJpZFwiIClcblx0XHR9ICk7XG5cdH0sXG5cblx0X3RpdGxlOiBmdW5jdGlvbiggdGl0bGUgKSB7XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMudGl0bGUgKSB7XG5cdFx0XHR0aXRsZS50ZXh0KCB0aGlzLm9wdGlvbnMudGl0bGUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGl0bGUuaHRtbCggXCImIzE2MDtcIiApO1xuXHRcdH1cblx0fSxcblxuXHRfY3JlYXRlQnV0dG9uUGFuZTogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy51aURpYWxvZ0J1dHRvblBhbmUgPSAkKCBcIjxkaXY+XCIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy51aURpYWxvZ0J1dHRvblBhbmUsIFwidWktZGlhbG9nLWJ1dHRvbnBhbmVcIixcblx0XHRcdFwidWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4XCIgKTtcblxuXHRcdHRoaXMudWlCdXR0b25TZXQgPSAkKCBcIjxkaXY+XCIgKVxuXHRcdFx0LmFwcGVuZFRvKCB0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZSApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnVpQnV0dG9uU2V0LCBcInVpLWRpYWxvZy1idXR0b25zZXRcIiApO1xuXG5cdFx0dGhpcy5fY3JlYXRlQnV0dG9ucygpO1xuXHR9LFxuXG5cdF9jcmVhdGVCdXR0b25zOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRidXR0b25zID0gdGhpcy5vcHRpb25zLmJ1dHRvbnM7XG5cblx0XHQvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBidXR0b24gcGFuZSwgcmVtb3ZlIGl0XG5cdFx0dGhpcy51aURpYWxvZ0J1dHRvblBhbmUucmVtb3ZlKCk7XG5cdFx0dGhpcy51aUJ1dHRvblNldC5lbXB0eSgpO1xuXG5cdFx0aWYgKCAkLmlzRW1wdHlPYmplY3QoIGJ1dHRvbnMgKSB8fCAoICQuaXNBcnJheSggYnV0dG9ucyApICYmICFidXR0b25zLmxlbmd0aCApICkge1xuXHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHRoaXMudWlEaWFsb2csIFwidWktZGlhbG9nLWJ1dHRvbnNcIiApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdCQuZWFjaCggYnV0dG9ucywgZnVuY3Rpb24oIG5hbWUsIHByb3BzICkge1xuXHRcdFx0dmFyIGNsaWNrLCBidXR0b25PcHRpb25zO1xuXHRcdFx0cHJvcHMgPSAkLmlzRnVuY3Rpb24oIHByb3BzICkgP1xuXHRcdFx0XHR7IGNsaWNrOiBwcm9wcywgdGV4dDogbmFtZSB9IDpcblx0XHRcdFx0cHJvcHM7XG5cblx0XHRcdC8vIERlZmF1bHQgdG8gYSBub24tc3VibWl0dGluZyBidXR0b25cblx0XHRcdHByb3BzID0gJC5leHRlbmQoIHsgdHlwZTogXCJidXR0b25cIiB9LCBwcm9wcyApO1xuXG5cdFx0XHQvLyBDaGFuZ2UgdGhlIGNvbnRleHQgZm9yIHRoZSBjbGljayBjYWxsYmFjayB0byBiZSB0aGUgbWFpbiBlbGVtZW50XG5cdFx0XHRjbGljayA9IHByb3BzLmNsaWNrO1xuXHRcdFx0YnV0dG9uT3B0aW9ucyA9IHtcblx0XHRcdFx0aWNvbjogcHJvcHMuaWNvbixcblx0XHRcdFx0aWNvblBvc2l0aW9uOiBwcm9wcy5pY29uUG9zaXRpb24sXG5cdFx0XHRcdHNob3dMYWJlbDogcHJvcHMuc2hvd0xhYmVsLFxuXG5cdFx0XHRcdC8vIERlcHJlY2F0ZWQgb3B0aW9uc1xuXHRcdFx0XHRpY29uczogcHJvcHMuaWNvbnMsXG5cdFx0XHRcdHRleHQ6IHByb3BzLnRleHRcblx0XHRcdH07XG5cblx0XHRcdGRlbGV0ZSBwcm9wcy5jbGljaztcblx0XHRcdGRlbGV0ZSBwcm9wcy5pY29uO1xuXHRcdFx0ZGVsZXRlIHByb3BzLmljb25Qb3NpdGlvbjtcblx0XHRcdGRlbGV0ZSBwcm9wcy5zaG93TGFiZWw7XG5cblx0XHRcdC8vIERlcHJlY2F0ZWQgb3B0aW9uc1xuXHRcdFx0ZGVsZXRlIHByb3BzLmljb25zO1xuXHRcdFx0aWYgKCB0eXBlb2YgcHJvcHMudGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0XHRcdGRlbGV0ZSBwcm9wcy50ZXh0O1xuXHRcdFx0fVxuXG5cdFx0XHQkKCBcIjxidXR0b24+PC9idXR0b24+XCIsIHByb3BzIClcblx0XHRcdFx0LmJ1dHRvbiggYnV0dG9uT3B0aW9ucyApXG5cdFx0XHRcdC5hcHBlbmRUbyggdGhhdC51aUJ1dHRvblNldCApXG5cdFx0XHRcdC5vbiggXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRjbGljay5hcHBseSggdGhhdC5lbGVtZW50WyAwIF0sIGFyZ3VtZW50cyApO1xuXHRcdFx0XHR9ICk7XG5cdFx0fSApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnVpRGlhbG9nLCBcInVpLWRpYWxvZy1idXR0b25zXCIgKTtcblx0XHR0aGlzLnVpRGlhbG9nQnV0dG9uUGFuZS5hcHBlbmRUbyggdGhpcy51aURpYWxvZyApO1xuXHR9LFxuXG5cdF9tYWtlRHJhZ2dhYmxlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0ZnVuY3Rpb24gZmlsdGVyZWRVaSggdWkgKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwb3NpdGlvbjogdWkucG9zaXRpb24sXG5cdFx0XHRcdG9mZnNldDogdWkub2Zmc2V0XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHRoaXMudWlEaWFsb2cuZHJhZ2dhYmxlKCB7XG5cdFx0XHRjYW5jZWw6IFwiLnVpLWRpYWxvZy1jb250ZW50LCAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlXCIsXG5cdFx0XHRoYW5kbGU6IFwiLnVpLWRpYWxvZy10aXRsZWJhclwiLFxuXHRcdFx0Y29udGFpbm1lbnQ6IFwiZG9jdW1lbnRcIixcblx0XHRcdHN0YXJ0OiBmdW5jdGlvbiggZXZlbnQsIHVpICkge1xuXHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggJCggdGhpcyApLCBcInVpLWRpYWxvZy1kcmFnZ2luZ1wiICk7XG5cdFx0XHRcdHRoYXQuX2Jsb2NrRnJhbWVzKCk7XG5cdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwiZHJhZ1N0YXJ0XCIsIGV2ZW50LCBmaWx0ZXJlZFVpKCB1aSApICk7XG5cdFx0XHR9LFxuXHRcdFx0ZHJhZzogZnVuY3Rpb24oIGV2ZW50LCB1aSApIHtcblx0XHRcdFx0dGhhdC5fdHJpZ2dlciggXCJkcmFnXCIsIGV2ZW50LCBmaWx0ZXJlZFVpKCB1aSApICk7XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGV2ZW50LCB1aSApIHtcblx0XHRcdFx0dmFyIGxlZnQgPSB1aS5vZmZzZXQubGVmdCAtIHRoYXQuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLFxuXHRcdFx0XHRcdHRvcCA9IHVpLm9mZnNldC50b3AgLSB0aGF0LmRvY3VtZW50LnNjcm9sbFRvcCgpO1xuXG5cdFx0XHRcdG9wdGlvbnMucG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0bXk6IFwibGVmdCB0b3BcIixcblx0XHRcdFx0XHRhdDogXCJsZWZ0XCIgKyAoIGxlZnQgPj0gMCA/IFwiK1wiIDogXCJcIiApICsgbGVmdCArIFwiIFwiICtcblx0XHRcdFx0XHRcdFwidG9wXCIgKyAoIHRvcCA+PSAwID8gXCIrXCIgOiBcIlwiICkgKyB0b3AsXG5cdFx0XHRcdFx0b2Y6IHRoYXQud2luZG93XG5cdFx0XHRcdH07XG5cdFx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCAkKCB0aGlzICksIFwidWktZGlhbG9nLWRyYWdnaW5nXCIgKTtcblx0XHRcdFx0dGhhdC5fdW5ibG9ja0ZyYW1lcygpO1xuXHRcdFx0XHR0aGF0Ll90cmlnZ2VyKCBcImRyYWdTdG9wXCIsIGV2ZW50LCBmaWx0ZXJlZFVpKCB1aSApICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9tYWtlUmVzaXphYmxlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuXHRcdFx0aGFuZGxlcyA9IG9wdGlvbnMucmVzaXphYmxlLFxuXG5cdFx0XHQvLyAudWktcmVzaXphYmxlIGhhcyBwb3NpdGlvbjogcmVsYXRpdmUgZGVmaW5lZCBpbiB0aGUgc3R5bGVzaGVldFxuXHRcdFx0Ly8gYnV0IGRpYWxvZ3MgaGF2ZSB0byB1c2UgYWJzb2x1dGUgb3IgZml4ZWQgcG9zaXRpb25pbmdcblx0XHRcdHBvc2l0aW9uID0gdGhpcy51aURpYWxvZy5jc3MoIFwicG9zaXRpb25cIiApLFxuXHRcdFx0cmVzaXplSGFuZGxlcyA9IHR5cGVvZiBoYW5kbGVzID09PSBcInN0cmluZ1wiID9cblx0XHRcdFx0aGFuZGxlcyA6XG5cdFx0XHRcdFwibixlLHMsdyxzZSxzdyxuZSxud1wiO1xuXG5cdFx0ZnVuY3Rpb24gZmlsdGVyZWRVaSggdWkgKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRvcmlnaW5hbFBvc2l0aW9uOiB1aS5vcmlnaW5hbFBvc2l0aW9uLFxuXHRcdFx0XHRvcmlnaW5hbFNpemU6IHVpLm9yaWdpbmFsU2l6ZSxcblx0XHRcdFx0cG9zaXRpb246IHVpLnBvc2l0aW9uLFxuXHRcdFx0XHRzaXplOiB1aS5zaXplXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHRoaXMudWlEaWFsb2cucmVzaXphYmxlKCB7XG5cdFx0XHRjYW5jZWw6IFwiLnVpLWRpYWxvZy1jb250ZW50XCIsXG5cdFx0XHRjb250YWlubWVudDogXCJkb2N1bWVudFwiLFxuXHRcdFx0YWxzb1Jlc2l6ZTogdGhpcy5lbGVtZW50LFxuXHRcdFx0bWF4V2lkdGg6IG9wdGlvbnMubWF4V2lkdGgsXG5cdFx0XHRtYXhIZWlnaHQ6IG9wdGlvbnMubWF4SGVpZ2h0LFxuXHRcdFx0bWluV2lkdGg6IG9wdGlvbnMubWluV2lkdGgsXG5cdFx0XHRtaW5IZWlnaHQ6IHRoaXMuX21pbkhlaWdodCgpLFxuXHRcdFx0aGFuZGxlczogcmVzaXplSGFuZGxlcyxcblx0XHRcdHN0YXJ0OiBmdW5jdGlvbiggZXZlbnQsIHVpICkge1xuXHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggJCggdGhpcyApLCBcInVpLWRpYWxvZy1yZXNpemluZ1wiICk7XG5cdFx0XHRcdHRoYXQuX2Jsb2NrRnJhbWVzKCk7XG5cdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwicmVzaXplU3RhcnRcIiwgZXZlbnQsIGZpbHRlcmVkVWkoIHVpICkgKTtcblx0XHRcdH0sXG5cdFx0XHRyZXNpemU6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7XG5cdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwicmVzaXplXCIsIGV2ZW50LCBmaWx0ZXJlZFVpKCB1aSApICk7XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGV2ZW50LCB1aSApIHtcblx0XHRcdFx0dmFyIG9mZnNldCA9IHRoYXQudWlEaWFsb2cub2Zmc2V0KCksXG5cdFx0XHRcdFx0bGVmdCA9IG9mZnNldC5sZWZ0IC0gdGhhdC5kb2N1bWVudC5zY3JvbGxMZWZ0KCksXG5cdFx0XHRcdFx0dG9wID0gb2Zmc2V0LnRvcCAtIHRoYXQuZG9jdW1lbnQuc2Nyb2xsVG9wKCk7XG5cblx0XHRcdFx0b3B0aW9ucy5oZWlnaHQgPSB0aGF0LnVpRGlhbG9nLmhlaWdodCgpO1xuXHRcdFx0XHRvcHRpb25zLndpZHRoID0gdGhhdC51aURpYWxvZy53aWR0aCgpO1xuXHRcdFx0XHRvcHRpb25zLnBvc2l0aW9uID0ge1xuXHRcdFx0XHRcdG15OiBcImxlZnQgdG9wXCIsXG5cdFx0XHRcdFx0YXQ6IFwibGVmdFwiICsgKCBsZWZ0ID49IDAgPyBcIitcIiA6IFwiXCIgKSArIGxlZnQgKyBcIiBcIiArXG5cdFx0XHRcdFx0XHRcInRvcFwiICsgKCB0b3AgPj0gMCA/IFwiK1wiIDogXCJcIiApICsgdG9wLFxuXHRcdFx0XHRcdG9mOiB0aGF0LndpbmRvd1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggJCggdGhpcyApLCBcInVpLWRpYWxvZy1yZXNpemluZ1wiICk7XG5cdFx0XHRcdHRoYXQuX3VuYmxvY2tGcmFtZXMoKTtcblx0XHRcdFx0dGhhdC5fdHJpZ2dlciggXCJyZXNpemVTdG9wXCIsIGV2ZW50LCBmaWx0ZXJlZFVpKCB1aSApICk7XG5cdFx0XHR9XG5cdFx0fSApXG5cdFx0XHQuY3NzKCBcInBvc2l0aW9uXCIsIHBvc2l0aW9uICk7XG5cdH0sXG5cblx0X3RyYWNrRm9jdXM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX29uKCB0aGlzLndpZGdldCgpLCB7XG5cdFx0XHRmb2N1c2luOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdHRoaXMuX21ha2VGb2N1c1RhcmdldCgpO1xuXHRcdFx0XHR0aGlzLl9mb2N1c2VkRWxlbWVudCA9ICQoIGV2ZW50LnRhcmdldCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfbWFrZUZvY3VzVGFyZ2V0OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl91bnRyYWNrSW5zdGFuY2UoKTtcblx0XHR0aGlzLl90cmFja2luZ0luc3RhbmNlcygpLnVuc2hpZnQoIHRoaXMgKTtcblx0fSxcblxuXHRfdW50cmFja0luc3RhbmNlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaW5zdGFuY2VzID0gdGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKSxcblx0XHRcdGV4aXN0cyA9ICQuaW5BcnJheSggdGhpcywgaW5zdGFuY2VzICk7XG5cdFx0aWYgKCBleGlzdHMgIT09IC0xICkge1xuXHRcdFx0aW5zdGFuY2VzLnNwbGljZSggZXhpc3RzLCAxICk7XG5cdFx0fVxuXHR9LFxuXG5cdF90cmFja2luZ0luc3RhbmNlczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGluc3RhbmNlcyA9IHRoaXMuZG9jdW1lbnQuZGF0YSggXCJ1aS1kaWFsb2ctaW5zdGFuY2VzXCIgKTtcblx0XHRpZiAoICFpbnN0YW5jZXMgKSB7XG5cdFx0XHRpbnN0YW5jZXMgPSBbXTtcblx0XHRcdHRoaXMuZG9jdW1lbnQuZGF0YSggXCJ1aS1kaWFsb2ctaW5zdGFuY2VzXCIsIGluc3RhbmNlcyApO1xuXHRcdH1cblx0XHRyZXR1cm4gaW5zdGFuY2VzO1xuXHR9LFxuXG5cdF9taW5IZWlnaHQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0cmV0dXJuIG9wdGlvbnMuaGVpZ2h0ID09PSBcImF1dG9cIiA/XG5cdFx0XHRvcHRpb25zLm1pbkhlaWdodCA6XG5cdFx0XHRNYXRoLm1pbiggb3B0aW9ucy5taW5IZWlnaHQsIG9wdGlvbnMuaGVpZ2h0ICk7XG5cdH0sXG5cblx0X3Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuXHRcdC8vIE5lZWQgdG8gc2hvdyB0aGUgZGlhbG9nIHRvIGdldCB0aGUgYWN0dWFsIG9mZnNldCBpbiB0aGUgcG9zaXRpb24gcGx1Z2luXG5cdFx0dmFyIGlzVmlzaWJsZSA9IHRoaXMudWlEaWFsb2cuaXMoIFwiOnZpc2libGVcIiApO1xuXHRcdGlmICggIWlzVmlzaWJsZSApIHtcblx0XHRcdHRoaXMudWlEaWFsb2cuc2hvdygpO1xuXHRcdH1cblx0XHR0aGlzLnVpRGlhbG9nLnBvc2l0aW9uKCB0aGlzLm9wdGlvbnMucG9zaXRpb24gKTtcblx0XHRpZiAoICFpc1Zpc2libGUgKSB7XG5cdFx0XHR0aGlzLnVpRGlhbG9nLmhpZGUoKTtcblx0XHR9XG5cdH0sXG5cblx0X3NldE9wdGlvbnM6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdHJlc2l6ZSA9IGZhbHNlLFxuXHRcdFx0cmVzaXphYmxlT3B0aW9ucyA9IHt9O1xuXG5cdFx0JC5lYWNoKCBvcHRpb25zLCBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHRcdHRoYXQuX3NldE9wdGlvbigga2V5LCB2YWx1ZSApO1xuXG5cdFx0XHRpZiAoIGtleSBpbiB0aGF0LnNpemVSZWxhdGVkT3B0aW9ucyApIHtcblx0XHRcdFx0cmVzaXplID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmICgga2V5IGluIHRoYXQucmVzaXphYmxlUmVsYXRlZE9wdGlvbnMgKSB7XG5cdFx0XHRcdHJlc2l6YWJsZU9wdGlvbnNbIGtleSBdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0aWYgKCByZXNpemUgKSB7XG5cdFx0XHR0aGlzLl9zaXplKCk7XG5cdFx0XHR0aGlzLl9wb3NpdGlvbigpO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMudWlEaWFsb2cuaXMoIFwiOmRhdGEodWktcmVzaXphYmxlKVwiICkgKSB7XG5cdFx0XHR0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSggXCJvcHRpb25cIiwgcmVzaXphYmxlT3B0aW9ucyApO1xuXHRcdH1cblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgaXNEcmFnZ2FibGUsIGlzUmVzaXphYmxlLFxuXHRcdFx0dWlEaWFsb2cgPSB0aGlzLnVpRGlhbG9nO1xuXG5cdFx0aWYgKCBrZXkgPT09IFwiZGlzYWJsZWRcIiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBrZXkgPT09IFwiYXBwZW5kVG9cIiApIHtcblx0XHRcdHRoaXMudWlEaWFsb2cuYXBwZW5kVG8oIHRoaXMuX2FwcGVuZFRvKCkgKTtcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJidXR0b25zXCIgKSB7XG5cdFx0XHR0aGlzLl9jcmVhdGVCdXR0b25zKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwiY2xvc2VUZXh0XCIgKSB7XG5cdFx0XHR0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oIHtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhhdCB3ZSBhbHdheXMgcGFzcyBhIHN0cmluZ1xuXHRcdFx0XHRsYWJlbDogJCggXCI8YT5cIiApLnRleHQoIFwiXCIgKyB0aGlzLm9wdGlvbnMuY2xvc2VUZXh0ICkuaHRtbCgpXG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwiZHJhZ2dhYmxlXCIgKSB7XG5cdFx0XHRpc0RyYWdnYWJsZSA9IHVpRGlhbG9nLmlzKCBcIjpkYXRhKHVpLWRyYWdnYWJsZSlcIiApO1xuXHRcdFx0aWYgKCBpc0RyYWdnYWJsZSAmJiAhdmFsdWUgKSB7XG5cdFx0XHRcdHVpRGlhbG9nLmRyYWdnYWJsZSggXCJkZXN0cm95XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCAhaXNEcmFnZ2FibGUgJiYgdmFsdWUgKSB7XG5cdFx0XHRcdHRoaXMuX21ha2VEcmFnZ2FibGUoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJwb3NpdGlvblwiICkge1xuXHRcdFx0dGhpcy5fcG9zaXRpb24oKTtcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJyZXNpemFibGVcIiApIHtcblxuXHRcdFx0Ly8gY3VycmVudGx5IHJlc2l6YWJsZSwgYmVjb21pbmcgbm9uLXJlc2l6YWJsZVxuXHRcdFx0aXNSZXNpemFibGUgPSB1aURpYWxvZy5pcyggXCI6ZGF0YSh1aS1yZXNpemFibGUpXCIgKTtcblx0XHRcdGlmICggaXNSZXNpemFibGUgJiYgIXZhbHVlICkge1xuXHRcdFx0XHR1aURpYWxvZy5yZXNpemFibGUoIFwiZGVzdHJveVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEN1cnJlbnRseSByZXNpemFibGUsIGNoYW5naW5nIGhhbmRsZXNcblx0XHRcdGlmICggaXNSZXNpemFibGUgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0XHR1aURpYWxvZy5yZXNpemFibGUoIFwib3B0aW9uXCIsIFwiaGFuZGxlc1wiLCB2YWx1ZSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDdXJyZW50bHkgbm9uLXJlc2l6YWJsZSwgYmVjb21pbmcgcmVzaXphYmxlXG5cdFx0XHRpZiAoICFpc1Jlc2l6YWJsZSAmJiB2YWx1ZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHRcdHRoaXMuX21ha2VSZXNpemFibGUoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJ0aXRsZVwiICkge1xuXHRcdFx0dGhpcy5fdGl0bGUoIHRoaXMudWlEaWFsb2dUaXRsZWJhci5maW5kKCBcIi51aS1kaWFsb2ctdGl0bGVcIiApICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zaXplOiBmdW5jdGlvbigpIHtcblxuXHRcdC8vIElmIHRoZSB1c2VyIGhhcyByZXNpemVkIHRoZSBkaWFsb2csIHRoZSAudWktZGlhbG9nIGFuZCAudWktZGlhbG9nLWNvbnRlbnRcblx0XHQvLyBkaXZzIHdpbGwgYm90aCBoYXZlIHdpZHRoIGFuZCBoZWlnaHQgc2V0LCBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZW1cblx0XHR2YXIgbm9uQ29udGVudEhlaWdodCwgbWluQ29udGVudEhlaWdodCwgbWF4Q29udGVudEhlaWdodCxcblx0XHRcdG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cblx0XHQvLyBSZXNldCBjb250ZW50IHNpemluZ1xuXHRcdHRoaXMuZWxlbWVudC5zaG93KCkuY3NzKCB7XG5cdFx0XHR3aWR0aDogXCJhdXRvXCIsXG5cdFx0XHRtaW5IZWlnaHQ6IDAsXG5cdFx0XHRtYXhIZWlnaHQ6IFwibm9uZVwiLFxuXHRcdFx0aGVpZ2h0OiAwXG5cdFx0fSApO1xuXG5cdFx0aWYgKCBvcHRpb25zLm1pbldpZHRoID4gb3B0aW9ucy53aWR0aCApIHtcblx0XHRcdG9wdGlvbnMud2lkdGggPSBvcHRpb25zLm1pbldpZHRoO1xuXHRcdH1cblxuXHRcdC8vIFJlc2V0IHdyYXBwZXIgc2l6aW5nXG5cdFx0Ly8gZGV0ZXJtaW5lIHRoZSBoZWlnaHQgb2YgYWxsIHRoZSBub24tY29udGVudCBlbGVtZW50c1xuXHRcdG5vbkNvbnRlbnRIZWlnaHQgPSB0aGlzLnVpRGlhbG9nLmNzcygge1xuXHRcdFx0aGVpZ2h0OiBcImF1dG9cIixcblx0XHRcdHdpZHRoOiBvcHRpb25zLndpZHRoXG5cdFx0fSApXG5cdFx0XHQub3V0ZXJIZWlnaHQoKTtcblx0XHRtaW5Db250ZW50SGVpZ2h0ID0gTWF0aC5tYXgoIDAsIG9wdGlvbnMubWluSGVpZ2h0IC0gbm9uQ29udGVudEhlaWdodCApO1xuXHRcdG1heENvbnRlbnRIZWlnaHQgPSB0eXBlb2Ygb3B0aW9ucy5tYXhIZWlnaHQgPT09IFwibnVtYmVyXCIgP1xuXHRcdFx0TWF0aC5tYXgoIDAsIG9wdGlvbnMubWF4SGVpZ2h0IC0gbm9uQ29udGVudEhlaWdodCApIDpcblx0XHRcdFwibm9uZVwiO1xuXG5cdFx0aWYgKCBvcHRpb25zLmhlaWdodCA9PT0gXCJhdXRvXCIgKSB7XG5cdFx0XHR0aGlzLmVsZW1lbnQuY3NzKCB7XG5cdFx0XHRcdG1pbkhlaWdodDogbWluQ29udGVudEhlaWdodCxcblx0XHRcdFx0bWF4SGVpZ2h0OiBtYXhDb250ZW50SGVpZ2h0LFxuXHRcdFx0XHRoZWlnaHQ6IFwiYXV0b1wiXG5cdFx0XHR9ICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWxlbWVudC5oZWlnaHQoIE1hdGgubWF4KCAwLCBvcHRpb25zLmhlaWdodCAtIG5vbkNvbnRlbnRIZWlnaHQgKSApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy51aURpYWxvZy5pcyggXCI6ZGF0YSh1aS1yZXNpemFibGUpXCIgKSApIHtcblx0XHRcdHRoaXMudWlEaWFsb2cucmVzaXphYmxlKCBcIm9wdGlvblwiLCBcIm1pbkhlaWdodFwiLCB0aGlzLl9taW5IZWlnaHQoKSApO1xuXHRcdH1cblx0fSxcblxuXHRfYmxvY2tGcmFtZXM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuaWZyYW1lQmxvY2tzID0gdGhpcy5kb2N1bWVudC5maW5kKCBcImlmcmFtZVwiICkubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpZnJhbWUgPSAkKCB0aGlzICk7XG5cblx0XHRcdHJldHVybiAkKCBcIjxkaXY+XCIgKVxuXHRcdFx0XHQuY3NzKCB7XG5cdFx0XHRcdFx0cG9zaXRpb246IFwiYWJzb2x1dGVcIixcblx0XHRcdFx0XHR3aWR0aDogaWZyYW1lLm91dGVyV2lkdGgoKSxcblx0XHRcdFx0XHRoZWlnaHQ6IGlmcmFtZS5vdXRlckhlaWdodCgpXG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQuYXBwZW5kVG8oIGlmcmFtZS5wYXJlbnQoKSApXG5cdFx0XHRcdC5vZmZzZXQoIGlmcmFtZS5vZmZzZXQoKSApWyAwIF07XG5cdFx0fSApO1xuXHR9LFxuXG5cdF91bmJsb2NrRnJhbWVzOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoIHRoaXMuaWZyYW1lQmxvY2tzICkge1xuXHRcdFx0dGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCk7XG5cdFx0XHRkZWxldGUgdGhpcy5pZnJhbWVCbG9ja3M7XG5cdFx0fVxuXHR9LFxuXG5cdF9hbGxvd0ludGVyYWN0aW9uOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0aWYgKCAkKCBldmVudC50YXJnZXQgKS5jbG9zZXN0KCBcIi51aS1kaWFsb2dcIiApLmxlbmd0aCApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIFRPRE86IFJlbW92ZSBoYWNrIHdoZW4gZGF0ZXBpY2tlciBpbXBsZW1lbnRzXG5cdFx0Ly8gdGhlIC51aS1mcm9udCBsb2dpYyAoIzg5ODkpXG5cdFx0cmV0dXJuICEhJCggZXZlbnQudGFyZ2V0ICkuY2xvc2VzdCggXCIudWktZGF0ZXBpY2tlclwiICkubGVuZ3RoO1xuXHR9LFxuXG5cdF9jcmVhdGVPdmVybGF5OiBmdW5jdGlvbigpIHtcblx0XHRpZiAoICF0aGlzLm9wdGlvbnMubW9kYWwgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gV2UgdXNlIGEgZGVsYXkgaW4gY2FzZSB0aGUgb3ZlcmxheSBpcyBjcmVhdGVkIGZyb20gYW5cblx0XHQvLyBldmVudCB0aGF0IHdlJ3JlIGdvaW5nIHRvIGJlIGNhbmNlbGxpbmcgKCMyODA0KVxuXHRcdHZhciBpc09wZW5pbmcgPSB0cnVlO1xuXHRcdHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdGlzT3BlbmluZyA9IGZhbHNlO1xuXHRcdH0gKTtcblxuXHRcdGlmICggIXRoaXMuZG9jdW1lbnQuZGF0YSggXCJ1aS1kaWFsb2ctb3ZlcmxheXNcIiApICkge1xuXG5cdFx0XHQvLyBQcmV2ZW50IHVzZSBvZiBhbmNob3JzIGFuZCBpbnB1dHNcblx0XHRcdC8vIFVzaW5nIF9vbigpIGZvciBhbiBldmVudCBoYW5kbGVyIHNoYXJlZCBhY3Jvc3MgbWFueSBpbnN0YW5jZXMgaXNcblx0XHRcdC8vIHNhZmUgYmVjYXVzZSB0aGUgZGlhbG9ncyBzdGFjayBhbmQgbXVzdCBiZSBjbG9zZWQgaW4gcmV2ZXJzZSBvcmRlclxuXHRcdFx0dGhpcy5fb24oIHRoaXMuZG9jdW1lbnQsIHtcblx0XHRcdFx0Zm9jdXNpbjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRcdGlmICggaXNPcGVuaW5nICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICggIXRoaXMuX2FsbG93SW50ZXJhY3Rpb24oIGV2ZW50ICkgKSB7XG5cdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0dGhpcy5fdHJhY2tpbmdJbnN0YW5jZXMoKVsgMCBdLl9mb2N1c1RhYmJhYmxlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5vdmVybGF5ID0gJCggXCI8ZGl2PlwiIClcblx0XHRcdC5hcHBlbmRUbyggdGhpcy5fYXBwZW5kVG8oKSApO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMub3ZlcmxheSwgbnVsbCwgXCJ1aS13aWRnZXQtb3ZlcmxheSB1aS1mcm9udFwiICk7XG5cdFx0dGhpcy5fb24oIHRoaXMub3ZlcmxheSwge1xuXHRcdFx0bW91c2Vkb3duOiBcIl9rZWVwRm9jdXNcIlxuXHRcdH0gKTtcblx0XHR0aGlzLmRvY3VtZW50LmRhdGEoIFwidWktZGlhbG9nLW92ZXJsYXlzXCIsXG5cdFx0XHQoIHRoaXMuZG9jdW1lbnQuZGF0YSggXCJ1aS1kaWFsb2ctb3ZlcmxheXNcIiApIHx8IDAgKSArIDEgKTtcblx0fSxcblxuXHRfZGVzdHJveU92ZXJsYXk6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXMub3B0aW9ucy5tb2RhbCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMub3ZlcmxheSApIHtcblx0XHRcdHZhciBvdmVybGF5cyA9IHRoaXMuZG9jdW1lbnQuZGF0YSggXCJ1aS1kaWFsb2ctb3ZlcmxheXNcIiApIC0gMTtcblxuXHRcdFx0aWYgKCAhb3ZlcmxheXMgKSB7XG5cdFx0XHRcdHRoaXMuX29mZiggdGhpcy5kb2N1bWVudCwgXCJmb2N1c2luXCIgKTtcblx0XHRcdFx0dGhpcy5kb2N1bWVudC5yZW1vdmVEYXRhKCBcInVpLWRpYWxvZy1vdmVybGF5c1wiICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmRvY3VtZW50LmRhdGEoIFwidWktZGlhbG9nLW92ZXJsYXlzXCIsIG92ZXJsYXlzICk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMub3ZlcmxheS5yZW1vdmUoKTtcblx0XHRcdHRoaXMub3ZlcmxheSA9IG51bGw7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIERFUFJFQ0FURURcbi8vIFRPRE86IHN3aXRjaCByZXR1cm4gYmFjayB0byB3aWRnZXQgZGVjbGFyYXRpb24gYXQgdG9wIG9mIGZpbGUgd2hlbiB0aGlzIGlzIHJlbW92ZWRcbmlmICggJC51aUJhY2tDb21wYXQgIT09IGZhbHNlICkge1xuXG5cdC8vIEJhY2tjb21wYXQgZm9yIGRpYWxvZ0NsYXNzIG9wdGlvblxuXHQkLndpZGdldCggXCJ1aS5kaWFsb2dcIiwgJC51aS5kaWFsb2csIHtcblx0XHRvcHRpb25zOiB7XG5cdFx0XHRkaWFsb2dDbGFzczogXCJcIlxuXHRcdH0sXG5cdFx0X2NyZWF0ZVdyYXBwZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5fc3VwZXIoKTtcblx0XHRcdHRoaXMudWlEaWFsb2cuYWRkQ2xhc3MoIHRoaXMub3B0aW9ucy5kaWFsb2dDbGFzcyApO1xuXHRcdH0sXG5cdFx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIGtleSA9PT0gXCJkaWFsb2dDbGFzc1wiICkge1xuXHRcdFx0XHR0aGlzLnVpRGlhbG9nXG5cdFx0XHRcdFx0LnJlbW92ZUNsYXNzKCB0aGlzLm9wdGlvbnMuZGlhbG9nQ2xhc3MgKVxuXHRcdFx0XHRcdC5hZGRDbGFzcyggdmFsdWUgKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX3N1cGVyQXBwbHkoIGFyZ3VtZW50cyApO1xuXHRcdH1cblx0fSApO1xufVxuXG52YXIgd2lkZ2V0c0RpYWxvZyA9ICQudWkuZGlhbG9nO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIERyb3BwYWJsZSAxLjEyLjFcbiAqIGh0dHA6Ly9qcXVlcnl1aS5jb21cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxuICovXG5cbi8vPj5sYWJlbDogRHJvcHBhYmxlXG4vLz4+Z3JvdXA6IEludGVyYWN0aW9uc1xuLy8+PmRlc2NyaXB0aW9uOiBFbmFibGVzIGRyb3AgdGFyZ2V0cyBmb3IgZHJhZ2dhYmxlIGVsZW1lbnRzLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2Ryb3BwYWJsZS9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9kcm9wcGFibGUvXG5cblxuXG4kLndpZGdldCggXCJ1aS5kcm9wcGFibGVcIiwge1xuXHR2ZXJzaW9uOiBcIjEuMTIuMVwiLFxuXHR3aWRnZXRFdmVudFByZWZpeDogXCJkcm9wXCIsXG5cdG9wdGlvbnM6IHtcblx0XHRhY2NlcHQ6IFwiKlwiLFxuXHRcdGFkZENsYXNzZXM6IHRydWUsXG5cdFx0Z3JlZWR5OiBmYWxzZSxcblx0XHRzY29wZTogXCJkZWZhdWx0XCIsXG5cdFx0dG9sZXJhbmNlOiBcImludGVyc2VjdFwiLFxuXG5cdFx0Ly8gQ2FsbGJhY2tzXG5cdFx0YWN0aXZhdGU6IG51bGwsXG5cdFx0ZGVhY3RpdmF0ZTogbnVsbCxcblx0XHRkcm9wOiBudWxsLFxuXHRcdG91dDogbnVsbCxcblx0XHRvdmVyOiBudWxsXG5cdH0sXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXG5cdFx0dmFyIHByb3BvcnRpb25zLFxuXHRcdFx0byA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGFjY2VwdCA9IG8uYWNjZXB0O1xuXG5cdFx0dGhpcy5pc292ZXIgPSBmYWxzZTtcblx0XHR0aGlzLmlzb3V0ID0gdHJ1ZTtcblxuXHRcdHRoaXMuYWNjZXB0ID0gJC5pc0Z1bmN0aW9uKCBhY2NlcHQgKSA/IGFjY2VwdCA6IGZ1bmN0aW9uKCBkICkge1xuXHRcdFx0cmV0dXJuIGQuaXMoIGFjY2VwdCApO1xuXHRcdH07XG5cblx0XHR0aGlzLnByb3BvcnRpb25zID0gZnVuY3Rpb24oIC8qIHZhbHVlVG9Xcml0ZSAqLyApIHtcblx0XHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcblxuXHRcdFx0XHQvLyBTdG9yZSB0aGUgZHJvcHBhYmxlJ3MgcHJvcG9ydGlvbnNcblx0XHRcdFx0cHJvcG9ydGlvbnMgPSBhcmd1bWVudHNbIDAgXTtcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gUmV0cmlldmUgb3IgZGVyaXZlIHRoZSBkcm9wcGFibGUncyBwcm9wb3J0aW9uc1xuXHRcdFx0XHRyZXR1cm4gcHJvcG9ydGlvbnMgP1xuXHRcdFx0XHRcdHByb3BvcnRpb25zIDpcblx0XHRcdFx0XHRwcm9wb3J0aW9ucyA9IHtcblx0XHRcdFx0XHRcdHdpZHRoOiB0aGlzLmVsZW1lbnRbIDAgXS5vZmZzZXRXaWR0aCxcblx0XHRcdFx0XHRcdGhlaWdodDogdGhpcy5lbGVtZW50WyAwIF0ub2Zmc2V0SGVpZ2h0XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dGhpcy5fYWRkVG9NYW5hZ2VyKCBvLnNjb3BlICk7XG5cblx0XHRvLmFkZENsYXNzZXMgJiYgdGhpcy5fYWRkQ2xhc3MoIFwidWktZHJvcHBhYmxlXCIgKTtcblxuXHR9LFxuXG5cdF9hZGRUb01hbmFnZXI6IGZ1bmN0aW9uKCBzY29wZSApIHtcblxuXHRcdC8vIEFkZCB0aGUgcmVmZXJlbmNlIGFuZCBwb3NpdGlvbnMgdG8gdGhlIG1hbmFnZXJcblx0XHQkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzWyBzY29wZSBdID0gJC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1sgc2NvcGUgXSB8fCBbXTtcblx0XHQkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzWyBzY29wZSBdLnB1c2goIHRoaXMgKTtcblx0fSxcblxuXHRfc3BsaWNlOiBmdW5jdGlvbiggZHJvcCApIHtcblx0XHR2YXIgaSA9IDA7XG5cdFx0Zm9yICggOyBpIDwgZHJvcC5sZW5ndGg7IGkrKyApIHtcblx0XHRcdGlmICggZHJvcFsgaSBdID09PSB0aGlzICkge1xuXHRcdFx0XHRkcm9wLnNwbGljZSggaSwgMSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRfZGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGRyb3AgPSAkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzWyB0aGlzLm9wdGlvbnMuc2NvcGUgXTtcblxuXHRcdHRoaXMuX3NwbGljZSggZHJvcCApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXG5cdFx0aWYgKCBrZXkgPT09IFwiYWNjZXB0XCIgKSB7XG5cdFx0XHR0aGlzLmFjY2VwdCA9ICQuaXNGdW5jdGlvbiggdmFsdWUgKSA/IHZhbHVlIDogZnVuY3Rpb24oIGQgKSB7XG5cdFx0XHRcdHJldHVybiBkLmlzKCB2YWx1ZSApO1xuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKCBrZXkgPT09IFwic2NvcGVcIiApIHtcblx0XHRcdHZhciBkcm9wID0gJC51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1sgdGhpcy5vcHRpb25zLnNjb3BlIF07XG5cblx0XHRcdHRoaXMuX3NwbGljZSggZHJvcCApO1xuXHRcdFx0dGhpcy5fYWRkVG9NYW5hZ2VyKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX3N1cGVyKCBrZXksIHZhbHVlICk7XG5cdH0sXG5cblx0X2FjdGl2YXRlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGRyYWdnYWJsZSA9ICQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7XG5cblx0XHR0aGlzLl9hZGRBY3RpdmVDbGFzcygpO1xuXHRcdGlmICggZHJhZ2dhYmxlICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJhY3RpdmF0ZVwiLCBldmVudCwgdGhpcy51aSggZHJhZ2dhYmxlICkgKTtcblx0XHR9XG5cdH0sXG5cblx0X2RlYWN0aXZhdGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgZHJhZ2dhYmxlID0gJC51aS5kZG1hbmFnZXIuY3VycmVudDtcblxuXHRcdHRoaXMuX3JlbW92ZUFjdGl2ZUNsYXNzKCk7XG5cdFx0aWYgKCBkcmFnZ2FibGUgKSB7XG5cdFx0XHR0aGlzLl90cmlnZ2VyKCBcImRlYWN0aXZhdGVcIiwgZXZlbnQsIHRoaXMudWkoIGRyYWdnYWJsZSApICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9vdmVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHR2YXIgZHJhZ2dhYmxlID0gJC51aS5kZG1hbmFnZXIuY3VycmVudDtcblxuXHRcdC8vIEJhaWwgaWYgZHJhZ2dhYmxlIGFuZCBkcm9wcGFibGUgYXJlIHNhbWUgZWxlbWVudFxuXHRcdGlmICggIWRyYWdnYWJsZSB8fCAoIGRyYWdnYWJsZS5jdXJyZW50SXRlbSB8fFxuXHRcdFx0XHRkcmFnZ2FibGUuZWxlbWVudCApWyAwIF0gPT09IHRoaXMuZWxlbWVudFsgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5hY2NlcHQuY2FsbCggdGhpcy5lbGVtZW50WyAwIF0sICggZHJhZ2dhYmxlLmN1cnJlbnRJdGVtIHx8XG5cdFx0XHRcdGRyYWdnYWJsZS5lbGVtZW50ICkgKSApIHtcblx0XHRcdHRoaXMuX2FkZEhvdmVyQ2xhc3MoKTtcblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwib3ZlclwiLCBldmVudCwgdGhpcy51aSggZHJhZ2dhYmxlICkgKTtcblx0XHR9XG5cblx0fSxcblxuXHRfb3V0OiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHR2YXIgZHJhZ2dhYmxlID0gJC51aS5kZG1hbmFnZXIuY3VycmVudDtcblxuXHRcdC8vIEJhaWwgaWYgZHJhZ2dhYmxlIGFuZCBkcm9wcGFibGUgYXJlIHNhbWUgZWxlbWVudFxuXHRcdGlmICggIWRyYWdnYWJsZSB8fCAoIGRyYWdnYWJsZS5jdXJyZW50SXRlbSB8fFxuXHRcdFx0XHRkcmFnZ2FibGUuZWxlbWVudCApWyAwIF0gPT09IHRoaXMuZWxlbWVudFsgMCBdICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5hY2NlcHQuY2FsbCggdGhpcy5lbGVtZW50WyAwIF0sICggZHJhZ2dhYmxlLmN1cnJlbnRJdGVtIHx8XG5cdFx0XHRcdGRyYWdnYWJsZS5lbGVtZW50ICkgKSApIHtcblx0XHRcdHRoaXMuX3JlbW92ZUhvdmVyQ2xhc3MoKTtcblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwib3V0XCIsIGV2ZW50LCB0aGlzLnVpKCBkcmFnZ2FibGUgKSApO1xuXHRcdH1cblxuXHR9LFxuXG5cdF9kcm9wOiBmdW5jdGlvbiggZXZlbnQsIGN1c3RvbSApIHtcblxuXHRcdHZhciBkcmFnZ2FibGUgPSBjdXN0b20gfHwgJC51aS5kZG1hbmFnZXIuY3VycmVudCxcblx0XHRcdGNoaWxkcmVuSW50ZXJzZWN0aW9uID0gZmFsc2U7XG5cblx0XHQvLyBCYWlsIGlmIGRyYWdnYWJsZSBhbmQgZHJvcHBhYmxlIGFyZSBzYW1lIGVsZW1lbnRcblx0XHRpZiAoICFkcmFnZ2FibGUgfHwgKCBkcmFnZ2FibGUuY3VycmVudEl0ZW0gfHxcblx0XHRcdFx0ZHJhZ2dhYmxlLmVsZW1lbnQgKVsgMCBdID09PSB0aGlzLmVsZW1lbnRbIDAgXSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLmVsZW1lbnRcblx0XHRcdC5maW5kKCBcIjpkYXRhKHVpLWRyb3BwYWJsZSlcIiApXG5cdFx0XHQubm90KCBcIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmdcIiApXG5cdFx0XHQuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBpbnN0ID0gJCggdGhpcyApLmRyb3BwYWJsZSggXCJpbnN0YW5jZVwiICk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpbnN0Lm9wdGlvbnMuZ3JlZWR5ICYmXG5cdFx0XHRcdFx0IWluc3Qub3B0aW9ucy5kaXNhYmxlZCAmJlxuXHRcdFx0XHRcdGluc3Qub3B0aW9ucy5zY29wZSA9PT0gZHJhZ2dhYmxlLm9wdGlvbnMuc2NvcGUgJiZcblx0XHRcdFx0XHRpbnN0LmFjY2VwdC5jYWxsKFxuXHRcdFx0XHRcdFx0aW5zdC5lbGVtZW50WyAwIF0sICggZHJhZ2dhYmxlLmN1cnJlbnRJdGVtIHx8IGRyYWdnYWJsZS5lbGVtZW50IClcblx0XHRcdFx0XHQpICYmXG5cdFx0XHRcdFx0aW50ZXJzZWN0KFxuXHRcdFx0XHRcdFx0ZHJhZ2dhYmxlLFxuXHRcdFx0XHRcdFx0JC5leHRlbmQoIGluc3QsIHsgb2Zmc2V0OiBpbnN0LmVsZW1lbnQub2Zmc2V0KCkgfSApLFxuXHRcdFx0XHRcdFx0aW5zdC5vcHRpb25zLnRvbGVyYW5jZSwgZXZlbnRcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNoaWxkcmVuSW50ZXJzZWN0aW9uID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7IH1cblx0XHRcdH0gKTtcblx0XHRpZiAoIGNoaWxkcmVuSW50ZXJzZWN0aW9uICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5hY2NlcHQuY2FsbCggdGhpcy5lbGVtZW50WyAwIF0sXG5cdFx0XHRcdCggZHJhZ2dhYmxlLmN1cnJlbnRJdGVtIHx8IGRyYWdnYWJsZS5lbGVtZW50ICkgKSApIHtcblx0XHRcdHRoaXMuX3JlbW92ZUFjdGl2ZUNsYXNzKCk7XG5cdFx0XHR0aGlzLl9yZW1vdmVIb3ZlckNsYXNzKCk7XG5cblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiZHJvcFwiLCBldmVudCwgdGhpcy51aSggZHJhZ2dhYmxlICkgKTtcblx0XHRcdHJldHVybiB0aGlzLmVsZW1lbnQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXG5cdH0sXG5cblx0dWk6IGZ1bmN0aW9uKCBjICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRkcmFnZ2FibGU6ICggYy5jdXJyZW50SXRlbSB8fCBjLmVsZW1lbnQgKSxcblx0XHRcdGhlbHBlcjogYy5oZWxwZXIsXG5cdFx0XHRwb3NpdGlvbjogYy5wb3NpdGlvbixcblx0XHRcdG9mZnNldDogYy5wb3NpdGlvbkFic1xuXHRcdH07XG5cdH0sXG5cblx0Ly8gRXh0ZW5zaW9uIHBvaW50cyBqdXN0IHRvIG1ha2UgYmFja2NvbXBhdCBzYW5lIGFuZCBhdm9pZCBkdXBsaWNhdGluZyBsb2dpY1xuXHQvLyBUT0RPOiBSZW1vdmUgaW4gMS4xMyBhbG9uZyB3aXRoIGNhbGwgdG8gaXQgYmVsb3dcblx0X2FkZEhvdmVyQ2xhc3M6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX2FkZENsYXNzKCBcInVpLWRyb3BwYWJsZS1ob3ZlclwiICk7XG5cdH0sXG5cblx0X3JlbW92ZUhvdmVyQ2xhc3M6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBcInVpLWRyb3BwYWJsZS1ob3ZlclwiICk7XG5cdH0sXG5cblx0X2FkZEFjdGl2ZUNsYXNzOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1kcm9wcGFibGUtYWN0aXZlXCIgKTtcblx0fSxcblxuXHRfcmVtb3ZlQWN0aXZlQ2xhc3M6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBcInVpLWRyb3BwYWJsZS1hY3RpdmVcIiApO1xuXHR9XG59ICk7XG5cbnZhciBpbnRlcnNlY3QgPSAkLnVpLmludGVyc2VjdCA9ICggZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGlzT3ZlckF4aXMoIHgsIHJlZmVyZW5jZSwgc2l6ZSApIHtcblx0XHRyZXR1cm4gKCB4ID49IHJlZmVyZW5jZSApICYmICggeCA8ICggcmVmZXJlbmNlICsgc2l6ZSApICk7XG5cdH1cblxuXHRyZXR1cm4gZnVuY3Rpb24oIGRyYWdnYWJsZSwgZHJvcHBhYmxlLCB0b2xlcmFuY2VNb2RlLCBldmVudCApIHtcblxuXHRcdGlmICggIWRyb3BwYWJsZS5vZmZzZXQgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dmFyIHgxID0gKCBkcmFnZ2FibGUucG9zaXRpb25BYnMgfHxcblx0XHRcdFx0ZHJhZ2dhYmxlLnBvc2l0aW9uLmFic29sdXRlICkubGVmdCArIGRyYWdnYWJsZS5tYXJnaW5zLmxlZnQsXG5cdFx0XHR5MSA9ICggZHJhZ2dhYmxlLnBvc2l0aW9uQWJzIHx8XG5cdFx0XHRcdGRyYWdnYWJsZS5wb3NpdGlvbi5hYnNvbHV0ZSApLnRvcCArIGRyYWdnYWJsZS5tYXJnaW5zLnRvcCxcblx0XHRcdHgyID0geDEgKyBkcmFnZ2FibGUuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsXG5cdFx0XHR5MiA9IHkxICsgZHJhZ2dhYmxlLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxcblx0XHRcdGwgPSBkcm9wcGFibGUub2Zmc2V0LmxlZnQsXG5cdFx0XHR0ID0gZHJvcHBhYmxlLm9mZnNldC50b3AsXG5cdFx0XHRyID0gbCArIGRyb3BwYWJsZS5wcm9wb3J0aW9ucygpLndpZHRoLFxuXHRcdFx0YiA9IHQgKyBkcm9wcGFibGUucHJvcG9ydGlvbnMoKS5oZWlnaHQ7XG5cblx0XHRzd2l0Y2ggKCB0b2xlcmFuY2VNb2RlICkge1xuXHRcdGNhc2UgXCJmaXRcIjpcblx0XHRcdHJldHVybiAoIGwgPD0geDEgJiYgeDIgPD0gciAmJiB0IDw9IHkxICYmIHkyIDw9IGIgKTtcblx0XHRjYXNlIFwiaW50ZXJzZWN0XCI6XG5cdFx0XHRyZXR1cm4gKCBsIDwgeDEgKyAoIGRyYWdnYWJsZS5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCAvIDIgKSAmJiAvLyBSaWdodCBIYWxmXG5cdFx0XHRcdHgyIC0gKCBkcmFnZ2FibGUuaGVscGVyUHJvcG9ydGlvbnMud2lkdGggLyAyICkgPCByICYmIC8vIExlZnQgSGFsZlxuXHRcdFx0XHR0IDwgeTEgKyAoIGRyYWdnYWJsZS5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQgLyAyICkgJiYgLy8gQm90dG9tIEhhbGZcblx0XHRcdFx0eTIgLSAoIGRyYWdnYWJsZS5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQgLyAyICkgPCBiICk7IC8vIFRvcCBIYWxmXG5cdFx0Y2FzZSBcInBvaW50ZXJcIjpcblx0XHRcdHJldHVybiBpc092ZXJBeGlzKCBldmVudC5wYWdlWSwgdCwgZHJvcHBhYmxlLnByb3BvcnRpb25zKCkuaGVpZ2h0ICkgJiZcblx0XHRcdFx0aXNPdmVyQXhpcyggZXZlbnQucGFnZVgsIGwsIGRyb3BwYWJsZS5wcm9wb3J0aW9ucygpLndpZHRoICk7XG5cdFx0Y2FzZSBcInRvdWNoXCI6XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQoIHkxID49IHQgJiYgeTEgPD0gYiApIHx8IC8vIFRvcCBlZGdlIHRvdWNoaW5nXG5cdFx0XHRcdCggeTIgPj0gdCAmJiB5MiA8PSBiICkgfHwgLy8gQm90dG9tIGVkZ2UgdG91Y2hpbmdcblx0XHRcdFx0KCB5MSA8IHQgJiYgeTIgPiBiICkgLy8gU3Vycm91bmRlZCB2ZXJ0aWNhbGx5XG5cdFx0XHQpICYmIChcblx0XHRcdFx0KCB4MSA+PSBsICYmIHgxIDw9IHIgKSB8fCAvLyBMZWZ0IGVkZ2UgdG91Y2hpbmdcblx0XHRcdFx0KCB4MiA+PSBsICYmIHgyIDw9IHIgKSB8fCAvLyBSaWdodCBlZGdlIHRvdWNoaW5nXG5cdFx0XHRcdCggeDEgPCBsICYmIHgyID4gciApIC8vIFN1cnJvdW5kZWQgaG9yaXpvbnRhbGx5XG5cdFx0XHQpO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9O1xufSApKCk7XG5cbi8qXG5cdFRoaXMgbWFuYWdlciB0cmFja3Mgb2Zmc2V0cyBvZiBkcmFnZ2FibGVzIGFuZCBkcm9wcGFibGVzXG4qL1xuJC51aS5kZG1hbmFnZXIgPSB7XG5cdGN1cnJlbnQ6IG51bGwsXG5cdGRyb3BwYWJsZXM6IHsgXCJkZWZhdWx0XCI6IFtdIH0sXG5cdHByZXBhcmVPZmZzZXRzOiBmdW5jdGlvbiggdCwgZXZlbnQgKSB7XG5cblx0XHR2YXIgaSwgaixcblx0XHRcdG0gPSAkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzWyB0Lm9wdGlvbnMuc2NvcGUgXSB8fCBbXSxcblx0XHRcdHR5cGUgPSBldmVudCA/IGV2ZW50LnR5cGUgOiBudWxsLCAvLyB3b3JrYXJvdW5kIGZvciAjMjMxN1xuXHRcdFx0bGlzdCA9ICggdC5jdXJyZW50SXRlbSB8fCB0LmVsZW1lbnQgKS5maW5kKCBcIjpkYXRhKHVpLWRyb3BwYWJsZSlcIiApLmFkZEJhY2soKTtcblxuXHRcdGRyb3BwYWJsZXNMb29wOiBmb3IgKCBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKysgKSB7XG5cblx0XHRcdC8vIE5vIGRpc2FibGVkIGFuZCBub24tYWNjZXB0ZWRcblx0XHRcdGlmICggbVsgaSBdLm9wdGlvbnMuZGlzYWJsZWQgfHwgKCB0ICYmICFtWyBpIF0uYWNjZXB0LmNhbGwoIG1bIGkgXS5lbGVtZW50WyAwIF0sXG5cdFx0XHRcdFx0KCB0LmN1cnJlbnRJdGVtIHx8IHQuZWxlbWVudCApICkgKSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgZHJhZ2dlZCBpdGVtXG5cdFx0XHRmb3IgKCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKysgKSB7XG5cdFx0XHRcdGlmICggbGlzdFsgaiBdID09PSBtWyBpIF0uZWxlbWVudFsgMCBdICkge1xuXHRcdFx0XHRcdG1bIGkgXS5wcm9wb3J0aW9ucygpLmhlaWdodCA9IDA7XG5cdFx0XHRcdFx0Y29udGludWUgZHJvcHBhYmxlc0xvb3A7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0bVsgaSBdLnZpc2libGUgPSBtWyBpIF0uZWxlbWVudC5jc3MoIFwiZGlzcGxheVwiICkgIT09IFwibm9uZVwiO1xuXHRcdFx0aWYgKCAhbVsgaSBdLnZpc2libGUgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY3RpdmF0ZSB0aGUgZHJvcHBhYmxlIGlmIHVzZWQgZGlyZWN0bHkgZnJvbSBkcmFnZ2FibGVzXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibW91c2Vkb3duXCIgKSB7XG5cdFx0XHRcdG1bIGkgXS5fYWN0aXZhdGUuY2FsbCggbVsgaSBdLCBldmVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHRtWyBpIF0ub2Zmc2V0ID0gbVsgaSBdLmVsZW1lbnQub2Zmc2V0KCk7XG5cdFx0XHRtWyBpIF0ucHJvcG9ydGlvbnMoIHtcblx0XHRcdFx0d2lkdGg6IG1bIGkgXS5lbGVtZW50WyAwIF0ub2Zmc2V0V2lkdGgsXG5cdFx0XHRcdGhlaWdodDogbVsgaSBdLmVsZW1lbnRbIDAgXS5vZmZzZXRIZWlnaHRcblx0XHRcdH0gKTtcblxuXHRcdH1cblxuXHR9LFxuXHRkcm9wOiBmdW5jdGlvbiggZHJhZ2dhYmxlLCBldmVudCApIHtcblxuXHRcdHZhciBkcm9wcGVkID0gZmFsc2U7XG5cblx0XHQvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBkcm9wcGFibGVzIGluIGNhc2UgdGhlIGxpc3QgY2hhbmdlcyBkdXJpbmcgdGhlIGRyb3AgKCM5MTE2KVxuXHRcdCQuZWFjaCggKCAkLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzWyBkcmFnZ2FibGUub3B0aW9ucy5zY29wZSBdIHx8IFtdICkuc2xpY2UoKSwgZnVuY3Rpb24oKSB7XG5cblx0XHRcdGlmICggIXRoaXMub3B0aW9ucyApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhdGhpcy5vcHRpb25zLmRpc2FibGVkICYmIHRoaXMudmlzaWJsZSAmJlxuXHRcdFx0XHRcdGludGVyc2VjdCggZHJhZ2dhYmxlLCB0aGlzLCB0aGlzLm9wdGlvbnMudG9sZXJhbmNlLCBldmVudCApICkge1xuXHRcdFx0XHRkcm9wcGVkID0gdGhpcy5fZHJvcC5jYWxsKCB0aGlzLCBldmVudCApIHx8IGRyb3BwZWQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggIXRoaXMub3B0aW9ucy5kaXNhYmxlZCAmJiB0aGlzLnZpc2libGUgJiYgdGhpcy5hY2NlcHQuY2FsbCggdGhpcy5lbGVtZW50WyAwIF0sXG5cdFx0XHRcdFx0KCBkcmFnZ2FibGUuY3VycmVudEl0ZW0gfHwgZHJhZ2dhYmxlLmVsZW1lbnQgKSApICkge1xuXHRcdFx0XHR0aGlzLmlzb3V0ID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5pc292ZXIgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5fZGVhY3RpdmF0ZS5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdFx0fVxuXG5cdFx0fSApO1xuXHRcdHJldHVybiBkcm9wcGVkO1xuXG5cdH0sXG5cdGRyYWdTdGFydDogZnVuY3Rpb24oIGRyYWdnYWJsZSwgZXZlbnQgKSB7XG5cblx0XHQvLyBMaXN0ZW4gZm9yIHNjcm9sbGluZyBzbyB0aGF0IGlmIHRoZSBkcmFnZ2luZyBjYXVzZXMgc2Nyb2xsaW5nIHRoZSBwb3NpdGlvbiBvZiB0aGVcblx0XHQvLyBkcm9wcGFibGVzIGNhbiBiZSByZWNhbGN1bGF0ZWQgKHNlZSAjNTAwMylcblx0XHRkcmFnZ2FibGUuZWxlbWVudC5wYXJlbnRzVW50aWwoIFwiYm9keVwiICkub24oIFwic2Nyb2xsLmRyb3BwYWJsZVwiLCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggIWRyYWdnYWJsZS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMgKSB7XG5cdFx0XHRcdCQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKCBkcmFnZ2FibGUsIGV2ZW50ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRkcmFnOiBmdW5jdGlvbiggZHJhZ2dhYmxlLCBldmVudCApIHtcblxuXHRcdC8vIElmIHlvdSBoYXZlIGEgaGlnaGx5IGR5bmFtaWMgcGFnZSwgeW91IG1pZ2h0IHRyeSB0aGlzIG9wdGlvbi4gSXQgcmVuZGVycyBwb3NpdGlvbnNcblx0XHQvLyBldmVyeSB0aW1lIHlvdSBtb3ZlIHRoZSBtb3VzZS5cblx0XHRpZiAoIGRyYWdnYWJsZS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMgKSB7XG5cdFx0XHQkLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyggZHJhZ2dhYmxlLCBldmVudCApO1xuXHRcdH1cblxuXHRcdC8vIFJ1biB0aHJvdWdoIGFsbCBkcm9wcGFibGVzIGFuZCBjaGVjayB0aGVpciBwb3NpdGlvbnMgYmFzZWQgb24gc3BlY2lmaWMgdG9sZXJhbmNlIG9wdGlvbnNcblx0XHQkLmVhY2goICQudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbIGRyYWdnYWJsZS5vcHRpb25zLnNjb3BlIF0gfHwgW10sIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5kaXNhYmxlZCB8fCB0aGlzLmdyZWVkeUNoaWxkIHx8ICF0aGlzLnZpc2libGUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dmFyIHBhcmVudEluc3RhbmNlLCBzY29wZSwgcGFyZW50LFxuXHRcdFx0XHRpbnRlcnNlY3RzID0gaW50ZXJzZWN0KCBkcmFnZ2FibGUsIHRoaXMsIHRoaXMub3B0aW9ucy50b2xlcmFuY2UsIGV2ZW50ICksXG5cdFx0XHRcdGMgPSAhaW50ZXJzZWN0cyAmJiB0aGlzLmlzb3ZlciA/XG5cdFx0XHRcdFx0XCJpc291dFwiIDpcblx0XHRcdFx0XHQoIGludGVyc2VjdHMgJiYgIXRoaXMuaXNvdmVyID8gXCJpc292ZXJcIiA6IG51bGwgKTtcblx0XHRcdGlmICggIWMgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB0aGlzLm9wdGlvbnMuZ3JlZWR5ICkge1xuXG5cdFx0XHRcdC8vIGZpbmQgZHJvcHBhYmxlIHBhcmVudHMgd2l0aCBzYW1lIHNjb3BlXG5cdFx0XHRcdHNjb3BlID0gdGhpcy5vcHRpb25zLnNjb3BlO1xuXHRcdFx0XHRwYXJlbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50cyggXCI6ZGF0YSh1aS1kcm9wcGFibGUpXCIgKS5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiAkKCB0aGlzICkuZHJvcHBhYmxlKCBcImluc3RhbmNlXCIgKS5vcHRpb25zLnNjb3BlID09PSBzY29wZTtcblx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdGlmICggcGFyZW50Lmxlbmd0aCApIHtcblx0XHRcdFx0XHRwYXJlbnRJbnN0YW5jZSA9ICQoIHBhcmVudFsgMCBdICkuZHJvcHBhYmxlKCBcImluc3RhbmNlXCIgKTtcblx0XHRcdFx0XHRwYXJlbnRJbnN0YW5jZS5ncmVlZHlDaGlsZCA9ICggYyA9PT0gXCJpc292ZXJcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlIGp1c3QgbW92ZWQgaW50byBhIGdyZWVkeSBjaGlsZFxuXHRcdFx0aWYgKCBwYXJlbnRJbnN0YW5jZSAmJiBjID09PSBcImlzb3ZlclwiICkge1xuXHRcdFx0XHRwYXJlbnRJbnN0YW5jZS5pc292ZXIgPSBmYWxzZTtcblx0XHRcdFx0cGFyZW50SW5zdGFuY2UuaXNvdXQgPSB0cnVlO1xuXHRcdFx0XHRwYXJlbnRJbnN0YW5jZS5fb3V0LmNhbGwoIHBhcmVudEluc3RhbmNlLCBldmVudCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzWyBjIF0gPSB0cnVlO1xuXHRcdFx0dGhpc1sgYyA9PT0gXCJpc291dFwiID8gXCJpc292ZXJcIiA6IFwiaXNvdXRcIiBdID0gZmFsc2U7XG5cdFx0XHR0aGlzWyBjID09PSBcImlzb3ZlclwiID8gXCJfb3ZlclwiIDogXCJfb3V0XCIgXS5jYWxsKCB0aGlzLCBldmVudCApO1xuXG5cdFx0XHQvLyBXZSBqdXN0IG1vdmVkIG91dCBvZiBhIGdyZWVkeSBjaGlsZFxuXHRcdFx0aWYgKCBwYXJlbnRJbnN0YW5jZSAmJiBjID09PSBcImlzb3V0XCIgKSB7XG5cdFx0XHRcdHBhcmVudEluc3RhbmNlLmlzb3V0ID0gZmFsc2U7XG5cdFx0XHRcdHBhcmVudEluc3RhbmNlLmlzb3ZlciA9IHRydWU7XG5cdFx0XHRcdHBhcmVudEluc3RhbmNlLl9vdmVyLmNhbGwoIHBhcmVudEluc3RhbmNlLCBldmVudCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9LFxuXHRkcmFnU3RvcDogZnVuY3Rpb24oIGRyYWdnYWJsZSwgZXZlbnQgKSB7XG5cdFx0ZHJhZ2dhYmxlLmVsZW1lbnQucGFyZW50c1VudGlsKCBcImJvZHlcIiApLm9mZiggXCJzY3JvbGwuZHJvcHBhYmxlXCIgKTtcblxuXHRcdC8vIENhbGwgcHJlcGFyZU9mZnNldHMgb25lIGZpbmFsIHRpbWUgc2luY2UgSUUgZG9lcyBub3QgZmlyZSByZXR1cm4gc2Nyb2xsIGV2ZW50cyB3aGVuXG5cdFx0Ly8gb3ZlcmZsb3cgd2FzIGNhdXNlZCBieSBkcmFnIChzZWUgIzUwMDMpXG5cdFx0aWYgKCAhZHJhZ2dhYmxlLm9wdGlvbnMucmVmcmVzaFBvc2l0aW9ucyApIHtcblx0XHRcdCQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKCBkcmFnZ2FibGUsIGV2ZW50ICk7XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBERVBSRUNBVEVEXG4vLyBUT0RPOiBzd2l0Y2ggcmV0dXJuIGJhY2sgdG8gd2lkZ2V0IGRlY2xhcmF0aW9uIGF0IHRvcCBvZiBmaWxlIHdoZW4gdGhpcyBpcyByZW1vdmVkXG5pZiAoICQudWlCYWNrQ29tcGF0ICE9PSBmYWxzZSApIHtcblxuXHQvLyBCYWNrY29tcGF0IGZvciBhY3RpdmVDbGFzcyBhbmQgaG92ZXJDbGFzcyBvcHRpb25zXG5cdCQud2lkZ2V0KCBcInVpLmRyb3BwYWJsZVwiLCAkLnVpLmRyb3BwYWJsZSwge1xuXHRcdG9wdGlvbnM6IHtcblx0XHRcdGhvdmVyQ2xhc3M6IGZhbHNlLFxuXHRcdFx0YWN0aXZlQ2xhc3M6IGZhbHNlXG5cdFx0fSxcblx0XHRfYWRkQWN0aXZlQ2xhc3M6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5fc3VwZXIoKTtcblx0XHRcdGlmICggdGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzICkge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoIHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyApO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0X3JlbW92ZUFjdGl2ZUNsYXNzOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMuX3N1cGVyKCk7XG5cdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyApIHtcblx0XHRcdFx0dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCB0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MgKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdF9hZGRIb3ZlckNsYXNzOiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMuX3N1cGVyKCk7XG5cdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzICkge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoIHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRfcmVtb3ZlSG92ZXJDbGFzczogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9zdXBlcigpO1xuXHRcdFx0aWYgKCB0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyApIHtcblx0XHRcdFx0dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCB0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufVxuXG52YXIgd2lkZ2V0c0Ryb3BwYWJsZSA9ICQudWkuZHJvcHBhYmxlO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFByb2dyZXNzYmFyIDEuMTIuMVxuICogaHR0cDovL2pxdWVyeXVpLmNvbVxuICpcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKi9cblxuLy8+PmxhYmVsOiBQcm9ncmVzc2JhclxuLy8+Pmdyb3VwOiBXaWRnZXRzXG4vLyBqc2NzOmRpc2FibGUgbWF4aW11bUxpbmVMZW5ndGhcbi8vPj5kZXNjcmlwdGlvbjogRGlzcGxheXMgYSBzdGF0dXMgaW5kaWNhdG9yIGZvciBsb2FkaW5nIHN0YXRlLCBzdGFuZGFyZCBwZXJjZW50YWdlLCBhbmQgb3RoZXIgcHJvZ3Jlc3MgaW5kaWNhdG9ycy5cbi8vIGpzY3M6ZW5hYmxlIG1heGltdW1MaW5lTGVuZ3RoXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vcHJvZ3Jlc3NiYXIvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vcHJvZ3Jlc3NiYXIvXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS9wcm9ncmVzc2Jhci5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxudmFyIHdpZGdldHNQcm9ncmVzc2JhciA9ICQud2lkZ2V0KCBcInVpLnByb2dyZXNzYmFyXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGNsYXNzZXM6IHtcblx0XHRcdFwidWktcHJvZ3Jlc3NiYXJcIjogXCJ1aS1jb3JuZXItYWxsXCIsXG5cdFx0XHRcInVpLXByb2dyZXNzYmFyLXZhbHVlXCI6IFwidWktY29ybmVyLWxlZnRcIixcblx0XHRcdFwidWktcHJvZ3Jlc3NiYXItY29tcGxldGVcIjogXCJ1aS1jb3JuZXItcmlnaHRcIlxuXHRcdH0sXG5cdFx0bWF4OiAxMDAsXG5cdFx0dmFsdWU6IDAsXG5cblx0XHRjaGFuZ2U6IG51bGwsXG5cdFx0Y29tcGxldGU6IG51bGxcblx0fSxcblxuXHRtaW46IDAsXG5cblx0X2NyZWF0ZTogZnVuY3Rpb24oKSB7XG5cblx0XHQvLyBDb25zdHJhaW4gaW5pdGlhbCB2YWx1ZVxuXHRcdHRoaXMub2xkVmFsdWUgPSB0aGlzLm9wdGlvbnMudmFsdWUgPSB0aGlzLl9jb25zdHJhaW5lZFZhbHVlKCk7XG5cblx0XHR0aGlzLmVsZW1lbnQuYXR0cigge1xuXG5cdFx0XHQvLyBPbmx5IHNldCBzdGF0aWMgdmFsdWVzOyBhcmlhLXZhbHVlbm93IGFuZCBhcmlhLXZhbHVlbWF4IGFyZVxuXHRcdFx0Ly8gc2V0IGluc2lkZSBfcmVmcmVzaFZhbHVlKClcblx0XHRcdHJvbGU6IFwicHJvZ3Jlc3NiYXJcIixcblx0XHRcdFwiYXJpYS12YWx1ZW1pblwiOiB0aGlzLm1pblxuXHRcdH0gKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1wcm9ncmVzc2JhclwiLCBcInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudFwiICk7XG5cblx0XHR0aGlzLnZhbHVlRGl2ID0gJCggXCI8ZGl2PlwiICkuYXBwZW5kVG8oIHRoaXMuZWxlbWVudCApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnZhbHVlRGl2LCBcInVpLXByb2dyZXNzYmFyLXZhbHVlXCIsIFwidWktd2lkZ2V0LWhlYWRlclwiICk7XG5cdFx0dGhpcy5fcmVmcmVzaFZhbHVlKCk7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCBcInJvbGUgYXJpYS12YWx1ZW1pbiBhcmlhLXZhbHVlbWF4IGFyaWEtdmFsdWVub3dcIiApO1xuXG5cdFx0dGhpcy52YWx1ZURpdi5yZW1vdmUoKTtcblx0fSxcblxuXHR2YWx1ZTogZnVuY3Rpb24oIG5ld1ZhbHVlICkge1xuXHRcdGlmICggbmV3VmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnMudmFsdWU7XG5cdFx0fVxuXG5cdFx0dGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy5fY29uc3RyYWluZWRWYWx1ZSggbmV3VmFsdWUgKTtcblx0XHR0aGlzLl9yZWZyZXNoVmFsdWUoKTtcblx0fSxcblxuXHRfY29uc3RyYWluZWRWYWx1ZTogZnVuY3Rpb24oIG5ld1ZhbHVlICkge1xuXHRcdGlmICggbmV3VmFsdWUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdG5ld1ZhbHVlID0gdGhpcy5vcHRpb25zLnZhbHVlO1xuXHRcdH1cblxuXHRcdHRoaXMuaW5kZXRlcm1pbmF0ZSA9IG5ld1ZhbHVlID09PSBmYWxzZTtcblxuXHRcdC8vIFNhbml0aXplIHZhbHVlXG5cdFx0aWYgKCB0eXBlb2YgbmV3VmFsdWUgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRuZXdWYWx1ZSA9IDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuaW5kZXRlcm1pbmF0ZSA/IGZhbHNlIDpcblx0XHRcdE1hdGgubWluKCB0aGlzLm9wdGlvbnMubWF4LCBNYXRoLm1heCggdGhpcy5taW4sIG5ld1ZhbHVlICkgKTtcblx0fSxcblxuXHRfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBFbnN1cmUgXCJ2YWx1ZVwiIG9wdGlvbiBpcyBzZXQgYWZ0ZXIgb3RoZXIgdmFsdWVzIChsaWtlIG1heClcblx0XHR2YXIgdmFsdWUgPSBvcHRpb25zLnZhbHVlO1xuXHRcdGRlbGV0ZSBvcHRpb25zLnZhbHVlO1xuXG5cdFx0dGhpcy5fc3VwZXIoIG9wdGlvbnMgKTtcblxuXHRcdHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMuX2NvbnN0cmFpbmVkVmFsdWUoIHZhbHVlICk7XG5cdFx0dGhpcy5fcmVmcmVzaFZhbHVlKCk7XG5cdH0sXG5cblx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0aWYgKCBrZXkgPT09IFwibWF4XCIgKSB7XG5cblx0XHRcdC8vIERvbid0IGFsbG93IGEgbWF4IGxlc3MgdGhhbiBtaW5cblx0XHRcdHZhbHVlID0gTWF0aC5tYXgoIHRoaXMubWluLCB2YWx1ZSApO1xuXHRcdH1cblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb25EaXNhYmxlZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHRoaXMuX3N1cGVyKCB2YWx1ZSApO1xuXG5cdFx0dGhpcy5lbGVtZW50LmF0dHIoIFwiYXJpYS1kaXNhYmxlZFwiLCB2YWx1ZSApO1xuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIsICEhdmFsdWUgKTtcblx0fSxcblxuXHRfcGVyY2VudGFnZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuaW5kZXRlcm1pbmF0ZSA/XG5cdFx0XHQxMDAgOlxuXHRcdFx0MTAwICogKCB0aGlzLm9wdGlvbnMudmFsdWUgLSB0aGlzLm1pbiApIC8gKCB0aGlzLm9wdGlvbnMubWF4IC0gdGhpcy5taW4gKTtcblx0fSxcblxuXHRfcmVmcmVzaFZhbHVlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdmFsdWUgPSB0aGlzLm9wdGlvbnMudmFsdWUsXG5cdFx0XHRwZXJjZW50YWdlID0gdGhpcy5fcGVyY2VudGFnZSgpO1xuXG5cdFx0dGhpcy52YWx1ZURpdlxuXHRcdFx0LnRvZ2dsZSggdGhpcy5pbmRldGVybWluYXRlIHx8IHZhbHVlID4gdGhpcy5taW4gKVxuXHRcdFx0LndpZHRoKCBwZXJjZW50YWdlLnRvRml4ZWQoIDAgKSArIFwiJVwiICk7XG5cblx0XHR0aGlzXG5cdFx0XHQuX3RvZ2dsZUNsYXNzKCB0aGlzLnZhbHVlRGl2LCBcInVpLXByb2dyZXNzYmFyLWNvbXBsZXRlXCIsIG51bGwsXG5cdFx0XHRcdHZhbHVlID09PSB0aGlzLm9wdGlvbnMubWF4IClcblx0XHRcdC5fdG9nZ2xlQ2xhc3MoIFwidWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZVwiLCBudWxsLCB0aGlzLmluZGV0ZXJtaW5hdGUgKTtcblxuXHRcdGlmICggdGhpcy5pbmRldGVybWluYXRlICkge1xuXHRcdFx0dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoIFwiYXJpYS12YWx1ZW5vd1wiICk7XG5cdFx0XHRpZiAoICF0aGlzLm92ZXJsYXlEaXYgKSB7XG5cdFx0XHRcdHRoaXMub3ZlcmxheURpdiA9ICQoIFwiPGRpdj5cIiApLmFwcGVuZFRvKCB0aGlzLnZhbHVlRGl2ICk7XG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLm92ZXJsYXlEaXYsIFwidWktcHJvZ3Jlc3NiYXItb3ZlcmxheVwiICk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWxlbWVudC5hdHRyKCB7XG5cdFx0XHRcdFwiYXJpYS12YWx1ZW1heFwiOiB0aGlzLm9wdGlvbnMubWF4LFxuXHRcdFx0XHRcImFyaWEtdmFsdWVub3dcIjogdmFsdWVcblx0XHRcdH0gKTtcblx0XHRcdGlmICggdGhpcy5vdmVybGF5RGl2ICkge1xuXHRcdFx0XHR0aGlzLm92ZXJsYXlEaXYucmVtb3ZlKCk7XG5cdFx0XHRcdHRoaXMub3ZlcmxheURpdiA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLm9sZFZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdHRoaXMub2xkVmFsdWUgPSB2YWx1ZTtcblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiY2hhbmdlXCIgKTtcblx0XHR9XG5cdFx0aWYgKCB2YWx1ZSA9PT0gdGhpcy5vcHRpb25zLm1heCApIHtcblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiY29tcGxldGVcIiApO1xuXHRcdH1cblx0fVxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFNlbGVjdGFibGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNlbGVjdGFibGVcbi8vPj5ncm91cDogSW50ZXJhY3Rpb25zXG4vLz4+ZGVzY3JpcHRpb246IEFsbG93cyBncm91cHMgb2YgZWxlbWVudHMgdG8gYmUgc2VsZWN0ZWQgd2l0aCB0aGUgbW91c2UuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc2VsZWN0YWJsZS9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9zZWxlY3RhYmxlL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL3NlbGVjdGFibGUuY3NzXG5cblxuXG52YXIgd2lkZ2V0c1NlbGVjdGFibGUgPSAkLndpZGdldCggXCJ1aS5zZWxlY3RhYmxlXCIsICQudWkubW91c2UsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGFwcGVuZFRvOiBcImJvZHlcIixcblx0XHRhdXRvUmVmcmVzaDogdHJ1ZSxcblx0XHRkaXN0YW5jZTogMCxcblx0XHRmaWx0ZXI6IFwiKlwiLFxuXHRcdHRvbGVyYW5jZTogXCJ0b3VjaFwiLFxuXG5cdFx0Ly8gQ2FsbGJhY2tzXG5cdFx0c2VsZWN0ZWQ6IG51bGwsXG5cdFx0c2VsZWN0aW5nOiBudWxsLFxuXHRcdHN0YXJ0OiBudWxsLFxuXHRcdHN0b3A6IG51bGwsXG5cdFx0dW5zZWxlY3RlZDogbnVsbCxcblx0XHR1bnNlbGVjdGluZzogbnVsbFxuXHR9LFxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1zZWxlY3RhYmxlXCIgKTtcblxuXHRcdHRoaXMuZHJhZ2dlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ2FjaGUgc2VsZWN0ZWUgY2hpbGRyZW4gYmFzZWQgb24gZmlsdGVyXG5cdFx0dGhpcy5yZWZyZXNoID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGF0LmVsZW1lbnRQb3MgPSAkKCB0aGF0LmVsZW1lbnRbIDAgXSApLm9mZnNldCgpO1xuXHRcdFx0dGhhdC5zZWxlY3RlZXMgPSAkKCB0aGF0Lm9wdGlvbnMuZmlsdGVyLCB0aGF0LmVsZW1lbnRbIDAgXSApO1xuXHRcdFx0dGhhdC5fYWRkQ2xhc3MoIHRoYXQuc2VsZWN0ZWVzLCBcInVpLXNlbGVjdGVlXCIgKTtcblx0XHRcdHRoYXQuc2VsZWN0ZWVzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgJHRoaXMgPSAkKCB0aGlzICksXG5cdFx0XHRcdFx0c2VsZWN0ZWVPZmZzZXQgPSAkdGhpcy5vZmZzZXQoKSxcblx0XHRcdFx0XHRwb3MgPSB7XG5cdFx0XHRcdFx0XHRsZWZ0OiBzZWxlY3RlZU9mZnNldC5sZWZ0IC0gdGhhdC5lbGVtZW50UG9zLmxlZnQsXG5cdFx0XHRcdFx0XHR0b3A6IHNlbGVjdGVlT2Zmc2V0LnRvcCAtIHRoYXQuZWxlbWVudFBvcy50b3Bcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHQkLmRhdGEoIHRoaXMsIFwic2VsZWN0YWJsZS1pdGVtXCIsIHtcblx0XHRcdFx0XHRlbGVtZW50OiB0aGlzLFxuXHRcdFx0XHRcdCRlbGVtZW50OiAkdGhpcyxcblx0XHRcdFx0XHRsZWZ0OiBwb3MubGVmdCxcblx0XHRcdFx0XHR0b3A6IHBvcy50b3AsXG5cdFx0XHRcdFx0cmlnaHQ6IHBvcy5sZWZ0ICsgJHRoaXMub3V0ZXJXaWR0aCgpLFxuXHRcdFx0XHRcdGJvdHRvbTogcG9zLnRvcCArICR0aGlzLm91dGVySGVpZ2h0KCksXG5cdFx0XHRcdFx0c3RhcnRzZWxlY3RlZDogZmFsc2UsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6ICR0aGlzLmhhc0NsYXNzKCBcInVpLXNlbGVjdGVkXCIgKSxcblx0XHRcdFx0XHRzZWxlY3Rpbmc6ICR0aGlzLmhhc0NsYXNzKCBcInVpLXNlbGVjdGluZ1wiICksXG5cdFx0XHRcdFx0dW5zZWxlY3Rpbmc6ICR0aGlzLmhhc0NsYXNzKCBcInVpLXVuc2VsZWN0aW5nXCIgKVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9ICk7XG5cdFx0fTtcblx0XHR0aGlzLnJlZnJlc2goKTtcblxuXHRcdHRoaXMuX21vdXNlSW5pdCgpO1xuXG5cdFx0dGhpcy5oZWxwZXIgPSAkKCBcIjxkaXY+XCIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5oZWxwZXIsIFwidWktc2VsZWN0YWJsZS1oZWxwZXJcIiApO1xuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLnNlbGVjdGVlcy5yZW1vdmVEYXRhKCBcInNlbGVjdGFibGUtaXRlbVwiICk7XG5cdFx0dGhpcy5fbW91c2VEZXN0cm95KCk7XG5cdH0sXG5cblx0X21vdXNlU3RhcnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuXG5cdFx0dGhpcy5vcG9zID0gWyBldmVudC5wYWdlWCwgZXZlbnQucGFnZVkgXTtcblx0XHR0aGlzLmVsZW1lbnRQb3MgPSAkKCB0aGlzLmVsZW1lbnRbIDAgXSApLm9mZnNldCgpO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5zZWxlY3RlZXMgPSAkKCBvcHRpb25zLmZpbHRlciwgdGhpcy5lbGVtZW50WyAwIF0gKTtcblxuXHRcdHRoaXMuX3RyaWdnZXIoIFwic3RhcnRcIiwgZXZlbnQgKTtcblxuXHRcdCQoIG9wdGlvbnMuYXBwZW5kVG8gKS5hcHBlbmQoIHRoaXMuaGVscGVyICk7XG5cblx0XHQvLyBwb3NpdGlvbiBoZWxwZXIgKGxhc3NvKVxuXHRcdHRoaXMuaGVscGVyLmNzcygge1xuXHRcdFx0XCJsZWZ0XCI6IGV2ZW50LnBhZ2VYLFxuXHRcdFx0XCJ0b3BcIjogZXZlbnQucGFnZVksXG5cdFx0XHRcIndpZHRoXCI6IDAsXG5cdFx0XHRcImhlaWdodFwiOiAwXG5cdFx0fSApO1xuXG5cdFx0aWYgKCBvcHRpb25zLmF1dG9SZWZyZXNoICkge1xuXHRcdFx0dGhpcy5yZWZyZXNoKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zZWxlY3RlZXMuZmlsdGVyKCBcIi51aS1zZWxlY3RlZFwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZWN0ZWUgPSAkLmRhdGEoIHRoaXMsIFwic2VsZWN0YWJsZS1pdGVtXCIgKTtcblx0XHRcdHNlbGVjdGVlLnN0YXJ0c2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtleSApIHtcblx0XHRcdFx0dGhhdC5fcmVtb3ZlQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXNlbGVjdGVkXCIgKTtcblx0XHRcdFx0c2VsZWN0ZWUuc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dGhhdC5fYWRkQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXVuc2VsZWN0aW5nXCIgKTtcblx0XHRcdFx0c2VsZWN0ZWUudW5zZWxlY3RpbmcgPSB0cnVlO1xuXG5cdFx0XHRcdC8vIHNlbGVjdGFibGUgVU5TRUxFQ1RJTkcgY2FsbGJhY2tcblx0XHRcdFx0dGhhdC5fdHJpZ2dlciggXCJ1bnNlbGVjdGluZ1wiLCBldmVudCwge1xuXHRcdFx0XHRcdHVuc2VsZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHQkKCBldmVudC50YXJnZXQgKS5wYXJlbnRzKCkuYWRkQmFjaygpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGRvU2VsZWN0LFxuXHRcdFx0XHRzZWxlY3RlZSA9ICQuZGF0YSggdGhpcywgXCJzZWxlY3RhYmxlLWl0ZW1cIiApO1xuXHRcdFx0aWYgKCBzZWxlY3RlZSApIHtcblx0XHRcdFx0ZG9TZWxlY3QgPSAoICFldmVudC5tZXRhS2V5ICYmICFldmVudC5jdHJsS2V5ICkgfHxcblx0XHRcdFx0XHQhc2VsZWN0ZWUuJGVsZW1lbnQuaGFzQ2xhc3MoIFwidWktc2VsZWN0ZWRcIiApO1xuXHRcdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggc2VsZWN0ZWUuJGVsZW1lbnQsIGRvU2VsZWN0ID8gXCJ1aS11bnNlbGVjdGluZ1wiIDogXCJ1aS1zZWxlY3RlZFwiIClcblx0XHRcdFx0XHQuX2FkZENsYXNzKCBzZWxlY3RlZS4kZWxlbWVudCwgZG9TZWxlY3QgPyBcInVpLXNlbGVjdGluZ1wiIDogXCJ1aS11bnNlbGVjdGluZ1wiICk7XG5cdFx0XHRcdHNlbGVjdGVlLnVuc2VsZWN0aW5nID0gIWRvU2VsZWN0O1xuXHRcdFx0XHRzZWxlY3RlZS5zZWxlY3RpbmcgPSBkb1NlbGVjdDtcblx0XHRcdFx0c2VsZWN0ZWUuc2VsZWN0ZWQgPSBkb1NlbGVjdDtcblxuXHRcdFx0XHQvLyBzZWxlY3RhYmxlIChVTilTRUxFQ1RJTkcgY2FsbGJhY2tcblx0XHRcdFx0aWYgKCBkb1NlbGVjdCApIHtcblx0XHRcdFx0XHR0aGF0Ll90cmlnZ2VyKCBcInNlbGVjdGluZ1wiLCBldmVudCwge1xuXHRcdFx0XHRcdFx0c2VsZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwidW5zZWxlY3RpbmdcIiwgZXZlbnQsIHtcblx0XHRcdFx0XHRcdHVuc2VsZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSxcblxuXHRfbW91c2VEcmFnOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHR0aGlzLmRyYWdnZWQgPSB0cnVlO1xuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIHRtcCxcblx0XHRcdHRoYXQgPSB0aGlzLFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcblx0XHRcdHgxID0gdGhpcy5vcG9zWyAwIF0sXG5cdFx0XHR5MSA9IHRoaXMub3Bvc1sgMSBdLFxuXHRcdFx0eDIgPSBldmVudC5wYWdlWCxcblx0XHRcdHkyID0gZXZlbnQucGFnZVk7XG5cblx0XHRpZiAoIHgxID4geDIgKSB7IHRtcCA9IHgyOyB4MiA9IHgxOyB4MSA9IHRtcDsgfVxuXHRcdGlmICggeTEgPiB5MiApIHsgdG1wID0geTI7IHkyID0geTE7IHkxID0gdG1wOyB9XG5cdFx0dGhpcy5oZWxwZXIuY3NzKCB7IGxlZnQ6IHgxLCB0b3A6IHkxLCB3aWR0aDogeDIgLSB4MSwgaGVpZ2h0OiB5MiAtIHkxIH0gKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWVzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHNlbGVjdGVlID0gJC5kYXRhKCB0aGlzLCBcInNlbGVjdGFibGUtaXRlbVwiICksXG5cdFx0XHRcdGhpdCA9IGZhbHNlLFxuXHRcdFx0XHRvZmZzZXQgPSB7fTtcblxuXHRcdFx0Ly9wcmV2ZW50IGhlbHBlciBmcm9tIGJlaW5nIHNlbGVjdGVkIGlmIGFwcGVuZFRvOiBzZWxlY3RhYmxlXG5cdFx0XHRpZiAoICFzZWxlY3RlZSB8fCBzZWxlY3RlZS5lbGVtZW50ID09PSB0aGF0LmVsZW1lbnRbIDAgXSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRvZmZzZXQubGVmdCAgID0gc2VsZWN0ZWUubGVmdCAgICsgdGhhdC5lbGVtZW50UG9zLmxlZnQ7XG5cdFx0XHRvZmZzZXQucmlnaHQgID0gc2VsZWN0ZWUucmlnaHQgICsgdGhhdC5lbGVtZW50UG9zLmxlZnQ7XG5cdFx0XHRvZmZzZXQudG9wICAgID0gc2VsZWN0ZWUudG9wICAgICsgdGhhdC5lbGVtZW50UG9zLnRvcDtcblx0XHRcdG9mZnNldC5ib3R0b20gPSBzZWxlY3RlZS5ib3R0b20gKyB0aGF0LmVsZW1lbnRQb3MudG9wO1xuXG5cdFx0XHRpZiAoIG9wdGlvbnMudG9sZXJhbmNlID09PSBcInRvdWNoXCIgKSB7XG5cdFx0XHRcdGhpdCA9ICggISggb2Zmc2V0LmxlZnQgPiB4MiB8fCBvZmZzZXQucmlnaHQgPCB4MSB8fCBvZmZzZXQudG9wID4geTIgfHxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJvdHRvbSA8IHkxICkgKTtcblx0XHRcdH0gZWxzZSBpZiAoIG9wdGlvbnMudG9sZXJhbmNlID09PSBcImZpdFwiICkge1xuXHRcdFx0XHRoaXQgPSAoIG9mZnNldC5sZWZ0ID4geDEgJiYgb2Zmc2V0LnJpZ2h0IDwgeDIgJiYgb2Zmc2V0LnRvcCA+IHkxICYmXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldC5ib3R0b20gPCB5MiApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGhpdCApIHtcblxuXHRcdFx0XHQvLyBTRUxFQ1Rcblx0XHRcdFx0aWYgKCBzZWxlY3RlZS5zZWxlY3RlZCApIHtcblx0XHRcdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggc2VsZWN0ZWUuJGVsZW1lbnQsIFwidWktc2VsZWN0ZWRcIiApO1xuXHRcdFx0XHRcdHNlbGVjdGVlLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBzZWxlY3RlZS51bnNlbGVjdGluZyApIHtcblx0XHRcdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggc2VsZWN0ZWUuJGVsZW1lbnQsIFwidWktdW5zZWxlY3RpbmdcIiApO1xuXHRcdFx0XHRcdHNlbGVjdGVlLnVuc2VsZWN0aW5nID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhc2VsZWN0ZWUuc2VsZWN0aW5nICkge1xuXHRcdFx0XHRcdHRoYXQuX2FkZENsYXNzKCBzZWxlY3RlZS4kZWxlbWVudCwgXCJ1aS1zZWxlY3RpbmdcIiApO1xuXHRcdFx0XHRcdHNlbGVjdGVlLnNlbGVjdGluZyA9IHRydWU7XG5cblx0XHRcdFx0XHQvLyBzZWxlY3RhYmxlIFNFTEVDVElORyBjYWxsYmFja1xuXHRcdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwic2VsZWN0aW5nXCIsIGV2ZW50LCB7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpbmc6IHNlbGVjdGVlLmVsZW1lbnRcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gVU5TRUxFQ1Rcblx0XHRcdFx0aWYgKCBzZWxlY3RlZS5zZWxlY3RpbmcgKSB7XG5cdFx0XHRcdFx0aWYgKCAoIGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSApICYmIHNlbGVjdGVlLnN0YXJ0c2VsZWN0ZWQgKSB7XG5cdFx0XHRcdFx0XHR0aGF0Ll9yZW1vdmVDbGFzcyggc2VsZWN0ZWUuJGVsZW1lbnQsIFwidWktc2VsZWN0aW5nXCIgKTtcblx0XHRcdFx0XHRcdHNlbGVjdGVlLnNlbGVjdGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0dGhhdC5fYWRkQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXNlbGVjdGVkXCIgKTtcblx0XHRcdFx0XHRcdHNlbGVjdGVlLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhhdC5fcmVtb3ZlQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXNlbGVjdGluZ1wiICk7XG5cdFx0XHRcdFx0XHRzZWxlY3RlZS5zZWxlY3RpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmICggc2VsZWN0ZWUuc3RhcnRzZWxlY3RlZCApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5fYWRkQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXVuc2VsZWN0aW5nXCIgKTtcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWUudW5zZWxlY3RpbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBzZWxlY3RhYmxlIFVOU0VMRUNUSU5HIGNhbGxiYWNrXG5cdFx0XHRcdFx0XHR0aGF0Ll90cmlnZ2VyKCBcInVuc2VsZWN0aW5nXCIsIGV2ZW50LCB7XG5cdFx0XHRcdFx0XHRcdHVuc2VsZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggc2VsZWN0ZWUuc2VsZWN0ZWQgKSB7XG5cdFx0XHRcdFx0aWYgKCAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhc2VsZWN0ZWUuc3RhcnRzZWxlY3RlZCApIHtcblx0XHRcdFx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCBzZWxlY3RlZS4kZWxlbWVudCwgXCJ1aS1zZWxlY3RlZFwiICk7XG5cdFx0XHRcdFx0XHRzZWxlY3RlZS5zZWxlY3RlZCA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggc2VsZWN0ZWUuJGVsZW1lbnQsIFwidWktdW5zZWxlY3RpbmdcIiApO1xuXHRcdFx0XHRcdFx0c2VsZWN0ZWUudW5zZWxlY3RpbmcgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHQvLyBzZWxlY3RhYmxlIFVOU0VMRUNUSU5HIGNhbGxiYWNrXG5cdFx0XHRcdFx0XHR0aGF0Ll90cmlnZ2VyKCBcInVuc2VsZWN0aW5nXCIsIGV2ZW50LCB7XG5cdFx0XHRcdFx0XHRcdHVuc2VsZWN0aW5nOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdF9tb3VzZVN0b3A6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cblx0XHR0aGlzLmRyYWdnZWQgPSBmYWxzZTtcblxuXHRcdCQoIFwiLnVpLXVuc2VsZWN0aW5nXCIsIHRoaXMuZWxlbWVudFsgMCBdICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZWN0ZWUgPSAkLmRhdGEoIHRoaXMsIFwic2VsZWN0YWJsZS1pdGVtXCIgKTtcblx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCBzZWxlY3RlZS4kZWxlbWVudCwgXCJ1aS11bnNlbGVjdGluZ1wiICk7XG5cdFx0XHRzZWxlY3RlZS51bnNlbGVjdGluZyA9IGZhbHNlO1xuXHRcdFx0c2VsZWN0ZWUuc3RhcnRzZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0dGhhdC5fdHJpZ2dlciggXCJ1bnNlbGVjdGVkXCIsIGV2ZW50LCB7XG5cdFx0XHRcdHVuc2VsZWN0ZWQ6IHNlbGVjdGVlLmVsZW1lbnRcblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdFx0JCggXCIudWktc2VsZWN0aW5nXCIsIHRoaXMuZWxlbWVudFsgMCBdICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZWN0ZWUgPSAkLmRhdGEoIHRoaXMsIFwic2VsZWN0YWJsZS1pdGVtXCIgKTtcblx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCBzZWxlY3RlZS4kZWxlbWVudCwgXCJ1aS1zZWxlY3RpbmdcIiApXG5cdFx0XHRcdC5fYWRkQ2xhc3MoIHNlbGVjdGVlLiRlbGVtZW50LCBcInVpLXNlbGVjdGVkXCIgKTtcblx0XHRcdHNlbGVjdGVlLnNlbGVjdGluZyA9IGZhbHNlO1xuXHRcdFx0c2VsZWN0ZWUuc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0c2VsZWN0ZWUuc3RhcnRzZWxlY3RlZCA9IHRydWU7XG5cdFx0XHR0aGF0Ll90cmlnZ2VyKCBcInNlbGVjdGVkXCIsIGV2ZW50LCB7XG5cdFx0XHRcdHNlbGVjdGVkOiBzZWxlY3RlZS5lbGVtZW50XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHRcdHRoaXMuX3RyaWdnZXIoIFwic3RvcFwiLCBldmVudCApO1xuXG5cdFx0dGhpcy5oZWxwZXIucmVtb3ZlKCk7XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFNlbGVjdG1lbnUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNlbGVjdG1lbnVcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8ganNjczpkaXNhYmxlIG1heGltdW1MaW5lTGVuZ3RoXG4vLz4+ZGVzY3JpcHRpb246IER1cGxpY2F0ZXMgYW5kIGV4dGVuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYSBuYXRpdmUgSFRNTCBzZWxlY3QgZWxlbWVudCwgYWxsb3dpbmcgaXQgdG8gYmUgY3VzdG9taXphYmxlIGluIGJlaGF2aW9yIGFuZCBhcHBlYXJhbmNlIGZhciBiZXlvbmQgdGhlIGxpbWl0YXRpb25zIG9mIGEgbmF0aXZlIHNlbGVjdC5cbi8vIGpzY3M6ZW5hYmxlIG1heGltdW1MaW5lTGVuZ3RoXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc2VsZWN0bWVudS9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9zZWxlY3RtZW51L1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2Uvc2VsZWN0bWVudS5jc3MsIC4uLy4uL3RoZW1lcy9iYXNlL2J1dHRvbi5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxudmFyIHdpZGdldHNTZWxlY3RtZW51ID0gJC53aWRnZXQoIFwidWkuc2VsZWN0bWVudVwiLCBbICQudWkuZm9ybVJlc2V0TWl4aW4sIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0ZGVmYXVsdEVsZW1lbnQ6IFwiPHNlbGVjdD5cIixcblx0b3B0aW9uczoge1xuXHRcdGFwcGVuZFRvOiBudWxsLFxuXHRcdGNsYXNzZXM6IHtcblx0XHRcdFwidWktc2VsZWN0bWVudS1idXR0b24tb3BlblwiOiBcInVpLWNvcm5lci10b3BcIixcblx0XHRcdFwidWktc2VsZWN0bWVudS1idXR0b24tY2xvc2VkXCI6IFwidWktY29ybmVyLWFsbFwiXG5cdFx0fSxcblx0XHRkaXNhYmxlZDogbnVsbCxcblx0XHRpY29uczoge1xuXHRcdFx0YnV0dG9uOiBcInVpLWljb24tdHJpYW5nbGUtMS1zXCJcblx0XHR9LFxuXHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRteTogXCJsZWZ0IHRvcFwiLFxuXHRcdFx0YXQ6IFwibGVmdCBib3R0b21cIixcblx0XHRcdGNvbGxpc2lvbjogXCJub25lXCJcblx0XHR9LFxuXHRcdHdpZHRoOiBmYWxzZSxcblxuXHRcdC8vIENhbGxiYWNrc1xuXHRcdGNoYW5nZTogbnVsbCxcblx0XHRjbG9zZTogbnVsbCxcblx0XHRmb2N1czogbnVsbCxcblx0XHRvcGVuOiBudWxsLFxuXHRcdHNlbGVjdDogbnVsbFxuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxlY3RtZW51SWQgPSB0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCBcImlkXCIgKTtcblx0XHR0aGlzLmlkcyA9IHtcblx0XHRcdGVsZW1lbnQ6IHNlbGVjdG1lbnVJZCxcblx0XHRcdGJ1dHRvbjogc2VsZWN0bWVudUlkICsgXCItYnV0dG9uXCIsXG5cdFx0XHRtZW51OiBzZWxlY3RtZW51SWQgKyBcIi1tZW51XCJcblx0XHR9O1xuXG5cdFx0dGhpcy5fZHJhd0J1dHRvbigpO1xuXHRcdHRoaXMuX2RyYXdNZW51KCk7XG5cdFx0dGhpcy5fYmluZEZvcm1SZXNldEhhbmRsZXIoKTtcblxuXHRcdHRoaXMuX3JlbmRlcmVkID0gZmFsc2U7XG5cdFx0dGhpcy5tZW51SXRlbXMgPSAkKCk7XG5cdH0sXG5cblx0X2RyYXdCdXR0b246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpY29uLFxuXHRcdFx0dGhhdCA9IHRoaXMsXG5cdFx0XHRpdGVtID0gdGhpcy5fcGFyc2VPcHRpb24oXG5cdFx0XHRcdHRoaXMuZWxlbWVudC5maW5kKCBcIm9wdGlvbjpzZWxlY3RlZFwiICksXG5cdFx0XHRcdHRoaXMuZWxlbWVudFsgMCBdLnNlbGVjdGVkSW5kZXhcblx0XHRcdCk7XG5cblx0XHQvLyBBc3NvY2lhdGUgZXhpc3RpbmcgbGFiZWwgd2l0aCB0aGUgbmV3IGJ1dHRvblxuXHRcdHRoaXMubGFiZWxzID0gdGhpcy5lbGVtZW50LmxhYmVscygpLmF0dHIoIFwiZm9yXCIsIHRoaXMuaWRzLmJ1dHRvbiApO1xuXHRcdHRoaXMuX29uKCB0aGlzLmxhYmVscywge1xuXHRcdFx0Y2xpY2s6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dGhpcy5idXR0b24uZm9jdXMoKTtcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHQvLyBIaWRlIG9yaWdpbmFsIHNlbGVjdCBlbGVtZW50XG5cdFx0dGhpcy5lbGVtZW50LmhpZGUoKTtcblxuXHRcdC8vIENyZWF0ZSBidXR0b25cblx0XHR0aGlzLmJ1dHRvbiA9ICQoIFwiPHNwYW4+XCIsIHtcblx0XHRcdHRhYmluZGV4OiB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPyAtMSA6IDAsXG5cdFx0XHRpZDogdGhpcy5pZHMuYnV0dG9uLFxuXHRcdFx0cm9sZTogXCJjb21ib2JveFwiLFxuXHRcdFx0XCJhcmlhLWV4cGFuZGVkXCI6IFwiZmFsc2VcIixcblx0XHRcdFwiYXJpYS1hdXRvY29tcGxldGVcIjogXCJsaXN0XCIsXG5cdFx0XHRcImFyaWEtb3duc1wiOiB0aGlzLmlkcy5tZW51LFxuXHRcdFx0XCJhcmlhLWhhc3BvcHVwXCI6IFwidHJ1ZVwiLFxuXHRcdFx0dGl0bGU6IHRoaXMuZWxlbWVudC5hdHRyKCBcInRpdGxlXCIgKVxuXHRcdH0gKVxuXHRcdFx0Lmluc2VydEFmdGVyKCB0aGlzLmVsZW1lbnQgKTtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmJ1dHRvbiwgXCJ1aS1zZWxlY3RtZW51LWJ1dHRvbiB1aS1zZWxlY3RtZW51LWJ1dHRvbi1jbG9zZWRcIixcblx0XHRcdFwidWktYnV0dG9uIHVpLXdpZGdldFwiICk7XG5cblx0XHRpY29uID0gJCggXCI8c3Bhbj5cIiApLmFwcGVuZFRvKCB0aGlzLmJ1dHRvbiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCBpY29uLCBcInVpLXNlbGVjdG1lbnUtaWNvblwiLCBcInVpLWljb24gXCIgKyB0aGlzLm9wdGlvbnMuaWNvbnMuYnV0dG9uICk7XG5cdFx0dGhpcy5idXR0b25JdGVtID0gdGhpcy5fcmVuZGVyQnV0dG9uSXRlbSggaXRlbSApXG5cdFx0XHQuYXBwZW5kVG8oIHRoaXMuYnV0dG9uICk7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy53aWR0aCAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLl9yZXNpemVCdXR0b24oKTtcblx0XHR9XG5cblx0XHR0aGlzLl9vbiggdGhpcy5idXR0b24sIHRoaXMuX2J1dHRvbkV2ZW50cyApO1xuXHRcdHRoaXMuYnV0dG9uLm9uZSggXCJmb2N1c2luXCIsIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEZWxheSByZW5kZXJpbmcgdGhlIG1lbnUgaXRlbXMgdW50aWwgdGhlIGJ1dHRvbiByZWNlaXZlcyBmb2N1cy5cblx0XHRcdC8vIFRoZSBtZW51IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW5kZXJlZCB2aWEgYSBwcm9ncmFtbWF0aWMgb3Blbi5cblx0XHRcdGlmICggIXRoYXQuX3JlbmRlcmVkICkge1xuXHRcdFx0XHR0aGF0Ll9yZWZyZXNoTWVudSgpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfZHJhd01lbnU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0aGF0ID0gdGhpcztcblxuXHRcdC8vIENyZWF0ZSBtZW51XG5cdFx0dGhpcy5tZW51ID0gJCggXCI8dWw+XCIsIHtcblx0XHRcdFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG5cdFx0XHRcImFyaWEtbGFiZWxsZWRieVwiOiB0aGlzLmlkcy5idXR0b24sXG5cdFx0XHRpZDogdGhpcy5pZHMubWVudVxuXHRcdH0gKTtcblxuXHRcdC8vIFdyYXAgbWVudVxuXHRcdHRoaXMubWVudVdyYXAgPSAkKCBcIjxkaXY+XCIgKS5hcHBlbmQoIHRoaXMubWVudSApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLm1lbnVXcmFwLCBcInVpLXNlbGVjdG1lbnUtbWVudVwiLCBcInVpLWZyb250XCIgKTtcblx0XHR0aGlzLm1lbnVXcmFwLmFwcGVuZFRvKCB0aGlzLl9hcHBlbmRUbygpICk7XG5cblx0XHQvLyBJbml0aWFsaXplIG1lbnUgd2lkZ2V0XG5cdFx0dGhpcy5tZW51SW5zdGFuY2UgPSB0aGlzLm1lbnVcblx0XHRcdC5tZW51KCB7XG5cdFx0XHRcdGNsYXNzZXM6IHtcblx0XHRcdFx0XHRcInVpLW1lbnVcIjogXCJ1aS1jb3JuZXItYm90dG9tXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0cm9sZTogXCJsaXN0Ym94XCIsXG5cdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24oIGV2ZW50LCB1aSApIHtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHRcdFx0Ly8gSWYgdGhlIGl0ZW0gd2FzIHNlbGVjdGVkIHZpYSBhIGNsaWNrLCB0aGUgdGV4dCBzZWxlY3Rpb25cblx0XHRcdFx0XHQvLyB3aWxsIGJlIGRlc3Ryb3llZCBpbiBJRVxuXHRcdFx0XHRcdHRoYXQuX3NldFNlbGVjdGlvbigpO1xuXG5cdFx0XHRcdFx0dGhhdC5fc2VsZWN0KCB1aS5pdGVtLmRhdGEoIFwidWktc2VsZWN0bWVudS1pdGVtXCIgKSwgZXZlbnQgKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9jdXM6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7XG5cdFx0XHRcdFx0dmFyIGl0ZW0gPSB1aS5pdGVtLmRhdGEoIFwidWktc2VsZWN0bWVudS1pdGVtXCIgKTtcblxuXHRcdFx0XHRcdC8vIFByZXZlbnQgaW5pdGFsIGZvY3VzIGZyb20gZmlyaW5nIGFuZCBjaGVjayBpZiBpdHMgYSBuZXdseSBmb2N1c2VkIGl0ZW1cblx0XHRcdFx0XHRpZiAoIHRoYXQuZm9jdXNJbmRleCAhPSBudWxsICYmIGl0ZW0uaW5kZXggIT09IHRoYXQuZm9jdXNJbmRleCApIHtcblx0XHRcdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwiZm9jdXNcIiwgZXZlbnQsIHsgaXRlbTogaXRlbSB9ICk7XG5cdFx0XHRcdFx0XHRpZiAoICF0aGF0LmlzT3BlbiApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5fc2VsZWN0KCBpdGVtLCBldmVudCApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGF0LmZvY3VzSW5kZXggPSBpdGVtLmluZGV4O1xuXG5cdFx0XHRcdFx0dGhhdC5idXR0b24uYXR0ciggXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIixcblx0XHRcdFx0XHRcdHRoYXQubWVudUl0ZW1zLmVxKCBpdGVtLmluZGV4ICkuYXR0ciggXCJpZFwiICkgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApXG5cdFx0XHQubWVudSggXCJpbnN0YW5jZVwiICk7XG5cblx0XHQvLyBEb24ndCBjbG9zZSB0aGUgbWVudSBvbiBtb3VzZWxlYXZlXG5cdFx0dGhpcy5tZW51SW5zdGFuY2UuX29mZiggdGhpcy5tZW51LCBcIm1vdXNlbGVhdmVcIiApO1xuXG5cdFx0Ly8gQ2FuY2VsIHRoZSBtZW51J3MgY29sbGFwc2VBbGwgb24gZG9jdW1lbnQgY2xpY2tcblx0XHR0aGlzLm1lbnVJbnN0YW5jZS5fY2xvc2VPbkRvY3VtZW50Q2xpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdFx0Ly8gU2VsZWN0cyBvZnRlbiBjb250YWluIGVtcHR5IGl0ZW1zLCBidXQgbmV2ZXIgY29udGFpbiBkaXZpZGVyc1xuXHRcdHRoaXMubWVudUluc3RhbmNlLl9pc0RpdmlkZXIgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXHR9LFxuXG5cdHJlZnJlc2g6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3JlZnJlc2hNZW51KCk7XG5cdFx0dGhpcy5idXR0b25JdGVtLnJlcGxhY2VXaXRoKFxuXHRcdFx0dGhpcy5idXR0b25JdGVtID0gdGhpcy5fcmVuZGVyQnV0dG9uSXRlbShcblxuXHRcdFx0XHQvLyBGYWxsIGJhY2sgdG8gYW4gZW1wdHkgb2JqZWN0IGluIGNhc2UgdGhlcmUgYXJlIG5vIG9wdGlvbnNcblx0XHRcdFx0dGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkuZGF0YSggXCJ1aS1zZWxlY3RtZW51LWl0ZW1cIiApIHx8IHt9XG5cdFx0XHQpXG5cdFx0KTtcblx0XHRpZiAoIHRoaXMub3B0aW9ucy53aWR0aCA9PT0gbnVsbCApIHtcblx0XHRcdHRoaXMuX3Jlc2l6ZUJ1dHRvbigpO1xuXHRcdH1cblx0fSxcblxuXHRfcmVmcmVzaE1lbnU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpdGVtLFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMuZWxlbWVudC5maW5kKCBcIm9wdGlvblwiICk7XG5cblx0XHR0aGlzLm1lbnUuZW1wdHkoKTtcblxuXHRcdHRoaXMuX3BhcnNlT3B0aW9ucyggb3B0aW9ucyApO1xuXHRcdHRoaXMuX3JlbmRlck1lbnUoIHRoaXMubWVudSwgdGhpcy5pdGVtcyApO1xuXG5cdFx0dGhpcy5tZW51SW5zdGFuY2UucmVmcmVzaCgpO1xuXHRcdHRoaXMubWVudUl0ZW1zID0gdGhpcy5tZW51LmZpbmQoIFwibGlcIiApXG5cdFx0XHQubm90KCBcIi51aS1zZWxlY3RtZW51LW9wdGdyb3VwXCIgKVxuXHRcdFx0XHQuZmluZCggXCIudWktbWVudS1pdGVtLXdyYXBwZXJcIiApO1xuXG5cdFx0dGhpcy5fcmVuZGVyZWQgPSB0cnVlO1xuXG5cdFx0aWYgKCAhb3B0aW9ucy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkSXRlbSgpO1xuXG5cdFx0Ly8gVXBkYXRlIHRoZSBtZW51IHRvIGhhdmUgdGhlIGNvcnJlY3QgaXRlbSBmb2N1c2VkXG5cdFx0dGhpcy5tZW51SW5zdGFuY2UuZm9jdXMoIG51bGwsIGl0ZW0gKTtcblx0XHR0aGlzLl9zZXRBcmlhKCBpdGVtLmRhdGEoIFwidWktc2VsZWN0bWVudS1pdGVtXCIgKSApO1xuXG5cdFx0Ly8gU2V0IGRpc2FibGVkIHN0YXRlXG5cdFx0dGhpcy5fc2V0T3B0aW9uKCBcImRpc2FibGVkXCIsIHRoaXMuZWxlbWVudC5wcm9wKCBcImRpc2FibGVkXCIgKSApO1xuXHR9LFxuXG5cdG9wZW46IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kaXNhYmxlZCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoZSBtZW51IGlzIGJlaW5nIG9wZW5lZCwgcmVuZGVyIHRoZSBpdGVtc1xuXHRcdGlmICggIXRoaXMuX3JlbmRlcmVkICkge1xuXHRcdFx0dGhpcy5fcmVmcmVzaE1lbnUoKTtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBNZW51IGNsZWFycyBmb2N1cyBvbiBjbG9zZSwgcmVzZXQgZm9jdXMgdG8gc2VsZWN0ZWQgaXRlbVxuXHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHRoaXMubWVudS5maW5kKCBcIi51aS1zdGF0ZS1hY3RpdmVcIiApLCBudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0XHR0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyggbnVsbCwgdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkgKTtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGVyZSBhcmUgbm8gb3B0aW9ucywgZG9uJ3Qgb3BlbiB0aGUgbWVudVxuXHRcdGlmICggIXRoaXMubWVudUl0ZW1zLmxlbmd0aCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzT3BlbiA9IHRydWU7XG5cdFx0dGhpcy5fdG9nZ2xlQXR0cigpO1xuXHRcdHRoaXMuX3Jlc2l6ZU1lbnUoKTtcblx0XHR0aGlzLl9wb3NpdGlvbigpO1xuXG5cdFx0dGhpcy5fb24oIHRoaXMuZG9jdW1lbnQsIHRoaXMuX2RvY3VtZW50Q2xpY2sgKTtcblxuXHRcdHRoaXMuX3RyaWdnZXIoIFwib3BlblwiLCBldmVudCApO1xuXHR9LFxuXG5cdF9wb3NpdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5tZW51V3JhcC5wb3NpdGlvbiggJC5leHRlbmQoIHsgb2Y6IHRoaXMuYnV0dG9uIH0sIHRoaXMub3B0aW9ucy5wb3NpdGlvbiApICk7XG5cdH0sXG5cblx0Y2xvc2U6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoICF0aGlzLmlzT3BlbiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzT3BlbiA9IGZhbHNlO1xuXHRcdHRoaXMuX3RvZ2dsZUF0dHIoKTtcblxuXHRcdHRoaXMucmFuZ2UgPSBudWxsO1xuXHRcdHRoaXMuX29mZiggdGhpcy5kb2N1bWVudCApO1xuXG5cdFx0dGhpcy5fdHJpZ2dlciggXCJjbG9zZVwiLCBldmVudCApO1xuXHR9LFxuXG5cdHdpZGdldDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuYnV0dG9uO1xuXHR9LFxuXG5cdG1lbnVXaWRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1lbnU7XG5cdH0sXG5cblx0X3JlbmRlckJ1dHRvbkl0ZW06IGZ1bmN0aW9uKCBpdGVtICkge1xuXHRcdHZhciBidXR0b25JdGVtID0gJCggXCI8c3Bhbj5cIiApO1xuXG5cdFx0dGhpcy5fc2V0VGV4dCggYnV0dG9uSXRlbSwgaXRlbS5sYWJlbCApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCBidXR0b25JdGVtLCBcInVpLXNlbGVjdG1lbnUtdGV4dFwiICk7XG5cblx0XHRyZXR1cm4gYnV0dG9uSXRlbTtcblx0fSxcblxuXHRfcmVuZGVyTWVudTogZnVuY3Rpb24oIHVsLCBpdGVtcyApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRjdXJyZW50T3B0Z3JvdXAgPSBcIlwiO1xuXG5cdFx0JC5lYWNoKCBpdGVtcywgZnVuY3Rpb24oIGluZGV4LCBpdGVtICkge1xuXHRcdFx0dmFyIGxpO1xuXG5cdFx0XHRpZiAoIGl0ZW0ub3B0Z3JvdXAgIT09IGN1cnJlbnRPcHRncm91cCApIHtcblx0XHRcdFx0bGkgPSAkKCBcIjxsaT5cIiwge1xuXHRcdFx0XHRcdHRleHQ6IGl0ZW0ub3B0Z3JvdXBcblx0XHRcdFx0fSApO1xuXHRcdFx0XHR0aGF0Ll9hZGRDbGFzcyggbGksIFwidWktc2VsZWN0bWVudS1vcHRncm91cFwiLCBcInVpLW1lbnUtZGl2aWRlclwiICtcblx0XHRcdFx0XHQoIGl0ZW0uZWxlbWVudC5wYXJlbnQoIFwib3B0Z3JvdXBcIiApLnByb3AoIFwiZGlzYWJsZWRcIiApID9cblx0XHRcdFx0XHRcdFwiIHVpLXN0YXRlLWRpc2FibGVkXCIgOlxuXHRcdFx0XHRcdFx0XCJcIiApICk7XG5cblx0XHRcdFx0bGkuYXBwZW5kVG8oIHVsICk7XG5cblx0XHRcdFx0Y3VycmVudE9wdGdyb3VwID0gaXRlbS5vcHRncm91cDtcblx0XHRcdH1cblxuXHRcdFx0dGhhdC5fcmVuZGVySXRlbURhdGEoIHVsLCBpdGVtICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9yZW5kZXJJdGVtRGF0YTogZnVuY3Rpb24oIHVsLCBpdGVtICkge1xuXHRcdHJldHVybiB0aGlzLl9yZW5kZXJJdGVtKCB1bCwgaXRlbSApLmRhdGEoIFwidWktc2VsZWN0bWVudS1pdGVtXCIsIGl0ZW0gKTtcblx0fSxcblxuXHRfcmVuZGVySXRlbTogZnVuY3Rpb24oIHVsLCBpdGVtICkge1xuXHRcdHZhciBsaSA9ICQoIFwiPGxpPlwiICksXG5cdFx0XHR3cmFwcGVyID0gJCggXCI8ZGl2PlwiLCB7XG5cdFx0XHRcdHRpdGxlOiBpdGVtLmVsZW1lbnQuYXR0ciggXCJ0aXRsZVwiIClcblx0XHRcdH0gKTtcblxuXHRcdGlmICggaXRlbS5kaXNhYmxlZCApIHtcblx0XHRcdHRoaXMuX2FkZENsYXNzKCBsaSwgbnVsbCwgXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiICk7XG5cdFx0fVxuXHRcdHRoaXMuX3NldFRleHQoIHdyYXBwZXIsIGl0ZW0ubGFiZWwgKTtcblxuXHRcdHJldHVybiBsaS5hcHBlbmQoIHdyYXBwZXIgKS5hcHBlbmRUbyggdWwgKTtcblx0fSxcblxuXHRfc2V0VGV4dDogZnVuY3Rpb24oIGVsZW1lbnQsIHZhbHVlICkge1xuXHRcdGlmICggdmFsdWUgKSB7XG5cdFx0XHRlbGVtZW50LnRleHQoIHZhbHVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW1lbnQuaHRtbCggXCImIzE2MDtcIiApO1xuXHRcdH1cblx0fSxcblxuXHRfbW92ZTogZnVuY3Rpb24oIGRpcmVjdGlvbiwgZXZlbnQgKSB7XG5cdFx0dmFyIGl0ZW0sIG5leHQsXG5cdFx0XHRmaWx0ZXIgPSBcIi51aS1tZW51LWl0ZW1cIjtcblxuXHRcdGlmICggdGhpcy5pc09wZW4gKSB7XG5cdFx0XHRpdGVtID0gdGhpcy5tZW51SXRlbXMuZXEoIHRoaXMuZm9jdXNJbmRleCApLnBhcmVudCggXCJsaVwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGl0ZW0gPSB0aGlzLm1lbnVJdGVtcy5lcSggdGhpcy5lbGVtZW50WyAwIF0uc2VsZWN0ZWRJbmRleCApLnBhcmVudCggXCJsaVwiICk7XG5cdFx0XHRmaWx0ZXIgKz0gXCI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZClcIjtcblx0XHR9XG5cblx0XHRpZiAoIGRpcmVjdGlvbiA9PT0gXCJmaXJzdFwiIHx8IGRpcmVjdGlvbiA9PT0gXCJsYXN0XCIgKSB7XG5cdFx0XHRuZXh0ID0gaXRlbVsgZGlyZWN0aW9uID09PSBcImZpcnN0XCIgPyBcInByZXZBbGxcIiA6IFwibmV4dEFsbFwiIF0oIGZpbHRlciApLmVxKCAtMSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRuZXh0ID0gaXRlbVsgZGlyZWN0aW9uICsgXCJBbGxcIiBdKCBmaWx0ZXIgKS5lcSggMCApO1xuXHRcdH1cblxuXHRcdGlmICggbmV4dC5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyggZXZlbnQsIG5leHQgKTtcblx0XHR9XG5cdH0sXG5cblx0X2dldFNlbGVjdGVkSXRlbTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMubWVudUl0ZW1zLmVxKCB0aGlzLmVsZW1lbnRbIDAgXS5zZWxlY3RlZEluZGV4ICkucGFyZW50KCBcImxpXCIgKTtcblx0fSxcblxuXHRfdG9nZ2xlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dGhpc1sgdGhpcy5pc09wZW4gPyBcImNsb3NlXCIgOiBcIm9wZW5cIiBdKCBldmVudCApO1xuXHR9LFxuXG5cdF9zZXRTZWxlY3Rpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxlY3Rpb247XG5cblx0XHRpZiAoICF0aGlzLnJhbmdlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggd2luZG93LmdldFNlbGVjdGlvbiApIHtcblx0XHRcdHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcblx0XHRcdHNlbGVjdGlvbi5hZGRSYW5nZSggdGhpcy5yYW5nZSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmFuZ2Uuc2VsZWN0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogSUVcblx0XHQvLyBTZXR0aW5nIHRoZSB0ZXh0IHNlbGVjdGlvbiBraWxscyB0aGUgYnV0dG9uIGZvY3VzIGluIElFLCBidXRcblx0XHQvLyByZXN0b3JpbmcgdGhlIGZvY3VzIGRvZXNuJ3Qga2lsbCB0aGUgc2VsZWN0aW9uLlxuXHRcdHRoaXMuYnV0dG9uLmZvY3VzKCk7XG5cdH0sXG5cblx0X2RvY3VtZW50Q2xpY2s6IHtcblx0XHRtb3VzZWRvd246IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdGlmICggIXRoaXMuaXNPcGVuICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggISQoIGV2ZW50LnRhcmdldCApLmNsb3Nlc3QoIFwiLnVpLXNlbGVjdG1lbnUtbWVudSwgI1wiICtcblx0XHRcdFx0XHQkLnVpLmVzY2FwZVNlbGVjdG9yKCB0aGlzLmlkcy5idXR0b24gKSApLmxlbmd0aCApIHtcblx0XHRcdFx0dGhpcy5jbG9zZSggZXZlbnQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0X2J1dHRvbkV2ZW50czoge1xuXG5cdFx0Ly8gUHJldmVudCB0ZXh0IHNlbGVjdGlvbiBmcm9tIGJlaW5nIHJlc2V0IHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2VsZWN0bWVudSAoIzEwMTQ0KVxuXHRcdG1vdXNlZG93bjogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZWN0aW9uO1xuXG5cdFx0XHRpZiAoIHdpbmRvdy5nZXRTZWxlY3Rpb24gKSB7XG5cdFx0XHRcdHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdFx0aWYgKCBzZWxlY3Rpb24ucmFuZ2VDb3VudCApIHtcblx0XHRcdFx0XHR0aGlzLnJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoIDAgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRThcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Y2xpY2s6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHRoaXMuX3NldFNlbGVjdGlvbigpO1xuXHRcdFx0dGhpcy5fdG9nZ2xlKCBldmVudCApO1xuXHRcdH0sXG5cblx0XHRrZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgcHJldmVudERlZmF1bHQgPSB0cnVlO1xuXHRcdFx0c3dpdGNoICggZXZlbnQua2V5Q29kZSApIHtcblx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLlRBQjpcblx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkVTQ0FQRTpcblx0XHRcdFx0dGhpcy5jbG9zZSggZXZlbnQgKTtcblx0XHRcdFx0cHJldmVudERlZmF1bHQgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5FTlRFUjpcblx0XHRcdFx0aWYgKCB0aGlzLmlzT3BlbiApIHtcblx0XHRcdFx0XHR0aGlzLl9zZWxlY3RGb2N1c2VkSXRlbSggZXZlbnQgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLlVQOlxuXHRcdFx0XHRpZiAoIGV2ZW50LmFsdEtleSApIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGUoIGV2ZW50ICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fbW92ZSggXCJwcmV2XCIsIGV2ZW50ICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5ET1dOOlxuXHRcdFx0XHRpZiAoIGV2ZW50LmFsdEtleSApIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGUoIGV2ZW50ICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fbW92ZSggXCJuZXh0XCIsIGV2ZW50ICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5TUEFDRTpcblx0XHRcdFx0aWYgKCB0aGlzLmlzT3BlbiApIHtcblx0XHRcdFx0XHR0aGlzLl9zZWxlY3RGb2N1c2VkSXRlbSggZXZlbnQgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGUoIGV2ZW50ICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5MRUZUOlxuXHRcdFx0XHR0aGlzLl9tb3ZlKCBcInByZXZcIiwgZXZlbnQgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5SSUdIVDpcblx0XHRcdFx0dGhpcy5fbW92ZSggXCJuZXh0XCIsIGV2ZW50ICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAkLnVpLmtleUNvZGUuSE9NRTpcblx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLlBBR0VfVVA6XG5cdFx0XHRcdHRoaXMuX21vdmUoIFwiZmlyc3RcIiwgZXZlbnQgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5FTkQ6XG5cdFx0XHRjYXNlICQudWkua2V5Q29kZS5QQUdFX0RPV046XG5cdFx0XHRcdHRoaXMuX21vdmUoIFwibGFzdFwiLCBldmVudCApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHRoaXMubWVudS50cmlnZ2VyKCBldmVudCApO1xuXHRcdFx0XHRwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHByZXZlbnREZWZhdWx0ICkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRfc2VsZWN0Rm9jdXNlZEl0ZW06IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmVxKCB0aGlzLmZvY3VzSW5kZXggKS5wYXJlbnQoIFwibGlcIiApO1xuXHRcdGlmICggIWl0ZW0uaGFzQ2xhc3MoIFwidWktc3RhdGUtZGlzYWJsZWRcIiApICkge1xuXHRcdFx0dGhpcy5fc2VsZWN0KCBpdGVtLmRhdGEoIFwidWktc2VsZWN0bWVudS1pdGVtXCIgKSwgZXZlbnQgKTtcblx0XHR9XG5cdH0sXG5cblx0X3NlbGVjdDogZnVuY3Rpb24oIGl0ZW0sIGV2ZW50ICkge1xuXHRcdHZhciBvbGRJbmRleCA9IHRoaXMuZWxlbWVudFsgMCBdLnNlbGVjdGVkSW5kZXg7XG5cblx0XHQvLyBDaGFuZ2UgbmF0aXZlIHNlbGVjdCBlbGVtZW50XG5cdFx0dGhpcy5lbGVtZW50WyAwIF0uc2VsZWN0ZWRJbmRleCA9IGl0ZW0uaW5kZXg7XG5cdFx0dGhpcy5idXR0b25JdGVtLnJlcGxhY2VXaXRoKCB0aGlzLmJ1dHRvbkl0ZW0gPSB0aGlzLl9yZW5kZXJCdXR0b25JdGVtKCBpdGVtICkgKTtcblx0XHR0aGlzLl9zZXRBcmlhKCBpdGVtICk7XG5cdFx0dGhpcy5fdHJpZ2dlciggXCJzZWxlY3RcIiwgZXZlbnQsIHsgaXRlbTogaXRlbSB9ICk7XG5cblx0XHRpZiAoIGl0ZW0uaW5kZXggIT09IG9sZEluZGV4ICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJjaGFuZ2VcIiwgZXZlbnQsIHsgaXRlbTogaXRlbSB9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jbG9zZSggZXZlbnQgKTtcblx0fSxcblxuXHRfc2V0QXJpYTogZnVuY3Rpb24oIGl0ZW0gKSB7XG5cdFx0dmFyIGlkID0gdGhpcy5tZW51SXRlbXMuZXEoIGl0ZW0uaW5kZXggKS5hdHRyKCBcImlkXCIgKTtcblxuXHRcdHRoaXMuYnV0dG9uLmF0dHIoIHtcblx0XHRcdFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGlkLFxuXHRcdFx0XCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogaWRcblx0XHR9ICk7XG5cdFx0dGhpcy5tZW51LmF0dHIoIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIGlkICk7XG5cdH0sXG5cblx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0aWYgKCBrZXkgPT09IFwiaWNvbnNcIiApIHtcblx0XHRcdHZhciBpY29uID0gdGhpcy5idXR0b24uZmluZCggXCJzcGFuLnVpLWljb25cIiApO1xuXHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIGljb24sIG51bGwsIHRoaXMub3B0aW9ucy5pY29ucy5idXR0b24gKVxuXHRcdFx0XHQuX2FkZENsYXNzKCBpY29uLCBudWxsLCB2YWx1ZS5idXR0b24gKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBrZXkgPT09IFwiYXBwZW5kVG9cIiApIHtcblx0XHRcdHRoaXMubWVudVdyYXAuYXBwZW5kVG8oIHRoaXMuX2FwcGVuZFRvKCkgKTtcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gXCJ3aWR0aFwiICkge1xuXHRcdFx0dGhpcy5fcmVzaXplQnV0dG9uKCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRPcHRpb25EaXNhYmxlZDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHRoaXMuX3N1cGVyKCB2YWx1ZSApO1xuXG5cdFx0dGhpcy5tZW51SW5zdGFuY2Uub3B0aW9uKCBcImRpc2FibGVkXCIsIHZhbHVlICk7XG5cdFx0dGhpcy5idXR0b24uYXR0ciggXCJhcmlhLWRpc2FibGVkXCIsIHZhbHVlICk7XG5cdFx0dGhpcy5fdG9nZ2xlQ2xhc3MoIHRoaXMuYnV0dG9uLCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIsIHZhbHVlICk7XG5cblx0XHR0aGlzLmVsZW1lbnQucHJvcCggXCJkaXNhYmxlZFwiLCB2YWx1ZSApO1xuXHRcdGlmICggdmFsdWUgKSB7XG5cdFx0XHR0aGlzLmJ1dHRvbi5hdHRyKCBcInRhYmluZGV4XCIsIC0xICk7XG5cdFx0XHR0aGlzLmNsb3NlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYnV0dG9uLmF0dHIoIFwidGFiaW5kZXhcIiwgMCApO1xuXHRcdH1cblx0fSxcblxuXHRfYXBwZW5kVG86IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtZW50ID0gdGhpcy5vcHRpb25zLmFwcGVuZFRvO1xuXG5cdFx0aWYgKCBlbGVtZW50ICkge1xuXHRcdFx0ZWxlbWVudCA9IGVsZW1lbnQuanF1ZXJ5IHx8IGVsZW1lbnQubm9kZVR5cGUgP1xuXHRcdFx0XHQkKCBlbGVtZW50ICkgOlxuXHRcdFx0XHR0aGlzLmRvY3VtZW50LmZpbmQoIGVsZW1lbnQgKS5lcSggMCApO1xuXHRcdH1cblxuXHRcdGlmICggIWVsZW1lbnQgfHwgIWVsZW1lbnRbIDAgXSApIHtcblx0XHRcdGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY2xvc2VzdCggXCIudWktZnJvbnQsIGRpYWxvZ1wiICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhZWxlbWVudC5sZW5ndGggKSB7XG5cdFx0XHRlbGVtZW50ID0gdGhpcy5kb2N1bWVudFsgMCBdLmJvZHk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGVsZW1lbnQ7XG5cdH0sXG5cblx0X3RvZ2dsZUF0dHI6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuYnV0dG9uLmF0dHIoIFwiYXJpYS1leHBhbmRlZFwiLCB0aGlzLmlzT3BlbiApO1xuXG5cdFx0Ly8gV2UgY2FuJ3QgdXNlIHR3byBfdG9nZ2xlQ2xhc3MoKSBjYWxscyBoZXJlLCBiZWNhdXNlIHdlIG5lZWQgdG8gbWFrZSBzdXJlXG5cdFx0Ly8gd2UgYWx3YXlzIHJlbW92ZSBjbGFzc2VzIGZpcnN0IGFuZCBhZGQgdGhlbSBzZWNvbmQsIG90aGVyd2lzZSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGVcblx0XHQvLyBzYW1lIHRoZW1lIGNsYXNzLCBpdCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgd2UgYWRkIGl0LlxuXHRcdHRoaXMuX3JlbW92ZUNsYXNzKCB0aGlzLmJ1dHRvbiwgXCJ1aS1zZWxlY3RtZW51LWJ1dHRvbi1cIiArXG5cdFx0XHQoIHRoaXMuaXNPcGVuID8gXCJjbG9zZWRcIiA6IFwib3BlblwiICkgKVxuXHRcdFx0Ll9hZGRDbGFzcyggdGhpcy5idXR0b24sIFwidWktc2VsZWN0bWVudS1idXR0b24tXCIgK1xuXHRcdFx0XHQoIHRoaXMuaXNPcGVuID8gXCJvcGVuXCIgOiBcImNsb3NlZFwiICkgKVxuXHRcdFx0Ll90b2dnbGVDbGFzcyggdGhpcy5tZW51V3JhcCwgXCJ1aS1zZWxlY3RtZW51LW9wZW5cIiwgbnVsbCwgdGhpcy5pc09wZW4gKTtcblxuXHRcdHRoaXMubWVudS5hdHRyKCBcImFyaWEtaGlkZGVuXCIsICF0aGlzLmlzT3BlbiApO1xuXHR9LFxuXG5cdF9yZXNpemVCdXR0b246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB3aWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aDtcblxuXHRcdC8vIEZvciBgd2lkdGg6IGZhbHNlYCwganVzdCByZW1vdmUgaW5saW5lIHN0eWxlIGFuZCBzdG9wXG5cdFx0aWYgKCB3aWR0aCA9PT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLmJ1dHRvbi5jc3MoIFwid2lkdGhcIiwgXCJcIiApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZvciBgd2lkdGg6IG51bGxgLCBtYXRjaCB0aGUgd2lkdGggb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnRcblx0XHRpZiAoIHdpZHRoID09PSBudWxsICkge1xuXHRcdFx0d2lkdGggPSB0aGlzLmVsZW1lbnQuc2hvdygpLm91dGVyV2lkdGgoKTtcblx0XHRcdHRoaXMuZWxlbWVudC5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5idXR0b24ub3V0ZXJXaWR0aCggd2lkdGggKTtcblx0fSxcblxuXHRfcmVzaXplTWVudTogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5tZW51Lm91dGVyV2lkdGgoIE1hdGgubWF4KFxuXHRcdFx0dGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpLFxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTEwXG5cdFx0XHQvLyBJRTEwIHdyYXBzIGxvbmcgdGV4dCAocG9zc2libHkgYSByb3VuZGluZyBidWcpXG5cdFx0XHQvLyBzbyB3ZSBhZGQgMXB4IHRvIGF2b2lkIHRoZSB3cmFwcGluZ1xuXHRcdFx0dGhpcy5tZW51LndpZHRoKCBcIlwiICkub3V0ZXJXaWR0aCgpICsgMVxuXHRcdCkgKTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG9wdGlvbnMgPSB0aGlzLl9zdXBlcigpO1xuXG5cdFx0b3B0aW9ucy5kaXNhYmxlZCA9IHRoaXMuZWxlbWVudC5wcm9wKCBcImRpc2FibGVkXCIgKTtcblxuXHRcdHJldHVybiBvcHRpb25zO1xuXHR9LFxuXG5cdF9wYXJzZU9wdGlvbnM6IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdGRhdGEgPSBbXTtcblx0XHRvcHRpb25zLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgaXRlbSApIHtcblx0XHRcdGRhdGEucHVzaCggdGhhdC5fcGFyc2VPcHRpb24oICQoIGl0ZW0gKSwgaW5kZXggKSApO1xuXHRcdH0gKTtcblx0XHR0aGlzLml0ZW1zID0gZGF0YTtcblx0fSxcblxuXHRfcGFyc2VPcHRpb246IGZ1bmN0aW9uKCBvcHRpb24sIGluZGV4ICkge1xuXHRcdHZhciBvcHRncm91cCA9IG9wdGlvbi5wYXJlbnQoIFwib3B0Z3JvdXBcIiApO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGVsZW1lbnQ6IG9wdGlvbixcblx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdHZhbHVlOiBvcHRpb24udmFsKCksXG5cdFx0XHRsYWJlbDogb3B0aW9uLnRleHQoKSxcblx0XHRcdG9wdGdyb3VwOiBvcHRncm91cC5hdHRyKCBcImxhYmVsXCIgKSB8fCBcIlwiLFxuXHRcdFx0ZGlzYWJsZWQ6IG9wdGdyb3VwLnByb3AoIFwiZGlzYWJsZWRcIiApIHx8IG9wdGlvbi5wcm9wKCBcImRpc2FibGVkXCIgKVxuXHRcdH07XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3VuYmluZEZvcm1SZXNldEhhbmRsZXIoKTtcblx0XHR0aGlzLm1lbnVXcmFwLnJlbW92ZSgpO1xuXHRcdHRoaXMuYnV0dG9uLnJlbW92ZSgpO1xuXHRcdHRoaXMuZWxlbWVudC5zaG93KCk7XG5cdFx0dGhpcy5lbGVtZW50LnJlbW92ZVVuaXF1ZUlkKCk7XG5cdFx0dGhpcy5sYWJlbHMuYXR0ciggXCJmb3JcIiwgdGhpcy5pZHMuZWxlbWVudCApO1xuXHR9XG59IF0gKTtcblxuXG4vKiFcbiAqIGpRdWVyeSBVSSBTbGlkZXIgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNsaWRlclxuLy8+Pmdyb3VwOiBXaWRnZXRzXG4vLz4+ZGVzY3JpcHRpb246IERpc3BsYXlzIGEgZmxleGlibGUgc2xpZGVyIHdpdGggcmFuZ2VzIGFuZCBhY2Nlc3NpYmlsaXR5IHZpYSBrZXlib2FyZC5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS9zbGlkZXIvXG4vLz4+ZGVtb3M6IGh0dHA6Ly9qcXVlcnl1aS5jb20vc2xpZGVyL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2Uvc2xpZGVyLmNzc1xuLy8+PmNzcy50aGVtZTogLi4vLi4vdGhlbWVzL2Jhc2UvdGhlbWUuY3NzXG5cblxuXG52YXIgd2lkZ2V0c1NsaWRlciA9ICQud2lkZ2V0KCBcInVpLnNsaWRlclwiLCAkLnVpLm1vdXNlLCB7XG5cdHZlcnNpb246IFwiMS4xMi4xXCIsXG5cdHdpZGdldEV2ZW50UHJlZml4OiBcInNsaWRlXCIsXG5cblx0b3B0aW9uczoge1xuXHRcdGFuaW1hdGU6IGZhbHNlLFxuXHRcdGNsYXNzZXM6IHtcblx0XHRcdFwidWktc2xpZGVyXCI6IFwidWktY29ybmVyLWFsbFwiLFxuXHRcdFx0XCJ1aS1zbGlkZXItaGFuZGxlXCI6IFwidWktY29ybmVyLWFsbFwiLFxuXG5cdFx0XHQvLyBOb3RlOiB1aS13aWRnZXQtaGVhZGVyIGlzbid0IHRoZSBtb3N0IGZpdHRpbmdseSBzZW1hbnRpYyBmcmFtZXdvcmsgY2xhc3MgZm9yIHRoaXNcblx0XHRcdC8vIGVsZW1lbnQsIGJ1dCB3b3JrZWQgYmVzdCB2aXN1YWxseSB3aXRoIGEgdmFyaWV0eSBvZiB0aGVtZXNcblx0XHRcdFwidWktc2xpZGVyLXJhbmdlXCI6IFwidWktY29ybmVyLWFsbCB1aS13aWRnZXQtaGVhZGVyXCJcblx0XHR9LFxuXHRcdGRpc3RhbmNlOiAwLFxuXHRcdG1heDogMTAwLFxuXHRcdG1pbjogMCxcblx0XHRvcmllbnRhdGlvbjogXCJob3Jpem9udGFsXCIsXG5cdFx0cmFuZ2U6IGZhbHNlLFxuXHRcdHN0ZXA6IDEsXG5cdFx0dmFsdWU6IDAsXG5cdFx0dmFsdWVzOiBudWxsLFxuXG5cdFx0Ly8gQ2FsbGJhY2tzXG5cdFx0Y2hhbmdlOiBudWxsLFxuXHRcdHNsaWRlOiBudWxsLFxuXHRcdHN0YXJ0OiBudWxsLFxuXHRcdHN0b3A6IG51bGxcblx0fSxcblxuXHQvLyBOdW1iZXIgb2YgcGFnZXMgaW4gYSBzbGlkZXJcblx0Ly8gKGhvdyBtYW55IHRpbWVzIGNhbiB5b3UgcGFnZSB1cC9kb3duIHRvIGdvIHRocm91Z2ggdGhlIHdob2xlIHJhbmdlKVxuXHRudW1QYWdlczogNSxcblxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9rZXlTbGlkaW5nID0gZmFsc2U7XG5cdFx0dGhpcy5fbW91c2VTbGlkaW5nID0gZmFsc2U7XG5cdFx0dGhpcy5fYW5pbWF0ZU9mZiA9IHRydWU7XG5cdFx0dGhpcy5faGFuZGxlSW5kZXggPSBudWxsO1xuXHRcdHRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCk7XG5cdFx0dGhpcy5fbW91c2VJbml0KCk7XG5cdFx0dGhpcy5fY2FsY3VsYXRlTmV3TWF4KCk7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1zbGlkZXIgdWktc2xpZGVyLVwiICsgdGhpcy5vcmllbnRhdGlvbixcblx0XHRcdFwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50XCIgKTtcblxuXHRcdHRoaXMuX3JlZnJlc2goKTtcblxuXHRcdHRoaXMuX2FuaW1hdGVPZmYgPSBmYWxzZTtcblx0fSxcblxuXHRfcmVmcmVzaDogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fY3JlYXRlUmFuZ2UoKTtcblx0XHR0aGlzLl9jcmVhdGVIYW5kbGVzKCk7XG5cdFx0dGhpcy5fc2V0dXBFdmVudHMoKTtcblx0XHR0aGlzLl9yZWZyZXNoVmFsdWUoKTtcblx0fSxcblxuXHRfY3JlYXRlSGFuZGxlczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGksIGhhbmRsZUNvdW50LFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGV4aXN0aW5nSGFuZGxlcyA9IHRoaXMuZWxlbWVudC5maW5kKCBcIi51aS1zbGlkZXItaGFuZGxlXCIgKSxcblx0XHRcdGhhbmRsZSA9IFwiPHNwYW4gdGFiaW5kZXg9JzAnPjwvc3Bhbj5cIixcblx0XHRcdGhhbmRsZXMgPSBbXTtcblxuXHRcdGhhbmRsZUNvdW50ID0gKCBvcHRpb25zLnZhbHVlcyAmJiBvcHRpb25zLnZhbHVlcy5sZW5ndGggKSB8fCAxO1xuXG5cdFx0aWYgKCBleGlzdGluZ0hhbmRsZXMubGVuZ3RoID4gaGFuZGxlQ291bnQgKSB7XG5cdFx0XHRleGlzdGluZ0hhbmRsZXMuc2xpY2UoIGhhbmRsZUNvdW50ICkucmVtb3ZlKCk7XG5cdFx0XHRleGlzdGluZ0hhbmRsZXMgPSBleGlzdGluZ0hhbmRsZXMuc2xpY2UoIDAsIGhhbmRsZUNvdW50ICk7XG5cdFx0fVxuXG5cdFx0Zm9yICggaSA9IGV4aXN0aW5nSGFuZGxlcy5sZW5ndGg7IGkgPCBoYW5kbGVDb3VudDsgaSsrICkge1xuXHRcdFx0aGFuZGxlcy5wdXNoKCBoYW5kbGUgKTtcblx0XHR9XG5cblx0XHR0aGlzLmhhbmRsZXMgPSBleGlzdGluZ0hhbmRsZXMuYWRkKCAkKCBoYW5kbGVzLmpvaW4oIFwiXCIgKSApLmFwcGVuZFRvKCB0aGlzLmVsZW1lbnQgKSApO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaGFuZGxlcywgXCJ1aS1zbGlkZXItaGFuZGxlXCIsIFwidWktc3RhdGUtZGVmYXVsdFwiICk7XG5cblx0XHR0aGlzLmhhbmRsZSA9IHRoaXMuaGFuZGxlcy5lcSggMCApO1xuXG5cdFx0dGhpcy5oYW5kbGVzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0JCggdGhpcyApXG5cdFx0XHRcdC5kYXRhKCBcInVpLXNsaWRlci1oYW5kbGUtaW5kZXhcIiwgaSApXG5cdFx0XHRcdC5hdHRyKCBcInRhYkluZGV4XCIsIDAgKTtcblx0XHR9ICk7XG5cdH0sXG5cblx0X2NyZWF0ZVJhbmdlOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuXHRcdGlmICggb3B0aW9ucy5yYW5nZSApIHtcblx0XHRcdGlmICggb3B0aW9ucy5yYW5nZSA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0aWYgKCAhb3B0aW9ucy52YWx1ZXMgKSB7XG5cdFx0XHRcdFx0b3B0aW9ucy52YWx1ZXMgPSBbIHRoaXMuX3ZhbHVlTWluKCksIHRoaXMuX3ZhbHVlTWluKCkgXTtcblx0XHRcdFx0fSBlbHNlIGlmICggb3B0aW9ucy52YWx1ZXMubGVuZ3RoICYmIG9wdGlvbnMudmFsdWVzLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0XHRvcHRpb25zLnZhbHVlcyA9IFsgb3B0aW9ucy52YWx1ZXNbIDAgXSwgb3B0aW9ucy52YWx1ZXNbIDAgXSBdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCAkLmlzQXJyYXkoIG9wdGlvbnMudmFsdWVzICkgKSB7XG5cdFx0XHRcdFx0b3B0aW9ucy52YWx1ZXMgPSBvcHRpb25zLnZhbHVlcy5zbGljZSggMCApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggIXRoaXMucmFuZ2UgfHwgIXRoaXMucmFuZ2UubGVuZ3RoICkge1xuXHRcdFx0XHR0aGlzLnJhbmdlID0gJCggXCI8ZGl2PlwiIClcblx0XHRcdFx0XHQuYXBwZW5kVG8oIHRoaXMuZWxlbWVudCApO1xuXG5cdFx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnJhbmdlLCBcInVpLXNsaWRlci1yYW5nZVwiICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5yYW5nZSwgXCJ1aS1zbGlkZXItcmFuZ2UtbWluIHVpLXNsaWRlci1yYW5nZS1tYXhcIiApO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSByYW5nZSBzd2l0Y2hpbmcgZnJvbSB0cnVlIHRvIG1pbi9tYXhcblx0XHRcdFx0dGhpcy5yYW5nZS5jc3MoIHtcblx0XHRcdFx0XHRcImxlZnRcIjogXCJcIixcblx0XHRcdFx0XHRcImJvdHRvbVwiOiBcIlwiXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggb3B0aW9ucy5yYW5nZSA9PT0gXCJtaW5cIiB8fCBvcHRpb25zLnJhbmdlID09PSBcIm1heFwiICkge1xuXHRcdFx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5yYW5nZSwgXCJ1aS1zbGlkZXItcmFuZ2UtXCIgKyBvcHRpb25zLnJhbmdlICk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggdGhpcy5yYW5nZSApIHtcblx0XHRcdFx0dGhpcy5yYW5nZS5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmFuZ2UgPSBudWxsO1xuXHRcdH1cblx0fSxcblxuXHRfc2V0dXBFdmVudHM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX29mZiggdGhpcy5oYW5kbGVzICk7XG5cdFx0dGhpcy5fb24oIHRoaXMuaGFuZGxlcywgdGhpcy5faGFuZGxlRXZlbnRzICk7XG5cdFx0dGhpcy5faG92ZXJhYmxlKCB0aGlzLmhhbmRsZXMgKTtcblx0XHR0aGlzLl9mb2N1c2FibGUoIHRoaXMuaGFuZGxlcyApO1xuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmhhbmRsZXMucmVtb3ZlKCk7XG5cdFx0aWYgKCB0aGlzLnJhbmdlICkge1xuXHRcdFx0dGhpcy5yYW5nZS5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHR0aGlzLl9tb3VzZURlc3Ryb3koKTtcblx0fSxcblxuXHRfbW91c2VDYXB0dXJlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHBvc2l0aW9uLCBub3JtVmFsdWUsIGRpc3RhbmNlLCBjbG9zZXN0SGFuZGxlLCBpbmRleCwgYWxsb3dlZCwgb2Zmc2V0LCBtb3VzZU92ZXJIYW5kbGUsXG5cdFx0XHR0aGF0ID0gdGhpcyxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnM7XG5cblx0XHRpZiAoIG8uZGlzYWJsZWQgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dGhpcy5lbGVtZW50U2l6ZSA9IHtcblx0XHRcdHdpZHRoOiB0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLFxuXHRcdFx0aGVpZ2h0OiB0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKVxuXHRcdH07XG5cdFx0dGhpcy5lbGVtZW50T2Zmc2V0ID0gdGhpcy5lbGVtZW50Lm9mZnNldCgpO1xuXG5cdFx0cG9zaXRpb24gPSB7IHg6IGV2ZW50LnBhZ2VYLCB5OiBldmVudC5wYWdlWSB9O1xuXHRcdG5vcm1WYWx1ZSA9IHRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSggcG9zaXRpb24gKTtcblx0XHRkaXN0YW5jZSA9IHRoaXMuX3ZhbHVlTWF4KCkgLSB0aGlzLl92YWx1ZU1pbigpICsgMTtcblx0XHR0aGlzLmhhbmRsZXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHR2YXIgdGhpc0Rpc3RhbmNlID0gTWF0aC5hYnMoIG5vcm1WYWx1ZSAtIHRoYXQudmFsdWVzKCBpICkgKTtcblx0XHRcdGlmICggKCBkaXN0YW5jZSA+IHRoaXNEaXN0YW5jZSApIHx8XG5cdFx0XHRcdCggZGlzdGFuY2UgPT09IHRoaXNEaXN0YW5jZSAmJlxuXHRcdFx0XHRcdCggaSA9PT0gdGhhdC5fbGFzdENoYW5nZWRWYWx1ZSB8fCB0aGF0LnZhbHVlcyggaSApID09PSBvLm1pbiApICkgKSB7XG5cdFx0XHRcdGRpc3RhbmNlID0gdGhpc0Rpc3RhbmNlO1xuXHRcdFx0XHRjbG9zZXN0SGFuZGxlID0gJCggdGhpcyApO1xuXHRcdFx0XHRpbmRleCA9IGk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0YWxsb3dlZCA9IHRoaXMuX3N0YXJ0KCBldmVudCwgaW5kZXggKTtcblx0XHRpZiAoIGFsbG93ZWQgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLl9tb3VzZVNsaWRpbmcgPSB0cnVlO1xuXG5cdFx0dGhpcy5faGFuZGxlSW5kZXggPSBpbmRleDtcblxuXHRcdHRoaXMuX2FkZENsYXNzKCBjbG9zZXN0SGFuZGxlLCBudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0Y2xvc2VzdEhhbmRsZS50cmlnZ2VyKCBcImZvY3VzXCIgKTtcblxuXHRcdG9mZnNldCA9IGNsb3Nlc3RIYW5kbGUub2Zmc2V0KCk7XG5cdFx0bW91c2VPdmVySGFuZGxlID0gISQoIGV2ZW50LnRhcmdldCApLnBhcmVudHMoKS5hZGRCYWNrKCkuaXMoIFwiLnVpLXNsaWRlci1oYW5kbGVcIiApO1xuXHRcdHRoaXMuX2NsaWNrT2Zmc2V0ID0gbW91c2VPdmVySGFuZGxlID8geyBsZWZ0OiAwLCB0b3A6IDAgfSA6IHtcblx0XHRcdGxlZnQ6IGV2ZW50LnBhZ2VYIC0gb2Zmc2V0LmxlZnQgLSAoIGNsb3Nlc3RIYW5kbGUud2lkdGgoKSAvIDIgKSxcblx0XHRcdHRvcDogZXZlbnQucGFnZVkgLSBvZmZzZXQudG9wIC1cblx0XHRcdFx0KCBjbG9zZXN0SGFuZGxlLmhlaWdodCgpIC8gMiApIC1cblx0XHRcdFx0KCBwYXJzZUludCggY2xvc2VzdEhhbmRsZS5jc3MoIFwiYm9yZGVyVG9wV2lkdGhcIiApLCAxMCApIHx8IDAgKSAtXG5cdFx0XHRcdCggcGFyc2VJbnQoIGNsb3Nlc3RIYW5kbGUuY3NzKCBcImJvcmRlckJvdHRvbVdpZHRoXCIgKSwgMTAgKSB8fCAwICkgK1xuXHRcdFx0XHQoIHBhcnNlSW50KCBjbG9zZXN0SGFuZGxlLmNzcyggXCJtYXJnaW5Ub3BcIiApLCAxMCApIHx8IDAgKVxuXHRcdH07XG5cblx0XHRpZiAoICF0aGlzLmhhbmRsZXMuaGFzQ2xhc3MoIFwidWktc3RhdGUtaG92ZXJcIiApICkge1xuXHRcdFx0dGhpcy5fc2xpZGUoIGV2ZW50LCBpbmRleCwgbm9ybVZhbHVlICk7XG5cdFx0fVxuXHRcdHRoaXMuX2FuaW1hdGVPZmYgPSB0cnVlO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdF9tb3VzZVN0YXJ0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHRfbW91c2VEcmFnOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHBvc2l0aW9uID0geyB4OiBldmVudC5wYWdlWCwgeTogZXZlbnQucGFnZVkgfSxcblx0XHRcdG5vcm1WYWx1ZSA9IHRoaXMuX25vcm1WYWx1ZUZyb21Nb3VzZSggcG9zaXRpb24gKTtcblxuXHRcdHRoaXMuX3NsaWRlKCBldmVudCwgdGhpcy5faGFuZGxlSW5kZXgsIG5vcm1WYWx1ZSApO1xuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdF9tb3VzZVN0b3A6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5oYW5kbGVzLCBudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0dGhpcy5fbW91c2VTbGlkaW5nID0gZmFsc2U7XG5cblx0XHR0aGlzLl9zdG9wKCBldmVudCwgdGhpcy5faGFuZGxlSW5kZXggKTtcblx0XHR0aGlzLl9jaGFuZ2UoIGV2ZW50LCB0aGlzLl9oYW5kbGVJbmRleCApO1xuXG5cdFx0dGhpcy5faGFuZGxlSW5kZXggPSBudWxsO1xuXHRcdHRoaXMuX2NsaWNrT2Zmc2V0ID0gbnVsbDtcblx0XHR0aGlzLl9hbmltYXRlT2ZmID0gZmFsc2U7XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0X2RldGVjdE9yaWVudGF0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLm9yaWVudGF0aW9uID0gKCB0aGlzLm9wdGlvbnMub3JpZW50YXRpb24gPT09IFwidmVydGljYWxcIiApID8gXCJ2ZXJ0aWNhbFwiIDogXCJob3Jpem9udGFsXCI7XG5cdH0sXG5cblx0X25vcm1WYWx1ZUZyb21Nb3VzZTogZnVuY3Rpb24oIHBvc2l0aW9uICkge1xuXHRcdHZhciBwaXhlbFRvdGFsLFxuXHRcdFx0cGl4ZWxNb3VzZSxcblx0XHRcdHBlcmNlbnRNb3VzZSxcblx0XHRcdHZhbHVlVG90YWwsXG5cdFx0XHR2YWx1ZU1vdXNlO1xuXG5cdFx0aWYgKCB0aGlzLm9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiApIHtcblx0XHRcdHBpeGVsVG90YWwgPSB0aGlzLmVsZW1lbnRTaXplLndpZHRoO1xuXHRcdFx0cGl4ZWxNb3VzZSA9IHBvc2l0aW9uLnggLSB0aGlzLmVsZW1lbnRPZmZzZXQubGVmdCAtXG5cdFx0XHRcdCggdGhpcy5fY2xpY2tPZmZzZXQgPyB0aGlzLl9jbGlja09mZnNldC5sZWZ0IDogMCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwaXhlbFRvdGFsID0gdGhpcy5lbGVtZW50U2l6ZS5oZWlnaHQ7XG5cdFx0XHRwaXhlbE1vdXNlID0gcG9zaXRpb24ueSAtIHRoaXMuZWxlbWVudE9mZnNldC50b3AgLVxuXHRcdFx0XHQoIHRoaXMuX2NsaWNrT2Zmc2V0ID8gdGhpcy5fY2xpY2tPZmZzZXQudG9wIDogMCApO1xuXHRcdH1cblxuXHRcdHBlcmNlbnRNb3VzZSA9ICggcGl4ZWxNb3VzZSAvIHBpeGVsVG90YWwgKTtcblx0XHRpZiAoIHBlcmNlbnRNb3VzZSA+IDEgKSB7XG5cdFx0XHRwZXJjZW50TW91c2UgPSAxO1xuXHRcdH1cblx0XHRpZiAoIHBlcmNlbnRNb3VzZSA8IDAgKSB7XG5cdFx0XHRwZXJjZW50TW91c2UgPSAwO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMub3JpZW50YXRpb24gPT09IFwidmVydGljYWxcIiApIHtcblx0XHRcdHBlcmNlbnRNb3VzZSA9IDEgLSBwZXJjZW50TW91c2U7XG5cdFx0fVxuXG5cdFx0dmFsdWVUb3RhbCA9IHRoaXMuX3ZhbHVlTWF4KCkgLSB0aGlzLl92YWx1ZU1pbigpO1xuXHRcdHZhbHVlTW91c2UgPSB0aGlzLl92YWx1ZU1pbigpICsgcGVyY2VudE1vdXNlICogdmFsdWVUb3RhbDtcblxuXHRcdHJldHVybiB0aGlzLl90cmltQWxpZ25WYWx1ZSggdmFsdWVNb3VzZSApO1xuXHR9LFxuXG5cdF91aUhhc2g6IGZ1bmN0aW9uKCBpbmRleCwgdmFsdWUsIHZhbHVlcyApIHtcblx0XHR2YXIgdWlIYXNoID0ge1xuXHRcdFx0aGFuZGxlOiB0aGlzLmhhbmRsZXNbIGluZGV4IF0sXG5cdFx0XHRoYW5kbGVJbmRleDogaW5kZXgsXG5cdFx0XHR2YWx1ZTogdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogdGhpcy52YWx1ZSgpXG5cdFx0fTtcblxuXHRcdGlmICggdGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSApIHtcblx0XHRcdHVpSGFzaC52YWx1ZSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHRoaXMudmFsdWVzKCBpbmRleCApO1xuXHRcdFx0dWlIYXNoLnZhbHVlcyA9IHZhbHVlcyB8fCB0aGlzLnZhbHVlcygpO1xuXHRcdH1cblxuXHRcdHJldHVybiB1aUhhc2g7XG5cdH0sXG5cblx0X2hhc011bHRpcGxlVmFsdWVzOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyAmJiB0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aDtcblx0fSxcblxuXHRfc3RhcnQ6IGZ1bmN0aW9uKCBldmVudCwgaW5kZXggKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3RyaWdnZXIoIFwic3RhcnRcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCggaW5kZXggKSApO1xuXHR9LFxuXG5cdF9zbGlkZTogZnVuY3Rpb24oIGV2ZW50LCBpbmRleCwgbmV3VmFsICkge1xuXHRcdHZhciBhbGxvd2VkLCBvdGhlclZhbCxcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUoKSxcblx0XHRcdG5ld1ZhbHVlcyA9IHRoaXMudmFsdWVzKCk7XG5cblx0XHRpZiAoIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkgKSB7XG5cdFx0XHRvdGhlclZhbCA9IHRoaXMudmFsdWVzKCBpbmRleCA/IDAgOiAxICk7XG5cdFx0XHRjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlcyggaW5kZXggKTtcblxuXHRcdFx0aWYgKCB0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCA9PT0gMiAmJiB0aGlzLm9wdGlvbnMucmFuZ2UgPT09IHRydWUgKSB7XG5cdFx0XHRcdG5ld1ZhbCA9ICBpbmRleCA9PT0gMCA/IE1hdGgubWluKCBvdGhlclZhbCwgbmV3VmFsICkgOiBNYXRoLm1heCggb3RoZXJWYWwsIG5ld1ZhbCApO1xuXHRcdFx0fVxuXG5cdFx0XHRuZXdWYWx1ZXNbIGluZGV4IF0gPSBuZXdWYWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBuZXdWYWwgPT09IGN1cnJlbnRWYWx1ZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRhbGxvd2VkID0gdGhpcy5fdHJpZ2dlciggXCJzbGlkZVwiLCBldmVudCwgdGhpcy5fdWlIYXNoKCBpbmRleCwgbmV3VmFsLCBuZXdWYWx1ZXMgKSApO1xuXG5cdFx0Ly8gQSBzbGlkZSBjYW4gYmUgY2FuY2VsZWQgYnkgcmV0dXJuaW5nIGZhbHNlIGZyb20gdGhlIHNsaWRlIGNhbGxiYWNrXG5cdFx0aWYgKCBhbGxvd2VkID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkgKSB7XG5cdFx0XHR0aGlzLnZhbHVlcyggaW5kZXgsIG5ld1ZhbCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnZhbHVlKCBuZXdWYWwgKTtcblx0XHR9XG5cdH0sXG5cblx0X3N0b3A6IGZ1bmN0aW9uKCBldmVudCwgaW5kZXggKSB7XG5cdFx0dGhpcy5fdHJpZ2dlciggXCJzdG9wXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIGluZGV4ICkgKTtcblx0fSxcblxuXHRfY2hhbmdlOiBmdW5jdGlvbiggZXZlbnQsIGluZGV4ICkge1xuXHRcdGlmICggIXRoaXMuX2tleVNsaWRpbmcgJiYgIXRoaXMuX21vdXNlU2xpZGluZyApIHtcblxuXHRcdFx0Ly9zdG9yZSB0aGUgbGFzdCBjaGFuZ2VkIHZhbHVlIGluZGV4IGZvciByZWZlcmVuY2Ugd2hlbiBoYW5kbGVzIG92ZXJsYXBcblx0XHRcdHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWUgPSBpbmRleDtcblx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiY2hhbmdlXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIGluZGV4ICkgKTtcblx0XHR9XG5cdH0sXG5cblx0dmFsdWU6IGZ1bmN0aW9uKCBuZXdWYWx1ZSApIHtcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMudmFsdWUgPSB0aGlzLl90cmltQWxpZ25WYWx1ZSggbmV3VmFsdWUgKTtcblx0XHRcdHRoaXMuX3JlZnJlc2hWYWx1ZSgpO1xuXHRcdFx0dGhpcy5fY2hhbmdlKCBudWxsLCAwICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3ZhbHVlKCk7XG5cdH0sXG5cblx0dmFsdWVzOiBmdW5jdGlvbiggaW5kZXgsIG5ld1ZhbHVlICkge1xuXHRcdHZhciB2YWxzLFxuXHRcdFx0bmV3VmFsdWVzLFxuXHRcdFx0aTtcblxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnMudmFsdWVzWyBpbmRleCBdID0gdGhpcy5fdHJpbUFsaWduVmFsdWUoIG5ld1ZhbHVlICk7XG5cdFx0XHR0aGlzLl9yZWZyZXNoVmFsdWUoKTtcblx0XHRcdHRoaXMuX2NoYW5nZSggbnVsbCwgaW5kZXggKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRpZiAoICQuaXNBcnJheSggYXJndW1lbnRzWyAwIF0gKSApIHtcblx0XHRcdFx0dmFscyA9IHRoaXMub3B0aW9ucy52YWx1ZXM7XG5cdFx0XHRcdG5ld1ZhbHVlcyA9IGFyZ3VtZW50c1sgMCBdO1xuXHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IHZhbHMubGVuZ3RoOyBpICs9IDEgKSB7XG5cdFx0XHRcdFx0dmFsc1sgaSBdID0gdGhpcy5fdHJpbUFsaWduVmFsdWUoIG5ld1ZhbHVlc1sgaSBdICk7XG5cdFx0XHRcdFx0dGhpcy5fY2hhbmdlKCBudWxsLCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fcmVmcmVzaFZhbHVlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX3ZhbHVlcyggaW5kZXggKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy52YWx1ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLl92YWx1ZXMoKTtcblx0XHR9XG5cdH0sXG5cblx0X3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksXG5cdFx0XHR2YWxzTGVuZ3RoID0gMDtcblxuXHRcdGlmICgga2V5ID09PSBcInJhbmdlXCIgJiYgdGhpcy5vcHRpb25zLnJhbmdlID09PSB0cnVlICkge1xuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJtaW5cIiApIHtcblx0XHRcdFx0dGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy5fdmFsdWVzKCAwICk7XG5cdFx0XHRcdHRoaXMub3B0aW9ucy52YWx1ZXMgPSBudWxsO1xuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IFwibWF4XCIgKSB7XG5cdFx0XHRcdHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMuX3ZhbHVlcyggdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGggLSAxICk7XG5cdFx0XHRcdHRoaXMub3B0aW9ucy52YWx1ZXMgPSBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggJC5pc0FycmF5KCB0aGlzLm9wdGlvbnMudmFsdWVzICkgKSB7XG5cdFx0XHR2YWxzTGVuZ3RoID0gdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg7XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblxuXHRcdHN3aXRjaCAoIGtleSApIHtcblx0XHRcdGNhc2UgXCJvcmllbnRhdGlvblwiOlxuXHRcdFx0XHR0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpO1xuXHRcdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggXCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWxcIiApXG5cdFx0XHRcdFx0Ll9hZGRDbGFzcyggXCJ1aS1zbGlkZXItXCIgKyB0aGlzLm9yaWVudGF0aW9uICk7XG5cdFx0XHRcdHRoaXMuX3JlZnJlc2hWYWx1ZSgpO1xuXHRcdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5yYW5nZSApIHtcblx0XHRcdFx0XHR0aGlzLl9yZWZyZXNoUmFuZ2UoIHZhbHVlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZXNldCBwb3NpdGlvbmluZyBmcm9tIHByZXZpb3VzIG9yaWVudGF0aW9uXG5cdFx0XHRcdHRoaXMuaGFuZGxlcy5jc3MoIHZhbHVlID09PSBcImhvcml6b250YWxcIiA/IFwiYm90dG9tXCIgOiBcImxlZnRcIiwgXCJcIiApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJ2YWx1ZVwiOlxuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fcmVmcmVzaFZhbHVlKCk7XG5cdFx0XHRcdHRoaXMuX2NoYW5nZSggbnVsbCwgMCApO1xuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcInZhbHVlc1wiOlxuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fcmVmcmVzaFZhbHVlKCk7XG5cblx0XHRcdFx0Ly8gU3RhcnQgZnJvbSB0aGUgbGFzdCBoYW5kbGUgdG8gcHJldmVudCB1bnJlYWNoYWJsZSBoYW5kbGVzICgjOTA0Nilcblx0XHRcdFx0Zm9yICggaSA9IHZhbHNMZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcblx0XHRcdFx0XHR0aGlzLl9jaGFuZ2UoIG51bGwsIGkgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcInN0ZXBcIjpcblx0XHRcdGNhc2UgXCJtaW5cIjpcblx0XHRcdGNhc2UgXCJtYXhcIjpcblx0XHRcdFx0dGhpcy5fYW5pbWF0ZU9mZiA9IHRydWU7XG5cdFx0XHRcdHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpO1xuXHRcdFx0XHR0aGlzLl9yZWZyZXNoVmFsdWUoKTtcblx0XHRcdFx0dGhpcy5fYW5pbWF0ZU9mZiA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJyYW5nZVwiOlxuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fcmVmcmVzaCgpO1xuXHRcdFx0XHR0aGlzLl9hbmltYXRlT2ZmID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fSxcblxuXHRfc2V0T3B0aW9uRGlzYWJsZWQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR0aGlzLl9zdXBlciggdmFsdWUgKTtcblxuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIsICEhdmFsdWUgKTtcblx0fSxcblxuXHQvL2ludGVybmFsIHZhbHVlIGdldHRlclxuXHQvLyBfdmFsdWUoKSByZXR1cm5zIHZhbHVlIHRyaW1tZWQgYnkgbWluIGFuZCBtYXgsIGFsaWduZWQgYnkgc3RlcFxuXHRfdmFsdWU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB2YWwgPSB0aGlzLm9wdGlvbnMudmFsdWU7XG5cdFx0dmFsID0gdGhpcy5fdHJpbUFsaWduVmFsdWUoIHZhbCApO1xuXG5cdFx0cmV0dXJuIHZhbDtcblx0fSxcblxuXHQvL2ludGVybmFsIHZhbHVlcyBnZXR0ZXJcblx0Ly8gX3ZhbHVlcygpIHJldHVybnMgYXJyYXkgb2YgdmFsdWVzIHRyaW1tZWQgYnkgbWluIGFuZCBtYXgsIGFsaWduZWQgYnkgc3RlcFxuXHQvLyBfdmFsdWVzKCBpbmRleCApIHJldHVybnMgc2luZ2xlIHZhbHVlIHRyaW1tZWQgYnkgbWluIGFuZCBtYXgsIGFsaWduZWQgYnkgc3RlcFxuXHRfdmFsdWVzOiBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0dmFyIHZhbCxcblx0XHRcdHZhbHMsXG5cdFx0XHRpO1xuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0dmFsID0gdGhpcy5vcHRpb25zLnZhbHVlc1sgaW5kZXggXTtcblx0XHRcdHZhbCA9IHRoaXMuX3RyaW1BbGlnblZhbHVlKCB2YWwgKTtcblxuXHRcdFx0cmV0dXJuIHZhbDtcblx0XHR9IGVsc2UgaWYgKCB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpICkge1xuXG5cdFx0XHQvLyAuc2xpY2UoKSBjcmVhdGVzIGEgY29weSBvZiB0aGUgYXJyYXlcblx0XHRcdC8vIHRoaXMgY29weSBnZXRzIHRyaW1tZWQgYnkgbWluIGFuZCBtYXggYW5kIHRoZW4gcmV0dXJuZWRcblx0XHRcdHZhbHMgPSB0aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCk7XG5cdFx0XHRmb3IgKCBpID0gMDsgaSA8IHZhbHMubGVuZ3RoOyBpICs9IDEgKSB7XG5cdFx0XHRcdHZhbHNbIGkgXSA9IHRoaXMuX3RyaW1BbGlnblZhbHVlKCB2YWxzWyBpIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHZhbHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gUmV0dXJucyB0aGUgc3RlcC1hbGlnbmVkIHZhbHVlIHRoYXQgdmFsIGlzIGNsb3Nlc3QgdG8sIGJldHdlZW4gKGluY2x1c2l2ZSkgbWluIGFuZCBtYXhcblx0X3RyaW1BbGlnblZhbHVlOiBmdW5jdGlvbiggdmFsICkge1xuXHRcdGlmICggdmFsIDw9IHRoaXMuX3ZhbHVlTWluKCkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtcblx0XHR9XG5cdFx0aWYgKCB2YWwgPj0gdGhpcy5fdmFsdWVNYXgoKSApIHtcblx0XHRcdHJldHVybiB0aGlzLl92YWx1ZU1heCgpO1xuXHRcdH1cblx0XHR2YXIgc3RlcCA9ICggdGhpcy5vcHRpb25zLnN0ZXAgPiAwICkgPyB0aGlzLm9wdGlvbnMuc3RlcCA6IDEsXG5cdFx0XHR2YWxNb2RTdGVwID0gKCB2YWwgLSB0aGlzLl92YWx1ZU1pbigpICkgJSBzdGVwLFxuXHRcdFx0YWxpZ25WYWx1ZSA9IHZhbCAtIHZhbE1vZFN0ZXA7XG5cblx0XHRpZiAoIE1hdGguYWJzKCB2YWxNb2RTdGVwICkgKiAyID49IHN0ZXAgKSB7XG5cdFx0XHRhbGlnblZhbHVlICs9ICggdmFsTW9kU3RlcCA+IDAgKSA/IHN0ZXAgOiAoIC1zdGVwICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2luY2UgSmF2YVNjcmlwdCBoYXMgcHJvYmxlbXMgd2l0aCBsYXJnZSBmbG9hdHMsIHJvdW5kXG5cdFx0Ly8gdGhlIGZpbmFsIHZhbHVlIHRvIDUgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IChzZWUgIzQxMjQpXG5cdFx0cmV0dXJuIHBhcnNlRmxvYXQoIGFsaWduVmFsdWUudG9GaXhlZCggNSApICk7XG5cdH0sXG5cblx0X2NhbGN1bGF0ZU5ld01heDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG1heCA9IHRoaXMub3B0aW9ucy5tYXgsXG5cdFx0XHRtaW4gPSB0aGlzLl92YWx1ZU1pbigpLFxuXHRcdFx0c3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwLFxuXHRcdFx0YWJvdmVNaW4gPSBNYXRoLnJvdW5kKCAoIG1heCAtIG1pbiApIC8gc3RlcCApICogc3RlcDtcblx0XHRtYXggPSBhYm92ZU1pbiArIG1pbjtcblx0XHRpZiAoIG1heCA+IHRoaXMub3B0aW9ucy5tYXggKSB7XG5cblx0XHRcdC8vSWYgbWF4IGlzIG5vdCBkaXZpc2libGUgYnkgc3RlcCwgcm91bmRpbmcgb2ZmIG1heSBpbmNyZWFzZSBpdHMgdmFsdWVcblx0XHRcdG1heCAtPSBzdGVwO1xuXHRcdH1cblx0XHR0aGlzLm1heCA9IHBhcnNlRmxvYXQoIG1heC50b0ZpeGVkKCB0aGlzLl9wcmVjaXNpb24oKSApICk7XG5cdH0sXG5cblx0X3ByZWNpc2lvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHByZWNpc2lvbiA9IHRoaXMuX3ByZWNpc2lvbk9mKCB0aGlzLm9wdGlvbnMuc3RlcCApO1xuXHRcdGlmICggdGhpcy5vcHRpb25zLm1pbiAhPT0gbnVsbCApIHtcblx0XHRcdHByZWNpc2lvbiA9IE1hdGgubWF4KCBwcmVjaXNpb24sIHRoaXMuX3ByZWNpc2lvbk9mKCB0aGlzLm9wdGlvbnMubWluICkgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHByZWNpc2lvbjtcblx0fSxcblxuXHRfcHJlY2lzaW9uT2Y6IGZ1bmN0aW9uKCBudW0gKSB7XG5cdFx0dmFyIHN0ciA9IG51bS50b1N0cmluZygpLFxuXHRcdFx0ZGVjaW1hbCA9IHN0ci5pbmRleE9mKCBcIi5cIiApO1xuXHRcdHJldHVybiBkZWNpbWFsID09PSAtMSA/IDAgOiBzdHIubGVuZ3RoIC0gZGVjaW1hbCAtIDE7XG5cdH0sXG5cblx0X3ZhbHVlTWluOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zLm1pbjtcblx0fSxcblxuXHRfdmFsdWVNYXg6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1heDtcblx0fSxcblxuXHRfcmVmcmVzaFJhbmdlOiBmdW5jdGlvbiggb3JpZW50YXRpb24gKSB7XG5cdFx0aWYgKCBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICkge1xuXHRcdFx0dGhpcy5yYW5nZS5jc3MoIHsgXCJ3aWR0aFwiOiBcIlwiLCBcImxlZnRcIjogXCJcIiB9ICk7XG5cdFx0fVxuXHRcdGlmICggb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiICkge1xuXHRcdFx0dGhpcy5yYW5nZS5jc3MoIHsgXCJoZWlnaHRcIjogXCJcIiwgXCJib3R0b21cIjogXCJcIiB9ICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9yZWZyZXNoVmFsdWU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBsYXN0VmFsUGVyY2VudCwgdmFsUGVyY2VudCwgdmFsdWUsIHZhbHVlTWluLCB2YWx1ZU1heCxcblx0XHRcdG9SYW5nZSA9IHRoaXMub3B0aW9ucy5yYW5nZSxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHR0aGF0ID0gdGhpcyxcblx0XHRcdGFuaW1hdGUgPSAoICF0aGlzLl9hbmltYXRlT2ZmICkgPyBvLmFuaW1hdGUgOiBmYWxzZSxcblx0XHRcdF9zZXQgPSB7fTtcblxuXHRcdGlmICggdGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSApIHtcblx0XHRcdHRoaXMuaGFuZGxlcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0dmFsUGVyY2VudCA9ICggdGhhdC52YWx1ZXMoIGkgKSAtIHRoYXQuX3ZhbHVlTWluKCkgKSAvICggdGhhdC5fdmFsdWVNYXgoKSAtXG5cdFx0XHRcdFx0dGhhdC5fdmFsdWVNaW4oKSApICogMTAwO1xuXHRcdFx0XHRfc2V0WyB0aGF0Lm9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwibGVmdFwiIDogXCJib3R0b21cIiBdID0gdmFsUGVyY2VudCArIFwiJVwiO1xuXHRcdFx0XHQkKCB0aGlzICkuc3RvcCggMSwgMSApWyBhbmltYXRlID8gXCJhbmltYXRlXCIgOiBcImNzc1wiIF0oIF9zZXQsIG8uYW5pbWF0ZSApO1xuXHRcdFx0XHRpZiAoIHRoYXQub3B0aW9ucy5yYW5nZSA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRpZiAoIHRoYXQub3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiICkge1xuXHRcdFx0XHRcdFx0aWYgKCBpID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnJhbmdlLnN0b3AoIDEsIDEgKVsgYW5pbWF0ZSA/IFwiYW5pbWF0ZVwiIDogXCJjc3NcIiBdKCB7XG5cdFx0XHRcdFx0XHRcdFx0bGVmdDogdmFsUGVyY2VudCArIFwiJVwiXG5cdFx0XHRcdFx0XHRcdH0sIG8uYW5pbWF0ZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBpID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LnJhbmdlWyBhbmltYXRlID8gXCJhbmltYXRlXCIgOiBcImNzc1wiIF0oIHtcblx0XHRcdFx0XHRcdFx0XHR3aWR0aDogKCB2YWxQZXJjZW50IC0gbGFzdFZhbFBlcmNlbnQgKSArIFwiJVwiXG5cdFx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0XHRxdWV1ZTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IG8uYW5pbWF0ZVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmICggaSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5yYW5nZS5zdG9wKCAxLCAxIClbIGFuaW1hdGUgPyBcImFuaW1hdGVcIiA6IFwiY3NzXCIgXSgge1xuXHRcdFx0XHRcdFx0XHRcdGJvdHRvbTogKCB2YWxQZXJjZW50ICkgKyBcIiVcIlxuXHRcdFx0XHRcdFx0XHR9LCBvLmFuaW1hdGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICggaSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5yYW5nZVsgYW5pbWF0ZSA/IFwiYW5pbWF0ZVwiIDogXCJjc3NcIiBdKCB7XG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0OiAoIHZhbFBlcmNlbnQgLSBsYXN0VmFsUGVyY2VudCApICsgXCIlXCJcblx0XHRcdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0XHRcdHF1ZXVlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogby5hbmltYXRlXG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0bGFzdFZhbFBlcmNlbnQgPSB2YWxQZXJjZW50O1xuXHRcdFx0fSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWx1ZSA9IHRoaXMudmFsdWUoKTtcblx0XHRcdHZhbHVlTWluID0gdGhpcy5fdmFsdWVNaW4oKTtcblx0XHRcdHZhbHVlTWF4ID0gdGhpcy5fdmFsdWVNYXgoKTtcblx0XHRcdHZhbFBlcmNlbnQgPSAoIHZhbHVlTWF4ICE9PSB2YWx1ZU1pbiApID9cblx0XHRcdFx0XHQoIHZhbHVlIC0gdmFsdWVNaW4gKSAvICggdmFsdWVNYXggLSB2YWx1ZU1pbiApICogMTAwIDpcblx0XHRcdFx0XHQwO1xuXHRcdFx0X3NldFsgdGhpcy5vcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcImxlZnRcIiA6IFwiYm90dG9tXCIgXSA9IHZhbFBlcmNlbnQgKyBcIiVcIjtcblx0XHRcdHRoaXMuaGFuZGxlLnN0b3AoIDEsIDEgKVsgYW5pbWF0ZSA/IFwiYW5pbWF0ZVwiIDogXCJjc3NcIiBdKCBfc2V0LCBvLmFuaW1hdGUgKTtcblxuXHRcdFx0aWYgKCBvUmFuZ2UgPT09IFwibWluXCIgJiYgdGhpcy5vcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgKSB7XG5cdFx0XHRcdHRoaXMucmFuZ2Uuc3RvcCggMSwgMSApWyBhbmltYXRlID8gXCJhbmltYXRlXCIgOiBcImNzc1wiIF0oIHtcblx0XHRcdFx0XHR3aWR0aDogdmFsUGVyY2VudCArIFwiJVwiXG5cdFx0XHRcdH0sIG8uYW5pbWF0ZSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBvUmFuZ2UgPT09IFwibWF4XCIgJiYgdGhpcy5vcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgKSB7XG5cdFx0XHRcdHRoaXMucmFuZ2Uuc3RvcCggMSwgMSApWyBhbmltYXRlID8gXCJhbmltYXRlXCIgOiBcImNzc1wiIF0oIHtcblx0XHRcdFx0XHR3aWR0aDogKCAxMDAgLSB2YWxQZXJjZW50ICkgKyBcIiVcIlxuXHRcdFx0XHR9LCBvLmFuaW1hdGUgKTtcblx0XHRcdH1cblx0XHRcdGlmICggb1JhbmdlID09PSBcIm1pblwiICYmIHRoaXMub3JpZW50YXRpb24gPT09IFwidmVydGljYWxcIiApIHtcblx0XHRcdFx0dGhpcy5yYW5nZS5zdG9wKCAxLCAxIClbIGFuaW1hdGUgPyBcImFuaW1hdGVcIiA6IFwiY3NzXCIgXSgge1xuXHRcdFx0XHRcdGhlaWdodDogdmFsUGVyY2VudCArIFwiJVwiXG5cdFx0XHRcdH0sIG8uYW5pbWF0ZSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBvUmFuZ2UgPT09IFwibWF4XCIgJiYgdGhpcy5vcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICkge1xuXHRcdFx0XHR0aGlzLnJhbmdlLnN0b3AoIDEsIDEgKVsgYW5pbWF0ZSA/IFwiYW5pbWF0ZVwiIDogXCJjc3NcIiBdKCB7XG5cdFx0XHRcdFx0aGVpZ2h0OiAoIDEwMCAtIHZhbFBlcmNlbnQgKSArIFwiJVwiXG5cdFx0XHRcdH0sIG8uYW5pbWF0ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHRfaGFuZGxlRXZlbnRzOiB7XG5cdFx0a2V5ZG93bjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0dmFyIGFsbG93ZWQsIGN1clZhbCwgbmV3VmFsLCBzdGVwLFxuXHRcdFx0XHRpbmRleCA9ICQoIGV2ZW50LnRhcmdldCApLmRhdGEoIFwidWktc2xpZGVyLWhhbmRsZS1pbmRleFwiICk7XG5cblx0XHRcdHN3aXRjaCAoIGV2ZW50LmtleUNvZGUgKSB7XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkhPTUU6XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkVORDpcblx0XHRcdFx0Y2FzZSAkLnVpLmtleUNvZGUuUEFHRV9VUDpcblx0XHRcdFx0Y2FzZSAkLnVpLmtleUNvZGUuUEFHRV9ET1dOOlxuXHRcdFx0XHRjYXNlICQudWkua2V5Q29kZS5VUDpcblx0XHRcdFx0Y2FzZSAkLnVpLmtleUNvZGUuUklHSFQ6XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkRPV046XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkxFRlQ6XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRpZiAoICF0aGlzLl9rZXlTbGlkaW5nICkge1xuXHRcdFx0XHRcdFx0dGhpcy5fa2V5U2xpZGluZyA9IHRydWU7XG5cdFx0XHRcdFx0XHR0aGlzLl9hZGRDbGFzcyggJCggZXZlbnQudGFyZ2V0ICksIG51bGwsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRcdFx0XHRcdGFsbG93ZWQgPSB0aGlzLl9zdGFydCggZXZlbnQsIGluZGV4ICk7XG5cdFx0XHRcdFx0XHRpZiAoIGFsbG93ZWQgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRzdGVwID0gdGhpcy5vcHRpb25zLnN0ZXA7XG5cdFx0XHRpZiAoIHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkgKSB7XG5cdFx0XHRcdGN1clZhbCA9IG5ld1ZhbCA9IHRoaXMudmFsdWVzKCBpbmRleCApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VyVmFsID0gbmV3VmFsID0gdGhpcy52YWx1ZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdFx0XHRjYXNlICQudWkua2V5Q29kZS5IT01FOlxuXHRcdFx0XHRcdG5ld1ZhbCA9IHRoaXMuX3ZhbHVlTWluKCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkVORDpcblx0XHRcdFx0XHRuZXdWYWwgPSB0aGlzLl92YWx1ZU1heCgpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICQudWkua2V5Q29kZS5QQUdFX1VQOlxuXHRcdFx0XHRcdG5ld1ZhbCA9IHRoaXMuX3RyaW1BbGlnblZhbHVlKFxuXHRcdFx0XHRcdFx0Y3VyVmFsICsgKCAoIHRoaXMuX3ZhbHVlTWF4KCkgLSB0aGlzLl92YWx1ZU1pbigpICkgLyB0aGlzLm51bVBhZ2VzIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICQudWkua2V5Q29kZS5QQUdFX0RPV046XG5cdFx0XHRcdFx0bmV3VmFsID0gdGhpcy5fdHJpbUFsaWduVmFsdWUoXG5cdFx0XHRcdFx0XHRjdXJWYWwgLSAoICggdGhpcy5fdmFsdWVNYXgoKSAtIHRoaXMuX3ZhbHVlTWluKCkgKSAvIHRoaXMubnVtUGFnZXMgKSApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICQudWkua2V5Q29kZS5VUDpcblx0XHRcdFx0Y2FzZSAkLnVpLmtleUNvZGUuUklHSFQ6XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWwgPT09IHRoaXMuX3ZhbHVlTWF4KCkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1ZhbCA9IHRoaXMuX3RyaW1BbGlnblZhbHVlKCBjdXJWYWwgKyBzdGVwICk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkRPV046XG5cdFx0XHRcdGNhc2UgJC51aS5rZXlDb2RlLkxFRlQ6XG5cdFx0XHRcdFx0aWYgKCBjdXJWYWwgPT09IHRoaXMuX3ZhbHVlTWluKCkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1ZhbCA9IHRoaXMuX3RyaW1BbGlnblZhbHVlKCBjdXJWYWwgLSBzdGVwICk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuX3NsaWRlKCBldmVudCwgaW5kZXgsIG5ld1ZhbCApO1xuXHRcdH0sXG5cdFx0a2V5dXA6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBpbmRleCA9ICQoIGV2ZW50LnRhcmdldCApLmRhdGEoIFwidWktc2xpZGVyLWhhbmRsZS1pbmRleFwiICk7XG5cblx0XHRcdGlmICggdGhpcy5fa2V5U2xpZGluZyApIHtcblx0XHRcdFx0dGhpcy5fa2V5U2xpZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9zdG9wKCBldmVudCwgaW5kZXggKTtcblx0XHRcdFx0dGhpcy5fY2hhbmdlKCBldmVudCwgaW5kZXggKTtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoICQoIGV2ZW50LnRhcmdldCApLCBudWxsLCBcInVpLXN0YXRlLWFjdGl2ZVwiICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLyohXG4gKiBqUXVlcnkgVUkgU29ydGFibGUgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNvcnRhYmxlXG4vLz4+Z3JvdXA6IEludGVyYWN0aW9uc1xuLy8+PmRlc2NyaXB0aW9uOiBFbmFibGVzIGl0ZW1zIGluIGEgbGlzdCB0byBiZSBzb3J0ZWQgdXNpbmcgdGhlIG1vdXNlLlxuLy8+PmRvY3M6IGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL3NvcnRhYmxlL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL3NvcnRhYmxlL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL3NvcnRhYmxlLmNzc1xuXG5cblxudmFyIHdpZGdldHNTb3J0YWJsZSA9ICQud2lkZ2V0KCBcInVpLnNvcnRhYmxlXCIsICQudWkubW91c2UsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0d2lkZ2V0RXZlbnRQcmVmaXg6IFwic29ydFwiLFxuXHRyZWFkeTogZmFsc2UsXG5cdG9wdGlvbnM6IHtcblx0XHRhcHBlbmRUbzogXCJwYXJlbnRcIixcblx0XHRheGlzOiBmYWxzZSxcblx0XHRjb25uZWN0V2l0aDogZmFsc2UsXG5cdFx0Y29udGFpbm1lbnQ6IGZhbHNlLFxuXHRcdGN1cnNvcjogXCJhdXRvXCIsXG5cdFx0Y3Vyc29yQXQ6IGZhbHNlLFxuXHRcdGRyb3BPbkVtcHR5OiB0cnVlLFxuXHRcdGZvcmNlUGxhY2Vob2xkZXJTaXplOiBmYWxzZSxcblx0XHRmb3JjZUhlbHBlclNpemU6IGZhbHNlLFxuXHRcdGdyaWQ6IGZhbHNlLFxuXHRcdGhhbmRsZTogZmFsc2UsXG5cdFx0aGVscGVyOiBcIm9yaWdpbmFsXCIsXG5cdFx0aXRlbXM6IFwiPiAqXCIsXG5cdFx0b3BhY2l0eTogZmFsc2UsXG5cdFx0cGxhY2Vob2xkZXI6IGZhbHNlLFxuXHRcdHJldmVydDogZmFsc2UsXG5cdFx0c2Nyb2xsOiB0cnVlLFxuXHRcdHNjcm9sbFNlbnNpdGl2aXR5OiAyMCxcblx0XHRzY3JvbGxTcGVlZDogMjAsXG5cdFx0c2NvcGU6IFwiZGVmYXVsdFwiLFxuXHRcdHRvbGVyYW5jZTogXCJpbnRlcnNlY3RcIixcblx0XHR6SW5kZXg6IDEwMDAsXG5cblx0XHQvLyBDYWxsYmFja3Ncblx0XHRhY3RpdmF0ZTogbnVsbCxcblx0XHRiZWZvcmVTdG9wOiBudWxsLFxuXHRcdGNoYW5nZTogbnVsbCxcblx0XHRkZWFjdGl2YXRlOiBudWxsLFxuXHRcdG91dDogbnVsbCxcblx0XHRvdmVyOiBudWxsLFxuXHRcdHJlY2VpdmU6IG51bGwsXG5cdFx0cmVtb3ZlOiBudWxsLFxuXHRcdHNvcnQ6IG51bGwsXG5cdFx0c3RhcnQ6IG51bGwsXG5cdFx0c3RvcDogbnVsbCxcblx0XHR1cGRhdGU6IG51bGxcblx0fSxcblxuXHRfaXNPdmVyQXhpczogZnVuY3Rpb24oIHgsIHJlZmVyZW5jZSwgc2l6ZSApIHtcblx0XHRyZXR1cm4gKCB4ID49IHJlZmVyZW5jZSApICYmICggeCA8ICggcmVmZXJlbmNlICsgc2l6ZSApICk7XG5cdH0sXG5cblx0X2lzRmxvYXRpbmc6IGZ1bmN0aW9uKCBpdGVtICkge1xuXHRcdHJldHVybiAoIC9sZWZ0fHJpZ2h0LyApLnRlc3QoIGl0ZW0uY3NzKCBcImZsb2F0XCIgKSApIHx8XG5cdFx0XHQoIC9pbmxpbmV8dGFibGUtY2VsbC8gKS50ZXN0KCBpdGVtLmNzcyggXCJkaXNwbGF5XCIgKSApO1xuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuY29udGFpbmVyQ2FjaGUgPSB7fTtcblx0XHR0aGlzLl9hZGRDbGFzcyggXCJ1aS1zb3J0YWJsZVwiICk7XG5cblx0XHQvL0dldCB0aGUgaXRlbXNcblx0XHR0aGlzLnJlZnJlc2goKTtcblxuXHRcdC8vTGV0J3MgZGV0ZXJtaW5lIHRoZSBwYXJlbnQncyBvZmZzZXRcblx0XHR0aGlzLm9mZnNldCA9IHRoaXMuZWxlbWVudC5vZmZzZXQoKTtcblxuXHRcdC8vSW5pdGlhbGl6ZSBtb3VzZSBldmVudHMgZm9yIGludGVyYWN0aW9uXG5cdFx0dGhpcy5fbW91c2VJbml0KCk7XG5cblx0XHR0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKTtcblxuXHRcdC8vV2UncmUgcmVhZHkgdG8gZ29cblx0XHR0aGlzLnJlYWR5ID0gdHJ1ZTtcblxuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHRoaXMuX3N1cGVyKCBrZXksIHZhbHVlICk7XG5cblx0XHRpZiAoIGtleSA9PT0gXCJoYW5kbGVcIiApIHtcblx0XHRcdHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpO1xuXHRcdH1cblx0fSxcblxuXHRfc2V0SGFuZGxlQ2xhc3NOYW1lOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIHRoaXMuZWxlbWVudC5maW5kKCBcIi51aS1zb3J0YWJsZS1oYW5kbGVcIiApLCBcInVpLXNvcnRhYmxlLWhhbmRsZVwiICk7XG5cdFx0JC5lYWNoKCB0aGlzLml0ZW1zLCBmdW5jdGlvbigpIHtcblx0XHRcdHRoYXQuX2FkZENsYXNzKFxuXHRcdFx0XHR0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlID9cblx0XHRcdFx0XHR0aGlzLml0ZW0uZmluZCggdGhpcy5pbnN0YW5jZS5vcHRpb25zLmhhbmRsZSApIDpcblx0XHRcdFx0XHR0aGlzLml0ZW0sXG5cdFx0XHRcdFwidWktc29ydGFibGUtaGFuZGxlXCJcblx0XHRcdCk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9tb3VzZURlc3Ryb3koKTtcblxuXHRcdGZvciAoIHZhciBpID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcblx0XHRcdHRoaXMuaXRlbXNbIGkgXS5pdGVtLnJlbW92ZURhdGEoIHRoaXMud2lkZ2V0TmFtZSArIFwiLWl0ZW1cIiApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdF9tb3VzZUNhcHR1cmU6IGZ1bmN0aW9uKCBldmVudCwgb3ZlcnJpZGVIYW5kbGUgKSB7XG5cdFx0dmFyIGN1cnJlbnRJdGVtID0gbnVsbCxcblx0XHRcdHZhbGlkSGFuZGxlID0gZmFsc2UsXG5cdFx0XHR0aGF0ID0gdGhpcztcblxuXHRcdGlmICggdGhpcy5yZXZlcnRpbmcgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgfHwgdGhpcy5vcHRpb25zLnR5cGUgPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly9XZSBoYXZlIHRvIHJlZnJlc2ggdGhlIGl0ZW1zIGRhdGEgb25jZSBmaXJzdFxuXHRcdHRoaXMuX3JlZnJlc2hJdGVtcyggZXZlbnQgKTtcblxuXHRcdC8vRmluZCBvdXQgaWYgdGhlIGNsaWNrZWQgbm9kZSAob3Igb25lIG9mIGl0cyBwYXJlbnRzKSBpcyBhIGFjdHVhbCBpdGVtIGluIHRoaXMuaXRlbXNcblx0XHQkKCBldmVudC50YXJnZXQgKS5wYXJlbnRzKCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoICQuZGF0YSggdGhpcywgdGhhdC53aWRnZXROYW1lICsgXCItaXRlbVwiICkgPT09IHRoYXQgKSB7XG5cdFx0XHRcdGN1cnJlbnRJdGVtID0gJCggdGhpcyApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdGlmICggJC5kYXRhKCBldmVudC50YXJnZXQsIHRoYXQud2lkZ2V0TmFtZSArIFwiLWl0ZW1cIiApID09PSB0aGF0ICkge1xuXHRcdFx0Y3VycmVudEl0ZW0gPSAkKCBldmVudC50YXJnZXQgKTtcblx0XHR9XG5cblx0XHRpZiAoICFjdXJyZW50SXRlbSApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuaGFuZGxlICYmICFvdmVycmlkZUhhbmRsZSApIHtcblx0XHRcdCQoIHRoaXMub3B0aW9ucy5oYW5kbGUsIGN1cnJlbnRJdGVtICkuZmluZCggXCIqXCIgKS5hZGRCYWNrKCkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyA9PT0gZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0XHRcdHZhbGlkSGFuZGxlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdFx0aWYgKCAhdmFsaWRIYW5kbGUgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmN1cnJlbnRJdGVtID0gY3VycmVudEl0ZW07XG5cdFx0dGhpcy5fcmVtb3ZlQ3VycmVudHNGcm9tSXRlbXMoKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHR9LFxuXG5cdF9tb3VzZVN0YXJ0OiBmdW5jdGlvbiggZXZlbnQsIG92ZXJyaWRlSGFuZGxlLCBub0FjdGl2YXRpb24gKSB7XG5cblx0XHR2YXIgaSwgYm9keSxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnM7XG5cblx0XHR0aGlzLmN1cnJlbnRDb250YWluZXIgPSB0aGlzO1xuXG5cdFx0Ly9XZSBvbmx5IG5lZWQgdG8gY2FsbCByZWZyZXNoUG9zaXRpb25zLCBiZWNhdXNlIHRoZSByZWZyZXNoSXRlbXMgY2FsbCBoYXMgYmVlbiBtb3ZlZCB0b1xuXHRcdC8vIG1vdXNlQ2FwdHVyZVxuXHRcdHRoaXMucmVmcmVzaFBvc2l0aW9ucygpO1xuXG5cdFx0Ly9DcmVhdGUgYW5kIGFwcGVuZCB0aGUgdmlzaWJsZSBoZWxwZXJcblx0XHR0aGlzLmhlbHBlciA9IHRoaXMuX2NyZWF0ZUhlbHBlciggZXZlbnQgKTtcblxuXHRcdC8vQ2FjaGUgdGhlIGhlbHBlciBzaXplXG5cdFx0dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO1xuXG5cdFx0Lypcblx0XHQgKiAtIFBvc2l0aW9uIGdlbmVyYXRpb24gLVxuXHRcdCAqIFRoaXMgYmxvY2sgZ2VuZXJhdGVzIGV2ZXJ5dGhpbmcgcG9zaXRpb24gcmVsYXRlZCAtIGl0J3MgdGhlIGNvcmUgb2YgZHJhZ2dhYmxlcy5cblx0XHQgKi9cblxuXHRcdC8vQ2FjaGUgdGhlIG1hcmdpbnMgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnRcblx0XHR0aGlzLl9jYWNoZU1hcmdpbnMoKTtcblxuXHRcdC8vR2V0IHRoZSBuZXh0IHNjcm9sbGluZyBwYXJlbnRcblx0XHR0aGlzLnNjcm9sbFBhcmVudCA9IHRoaXMuaGVscGVyLnNjcm9sbFBhcmVudCgpO1xuXG5cdFx0Ly9UaGUgZWxlbWVudCdzIGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIG1pbnVzIG1hcmdpbnNcblx0XHR0aGlzLm9mZnNldCA9IHRoaXMuY3VycmVudEl0ZW0ub2Zmc2V0KCk7XG5cdFx0dGhpcy5vZmZzZXQgPSB7XG5cdFx0XHR0b3A6IHRoaXMub2Zmc2V0LnRvcCAtIHRoaXMubWFyZ2lucy50b3AsXG5cdFx0XHRsZWZ0OiB0aGlzLm9mZnNldC5sZWZ0IC0gdGhpcy5tYXJnaW5zLmxlZnRcblx0XHR9O1xuXG5cdFx0JC5leHRlbmQoIHRoaXMub2Zmc2V0LCB7XG5cdFx0XHRjbGljazogeyAvL1doZXJlIHRoZSBjbGljayBoYXBwZW5lZCwgcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnRcblx0XHRcdFx0bGVmdDogZXZlbnQucGFnZVggLSB0aGlzLm9mZnNldC5sZWZ0LFxuXHRcdFx0XHR0b3A6IGV2ZW50LnBhZ2VZIC0gdGhpcy5vZmZzZXQudG9wXG5cdFx0XHR9LFxuXHRcdFx0cGFyZW50OiB0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxcblxuXHRcdFx0Ly8gVGhpcyBpcyBhIHJlbGF0aXZlIHRvIGFic29sdXRlIHBvc2l0aW9uIG1pbnVzIHRoZSBhY3R1YWwgcG9zaXRpb24gY2FsY3VsYXRpb24gLVxuXHRcdFx0Ly8gb25seSB1c2VkIGZvciByZWxhdGl2ZSBwb3NpdGlvbmVkIGhlbHBlclxuXHRcdFx0cmVsYXRpdmU6IHRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KClcblx0XHR9ICk7XG5cblx0XHQvLyBPbmx5IGFmdGVyIHdlIGdvdCB0aGUgb2Zmc2V0LCB3ZSBjYW4gY2hhbmdlIHRoZSBoZWxwZXIncyBwb3NpdGlvbiB0byBhYnNvbHV0ZVxuXHRcdC8vIFRPRE86IFN0aWxsIG5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byBtYWtlIHJlbGF0aXZlIHNvcnRpbmcgcG9zc2libGVcblx0XHR0aGlzLmhlbHBlci5jc3MoIFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiICk7XG5cdFx0dGhpcy5jc3NQb3NpdGlvbiA9IHRoaXMuaGVscGVyLmNzcyggXCJwb3NpdGlvblwiICk7XG5cblx0XHQvL0dlbmVyYXRlIHRoZSBvcmlnaW5hbCBwb3NpdGlvblxuXHRcdHRoaXMub3JpZ2luYWxQb3NpdGlvbiA9IHRoaXMuX2dlbmVyYXRlUG9zaXRpb24oIGV2ZW50ICk7XG5cdFx0dGhpcy5vcmlnaW5hbFBhZ2VYID0gZXZlbnQucGFnZVg7XG5cdFx0dGhpcy5vcmlnaW5hbFBhZ2VZID0gZXZlbnQucGFnZVk7XG5cblx0XHQvL0FkanVzdCB0aGUgbW91c2Ugb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBoZWxwZXIgaWYgXCJjdXJzb3JBdFwiIGlzIHN1cHBsaWVkXG5cdFx0KCBvLmN1cnNvckF0ICYmIHRoaXMuX2FkanVzdE9mZnNldEZyb21IZWxwZXIoIG8uY3Vyc29yQXQgKSApO1xuXG5cdFx0Ly9DYWNoZSB0aGUgZm9ybWVyIERPTSBwb3NpdGlvblxuXHRcdHRoaXMuZG9tUG9zaXRpb24gPSB7XG5cdFx0XHRwcmV2OiB0aGlzLmN1cnJlbnRJdGVtLnByZXYoKVsgMCBdLFxuXHRcdFx0cGFyZW50OiB0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWyAwIF1cblx0XHR9O1xuXG5cdFx0Ly8gSWYgdGhlIGhlbHBlciBpcyBub3QgdGhlIG9yaWdpbmFsLCBoaWRlIHRoZSBvcmlnaW5hbCBzbyBpdCdzIG5vdCBwbGF5aW5nIGFueSByb2xlIGR1cmluZ1xuXHRcdC8vIHRoZSBkcmFnLCB3b24ndCBjYXVzZSBhbnl0aGluZyBiYWQgdGhpcyB3YXlcblx0XHRpZiAoIHRoaXMuaGVscGVyWyAwIF0gIT09IHRoaXMuY3VycmVudEl0ZW1bIDAgXSApIHtcblx0XHRcdHRoaXMuY3VycmVudEl0ZW0uaGlkZSgpO1xuXHRcdH1cblxuXHRcdC8vQ3JlYXRlIHRoZSBwbGFjZWhvbGRlclxuXHRcdHRoaXMuX2NyZWF0ZVBsYWNlaG9sZGVyKCk7XG5cblx0XHQvL1NldCBhIGNvbnRhaW5tZW50IGlmIGdpdmVuIGluIHRoZSBvcHRpb25zXG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ICkge1xuXHRcdFx0dGhpcy5fc2V0Q29udGFpbm1lbnQoKTtcblx0XHR9XG5cblx0XHRpZiAoIG8uY3Vyc29yICYmIG8uY3Vyc29yICE9PSBcImF1dG9cIiApIHsgLy8gY3Vyc29yIG9wdGlvblxuXHRcdFx0Ym9keSA9IHRoaXMuZG9jdW1lbnQuZmluZCggXCJib2R5XCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUVcblx0XHRcdHRoaXMuc3RvcmVkQ3Vyc29yID0gYm9keS5jc3MoIFwiY3Vyc29yXCIgKTtcblx0XHRcdGJvZHkuY3NzKCBcImN1cnNvclwiLCBvLmN1cnNvciApO1xuXG5cdFx0XHR0aGlzLnN0b3JlZFN0eWxlc2hlZXQgPVxuXHRcdFx0XHQkKCBcIjxzdHlsZT4qeyBjdXJzb3I6IFwiICsgby5jdXJzb3IgKyBcIiAhaW1wb3J0YW50OyB9PC9zdHlsZT5cIiApLmFwcGVuZFRvKCBib2R5ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvLm9wYWNpdHkgKSB7IC8vIG9wYWNpdHkgb3B0aW9uXG5cdFx0XHRpZiAoIHRoaXMuaGVscGVyLmNzcyggXCJvcGFjaXR5XCIgKSApIHtcblx0XHRcdFx0dGhpcy5fc3RvcmVkT3BhY2l0eSA9IHRoaXMuaGVscGVyLmNzcyggXCJvcGFjaXR5XCIgKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuaGVscGVyLmNzcyggXCJvcGFjaXR5XCIsIG8ub3BhY2l0eSApO1xuXHRcdH1cblxuXHRcdGlmICggby56SW5kZXggKSB7IC8vIHpJbmRleCBvcHRpb25cblx0XHRcdGlmICggdGhpcy5oZWxwZXIuY3NzKCBcInpJbmRleFwiICkgKSB7XG5cdFx0XHRcdHRoaXMuX3N0b3JlZFpJbmRleCA9IHRoaXMuaGVscGVyLmNzcyggXCJ6SW5kZXhcIiApO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5oZWxwZXIuY3NzKCBcInpJbmRleFwiLCBvLnpJbmRleCApO1xuXHRcdH1cblxuXHRcdC8vUHJlcGFyZSBzY3JvbGxpbmdcblx0XHRpZiAoIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0gIT09IHRoaXMuZG9jdW1lbnRbIDAgXSAmJlxuXHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudFsgMCBdLnRhZ05hbWUgIT09IFwiSFRNTFwiICkge1xuXHRcdFx0dGhpcy5vdmVyZmxvd09mZnNldCA9IHRoaXMuc2Nyb2xsUGFyZW50Lm9mZnNldCgpO1xuXHRcdH1cblxuXHRcdC8vQ2FsbCBjYWxsYmFja3Ncblx0XHR0aGlzLl90cmlnZ2VyKCBcInN0YXJ0XCIsIGV2ZW50LCB0aGlzLl91aUhhc2goKSApO1xuXG5cdFx0Ly9SZWNhY2hlIHRoZSBoZWxwZXIgc2l6ZVxuXHRcdGlmICggIXRoaXMuX3ByZXNlcnZlSGVscGVyUHJvcG9ydGlvbnMgKSB7XG5cdFx0XHR0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCk7XG5cdFx0fVxuXG5cdFx0Ly9Qb3N0IFwiYWN0aXZhdGVcIiBldmVudHMgdG8gcG9zc2libGUgY29udGFpbmVyc1xuXHRcdGlmICggIW5vQWN0aXZhdGlvbiApIHtcblx0XHRcdGZvciAoIGkgPSB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaSBdLl90cmlnZ2VyKCBcImFjdGl2YXRlXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIHRoaXMgKSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vUHJlcGFyZSBwb3NzaWJsZSBkcm9wcGFibGVzXG5cdFx0aWYgKCAkLnVpLmRkbWFuYWdlciApIHtcblx0XHRcdCQudWkuZGRtYW5hZ2VyLmN1cnJlbnQgPSB0aGlzO1xuXHRcdH1cblxuXHRcdGlmICggJC51aS5kZG1hbmFnZXIgJiYgIW8uZHJvcEJlaGF2aW91ciApIHtcblx0XHRcdCQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuaGVscGVyLCBcInVpLXNvcnRhYmxlLWhlbHBlclwiICk7XG5cblx0XHQvLyBFeGVjdXRlIHRoZSBkcmFnIG9uY2UgLSB0aGlzIGNhdXNlcyB0aGUgaGVscGVyIG5vdCB0byBiZSB2aXNpYmxlYmVmb3JlIGdldHRpbmcgaXRzXG5cdFx0Ly8gY29ycmVjdCBwb3NpdGlvblxuXHRcdHRoaXMuX21vdXNlRHJhZyggZXZlbnQgKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblxuXHR9LFxuXG5cdF9tb3VzZURyYWc6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgaSwgaXRlbSwgaXRlbUVsZW1lbnQsIGludGVyc2VjdGlvbixcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRzY3JvbGxlZCA9IGZhbHNlO1xuXG5cdFx0Ly9Db21wdXRlIHRoZSBoZWxwZXJzIHBvc2l0aW9uXG5cdFx0dGhpcy5wb3NpdGlvbiA9IHRoaXMuX2dlbmVyYXRlUG9zaXRpb24oIGV2ZW50ICk7XG5cdFx0dGhpcy5wb3NpdGlvbkFicyA9IHRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCBcImFic29sdXRlXCIgKTtcblxuXHRcdGlmICggIXRoaXMubGFzdFBvc2l0aW9uQWJzICkge1xuXHRcdFx0dGhpcy5sYXN0UG9zaXRpb25BYnMgPSB0aGlzLnBvc2l0aW9uQWJzO1xuXHRcdH1cblxuXHRcdC8vRG8gc2Nyb2xsaW5nXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc2Nyb2xsICkge1xuXHRcdFx0aWYgKCB0aGlzLnNjcm9sbFBhcmVudFsgMCBdICE9PSB0aGlzLmRvY3VtZW50WyAwIF0gJiZcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudFsgMCBdLnRhZ05hbWUgIT09IFwiSFRNTFwiICkge1xuXG5cdFx0XHRcdGlmICggKCB0aGlzLm92ZXJmbG93T2Zmc2V0LnRvcCArIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0ub2Zmc2V0SGVpZ2h0ICkgLVxuXHRcdFx0XHRcdFx0ZXZlbnQucGFnZVkgPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0uc2Nyb2xsVG9wID1cblx0XHRcdFx0XHRcdHNjcm9sbGVkID0gdGhpcy5zY3JvbGxQYXJlbnRbIDAgXS5zY3JvbGxUb3AgKyBvLnNjcm9sbFNwZWVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCBldmVudC5wYWdlWSAtIHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wIDwgby5zY3JvbGxTZW5zaXRpdml0eSApIHtcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudFsgMCBdLnNjcm9sbFRvcCA9XG5cdFx0XHRcdFx0XHRzY3JvbGxlZCA9IHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0uc2Nyb2xsVG9wIC0gby5zY3JvbGxTcGVlZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggKCB0aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQgKyB0aGlzLnNjcm9sbFBhcmVudFsgMCBdLm9mZnNldFdpZHRoICkgLVxuXHRcdFx0XHRcdFx0ZXZlbnQucGFnZVggPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0uc2Nyb2xsTGVmdCA9IHNjcm9sbGVkID1cblx0XHRcdFx0XHRcdHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0uc2Nyb2xsTGVmdCArIG8uc2Nyb2xsU3BlZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIGV2ZW50LnBhZ2VYIC0gdGhpcy5vdmVyZmxvd09mZnNldC5sZWZ0IDwgby5zY3JvbGxTZW5zaXRpdml0eSApIHtcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudFsgMCBdLnNjcm9sbExlZnQgPSBzY3JvbGxlZCA9XG5cdFx0XHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudFsgMCBdLnNjcm9sbExlZnQgLSBvLnNjcm9sbFNwZWVkO1xuXHRcdFx0XHR9XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWSAtIHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCkgPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbGVkID0gdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoIHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCkgLSBvLnNjcm9sbFNwZWVkICk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIHRoaXMud2luZG93LmhlaWdodCgpIC0gKCBldmVudC5wYWdlWSAtIHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCkgKSA8XG5cdFx0XHRcdFx0XHRvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbGVkID0gdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoIHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCkgKyBvLnNjcm9sbFNwZWVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIGV2ZW50LnBhZ2VYIC0gdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkgPCBvLnNjcm9sbFNlbnNpdGl2aXR5ICkge1xuXHRcdFx0XHRcdHNjcm9sbGVkID0gdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KFxuXHRcdFx0XHRcdFx0dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkgLSBvLnNjcm9sbFNwZWVkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIGlmICggdGhpcy53aW5kb3cud2lkdGgoKSAtICggZXZlbnQucGFnZVggLSB0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKSApIDxcblx0XHRcdFx0XHRcdG8uc2Nyb2xsU2Vuc2l0aXZpdHkgKSB7XG5cdFx0XHRcdFx0c2Nyb2xsZWQgPSB0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoXG5cdFx0XHRcdFx0XHR0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKSArIG8uc2Nyb2xsU3BlZWRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBzY3JvbGxlZCAhPT0gZmFsc2UgJiYgJC51aS5kZG1hbmFnZXIgJiYgIW8uZHJvcEJlaGF2aW91ciApIHtcblx0XHRcdFx0JC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMoIHRoaXMsIGV2ZW50ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9SZWdlbmVyYXRlIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiB1c2VkIGZvciBwb3NpdGlvbiBjaGVja3Ncblx0XHR0aGlzLnBvc2l0aW9uQWJzID0gdGhpcy5fY29udmVydFBvc2l0aW9uVG8oIFwiYWJzb2x1dGVcIiApO1xuXG5cdFx0Ly9TZXQgdGhlIGhlbHBlciBwb3NpdGlvblxuXHRcdGlmICggIXRoaXMub3B0aW9ucy5heGlzIHx8IHRoaXMub3B0aW9ucy5heGlzICE9PSBcInlcIiApIHtcblx0XHRcdHRoaXMuaGVscGVyWyAwIF0uc3R5bGUubGVmdCA9IHRoaXMucG9zaXRpb24ubGVmdCArIFwicHhcIjtcblx0XHR9XG5cdFx0aWYgKCAhdGhpcy5vcHRpb25zLmF4aXMgfHwgdGhpcy5vcHRpb25zLmF4aXMgIT09IFwieFwiICkge1xuXHRcdFx0dGhpcy5oZWxwZXJbIDAgXS5zdHlsZS50b3AgPSB0aGlzLnBvc2l0aW9uLnRvcCArIFwicHhcIjtcblx0XHR9XG5cblx0XHQvL1JlYXJyYW5nZVxuXHRcdGZvciAoIGkgPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuXG5cdFx0XHQvL0NhY2hlIHZhcmlhYmxlcyBhbmQgaW50ZXJzZWN0aW9uLCBjb250aW51ZSBpZiBubyBpbnRlcnNlY3Rpb25cblx0XHRcdGl0ZW0gPSB0aGlzLml0ZW1zWyBpIF07XG5cdFx0XHRpdGVtRWxlbWVudCA9IGl0ZW0uaXRlbVsgMCBdO1xuXHRcdFx0aW50ZXJzZWN0aW9uID0gdGhpcy5faW50ZXJzZWN0c1dpdGhQb2ludGVyKCBpdGVtICk7XG5cdFx0XHRpZiAoICFpbnRlcnNlY3Rpb24gKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IHB1dCB0aGUgcGxhY2Vob2xkZXIgaW5zaWRlIHRoZSBjdXJyZW50IENvbnRhaW5lciwgc2tpcCBhbGxcblx0XHRcdC8vIGl0ZW1zIGZyb20gb3RoZXIgY29udGFpbmVycy4gVGhpcyB3b3JrcyBiZWNhdXNlIHdoZW4gbW92aW5nXG5cdFx0XHQvLyBhbiBpdGVtIGZyb20gb25lIGNvbnRhaW5lciB0byBhbm90aGVyIHRoZVxuXHRcdFx0Ly8gY3VycmVudENvbnRhaW5lciBpcyBzd2l0Y2hlZCBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGlzIG1vdmVkLlxuXHRcdFx0Ly9cblx0XHRcdC8vIFdpdGhvdXQgdGhpcywgbW92aW5nIGl0ZW1zIGluIFwic3ViLXNvcnRhYmxlc1wiIGNhbiBjYXVzZVxuXHRcdFx0Ly8gdGhlIHBsYWNlaG9sZGVyIHRvIGppdHRlciBiZXR3ZWVuIHRoZSBvdXRlciBhbmQgaW5uZXIgY29udGFpbmVyLlxuXHRcdFx0aWYgKCBpdGVtLmluc3RhbmNlICE9PSB0aGlzLmN1cnJlbnRDb250YWluZXIgKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYW5ub3QgaW50ZXJzZWN0IHdpdGggaXRzZWxmXG5cdFx0XHQvLyBubyB1c2VsZXNzIGFjdGlvbnMgdGhhdCBoYXZlIGJlZW4gZG9uZSBiZWZvcmVcblx0XHRcdC8vIG5vIGFjdGlvbiBpZiB0aGUgaXRlbSBtb3ZlZCBpcyB0aGUgcGFyZW50IG9mIHRoZSBpdGVtIGNoZWNrZWRcblx0XHRcdGlmICggaXRlbUVsZW1lbnQgIT09IHRoaXMuY3VycmVudEl0ZW1bIDAgXSAmJlxuXHRcdFx0XHR0aGlzLnBsYWNlaG9sZGVyWyBpbnRlcnNlY3Rpb24gPT09IDEgPyBcIm5leHRcIiA6IFwicHJldlwiIF0oKVsgMCBdICE9PSBpdGVtRWxlbWVudCAmJlxuXHRcdFx0XHQhJC5jb250YWlucyggdGhpcy5wbGFjZWhvbGRlclsgMCBdLCBpdGVtRWxlbWVudCApICYmXG5cdFx0XHRcdCggdGhpcy5vcHRpb25zLnR5cGUgPT09IFwic2VtaS1keW5hbWljXCIgP1xuXHRcdFx0XHRcdCEkLmNvbnRhaW5zKCB0aGlzLmVsZW1lbnRbIDAgXSwgaXRlbUVsZW1lbnQgKSA6XG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblxuXHRcdFx0XHR0aGlzLmRpcmVjdGlvbiA9IGludGVyc2VjdGlvbiA9PT0gMSA/IFwiZG93blwiIDogXCJ1cFwiO1xuXG5cdFx0XHRcdGlmICggdGhpcy5vcHRpb25zLnRvbGVyYW5jZSA9PT0gXCJwb2ludGVyXCIgfHwgdGhpcy5faW50ZXJzZWN0c1dpdGhTaWRlcyggaXRlbSApICkge1xuXHRcdFx0XHRcdHRoaXMuX3JlYXJyYW5nZSggZXZlbnQsIGl0ZW0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiY2hhbmdlXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goKSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvL1Bvc3QgZXZlbnRzIHRvIGNvbnRhaW5lcnNcblx0XHR0aGlzLl9jb250YWN0Q29udGFpbmVycyggZXZlbnQgKTtcblxuXHRcdC8vSW50ZXJjb25uZWN0IHdpdGggZHJvcHBhYmxlc1xuXHRcdGlmICggJC51aS5kZG1hbmFnZXIgKSB7XG5cdFx0XHQkLnVpLmRkbWFuYWdlci5kcmFnKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdC8vQ2FsbCBjYWxsYmFja3Ncblx0XHR0aGlzLl90cmlnZ2VyKCBcInNvcnRcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCgpICk7XG5cblx0XHR0aGlzLmxhc3RQb3NpdGlvbkFicyA9IHRoaXMucG9zaXRpb25BYnM7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXG5cdH0sXG5cblx0X21vdXNlU3RvcDogZnVuY3Rpb24oIGV2ZW50LCBub1Byb3BhZ2F0aW9uICkge1xuXG5cdFx0aWYgKCAhZXZlbnQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly9JZiB3ZSBhcmUgdXNpbmcgZHJvcHBhYmxlcywgaW5mb3JtIHRoZSBtYW5hZ2VyIGFib3V0IHRoZSBkcm9wXG5cdFx0aWYgKCAkLnVpLmRkbWFuYWdlciAmJiAhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXIgKSB7XG5cdFx0XHQkLnVpLmRkbWFuYWdlci5kcm9wKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5vcHRpb25zLnJldmVydCApIHtcblx0XHRcdHZhciB0aGF0ID0gdGhpcyxcblx0XHRcdFx0Y3VyID0gdGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxcblx0XHRcdFx0YXhpcyA9IHRoaXMub3B0aW9ucy5heGlzLFxuXHRcdFx0XHRhbmltYXRpb24gPSB7fTtcblxuXHRcdFx0aWYgKCAhYXhpcyB8fCBheGlzID09PSBcInhcIiApIHtcblx0XHRcdFx0YW5pbWF0aW9uLmxlZnQgPSBjdXIubGVmdCAtIHRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0IC0gdGhpcy5tYXJnaW5zLmxlZnQgK1xuXHRcdFx0XHRcdCggdGhpcy5vZmZzZXRQYXJlbnRbIDAgXSA9PT0gdGhpcy5kb2N1bWVudFsgMCBdLmJvZHkgP1xuXHRcdFx0XHRcdFx0MCA6XG5cdFx0XHRcdFx0XHR0aGlzLm9mZnNldFBhcmVudFsgMCBdLnNjcm9sbExlZnRcblx0XHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhYXhpcyB8fCBheGlzID09PSBcInlcIiApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnRvcCA9IGN1ci50b3AgLSB0aGlzLm9mZnNldC5wYXJlbnQudG9wIC0gdGhpcy5tYXJnaW5zLnRvcCArXG5cdFx0XHRcdFx0KCB0aGlzLm9mZnNldFBhcmVudFsgMCBdID09PSB0aGlzLmRvY3VtZW50WyAwIF0uYm9keSA/XG5cdFx0XHRcdFx0XHQwIDpcblx0XHRcdFx0XHRcdHRoaXMub2Zmc2V0UGFyZW50WyAwIF0uc2Nyb2xsVG9wXG5cdFx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmV2ZXJ0aW5nID0gdHJ1ZTtcblx0XHRcdCQoIHRoaXMuaGVscGVyICkuYW5pbWF0ZShcblx0XHRcdFx0YW5pbWF0aW9uLFxuXHRcdFx0XHRwYXJzZUludCggdGhpcy5vcHRpb25zLnJldmVydCwgMTAgKSB8fCA1MDAsXG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHRoYXQuX2NsZWFyKCBldmVudCApO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9jbGVhciggZXZlbnQsIG5vUHJvcGFnYXRpb24gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cblx0fSxcblxuXHRjYW5jZWw6IGZ1bmN0aW9uKCkge1xuXG5cdFx0aWYgKCB0aGlzLmRyYWdnaW5nICkge1xuXG5cdFx0XHR0aGlzLl9tb3VzZVVwKCBuZXcgJC5FdmVudCggXCJtb3VzZXVwXCIsIHsgdGFyZ2V0OiBudWxsIH0gKSApO1xuXG5cdFx0XHRpZiAoIHRoaXMub3B0aW9ucy5oZWxwZXIgPT09IFwib3JpZ2luYWxcIiApIHtcblx0XHRcdFx0dGhpcy5jdXJyZW50SXRlbS5jc3MoIHRoaXMuX3N0b3JlZENTUyApO1xuXHRcdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5jdXJyZW50SXRlbSwgXCJ1aS1zb3J0YWJsZS1oZWxwZXJcIiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vUG9zdCBkZWFjdGl2YXRpbmcgZXZlbnRzIHRvIGNvbnRhaW5lcnNcblx0XHRcdGZvciAoIHZhciBpID0gdGhpcy5jb250YWluZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuXHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5fdHJpZ2dlciggXCJkZWFjdGl2YXRlXCIsIG51bGwsIHRoaXMuX3VpSGFzaCggdGhpcyApICk7XG5cdFx0XHRcdGlmICggdGhpcy5jb250YWluZXJzWyBpIF0uY29udGFpbmVyQ2FjaGUub3ZlciApIHtcblx0XHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5fdHJpZ2dlciggXCJvdXRcIiwgbnVsbCwgdGhpcy5fdWlIYXNoKCB0aGlzICkgKTtcblx0XHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5jb250YWluZXJDYWNoZS5vdmVyID0gMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLnBsYWNlaG9sZGVyICkge1xuXG5cdFx0XHQvLyQodGhpcy5wbGFjZWhvbGRlclswXSkucmVtb3ZlKCk7IHdvdWxkIGhhdmUgYmVlbiB0aGUgalF1ZXJ5IHdheSAtIHVuZm9ydHVuYXRlbHksXG5cdFx0XHQvLyBpdCB1bmJpbmRzIEFMTCBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgbm9kZSFcblx0XHRcdGlmICggdGhpcy5wbGFjZWhvbGRlclsgMCBdLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGxhY2Vob2xkZXJbIDAgXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0aGlzLnBsYWNlaG9sZGVyWyAwIF0gKTtcblx0XHRcdH1cblx0XHRcdGlmICggdGhpcy5vcHRpb25zLmhlbHBlciAhPT0gXCJvcmlnaW5hbFwiICYmIHRoaXMuaGVscGVyICYmXG5cdFx0XHRcdFx0dGhpcy5oZWxwZXJbIDAgXS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLmhlbHBlci5yZW1vdmUoKTtcblx0XHRcdH1cblxuXHRcdFx0JC5leHRlbmQoIHRoaXMsIHtcblx0XHRcdFx0aGVscGVyOiBudWxsLFxuXHRcdFx0XHRkcmFnZ2luZzogZmFsc2UsXG5cdFx0XHRcdHJldmVydGluZzogZmFsc2UsXG5cdFx0XHRcdF9ub0ZpbmFsU29ydDogbnVsbFxuXHRcdFx0fSApO1xuXG5cdFx0XHRpZiAoIHRoaXMuZG9tUG9zaXRpb24ucHJldiApIHtcblx0XHRcdFx0JCggdGhpcy5kb21Qb3NpdGlvbi5wcmV2ICkuYWZ0ZXIoIHRoaXMuY3VycmVudEl0ZW0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCQoIHRoaXMuZG9tUG9zaXRpb24ucGFyZW50ICkucHJlcGVuZCggdGhpcy5jdXJyZW50SXRlbSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH0sXG5cblx0c2VyaWFsaXplOiBmdW5jdGlvbiggbyApIHtcblxuXHRcdHZhciBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zQXNqUXVlcnkoIG8gJiYgby5jb25uZWN0ZWQgKSxcblx0XHRcdHN0ciA9IFtdO1xuXHRcdG8gPSBvIHx8IHt9O1xuXG5cdFx0JCggaXRlbXMgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciByZXMgPSAoICQoIG8uaXRlbSB8fCB0aGlzICkuYXR0ciggby5hdHRyaWJ1dGUgfHwgXCJpZFwiICkgfHwgXCJcIiApXG5cdFx0XHRcdC5tYXRjaCggby5leHByZXNzaW9uIHx8ICggLyguKylbXFwtPV9dKC4rKS8gKSApO1xuXHRcdFx0aWYgKCByZXMgKSB7XG5cdFx0XHRcdHN0ci5wdXNoKFxuXHRcdFx0XHRcdCggby5rZXkgfHwgcmVzWyAxIF0gKyBcIltdXCIgKSArXG5cdFx0XHRcdFx0XCI9XCIgKyAoIG8ua2V5ICYmIG8uZXhwcmVzc2lvbiA/IHJlc1sgMSBdIDogcmVzWyAyIF0gKSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGlmICggIXN0ci5sZW5ndGggJiYgby5rZXkgKSB7XG5cdFx0XHRzdHIucHVzaCggby5rZXkgKyBcIj1cIiApO1xuXHRcdH1cblxuXHRcdHJldHVybiBzdHIuam9pbiggXCImXCIgKTtcblxuXHR9LFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCBvICkge1xuXG5cdFx0dmFyIGl0ZW1zID0gdGhpcy5fZ2V0SXRlbXNBc2pRdWVyeSggbyAmJiBvLmNvbm5lY3RlZCApLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHRvID0gbyB8fCB7fTtcblxuXHRcdGl0ZW1zLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0LnB1c2goICQoIG8uaXRlbSB8fCB0aGlzICkuYXR0ciggby5hdHRyaWJ1dGUgfHwgXCJpZFwiICkgfHwgXCJcIiApO1xuXHRcdH0gKTtcblx0XHRyZXR1cm4gcmV0O1xuXG5cdH0sXG5cblx0LyogQmUgY2FyZWZ1bCB3aXRoIHRoZSBmb2xsb3dpbmcgY29yZSBmdW5jdGlvbnMgKi9cblx0X2ludGVyc2VjdHNXaXRoOiBmdW5jdGlvbiggaXRlbSApIHtcblxuXHRcdHZhciB4MSA9IHRoaXMucG9zaXRpb25BYnMubGVmdCxcblx0XHRcdHgyID0geDEgKyB0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLFxuXHRcdFx0eTEgPSB0aGlzLnBvc2l0aW9uQWJzLnRvcCxcblx0XHRcdHkyID0geTEgKyB0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxcblx0XHRcdGwgPSBpdGVtLmxlZnQsXG5cdFx0XHRyID0gbCArIGl0ZW0ud2lkdGgsXG5cdFx0XHR0ID0gaXRlbS50b3AsXG5cdFx0XHRiID0gdCArIGl0ZW0uaGVpZ2h0LFxuXHRcdFx0ZHlDbGljayA9IHRoaXMub2Zmc2V0LmNsaWNrLnRvcCxcblx0XHRcdGR4Q2xpY2sgPSB0aGlzLm9mZnNldC5jbGljay5sZWZ0LFxuXHRcdFx0aXNPdmVyRWxlbWVudEhlaWdodCA9ICggdGhpcy5vcHRpb25zLmF4aXMgPT09IFwieFwiICkgfHwgKCAoIHkxICsgZHlDbGljayApID4gdCAmJlxuXHRcdFx0XHQoIHkxICsgZHlDbGljayApIDwgYiApLFxuXHRcdFx0aXNPdmVyRWxlbWVudFdpZHRoID0gKCB0aGlzLm9wdGlvbnMuYXhpcyA9PT0gXCJ5XCIgKSB8fCAoICggeDEgKyBkeENsaWNrICkgPiBsICYmXG5cdFx0XHRcdCggeDEgKyBkeENsaWNrICkgPCByICksXG5cdFx0XHRpc092ZXJFbGVtZW50ID0gaXNPdmVyRWxlbWVudEhlaWdodCAmJiBpc092ZXJFbGVtZW50V2lkdGg7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy50b2xlcmFuY2UgPT09IFwicG9pbnRlclwiIHx8XG5cdFx0XHR0aGlzLm9wdGlvbnMuZm9yY2VQb2ludGVyRm9yQ29udGFpbmVycyB8fFxuXHRcdFx0KCB0aGlzLm9wdGlvbnMudG9sZXJhbmNlICE9PSBcInBvaW50ZXJcIiAmJlxuXHRcdFx0XHR0aGlzLmhlbHBlclByb3BvcnRpb25zWyB0aGlzLmZsb2F0aW5nID8gXCJ3aWR0aFwiIDogXCJoZWlnaHRcIiBdID5cblx0XHRcdFx0aXRlbVsgdGhpcy5mbG9hdGluZyA/IFwid2lkdGhcIiA6IFwiaGVpZ2h0XCIgXSApXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gaXNPdmVyRWxlbWVudDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRyZXR1cm4gKCBsIDwgeDEgKyAoIHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGggLyAyICkgJiYgLy8gUmlnaHQgSGFsZlxuXHRcdFx0XHR4MiAtICggdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCAvIDIgKSA8IHIgJiYgLy8gTGVmdCBIYWxmXG5cdFx0XHRcdHQgPCB5MSArICggdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQgLyAyICkgJiYgLy8gQm90dG9tIEhhbGZcblx0XHRcdFx0eTIgLSAoIHRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0IC8gMiApIDwgYiApOyAvLyBUb3AgSGFsZlxuXG5cdFx0fVxuXHR9LFxuXG5cdF9pbnRlcnNlY3RzV2l0aFBvaW50ZXI6IGZ1bmN0aW9uKCBpdGVtICkge1xuXHRcdHZhciB2ZXJ0aWNhbERpcmVjdGlvbiwgaG9yaXpvbnRhbERpcmVjdGlvbixcblx0XHRcdGlzT3ZlckVsZW1lbnRIZWlnaHQgPSAoIHRoaXMub3B0aW9ucy5heGlzID09PSBcInhcIiApIHx8XG5cdFx0XHRcdHRoaXMuX2lzT3ZlckF4aXMoXG5cdFx0XHRcdFx0dGhpcy5wb3NpdGlvbkFicy50b3AgKyB0aGlzLm9mZnNldC5jbGljay50b3AsIGl0ZW0udG9wLCBpdGVtLmhlaWdodCApLFxuXHRcdFx0aXNPdmVyRWxlbWVudFdpZHRoID0gKCB0aGlzLm9wdGlvbnMuYXhpcyA9PT0gXCJ5XCIgKSB8fFxuXHRcdFx0XHR0aGlzLl9pc092ZXJBeGlzKFxuXHRcdFx0XHRcdHRoaXMucG9zaXRpb25BYnMubGVmdCArIHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQsIGl0ZW0ubGVmdCwgaXRlbS53aWR0aCApLFxuXHRcdFx0aXNPdmVyRWxlbWVudCA9IGlzT3ZlckVsZW1lbnRIZWlnaHQgJiYgaXNPdmVyRWxlbWVudFdpZHRoO1xuXG5cdFx0aWYgKCAhaXNPdmVyRWxlbWVudCApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR2ZXJ0aWNhbERpcmVjdGlvbiA9IHRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpO1xuXHRcdGhvcml6b250YWxEaXJlY3Rpb24gPSB0aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmxvYXRpbmcgP1xuXHRcdFx0KCAoIGhvcml6b250YWxEaXJlY3Rpb24gPT09IFwicmlnaHRcIiB8fCB2ZXJ0aWNhbERpcmVjdGlvbiA9PT0gXCJkb3duXCIgKSA/IDIgOiAxIClcblx0XHRcdDogKCB2ZXJ0aWNhbERpcmVjdGlvbiAmJiAoIHZlcnRpY2FsRGlyZWN0aW9uID09PSBcImRvd25cIiA/IDIgOiAxICkgKTtcblxuXHR9LFxuXG5cdF9pbnRlcnNlY3RzV2l0aFNpZGVzOiBmdW5jdGlvbiggaXRlbSApIHtcblxuXHRcdHZhciBpc092ZXJCb3R0b21IYWxmID0gdGhpcy5faXNPdmVyQXhpcyggdGhpcy5wb3NpdGlvbkFicy50b3AgK1xuXHRcdFx0XHR0aGlzLm9mZnNldC5jbGljay50b3AsIGl0ZW0udG9wICsgKCBpdGVtLmhlaWdodCAvIDIgKSwgaXRlbS5oZWlnaHQgKSxcblx0XHRcdGlzT3ZlclJpZ2h0SGFsZiA9IHRoaXMuX2lzT3ZlckF4aXMoIHRoaXMucG9zaXRpb25BYnMubGVmdCArXG5cdFx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQsIGl0ZW0ubGVmdCArICggaXRlbS53aWR0aCAvIDIgKSwgaXRlbS53aWR0aCApLFxuXHRcdFx0dmVydGljYWxEaXJlY3Rpb24gPSB0aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKSxcblx0XHRcdGhvcml6b250YWxEaXJlY3Rpb24gPSB0aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO1xuXG5cdFx0aWYgKCB0aGlzLmZsb2F0aW5nICYmIGhvcml6b250YWxEaXJlY3Rpb24gKSB7XG5cdFx0XHRyZXR1cm4gKCAoIGhvcml6b250YWxEaXJlY3Rpb24gPT09IFwicmlnaHRcIiAmJiBpc092ZXJSaWdodEhhbGYgKSB8fFxuXHRcdFx0XHQoIGhvcml6b250YWxEaXJlY3Rpb24gPT09IFwibGVmdFwiICYmICFpc092ZXJSaWdodEhhbGYgKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdmVydGljYWxEaXJlY3Rpb24gJiYgKCAoIHZlcnRpY2FsRGlyZWN0aW9uID09PSBcImRvd25cIiAmJiBpc092ZXJCb3R0b21IYWxmICkgfHxcblx0XHRcdFx0KCB2ZXJ0aWNhbERpcmVjdGlvbiA9PT0gXCJ1cFwiICYmICFpc092ZXJCb3R0b21IYWxmICkgKTtcblx0XHR9XG5cblx0fSxcblxuXHRfZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZGVsdGEgPSB0aGlzLnBvc2l0aW9uQWJzLnRvcCAtIHRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtcblx0XHRyZXR1cm4gZGVsdGEgIT09IDAgJiYgKCBkZWx0YSA+IDAgPyBcImRvd25cIiA6IFwidXBcIiApO1xuXHR9LFxuXG5cdF9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGRlbHRhID0gdGhpcy5wb3NpdGlvbkFicy5sZWZ0IC0gdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtcblx0XHRyZXR1cm4gZGVsdGEgIT09IDAgJiYgKCBkZWx0YSA+IDAgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiApO1xuXHR9LFxuXG5cdHJlZnJlc2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR0aGlzLl9yZWZyZXNoSXRlbXMoIGV2ZW50ICk7XG5cdFx0dGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCk7XG5cdFx0dGhpcy5yZWZyZXNoUG9zaXRpb25zKCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0X2Nvbm5lY3RXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblx0XHRyZXR1cm4gb3B0aW9ucy5jb25uZWN0V2l0aC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nID9cblx0XHRcdFsgb3B0aW9ucy5jb25uZWN0V2l0aCBdIDpcblx0XHRcdG9wdGlvbnMuY29ubmVjdFdpdGg7XG5cdH0sXG5cblx0X2dldEl0ZW1zQXNqUXVlcnk6IGZ1bmN0aW9uKCBjb25uZWN0ZWQgKSB7XG5cblx0XHR2YXIgaSwgaiwgY3VyLCBpbnN0LFxuXHRcdFx0aXRlbXMgPSBbXSxcblx0XHRcdHF1ZXJpZXMgPSBbXSxcblx0XHRcdGNvbm5lY3RXaXRoID0gdGhpcy5fY29ubmVjdFdpdGgoKTtcblxuXHRcdGlmICggY29ubmVjdFdpdGggJiYgY29ubmVjdGVkICkge1xuXHRcdFx0Zm9yICggaSA9IGNvbm5lY3RXaXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuXHRcdFx0XHRjdXIgPSAkKCBjb25uZWN0V2l0aFsgaSBdLCB0aGlzLmRvY3VtZW50WyAwIF0gKTtcblx0XHRcdFx0Zm9yICggaiA9IGN1ci5sZW5ndGggLSAxOyBqID49IDA7IGotLSApIHtcblx0XHRcdFx0XHRpbnN0ID0gJC5kYXRhKCBjdXJbIGogXSwgdGhpcy53aWRnZXRGdWxsTmFtZSApO1xuXHRcdFx0XHRcdGlmICggaW5zdCAmJiBpbnN0ICE9PSB0aGlzICYmICFpbnN0Lm9wdGlvbnMuZGlzYWJsZWQgKSB7XG5cdFx0XHRcdFx0XHRxdWVyaWVzLnB1c2goIFsgJC5pc0Z1bmN0aW9uKCBpbnN0Lm9wdGlvbnMuaXRlbXMgKSA/XG5cdFx0XHRcdFx0XHRcdGluc3Qub3B0aW9ucy5pdGVtcy5jYWxsKCBpbnN0LmVsZW1lbnQgKSA6XG5cdFx0XHRcdFx0XHRcdCQoIGluc3Qub3B0aW9ucy5pdGVtcywgaW5zdC5lbGVtZW50IClcblx0XHRcdFx0XHRcdFx0XHQubm90KCBcIi51aS1zb3J0YWJsZS1oZWxwZXJcIiApXG5cdFx0XHRcdFx0XHRcdFx0Lm5vdCggXCIudWktc29ydGFibGUtcGxhY2Vob2xkZXJcIiApLCBpbnN0IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRxdWVyaWVzLnB1c2goIFsgJC5pc0Z1bmN0aW9uKCB0aGlzLm9wdGlvbnMuaXRlbXMgKSA/XG5cdFx0XHR0aGlzLm9wdGlvbnMuaXRlbXNcblx0XHRcdFx0LmNhbGwoIHRoaXMuZWxlbWVudCwgbnVsbCwgeyBvcHRpb25zOiB0aGlzLm9wdGlvbnMsIGl0ZW06IHRoaXMuY3VycmVudEl0ZW0gfSApIDpcblx0XHRcdCQoIHRoaXMub3B0aW9ucy5pdGVtcywgdGhpcy5lbGVtZW50IClcblx0XHRcdFx0Lm5vdCggXCIudWktc29ydGFibGUtaGVscGVyXCIgKVxuXHRcdFx0XHQubm90KCBcIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlclwiICksIHRoaXMgXSApO1xuXG5cdFx0ZnVuY3Rpb24gYWRkSXRlbXMoKSB7XG5cdFx0XHRpdGVtcy5wdXNoKCB0aGlzICk7XG5cdFx0fVxuXHRcdGZvciAoIGkgPSBxdWVyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuXHRcdFx0cXVlcmllc1sgaSBdWyAwIF0uZWFjaCggYWRkSXRlbXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gJCggaXRlbXMgKTtcblxuXHR9LFxuXG5cdF9yZW1vdmVDdXJyZW50c0Zyb21JdGVtczogZnVuY3Rpb24oKSB7XG5cblx0XHR2YXIgbGlzdCA9IHRoaXMuY3VycmVudEl0ZW0uZmluZCggXCI6ZGF0YShcIiArIHRoaXMud2lkZ2V0TmFtZSArIFwiLWl0ZW0pXCIgKTtcblxuXHRcdHRoaXMuaXRlbXMgPSAkLmdyZXAoIHRoaXMuaXRlbXMsIGZ1bmN0aW9uKCBpdGVtICkge1xuXHRcdFx0Zm9yICggdmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKyApIHtcblx0XHRcdFx0aWYgKCBsaXN0WyBqIF0gPT09IGl0ZW0uaXRlbVsgMCBdICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSApO1xuXG5cdH0sXG5cblx0X3JlZnJlc2hJdGVtczogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0dGhpcy5pdGVtcyA9IFtdO1xuXHRcdHRoaXMuY29udGFpbmVycyA9IFsgdGhpcyBdO1xuXG5cdFx0dmFyIGksIGosIGN1ciwgaW5zdCwgdGFyZ2V0RGF0YSwgX3F1ZXJpZXMsIGl0ZW0sIHF1ZXJpZXNMZW5ndGgsXG5cdFx0XHRpdGVtcyA9IHRoaXMuaXRlbXMsXG5cdFx0XHRxdWVyaWVzID0gWyBbICQuaXNGdW5jdGlvbiggdGhpcy5vcHRpb25zLml0ZW1zICkgP1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCggdGhpcy5lbGVtZW50WyAwIF0sIGV2ZW50LCB7IGl0ZW06IHRoaXMuY3VycmVudEl0ZW0gfSApIDpcblx0XHRcdFx0JCggdGhpcy5vcHRpb25zLml0ZW1zLCB0aGlzLmVsZW1lbnQgKSwgdGhpcyBdIF0sXG5cdFx0XHRjb25uZWN0V2l0aCA9IHRoaXMuX2Nvbm5lY3RXaXRoKCk7XG5cblx0XHQvL1Nob3VsZG4ndCBiZSBydW4gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaCBkdWUgdG8gbWFzc2l2ZSBzbG93LWRvd25cblx0XHRpZiAoIGNvbm5lY3RXaXRoICYmIHRoaXMucmVhZHkgKSB7XG5cdFx0XHRmb3IgKCBpID0gY29ubmVjdFdpdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cdFx0XHRcdGN1ciA9ICQoIGNvbm5lY3RXaXRoWyBpIF0sIHRoaXMuZG9jdW1lbnRbIDAgXSApO1xuXHRcdFx0XHRmb3IgKCBqID0gY3VyLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tICkge1xuXHRcdFx0XHRcdGluc3QgPSAkLmRhdGEoIGN1clsgaiBdLCB0aGlzLndpZGdldEZ1bGxOYW1lICk7XG5cdFx0XHRcdFx0aWYgKCBpbnN0ICYmIGluc3QgIT09IHRoaXMgJiYgIWluc3Qub3B0aW9ucy5kaXNhYmxlZCApIHtcblx0XHRcdFx0XHRcdHF1ZXJpZXMucHVzaCggWyAkLmlzRnVuY3Rpb24oIGluc3Qub3B0aW9ucy5pdGVtcyApID9cblx0XHRcdFx0XHRcdFx0aW5zdC5vcHRpb25zLml0ZW1zXG5cdFx0XHRcdFx0XHRcdFx0LmNhbGwoIGluc3QuZWxlbWVudFsgMCBdLCBldmVudCwgeyBpdGVtOiB0aGlzLmN1cnJlbnRJdGVtIH0gKSA6XG5cdFx0XHRcdFx0XHRcdCQoIGluc3Qub3B0aW9ucy5pdGVtcywgaW5zdC5lbGVtZW50ICksIGluc3QgXSApO1xuXHRcdFx0XHRcdFx0dGhpcy5jb250YWluZXJzLnB1c2goIGluc3QgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKCBpID0gcXVlcmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcblx0XHRcdHRhcmdldERhdGEgPSBxdWVyaWVzWyBpIF1bIDEgXTtcblx0XHRcdF9xdWVyaWVzID0gcXVlcmllc1sgaSBdWyAwIF07XG5cblx0XHRcdGZvciAoIGogPSAwLCBxdWVyaWVzTGVuZ3RoID0gX3F1ZXJpZXMubGVuZ3RoOyBqIDwgcXVlcmllc0xlbmd0aDsgaisrICkge1xuXHRcdFx0XHRpdGVtID0gJCggX3F1ZXJpZXNbIGogXSApO1xuXG5cdFx0XHRcdC8vIERhdGEgZm9yIHRhcmdldCBjaGVja2luZyAobW91c2UgbWFuYWdlcilcblx0XHRcdFx0aXRlbS5kYXRhKCB0aGlzLndpZGdldE5hbWUgKyBcIi1pdGVtXCIsIHRhcmdldERhdGEgKTtcblxuXHRcdFx0XHRpdGVtcy5wdXNoKCB7XG5cdFx0XHRcdFx0aXRlbTogaXRlbSxcblx0XHRcdFx0XHRpbnN0YW5jZTogdGFyZ2V0RGF0YSxcblx0XHRcdFx0XHR3aWR0aDogMCwgaGVpZ2h0OiAwLFxuXHRcdFx0XHRcdGxlZnQ6IDAsIHRvcDogMFxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdH0sXG5cblx0cmVmcmVzaFBvc2l0aW9uczogZnVuY3Rpb24oIGZhc3QgKSB7XG5cblx0XHQvLyBEZXRlcm1pbmUgd2hldGhlciBpdGVtcyBhcmUgYmVpbmcgZGlzcGxheWVkIGhvcml6b250YWxseVxuXHRcdHRoaXMuZmxvYXRpbmcgPSB0aGlzLml0ZW1zLmxlbmd0aCA/XG5cdFx0XHR0aGlzLm9wdGlvbnMuYXhpcyA9PT0gXCJ4XCIgfHwgdGhpcy5faXNGbG9hdGluZyggdGhpcy5pdGVtc1sgMCBdLml0ZW0gKSA6XG5cdFx0XHRmYWxzZTtcblxuXHRcdC8vVGhpcyBoYXMgdG8gYmUgcmVkb25lIGJlY2F1c2UgZHVlIHRvIHRoZSBpdGVtIGJlaW5nIG1vdmVkIG91dC9pbnRvIHRoZSBvZmZzZXRQYXJlbnQsXG5cdFx0Ly8gdGhlIG9mZnNldFBhcmVudCdzIHBvc2l0aW9uIHdpbGwgY2hhbmdlXG5cdFx0aWYgKCB0aGlzLm9mZnNldFBhcmVudCAmJiB0aGlzLmhlbHBlciApIHtcblx0XHRcdHRoaXMub2Zmc2V0LnBhcmVudCA9IHRoaXMuX2dldFBhcmVudE9mZnNldCgpO1xuXHRcdH1cblxuXHRcdHZhciBpLCBpdGVtLCB0LCBwO1xuXG5cdFx0Zm9yICggaSA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cdFx0XHRpdGVtID0gdGhpcy5pdGVtc1sgaSBdO1xuXG5cdFx0XHQvL1dlIGlnbm9yZSBjYWxjdWxhdGluZyBwb3NpdGlvbnMgb2YgYWxsIGNvbm5lY3RlZCBjb250YWluZXJzIHdoZW4gd2UncmUgbm90IG92ZXIgdGhlbVxuXHRcdFx0aWYgKCBpdGVtLmluc3RhbmNlICE9PSB0aGlzLmN1cnJlbnRDb250YWluZXIgJiYgdGhpcy5jdXJyZW50Q29udGFpbmVyICYmXG5cdFx0XHRcdFx0aXRlbS5pdGVtWyAwIF0gIT09IHRoaXMuY3VycmVudEl0ZW1bIDAgXSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHQgPSB0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCA/XG5cdFx0XHRcdCQoIHRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50LCBpdGVtLml0ZW0gKSA6XG5cdFx0XHRcdGl0ZW0uaXRlbTtcblxuXHRcdFx0aWYgKCAhZmFzdCApIHtcblx0XHRcdFx0aXRlbS53aWR0aCA9IHQub3V0ZXJXaWR0aCgpO1xuXHRcdFx0XHRpdGVtLmhlaWdodCA9IHQub3V0ZXJIZWlnaHQoKTtcblx0XHRcdH1cblxuXHRcdFx0cCA9IHQub2Zmc2V0KCk7XG5cdFx0XHRpdGVtLmxlZnQgPSBwLmxlZnQ7XG5cdFx0XHRpdGVtLnRvcCA9IHAudG9wO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5vcHRpb25zLmN1c3RvbSAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycy5jYWxsKCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgPSB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cdFx0XHRcdHAgPSB0aGlzLmNvbnRhaW5lcnNbIGkgXS5lbGVtZW50Lm9mZnNldCgpO1xuXHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5jb250YWluZXJDYWNoZS5sZWZ0ID0gcC5sZWZ0O1xuXHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5jb250YWluZXJDYWNoZS50b3AgPSBwLnRvcDtcblx0XHRcdFx0dGhpcy5jb250YWluZXJzWyBpIF0uY29udGFpbmVyQ2FjaGUud2lkdGggPVxuXHRcdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaSBdLmVsZW1lbnQub3V0ZXJXaWR0aCgpO1xuXHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGkgXS5jb250YWluZXJDYWNoZS5oZWlnaHQgPVxuXHRcdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaSBdLmVsZW1lbnQub3V0ZXJIZWlnaHQoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRfY3JlYXRlUGxhY2Vob2xkZXI6IGZ1bmN0aW9uKCB0aGF0ICkge1xuXHRcdHRoYXQgPSB0aGF0IHx8IHRoaXM7XG5cdFx0dmFyIGNsYXNzTmFtZSxcblx0XHRcdG8gPSB0aGF0Lm9wdGlvbnM7XG5cblx0XHRpZiAoICFvLnBsYWNlaG9sZGVyIHx8IG8ucGxhY2Vob2xkZXIuY29uc3RydWN0b3IgPT09IFN0cmluZyApIHtcblx0XHRcdGNsYXNzTmFtZSA9IG8ucGxhY2Vob2xkZXI7XG5cdFx0XHRvLnBsYWNlaG9sZGVyID0ge1xuXHRcdFx0XHRlbGVtZW50OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdHZhciBub2RlTmFtZSA9IHRoYXQuY3VycmVudEl0ZW1bIDAgXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0ZWxlbWVudCA9ICQoIFwiPFwiICsgbm9kZU5hbWUgKyBcIj5cIiwgdGhhdC5kb2N1bWVudFsgMCBdICk7XG5cblx0XHRcdFx0XHRcdHRoYXQuX2FkZENsYXNzKCBlbGVtZW50LCBcInVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lIHx8IHRoYXQuY3VycmVudEl0ZW1bIDAgXS5jbGFzc05hbWUgKVxuXHRcdFx0XHRcdFx0XHQuX3JlbW92ZUNsYXNzKCBlbGVtZW50LCBcInVpLXNvcnRhYmxlLWhlbHBlclwiICk7XG5cblx0XHRcdFx0XHRpZiAoIG5vZGVOYW1lID09PSBcInRib2R5XCIgKSB7XG5cdFx0XHRcdFx0XHR0aGF0Ll9jcmVhdGVUclBsYWNlaG9sZGVyKFxuXHRcdFx0XHRcdFx0XHR0aGF0LmN1cnJlbnRJdGVtLmZpbmQoIFwidHJcIiApLmVxKCAwICksXG5cdFx0XHRcdFx0XHRcdCQoIFwiPHRyPlwiLCB0aGF0LmRvY3VtZW50WyAwIF0gKS5hcHBlbmRUbyggZWxlbWVudCApXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcInRyXCIgKSB7XG5cdFx0XHRcdFx0XHR0aGF0Ll9jcmVhdGVUclBsYWNlaG9sZGVyKCB0aGF0LmN1cnJlbnRJdGVtLCBlbGVtZW50ICk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwiaW1nXCIgKSB7XG5cdFx0XHRcdFx0XHRlbGVtZW50LmF0dHIoIFwic3JjXCIsIHRoYXQuY3VycmVudEl0ZW0uYXR0ciggXCJzcmNcIiApICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCAhY2xhc3NOYW1lICkge1xuXHRcdFx0XHRcdFx0ZWxlbWVudC5jc3MoIFwidmlzaWJpbGl0eVwiLCBcImhpZGRlblwiICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGVsZW1lbnQ7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHVwZGF0ZTogZnVuY3Rpb24oIGNvbnRhaW5lciwgcCApIHtcblxuXHRcdFx0XHRcdC8vIDEuIElmIGEgY2xhc3NOYW1lIGlzIHNldCBhcyAncGxhY2Vob2xkZXIgb3B0aW9uLCB3ZSBkb24ndCBmb3JjZSBzaXplcyAtXG5cdFx0XHRcdFx0Ly8gdGhlIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciB0aGF0XG5cdFx0XHRcdFx0Ly8gMi4gVGhlIG9wdGlvbiAnZm9yY2VQbGFjZWhvbGRlclNpemUgY2FuIGJlIGVuYWJsZWQgdG8gZm9yY2UgaXQgZXZlbiBpZiBhXG5cdFx0XHRcdFx0Ly8gY2xhc3MgbmFtZSBpcyBzcGVjaWZpZWRcblx0XHRcdFx0XHRpZiAoIGNsYXNzTmFtZSAmJiAhby5mb3JjZVBsYWNlaG9sZGVyU2l6ZSApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvL0lmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhIGFjdHVhbCBoZWlnaHQgYnkgaXRzZWxmICh3aXRob3V0IHN0eWxlcyBjb21pbmdcblx0XHRcdFx0XHQvLyBmcm9tIGEgc3R5bGVzaGVldCksIGl0IHJlY2VpdmVzIHRoZSBpbmxpbmUgaGVpZ2h0IGZyb20gdGhlIGRyYWdnZWQgaXRlbVxuXHRcdFx0XHRcdGlmICggIXAuaGVpZ2h0KCkgKSB7XG5cdFx0XHRcdFx0XHRwLmhlaWdodChcblx0XHRcdFx0XHRcdFx0dGhhdC5jdXJyZW50SXRlbS5pbm5lckhlaWdodCgpIC1cblx0XHRcdFx0XHRcdFx0cGFyc2VJbnQoIHRoYXQuY3VycmVudEl0ZW0uY3NzKCBcInBhZGRpbmdUb3BcIiApIHx8IDAsIDEwICkgLVxuXHRcdFx0XHRcdFx0XHRwYXJzZUludCggdGhhdC5jdXJyZW50SXRlbS5jc3MoIFwicGFkZGluZ0JvdHRvbVwiICkgfHwgMCwgMTAgKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoICFwLndpZHRoKCkgKSB7XG5cdFx0XHRcdFx0XHRwLndpZHRoKFxuXHRcdFx0XHRcdFx0XHR0aGF0LmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKSAtXG5cdFx0XHRcdFx0XHRcdHBhcnNlSW50KCB0aGF0LmN1cnJlbnRJdGVtLmNzcyggXCJwYWRkaW5nTGVmdFwiICkgfHwgMCwgMTAgKSAtXG5cdFx0XHRcdFx0XHRcdHBhcnNlSW50KCB0aGF0LmN1cnJlbnRJdGVtLmNzcyggXCJwYWRkaW5nUmlnaHRcIiApIHx8IDAsIDEwICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly9DcmVhdGUgdGhlIHBsYWNlaG9sZGVyXG5cdFx0dGhhdC5wbGFjZWhvbGRlciA9ICQoIG8ucGxhY2Vob2xkZXIuZWxlbWVudC5jYWxsKCB0aGF0LmVsZW1lbnQsIHRoYXQuY3VycmVudEl0ZW0gKSApO1xuXG5cdFx0Ly9BcHBlbmQgaXQgYWZ0ZXIgdGhlIGFjdHVhbCBjdXJyZW50IGl0ZW1cblx0XHR0aGF0LmN1cnJlbnRJdGVtLmFmdGVyKCB0aGF0LnBsYWNlaG9sZGVyICk7XG5cblx0XHQvL1VwZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgcGxhY2Vob2xkZXIgKFRPRE86IExvZ2ljIHRvIGZ1enp5LCBzZWUgbGluZSAzMTYvMzE3KVxuXHRcdG8ucGxhY2Vob2xkZXIudXBkYXRlKCB0aGF0LCB0aGF0LnBsYWNlaG9sZGVyICk7XG5cblx0fSxcblxuXHRfY3JlYXRlVHJQbGFjZWhvbGRlcjogZnVuY3Rpb24oIHNvdXJjZVRyLCB0YXJnZXRUciApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cblx0XHRzb3VyY2VUci5jaGlsZHJlbigpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0JCggXCI8dGQ+JiMxNjA7PC90ZD5cIiwgdGhhdC5kb2N1bWVudFsgMCBdIClcblx0XHRcdFx0LmF0dHIoIFwiY29sc3BhblwiLCAkKCB0aGlzICkuYXR0ciggXCJjb2xzcGFuXCIgKSB8fCAxIClcblx0XHRcdFx0LmFwcGVuZFRvKCB0YXJnZXRUciApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRfY29udGFjdENvbnRhaW5lcnM6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgaSwgaiwgZGlzdCwgaXRlbVdpdGhMZWFzdERpc3RhbmNlLCBwb3NQcm9wZXJ0eSwgc2l6ZVByb3BlcnR5LCBjdXIsIG5lYXJCb3R0b20sXG5cdFx0XHRmbG9hdGluZywgYXhpcyxcblx0XHRcdGlubmVybW9zdENvbnRhaW5lciA9IG51bGwsXG5cdFx0XHRpbm5lcm1vc3RJbmRleCA9IG51bGw7XG5cblx0XHQvLyBHZXQgaW5uZXJtb3N0IGNvbnRhaW5lciB0aGF0IGludGVyc2VjdHMgd2l0aCBpdGVtXG5cdFx0Zm9yICggaSA9IHRoaXMuY29udGFpbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcblxuXHRcdFx0Ly8gTmV2ZXIgY29uc2lkZXIgYSBjb250YWluZXIgdGhhdCdzIGxvY2F0ZWQgd2l0aGluIHRoZSBpdGVtIGl0c2VsZlxuXHRcdFx0aWYgKCAkLmNvbnRhaW5zKCB0aGlzLmN1cnJlbnRJdGVtWyAwIF0sIHRoaXMuY29udGFpbmVyc1sgaSBdLmVsZW1lbnRbIDAgXSApICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB0aGlzLl9pbnRlcnNlY3RzV2l0aCggdGhpcy5jb250YWluZXJzWyBpIF0uY29udGFpbmVyQ2FjaGUgKSApIHtcblxuXHRcdFx0XHQvLyBJZiB3ZSd2ZSBhbHJlYWR5IGZvdW5kIGEgY29udGFpbmVyIGFuZCBpdCdzIG1vcmUgXCJpbm5lclwiIHRoYW4gdGhpcywgdGhlbiBjb250aW51ZVxuXHRcdFx0XHRpZiAoIGlubmVybW9zdENvbnRhaW5lciAmJlxuXHRcdFx0XHRcdFx0JC5jb250YWlucyhcblx0XHRcdFx0XHRcdFx0dGhpcy5jb250YWluZXJzWyBpIF0uZWxlbWVudFsgMCBdLFxuXHRcdFx0XHRcdFx0XHRpbm5lcm1vc3RDb250YWluZXIuZWxlbWVudFsgMCBdICkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbm5lcm1vc3RDb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcnNbIGkgXTtcblx0XHRcdFx0aW5uZXJtb3N0SW5kZXggPSBpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIGNvbnRhaW5lciBkb2Vzbid0IGludGVyc2VjdC4gdHJpZ2dlciBcIm91dFwiIGV2ZW50IGlmIG5lY2Vzc2FyeVxuXHRcdFx0XHRpZiAoIHRoaXMuY29udGFpbmVyc1sgaSBdLmNvbnRhaW5lckNhY2hlLm92ZXIgKSB7XG5cdFx0XHRcdFx0dGhpcy5jb250YWluZXJzWyBpIF0uX3RyaWdnZXIoIFwib3V0XCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIHRoaXMgKSApO1xuXHRcdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaSBdLmNvbnRhaW5lckNhY2hlLm92ZXIgPSAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQvLyBJZiBubyBpbnRlcnNlY3RpbmcgY29udGFpbmVycyBmb3VuZCwgcmV0dXJuXG5cdFx0aWYgKCAhaW5uZXJtb3N0Q29udGFpbmVyICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1vdmUgdGhlIGl0ZW0gaW50byB0aGUgY29udGFpbmVyIGlmIGl0J3Mgbm90IHRoZXJlIGFscmVhZHlcblx0XHRpZiAoIHRoaXMuY29udGFpbmVycy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRpZiAoICF0aGlzLmNvbnRhaW5lcnNbIGlubmVybW9zdEluZGV4IF0uY29udGFpbmVyQ2FjaGUub3ZlciApIHtcblx0XHRcdFx0dGhpcy5jb250YWluZXJzWyBpbm5lcm1vc3RJbmRleCBdLl90cmlnZ2VyKCBcIm92ZXJcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCggdGhpcyApICk7XG5cdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaW5uZXJtb3N0SW5kZXggXS5jb250YWluZXJDYWNoZS5vdmVyID0gMTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBXaGVuIGVudGVyaW5nIGEgbmV3IGNvbnRhaW5lciwgd2Ugd2lsbCBmaW5kIHRoZSBpdGVtIHdpdGggdGhlIGxlYXN0IGRpc3RhbmNlIGFuZFxuXHRcdFx0Ly8gYXBwZW5kIG91ciBpdGVtIG5lYXIgaXRcblx0XHRcdGRpc3QgPSAxMDAwMDtcblx0XHRcdGl0ZW1XaXRoTGVhc3REaXN0YW5jZSA9IG51bGw7XG5cdFx0XHRmbG9hdGluZyA9IGlubmVybW9zdENvbnRhaW5lci5mbG9hdGluZyB8fCB0aGlzLl9pc0Zsb2F0aW5nKCB0aGlzLmN1cnJlbnRJdGVtICk7XG5cdFx0XHRwb3NQcm9wZXJ0eSA9IGZsb2F0aW5nID8gXCJsZWZ0XCIgOiBcInRvcFwiO1xuXHRcdFx0c2l6ZVByb3BlcnR5ID0gZmxvYXRpbmcgPyBcIndpZHRoXCIgOiBcImhlaWdodFwiO1xuXHRcdFx0YXhpcyA9IGZsb2F0aW5nID8gXCJwYWdlWFwiIDogXCJwYWdlWVwiO1xuXG5cdFx0XHRmb3IgKCBqID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSApIHtcblx0XHRcdFx0aWYgKCAhJC5jb250YWlucyhcblx0XHRcdFx0XHRcdHRoaXMuY29udGFpbmVyc1sgaW5uZXJtb3N0SW5kZXggXS5lbGVtZW50WyAwIF0sIHRoaXMuaXRlbXNbIGogXS5pdGVtWyAwIF0gKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIHRoaXMuaXRlbXNbIGogXS5pdGVtWyAwIF0gPT09IHRoaXMuY3VycmVudEl0ZW1bIDAgXSApIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGN1ciA9IHRoaXMuaXRlbXNbIGogXS5pdGVtLm9mZnNldCgpWyBwb3NQcm9wZXJ0eSBdO1xuXHRcdFx0XHRuZWFyQm90dG9tID0gZmFsc2U7XG5cdFx0XHRcdGlmICggZXZlbnRbIGF4aXMgXSAtIGN1ciA+IHRoaXMuaXRlbXNbIGogXVsgc2l6ZVByb3BlcnR5IF0gLyAyICkge1xuXHRcdFx0XHRcdG5lYXJCb3R0b20gPSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBNYXRoLmFicyggZXZlbnRbIGF4aXMgXSAtIGN1ciApIDwgZGlzdCApIHtcblx0XHRcdFx0XHRkaXN0ID0gTWF0aC5hYnMoIGV2ZW50WyBheGlzIF0gLSBjdXIgKTtcblx0XHRcdFx0XHRpdGVtV2l0aExlYXN0RGlzdGFuY2UgPSB0aGlzLml0ZW1zWyBqIF07XG5cdFx0XHRcdFx0dGhpcy5kaXJlY3Rpb24gPSBuZWFyQm90dG9tID8gXCJ1cFwiIDogXCJkb3duXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly9DaGVjayBpZiBkcm9wT25FbXB0eSBpcyBlbmFibGVkXG5cdFx0XHRpZiAoICFpdGVtV2l0aExlYXN0RGlzdGFuY2UgJiYgIXRoaXMub3B0aW9ucy5kcm9wT25FbXB0eSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHRoaXMuY3VycmVudENvbnRhaW5lciA9PT0gdGhpcy5jb250YWluZXJzWyBpbm5lcm1vc3RJbmRleCBdICkge1xuXHRcdFx0XHRpZiAoICF0aGlzLmN1cnJlbnRDb250YWluZXIuY29udGFpbmVyQ2FjaGUub3ZlciApIHtcblx0XHRcdFx0XHR0aGlzLmNvbnRhaW5lcnNbIGlubmVybW9zdEluZGV4IF0uX3RyaWdnZXIoIFwib3ZlclwiLCBldmVudCwgdGhpcy5fdWlIYXNoKCkgKTtcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRDb250YWluZXIuY29udGFpbmVyQ2FjaGUub3ZlciA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpdGVtV2l0aExlYXN0RGlzdGFuY2UgP1xuXHRcdFx0XHR0aGlzLl9yZWFycmFuZ2UoIGV2ZW50LCBpdGVtV2l0aExlYXN0RGlzdGFuY2UsIG51bGwsIHRydWUgKSA6XG5cdFx0XHRcdHRoaXMuX3JlYXJyYW5nZSggZXZlbnQsIG51bGwsIHRoaXMuY29udGFpbmVyc1sgaW5uZXJtb3N0SW5kZXggXS5lbGVtZW50LCB0cnVlICk7XG5cdFx0XHR0aGlzLl90cmlnZ2VyKCBcImNoYW5nZVwiLCBldmVudCwgdGhpcy5fdWlIYXNoKCkgKTtcblx0XHRcdHRoaXMuY29udGFpbmVyc1sgaW5uZXJtb3N0SW5kZXggXS5fdHJpZ2dlciggXCJjaGFuZ2VcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCggdGhpcyApICk7XG5cdFx0XHR0aGlzLmN1cnJlbnRDb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcnNbIGlubmVybW9zdEluZGV4IF07XG5cblx0XHRcdC8vVXBkYXRlIHRoZSBwbGFjZWhvbGRlclxuXHRcdFx0dGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSggdGhpcy5jdXJyZW50Q29udGFpbmVyLCB0aGlzLnBsYWNlaG9sZGVyICk7XG5cblx0XHRcdHRoaXMuY29udGFpbmVyc1sgaW5uZXJtb3N0SW5kZXggXS5fdHJpZ2dlciggXCJvdmVyXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIHRoaXMgKSApO1xuXHRcdFx0dGhpcy5jb250YWluZXJzWyBpbm5lcm1vc3RJbmRleCBdLmNvbnRhaW5lckNhY2hlLm92ZXIgPSAxO1xuXHRcdH1cblxuXHR9LFxuXG5cdF9jcmVhdGVIZWxwZXI6IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdHZhciBvID0gdGhpcy5vcHRpb25zLFxuXHRcdFx0aGVscGVyID0gJC5pc0Z1bmN0aW9uKCBvLmhlbHBlciApID9cblx0XHRcdFx0JCggby5oZWxwZXIuYXBwbHkoIHRoaXMuZWxlbWVudFsgMCBdLCBbIGV2ZW50LCB0aGlzLmN1cnJlbnRJdGVtIF0gKSApIDpcblx0XHRcdFx0KCBvLmhlbHBlciA9PT0gXCJjbG9uZVwiID8gdGhpcy5jdXJyZW50SXRlbS5jbG9uZSgpIDogdGhpcy5jdXJyZW50SXRlbSApO1xuXG5cdFx0Ly9BZGQgdGhlIGhlbHBlciB0byB0aGUgRE9NIGlmIHRoYXQgZGlkbid0IGhhcHBlbiBhbHJlYWR5XG5cdFx0aWYgKCAhaGVscGVyLnBhcmVudHMoIFwiYm9keVwiICkubGVuZ3RoICkge1xuXHRcdFx0JCggby5hcHBlbmRUbyAhPT0gXCJwYXJlbnRcIiA/XG5cdFx0XHRcdG8uYXBwZW5kVG8gOlxuXHRcdFx0XHR0aGlzLmN1cnJlbnRJdGVtWyAwIF0ucGFyZW50Tm9kZSApWyAwIF0uYXBwZW5kQ2hpbGQoIGhlbHBlclsgMCBdICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBoZWxwZXJbIDAgXSA9PT0gdGhpcy5jdXJyZW50SXRlbVsgMCBdICkge1xuXHRcdFx0dGhpcy5fc3RvcmVkQ1NTID0ge1xuXHRcdFx0XHR3aWR0aDogdGhpcy5jdXJyZW50SXRlbVsgMCBdLnN0eWxlLndpZHRoLFxuXHRcdFx0XHRoZWlnaHQ6IHRoaXMuY3VycmVudEl0ZW1bIDAgXS5zdHlsZS5oZWlnaHQsXG5cdFx0XHRcdHBvc2l0aW9uOiB0aGlzLmN1cnJlbnRJdGVtLmNzcyggXCJwb3NpdGlvblwiICksXG5cdFx0XHRcdHRvcDogdGhpcy5jdXJyZW50SXRlbS5jc3MoIFwidG9wXCIgKSxcblx0XHRcdFx0bGVmdDogdGhpcy5jdXJyZW50SXRlbS5jc3MoIFwibGVmdFwiIClcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0aWYgKCAhaGVscGVyWyAwIF0uc3R5bGUud2lkdGggfHwgby5mb3JjZUhlbHBlclNpemUgKSB7XG5cdFx0XHRoZWxwZXIud2lkdGgoIHRoaXMuY3VycmVudEl0ZW0ud2lkdGgoKSApO1xuXHRcdH1cblx0XHRpZiAoICFoZWxwZXJbIDAgXS5zdHlsZS5oZWlnaHQgfHwgby5mb3JjZUhlbHBlclNpemUgKSB7XG5cdFx0XHRoZWxwZXIuaGVpZ2h0KCB0aGlzLmN1cnJlbnRJdGVtLmhlaWdodCgpICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhlbHBlcjtcblxuXHR9LFxuXG5cdF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOiBmdW5jdGlvbiggb2JqICkge1xuXHRcdGlmICggdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG9iaiA9IG9iai5zcGxpdCggXCIgXCIgKTtcblx0XHR9XG5cdFx0aWYgKCAkLmlzQXJyYXkoIG9iaiApICkge1xuXHRcdFx0b2JqID0geyBsZWZ0OiArb2JqWyAwIF0sIHRvcDogK29ialsgMSBdIHx8IDAgfTtcblx0XHR9XG5cdFx0aWYgKCBcImxlZnRcIiBpbiBvYmogKSB7XG5cdFx0XHR0aGlzLm9mZnNldC5jbGljay5sZWZ0ID0gb2JqLmxlZnQgKyB0aGlzLm1hcmdpbnMubGVmdDtcblx0XHR9XG5cdFx0aWYgKCBcInJpZ2h0XCIgaW4gb2JqICkge1xuXHRcdFx0dGhpcy5vZmZzZXQuY2xpY2subGVmdCA9IHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGggLSBvYmoucmlnaHQgKyB0aGlzLm1hcmdpbnMubGVmdDtcblx0XHR9XG5cdFx0aWYgKCBcInRvcFwiIGluIG9iaiApIHtcblx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA9IG9iai50b3AgKyB0aGlzLm1hcmdpbnMudG9wO1xuXHRcdH1cblx0XHRpZiAoIFwiYm90dG9tXCIgaW4gb2JqICkge1xuXHRcdFx0dGhpcy5vZmZzZXQuY2xpY2sudG9wID0gdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQgLSBvYmouYm90dG9tICsgdGhpcy5tYXJnaW5zLnRvcDtcblx0XHR9XG5cdH0sXG5cblx0X2dldFBhcmVudE9mZnNldDogZnVuY3Rpb24oKSB7XG5cblx0XHQvL0dldCB0aGUgb2Zmc2V0UGFyZW50IGFuZCBjYWNoZSBpdHMgcG9zaXRpb25cblx0XHR0aGlzLm9mZnNldFBhcmVudCA9IHRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO1xuXHRcdHZhciBwbyA9IHRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBuZWVkIHRvIG1vZGlmeSBhIG9mZnNldCBjYWxjdWxhdGVkIG9uIHN0YXJ0LCBzaW5jZSB0aGVcblx0XHQvLyBmb2xsb3dpbmcgaGFwcGVuZWQ6XG5cdFx0Ly8gMS4gVGhlIHBvc2l0aW9uIG9mIHRoZSBoZWxwZXIgaXMgYWJzb2x1dGUsIHNvIGl0J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGVcblx0XHQvLyBuZXh0IHBvc2l0aW9uZWQgcGFyZW50XG5cdFx0Ly8gMi4gVGhlIGFjdHVhbCBvZmZzZXQgcGFyZW50IGlzIGEgY2hpbGQgb2YgdGhlIHNjcm9sbCBwYXJlbnQsIGFuZCB0aGUgc2Nyb2xsIHBhcmVudCBpc24ndFxuXHRcdC8vIHRoZSBkb2N1bWVudCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgc2Nyb2xsIGlzIGluY2x1ZGVkIGluIHRoZSBpbml0aWFsIGNhbGN1bGF0aW9uIG9mIHRoZVxuXHRcdC8vIG9mZnNldCBvZiB0aGUgcGFyZW50LCBhbmQgbmV2ZXIgcmVjYWxjdWxhdGVkIHVwb24gZHJhZ1xuXHRcdGlmICggdGhpcy5jc3NQb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiICYmIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0gIT09IHRoaXMuZG9jdW1lbnRbIDAgXSAmJlxuXHRcdFx0XHQkLmNvbnRhaW5zKCB0aGlzLnNjcm9sbFBhcmVudFsgMCBdLCB0aGlzLm9mZnNldFBhcmVudFsgMCBdICkgKSB7XG5cdFx0XHRwby5sZWZ0ICs9IHRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTtcblx0XHRcdHBvLnRvcCArPSB0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTtcblx0XHR9XG5cblx0XHQvLyBUaGlzIG5lZWRzIHRvIGJlIGFjdHVhbGx5IGRvbmUgZm9yIGFsbCBicm93c2Vycywgc2luY2UgcGFnZVgvcGFnZVkgaW5jbHVkZXMgdGhpc1xuXHRcdC8vIGluZm9ybWF0aW9uIHdpdGggYW4gdWdseSBJRSBmaXhcblx0XHRpZiAoIHRoaXMub2Zmc2V0UGFyZW50WyAwIF0gPT09IHRoaXMuZG9jdW1lbnRbIDAgXS5ib2R5IHx8XG5cdFx0XHRcdCggdGhpcy5vZmZzZXRQYXJlbnRbIDAgXS50YWdOYW1lICYmXG5cdFx0XHRcdHRoaXMub2Zmc2V0UGFyZW50WyAwIF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImh0bWxcIiAmJiAkLnVpLmllICkgKSB7XG5cdFx0XHRwbyA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHRvcDogcG8udG9wICsgKCBwYXJzZUludCggdGhpcy5vZmZzZXRQYXJlbnQuY3NzKCBcImJvcmRlclRvcFdpZHRoXCIgKSwgMTAgKSB8fCAwICksXG5cdFx0XHRsZWZ0OiBwby5sZWZ0ICsgKCBwYXJzZUludCggdGhpcy5vZmZzZXRQYXJlbnQuY3NzKCBcImJvcmRlckxlZnRXaWR0aFwiICksIDEwICkgfHwgMCApXG5cdFx0fTtcblxuXHR9LFxuXG5cdF9nZXRSZWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oKSB7XG5cblx0XHRpZiAoIHRoaXMuY3NzUG9zaXRpb24gPT09IFwicmVsYXRpdmVcIiApIHtcblx0XHRcdHZhciBwID0gdGhpcy5jdXJyZW50SXRlbS5wb3NpdGlvbigpO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dG9wOiBwLnRvcCAtICggcGFyc2VJbnQoIHRoaXMuaGVscGVyLmNzcyggXCJ0b3BcIiApLCAxMCApIHx8IDAgKSArXG5cdFx0XHRcdFx0dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksXG5cdFx0XHRcdGxlZnQ6IHAubGVmdCAtICggcGFyc2VJbnQoIHRoaXMuaGVscGVyLmNzcyggXCJsZWZ0XCIgKSwgMTAgKSB8fCAwICkgK1xuXHRcdFx0XHRcdHRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XG5cdFx0fVxuXG5cdH0sXG5cblx0X2NhY2hlTWFyZ2luczogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5tYXJnaW5zID0ge1xuXHRcdFx0bGVmdDogKCBwYXJzZUludCggdGhpcy5jdXJyZW50SXRlbS5jc3MoIFwibWFyZ2luTGVmdFwiICksIDEwICkgfHwgMCApLFxuXHRcdFx0dG9wOiAoIHBhcnNlSW50KCB0aGlzLmN1cnJlbnRJdGVtLmNzcyggXCJtYXJnaW5Ub3BcIiApLCAxMCApIHx8IDAgKVxuXHRcdH07XG5cdH0sXG5cblx0X2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuaGVscGVyUHJvcG9ydGlvbnMgPSB7XG5cdFx0XHR3aWR0aDogdGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLFxuXHRcdFx0aGVpZ2h0OiB0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpXG5cdFx0fTtcblx0fSxcblxuXHRfc2V0Q29udGFpbm1lbnQ6IGZ1bmN0aW9uKCkge1xuXG5cdFx0dmFyIGNlLCBjbywgb3Zlcixcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnM7XG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ID09PSBcInBhcmVudFwiICkge1xuXHRcdFx0by5jb250YWlubWVudCA9IHRoaXMuaGVscGVyWyAwIF0ucGFyZW50Tm9kZTtcblx0XHR9XG5cdFx0aWYgKCBvLmNvbnRhaW5tZW50ID09PSBcImRvY3VtZW50XCIgfHwgby5jb250YWlubWVudCA9PT0gXCJ3aW5kb3dcIiApIHtcblx0XHRcdHRoaXMuY29udGFpbm1lbnQgPSBbXG5cdFx0XHRcdDAgLSB0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0IC0gdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsXG5cdFx0XHRcdDAgLSB0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AgLSB0aGlzLm9mZnNldC5wYXJlbnQudG9wLFxuXHRcdFx0XHRvLmNvbnRhaW5tZW50ID09PSBcImRvY3VtZW50XCIgP1xuXHRcdFx0XHRcdHRoaXMuZG9jdW1lbnQud2lkdGgoKSA6XG5cdFx0XHRcdFx0dGhpcy53aW5kb3cud2lkdGgoKSAtIHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGggLSB0aGlzLm1hcmdpbnMubGVmdCxcblx0XHRcdFx0KCBvLmNvbnRhaW5tZW50ID09PSBcImRvY3VtZW50XCIgP1xuXHRcdFx0XHRcdCggdGhpcy5kb2N1bWVudC5oZWlnaHQoKSB8fCBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0ICkgOlxuXHRcdFx0XHRcdHRoaXMud2luZG93LmhlaWdodCgpIHx8IHRoaXMuZG9jdW1lbnRbIDAgXS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0XG5cdFx0XHRcdCkgLSB0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCAtIHRoaXMubWFyZ2lucy50b3Bcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKCAhKCAvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvICkudGVzdCggby5jb250YWlubWVudCApICkge1xuXHRcdFx0Y2UgPSAkKCBvLmNvbnRhaW5tZW50IClbIDAgXTtcblx0XHRcdGNvID0gJCggby5jb250YWlubWVudCApLm9mZnNldCgpO1xuXHRcdFx0b3ZlciA9ICggJCggY2UgKS5jc3MoIFwib3ZlcmZsb3dcIiApICE9PSBcImhpZGRlblwiICk7XG5cblx0XHRcdHRoaXMuY29udGFpbm1lbnQgPSBbXG5cdFx0XHRcdGNvLmxlZnQgKyAoIHBhcnNlSW50KCAkKCBjZSApLmNzcyggXCJib3JkZXJMZWZ0V2lkdGhcIiApLCAxMCApIHx8IDAgKSArXG5cdFx0XHRcdFx0KCBwYXJzZUludCggJCggY2UgKS5jc3MoIFwicGFkZGluZ0xlZnRcIiApLCAxMCApIHx8IDAgKSAtIHRoaXMubWFyZ2lucy5sZWZ0LFxuXHRcdFx0XHRjby50b3AgKyAoIHBhcnNlSW50KCAkKCBjZSApLmNzcyggXCJib3JkZXJUb3BXaWR0aFwiICksIDEwICkgfHwgMCApICtcblx0XHRcdFx0XHQoIHBhcnNlSW50KCAkKCBjZSApLmNzcyggXCJwYWRkaW5nVG9wXCIgKSwgMTAgKSB8fCAwICkgLSB0aGlzLm1hcmdpbnMudG9wLFxuXHRcdFx0XHRjby5sZWZ0ICsgKCBvdmVyID8gTWF0aC5tYXgoIGNlLnNjcm9sbFdpZHRoLCBjZS5vZmZzZXRXaWR0aCApIDogY2Uub2Zmc2V0V2lkdGggKSAtXG5cdFx0XHRcdFx0KCBwYXJzZUludCggJCggY2UgKS5jc3MoIFwiYm9yZGVyTGVmdFdpZHRoXCIgKSwgMTAgKSB8fCAwICkgLVxuXHRcdFx0XHRcdCggcGFyc2VJbnQoICQoIGNlICkuY3NzKCBcInBhZGRpbmdSaWdodFwiICksIDEwICkgfHwgMCApIC1cblx0XHRcdFx0XHR0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoIC0gdGhpcy5tYXJnaW5zLmxlZnQsXG5cdFx0XHRcdGNvLnRvcCArICggb3ZlciA/IE1hdGgubWF4KCBjZS5zY3JvbGxIZWlnaHQsIGNlLm9mZnNldEhlaWdodCApIDogY2Uub2Zmc2V0SGVpZ2h0ICkgLVxuXHRcdFx0XHRcdCggcGFyc2VJbnQoICQoIGNlICkuY3NzKCBcImJvcmRlclRvcFdpZHRoXCIgKSwgMTAgKSB8fCAwICkgLVxuXHRcdFx0XHRcdCggcGFyc2VJbnQoICQoIGNlICkuY3NzKCBcInBhZGRpbmdCb3R0b21cIiApLCAxMCApIHx8IDAgKSAtXG5cdFx0XHRcdFx0dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQgLSB0aGlzLm1hcmdpbnMudG9wXG5cdFx0XHRdO1xuXHRcdH1cblxuXHR9LFxuXG5cdF9jb252ZXJ0UG9zaXRpb25UbzogZnVuY3Rpb24oIGQsIHBvcyApIHtcblxuXHRcdGlmICggIXBvcyApIHtcblx0XHRcdHBvcyA9IHRoaXMucG9zaXRpb247XG5cdFx0fVxuXHRcdHZhciBtb2QgPSBkID09PSBcImFic29sdXRlXCIgPyAxIDogLTEsXG5cdFx0XHRzY3JvbGwgPSB0aGlzLmNzc1Bvc2l0aW9uID09PSBcImFic29sdXRlXCIgJiZcblx0XHRcdFx0ISggdGhpcy5zY3JvbGxQYXJlbnRbIDAgXSAhPT0gdGhpcy5kb2N1bWVudFsgMCBdICYmXG5cdFx0XHRcdCQuY29udGFpbnMoIHRoaXMuc2Nyb2xsUGFyZW50WyAwIF0sIHRoaXMub2Zmc2V0UGFyZW50WyAwIF0gKSApID9cblx0XHRcdFx0XHR0aGlzLm9mZnNldFBhcmVudCA6XG5cdFx0XHRcdFx0dGhpcy5zY3JvbGxQYXJlbnQsXG5cdFx0XHRzY3JvbGxJc1Jvb3ROb2RlID0gKCAvKGh0bWx8Ym9keSkvaSApLnRlc3QoIHNjcm9sbFsgMCBdLnRhZ05hbWUgKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IChcblxuXHRcdFx0XHQvLyBUaGUgYWJzb2x1dGUgbW91c2UgcG9zaXRpb25cblx0XHRcdFx0cG9zLnRvcFx0K1xuXG5cdFx0XHRcdC8vIE9ubHkgZm9yIHJlbGF0aXZlIHBvc2l0aW9uZWQgbm9kZXM6IFJlbGF0aXZlIG9mZnNldCBmcm9tIGVsZW1lbnQgdG8gb2Zmc2V0IHBhcmVudFxuXHRcdFx0XHR0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AgKiBtb2QgK1xuXG5cdFx0XHRcdC8vIFRoZSBvZmZzZXRQYXJlbnQncyBvZmZzZXQgd2l0aG91dCBib3JkZXJzIChvZmZzZXQgKyBib3JkZXIpXG5cdFx0XHRcdHRoaXMub2Zmc2V0LnBhcmVudC50b3AgKiBtb2QgLVxuXHRcdFx0XHQoICggdGhpcy5jc3NQb3NpdGlvbiA9PT0gXCJmaXhlZFwiID9cblx0XHRcdFx0XHQtdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkgOlxuXHRcdFx0XHRcdCggc2Nyb2xsSXNSb290Tm9kZSA/IDAgOiBzY3JvbGwuc2Nyb2xsVG9wKCkgKSApICogbW9kIClcblx0XHRcdCksXG5cdFx0XHRsZWZ0OiAoXG5cblx0XHRcdFx0Ly8gVGhlIGFic29sdXRlIG1vdXNlIHBvc2l0aW9uXG5cdFx0XHRcdHBvcy5sZWZ0ICtcblxuXHRcdFx0XHQvLyBPbmx5IGZvciByZWxhdGl2ZSBwb3NpdGlvbmVkIG5vZGVzOiBSZWxhdGl2ZSBvZmZzZXQgZnJvbSBlbGVtZW50IHRvIG9mZnNldCBwYXJlbnRcblx0XHRcdFx0dGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCAqIG1vZCArXG5cblx0XHRcdFx0Ly8gVGhlIG9mZnNldFBhcmVudCdzIG9mZnNldCB3aXRob3V0IGJvcmRlcnMgKG9mZnNldCArIGJvcmRlcilcblx0XHRcdFx0dGhpcy5vZmZzZXQucGFyZW50LmxlZnQgKiBtb2RcdC1cblx0XHRcdFx0KCAoIHRoaXMuY3NzUG9zaXRpb24gPT09IFwiZml4ZWRcIiA/XG5cdFx0XHRcdFx0LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSA6IHNjcm9sbElzUm9vdE5vZGUgPyAwIDpcblx0XHRcdFx0XHRzY3JvbGwuc2Nyb2xsTGVmdCgpICkgKiBtb2QgKVxuXHRcdFx0KVxuXHRcdH07XG5cblx0fSxcblxuXHRfZ2VuZXJhdGVQb3NpdGlvbjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0dmFyIHRvcCwgbGVmdCxcblx0XHRcdG8gPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRwYWdlWCA9IGV2ZW50LnBhZ2VYLFxuXHRcdFx0cGFnZVkgPSBldmVudC5wYWdlWSxcblx0XHRcdHNjcm9sbCA9IHRoaXMuY3NzUG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiAmJlxuXHRcdFx0XHQhKCB0aGlzLnNjcm9sbFBhcmVudFsgMCBdICE9PSB0aGlzLmRvY3VtZW50WyAwIF0gJiZcblx0XHRcdFx0JC5jb250YWlucyggdGhpcy5zY3JvbGxQYXJlbnRbIDAgXSwgdGhpcy5vZmZzZXRQYXJlbnRbIDAgXSApICkgP1xuXHRcdFx0XHRcdHRoaXMub2Zmc2V0UGFyZW50IDpcblx0XHRcdFx0XHR0aGlzLnNjcm9sbFBhcmVudCxcblx0XHRcdFx0c2Nyb2xsSXNSb290Tm9kZSA9ICggLyhodG1sfGJvZHkpL2kgKS50ZXN0KCBzY3JvbGxbIDAgXS50YWdOYW1lICk7XG5cblx0XHQvLyBUaGlzIGlzIGFub3RoZXIgdmVyeSB3ZWlyZCBzcGVjaWFsIGNhc2UgdGhhdCBvbmx5IGhhcHBlbnMgZm9yIHJlbGF0aXZlIGVsZW1lbnRzOlxuXHRcdC8vIDEuIElmIHRoZSBjc3MgcG9zaXRpb24gaXMgcmVsYXRpdmVcblx0XHQvLyAyLiBhbmQgdGhlIHNjcm9sbCBwYXJlbnQgaXMgdGhlIGRvY3VtZW50IG9yIHNpbWlsYXIgdG8gdGhlIG9mZnNldCBwYXJlbnRcblx0XHQvLyB3ZSBoYXZlIHRvIHJlZnJlc2ggdGhlIHJlbGF0aXZlIG9mZnNldCBkdXJpbmcgdGhlIHNjcm9sbCBzbyB0aGVyZSBhcmUgbm8ganVtcHNcblx0XHRpZiAoIHRoaXMuY3NzUG9zaXRpb24gPT09IFwicmVsYXRpdmVcIiAmJiAhKCB0aGlzLnNjcm9sbFBhcmVudFsgMCBdICE9PSB0aGlzLmRvY3VtZW50WyAwIF0gJiZcblx0XHRcdFx0dGhpcy5zY3JvbGxQYXJlbnRbIDAgXSAhPT0gdGhpcy5vZmZzZXRQYXJlbnRbIDAgXSApICkge1xuXHRcdFx0dGhpcy5vZmZzZXQucmVsYXRpdmUgPSB0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpO1xuXHRcdH1cblxuXHRcdC8qXG5cdFx0ICogLSBQb3NpdGlvbiBjb25zdHJhaW5pbmcgLVxuXHRcdCAqIENvbnN0cmFpbiB0aGUgcG9zaXRpb24gdG8gYSBtaXggb2YgZ3JpZCwgY29udGFpbm1lbnQuXG5cdFx0ICovXG5cblx0XHRpZiAoIHRoaXMub3JpZ2luYWxQb3NpdGlvbiApIHsgLy9JZiB3ZSBhcmUgbm90IGRyYWdnaW5nIHlldCwgd2Ugd29uJ3QgY2hlY2sgZm9yIG9wdGlvbnNcblxuXHRcdFx0aWYgKCB0aGlzLmNvbnRhaW5tZW50ICkge1xuXHRcdFx0XHRpZiAoIGV2ZW50LnBhZ2VYIC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA8IHRoaXMuY29udGFpbm1lbnRbIDAgXSApIHtcblx0XHRcdFx0XHRwYWdlWCA9IHRoaXMuY29udGFpbm1lbnRbIDAgXSArIHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWSAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA8IHRoaXMuY29udGFpbm1lbnRbIDEgXSApIHtcblx0XHRcdFx0XHRwYWdlWSA9IHRoaXMuY29udGFpbm1lbnRbIDEgXSArIHRoaXMub2Zmc2V0LmNsaWNrLnRvcDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGV2ZW50LnBhZ2VYIC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA+IHRoaXMuY29udGFpbm1lbnRbIDIgXSApIHtcblx0XHRcdFx0XHRwYWdlWCA9IHRoaXMuY29udGFpbm1lbnRbIDIgXSArIHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBldmVudC5wYWdlWSAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA+IHRoaXMuY29udGFpbm1lbnRbIDMgXSApIHtcblx0XHRcdFx0XHRwYWdlWSA9IHRoaXMuY29udGFpbm1lbnRbIDMgXSArIHRoaXMub2Zmc2V0LmNsaWNrLnRvcDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIG8uZ3JpZCApIHtcblx0XHRcdFx0dG9wID0gdGhpcy5vcmlnaW5hbFBhZ2VZICsgTWF0aC5yb3VuZCggKCBwYWdlWSAtIHRoaXMub3JpZ2luYWxQYWdlWSApIC9cblx0XHRcdFx0XHRvLmdyaWRbIDEgXSApICogby5ncmlkWyAxIF07XG5cdFx0XHRcdHBhZ2VZID0gdGhpcy5jb250YWlubWVudCA/XG5cdFx0XHRcdFx0KCAoIHRvcCAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA+PSB0aGlzLmNvbnRhaW5tZW50WyAxIF0gJiZcblx0XHRcdFx0XHRcdHRvcCAtIHRoaXMub2Zmc2V0LmNsaWNrLnRvcCA8PSB0aGlzLmNvbnRhaW5tZW50WyAzIF0gKSA/XG5cdFx0XHRcdFx0XHRcdHRvcCA6XG5cdFx0XHRcdFx0XHRcdCggKCB0b3AgLSB0aGlzLm9mZnNldC5jbGljay50b3AgPj0gdGhpcy5jb250YWlubWVudFsgMSBdICkgP1xuXHRcdFx0XHRcdFx0XHRcdHRvcCAtIG8uZ3JpZFsgMSBdIDogdG9wICsgby5ncmlkWyAxIF0gKSApIDpcblx0XHRcdFx0XHRcdFx0XHR0b3A7XG5cblx0XHRcdFx0bGVmdCA9IHRoaXMub3JpZ2luYWxQYWdlWCArIE1hdGgucm91bmQoICggcGFnZVggLSB0aGlzLm9yaWdpbmFsUGFnZVggKSAvXG5cdFx0XHRcdFx0by5ncmlkWyAwIF0gKSAqIG8uZ3JpZFsgMCBdO1xuXHRcdFx0XHRwYWdlWCA9IHRoaXMuY29udGFpbm1lbnQgP1xuXHRcdFx0XHRcdCggKCBsZWZ0IC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA+PSB0aGlzLmNvbnRhaW5tZW50WyAwIF0gJiZcblx0XHRcdFx0XHRcdGxlZnQgLSB0aGlzLm9mZnNldC5jbGljay5sZWZ0IDw9IHRoaXMuY29udGFpbm1lbnRbIDIgXSApID9cblx0XHRcdFx0XHRcdFx0bGVmdCA6XG5cdFx0XHRcdFx0XHRcdCggKCBsZWZ0IC0gdGhpcy5vZmZzZXQuY2xpY2subGVmdCA+PSB0aGlzLmNvbnRhaW5tZW50WyAwIF0gKSA/XG5cdFx0XHRcdFx0XHRcdFx0bGVmdCAtIG8uZ3JpZFsgMCBdIDogbGVmdCArIG8uZ3JpZFsgMCBdICkgKSA6XG5cdFx0XHRcdFx0XHRcdFx0bGVmdDtcblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IChcblxuXHRcdFx0XHQvLyBUaGUgYWJzb2x1dGUgbW91c2UgcG9zaXRpb25cblx0XHRcdFx0cGFnZVkgLVxuXG5cdFx0XHRcdC8vIENsaWNrIG9mZnNldCAocmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQpXG5cdFx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLnRvcCAtXG5cblx0XHRcdFx0Ly8gT25seSBmb3IgcmVsYXRpdmUgcG9zaXRpb25lZCBub2RlczogUmVsYXRpdmUgb2Zmc2V0IGZyb20gZWxlbWVudCB0byBvZmZzZXQgcGFyZW50XG5cdFx0XHRcdHRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCAtXG5cblx0XHRcdFx0Ly8gVGhlIG9mZnNldFBhcmVudCdzIG9mZnNldCB3aXRob3V0IGJvcmRlcnMgKG9mZnNldCArIGJvcmRlcilcblx0XHRcdFx0dGhpcy5vZmZzZXQucGFyZW50LnRvcCArXG5cdFx0XHRcdCggKCB0aGlzLmNzc1Bvc2l0aW9uID09PSBcImZpeGVkXCIgP1xuXHRcdFx0XHRcdC10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSA6XG5cdFx0XHRcdFx0KCBzY3JvbGxJc1Jvb3ROb2RlID8gMCA6IHNjcm9sbC5zY3JvbGxUb3AoKSApICkgKVxuXHRcdFx0KSxcblx0XHRcdGxlZnQ6IChcblxuXHRcdFx0XHQvLyBUaGUgYWJzb2x1dGUgbW91c2UgcG9zaXRpb25cblx0XHRcdFx0cGFnZVggLVxuXG5cdFx0XHRcdC8vIENsaWNrIG9mZnNldCAocmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQpXG5cdFx0XHRcdHRoaXMub2Zmc2V0LmNsaWNrLmxlZnQgLVxuXG5cdFx0XHRcdC8vIE9ubHkgZm9yIHJlbGF0aXZlIHBvc2l0aW9uZWQgbm9kZXM6IFJlbGF0aXZlIG9mZnNldCBmcm9tIGVsZW1lbnQgdG8gb2Zmc2V0IHBhcmVudFxuXHRcdFx0XHR0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0IC1cblxuXHRcdFx0XHQvLyBUaGUgb2Zmc2V0UGFyZW50J3Mgb2Zmc2V0IHdpdGhvdXQgYm9yZGVycyAob2Zmc2V0ICsgYm9yZGVyKVxuXHRcdFx0XHR0aGlzLm9mZnNldC5wYXJlbnQubGVmdCArXG5cdFx0XHRcdCggKCB0aGlzLmNzc1Bvc2l0aW9uID09PSBcImZpeGVkXCIgP1xuXHRcdFx0XHRcdC10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkgOlxuXHRcdFx0XHRcdHNjcm9sbElzUm9vdE5vZGUgPyAwIDogc2Nyb2xsLnNjcm9sbExlZnQoKSApIClcblx0XHRcdClcblx0XHR9O1xuXG5cdH0sXG5cblx0X3JlYXJyYW5nZTogZnVuY3Rpb24oIGV2ZW50LCBpLCBhLCBoYXJkUmVmcmVzaCApIHtcblxuXHRcdGEgPyBhWyAwIF0uYXBwZW5kQ2hpbGQoIHRoaXMucGxhY2Vob2xkZXJbIDAgXSApIDpcblx0XHRcdGkuaXRlbVsgMCBdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCB0aGlzLnBsYWNlaG9sZGVyWyAwIF0sXG5cdFx0XHRcdCggdGhpcy5kaXJlY3Rpb24gPT09IFwiZG93blwiID8gaS5pdGVtWyAwIF0gOiBpLml0ZW1bIDAgXS5uZXh0U2libGluZyApICk7XG5cblx0XHQvL1ZhcmlvdXMgdGhpbmdzIGRvbmUgaGVyZSB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZTpcblx0XHQvLyAxLiB3ZSBjcmVhdGUgYSBzZXRUaW1lb3V0LCB0aGF0IGNhbGxzIHJlZnJlc2hQb3NpdGlvbnNcblx0XHQvLyAyLiBvbiB0aGUgaW5zdGFuY2UsIHdlIGhhdmUgYSBjb3VudGVyIHZhcmlhYmxlLCB0aGF0IGdldCdzIGhpZ2hlciBhZnRlciBldmVyeSBhcHBlbmRcblx0XHQvLyAzLiBvbiB0aGUgbG9jYWwgc2NvcGUsIHdlIGNvcHkgdGhlIGNvdW50ZXIgdmFyaWFibGUsIGFuZCBjaGVjayBpbiB0aGUgdGltZW91dCxcblx0XHQvLyBpZiBpdCdzIHN0aWxsIHRoZSBzYW1lXG5cdFx0Ly8gNC4gdGhpcyBsZXRzIG9ubHkgdGhlIGxhc3QgYWRkaXRpb24gdG8gdGhlIHRpbWVvdXQgc3RhY2sgdGhyb3VnaFxuXHRcdHRoaXMuY291bnRlciA9IHRoaXMuY291bnRlciA/ICsrdGhpcy5jb3VudGVyIDogMTtcblx0XHR2YXIgY291bnRlciA9IHRoaXMuY291bnRlcjtcblxuXHRcdHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY291bnRlciA9PT0gdGhpcy5jb3VudGVyICkge1xuXG5cdFx0XHRcdC8vUHJlY29tcHV0ZSBhZnRlciBlYWNoIERPTSBpbnNlcnRpb24sIE5PVCBvbiBtb3VzZW1vdmVcblx0XHRcdFx0dGhpcy5yZWZyZXNoUG9zaXRpb25zKCAhaGFyZFJlZnJlc2ggKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0fSxcblxuXHRfY2xlYXI6IGZ1bmN0aW9uKCBldmVudCwgbm9Qcm9wYWdhdGlvbiApIHtcblxuXHRcdHRoaXMucmV2ZXJ0aW5nID0gZmFsc2U7XG5cblx0XHQvLyBXZSBkZWxheSBhbGwgZXZlbnRzIHRoYXQgaGF2ZSB0byBiZSB0cmlnZ2VyZWQgdG8gYWZ0ZXIgdGhlIHBvaW50IHdoZXJlIHRoZSBwbGFjZWhvbGRlclxuXHRcdC8vIGhhcyBiZWVuIHJlbW92ZWQgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBub3JtYWxpemVkIGFnYWluXG5cdFx0dmFyIGksXG5cdFx0XHRkZWxheWVkVHJpZ2dlcnMgPSBbXTtcblxuXHRcdC8vIFdlIGZpcnN0IGhhdmUgdG8gdXBkYXRlIHRoZSBkb20gcG9zaXRpb24gb2YgdGhlIGFjdHVhbCBjdXJyZW50SXRlbVxuXHRcdC8vIE5vdGU6IGRvbid0IGRvIGl0IGlmIHRoZSBjdXJyZW50IGl0ZW0gaXMgYWxyZWFkeSByZW1vdmVkIChieSBhIHVzZXIpLCBvciBpdCBnZXRzXG5cdFx0Ly8gcmVhcHBlbmRlZCAoc2VlICM0MDg4KVxuXHRcdGlmICggIXRoaXMuX25vRmluYWxTb3J0ICYmIHRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5wbGFjZWhvbGRlci5iZWZvcmUoIHRoaXMuY3VycmVudEl0ZW0gKTtcblx0XHR9XG5cdFx0dGhpcy5fbm9GaW5hbFNvcnQgPSBudWxsO1xuXG5cdFx0aWYgKCB0aGlzLmhlbHBlclsgMCBdID09PSB0aGlzLmN1cnJlbnRJdGVtWyAwIF0gKSB7XG5cdFx0XHRmb3IgKCBpIGluIHRoaXMuX3N0b3JlZENTUyApIHtcblx0XHRcdFx0aWYgKCB0aGlzLl9zdG9yZWRDU1NbIGkgXSA9PT0gXCJhdXRvXCIgfHwgdGhpcy5fc3RvcmVkQ1NTWyBpIF0gPT09IFwic3RhdGljXCIgKSB7XG5cdFx0XHRcdFx0dGhpcy5fc3RvcmVkQ1NTWyBpIF0gPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmN1cnJlbnRJdGVtLmNzcyggdGhpcy5fc3RvcmVkQ1NTICk7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5jdXJyZW50SXRlbSwgXCJ1aS1zb3J0YWJsZS1oZWxwZXJcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMuZnJvbU91dHNpZGUgJiYgIW5vUHJvcGFnYXRpb24gKSB7XG5cdFx0XHRkZWxheWVkVHJpZ2dlcnMucHVzaCggZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHR0aGlzLl90cmlnZ2VyKCBcInJlY2VpdmVcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCggdGhpcy5mcm9tT3V0c2lkZSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHRcdGlmICggKCB0aGlzLmZyb21PdXRzaWRlIHx8XG5cdFx0XHRcdHRoaXMuZG9tUG9zaXRpb24ucHJldiAhPT1cblx0XHRcdFx0dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCBcIi51aS1zb3J0YWJsZS1oZWxwZXJcIiApWyAwIF0gfHxcblx0XHRcdFx0dGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQgIT09IHRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbIDAgXSApICYmICFub1Byb3BhZ2F0aW9uICkge1xuXG5cdFx0XHQvLyBUcmlnZ2VyIHVwZGF0ZSBjYWxsYmFjayBpZiB0aGUgRE9NIHBvc2l0aW9uIGhhcyBjaGFuZ2VkXG5cdFx0XHRkZWxheWVkVHJpZ2dlcnMucHVzaCggZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHR0aGlzLl90cmlnZ2VyKCBcInVwZGF0ZVwiLCBldmVudCwgdGhpcy5fdWlIYXNoKCkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgaXRlbXMgQ29udGFpbmVyIGhhcyBDaGFuZ2VkIGFuZCB0cmlnZ2VyIGFwcHJvcHJpYXRlXG5cdFx0Ly8gZXZlbnRzLlxuXHRcdGlmICggdGhpcyAhPT0gdGhpcy5jdXJyZW50Q29udGFpbmVyICkge1xuXHRcdFx0aWYgKCAhbm9Qcm9wYWdhdGlvbiApIHtcblx0XHRcdFx0ZGVsYXllZFRyaWdnZXJzLnB1c2goIGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0XHR0aGlzLl90cmlnZ2VyKCBcInJlbW92ZVwiLCBldmVudCwgdGhpcy5fdWlIYXNoKCkgKTtcblx0XHRcdFx0fSApO1xuXHRcdFx0XHRkZWxheWVkVHJpZ2dlcnMucHVzaCggKCBmdW5jdGlvbiggYyApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRcdFx0Yy5fdHJpZ2dlciggXCJyZWNlaXZlXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goIHRoaXMgKSApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gKS5jYWxsKCB0aGlzLCB0aGlzLmN1cnJlbnRDb250YWluZXIgKSApO1xuXHRcdFx0XHRkZWxheWVkVHJpZ2dlcnMucHVzaCggKCBmdW5jdGlvbiggYyApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRcdFx0Yy5fdHJpZ2dlciggXCJ1cGRhdGVcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCggdGhpcyApICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSApLmNhbGwoIHRoaXMsIHRoaXMuY3VycmVudENvbnRhaW5lciApICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9Qb3N0IGV2ZW50cyB0byBjb250YWluZXJzXG5cdFx0ZnVuY3Rpb24gZGVsYXlFdmVudCggdHlwZSwgaW5zdGFuY2UsIGNvbnRhaW5lciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGNvbnRhaW5lci5fdHJpZ2dlciggdHlwZSwgZXZlbnQsIGluc3RhbmNlLl91aUhhc2goIGluc3RhbmNlICkgKTtcblx0XHRcdH07XG5cdFx0fVxuXHRcdGZvciAoIGkgPSB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG5cdFx0XHRpZiAoICFub1Byb3BhZ2F0aW9uICkge1xuXHRcdFx0XHRkZWxheWVkVHJpZ2dlcnMucHVzaCggZGVsYXlFdmVudCggXCJkZWFjdGl2YXRlXCIsIHRoaXMsIHRoaXMuY29udGFpbmVyc1sgaSBdICkgKTtcblx0XHRcdH1cblx0XHRcdGlmICggdGhpcy5jb250YWluZXJzWyBpIF0uY29udGFpbmVyQ2FjaGUub3ZlciApIHtcblx0XHRcdFx0ZGVsYXllZFRyaWdnZXJzLnB1c2goIGRlbGF5RXZlbnQoIFwib3V0XCIsIHRoaXMsIHRoaXMuY29udGFpbmVyc1sgaSBdICkgKTtcblx0XHRcdFx0dGhpcy5jb250YWluZXJzWyBpIF0uY29udGFpbmVyQ2FjaGUub3ZlciA9IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9EbyB3aGF0IHdhcyBvcmlnaW5hbGx5IGluIHBsdWdpbnNcblx0XHRpZiAoIHRoaXMuc3RvcmVkQ3Vyc29yICkge1xuXHRcdFx0dGhpcy5kb2N1bWVudC5maW5kKCBcImJvZHlcIiApLmNzcyggXCJjdXJzb3JcIiwgdGhpcy5zdG9yZWRDdXJzb3IgKTtcblx0XHRcdHRoaXMuc3RvcmVkU3R5bGVzaGVldC5yZW1vdmUoKTtcblx0XHR9XG5cdFx0aWYgKCB0aGlzLl9zdG9yZWRPcGFjaXR5ICkge1xuXHRcdFx0dGhpcy5oZWxwZXIuY3NzKCBcIm9wYWNpdHlcIiwgdGhpcy5fc3RvcmVkT3BhY2l0eSApO1xuXHRcdH1cblx0XHRpZiAoIHRoaXMuX3N0b3JlZFpJbmRleCApIHtcblx0XHRcdHRoaXMuaGVscGVyLmNzcyggXCJ6SW5kZXhcIiwgdGhpcy5fc3RvcmVkWkluZGV4ID09PSBcImF1dG9cIiA/IFwiXCIgOiB0aGlzLl9zdG9yZWRaSW5kZXggKTtcblx0XHR9XG5cblx0XHR0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG5cblx0XHRpZiAoICFub1Byb3BhZ2F0aW9uICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJiZWZvcmVTdG9wXCIsIGV2ZW50LCB0aGlzLl91aUhhc2goKSApO1xuXHRcdH1cblxuXHRcdC8vJCh0aGlzLnBsYWNlaG9sZGVyWzBdKS5yZW1vdmUoKTsgd291bGQgaGF2ZSBiZWVuIHRoZSBqUXVlcnkgd2F5IC0gdW5mb3J0dW5hdGVseSxcblx0XHQvLyBpdCB1bmJpbmRzIEFMTCBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgbm9kZSFcblx0XHR0aGlzLnBsYWNlaG9sZGVyWyAwIF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGhpcy5wbGFjZWhvbGRlclsgMCBdICk7XG5cblx0XHRpZiAoICF0aGlzLmNhbmNlbEhlbHBlclJlbW92YWwgKSB7XG5cdFx0XHRpZiAoIHRoaXMuaGVscGVyWyAwIF0gIT09IHRoaXMuY3VycmVudEl0ZW1bIDAgXSApIHtcblx0XHRcdFx0dGhpcy5oZWxwZXIucmVtb3ZlKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmhlbHBlciA9IG51bGw7XG5cdFx0fVxuXG5cdFx0aWYgKCAhbm9Qcm9wYWdhdGlvbiApIHtcblx0XHRcdGZvciAoIGkgPSAwOyBpIDwgZGVsYXllZFRyaWdnZXJzLmxlbmd0aDsgaSsrICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXIgYWxsIGRlbGF5ZWQgZXZlbnRzXG5cdFx0XHRcdGRlbGF5ZWRUcmlnZ2Vyc1sgaSBdLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl90cmlnZ2VyKCBcInN0b3BcIiwgZXZlbnQsIHRoaXMuX3VpSGFzaCgpICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5mcm9tT3V0c2lkZSA9IGZhbHNlO1xuXHRcdHJldHVybiAhdGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsO1xuXG5cdH0sXG5cblx0X3RyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggJC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLmNhbmNlbCgpO1xuXHRcdH1cblx0fSxcblxuXHRfdWlIYXNoOiBmdW5jdGlvbiggX2luc3QgKSB7XG5cdFx0dmFyIGluc3QgPSBfaW5zdCB8fCB0aGlzO1xuXHRcdHJldHVybiB7XG5cdFx0XHRoZWxwZXI6IGluc3QuaGVscGVyLFxuXHRcdFx0cGxhY2Vob2xkZXI6IGluc3QucGxhY2Vob2xkZXIgfHwgJCggW10gKSxcblx0XHRcdHBvc2l0aW9uOiBpbnN0LnBvc2l0aW9uLFxuXHRcdFx0b3JpZ2luYWxQb3NpdGlvbjogaW5zdC5vcmlnaW5hbFBvc2l0aW9uLFxuXHRcdFx0b2Zmc2V0OiBpbnN0LnBvc2l0aW9uQWJzLFxuXHRcdFx0aXRlbTogaW5zdC5jdXJyZW50SXRlbSxcblx0XHRcdHNlbmRlcjogX2luc3QgPyBfaW5zdC5lbGVtZW50IDogbnVsbFxuXHRcdH07XG5cdH1cblxufSApO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFNwaW5uZXIgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFNwaW5uZXJcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBEaXNwbGF5cyBidXR0b25zIHRvIGVhc2lseSBpbnB1dCBudW1iZXJzIHZpYSB0aGUga2V5Ym9hcmQgb3IgbW91c2UuXG4vLz4+ZG9jczogaHR0cDovL2FwaS5qcXVlcnl1aS5jb20vc3Bpbm5lci9cbi8vPj5kZW1vczogaHR0cDovL2pxdWVyeXVpLmNvbS9zcGlubmVyL1xuLy8+PmNzcy5zdHJ1Y3R1cmU6IC4uLy4uL3RoZW1lcy9iYXNlL2NvcmUuY3NzXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2Uvc3Bpbm5lci5jc3Ncbi8vPj5jc3MudGhlbWU6IC4uLy4uL3RoZW1lcy9iYXNlL3RoZW1lLmNzc1xuXG5cblxuZnVuY3Rpb24gc3Bpbm5lck1vZGlmZXIoIGZuICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHByZXZpb3VzID0gdGhpcy5lbGVtZW50LnZhbCgpO1xuXHRcdGZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR0aGlzLl9yZWZyZXNoKCk7XG5cdFx0aWYgKCBwcmV2aW91cyAhPT0gdGhpcy5lbGVtZW50LnZhbCgpICkge1xuXHRcdFx0dGhpcy5fdHJpZ2dlciggXCJjaGFuZ2VcIiApO1xuXHRcdH1cblx0fTtcbn1cblxuJC53aWRnZXQoIFwidWkuc3Bpbm5lclwiLCB7XG5cdHZlcnNpb246IFwiMS4xMi4xXCIsXG5cdGRlZmF1bHRFbGVtZW50OiBcIjxpbnB1dD5cIixcblx0d2lkZ2V0RXZlbnRQcmVmaXg6IFwic3BpblwiLFxuXHRvcHRpb25zOiB7XG5cdFx0Y2xhc3Nlczoge1xuXHRcdFx0XCJ1aS1zcGlubmVyXCI6IFwidWktY29ybmVyLWFsbFwiLFxuXHRcdFx0XCJ1aS1zcGlubmVyLWRvd25cIjogXCJ1aS1jb3JuZXItYnJcIixcblx0XHRcdFwidWktc3Bpbm5lci11cFwiOiBcInVpLWNvcm5lci10clwiXG5cdFx0fSxcblx0XHRjdWx0dXJlOiBudWxsLFxuXHRcdGljb25zOiB7XG5cdFx0XHRkb3duOiBcInVpLWljb24tdHJpYW5nbGUtMS1zXCIsXG5cdFx0XHR1cDogXCJ1aS1pY29uLXRyaWFuZ2xlLTEtblwiXG5cdFx0fSxcblx0XHRpbmNyZW1lbnRhbDogdHJ1ZSxcblx0XHRtYXg6IG51bGwsXG5cdFx0bWluOiBudWxsLFxuXHRcdG51bWJlckZvcm1hdDogbnVsbCxcblx0XHRwYWdlOiAxMCxcblx0XHRzdGVwOiAxLFxuXG5cdFx0Y2hhbmdlOiBudWxsLFxuXHRcdHNwaW46IG51bGwsXG5cdFx0c3RhcnQ6IG51bGwsXG5cdFx0c3RvcDogbnVsbFxuXHR9LFxuXG5cdF9jcmVhdGU6IGZ1bmN0aW9uKCkge1xuXG5cdFx0Ly8gaGFuZGxlIHN0cmluZyB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHBhcnNlZFxuXHRcdHRoaXMuX3NldE9wdGlvbiggXCJtYXhcIiwgdGhpcy5vcHRpb25zLm1heCApO1xuXHRcdHRoaXMuX3NldE9wdGlvbiggXCJtaW5cIiwgdGhpcy5vcHRpb25zLm1pbiApO1xuXHRcdHRoaXMuX3NldE9wdGlvbiggXCJzdGVwXCIsIHRoaXMub3B0aW9ucy5zdGVwICk7XG5cblx0XHQvLyBPbmx5IGZvcm1hdCBpZiB0aGVyZSBpcyBhIHZhbHVlLCBwcmV2ZW50cyB0aGUgZmllbGQgZnJvbSBiZWluZyBtYXJrZWRcblx0XHQvLyBhcyBpbnZhbGlkIGluIEZpcmVmb3gsIHNlZSAjOTU3My5cblx0XHRpZiAoIHRoaXMudmFsdWUoKSAhPT0gXCJcIiApIHtcblxuXHRcdFx0Ly8gRm9ybWF0IHRoZSB2YWx1ZSwgYnV0IGRvbid0IGNvbnN0cmFpbi5cblx0XHRcdHRoaXMuX3ZhbHVlKCB0aGlzLmVsZW1lbnQudmFsKCksIHRydWUgKTtcblx0XHR9XG5cblx0XHR0aGlzLl9kcmF3KCk7XG5cdFx0dGhpcy5fb24oIHRoaXMuX2V2ZW50cyApO1xuXHRcdHRoaXMuX3JlZnJlc2goKTtcblxuXHRcdC8vIFR1cm5pbmcgb2ZmIGF1dG9jb21wbGV0ZSBwcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHJlbWVtYmVyaW5nIHRoZVxuXHRcdC8vIHZhbHVlIHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIGhpc3RvcnksIHNvIHdlIHJlLWVuYWJsZSBhdXRvY29tcGxldGVcblx0XHQvLyBpZiB0aGUgcGFnZSBpcyB1bmxvYWRlZCBiZWZvcmUgdGhlIHdpZGdldCBpcyBkZXN0cm95ZWQuICM3NzkwXG5cdFx0dGhpcy5fb24oIHRoaXMud2luZG93LCB7XG5cdFx0XHRiZWZvcmV1bmxvYWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQucmVtb3ZlQXR0ciggXCJhdXRvY29tcGxldGVcIiApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG9wdGlvbnMgPSB0aGlzLl9zdXBlcigpO1xuXHRcdHZhciBlbGVtZW50ID0gdGhpcy5lbGVtZW50O1xuXG5cdFx0JC5lYWNoKCBbIFwibWluXCIsIFwibWF4XCIsIFwic3RlcFwiIF0sIGZ1bmN0aW9uKCBpLCBvcHRpb24gKSB7XG5cdFx0XHR2YXIgdmFsdWUgPSBlbGVtZW50LmF0dHIoIG9wdGlvbiApO1xuXHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmxlbmd0aCApIHtcblx0XHRcdFx0b3B0aW9uc1sgb3B0aW9uIF0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gb3B0aW9ucztcblx0fSxcblxuXHRfZXZlbnRzOiB7XG5cdFx0a2V5ZG93bjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0aWYgKCB0aGlzLl9zdGFydCggZXZlbnQgKSAmJiB0aGlzLl9rZXlkb3duKCBldmVudCApICkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0a2V5dXA6IFwiX3N0b3BcIixcblx0XHRmb2N1czogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnByZXZpb3VzID0gdGhpcy5lbGVtZW50LnZhbCgpO1xuXHRcdH0sXG5cdFx0Ymx1cjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0aWYgKCB0aGlzLmNhbmNlbEJsdXIgKSB7XG5cdFx0XHRcdGRlbGV0ZSB0aGlzLmNhbmNlbEJsdXI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5fc3RvcCgpO1xuXHRcdFx0dGhpcy5fcmVmcmVzaCgpO1xuXHRcdFx0aWYgKCB0aGlzLnByZXZpb3VzICE9PSB0aGlzLmVsZW1lbnQudmFsKCkgKSB7XG5cdFx0XHRcdHRoaXMuX3RyaWdnZXIoIFwiY2hhbmdlXCIsIGV2ZW50ICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRtb3VzZXdoZWVsOiBmdW5jdGlvbiggZXZlbnQsIGRlbHRhICkge1xuXHRcdFx0aWYgKCAhZGVsdGEgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICggIXRoaXMuc3Bpbm5pbmcgJiYgIXRoaXMuX3N0YXJ0KCBldmVudCApICkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuX3NwaW4oICggZGVsdGEgPiAwID8gMSA6IC0xICkgKiB0aGlzLm9wdGlvbnMuc3RlcCwgZXZlbnQgKTtcblx0XHRcdGNsZWFyVGltZW91dCggdGhpcy5tb3VzZXdoZWVsVGltZXIgKTtcblx0XHRcdHRoaXMubW91c2V3aGVlbFRpbWVyID0gdGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMuc3Bpbm5pbmcgKSB7XG5cdFx0XHRcdFx0dGhpcy5fc3RvcCggZXZlbnQgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwICk7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH0sXG5cdFx0XCJtb3VzZWRvd24gLnVpLXNwaW5uZXItYnV0dG9uXCI6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciBwcmV2aW91cztcblxuXHRcdFx0Ly8gV2UgbmV2ZXIgd2FudCB0aGUgYnV0dG9ucyB0byBoYXZlIGZvY3VzOyB3aGVuZXZlciB0aGUgdXNlciBpc1xuXHRcdFx0Ly8gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3Bpbm5lciwgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgaW5wdXQuXG5cdFx0XHQvLyBJZiB0aGUgaW5wdXQgaXMgZm9jdXNlZCB0aGVuIHRoaXMucHJldmlvdXMgaXMgcHJvcGVybHkgc2V0IGZyb21cblx0XHRcdC8vIHdoZW4gdGhlIGlucHV0IGZpcnN0IHJlY2VpdmVkIGZvY3VzLiBJZiB0aGUgaW5wdXQgaXMgbm90IGZvY3VzZWRcblx0XHRcdC8vIHRoZW4gd2UgbmVlZCB0byBzZXQgdGhpcy5wcmV2aW91cyBiYXNlZCBvbiB0aGUgdmFsdWUgYmVmb3JlIHNwaW5uaW5nLlxuXHRcdFx0cHJldmlvdXMgPSB0aGlzLmVsZW1lbnRbIDAgXSA9PT0gJC51aS5zYWZlQWN0aXZlRWxlbWVudCggdGhpcy5kb2N1bWVudFsgMCBdICkgP1xuXHRcdFx0XHR0aGlzLnByZXZpb3VzIDogdGhpcy5lbGVtZW50LnZhbCgpO1xuXHRcdFx0ZnVuY3Rpb24gY2hlY2tGb2N1cygpIHtcblx0XHRcdFx0dmFyIGlzQWN0aXZlID0gdGhpcy5lbGVtZW50WyAwIF0gPT09ICQudWkuc2FmZUFjdGl2ZUVsZW1lbnQoIHRoaXMuZG9jdW1lbnRbIDAgXSApO1xuXHRcdFx0XHRpZiAoICFpc0FjdGl2ZSApIHtcblx0XHRcdFx0XHR0aGlzLmVsZW1lbnQudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91cyA9IHByZXZpb3VzO1xuXG5cdFx0XHRcdFx0Ly8gc3VwcG9ydDogSUVcblx0XHRcdFx0XHQvLyBJRSBzZXRzIGZvY3VzIGFzeW5jaHJvbm91c2x5LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGlmIGZvY3VzXG5cdFx0XHRcdFx0Ly8gbW92ZWQgb2ZmIG9mIHRoZSBpbnB1dCBiZWNhdXNlIHRoZSB1c2VyIGNsaWNrZWQgb24gdGhlIGJ1dHRvbi5cblx0XHRcdFx0XHR0aGlzLl9kZWxheSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnByZXZpb3VzID0gcHJldmlvdXM7XG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEVuc3VyZSBmb2N1cyBpcyBvbiAob3Igc3RheXMgb24pIHRoZSB0ZXh0IGZpZWxkXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0Y2hlY2tGb2N1cy5jYWxsKCB0aGlzICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFXG5cdFx0XHQvLyBJRSBkb2Vzbid0IHByZXZlbnQgbW92aW5nIGZvY3VzIGV2ZW4gd2l0aCBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cdFx0XHQvLyBzbyB3ZSBzZXQgYSBmbGFnIHRvIGtub3cgd2hlbiB3ZSBzaG91bGQgaWdub3JlIHRoZSBibHVyIGV2ZW50XG5cdFx0XHQvLyBhbmQgY2hlY2sgKGFnYWluKSBpZiBmb2N1cyBtb3ZlZCBvZmYgb2YgdGhlIGlucHV0LlxuXHRcdFx0dGhpcy5jYW5jZWxCbHVyID0gdHJ1ZTtcblx0XHRcdHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVsZXRlIHRoaXMuY2FuY2VsQmx1cjtcblx0XHRcdFx0Y2hlY2tGb2N1cy5jYWxsKCB0aGlzICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGlmICggdGhpcy5fc3RhcnQoIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuX3JlcGVhdCggbnVsbCwgJCggZXZlbnQuY3VycmVudFRhcmdldCApXG5cdFx0XHRcdC5oYXNDbGFzcyggXCJ1aS1zcGlubmVyLXVwXCIgKSA/IDEgOiAtMSwgZXZlbnQgKTtcblx0XHR9LFxuXHRcdFwibW91c2V1cCAudWktc3Bpbm5lci1idXR0b25cIjogXCJfc3RvcFwiLFxuXHRcdFwibW91c2VlbnRlciAudWktc3Bpbm5lci1idXR0b25cIjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHQvLyBidXR0b24gd2lsbCBhZGQgdWktc3RhdGUtYWN0aXZlIGlmIG1vdXNlIHdhcyBkb3duIHdoaWxlIG1vdXNlbGVhdmUgYW5kIGtlcHQgZG93blxuXHRcdFx0aWYgKCAhJCggZXZlbnQuY3VycmVudFRhcmdldCApLmhhc0NsYXNzKCBcInVpLXN0YXRlLWFjdGl2ZVwiICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB0aGlzLl9zdGFydCggZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX3JlcGVhdCggbnVsbCwgJCggZXZlbnQuY3VycmVudFRhcmdldCApXG5cdFx0XHRcdC5oYXNDbGFzcyggXCJ1aS1zcGlubmVyLXVwXCIgKSA/IDEgOiAtMSwgZXZlbnQgKTtcblx0XHR9LFxuXG5cdFx0Ly8gVE9ETzogZG8gd2UgcmVhbGx5IHdhbnQgdG8gY29uc2lkZXIgdGhpcyBhIHN0b3A/XG5cdFx0Ly8gc2hvdWxkbid0IHdlIGp1c3Qgc3RvcCB0aGUgcmVwZWF0ZXIgYW5kIHdhaXQgdW50aWwgbW91c2V1cCBiZWZvcmVcblx0XHQvLyB3ZSB0cmlnZ2VyIHRoZSBzdG9wIGV2ZW50P1xuXHRcdFwibW91c2VsZWF2ZSAudWktc3Bpbm5lci1idXR0b25cIjogXCJfc3RvcFwiXG5cdH0sXG5cblx0Ly8gU3VwcG9ydCBtb2JpbGUgZW5oYW5jZWQgb3B0aW9uIGFuZCBtYWtlIGJhY2tjb21wYXQgbW9yZSBzYW5lXG5cdF9lbmhhbmNlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLnVpU3Bpbm5lciA9IHRoaXMuZWxlbWVudFxuXHRcdFx0LmF0dHIoIFwiYXV0b2NvbXBsZXRlXCIsIFwib2ZmXCIgKVxuXHRcdFx0LndyYXAoIFwiPHNwYW4+XCIgKVxuXHRcdFx0LnBhcmVudCgpXG5cblx0XHRcdFx0Ly8gQWRkIGJ1dHRvbnNcblx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHRcIjxhPjwvYT48YT48L2E+XCJcblx0XHRcdFx0KTtcblx0fSxcblxuXHRfZHJhdzogZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fZW5oYW5jZSgpO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMudWlTcGlubmVyLCBcInVpLXNwaW5uZXJcIiwgXCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnRcIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCBcInVpLXNwaW5uZXItaW5wdXRcIiApO1xuXG5cdFx0dGhpcy5lbGVtZW50LmF0dHIoIFwicm9sZVwiLCBcInNwaW5idXR0b25cIiApO1xuXG5cdFx0Ly8gQnV0dG9uIGJpbmRpbmdzXG5cdFx0dGhpcy5idXR0b25zID0gdGhpcy51aVNwaW5uZXIuY2hpbGRyZW4oIFwiYVwiIClcblx0XHRcdC5hdHRyKCBcInRhYkluZGV4XCIsIC0xIClcblx0XHRcdC5hdHRyKCBcImFyaWEtaGlkZGVuXCIsIHRydWUgKVxuXHRcdFx0LmJ1dHRvbigge1xuXHRcdFx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcdFx0XCJ1aS1idXR0b25cIjogXCJcIlxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cblx0XHQvLyBUT0RPOiBSaWdodCBub3cgYnV0dG9uIGRvZXMgbm90IHN1cHBvcnQgY2xhc3NlcyB0aGlzIGlzIGFscmVhZHkgdXBkYXRlZCBpbiBidXR0b24gUFJcblx0XHR0aGlzLl9yZW1vdmVDbGFzcyggdGhpcy5idXR0b25zLCBcInVpLWNvcm5lci1hbGxcIiApO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuYnV0dG9ucy5maXJzdCgpLCBcInVpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItdXBcIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmJ1dHRvbnMubGFzdCgpLCBcInVpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItZG93blwiICk7XG5cdFx0dGhpcy5idXR0b25zLmZpcnN0KCkuYnV0dG9uKCB7XG5cdFx0XHRcImljb25cIjogdGhpcy5vcHRpb25zLmljb25zLnVwLFxuXHRcdFx0XCJzaG93TGFiZWxcIjogZmFsc2Vcblx0XHR9ICk7XG5cdFx0dGhpcy5idXR0b25zLmxhc3QoKS5idXR0b24oIHtcblx0XHRcdFwiaWNvblwiOiB0aGlzLm9wdGlvbnMuaWNvbnMuZG93bixcblx0XHRcdFwic2hvd0xhYmVsXCI6IGZhbHNlXG5cdFx0fSApO1xuXG5cdFx0Ly8gSUUgNiBkb2Vzbid0IHVuZGVyc3RhbmQgaGVpZ2h0OiA1MCUgZm9yIHRoZSBidXR0b25zXG5cdFx0Ly8gdW5sZXNzIHRoZSB3cmFwcGVyIGhhcyBhbiBleHBsaWNpdCBoZWlnaHRcblx0XHRpZiAoIHRoaXMuYnV0dG9ucy5oZWlnaHQoKSA+IE1hdGguY2VpbCggdGhpcy51aVNwaW5uZXIuaGVpZ2h0KCkgKiAwLjUgKSAmJlxuXHRcdFx0XHR0aGlzLnVpU3Bpbm5lci5oZWlnaHQoKSA+IDAgKSB7XG5cdFx0XHR0aGlzLnVpU3Bpbm5lci5oZWlnaHQoIHRoaXMudWlTcGlubmVyLmhlaWdodCgpICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9rZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG5cdFx0XHRrZXlDb2RlID0gJC51aS5rZXlDb2RlO1xuXG5cdFx0c3dpdGNoICggZXZlbnQua2V5Q29kZSApIHtcblx0XHRjYXNlIGtleUNvZGUuVVA6XG5cdFx0XHR0aGlzLl9yZXBlYXQoIG51bGwsIDEsIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIGtleUNvZGUuRE9XTjpcblx0XHRcdHRoaXMuX3JlcGVhdCggbnVsbCwgLTEsIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlIGtleUNvZGUuUEFHRV9VUDpcblx0XHRcdHRoaXMuX3JlcGVhdCggbnVsbCwgb3B0aW9ucy5wYWdlLCBldmVudCApO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSBrZXlDb2RlLlBBR0VfRE9XTjpcblx0XHRcdHRoaXMuX3JlcGVhdCggbnVsbCwgLW9wdGlvbnMucGFnZSwgZXZlbnQgKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHRfc3RhcnQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoICF0aGlzLnNwaW5uaW5nICYmIHRoaXMuX3RyaWdnZXIoIFwic3RhcnRcIiwgZXZlbnQgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCAhdGhpcy5jb3VudGVyICkge1xuXHRcdFx0dGhpcy5jb3VudGVyID0gMTtcblx0XHR9XG5cdFx0dGhpcy5zcGlubmluZyA9IHRydWU7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0X3JlcGVhdDogZnVuY3Rpb24oIGksIHN0ZXBzLCBldmVudCApIHtcblx0XHRpID0gaSB8fCA1MDA7XG5cblx0XHRjbGVhclRpbWVvdXQoIHRoaXMudGltZXIgKTtcblx0XHR0aGlzLnRpbWVyID0gdGhpcy5fZGVsYXkoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhpcy5fcmVwZWF0KCA0MCwgc3RlcHMsIGV2ZW50ICk7XG5cdFx0fSwgaSApO1xuXG5cdFx0dGhpcy5fc3Bpbiggc3RlcHMgKiB0aGlzLm9wdGlvbnMuc3RlcCwgZXZlbnQgKTtcblx0fSxcblxuXHRfc3BpbjogZnVuY3Rpb24oIHN0ZXAsIGV2ZW50ICkge1xuXHRcdHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKSB8fCAwO1xuXG5cdFx0aWYgKCAhdGhpcy5jb3VudGVyICkge1xuXHRcdFx0dGhpcy5jb3VudGVyID0gMTtcblx0XHR9XG5cblx0XHR2YWx1ZSA9IHRoaXMuX2FkanVzdFZhbHVlKCB2YWx1ZSArIHN0ZXAgKiB0aGlzLl9pbmNyZW1lbnQoIHRoaXMuY291bnRlciApICk7XG5cblx0XHRpZiAoICF0aGlzLnNwaW5uaW5nIHx8IHRoaXMuX3RyaWdnZXIoIFwic3BpblwiLCBldmVudCwgeyB2YWx1ZTogdmFsdWUgfSApICE9PSBmYWxzZSApIHtcblx0XHRcdHRoaXMuX3ZhbHVlKCB2YWx1ZSApO1xuXHRcdFx0dGhpcy5jb3VudGVyKys7XG5cdFx0fVxuXHR9LFxuXG5cdF9pbmNyZW1lbnQ6IGZ1bmN0aW9uKCBpICkge1xuXHRcdHZhciBpbmNyZW1lbnRhbCA9IHRoaXMub3B0aW9ucy5pbmNyZW1lbnRhbDtcblxuXHRcdGlmICggaW5jcmVtZW50YWwgKSB7XG5cdFx0XHRyZXR1cm4gJC5pc0Z1bmN0aW9uKCBpbmNyZW1lbnRhbCApID9cblx0XHRcdFx0aW5jcmVtZW50YWwoIGkgKSA6XG5cdFx0XHRcdE1hdGguZmxvb3IoIGkgKiBpICogaSAvIDUwMDAwIC0gaSAqIGkgLyA1MDAgKyAxNyAqIGkgLyAyMDAgKyAxICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDE7XG5cdH0sXG5cblx0X3ByZWNpc2lvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHByZWNpc2lvbiA9IHRoaXMuX3ByZWNpc2lvbk9mKCB0aGlzLm9wdGlvbnMuc3RlcCApO1xuXHRcdGlmICggdGhpcy5vcHRpb25zLm1pbiAhPT0gbnVsbCApIHtcblx0XHRcdHByZWNpc2lvbiA9IE1hdGgubWF4KCBwcmVjaXNpb24sIHRoaXMuX3ByZWNpc2lvbk9mKCB0aGlzLm9wdGlvbnMubWluICkgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHByZWNpc2lvbjtcblx0fSxcblxuXHRfcHJlY2lzaW9uT2Y6IGZ1bmN0aW9uKCBudW0gKSB7XG5cdFx0dmFyIHN0ciA9IG51bS50b1N0cmluZygpLFxuXHRcdFx0ZGVjaW1hbCA9IHN0ci5pbmRleE9mKCBcIi5cIiApO1xuXHRcdHJldHVybiBkZWNpbWFsID09PSAtMSA/IDAgOiBzdHIubGVuZ3RoIC0gZGVjaW1hbCAtIDE7XG5cdH0sXG5cblx0X2FkanVzdFZhbHVlOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGJhc2UsIGFib3ZlTWluLFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuXHRcdC8vIE1ha2Ugc3VyZSB3ZSdyZSBhdCBhIHZhbGlkIHN0ZXBcblx0XHQvLyAtIGZpbmQgb3V0IHdoZXJlIHdlIGFyZSByZWxhdGl2ZSB0byB0aGUgYmFzZSAobWluIG9yIDApXG5cdFx0YmFzZSA9IG9wdGlvbnMubWluICE9PSBudWxsID8gb3B0aW9ucy5taW4gOiAwO1xuXHRcdGFib3ZlTWluID0gdmFsdWUgLSBiYXNlO1xuXG5cdFx0Ly8gLSByb3VuZCB0byB0aGUgbmVhcmVzdCBzdGVwXG5cdFx0YWJvdmVNaW4gPSBNYXRoLnJvdW5kKCBhYm92ZU1pbiAvIG9wdGlvbnMuc3RlcCApICogb3B0aW9ucy5zdGVwO1xuXG5cdFx0Ly8gLSByb3VuZGluZyBpcyBiYXNlZCBvbiAwLCBzbyBhZGp1c3QgYmFjayB0byBvdXIgYmFzZVxuXHRcdHZhbHVlID0gYmFzZSArIGFib3ZlTWluO1xuXG5cdFx0Ly8gRml4IHByZWNpc2lvbiBmcm9tIGJhZCBKUyBmbG9hdGluZyBwb2ludCBtYXRoXG5cdFx0dmFsdWUgPSBwYXJzZUZsb2F0KCB2YWx1ZS50b0ZpeGVkKCB0aGlzLl9wcmVjaXNpb24oKSApICk7XG5cblx0XHQvLyBDbGFtcCB0aGUgdmFsdWVcblx0XHRpZiAoIG9wdGlvbnMubWF4ICE9PSBudWxsICYmIHZhbHVlID4gb3B0aW9ucy5tYXggKSB7XG5cdFx0XHRyZXR1cm4gb3B0aW9ucy5tYXg7XG5cdFx0fVxuXHRcdGlmICggb3B0aW9ucy5taW4gIT09IG51bGwgJiYgdmFsdWUgPCBvcHRpb25zLm1pbiApIHtcblx0XHRcdHJldHVybiBvcHRpb25zLm1pbjtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0sXG5cblx0X3N0b3A6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRpZiAoICF0aGlzLnNwaW5uaW5nICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNsZWFyVGltZW91dCggdGhpcy50aW1lciApO1xuXHRcdGNsZWFyVGltZW91dCggdGhpcy5tb3VzZXdoZWVsVGltZXIgKTtcblx0XHR0aGlzLmNvdW50ZXIgPSAwO1xuXHRcdHRoaXMuc3Bpbm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl90cmlnZ2VyKCBcInN0b3BcIiwgZXZlbnQgKTtcblx0fSxcblxuXHRfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcblx0XHR2YXIgcHJldlZhbHVlLCBmaXJzdCwgbGFzdDtcblxuXHRcdGlmICgga2V5ID09PSBcImN1bHR1cmVcIiB8fCBrZXkgPT09IFwibnVtYmVyRm9ybWF0XCIgKSB7XG5cdFx0XHRwcmV2VmFsdWUgPSB0aGlzLl9wYXJzZSggdGhpcy5lbGVtZW50LnZhbCgpICk7XG5cdFx0XHR0aGlzLm9wdGlvbnNbIGtleSBdID0gdmFsdWU7XG5cdFx0XHR0aGlzLmVsZW1lbnQudmFsKCB0aGlzLl9mb3JtYXQoIHByZXZWYWx1ZSApICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwibWF4XCIgfHwga2V5ID09PSBcIm1pblwiIHx8IGtleSA9PT0gXCJzdGVwXCIgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdFx0dmFsdWUgPSB0aGlzLl9wYXJzZSggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCBrZXkgPT09IFwiaWNvbnNcIiApIHtcblx0XHRcdGZpcnN0ID0gdGhpcy5idXR0b25zLmZpcnN0KCkuZmluZCggXCIudWktaWNvblwiICk7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggZmlyc3QsIG51bGwsIHRoaXMub3B0aW9ucy5pY29ucy51cCApO1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIGZpcnN0LCBudWxsLCB2YWx1ZS51cCApO1xuXHRcdFx0bGFzdCA9IHRoaXMuYnV0dG9ucy5sYXN0KCkuZmluZCggXCIudWktaWNvblwiICk7XG5cdFx0XHR0aGlzLl9yZW1vdmVDbGFzcyggbGFzdCwgbnVsbCwgdGhpcy5vcHRpb25zLmljb25zLmRvd24gKTtcblx0XHRcdHRoaXMuX2FkZENsYXNzKCBsYXN0LCBudWxsLCB2YWx1ZS5kb3duICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblx0fSxcblxuXHRfc2V0T3B0aW9uRGlzYWJsZWQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR0aGlzLl9zdXBlciggdmFsdWUgKTtcblxuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCB0aGlzLnVpU3Bpbm5lciwgbnVsbCwgXCJ1aS1zdGF0ZS1kaXNhYmxlZFwiLCAhIXZhbHVlICk7XG5cdFx0dGhpcy5lbGVtZW50LnByb3AoIFwiZGlzYWJsZWRcIiwgISF2YWx1ZSApO1xuXHRcdHRoaXMuYnV0dG9ucy5idXR0b24oIHZhbHVlID8gXCJkaXNhYmxlXCIgOiBcImVuYWJsZVwiICk7XG5cdH0sXG5cblx0X3NldE9wdGlvbnM6IHNwaW5uZXJNb2RpZmVyKCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHR0aGlzLl9zdXBlciggb3B0aW9ucyApO1xuXHR9ICksXG5cblx0X3BhcnNlOiBmdW5jdGlvbiggdmFsICkge1xuXHRcdGlmICggdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiAmJiB2YWwgIT09IFwiXCIgKSB7XG5cdFx0XHR2YWwgPSB3aW5kb3cuR2xvYmFsaXplICYmIHRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQgP1xuXHRcdFx0XHRHbG9iYWxpemUucGFyc2VGbG9hdCggdmFsLCAxMCwgdGhpcy5vcHRpb25zLmN1bHR1cmUgKSA6ICt2YWw7XG5cdFx0fVxuXHRcdHJldHVybiB2YWwgPT09IFwiXCIgfHwgaXNOYU4oIHZhbCApID8gbnVsbCA6IHZhbDtcblx0fSxcblxuXHRfZm9ybWF0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0aWYgKCB2YWx1ZSA9PT0gXCJcIiApIHtcblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH1cblx0XHRyZXR1cm4gd2luZG93Lkdsb2JhbGl6ZSAmJiB0aGlzLm9wdGlvbnMubnVtYmVyRm9ybWF0ID9cblx0XHRcdEdsb2JhbGl6ZS5mb3JtYXQoIHZhbHVlLCB0aGlzLm9wdGlvbnMubnVtYmVyRm9ybWF0LCB0aGlzLm9wdGlvbnMuY3VsdHVyZSApIDpcblx0XHRcdHZhbHVlO1xuXHR9LFxuXG5cdF9yZWZyZXNoOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmVsZW1lbnQuYXR0cigge1xuXHRcdFx0XCJhcmlhLXZhbHVlbWluXCI6IHRoaXMub3B0aW9ucy5taW4sXG5cdFx0XHRcImFyaWEtdmFsdWVtYXhcIjogdGhpcy5vcHRpb25zLm1heCxcblxuXHRcdFx0Ly8gVE9ETzogd2hhdCBzaG91bGQgd2UgZG8gd2l0aCB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBwYXJzZWQ/XG5cdFx0XHRcImFyaWEtdmFsdWVub3dcIjogdGhpcy5fcGFyc2UoIHRoaXMuZWxlbWVudC52YWwoKSApXG5cdFx0fSApO1xuXHR9LFxuXG5cdGlzVmFsaWQ6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcblxuXHRcdC8vIE51bGwgaXMgaW52YWxpZFxuXHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdmFsdWUgZ2V0cyBhZGp1c3RlZCwgaXQncyBpbnZhbGlkXG5cdFx0cmV0dXJuIHZhbHVlID09PSB0aGlzLl9hZGp1c3RWYWx1ZSggdmFsdWUgKTtcblx0fSxcblxuXHQvLyBVcGRhdGUgdGhlIHZhbHVlIHdpdGhvdXQgdHJpZ2dlcmluZyBjaGFuZ2Vcblx0X3ZhbHVlOiBmdW5jdGlvbiggdmFsdWUsIGFsbG93QW55ICkge1xuXHRcdHZhciBwYXJzZWQ7XG5cdFx0aWYgKCB2YWx1ZSAhPT0gXCJcIiApIHtcblx0XHRcdHBhcnNlZCA9IHRoaXMuX3BhcnNlKCB2YWx1ZSApO1xuXHRcdFx0aWYgKCBwYXJzZWQgIT09IG51bGwgKSB7XG5cdFx0XHRcdGlmICggIWFsbG93QW55ICkge1xuXHRcdFx0XHRcdHBhcnNlZCA9IHRoaXMuX2FkanVzdFZhbHVlKCBwYXJzZWQgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YWx1ZSA9IHRoaXMuX2Zvcm1hdCggcGFyc2VkICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuZWxlbWVudC52YWwoIHZhbHVlICk7XG5cdFx0dGhpcy5fcmVmcmVzaCgpO1xuXHR9LFxuXG5cdF9kZXN0cm95OiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLmVsZW1lbnRcblx0XHRcdC5wcm9wKCBcImRpc2FibGVkXCIsIGZhbHNlIClcblx0XHRcdC5yZW1vdmVBdHRyKCBcImF1dG9jb21wbGV0ZSByb2xlIGFyaWEtdmFsdWVtaW4gYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbm93XCIgKTtcblxuXHRcdHRoaXMudWlTcGlubmVyLnJlcGxhY2VXaXRoKCB0aGlzLmVsZW1lbnQgKTtcblx0fSxcblxuXHRzdGVwVXA6IHNwaW5uZXJNb2RpZmVyKCBmdW5jdGlvbiggc3RlcHMgKSB7XG5cdFx0dGhpcy5fc3RlcFVwKCBzdGVwcyApO1xuXHR9ICksXG5cdF9zdGVwVXA6IGZ1bmN0aW9uKCBzdGVwcyApIHtcblx0XHRpZiAoIHRoaXMuX3N0YXJ0KCkgKSB7XG5cdFx0XHR0aGlzLl9zcGluKCAoIHN0ZXBzIHx8IDEgKSAqIHRoaXMub3B0aW9ucy5zdGVwICk7XG5cdFx0XHR0aGlzLl9zdG9wKCk7XG5cdFx0fVxuXHR9LFxuXG5cdHN0ZXBEb3duOiBzcGlubmVyTW9kaWZlciggZnVuY3Rpb24oIHN0ZXBzICkge1xuXHRcdHRoaXMuX3N0ZXBEb3duKCBzdGVwcyApO1xuXHR9ICksXG5cdF9zdGVwRG93bjogZnVuY3Rpb24oIHN0ZXBzICkge1xuXHRcdGlmICggdGhpcy5fc3RhcnQoKSApIHtcblx0XHRcdHRoaXMuX3NwaW4oICggc3RlcHMgfHwgMSApICogLXRoaXMub3B0aW9ucy5zdGVwICk7XG5cdFx0XHR0aGlzLl9zdG9wKCk7XG5cdFx0fVxuXHR9LFxuXG5cdHBhZ2VVcDogc3Bpbm5lck1vZGlmZXIoIGZ1bmN0aW9uKCBwYWdlcyApIHtcblx0XHR0aGlzLl9zdGVwVXAoICggcGFnZXMgfHwgMSApICogdGhpcy5vcHRpb25zLnBhZ2UgKTtcblx0fSApLFxuXG5cdHBhZ2VEb3duOiBzcGlubmVyTW9kaWZlciggZnVuY3Rpb24oIHBhZ2VzICkge1xuXHRcdHRoaXMuX3N0ZXBEb3duKCAoIHBhZ2VzIHx8IDEgKSAqIHRoaXMub3B0aW9ucy5wYWdlICk7XG5cdH0gKSxcblxuXHR2YWx1ZTogZnVuY3Rpb24oIG5ld1ZhbCApIHtcblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX3BhcnNlKCB0aGlzLmVsZW1lbnQudmFsKCkgKTtcblx0XHR9XG5cdFx0c3Bpbm5lck1vZGlmZXIoIHRoaXMuX3ZhbHVlICkuY2FsbCggdGhpcywgbmV3VmFsICk7XG5cdH0sXG5cblx0d2lkZ2V0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy51aVNwaW5uZXI7XG5cdH1cbn0gKTtcblxuLy8gREVQUkVDQVRFRFxuLy8gVE9ETzogc3dpdGNoIHJldHVybiBiYWNrIHRvIHdpZGdldCBkZWNsYXJhdGlvbiBhdCB0b3Agb2YgZmlsZSB3aGVuIHRoaXMgaXMgcmVtb3ZlZFxuaWYgKCAkLnVpQmFja0NvbXBhdCAhPT0gZmFsc2UgKSB7XG5cblx0Ly8gQmFja2NvbXBhdCBmb3Igc3Bpbm5lciBodG1sIGV4dGVuc2lvbiBwb2ludHNcblx0JC53aWRnZXQoIFwidWkuc3Bpbm5lclwiLCAkLnVpLnNwaW5uZXIsIHtcblx0XHRfZW5oYW5jZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLnVpU3Bpbm5lciA9IHRoaXMuZWxlbWVudFxuXHRcdFx0XHQuYXR0ciggXCJhdXRvY29tcGxldGVcIiwgXCJvZmZcIiApXG5cdFx0XHRcdC53cmFwKCB0aGlzLl91aVNwaW5uZXJIdG1sKCkgKVxuXHRcdFx0XHQucGFyZW50KClcblxuXHRcdFx0XHRcdC8vIEFkZCBidXR0b25zXG5cdFx0XHRcdFx0LmFwcGVuZCggdGhpcy5fYnV0dG9uSHRtbCgpICk7XG5cdFx0fSxcblx0XHRfdWlTcGlubmVySHRtbDogZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gXCI8c3Bhbj5cIjtcblx0XHR9LFxuXG5cdFx0X2J1dHRvbkh0bWw6IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFwiPGE+PC9hPjxhPjwvYT5cIjtcblx0XHR9XG5cdH0gKTtcbn1cblxudmFyIHdpZGdldHNTcGlubmVyID0gJC51aS5zcGlubmVyO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFRhYnMgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFRhYnNcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBUcmFuc2Zvcm1zIGEgc2V0IG9mIGNvbnRhaW5lciBlbGVtZW50cyBpbnRvIGEgdGFiIHN0cnVjdHVyZS5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS90YWJzL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL3RhYnMvXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS90YWJzLmNzc1xuLy8+PmNzcy50aGVtZTogLi4vLi4vdGhlbWVzL2Jhc2UvdGhlbWUuY3NzXG5cblxuXG4kLndpZGdldCggXCJ1aS50YWJzXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0ZGVsYXk6IDMwMCxcblx0b3B0aW9uczoge1xuXHRcdGFjdGl2ZTogbnVsbCxcblx0XHRjbGFzc2VzOiB7XG5cdFx0XHRcInVpLXRhYnNcIjogXCJ1aS1jb3JuZXItYWxsXCIsXG5cdFx0XHRcInVpLXRhYnMtbmF2XCI6IFwidWktY29ybmVyLWFsbFwiLFxuXHRcdFx0XCJ1aS10YWJzLXBhbmVsXCI6IFwidWktY29ybmVyLWJvdHRvbVwiLFxuXHRcdFx0XCJ1aS10YWJzLXRhYlwiOiBcInVpLWNvcm5lci10b3BcIlxuXHRcdH0sXG5cdFx0Y29sbGFwc2libGU6IGZhbHNlLFxuXHRcdGV2ZW50OiBcImNsaWNrXCIsXG5cdFx0aGVpZ2h0U3R5bGU6IFwiY29udGVudFwiLFxuXHRcdGhpZGU6IG51bGwsXG5cdFx0c2hvdzogbnVsbCxcblxuXHRcdC8vIENhbGxiYWNrc1xuXHRcdGFjdGl2YXRlOiBudWxsLFxuXHRcdGJlZm9yZUFjdGl2YXRlOiBudWxsLFxuXHRcdGJlZm9yZUxvYWQ6IG51bGwsXG5cdFx0bG9hZDogbnVsbFxuXHR9LFxuXG5cdF9pc0xvY2FsOiAoIGZ1bmN0aW9uKCkge1xuXHRcdHZhciByaGFzaCA9IC8jLiokLztcblxuXHRcdHJldHVybiBmdW5jdGlvbiggYW5jaG9yICkge1xuXHRcdFx0dmFyIGFuY2hvclVybCwgbG9jYXRpb25Vcmw7XG5cblx0XHRcdGFuY2hvclVybCA9IGFuY2hvci5ocmVmLnJlcGxhY2UoIHJoYXNoLCBcIlwiICk7XG5cdFx0XHRsb2NhdGlvblVybCA9IGxvY2F0aW9uLmhyZWYucmVwbGFjZSggcmhhc2gsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRGVjb2RpbmcgbWF5IHRocm93IGFuIGVycm9yIGlmIHRoZSBVUkwgaXNuJ3QgVVRGLTggKCM5NTE4KVxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YW5jaG9yVXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KCBhbmNob3JVcmwgKTtcblx0XHRcdH0gY2F0Y2ggKCBlcnJvciApIHt9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2NhdGlvblVybCA9IGRlY29kZVVSSUNvbXBvbmVudCggbG9jYXRpb25VcmwgKTtcblx0XHRcdH0gY2F0Y2ggKCBlcnJvciApIHt9XG5cblx0XHRcdHJldHVybiBhbmNob3IuaGFzaC5sZW5ndGggPiAxICYmIGFuY2hvclVybCA9PT0gbG9jYXRpb25Vcmw7XG5cdFx0fTtcblx0fSApKCksXG5cblx0X2NyZWF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0b3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuXHRcdHRoaXMucnVubmluZyA9IGZhbHNlO1xuXG5cdFx0dGhpcy5fYWRkQ2xhc3MoIFwidWktdGFic1wiLCBcInVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudFwiICk7XG5cdFx0dGhpcy5fdG9nZ2xlQ2xhc3MoIFwidWktdGFicy1jb2xsYXBzaWJsZVwiLCBudWxsLCBvcHRpb25zLmNvbGxhcHNpYmxlICk7XG5cblx0XHR0aGlzLl9wcm9jZXNzVGFicygpO1xuXHRcdG9wdGlvbnMuYWN0aXZlID0gdGhpcy5faW5pdGlhbEFjdGl2ZSgpO1xuXG5cdFx0Ly8gVGFrZSBkaXNhYmxpbmcgdGFicyB2aWEgY2xhc3MgYXR0cmlidXRlIGZyb20gSFRNTFxuXHRcdC8vIGludG8gYWNjb3VudCBhbmQgdXBkYXRlIG9wdGlvbiBwcm9wZXJseS5cblx0XHRpZiAoICQuaXNBcnJheSggb3B0aW9ucy5kaXNhYmxlZCApICkge1xuXHRcdFx0b3B0aW9ucy5kaXNhYmxlZCA9ICQudW5pcXVlKCBvcHRpb25zLmRpc2FibGVkLmNvbmNhdChcblx0XHRcdFx0JC5tYXAoIHRoaXMudGFicy5maWx0ZXIoIFwiLnVpLXN0YXRlLWRpc2FibGVkXCIgKSwgZnVuY3Rpb24oIGxpICkge1xuXHRcdFx0XHRcdHJldHVybiB0aGF0LnRhYnMuaW5kZXgoIGxpICk7XG5cdFx0XHRcdH0gKVxuXHRcdFx0KSApLnNvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBDaGVjayBmb3IgbGVuZ3RoIGF2b2lkcyBlcnJvciB3aGVuIGluaXRpYWxpemluZyBlbXB0eSBsaXN0XG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuYWN0aXZlICE9PSBmYWxzZSAmJiB0aGlzLmFuY2hvcnMubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5hY3RpdmUgPSB0aGlzLl9maW5kQWN0aXZlKCBvcHRpb25zLmFjdGl2ZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFjdGl2ZSA9ICQoKTtcblx0XHR9XG5cblx0XHR0aGlzLl9yZWZyZXNoKCk7XG5cblx0XHRpZiAoIHRoaXMuYWN0aXZlLmxlbmd0aCApIHtcblx0XHRcdHRoaXMubG9hZCggb3B0aW9ucy5hY3RpdmUgKTtcblx0XHR9XG5cdH0sXG5cblx0X2luaXRpYWxBY3RpdmU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBhY3RpdmUgPSB0aGlzLm9wdGlvbnMuYWN0aXZlLFxuXHRcdFx0Y29sbGFwc2libGUgPSB0aGlzLm9wdGlvbnMuY29sbGFwc2libGUsXG5cdFx0XHRsb2NhdGlvbkhhc2ggPSBsb2NhdGlvbi5oYXNoLnN1YnN0cmluZyggMSApO1xuXG5cdFx0aWYgKCBhY3RpdmUgPT09IG51bGwgKSB7XG5cblx0XHRcdC8vIGNoZWNrIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyIGluIHRoZSBVUkxcblx0XHRcdGlmICggbG9jYXRpb25IYXNoICkge1xuXHRcdFx0XHR0aGlzLnRhYnMuZWFjaCggZnVuY3Rpb24oIGksIHRhYiApIHtcblx0XHRcdFx0XHRpZiAoICQoIHRhYiApLmF0dHIoIFwiYXJpYS1jb250cm9sc1wiICkgPT09IGxvY2F0aW9uSGFzaCApIHtcblx0XHRcdFx0XHRcdGFjdGl2ZSA9IGk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENoZWNrIGZvciBhIHRhYiBtYXJrZWQgYWN0aXZlIHZpYSBhIGNsYXNzXG5cdFx0XHRpZiAoIGFjdGl2ZSA9PT0gbnVsbCApIHtcblx0XHRcdFx0YWN0aXZlID0gdGhpcy50YWJzLmluZGV4KCB0aGlzLnRhYnMuZmlsdGVyKCBcIi51aS10YWJzLWFjdGl2ZVwiICkgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTm8gYWN0aXZlIHRhYiwgc2V0IHRvIGZhbHNlXG5cdFx0XHRpZiAoIGFjdGl2ZSA9PT0gbnVsbCB8fCBhY3RpdmUgPT09IC0xICkge1xuXHRcdFx0XHRhY3RpdmUgPSB0aGlzLnRhYnMubGVuZ3RoID8gMCA6IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBudW1iZXJzOiBuZWdhdGl2ZSwgb3V0IG9mIHJhbmdlXG5cdFx0aWYgKCBhY3RpdmUgIT09IGZhbHNlICkge1xuXHRcdFx0YWN0aXZlID0gdGhpcy50YWJzLmluZGV4KCB0aGlzLnRhYnMuZXEoIGFjdGl2ZSApICk7XG5cdFx0XHRpZiAoIGFjdGl2ZSA9PT0gLTEgKSB7XG5cdFx0XHRcdGFjdGl2ZSA9IGNvbGxhcHNpYmxlID8gZmFsc2UgOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIERvbid0IGFsbG93IGNvbGxhcHNpYmxlOiBmYWxzZSBhbmQgYWN0aXZlOiBmYWxzZVxuXHRcdGlmICggIWNvbGxhcHNpYmxlICYmIGFjdGl2ZSA9PT0gZmFsc2UgJiYgdGhpcy5hbmNob3JzLmxlbmd0aCApIHtcblx0XHRcdGFjdGl2ZSA9IDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFjdGl2ZTtcblx0fSxcblxuXHRfZ2V0Q3JlYXRlRXZlbnREYXRhOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGFiOiB0aGlzLmFjdGl2ZSxcblx0XHRcdHBhbmVsOiAhdGhpcy5hY3RpdmUubGVuZ3RoID8gJCgpIDogdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRoaXMuYWN0aXZlIClcblx0XHR9O1xuXHR9LFxuXG5cdF90YWJLZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGZvY3VzZWRUYWIgPSAkKCAkLnVpLnNhZmVBY3RpdmVFbGVtZW50KCB0aGlzLmRvY3VtZW50WyAwIF0gKSApLmNsb3Nlc3QoIFwibGlcIiApLFxuXHRcdFx0c2VsZWN0ZWRJbmRleCA9IHRoaXMudGFicy5pbmRleCggZm9jdXNlZFRhYiApLFxuXHRcdFx0Z29pbmdGb3J3YXJkID0gdHJ1ZTtcblxuXHRcdGlmICggdGhpcy5faGFuZGxlUGFnZU5hdiggZXZlbnQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuXHRcdGNhc2UgJC51aS5rZXlDb2RlLlJJR0hUOlxuXHRcdGNhc2UgJC51aS5rZXlDb2RlLkRPV046XG5cdFx0XHRzZWxlY3RlZEluZGV4Kys7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5VUDpcblx0XHRjYXNlICQudWkua2V5Q29kZS5MRUZUOlxuXHRcdFx0Z29pbmdGb3J3YXJkID0gZmFsc2U7XG5cdFx0XHRzZWxlY3RlZEluZGV4LS07XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5FTkQ6XG5cdFx0XHRzZWxlY3RlZEluZGV4ID0gdGhpcy5hbmNob3JzLmxlbmd0aCAtIDE7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5IT01FOlxuXHRcdFx0c2VsZWN0ZWRJbmRleCA9IDA7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICQudWkua2V5Q29kZS5TUEFDRTpcblxuXHRcdFx0Ly8gQWN0aXZhdGUgb25seSwgbm8gY29sbGFwc2luZ1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGNsZWFyVGltZW91dCggdGhpcy5hY3RpdmF0aW5nICk7XG5cdFx0XHR0aGlzLl9hY3RpdmF0ZSggc2VsZWN0ZWRJbmRleCApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdGNhc2UgJC51aS5rZXlDb2RlLkVOVEVSOlxuXG5cdFx0XHQvLyBUb2dnbGUgKGNhbmNlbCBkZWxheWVkIGFjdGl2YXRpb24sIGFsbG93IGNvbGxhcHNpbmcpXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0Y2xlYXJUaW1lb3V0KCB0aGlzLmFjdGl2YXRpbmcgKTtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBjb2xsYXBzZSBvciBhY3RpdmF0ZVxuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIHNlbGVjdGVkSW5kZXggPT09IHRoaXMub3B0aW9ucy5hY3RpdmUgPyBmYWxzZSA6IHNlbGVjdGVkSW5kZXggKTtcblx0XHRcdHJldHVybjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZvY3VzIHRoZSBhcHByb3ByaWF0ZSB0YWIsIGJhc2VkIG9uIHdoaWNoIGtleSB3YXMgcHJlc3NlZFxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0Y2xlYXJUaW1lb3V0KCB0aGlzLmFjdGl2YXRpbmcgKTtcblx0XHRzZWxlY3RlZEluZGV4ID0gdGhpcy5fZm9jdXNOZXh0VGFiKCBzZWxlY3RlZEluZGV4LCBnb2luZ0ZvcndhcmQgKTtcblxuXHRcdC8vIE5hdmlnYXRpbmcgd2l0aCBjb250cm9sL2NvbW1hbmQga2V5IHdpbGwgcHJldmVudCBhdXRvbWF0aWMgYWN0aXZhdGlvblxuXHRcdGlmICggIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgKSB7XG5cblx0XHRcdC8vIFVwZGF0ZSBhcmlhLXNlbGVjdGVkIGltbWVkaWF0ZWx5IHNvIHRoYXQgQVQgdGhpbmsgdGhlIHRhYiBpcyBhbHJlYWR5IHNlbGVjdGVkLlxuXHRcdFx0Ly8gT3RoZXJ3aXNlIEFUIG1heSBjb25mdXNlIHRoZSB1c2VyIGJ5IHN0YXRpbmcgdGhhdCB0aGV5IG5lZWQgdG8gYWN0aXZhdGUgdGhlIHRhYixcblx0XHRcdC8vIGJ1dCB0aGUgdGFiIHdpbGwgYWxyZWFkeSBiZSBhY3RpdmF0ZWQgYnkgdGhlIHRpbWUgdGhlIGFubm91bmNlbWVudCBmaW5pc2hlcy5cblx0XHRcdGZvY3VzZWRUYWIuYXR0ciggXCJhcmlhLXNlbGVjdGVkXCIsIFwiZmFsc2VcIiApO1xuXHRcdFx0dGhpcy50YWJzLmVxKCBzZWxlY3RlZEluZGV4ICkuYXR0ciggXCJhcmlhLXNlbGVjdGVkXCIsIFwidHJ1ZVwiICk7XG5cblx0XHRcdHRoaXMuYWN0aXZhdGluZyA9IHRoaXMuX2RlbGF5KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dGhpcy5vcHRpb24oIFwiYWN0aXZlXCIsIHNlbGVjdGVkSW5kZXggKTtcblx0XHRcdH0sIHRoaXMuZGVsYXkgKTtcblx0XHR9XG5cdH0sXG5cblx0X3BhbmVsS2V5ZG93bjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggdGhpcy5faGFuZGxlUGFnZU5hdiggZXZlbnQgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBDdHJsK3VwIG1vdmVzIGZvY3VzIHRvIHRoZSBjdXJyZW50IHRhYlxuXHRcdGlmICggZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXlDb2RlID09PSAkLnVpLmtleUNvZGUuVVAgKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy5hY3RpdmUudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIEFsdCtwYWdlIHVwL2Rvd24gbW92ZXMgZm9jdXMgdG8gdGhlIHByZXZpb3VzL25leHQgdGFiIChhbmQgYWN0aXZhdGVzKVxuXHRfaGFuZGxlUGFnZU5hdjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdGlmICggZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleUNvZGUgPT09ICQudWkua2V5Q29kZS5QQUdFX1VQICkge1xuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIHRoaXMuX2ZvY3VzTmV4dFRhYiggdGhpcy5vcHRpb25zLmFjdGl2ZSAtIDEsIGZhbHNlICkgKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoIGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXlDb2RlID09PSAkLnVpLmtleUNvZGUuUEFHRV9ET1dOICkge1xuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIHRoaXMuX2ZvY3VzTmV4dFRhYiggdGhpcy5vcHRpb25zLmFjdGl2ZSArIDEsIHRydWUgKSApO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9LFxuXG5cdF9maW5kTmV4dFRhYjogZnVuY3Rpb24oIGluZGV4LCBnb2luZ0ZvcndhcmQgKSB7XG5cdFx0dmFyIGxhc3RUYWJJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuXG5cdFx0ZnVuY3Rpb24gY29uc3RyYWluKCkge1xuXHRcdFx0aWYgKCBpbmRleCA+IGxhc3RUYWJJbmRleCApIHtcblx0XHRcdFx0aW5kZXggPSAwO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdGluZGV4ID0gbGFzdFRhYkluZGV4O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGluZGV4O1xuXHRcdH1cblxuXHRcdHdoaWxlICggJC5pbkFycmF5KCBjb25zdHJhaW4oKSwgdGhpcy5vcHRpb25zLmRpc2FibGVkICkgIT09IC0xICkge1xuXHRcdFx0aW5kZXggPSBnb2luZ0ZvcndhcmQgPyBpbmRleCArIDEgOiBpbmRleCAtIDE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGluZGV4O1xuXHR9LFxuXG5cdF9mb2N1c05leHRUYWI6IGZ1bmN0aW9uKCBpbmRleCwgZ29pbmdGb3J3YXJkICkge1xuXHRcdGluZGV4ID0gdGhpcy5fZmluZE5leHRUYWIoIGluZGV4LCBnb2luZ0ZvcndhcmQgKTtcblx0XHR0aGlzLnRhYnMuZXEoIGluZGV4ICkudHJpZ2dlciggXCJmb2N1c1wiICk7XG5cdFx0cmV0dXJuIGluZGV4O1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdGlmICgga2V5ID09PSBcImFjdGl2ZVwiICkge1xuXG5cdFx0XHQvLyBfYWN0aXZhdGUoKSB3aWxsIGhhbmRsZSBpbnZhbGlkIHZhbHVlcyBhbmQgdXBkYXRlIHRoaXMub3B0aW9uc1xuXHRcdFx0dGhpcy5fYWN0aXZhdGUoIHZhbHVlICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fc3VwZXIoIGtleSwgdmFsdWUgKTtcblxuXHRcdGlmICgga2V5ID09PSBcImNvbGxhcHNpYmxlXCIgKSB7XG5cdFx0XHR0aGlzLl90b2dnbGVDbGFzcyggXCJ1aS10YWJzLWNvbGxhcHNpYmxlXCIsIG51bGwsIHZhbHVlICk7XG5cblx0XHRcdC8vIFNldHRpbmcgY29sbGFwc2libGU6IGZhbHNlIHdoaWxlIGNvbGxhcHNlZDsgb3BlbiBmaXJzdCBwYW5lbFxuXHRcdFx0aWYgKCAhdmFsdWUgJiYgdGhpcy5vcHRpb25zLmFjdGl2ZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdHRoaXMuX2FjdGl2YXRlKCAwICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09IFwiZXZlbnRcIiApIHtcblx0XHRcdHRoaXMuX3NldHVwRXZlbnRzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ID09PSBcImhlaWdodFN0eWxlXCIgKSB7XG5cdFx0XHR0aGlzLl9zZXR1cEhlaWdodFN0eWxlKCB2YWx1ZSApO1xuXHRcdH1cblx0fSxcblxuXHRfc2FuaXRpemVTZWxlY3RvcjogZnVuY3Rpb24oIGhhc2ggKSB7XG5cdFx0cmV0dXJuIGhhc2ggPyBoYXNoLnJlcGxhY2UoIC9bIVwiJCUmJygpKissLlxcLzo7PD0+P0BcXFtcXF1cXF5ge3x9fl0vZywgXCJcXFxcJCZcIiApIDogXCJcIjtcblx0fSxcblxuXHRyZWZyZXNoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcblx0XHRcdGxpcyA9IHRoaXMudGFibGlzdC5jaGlsZHJlbiggXCI6aGFzKGFbaHJlZl0pXCIgKTtcblxuXHRcdC8vIEdldCBkaXNhYmxlZCB0YWJzIGZyb20gY2xhc3MgYXR0cmlidXRlIGZyb20gSFRNTFxuXHRcdC8vIHRoaXMgd2lsbCBnZXQgY29udmVydGVkIHRvIGEgYm9vbGVhbiBpZiBuZWVkZWQgaW4gX3JlZnJlc2goKVxuXHRcdG9wdGlvbnMuZGlzYWJsZWQgPSAkLm1hcCggbGlzLmZpbHRlciggXCIudWktc3RhdGUtZGlzYWJsZWRcIiApLCBmdW5jdGlvbiggdGFiICkge1xuXHRcdFx0cmV0dXJuIGxpcy5pbmRleCggdGFiICk7XG5cdFx0fSApO1xuXG5cdFx0dGhpcy5fcHJvY2Vzc1RhYnMoKTtcblxuXHRcdC8vIFdhcyBjb2xsYXBzZWQgb3Igbm8gdGFic1xuXHRcdGlmICggb3B0aW9ucy5hY3RpdmUgPT09IGZhbHNlIHx8ICF0aGlzLmFuY2hvcnMubGVuZ3RoICkge1xuXHRcdFx0b3B0aW9ucy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHRoaXMuYWN0aXZlID0gJCgpO1xuXG5cdFx0Ly8gd2FzIGFjdGl2ZSwgYnV0IGFjdGl2ZSB0YWIgaXMgZ29uZVxuXHRcdH0gZWxzZSBpZiAoIHRoaXMuYWN0aXZlLmxlbmd0aCAmJiAhJC5jb250YWlucyggdGhpcy50YWJsaXN0WyAwIF0sIHRoaXMuYWN0aXZlWyAwIF0gKSApIHtcblxuXHRcdFx0Ly8gYWxsIHJlbWFpbmluZyB0YWJzIGFyZSBkaXNhYmxlZFxuXHRcdFx0aWYgKCB0aGlzLnRhYnMubGVuZ3RoID09PSBvcHRpb25zLmRpc2FibGVkLmxlbmd0aCApIHtcblx0XHRcdFx0b3B0aW9ucy5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5hY3RpdmUgPSAkKCk7XG5cblx0XHRcdC8vIGFjdGl2YXRlIHByZXZpb3VzIHRhYlxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fYWN0aXZhdGUoIHRoaXMuX2ZpbmROZXh0VGFiKCBNYXRoLm1heCggMCwgb3B0aW9ucy5hY3RpdmUgLSAxICksIGZhbHNlICkgKTtcblx0XHRcdH1cblxuXHRcdC8vIHdhcyBhY3RpdmUsIGFjdGl2ZSB0YWIgc3RpbGwgZXhpc3RzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gbWFrZSBzdXJlIGFjdGl2ZSBpbmRleCBpcyBjb3JyZWN0XG5cdFx0XHRvcHRpb25zLmFjdGl2ZSA9IHRoaXMudGFicy5pbmRleCggdGhpcy5hY3RpdmUgKTtcblx0XHR9XG5cblx0XHR0aGlzLl9yZWZyZXNoKCk7XG5cdH0sXG5cblx0X3JlZnJlc2g6IGZ1bmN0aW9uKCkge1xuXHRcdHRoaXMuX3NldE9wdGlvbkRpc2FibGVkKCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgKTtcblx0XHR0aGlzLl9zZXR1cEV2ZW50cyggdGhpcy5vcHRpb25zLmV2ZW50ICk7XG5cdFx0dGhpcy5fc2V0dXBIZWlnaHRTdHlsZSggdGhpcy5vcHRpb25zLmhlaWdodFN0eWxlICk7XG5cblx0XHR0aGlzLnRhYnMubm90KCB0aGlzLmFjdGl2ZSApLmF0dHIoIHtcblx0XHRcdFwiYXJpYS1zZWxlY3RlZFwiOiBcImZhbHNlXCIsXG5cdFx0XHRcImFyaWEtZXhwYW5kZWRcIjogXCJmYWxzZVwiLFxuXHRcdFx0dGFiSW5kZXg6IC0xXG5cdFx0fSApO1xuXHRcdHRoaXMucGFuZWxzLm5vdCggdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRoaXMuYWN0aXZlICkgKVxuXHRcdFx0LmhpZGUoKVxuXHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0XCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuXHRcdFx0fSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIG9uZSB0YWIgaXMgaW4gdGhlIHRhYiBvcmRlclxuXHRcdGlmICggIXRoaXMuYWN0aXZlLmxlbmd0aCApIHtcblx0XHRcdHRoaXMudGFicy5lcSggMCApLmF0dHIoIFwidGFiSW5kZXhcIiwgMCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFjdGl2ZVxuXHRcdFx0XHQuYXR0cigge1xuXHRcdFx0XHRcdFwiYXJpYS1zZWxlY3RlZFwiOiBcInRydWVcIixcblx0XHRcdFx0XHRcImFyaWEtZXhwYW5kZWRcIjogXCJ0cnVlXCIsXG5cdFx0XHRcdFx0dGFiSW5kZXg6IDBcblx0XHRcdFx0fSApO1xuXHRcdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuYWN0aXZlLCBcInVpLXRhYnMtYWN0aXZlXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRcdHRoaXMuX2dldFBhbmVsRm9yVGFiKCB0aGlzLmFjdGl2ZSApXG5cdFx0XHRcdC5zaG93KClcblx0XHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0XHRcImFyaWEtaGlkZGVuXCI6IFwiZmFsc2VcIlxuXHRcdFx0XHR9ICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9wcm9jZXNzVGFiczogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0cHJldlRhYnMgPSB0aGlzLnRhYnMsXG5cdFx0XHRwcmV2QW5jaG9ycyA9IHRoaXMuYW5jaG9ycyxcblx0XHRcdHByZXZQYW5lbHMgPSB0aGlzLnBhbmVscztcblxuXHRcdHRoaXMudGFibGlzdCA9IHRoaXMuX2dldExpc3QoKS5hdHRyKCBcInJvbGVcIiwgXCJ0YWJsaXN0XCIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy50YWJsaXN0LCBcInVpLXRhYnMtbmF2XCIsXG5cdFx0XHRcInVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlclwiICk7XG5cblx0XHQvLyBQcmV2ZW50IHVzZXJzIGZyb20gZm9jdXNpbmcgZGlzYWJsZWQgdGFicyB2aWEgY2xpY2tcblx0XHR0aGlzLnRhYmxpc3Rcblx0XHRcdC5vbiggXCJtb3VzZWRvd25cIiArIHRoaXMuZXZlbnROYW1lc3BhY2UsIFwiPiBsaVwiLCBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGlmICggJCggdGhpcyApLmlzKCBcIi51aS1zdGF0ZS1kaXNhYmxlZFwiICkgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApXG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5XG5cdFx0XHQvLyBQcmV2ZW50aW5nIHRoZSBkZWZhdWx0IGFjdGlvbiBpbiBtb3VzZWRvd24gZG9lc24ndCBwcmV2ZW50IElFXG5cdFx0XHQvLyBmcm9tIGZvY3VzaW5nIHRoZSBlbGVtZW50LCBzbyBpZiB0aGUgYW5jaG9yIGdldHMgZm9jdXNlZCwgYmx1ci5cblx0XHRcdC8vIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgZm9jdXNpbmcgdGhlIHByZXZpb3VzbHkgZm9jdXNlZFxuXHRcdFx0Ly8gZWxlbWVudCBzaW5jZSBjbGlja2luZyBvbiBhIG5vbi1mb2N1c2FibGUgZWxlbWVudCBzaG91bGQgZm9jdXNcblx0XHRcdC8vIHRoZSBib2R5IGFueXdheS5cblx0XHRcdC5vbiggXCJmb2N1c1wiICsgdGhpcy5ldmVudE5hbWVzcGFjZSwgXCIudWktdGFicy1hbmNob3JcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggJCggdGhpcyApLmNsb3Nlc3QoIFwibGlcIiApLmlzKCBcIi51aS1zdGF0ZS1kaXNhYmxlZFwiICkgKSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVyKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdHRoaXMudGFicyA9IHRoaXMudGFibGlzdC5maW5kKCBcIj4gbGk6aGFzKGFbaHJlZl0pXCIgKVxuXHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0cm9sZTogXCJ0YWJcIixcblx0XHRcdFx0dGFiSW5kZXg6IC0xXG5cdFx0XHR9ICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMudGFicywgXCJ1aS10YWJzLXRhYlwiLCBcInVpLXN0YXRlLWRlZmF1bHRcIiApO1xuXG5cdFx0dGhpcy5hbmNob3JzID0gdGhpcy50YWJzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gJCggXCJhXCIsIHRoaXMgKVsgMCBdO1xuXHRcdH0gKVxuXHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0cm9sZTogXCJwcmVzZW50YXRpb25cIixcblx0XHRcdFx0dGFiSW5kZXg6IC0xXG5cdFx0XHR9ICk7XG5cdFx0dGhpcy5fYWRkQ2xhc3MoIHRoaXMuYW5jaG9ycywgXCJ1aS10YWJzLWFuY2hvclwiICk7XG5cblx0XHR0aGlzLnBhbmVscyA9ICQoKTtcblxuXHRcdHRoaXMuYW5jaG9ycy5lYWNoKCBmdW5jdGlvbiggaSwgYW5jaG9yICkge1xuXHRcdFx0dmFyIHNlbGVjdG9yLCBwYW5lbCwgcGFuZWxJZCxcblx0XHRcdFx0YW5jaG9ySWQgPSAkKCBhbmNob3IgKS51bmlxdWVJZCgpLmF0dHIoIFwiaWRcIiApLFxuXHRcdFx0XHR0YWIgPSAkKCBhbmNob3IgKS5jbG9zZXN0KCBcImxpXCIgKSxcblx0XHRcdFx0b3JpZ2luYWxBcmlhQ29udHJvbHMgPSB0YWIuYXR0ciggXCJhcmlhLWNvbnRyb2xzXCIgKTtcblxuXHRcdFx0Ly8gSW5saW5lIHRhYlxuXHRcdFx0aWYgKCB0aGF0Ll9pc0xvY2FsKCBhbmNob3IgKSApIHtcblx0XHRcdFx0c2VsZWN0b3IgPSBhbmNob3IuaGFzaDtcblx0XHRcdFx0cGFuZWxJZCA9IHNlbGVjdG9yLnN1YnN0cmluZyggMSApO1xuXHRcdFx0XHRwYW5lbCA9IHRoYXQuZWxlbWVudC5maW5kKCB0aGF0Ll9zYW5pdGl6ZVNlbGVjdG9yKCBzZWxlY3RvciApICk7XG5cblx0XHRcdC8vIHJlbW90ZSB0YWJcblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0Ly8gSWYgdGhlIHRhYiBkb2Vzbid0IGFscmVhZHkgaGF2ZSBhcmlhLWNvbnRyb2xzLFxuXHRcdFx0XHQvLyBnZW5lcmF0ZSBhbiBpZCBieSB1c2luZyBhIHRocm93LWF3YXkgZWxlbWVudFxuXHRcdFx0XHRwYW5lbElkID0gdGFiLmF0dHIoIFwiYXJpYS1jb250cm9sc1wiICkgfHwgJCgge30gKS51bmlxdWVJZCgpWyAwIF0uaWQ7XG5cdFx0XHRcdHNlbGVjdG9yID0gXCIjXCIgKyBwYW5lbElkO1xuXHRcdFx0XHRwYW5lbCA9IHRoYXQuZWxlbWVudC5maW5kKCBzZWxlY3RvciApO1xuXHRcdFx0XHRpZiAoICFwYW5lbC5sZW5ndGggKSB7XG5cdFx0XHRcdFx0cGFuZWwgPSB0aGF0Ll9jcmVhdGVQYW5lbCggcGFuZWxJZCApO1xuXHRcdFx0XHRcdHBhbmVsLmluc2VydEFmdGVyKCB0aGF0LnBhbmVsc1sgaSAtIDEgXSB8fCB0aGF0LnRhYmxpc3QgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYW5lbC5hdHRyKCBcImFyaWEtbGl2ZVwiLCBcInBvbGl0ZVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggcGFuZWwubGVuZ3RoICkge1xuXHRcdFx0XHR0aGF0LnBhbmVscyA9IHRoYXQucGFuZWxzLmFkZCggcGFuZWwgKTtcblx0XHRcdH1cblx0XHRcdGlmICggb3JpZ2luYWxBcmlhQ29udHJvbHMgKSB7XG5cdFx0XHRcdHRhYi5kYXRhKCBcInVpLXRhYnMtYXJpYS1jb250cm9sc1wiLCBvcmlnaW5hbEFyaWFDb250cm9scyApO1xuXHRcdFx0fVxuXHRcdFx0dGFiLmF0dHIoIHtcblx0XHRcdFx0XCJhcmlhLWNvbnRyb2xzXCI6IHBhbmVsSWQsXG5cdFx0XHRcdFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFuY2hvcklkXG5cdFx0XHR9ICk7XG5cdFx0XHRwYW5lbC5hdHRyKCBcImFyaWEtbGFiZWxsZWRieVwiLCBhbmNob3JJZCApO1xuXHRcdH0gKTtcblxuXHRcdHRoaXMucGFuZWxzLmF0dHIoIFwicm9sZVwiLCBcInRhYnBhbmVsXCIgKTtcblx0XHR0aGlzLl9hZGRDbGFzcyggdGhpcy5wYW5lbHMsIFwidWktdGFicy1wYW5lbFwiLCBcInVpLXdpZGdldC1jb250ZW50XCIgKTtcblxuXHRcdC8vIEF2b2lkIG1lbW9yeSBsZWFrcyAoIzEwMDU2KVxuXHRcdGlmICggcHJldlRhYnMgKSB7XG5cdFx0XHR0aGlzLl9vZmYoIHByZXZUYWJzLm5vdCggdGhpcy50YWJzICkgKTtcblx0XHRcdHRoaXMuX29mZiggcHJldkFuY2hvcnMubm90KCB0aGlzLmFuY2hvcnMgKSApO1xuXHRcdFx0dGhpcy5fb2ZmKCBwcmV2UGFuZWxzLm5vdCggdGhpcy5wYW5lbHMgKSApO1xuXHRcdH1cblx0fSxcblxuXHQvLyBBbGxvdyBvdmVycmlkaW5nIGhvdyB0byBmaW5kIHRoZSBsaXN0IGZvciByYXJlIHVzYWdlIHNjZW5hcmlvcyAoIzc3MTUpXG5cdF9nZXRMaXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy50YWJsaXN0IHx8IHRoaXMuZWxlbWVudC5maW5kKCBcIm9sLCB1bFwiICkuZXEoIDAgKTtcblx0fSxcblxuXHRfY3JlYXRlUGFuZWw6IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRyZXR1cm4gJCggXCI8ZGl2PlwiIClcblx0XHRcdC5hdHRyKCBcImlkXCIsIGlkIClcblx0XHRcdC5kYXRhKCBcInVpLXRhYnMtZGVzdHJveVwiLCB0cnVlICk7XG5cdH0sXG5cblx0X3NldE9wdGlvbkRpc2FibGVkOiBmdW5jdGlvbiggZGlzYWJsZWQgKSB7XG5cdFx0dmFyIGN1cnJlbnRJdGVtLCBsaSwgaTtcblxuXHRcdGlmICggJC5pc0FycmF5KCBkaXNhYmxlZCApICkge1xuXHRcdFx0aWYgKCAhZGlzYWJsZWQubGVuZ3RoICkge1xuXHRcdFx0XHRkaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICggZGlzYWJsZWQubGVuZ3RoID09PSB0aGlzLmFuY2hvcnMubGVuZ3RoICkge1xuXHRcdFx0XHRkaXNhYmxlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRGlzYWJsZSB0YWJzXG5cdFx0Zm9yICggaSA9IDA7ICggbGkgPSB0aGlzLnRhYnNbIGkgXSApOyBpKysgKSB7XG5cdFx0XHRjdXJyZW50SXRlbSA9ICQoIGxpICk7XG5cdFx0XHRpZiAoIGRpc2FibGVkID09PSB0cnVlIHx8ICQuaW5BcnJheSggaSwgZGlzYWJsZWQgKSAhPT0gLTEgKSB7XG5cdFx0XHRcdGN1cnJlbnRJdGVtLmF0dHIoIFwiYXJpYS1kaXNhYmxlZFwiLCBcInRydWVcIiApO1xuXHRcdFx0XHR0aGlzLl9hZGRDbGFzcyggY3VycmVudEl0ZW0sIG51bGwsIFwidWktc3RhdGUtZGlzYWJsZWRcIiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudEl0ZW0ucmVtb3ZlQXR0ciggXCJhcmlhLWRpc2FibGVkXCIgKTtcblx0XHRcdFx0dGhpcy5fcmVtb3ZlQ2xhc3MoIGN1cnJlbnRJdGVtLCBudWxsLCBcInVpLXN0YXRlLWRpc2FibGVkXCIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcblxuXHRcdHRoaXMuX3RvZ2dsZUNsYXNzKCB0aGlzLndpZGdldCgpLCB0aGlzLndpZGdldEZ1bGxOYW1lICsgXCItZGlzYWJsZWRcIiwgbnVsbCxcblx0XHRcdGRpc2FibGVkID09PSB0cnVlICk7XG5cdH0sXG5cblx0X3NldHVwRXZlbnRzOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIGV2ZW50cyA9IHt9O1xuXHRcdGlmICggZXZlbnQgKSB7XG5cdFx0XHQkLmVhY2goIGV2ZW50LnNwbGl0KCBcIiBcIiApLCBmdW5jdGlvbiggaW5kZXgsIGV2ZW50TmFtZSApIHtcblx0XHRcdFx0ZXZlbnRzWyBldmVudE5hbWUgXSA9IFwiX2V2ZW50SGFuZGxlclwiO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX29mZiggdGhpcy5hbmNob3JzLmFkZCggdGhpcy50YWJzICkuYWRkKCB0aGlzLnBhbmVscyApICk7XG5cblx0XHQvLyBBbHdheXMgcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24sIGV2ZW4gd2hlbiBkaXNhYmxlZFxuXHRcdHRoaXMuX29uKCB0cnVlLCB0aGlzLmFuY2hvcnMsIHtcblx0XHRcdGNsaWNrOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHRoaXMuX29uKCB0aGlzLmFuY2hvcnMsIGV2ZW50cyApO1xuXHRcdHRoaXMuX29uKCB0aGlzLnRhYnMsIHsga2V5ZG93bjogXCJfdGFiS2V5ZG93blwiIH0gKTtcblx0XHR0aGlzLl9vbiggdGhpcy5wYW5lbHMsIHsga2V5ZG93bjogXCJfcGFuZWxLZXlkb3duXCIgfSApO1xuXG5cdFx0dGhpcy5fZm9jdXNhYmxlKCB0aGlzLnRhYnMgKTtcblx0XHR0aGlzLl9ob3ZlcmFibGUoIHRoaXMudGFicyApO1xuXHR9LFxuXG5cdF9zZXR1cEhlaWdodFN0eWxlOiBmdW5jdGlvbiggaGVpZ2h0U3R5bGUgKSB7XG5cdFx0dmFyIG1heEhlaWdodCxcblx0XHRcdHBhcmVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnQoKTtcblxuXHRcdGlmICggaGVpZ2h0U3R5bGUgPT09IFwiZmlsbFwiICkge1xuXHRcdFx0bWF4SGVpZ2h0ID0gcGFyZW50LmhlaWdodCgpO1xuXHRcdFx0bWF4SGVpZ2h0IC09IHRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpIC0gdGhpcy5lbGVtZW50LmhlaWdodCgpO1xuXG5cdFx0XHR0aGlzLmVsZW1lbnQuc2libGluZ3MoIFwiOnZpc2libGVcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9ICQoIHRoaXMgKSxcblx0XHRcdFx0XHRwb3NpdGlvbiA9IGVsZW0uY3NzKCBcInBvc2l0aW9uXCIgKTtcblxuXHRcdFx0XHRpZiAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bWF4SGVpZ2h0IC09IGVsZW0ub3V0ZXJIZWlnaHQoIHRydWUgKTtcblx0XHRcdH0gKTtcblxuXHRcdFx0dGhpcy5lbGVtZW50LmNoaWxkcmVuKCkubm90KCB0aGlzLnBhbmVscyApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRtYXhIZWlnaHQgLT0gJCggdGhpcyApLm91dGVySGVpZ2h0KCB0cnVlICk7XG5cdFx0XHR9ICk7XG5cblx0XHRcdHRoaXMucGFuZWxzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkKCB0aGlzICkuaGVpZ2h0KCBNYXRoLm1heCggMCwgbWF4SGVpZ2h0IC1cblx0XHRcdFx0XHQkKCB0aGlzICkuaW5uZXJIZWlnaHQoKSArICQoIHRoaXMgKS5oZWlnaHQoKSApICk7XG5cdFx0XHR9IClcblx0XHRcdFx0LmNzcyggXCJvdmVyZmxvd1wiLCBcImF1dG9cIiApO1xuXHRcdH0gZWxzZSBpZiAoIGhlaWdodFN0eWxlID09PSBcImF1dG9cIiApIHtcblx0XHRcdG1heEhlaWdodCA9IDA7XG5cdFx0XHR0aGlzLnBhbmVscy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0bWF4SGVpZ2h0ID0gTWF0aC5tYXgoIG1heEhlaWdodCwgJCggdGhpcyApLmhlaWdodCggXCJcIiApLmhlaWdodCgpICk7XG5cdFx0XHR9ICkuaGVpZ2h0KCBtYXhIZWlnaHQgKTtcblx0XHR9XG5cdH0sXG5cblx0X2V2ZW50SGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuXHRcdFx0YWN0aXZlID0gdGhpcy5hY3RpdmUsXG5cdFx0XHRhbmNob3IgPSAkKCBldmVudC5jdXJyZW50VGFyZ2V0ICksXG5cdFx0XHR0YWIgPSBhbmNob3IuY2xvc2VzdCggXCJsaVwiICksXG5cdFx0XHRjbGlja2VkSXNBY3RpdmUgPSB0YWJbIDAgXSA9PT0gYWN0aXZlWyAwIF0sXG5cdFx0XHRjb2xsYXBzaW5nID0gY2xpY2tlZElzQWN0aXZlICYmIG9wdGlvbnMuY29sbGFwc2libGUsXG5cdFx0XHR0b1Nob3cgPSBjb2xsYXBzaW5nID8gJCgpIDogdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRhYiApLFxuXHRcdFx0dG9IaWRlID0gIWFjdGl2ZS5sZW5ndGggPyAkKCkgOiB0aGlzLl9nZXRQYW5lbEZvclRhYiggYWN0aXZlICksXG5cdFx0XHRldmVudERhdGEgPSB7XG5cdFx0XHRcdG9sZFRhYjogYWN0aXZlLFxuXHRcdFx0XHRvbGRQYW5lbDogdG9IaWRlLFxuXHRcdFx0XHRuZXdUYWI6IGNvbGxhcHNpbmcgPyAkKCkgOiB0YWIsXG5cdFx0XHRcdG5ld1BhbmVsOiB0b1Nob3dcblx0XHRcdH07XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0aWYgKCB0YWIuaGFzQ2xhc3MoIFwidWktc3RhdGUtZGlzYWJsZWRcIiApIHx8XG5cblx0XHRcdFx0Ly8gdGFiIGlzIGFscmVhZHkgbG9hZGluZ1xuXHRcdFx0XHR0YWIuaGFzQ2xhc3MoIFwidWktdGFicy1sb2FkaW5nXCIgKSB8fFxuXG5cdFx0XHRcdC8vIGNhbid0IHN3aXRjaCBkdXJuaW5nIGFuIGFuaW1hdGlvblxuXHRcdFx0XHR0aGlzLnJ1bm5pbmcgfHxcblxuXHRcdFx0XHQvLyBjbGljayBvbiBhY3RpdmUgaGVhZGVyLCBidXQgbm90IGNvbGxhcHNpYmxlXG5cdFx0XHRcdCggY2xpY2tlZElzQWN0aXZlICYmICFvcHRpb25zLmNvbGxhcHNpYmxlICkgfHxcblxuXHRcdFx0XHQvLyBhbGxvdyBjYW5jZWxpbmcgYWN0aXZhdGlvblxuXHRcdFx0XHQoIHRoaXMuX3RyaWdnZXIoIFwiYmVmb3JlQWN0aXZhdGVcIiwgZXZlbnQsIGV2ZW50RGF0YSApID09PSBmYWxzZSApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG9wdGlvbnMuYWN0aXZlID0gY29sbGFwc2luZyA/IGZhbHNlIDogdGhpcy50YWJzLmluZGV4KCB0YWIgKTtcblxuXHRcdHRoaXMuYWN0aXZlID0gY2xpY2tlZElzQWN0aXZlID8gJCgpIDogdGFiO1xuXHRcdGlmICggdGhpcy54aHIgKSB7XG5cdFx0XHR0aGlzLnhoci5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdGlmICggIXRvSGlkZS5sZW5ndGggJiYgIXRvU2hvdy5sZW5ndGggKSB7XG5cdFx0XHQkLmVycm9yKCBcImpRdWVyeSBVSSBUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVudCBpZGVudGlmaWVyLlwiICk7XG5cdFx0fVxuXG5cdFx0aWYgKCB0b1Nob3cubGVuZ3RoICkge1xuXHRcdFx0dGhpcy5sb2FkKCB0aGlzLnRhYnMuaW5kZXgoIHRhYiApLCBldmVudCApO1xuXHRcdH1cblx0XHR0aGlzLl90b2dnbGUoIGV2ZW50LCBldmVudERhdGEgKTtcblx0fSxcblxuXHQvLyBIYW5kbGVzIHNob3cvaGlkZSBmb3Igc2VsZWN0aW5nIHRhYnNcblx0X3RvZ2dsZTogZnVuY3Rpb24oIGV2ZW50LCBldmVudERhdGEgKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0dG9TaG93ID0gZXZlbnREYXRhLm5ld1BhbmVsLFxuXHRcdFx0dG9IaWRlID0gZXZlbnREYXRhLm9sZFBhbmVsO1xuXG5cdFx0dGhpcy5ydW5uaW5nID0gdHJ1ZTtcblxuXHRcdGZ1bmN0aW9uIGNvbXBsZXRlKCkge1xuXHRcdFx0dGhhdC5ydW5uaW5nID0gZmFsc2U7XG5cdFx0XHR0aGF0Ll90cmlnZ2VyKCBcImFjdGl2YXRlXCIsIGV2ZW50LCBldmVudERhdGEgKTtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBzaG93KCkge1xuXHRcdFx0dGhhdC5fYWRkQ2xhc3MoIGV2ZW50RGF0YS5uZXdUYWIuY2xvc2VzdCggXCJsaVwiICksIFwidWktdGFicy1hY3RpdmVcIiwgXCJ1aS1zdGF0ZS1hY3RpdmVcIiApO1xuXG5cdFx0XHRpZiAoIHRvU2hvdy5sZW5ndGggJiYgdGhhdC5vcHRpb25zLnNob3cgKSB7XG5cdFx0XHRcdHRoYXQuX3Nob3coIHRvU2hvdywgdGhhdC5vcHRpb25zLnNob3csIGNvbXBsZXRlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0b1Nob3cuc2hvdygpO1xuXHRcdFx0XHRjb21wbGV0ZSgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN0YXJ0IG91dCBieSBoaWRpbmcsIHRoZW4gc2hvd2luZywgdGhlbiBjb21wbGV0aW5nXG5cdFx0aWYgKCB0b0hpZGUubGVuZ3RoICYmIHRoaXMub3B0aW9ucy5oaWRlICkge1xuXHRcdFx0dGhpcy5faGlkZSggdG9IaWRlLCB0aGlzLm9wdGlvbnMuaGlkZSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoYXQuX3JlbW92ZUNsYXNzKCBldmVudERhdGEub2xkVGFiLmNsb3Nlc3QoIFwibGlcIiApLFxuXHRcdFx0XHRcdFwidWktdGFicy1hY3RpdmVcIiwgXCJ1aS1zdGF0ZS1hY3RpdmVcIiApO1xuXHRcdFx0XHRzaG93KCk7XG5cdFx0XHR9ICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3JlbW92ZUNsYXNzKCBldmVudERhdGEub2xkVGFiLmNsb3Nlc3QoIFwibGlcIiApLFxuXHRcdFx0XHRcInVpLXRhYnMtYWN0aXZlXCIsIFwidWktc3RhdGUtYWN0aXZlXCIgKTtcblx0XHRcdHRvSGlkZS5oaWRlKCk7XG5cdFx0XHRzaG93KCk7XG5cdFx0fVxuXG5cdFx0dG9IaWRlLmF0dHIoIFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIgKTtcblx0XHRldmVudERhdGEub2xkVGFiLmF0dHIoIHtcblx0XHRcdFwiYXJpYS1zZWxlY3RlZFwiOiBcImZhbHNlXCIsXG5cdFx0XHRcImFyaWEtZXhwYW5kZWRcIjogXCJmYWxzZVwiXG5cdFx0fSApO1xuXG5cdFx0Ly8gSWYgd2UncmUgc3dpdGNoaW5nIHRhYnMsIHJlbW92ZSB0aGUgb2xkIHRhYiBmcm9tIHRoZSB0YWIgb3JkZXIuXG5cdFx0Ly8gSWYgd2UncmUgb3BlbmluZyBmcm9tIGNvbGxhcHNlZCBzdGF0ZSwgcmVtb3ZlIHRoZSBwcmV2aW91cyB0YWIgZnJvbSB0aGUgdGFiIG9yZGVyLlxuXHRcdC8vIElmIHdlJ3JlIGNvbGxhcHNpbmcsIHRoZW4ga2VlcCB0aGUgY29sbGFwc2luZyB0YWIgaW4gdGhlIHRhYiBvcmRlci5cblx0XHRpZiAoIHRvU2hvdy5sZW5ndGggJiYgdG9IaWRlLmxlbmd0aCApIHtcblx0XHRcdGV2ZW50RGF0YS5vbGRUYWIuYXR0ciggXCJ0YWJJbmRleFwiLCAtMSApO1xuXHRcdH0gZWxzZSBpZiAoIHRvU2hvdy5sZW5ndGggKSB7XG5cdFx0XHR0aGlzLnRhYnMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICQoIHRoaXMgKS5hdHRyKCBcInRhYkluZGV4XCIgKSA9PT0gMDtcblx0XHRcdH0gKVxuXHRcdFx0XHQuYXR0ciggXCJ0YWJJbmRleFwiLCAtMSApO1xuXHRcdH1cblxuXHRcdHRvU2hvdy5hdHRyKCBcImFyaWEtaGlkZGVuXCIsIFwiZmFsc2VcIiApO1xuXHRcdGV2ZW50RGF0YS5uZXdUYWIuYXR0cigge1xuXHRcdFx0XCJhcmlhLXNlbGVjdGVkXCI6IFwidHJ1ZVwiLFxuXHRcdFx0XCJhcmlhLWV4cGFuZGVkXCI6IFwidHJ1ZVwiLFxuXHRcdFx0dGFiSW5kZXg6IDBcblx0XHR9ICk7XG5cdH0sXG5cblx0X2FjdGl2YXRlOiBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0dmFyIGFuY2hvcixcblx0XHRcdGFjdGl2ZSA9IHRoaXMuX2ZpbmRBY3RpdmUoIGluZGV4ICk7XG5cblx0XHQvLyBUcnlpbmcgdG8gYWN0aXZhdGUgdGhlIGFscmVhZHkgYWN0aXZlIHBhbmVsXG5cdFx0aWYgKCBhY3RpdmVbIDAgXSA9PT0gdGhpcy5hY3RpdmVbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBUcnlpbmcgdG8gY29sbGFwc2UsIHNpbXVsYXRlIGEgY2xpY2sgb24gdGhlIGN1cnJlbnQgYWN0aXZlIGhlYWRlclxuXHRcdGlmICggIWFjdGl2ZS5sZW5ndGggKSB7XG5cdFx0XHRhY3RpdmUgPSB0aGlzLmFjdGl2ZTtcblx0XHR9XG5cblx0XHRhbmNob3IgPSBhY3RpdmUuZmluZCggXCIudWktdGFicy1hbmNob3JcIiApWyAwIF07XG5cdFx0dGhpcy5fZXZlbnRIYW5kbGVyKCB7XG5cdFx0XHR0YXJnZXQ6IGFuY2hvcixcblx0XHRcdGN1cnJlbnRUYXJnZXQ6IGFuY2hvcixcblx0XHRcdHByZXZlbnREZWZhdWx0OiAkLm5vb3Bcblx0XHR9ICk7XG5cdH0sXG5cblx0X2ZpbmRBY3RpdmU6IGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRyZXR1cm4gaW5kZXggPT09IGZhbHNlID8gJCgpIDogdGhpcy50YWJzLmVxKCBpbmRleCApO1xuXHR9LFxuXG5cdF9nZXRJbmRleDogZnVuY3Rpb24oIGluZGV4ICkge1xuXG5cdFx0Ly8gbWV0YS1mdW5jdGlvbiB0byBnaXZlIHVzZXJzIG9wdGlvbiB0byBwcm92aWRlIGEgaHJlZiBzdHJpbmcgaW5zdGVhZCBvZiBhIG51bWVyaWNhbCBpbmRleC5cblx0XHRpZiAoIHR5cGVvZiBpbmRleCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGluZGV4ID0gdGhpcy5hbmNob3JzLmluZGV4KCB0aGlzLmFuY2hvcnMuZmlsdGVyKCBcIltocmVmJD0nXCIgK1xuXHRcdFx0XHQkLnVpLmVzY2FwZVNlbGVjdG9yKCBpbmRleCApICsgXCInXVwiICkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5kZXg7XG5cdH0sXG5cblx0X2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggdGhpcy54aHIgKSB7XG5cdFx0XHR0aGlzLnhoci5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdHRoaXMudGFibGlzdFxuXHRcdFx0LnJlbW92ZUF0dHIoIFwicm9sZVwiIClcblx0XHRcdC5vZmYoIHRoaXMuZXZlbnROYW1lc3BhY2UgKTtcblxuXHRcdHRoaXMuYW5jaG9yc1xuXHRcdFx0LnJlbW92ZUF0dHIoIFwicm9sZSB0YWJJbmRleFwiIClcblx0XHRcdC5yZW1vdmVVbmlxdWVJZCgpO1xuXG5cdFx0dGhpcy50YWJzLmFkZCggdGhpcy5wYW5lbHMgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggJC5kYXRhKCB0aGlzLCBcInVpLXRhYnMtZGVzdHJveVwiICkgKSB7XG5cdFx0XHRcdCQoIHRoaXMgKS5yZW1vdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCQoIHRoaXMgKS5yZW1vdmVBdHRyKCBcInJvbGUgdGFiSW5kZXggXCIgK1xuXHRcdFx0XHRcdFwiYXJpYS1saXZlIGFyaWEtYnVzeSBhcmlhLXNlbGVjdGVkIGFyaWEtbGFiZWxsZWRieSBhcmlhLWhpZGRlbiBhcmlhLWV4cGFuZGVkXCIgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHR0aGlzLnRhYnMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgbGkgPSAkKCB0aGlzICksXG5cdFx0XHRcdHByZXYgPSBsaS5kYXRhKCBcInVpLXRhYnMtYXJpYS1jb250cm9sc1wiICk7XG5cdFx0XHRpZiAoIHByZXYgKSB7XG5cdFx0XHRcdGxpXG5cdFx0XHRcdFx0LmF0dHIoIFwiYXJpYS1jb250cm9sc1wiLCBwcmV2IClcblx0XHRcdFx0XHQucmVtb3ZlRGF0YSggXCJ1aS10YWJzLWFyaWEtY29udHJvbHNcIiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bGkucmVtb3ZlQXR0ciggXCJhcmlhLWNvbnRyb2xzXCIgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHR0aGlzLnBhbmVscy5zaG93KCk7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSAhPT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHR0aGlzLnBhbmVscy5jc3MoIFwiaGVpZ2h0XCIsIFwiXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0ZW5hYmxlOiBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0dmFyIGRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuXHRcdGlmICggZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGRpc2FibGVkID0gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGluZGV4ID0gdGhpcy5fZ2V0SW5kZXgoIGluZGV4ICk7XG5cdFx0XHRpZiAoICQuaXNBcnJheSggZGlzYWJsZWQgKSApIHtcblx0XHRcdFx0ZGlzYWJsZWQgPSAkLm1hcCggZGlzYWJsZWQsIGZ1bmN0aW9uKCBudW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bSAhPT0gaW5kZXggPyBudW0gOiBudWxsO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkaXNhYmxlZCA9ICQubWFwKCB0aGlzLnRhYnMsIGZ1bmN0aW9uKCBsaSwgbnVtICkge1xuXHRcdFx0XHRcdHJldHVybiBudW0gIT09IGluZGV4ID8gbnVtIDogbnVsbDtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCggZGlzYWJsZWQgKTtcblx0fSxcblxuXHRkaXNhYmxlOiBmdW5jdGlvbiggaW5kZXggKSB7XG5cdFx0dmFyIGRpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuXHRcdGlmICggZGlzYWJsZWQgPT09IHRydWUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBpbmRleCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0ZGlzYWJsZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbmRleCA9IHRoaXMuX2dldEluZGV4KCBpbmRleCApO1xuXHRcdFx0aWYgKCAkLmluQXJyYXkoIGluZGV4LCBkaXNhYmxlZCApICE9PSAtMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAkLmlzQXJyYXkoIGRpc2FibGVkICkgKSB7XG5cdFx0XHRcdGRpc2FibGVkID0gJC5tZXJnZSggWyBpbmRleCBdLCBkaXNhYmxlZCApLnNvcnQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRpc2FibGVkID0gWyBpbmRleCBdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCggZGlzYWJsZWQgKTtcblx0fSxcblxuXHRsb2FkOiBmdW5jdGlvbiggaW5kZXgsIGV2ZW50ICkge1xuXHRcdGluZGV4ID0gdGhpcy5fZ2V0SW5kZXgoIGluZGV4ICk7XG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0dGFiID0gdGhpcy50YWJzLmVxKCBpbmRleCApLFxuXHRcdFx0YW5jaG9yID0gdGFiLmZpbmQoIFwiLnVpLXRhYnMtYW5jaG9yXCIgKSxcblx0XHRcdHBhbmVsID0gdGhpcy5fZ2V0UGFuZWxGb3JUYWIoIHRhYiApLFxuXHRcdFx0ZXZlbnREYXRhID0ge1xuXHRcdFx0XHR0YWI6IHRhYixcblx0XHRcdFx0cGFuZWw6IHBhbmVsXG5cdFx0XHR9LFxuXHRcdFx0Y29tcGxldGUgPSBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHR0aGF0LnBhbmVscy5zdG9wKCBmYWxzZSwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhhdC5fcmVtb3ZlQ2xhc3MoIHRhYiwgXCJ1aS10YWJzLWxvYWRpbmdcIiApO1xuXHRcdFx0XHRwYW5lbC5yZW1vdmVBdHRyKCBcImFyaWEtYnVzeVwiICk7XG5cblx0XHRcdFx0aWYgKCBqcVhIUiA9PT0gdGhhdC54aHIgKSB7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoYXQueGhyO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Ly8gTm90IHJlbW90ZVxuXHRcdGlmICggdGhpcy5faXNMb2NhbCggYW5jaG9yWyAwIF0gKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnhociA9ICQuYWpheCggdGhpcy5fYWpheFNldHRpbmdzKCBhbmNob3IsIGV2ZW50LCBldmVudERhdGEgKSApO1xuXG5cdFx0Ly8gU3VwcG9ydDogalF1ZXJ5IDwxLjhcblx0XHQvLyBqUXVlcnkgPDEuOCByZXR1cm5zIGZhbHNlIGlmIHRoZSByZXF1ZXN0IGlzIGNhbmNlbGVkIGluIGJlZm9yZVNlbmQsXG5cdFx0Ly8gYnV0IGFzIG9mIDEuOCwgJC5hamF4KCkgYWx3YXlzIHJldHVybnMgYSBqcVhIUiBvYmplY3QuXG5cdFx0aWYgKCB0aGlzLnhociAmJiB0aGlzLnhoci5zdGF0dXNUZXh0ICE9PSBcImNhbmNlbGVkXCIgKSB7XG5cdFx0XHR0aGlzLl9hZGRDbGFzcyggdGFiLCBcInVpLXRhYnMtbG9hZGluZ1wiICk7XG5cdFx0XHRwYW5lbC5hdHRyKCBcImFyaWEtYnVzeVwiLCBcInRydWVcIiApO1xuXG5cdFx0XHR0aGlzLnhoclxuXHRcdFx0XHQuZG9uZSggZnVuY3Rpb24oIHJlc3BvbnNlLCBzdGF0dXMsIGpxWEhSICkge1xuXG5cdFx0XHRcdFx0Ly8gc3VwcG9ydDogalF1ZXJ5IDwxLjhcblx0XHRcdFx0XHQvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMTc3OFxuXHRcdFx0XHRcdHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cGFuZWwuaHRtbCggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHRcdHRoYXQuX3RyaWdnZXIoIFwibG9hZFwiLCBldmVudCwgZXZlbnREYXRhICk7XG5cblx0XHRcdFx0XHRcdGNvbXBsZXRlKCBqcVhIUiwgc3RhdHVzICk7XG5cdFx0XHRcdFx0fSwgMSApO1xuXHRcdFx0XHR9IClcblx0XHRcdFx0LmZhaWwoIGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xuXG5cdFx0XHRcdFx0Ly8gc3VwcG9ydDogalF1ZXJ5IDwxLjhcblx0XHRcdFx0XHQvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMTc3OFxuXHRcdFx0XHRcdHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0Y29tcGxldGUoIGpxWEhSLCBzdGF0dXMgKTtcblx0XHRcdFx0XHR9LCAxICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0X2FqYXhTZXR0aW5nczogZnVuY3Rpb24oIGFuY2hvciwgZXZlbnQsIGV2ZW50RGF0YSApIHtcblx0XHR2YXIgdGhhdCA9IHRoaXM7XG5cdFx0cmV0dXJuIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPDExIG9ubHlcblx0XHRcdC8vIFN0cmlwIGFueSBoYXNoIHRoYXQgZXhpc3RzIHRvIHByZXZlbnQgZXJyb3JzIHdpdGggdGhlIEFqYXggcmVxdWVzdFxuXHRcdFx0dXJsOiBhbmNob3IuYXR0ciggXCJocmVmXCIgKS5yZXBsYWNlKCAvIy4qJC8sIFwiXCIgKSxcblx0XHRcdGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCBqcVhIUiwgc2V0dGluZ3MgKSB7XG5cdFx0XHRcdHJldHVybiB0aGF0Ll90cmlnZ2VyKCBcImJlZm9yZUxvYWRcIiwgZXZlbnQsXG5cdFx0XHRcdFx0JC5leHRlbmQoIHsganFYSFI6IGpxWEhSLCBhamF4U2V0dGluZ3M6IHNldHRpbmdzIH0sIGV2ZW50RGF0YSApICk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fSxcblxuXHRfZ2V0UGFuZWxGb3JUYWI6IGZ1bmN0aW9uKCB0YWIgKSB7XG5cdFx0dmFyIGlkID0gJCggdGFiICkuYXR0ciggXCJhcmlhLWNvbnRyb2xzXCIgKTtcblx0XHRyZXR1cm4gdGhpcy5lbGVtZW50LmZpbmQoIHRoaXMuX3Nhbml0aXplU2VsZWN0b3IoIFwiI1wiICsgaWQgKSApO1xuXHR9XG59ICk7XG5cbi8vIERFUFJFQ0FURURcbi8vIFRPRE86IFN3aXRjaCByZXR1cm4gYmFjayB0byB3aWRnZXQgZGVjbGFyYXRpb24gYXQgdG9wIG9mIGZpbGUgd2hlbiB0aGlzIGlzIHJlbW92ZWRcbmlmICggJC51aUJhY2tDb21wYXQgIT09IGZhbHNlICkge1xuXG5cdC8vIEJhY2tjb21wYXQgZm9yIHVpLXRhYiBjbGFzcyAobm93IHVpLXRhYnMtdGFiKVxuXHQkLndpZGdldCggXCJ1aS50YWJzXCIsICQudWkudGFicywge1xuXHRcdF9wcm9jZXNzVGFiczogZnVuY3Rpb24oKSB7XG5cdFx0XHR0aGlzLl9zdXBlckFwcGx5KCBhcmd1bWVudHMgKTtcblx0XHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLnRhYnMsIFwidWktdGFiXCIgKTtcblx0XHR9XG5cdH0gKTtcbn1cblxudmFyIHdpZGdldHNUYWJzID0gJC51aS50YWJzO1xuXG5cbi8qIVxuICogalF1ZXJ5IFVJIFRvb2x0aXAgMS4xMi4xXG4gKiBodHRwOi8vanF1ZXJ5dWkuY29tXG4gKlxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqL1xuXG4vLz4+bGFiZWw6IFRvb2x0aXBcbi8vPj5ncm91cDogV2lkZ2V0c1xuLy8+PmRlc2NyaXB0aW9uOiBTaG93cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBhbnkgZWxlbWVudCBvbiBob3ZlciBvciBmb2N1cy5cbi8vPj5kb2NzOiBodHRwOi8vYXBpLmpxdWVyeXVpLmNvbS90b29sdGlwL1xuLy8+PmRlbW9zOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Rvb2x0aXAvXG4vLz4+Y3NzLnN0cnVjdHVyZTogLi4vLi4vdGhlbWVzL2Jhc2UvY29yZS5jc3Ncbi8vPj5jc3Muc3RydWN0dXJlOiAuLi8uLi90aGVtZXMvYmFzZS90b29sdGlwLmNzc1xuLy8+PmNzcy50aGVtZTogLi4vLi4vdGhlbWVzL2Jhc2UvdGhlbWUuY3NzXG5cblxuXG4kLndpZGdldCggXCJ1aS50b29sdGlwXCIsIHtcblx0dmVyc2lvbjogXCIxLjEyLjFcIixcblx0b3B0aW9uczoge1xuXHRcdGNsYXNzZXM6IHtcblx0XHRcdFwidWktdG9vbHRpcFwiOiBcInVpLWNvcm5lci1hbGwgdWktd2lkZ2V0LXNoYWRvd1wiXG5cdFx0fSxcblx0XHRjb250ZW50OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gc3VwcG9ydDogSUU8OSwgT3BlcmEgaW4galF1ZXJ5IDwxLjdcblx0XHRcdC8vIC50ZXh0KCkgY2FuJ3QgYWNjZXB0IHVuZGVmaW5lZCwgc28gY29lcmNlIHRvIGEgc3RyaW5nXG5cdFx0XHR2YXIgdGl0bGUgPSAkKCB0aGlzICkuYXR0ciggXCJ0aXRsZVwiICkgfHwgXCJcIjtcblxuXHRcdFx0Ly8gRXNjYXBlIHRpdGxlLCBzaW5jZSB3ZSdyZSBnb2luZyBmcm9tIGFuIGF0dHJpYnV0ZSB0byByYXcgSFRNTFxuXHRcdFx0cmV0dXJuICQoIFwiPGE+XCIgKS50ZXh0KCB0aXRsZSApLmh0bWwoKTtcblx0XHR9LFxuXHRcdGhpZGU6IHRydWUsXG5cblx0XHQvLyBEaXNhYmxlZCBlbGVtZW50cyBoYXZlIGluY29uc2lzdGVudCBiZWhhdmlvciBhY3Jvc3MgYnJvd3NlcnMgKCM4NjYxKVxuXHRcdGl0ZW1zOiBcIlt0aXRsZV06bm90KFtkaXNhYmxlZF0pXCIsXG5cdFx0cG9zaXRpb246IHtcblx0XHRcdG15OiBcImxlZnQgdG9wKzE1XCIsXG5cdFx0XHRhdDogXCJsZWZ0IGJvdHRvbVwiLFxuXHRcdFx0Y29sbGlzaW9uOiBcImZsaXBmaXQgZmxpcFwiXG5cdFx0fSxcblx0XHRzaG93OiB0cnVlLFxuXHRcdHRyYWNrOiBmYWxzZSxcblxuXHRcdC8vIENhbGxiYWNrc1xuXHRcdGNsb3NlOiBudWxsLFxuXHRcdG9wZW46IG51bGxcblx0fSxcblxuXHRfYWRkRGVzY3JpYmVkQnk6IGZ1bmN0aW9uKCBlbGVtLCBpZCApIHtcblx0XHR2YXIgZGVzY3JpYmVkYnkgPSAoIGVsZW0uYXR0ciggXCJhcmlhLWRlc2NyaWJlZGJ5XCIgKSB8fCBcIlwiICkuc3BsaXQoIC9cXHMrLyApO1xuXHRcdGRlc2NyaWJlZGJ5LnB1c2goIGlkICk7XG5cdFx0ZWxlbVxuXHRcdFx0LmRhdGEoIFwidWktdG9vbHRpcC1pZFwiLCBpZCApXG5cdFx0XHQuYXR0ciggXCJhcmlhLWRlc2NyaWJlZGJ5XCIsICQudHJpbSggZGVzY3JpYmVkYnkuam9pbiggXCIgXCIgKSApICk7XG5cdH0sXG5cblx0X3JlbW92ZURlc2NyaWJlZEJ5OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgaWQgPSBlbGVtLmRhdGEoIFwidWktdG9vbHRpcC1pZFwiICksXG5cdFx0XHRkZXNjcmliZWRieSA9ICggZWxlbS5hdHRyKCBcImFyaWEtZGVzY3JpYmVkYnlcIiApIHx8IFwiXCIgKS5zcGxpdCggL1xccysvICksXG5cdFx0XHRpbmRleCA9ICQuaW5BcnJheSggaWQsIGRlc2NyaWJlZGJ5ICk7XG5cblx0XHRpZiAoIGluZGV4ICE9PSAtMSApIHtcblx0XHRcdGRlc2NyaWJlZGJ5LnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHR9XG5cblx0XHRlbGVtLnJlbW92ZURhdGEoIFwidWktdG9vbHRpcC1pZFwiICk7XG5cdFx0ZGVzY3JpYmVkYnkgPSAkLnRyaW0oIGRlc2NyaWJlZGJ5LmpvaW4oIFwiIFwiICkgKTtcblx0XHRpZiAoIGRlc2NyaWJlZGJ5ICkge1xuXHRcdFx0ZWxlbS5hdHRyKCBcImFyaWEtZGVzY3JpYmVkYnlcIiwgZGVzY3JpYmVkYnkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZWxlbS5yZW1vdmVBdHRyKCBcImFyaWEtZGVzY3JpYmVkYnlcIiApO1xuXHRcdH1cblx0fSxcblxuXHRfY3JlYXRlOiBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9vbigge1xuXHRcdFx0bW91c2VvdmVyOiBcIm9wZW5cIixcblx0XHRcdGZvY3VzaW46IFwib3BlblwiXG5cdFx0fSApO1xuXG5cdFx0Ly8gSURzIG9mIGdlbmVyYXRlZCB0b29sdGlwcywgbmVlZGVkIGZvciBkZXN0cm95XG5cdFx0dGhpcy50b29sdGlwcyA9IHt9O1xuXG5cdFx0Ly8gSURzIG9mIHBhcmVudCB0b29sdGlwcyB3aGVyZSB3ZSByZW1vdmVkIHRoZSB0aXRsZSBhdHRyaWJ1dGVcblx0XHR0aGlzLnBhcmVudHMgPSB7fTtcblxuXHRcdC8vIEFwcGVuZCB0aGUgYXJpYS1saXZlIHJlZ2lvbiBzbyB0b29sdGlwcyBhbm5vdW5jZSBjb3JyZWN0bHlcblx0XHR0aGlzLmxpdmVSZWdpb24gPSAkKCBcIjxkaXY+XCIgKVxuXHRcdFx0LmF0dHIoIHtcblx0XHRcdFx0cm9sZTogXCJsb2dcIixcblx0XHRcdFx0XCJhcmlhLWxpdmVcIjogXCJhc3NlcnRpdmVcIixcblx0XHRcdFx0XCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zXCJcblx0XHRcdH0gKVxuXHRcdFx0LmFwcGVuZFRvKCB0aGlzLmRvY3VtZW50WyAwIF0uYm9keSApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0aGlzLmxpdmVSZWdpb24sIG51bGwsIFwidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlXCIgKTtcblxuXHRcdHRoaXMuZGlzYWJsZWRUaXRsZXMgPSAkKCBbXSApO1xuXHR9LFxuXG5cdF9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciB0aGF0ID0gdGhpcztcblxuXHRcdHRoaXMuX3N1cGVyKCBrZXksIHZhbHVlICk7XG5cblx0XHRpZiAoIGtleSA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHQkLmVhY2goIHRoaXMudG9vbHRpcHMsIGZ1bmN0aW9uKCBpZCwgdG9vbHRpcERhdGEgKSB7XG5cdFx0XHRcdHRoYXQuX3VwZGF0ZUNvbnRlbnQoIHRvb2x0aXBEYXRhLmVsZW1lbnQgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cdH0sXG5cblx0X3NldE9wdGlvbkRpc2FibGVkOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dGhpc1sgdmFsdWUgPyBcIl9kaXNhYmxlXCIgOiBcIl9lbmFibGVcIiBdKCk7XG5cdH0sXG5cblx0X2Rpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0aGF0ID0gdGhpcztcblxuXHRcdC8vIENsb3NlIG9wZW4gdG9vbHRpcHNcblx0XHQkLmVhY2goIHRoaXMudG9vbHRpcHMsIGZ1bmN0aW9uKCBpZCwgdG9vbHRpcERhdGEgKSB7XG5cdFx0XHR2YXIgZXZlbnQgPSAkLkV2ZW50KCBcImJsdXJcIiApO1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCA9IHRvb2x0aXBEYXRhLmVsZW1lbnRbIDAgXTtcblx0XHRcdHRoYXQuY2xvc2UoIGV2ZW50LCB0cnVlICk7XG5cdFx0fSApO1xuXG5cdFx0Ly8gUmVtb3ZlIHRpdGxlIGF0dHJpYnV0ZXMgdG8gcHJldmVudCBuYXRpdmUgdG9vbHRpcHNcblx0XHR0aGlzLmRpc2FibGVkVGl0bGVzID0gdGhpcy5kaXNhYmxlZFRpdGxlcy5hZGQoXG5cdFx0XHR0aGlzLmVsZW1lbnQuZmluZCggdGhpcy5vcHRpb25zLml0ZW1zICkuYWRkQmFjaygpXG5cdFx0XHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHZhciBlbGVtZW50ID0gJCggdGhpcyApO1xuXHRcdFx0XHRcdGlmICggZWxlbWVudC5pcyggXCJbdGl0bGVdXCIgKSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdC5kYXRhKCBcInVpLXRvb2x0aXAtdGl0bGVcIiwgZWxlbWVudC5hdHRyKCBcInRpdGxlXCIgKSApXG5cdFx0XHRcdFx0XHRcdC5yZW1vdmVBdHRyKCBcInRpdGxlXCIgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKVxuXHRcdCk7XG5cdH0sXG5cblx0X2VuYWJsZTogZnVuY3Rpb24oKSB7XG5cblx0XHQvLyByZXN0b3JlIHRpdGxlIGF0dHJpYnV0ZXNcblx0XHR0aGlzLmRpc2FibGVkVGl0bGVzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGVsZW1lbnQgPSAkKCB0aGlzICk7XG5cdFx0XHRpZiAoIGVsZW1lbnQuZGF0YSggXCJ1aS10b29sdGlwLXRpdGxlXCIgKSApIHtcblx0XHRcdFx0ZWxlbWVudC5hdHRyKCBcInRpdGxlXCIsIGVsZW1lbnQuZGF0YSggXCJ1aS10b29sdGlwLXRpdGxlXCIgKSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0XHR0aGlzLmRpc2FibGVkVGl0bGVzID0gJCggW10gKTtcblx0fSxcblxuXHRvcGVuOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0dGFyZ2V0ID0gJCggZXZlbnQgPyBldmVudC50YXJnZXQgOiB0aGlzLmVsZW1lbnQgKVxuXG5cdFx0XHRcdC8vIHdlIG5lZWQgY2xvc2VzdCBoZXJlIGR1ZSB0byBtb3VzZW92ZXIgYnViYmxpbmcsXG5cdFx0XHRcdC8vIGJ1dCBhbHdheXMgcG9pbnRpbmcgYXQgdGhlIHNhbWUgZXZlbnQgdGFyZ2V0XG5cdFx0XHRcdC5jbG9zZXN0KCB0aGlzLm9wdGlvbnMuaXRlbXMgKTtcblxuXHRcdC8vIE5vIGVsZW1lbnQgdG8gc2hvdyBhIHRvb2x0aXAgZm9yIG9yIHRoZSB0b29sdGlwIGlzIGFscmVhZHkgb3BlblxuXHRcdGlmICggIXRhcmdldC5sZW5ndGggfHwgdGFyZ2V0LmRhdGEoIFwidWktdG9vbHRpcC1pZFwiICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0YXJnZXQuYXR0ciggXCJ0aXRsZVwiICkgKSB7XG5cdFx0XHR0YXJnZXQuZGF0YSggXCJ1aS10b29sdGlwLXRpdGxlXCIsIHRhcmdldC5hdHRyKCBcInRpdGxlXCIgKSApO1xuXHRcdH1cblxuXHRcdHRhcmdldC5kYXRhKCBcInVpLXRvb2x0aXAtb3BlblwiLCB0cnVlICk7XG5cblx0XHQvLyBLaWxsIHBhcmVudCB0b29sdGlwcywgY3VzdG9tIG9yIG5hdGl2ZSwgZm9yIGhvdmVyXG5cdFx0aWYgKCBldmVudCAmJiBldmVudC50eXBlID09PSBcIm1vdXNlb3ZlclwiICkge1xuXHRcdFx0dGFyZ2V0LnBhcmVudHMoKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHBhcmVudCA9ICQoIHRoaXMgKSxcblx0XHRcdFx0XHRibHVyRXZlbnQ7XG5cdFx0XHRcdGlmICggcGFyZW50LmRhdGEoIFwidWktdG9vbHRpcC1vcGVuXCIgKSApIHtcblx0XHRcdFx0XHRibHVyRXZlbnQgPSAkLkV2ZW50KCBcImJsdXJcIiApO1xuXHRcdFx0XHRcdGJsdXJFdmVudC50YXJnZXQgPSBibHVyRXZlbnQuY3VycmVudFRhcmdldCA9IHRoaXM7XG5cdFx0XHRcdFx0dGhhdC5jbG9zZSggYmx1ckV2ZW50LCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBwYXJlbnQuYXR0ciggXCJ0aXRsZVwiICkgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnVuaXF1ZUlkKCk7XG5cdFx0XHRcdFx0dGhhdC5wYXJlbnRzWyB0aGlzLmlkIF0gPSB7XG5cdFx0XHRcdFx0XHRlbGVtZW50OiB0aGlzLFxuXHRcdFx0XHRcdFx0dGl0bGU6IHBhcmVudC5hdHRyKCBcInRpdGxlXCIgKVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0cGFyZW50LmF0dHIoIFwidGl0bGVcIiwgXCJcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fcmVnaXN0ZXJDbG9zZUhhbmRsZXJzKCBldmVudCwgdGFyZ2V0ICk7XG5cdFx0dGhpcy5fdXBkYXRlQ29udGVudCggdGFyZ2V0LCBldmVudCApO1xuXHR9LFxuXG5cdF91cGRhdGVDb250ZW50OiBmdW5jdGlvbiggdGFyZ2V0LCBldmVudCApIHtcblx0XHR2YXIgY29udGVudCxcblx0XHRcdGNvbnRlbnRPcHRpb24gPSB0aGlzLm9wdGlvbnMuY29udGVudCxcblx0XHRcdHRoYXQgPSB0aGlzLFxuXHRcdFx0ZXZlbnRUeXBlID0gZXZlbnQgPyBldmVudC50eXBlIDogbnVsbDtcblxuXHRcdGlmICggdHlwZW9mIGNvbnRlbnRPcHRpb24gPT09IFwic3RyaW5nXCIgfHwgY29udGVudE9wdGlvbi5ub2RlVHlwZSB8fFxuXHRcdFx0XHRjb250ZW50T3B0aW9uLmpxdWVyeSApIHtcblx0XHRcdHJldHVybiB0aGlzLl9vcGVuKCBldmVudCwgdGFyZ2V0LCBjb250ZW50T3B0aW9uICk7XG5cdFx0fVxuXG5cdFx0Y29udGVudCA9IGNvbnRlbnRPcHRpb24uY2FsbCggdGFyZ2V0WyAwIF0sIGZ1bmN0aW9uKCByZXNwb25zZSApIHtcblxuXHRcdFx0Ly8gSUUgbWF5IGluc3RhbnRseSBzZXJ2ZSBhIGNhY2hlZCByZXNwb25zZSBmb3IgYWpheCByZXF1ZXN0c1xuXHRcdFx0Ly8gZGVsYXkgdGhpcyBjYWxsIHRvIF9vcGVuIHNvIHRoZSBvdGhlciBjYWxsIHRvIF9vcGVuIHJ1bnMgZmlyc3Rcblx0XHRcdHRoYXQuX2RlbGF5KCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBJZ25vcmUgYXN5bmMgcmVzcG9uc2UgaWYgdG9vbHRpcCB3YXMgY2xvc2VkIGFscmVhZHlcblx0XHRcdFx0aWYgKCAhdGFyZ2V0LmRhdGEoIFwidWktdG9vbHRpcC1vcGVuXCIgKSApIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBKUXVlcnkgY3JlYXRlcyBhIHNwZWNpYWwgZXZlbnQgZm9yIGZvY3VzaW4gd2hlbiBpdCBkb2Vzbid0XG5cdFx0XHRcdC8vIGV4aXN0IG5hdGl2ZWx5LiBUbyBpbXByb3ZlIHBlcmZvcm1hbmNlLCB0aGUgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdC8vIG9iamVjdCBpcyByZXVzZWQgYW5kIHRoZSB0eXBlIGlzIGNoYW5nZWQuIFRoZXJlZm9yZSwgd2UgY2FuJ3Rcblx0XHRcdFx0Ly8gcmVseSBvbiB0aGUgdHlwZSBiZWluZyBjb3JyZWN0IGFmdGVyIHRoZSBldmVudCBmaW5pc2hlZFxuXHRcdFx0XHQvLyBidWJibGluZywgc28gd2Ugc2V0IGl0IGJhY2sgdG8gdGhlIHByZXZpb3VzIHZhbHVlLiAoIzg3NDApXG5cdFx0XHRcdGlmICggZXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQudHlwZSA9IGV2ZW50VHlwZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9vcGVuKCBldmVudCwgdGFyZ2V0LCByZXNwb25zZSApO1xuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0XHRpZiAoIGNvbnRlbnQgKSB7XG5cdFx0XHR0aGlzLl9vcGVuKCBldmVudCwgdGFyZ2V0LCBjb250ZW50ICk7XG5cdFx0fVxuXHR9LFxuXG5cdF9vcGVuOiBmdW5jdGlvbiggZXZlbnQsIHRhcmdldCwgY29udGVudCApIHtcblx0XHR2YXIgdG9vbHRpcERhdGEsIHRvb2x0aXAsIGRlbGF5ZWRTaG93LCBhMTF5Q29udGVudCxcblx0XHRcdHBvc2l0aW9uT3B0aW9uID0gJC5leHRlbmQoIHt9LCB0aGlzLm9wdGlvbnMucG9zaXRpb24gKTtcblxuXHRcdGlmICggIWNvbnRlbnQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ29udGVudCBjYW4gYmUgdXBkYXRlZCBtdWx0aXBsZSB0aW1lcy4gSWYgdGhlIHRvb2x0aXAgYWxyZWFkeVxuXHRcdC8vIGV4aXN0cywgdGhlbiBqdXN0IHVwZGF0ZSB0aGUgY29udGVudCBhbmQgYmFpbC5cblx0XHR0b29sdGlwRGF0YSA9IHRoaXMuX2ZpbmQoIHRhcmdldCApO1xuXHRcdGlmICggdG9vbHRpcERhdGEgKSB7XG5cdFx0XHR0b29sdGlwRGF0YS50b29sdGlwLmZpbmQoIFwiLnVpLXRvb2x0aXAtY29udGVudFwiICkuaHRtbCggY29udGVudCApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGhhdmUgYSB0aXRsZSwgY2xlYXIgaXQgdG8gcHJldmVudCB0aGUgbmF0aXZlIHRvb2x0aXBcblx0XHQvLyB3ZSBoYXZlIHRvIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGRlZmluaW5nIGEgdGl0bGUgaWYgbm9uZSBleGlzdHNcblx0XHQvLyAod2UgZG9uJ3Qgd2FudCB0byBjYXVzZSBhbiBlbGVtZW50IHRvIHN0YXJ0IG1hdGNoaW5nIFt0aXRsZV0pXG5cdFx0Ly9cblx0XHQvLyBXZSB1c2UgcmVtb3ZlQXR0ciBvbmx5IGZvciBrZXkgZXZlbnRzLCB0byBhbGxvdyBJRSB0byBleHBvcnQgdGhlIGNvcnJlY3Rcblx0XHQvLyBhY2Nlc3NpYmxlIGF0dHJpYnV0ZXMuIEZvciBtb3VzZSBldmVudHMsIHNldCB0byBlbXB0eSBzdHJpbmcgdG8gYXZvaWRcblx0XHQvLyBuYXRpdmUgdG9vbHRpcCBzaG93aW5nIHVwIChoYXBwZW5zIG9ubHkgd2hlbiByZW1vdmluZyBpbnNpZGUgbW91c2VvdmVyKS5cblx0XHRpZiAoIHRhcmdldC5pcyggXCJbdGl0bGVdXCIgKSApIHtcblx0XHRcdGlmICggZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gXCJtb3VzZW92ZXJcIiApIHtcblx0XHRcdFx0dGFyZ2V0LmF0dHIoIFwidGl0bGVcIiwgXCJcIiApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGFyZ2V0LnJlbW92ZUF0dHIoIFwidGl0bGVcIiApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRvb2x0aXBEYXRhID0gdGhpcy5fdG9vbHRpcCggdGFyZ2V0ICk7XG5cdFx0dG9vbHRpcCA9IHRvb2x0aXBEYXRhLnRvb2x0aXA7XG5cdFx0dGhpcy5fYWRkRGVzY3JpYmVkQnkoIHRhcmdldCwgdG9vbHRpcC5hdHRyKCBcImlkXCIgKSApO1xuXHRcdHRvb2x0aXAuZmluZCggXCIudWktdG9vbHRpcC1jb250ZW50XCIgKS5odG1sKCBjb250ZW50ICk7XG5cblx0XHQvLyBTdXBwb3J0OiBWb2ljZW92ZXIgb24gT1MgWCwgSkFXUyBvbiBJRSA8PSA5XG5cdFx0Ly8gSkFXUyBhbm5vdW5jZXMgZGVsZXRpb25zIGV2ZW4gd2hlbiBhcmlhLXJlbGV2YW50PVwiYWRkaXRpb25zXCJcblx0XHQvLyBWb2ljZW92ZXIgd2lsbCBzb21ldGltZXMgcmUtcmVhZCB0aGUgZW50aXJlIGxvZyByZWdpb24ncyBjb250ZW50cyBmcm9tIHRoZSBiZWdpbm5pbmdcblx0XHR0aGlzLmxpdmVSZWdpb24uY2hpbGRyZW4oKS5oaWRlKCk7XG5cdFx0YTExeUNvbnRlbnQgPSAkKCBcIjxkaXY+XCIgKS5odG1sKCB0b29sdGlwLmZpbmQoIFwiLnVpLXRvb2x0aXAtY29udGVudFwiICkuaHRtbCgpICk7XG5cdFx0YTExeUNvbnRlbnQucmVtb3ZlQXR0ciggXCJuYW1lXCIgKS5maW5kKCBcIltuYW1lXVwiICkucmVtb3ZlQXR0ciggXCJuYW1lXCIgKTtcblx0XHRhMTF5Q29udGVudC5yZW1vdmVBdHRyKCBcImlkXCIgKS5maW5kKCBcIltpZF1cIiApLnJlbW92ZUF0dHIoIFwiaWRcIiApO1xuXHRcdGExMXlDb250ZW50LmFwcGVuZFRvKCB0aGlzLmxpdmVSZWdpb24gKTtcblxuXHRcdGZ1bmN0aW9uIHBvc2l0aW9uKCBldmVudCApIHtcblx0XHRcdHBvc2l0aW9uT3B0aW9uLm9mID0gZXZlbnQ7XG5cdFx0XHRpZiAoIHRvb2x0aXAuaXMoIFwiOmhpZGRlblwiICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRvb2x0aXAucG9zaXRpb24oIHBvc2l0aW9uT3B0aW9uICk7XG5cdFx0fVxuXHRcdGlmICggdGhpcy5vcHRpb25zLnRyYWNrICYmIGV2ZW50ICYmIC9ebW91c2UvLnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHRoaXMuX29uKCB0aGlzLmRvY3VtZW50LCB7XG5cdFx0XHRcdG1vdXNlbW92ZTogcG9zaXRpb25cblx0XHRcdH0gKTtcblxuXHRcdFx0Ly8gdHJpZ2dlciBvbmNlIHRvIG92ZXJyaWRlIGVsZW1lbnQtcmVsYXRpdmUgcG9zaXRpb25pbmdcblx0XHRcdHBvc2l0aW9uKCBldmVudCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0b29sdGlwLnBvc2l0aW9uKCAkLmV4dGVuZCgge1xuXHRcdFx0XHRvZjogdGFyZ2V0XG5cdFx0XHR9LCB0aGlzLm9wdGlvbnMucG9zaXRpb24gKSApO1xuXHRcdH1cblxuXHRcdHRvb2x0aXAuaGlkZSgpO1xuXG5cdFx0dGhpcy5fc2hvdyggdG9vbHRpcCwgdGhpcy5vcHRpb25zLnNob3cgKTtcblxuXHRcdC8vIEhhbmRsZSB0cmFja2luZyB0b29sdGlwcyB0aGF0IGFyZSBzaG93biB3aXRoIGEgZGVsYXkgKCM4NjQ0KS4gQXMgc29vblxuXHRcdC8vIGFzIHRoZSB0b29sdGlwIGlzIHZpc2libGUsIHBvc2l0aW9uIHRoZSB0b29sdGlwIHVzaW5nIHRoZSBtb3N0IHJlY2VudFxuXHRcdC8vIGV2ZW50LlxuXHRcdC8vIEFkZHMgdGhlIGNoZWNrIHRvIGFkZCB0aGUgdGltZXJzIG9ubHkgd2hlbiBib3RoIGRlbGF5IGFuZCB0cmFjayBvcHRpb25zIGFyZSBzZXQgKCMxNDY4Milcblx0XHRpZiAoIHRoaXMub3B0aW9ucy50cmFjayAmJiB0aGlzLm9wdGlvbnMuc2hvdyAmJiB0aGlzLm9wdGlvbnMuc2hvdy5kZWxheSApIHtcblx0XHRcdGRlbGF5ZWRTaG93ID0gdGhpcy5kZWxheWVkU2hvdyA9IHNldEludGVydmFsKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0b29sdGlwLmlzKCBcIjp2aXNpYmxlXCIgKSApIHtcblx0XHRcdFx0XHRwb3NpdGlvbiggcG9zaXRpb25PcHRpb24ub2YgKTtcblx0XHRcdFx0XHRjbGVhckludGVydmFsKCBkZWxheWVkU2hvdyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAkLmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fdHJpZ2dlciggXCJvcGVuXCIsIGV2ZW50LCB7IHRvb2x0aXA6IHRvb2x0aXAgfSApO1xuXHR9LFxuXG5cdF9yZWdpc3RlckNsb3NlSGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgdGFyZ2V0ICkge1xuXHRcdHZhciBldmVudHMgPSB7XG5cdFx0XHRrZXl1cDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0XHRpZiAoIGV2ZW50LmtleUNvZGUgPT09ICQudWkua2V5Q29kZS5FU0NBUEUgKSB7XG5cdFx0XHRcdFx0dmFyIGZha2VFdmVudCA9ICQuRXZlbnQoIGV2ZW50ICk7XG5cdFx0XHRcdFx0ZmFrZUV2ZW50LmN1cnJlbnRUYXJnZXQgPSB0YXJnZXRbIDAgXTtcblx0XHRcdFx0XHR0aGlzLmNsb3NlKCBmYWtlRXZlbnQsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBPbmx5IGJpbmQgcmVtb3ZlIGhhbmRsZXIgZm9yIGRlbGVnYXRlZCB0YXJnZXRzLiBOb24tZGVsZWdhdGVkXG5cdFx0Ly8gdG9vbHRpcHMgd2lsbCBoYW5kbGUgdGhpcyBpbiBkZXN0cm95LlxuXHRcdGlmICggdGFyZ2V0WyAwIF0gIT09IHRoaXMuZWxlbWVudFsgMCBdICkge1xuXHRcdFx0ZXZlbnRzLnJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGlzLl9yZW1vdmVUb29sdGlwKCB0aGlzLl9maW5kKCB0YXJnZXQgKS50b29sdGlwICk7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICggIWV2ZW50IHx8IGV2ZW50LnR5cGUgPT09IFwibW91c2VvdmVyXCIgKSB7XG5cdFx0XHRldmVudHMubW91c2VsZWF2ZSA9IFwiY2xvc2VcIjtcblx0XHR9XG5cdFx0aWYgKCAhZXZlbnQgfHwgZXZlbnQudHlwZSA9PT0gXCJmb2N1c2luXCIgKSB7XG5cdFx0XHRldmVudHMuZm9jdXNvdXQgPSBcImNsb3NlXCI7XG5cdFx0fVxuXHRcdHRoaXMuX29uKCB0cnVlLCB0YXJnZXQsIGV2ZW50cyApO1xuXHR9LFxuXG5cdGNsb3NlOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0dmFyIHRvb2x0aXAsXG5cdFx0XHR0aGF0ID0gdGhpcyxcblx0XHRcdHRhcmdldCA9ICQoIGV2ZW50ID8gZXZlbnQuY3VycmVudFRhcmdldCA6IHRoaXMuZWxlbWVudCApLFxuXHRcdFx0dG9vbHRpcERhdGEgPSB0aGlzLl9maW5kKCB0YXJnZXQgKTtcblxuXHRcdC8vIFRoZSB0b29sdGlwIG1heSBhbHJlYWR5IGJlIGNsb3NlZFxuXHRcdGlmICggIXRvb2x0aXBEYXRhICkge1xuXG5cdFx0XHQvLyBXZSBzZXQgdWktdG9vbHRpcC1vcGVuIGltbWVkaWF0ZWx5IHVwb24gb3BlbiAoaW4gb3BlbigpKSwgYnV0IG9ubHkgc2V0IHRoZVxuXHRcdFx0Ly8gYWRkaXRpb25hbCBkYXRhIG9uY2UgdGhlcmUncyBhY3R1YWxseSBjb250ZW50IHRvIHNob3cgKGluIF9vcGVuKCkpLiBTbyBldmVuIGlmIHRoZVxuXHRcdFx0Ly8gdG9vbHRpcCBkb2Vzbid0IGhhdmUgZnVsbCBkYXRhLCB3ZSBhbHdheXMgcmVtb3ZlIHVpLXRvb2x0aXAtb3BlbiBpbiBjYXNlIHdlJ3JlIGluXG5cdFx0XHQvLyB0aGUgcGVyaW9kIGJldHdlZW4gb3BlbigpIGFuZCBfb3BlbigpLlxuXHRcdFx0dGFyZ2V0LnJlbW92ZURhdGEoIFwidWktdG9vbHRpcC1vcGVuXCIgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0b29sdGlwID0gdG9vbHRpcERhdGEudG9vbHRpcDtcblxuXHRcdC8vIERpc2FibGluZyBjbG9zZXMgdGhlIHRvb2x0aXAsIHNvIHdlIG5lZWQgdG8gdHJhY2sgd2hlbiB3ZSdyZSBjbG9zaW5nXG5cdFx0Ly8gdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCBpbiBjYXNlIHRoZSB0b29sdGlwIGJlY29tZXMgZGlzYWJsZWQgb24gY2xvc2Vcblx0XHRpZiAoIHRvb2x0aXBEYXRhLmNsb3NpbmcgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXIgdGhlIGludGVydmFsIGZvciBkZWxheWVkIHRyYWNraW5nIHRvb2x0aXBzXG5cdFx0Y2xlYXJJbnRlcnZhbCggdGhpcy5kZWxheWVkU2hvdyApO1xuXG5cdFx0Ly8gT25seSBzZXQgdGl0bGUgaWYgd2UgaGFkIG9uZSBiZWZvcmUgKHNlZSBjb21tZW50IGluIF9vcGVuKCkpXG5cdFx0Ly8gSWYgdGhlIHRpdGxlIGF0dHJpYnV0ZSBoYXMgY2hhbmdlZCBzaW5jZSBvcGVuKCksIGRvbid0IHJlc3RvcmVcblx0XHRpZiAoIHRhcmdldC5kYXRhKCBcInVpLXRvb2x0aXAtdGl0bGVcIiApICYmICF0YXJnZXQuYXR0ciggXCJ0aXRsZVwiICkgKSB7XG5cdFx0XHR0YXJnZXQuYXR0ciggXCJ0aXRsZVwiLCB0YXJnZXQuZGF0YSggXCJ1aS10b29sdGlwLXRpdGxlXCIgKSApO1xuXHRcdH1cblxuXHRcdHRoaXMuX3JlbW92ZURlc2NyaWJlZEJ5KCB0YXJnZXQgKTtcblxuXHRcdHRvb2x0aXBEYXRhLmhpZGluZyA9IHRydWU7XG5cdFx0dG9vbHRpcC5zdG9wKCB0cnVlICk7XG5cdFx0dGhpcy5faGlkZSggdG9vbHRpcCwgdGhpcy5vcHRpb25zLmhpZGUsIGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhhdC5fcmVtb3ZlVG9vbHRpcCggJCggdGhpcyApICk7XG5cdFx0fSApO1xuXG5cdFx0dGFyZ2V0LnJlbW92ZURhdGEoIFwidWktdG9vbHRpcC1vcGVuXCIgKTtcblx0XHR0aGlzLl9vZmYoIHRhcmdldCwgXCJtb3VzZWxlYXZlIGZvY3Vzb3V0IGtleXVwXCIgKTtcblxuXHRcdC8vIFJlbW92ZSAncmVtb3ZlJyBiaW5kaW5nIG9ubHkgb24gZGVsZWdhdGVkIHRhcmdldHNcblx0XHRpZiAoIHRhcmdldFsgMCBdICE9PSB0aGlzLmVsZW1lbnRbIDAgXSApIHtcblx0XHRcdHRoaXMuX29mZiggdGFyZ2V0LCBcInJlbW92ZVwiICk7XG5cdFx0fVxuXHRcdHRoaXMuX29mZiggdGhpcy5kb2N1bWVudCwgXCJtb3VzZW1vdmVcIiApO1xuXG5cdFx0aWYgKCBldmVudCAmJiBldmVudC50eXBlID09PSBcIm1vdXNlbGVhdmVcIiApIHtcblx0XHRcdCQuZWFjaCggdGhpcy5wYXJlbnRzLCBmdW5jdGlvbiggaWQsIHBhcmVudCApIHtcblx0XHRcdFx0JCggcGFyZW50LmVsZW1lbnQgKS5hdHRyKCBcInRpdGxlXCIsIHBhcmVudC50aXRsZSApO1xuXHRcdFx0XHRkZWxldGUgdGhhdC5wYXJlbnRzWyBpZCBdO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHRvb2x0aXBEYXRhLmNsb3NpbmcgPSB0cnVlO1xuXHRcdHRoaXMuX3RyaWdnZXIoIFwiY2xvc2VcIiwgZXZlbnQsIHsgdG9vbHRpcDogdG9vbHRpcCB9ICk7XG5cdFx0aWYgKCAhdG9vbHRpcERhdGEuaGlkaW5nICkge1xuXHRcdFx0dG9vbHRpcERhdGEuY2xvc2luZyA9IGZhbHNlO1xuXHRcdH1cblx0fSxcblxuXHRfdG9vbHRpcDogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG5cdFx0dmFyIHRvb2x0aXAgPSAkKCBcIjxkaXY+XCIgKS5hdHRyKCBcInJvbGVcIiwgXCJ0b29sdGlwXCIgKSxcblx0XHRcdGNvbnRlbnQgPSAkKCBcIjxkaXY+XCIgKS5hcHBlbmRUbyggdG9vbHRpcCApLFxuXHRcdFx0aWQgPSB0b29sdGlwLnVuaXF1ZUlkKCkuYXR0ciggXCJpZFwiICk7XG5cblx0XHR0aGlzLl9hZGRDbGFzcyggY29udGVudCwgXCJ1aS10b29sdGlwLWNvbnRlbnRcIiApO1xuXHRcdHRoaXMuX2FkZENsYXNzKCB0b29sdGlwLCBcInVpLXRvb2x0aXBcIiwgXCJ1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnRcIiApO1xuXG5cdFx0dG9vbHRpcC5hcHBlbmRUbyggdGhpcy5fYXBwZW5kVG8oIGVsZW1lbnQgKSApO1xuXG5cdFx0cmV0dXJuIHRoaXMudG9vbHRpcHNbIGlkIF0gPSB7XG5cdFx0XHRlbGVtZW50OiBlbGVtZW50LFxuXHRcdFx0dG9vbHRpcDogdG9vbHRpcFxuXHRcdH07XG5cdH0sXG5cblx0X2ZpbmQ6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIGlkID0gdGFyZ2V0LmRhdGEoIFwidWktdG9vbHRpcC1pZFwiICk7XG5cdFx0cmV0dXJuIGlkID8gdGhpcy50b29sdGlwc1sgaWQgXSA6IG51bGw7XG5cdH0sXG5cblx0X3JlbW92ZVRvb2x0aXA6IGZ1bmN0aW9uKCB0b29sdGlwICkge1xuXHRcdHRvb2x0aXAucmVtb3ZlKCk7XG5cdFx0ZGVsZXRlIHRoaXMudG9vbHRpcHNbIHRvb2x0aXAuYXR0ciggXCJpZFwiICkgXTtcblx0fSxcblxuXHRfYXBwZW5kVG86IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIGVsZW1lbnQgPSB0YXJnZXQuY2xvc2VzdCggXCIudWktZnJvbnQsIGRpYWxvZ1wiICk7XG5cblx0XHRpZiAoICFlbGVtZW50Lmxlbmd0aCApIHtcblx0XHRcdGVsZW1lbnQgPSB0aGlzLmRvY3VtZW50WyAwIF0uYm9keTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbWVudDtcblx0fSxcblxuXHRfZGVzdHJveTogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2xvc2Ugb3BlbiB0b29sdGlwc1xuXHRcdCQuZWFjaCggdGhpcy50b29sdGlwcywgZnVuY3Rpb24oIGlkLCB0b29sdGlwRGF0YSApIHtcblxuXHRcdFx0Ly8gRGVsZWdhdGUgdG8gY2xvc2UgbWV0aG9kIHRvIGhhbmRsZSBjb21tb24gY2xlYW51cFxuXHRcdFx0dmFyIGV2ZW50ID0gJC5FdmVudCggXCJibHVyXCIgKSxcblx0XHRcdFx0ZWxlbWVudCA9IHRvb2x0aXBEYXRhLmVsZW1lbnQ7XG5cdFx0XHRldmVudC50YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0ID0gZWxlbWVudFsgMCBdO1xuXHRcdFx0dGhhdC5jbG9zZSggZXZlbnQsIHRydWUgKTtcblxuXHRcdFx0Ly8gUmVtb3ZlIGltbWVkaWF0ZWx5OyBkZXN0cm95aW5nIGFuIG9wZW4gdG9vbHRpcCBkb2Vzbid0IHVzZSB0aGVcblx0XHRcdC8vIGhpZGUgYW5pbWF0aW9uXG5cdFx0XHQkKCBcIiNcIiArIGlkICkucmVtb3ZlKCk7XG5cblx0XHRcdC8vIFJlc3RvcmUgdGhlIHRpdGxlXG5cdFx0XHRpZiAoIGVsZW1lbnQuZGF0YSggXCJ1aS10b29sdGlwLXRpdGxlXCIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGUgdGl0bGUgYXR0cmlidXRlIGhhcyBjaGFuZ2VkIHNpbmNlIG9wZW4oKSwgZG9uJ3QgcmVzdG9yZVxuXHRcdFx0XHRpZiAoICFlbGVtZW50LmF0dHIoIFwidGl0bGVcIiApICkge1xuXHRcdFx0XHRcdGVsZW1lbnQuYXR0ciggXCJ0aXRsZVwiLCBlbGVtZW50LmRhdGEoIFwidWktdG9vbHRpcC10aXRsZVwiICkgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbGVtZW50LnJlbW92ZURhdGEoIFwidWktdG9vbHRpcC10aXRsZVwiICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHRoaXMubGl2ZVJlZ2lvbi5yZW1vdmUoKTtcblx0fVxufSApO1xuXG4vLyBERVBSRUNBVEVEXG4vLyBUT0RPOiBTd2l0Y2ggcmV0dXJuIGJhY2sgdG8gd2lkZ2V0IGRlY2xhcmF0aW9uIGF0IHRvcCBvZiBmaWxlIHdoZW4gdGhpcyBpcyByZW1vdmVkXG5pZiAoICQudWlCYWNrQ29tcGF0ICE9PSBmYWxzZSApIHtcblxuXHQvLyBCYWNrY29tcGF0IGZvciB0b29sdGlwQ2xhc3Mgb3B0aW9uXG5cdCQud2lkZ2V0KCBcInVpLnRvb2x0aXBcIiwgJC51aS50b29sdGlwLCB7XG5cdFx0b3B0aW9uczoge1xuXHRcdFx0dG9vbHRpcENsYXNzOiBudWxsXG5cdFx0fSxcblx0XHRfdG9vbHRpcDogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdG9vbHRpcERhdGEgPSB0aGlzLl9zdXBlckFwcGx5KCBhcmd1bWVudHMgKTtcblx0XHRcdGlmICggdGhpcy5vcHRpb25zLnRvb2x0aXBDbGFzcyApIHtcblx0XHRcdFx0dG9vbHRpcERhdGEudG9vbHRpcC5hZGRDbGFzcyggdGhpcy5vcHRpb25zLnRvb2x0aXBDbGFzcyApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRvb2x0aXBEYXRhO1xuXHRcdH1cblx0fSApO1xufVxuXG52YXIgd2lkZ2V0c1Rvb2x0aXAgPSAkLnVpLnRvb2x0aXA7XG5cblxuXG5cbn0pKTtcbn0uY2FsbCh3aW5kb3csIGZhbHNlKSk7XG4iLCIvKioqIElNUE9SVFMgRlJPTSBpbXBvcnRzLWxvYWRlciAqKiovXG5cbihmdW5jdGlvbihkZWZpbmUsIGV4cG9ydHMpIHtcbi8qISBNYWduaWZpYyBQb3B1cCAtIHYxLjEuMCAtIDIwMTYtMDItMjBcbiogaHR0cDovL2RpbXNlbWVub3YuY29tL3BsdWdpbnMvbWFnbmlmaWMtcG9wdXAvXG4qIENvcHlyaWdodCAoYykgMjAxNiBEbWl0cnkgU2VtZW5vdjsgKi9cbjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsgXG5pZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7IFxuIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS4gXG4gZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3RvcnkpOyBcbiB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgeyBcbiAvLyBOb2RlL0NvbW1vbkpTIFxuIGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpOyBcbiB9IGVsc2UgeyBcbiAvLyBCcm93c2VyIGdsb2JhbHMgXG4gZmFjdG9yeSh3aW5kb3cualF1ZXJ5IHx8IHdpbmRvdy5aZXB0byk7IFxuIH0gXG4gfShmdW5jdGlvbigkKSB7IFxuXG4vKj4+Y29yZSovXG4vKipcbiAqIFxuICogTWFnbmlmaWMgUG9wdXAgQ29yZSBKUyBmaWxlXG4gKiBcbiAqL1xuXG5cbi8qKlxuICogUHJpdmF0ZSBzdGF0aWMgY29uc3RhbnRzXG4gKi9cbnZhciBDTE9TRV9FVkVOVCA9ICdDbG9zZScsXG5cdEJFRk9SRV9DTE9TRV9FVkVOVCA9ICdCZWZvcmVDbG9zZScsXG5cdEFGVEVSX0NMT1NFX0VWRU5UID0gJ0FmdGVyQ2xvc2UnLFxuXHRCRUZPUkVfQVBQRU5EX0VWRU5UID0gJ0JlZm9yZUFwcGVuZCcsXG5cdE1BUktVUF9QQVJTRV9FVkVOVCA9ICdNYXJrdXBQYXJzZScsXG5cdE9QRU5fRVZFTlQgPSAnT3BlbicsXG5cdENIQU5HRV9FVkVOVCA9ICdDaGFuZ2UnLFxuXHROUyA9ICdtZnAnLFxuXHRFVkVOVF9OUyA9ICcuJyArIE5TLFxuXHRSRUFEWV9DTEFTUyA9ICdtZnAtcmVhZHknLFxuXHRSRU1PVklOR19DTEFTUyA9ICdtZnAtcmVtb3ZpbmcnLFxuXHRQUkVWRU5UX0NMT1NFX0NMQVNTID0gJ21mcC1wcmV2ZW50LWNsb3NlJztcblxuXG4vKipcbiAqIFByaXZhdGUgdmFycyBcbiAqL1xuLypqc2hpbnQgLVcwNzkgKi9cbnZhciBtZnAsIC8vIEFzIHdlIGhhdmUgb25seSBvbmUgaW5zdGFuY2Ugb2YgTWFnbmlmaWNQb3B1cCBvYmplY3QsIHdlIGRlZmluZSBpdCBsb2NhbGx5IHRvIG5vdCB0byB1c2UgJ3RoaXMnXG5cdE1hZ25pZmljUG9wdXAgPSBmdW5jdGlvbigpe30sXG5cdF9pc0pRID0gISEod2luZG93LmpRdWVyeSksXG5cdF9wcmV2U3RhdHVzLFxuXHRfd2luZG93ID0gJCh3aW5kb3cpLFxuXHRfZG9jdW1lbnQsXG5cdF9wcmV2Q29udGVudFR5cGUsXG5cdF93cmFwQ2xhc3Nlcyxcblx0X2N1cnJQb3B1cFR5cGU7XG5cblxuLyoqXG4gKiBQcml2YXRlIGZ1bmN0aW9uc1xuICovXG52YXIgX21mcE9uID0gZnVuY3Rpb24obmFtZSwgZikge1xuXHRcdG1mcC5ldi5vbihOUyArIG5hbWUgKyBFVkVOVF9OUywgZik7XG5cdH0sXG5cdF9nZXRFbCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgYXBwZW5kVG8sIGh0bWwsIHJhdykge1xuXHRcdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdGVsLmNsYXNzTmFtZSA9ICdtZnAtJytjbGFzc05hbWU7XG5cdFx0aWYoaHRtbCkge1xuXHRcdFx0ZWwuaW5uZXJIVE1MID0gaHRtbDtcblx0XHR9XG5cdFx0aWYoIXJhdykge1xuXHRcdFx0ZWwgPSAkKGVsKTtcblx0XHRcdGlmKGFwcGVuZFRvKSB7XG5cdFx0XHRcdGVsLmFwcGVuZFRvKGFwcGVuZFRvKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYoYXBwZW5kVG8pIHtcblx0XHRcdGFwcGVuZFRvLmFwcGVuZENoaWxkKGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsO1xuXHR9LFxuXHRfbWZwVHJpZ2dlciA9IGZ1bmN0aW9uKGUsIGRhdGEpIHtcblx0XHRtZnAuZXYudHJpZ2dlckhhbmRsZXIoTlMgKyBlLCBkYXRhKTtcblxuXHRcdGlmKG1mcC5zdC5jYWxsYmFja3MpIHtcblx0XHRcdC8vIGNvbnZlcnRzIFwibWZwRXZlbnROYW1lXCIgdG8gXCJldmVudE5hbWVcIiBjYWxsYmFjayBhbmQgdHJpZ2dlcnMgaXQgaWYgaXQncyBwcmVzZW50XG5cdFx0XHRlID0gZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGUuc2xpY2UoMSk7XG5cdFx0XHRpZihtZnAuc3QuY2FsbGJhY2tzW2VdKSB7XG5cdFx0XHRcdG1mcC5zdC5jYWxsYmFja3NbZV0uYXBwbHkobWZwLCAkLmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW2RhdGFdKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdF9nZXRDbG9zZUJ0biA9IGZ1bmN0aW9uKHR5cGUpIHtcblx0XHRpZih0eXBlICE9PSBfY3VyclBvcHVwVHlwZSB8fCAhbWZwLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bikge1xuXHRcdFx0bWZwLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0biA9ICQoIG1mcC5zdC5jbG9zZU1hcmt1cC5yZXBsYWNlKCcldGl0bGUlJywgbWZwLnN0LnRDbG9zZSApICk7XG5cdFx0XHRfY3VyclBvcHVwVHlwZSA9IHR5cGU7XG5cdFx0fVxuXHRcdHJldHVybiBtZnAuY3VyclRlbXBsYXRlLmNsb3NlQnRuO1xuXHR9LFxuXHQvLyBJbml0aWFsaXplIE1hZ25pZmljIFBvcHVwIG9ubHkgd2hlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRfY2hlY2tJbnN0YW5jZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCEkLm1hZ25pZmljUG9wdXAuaW5zdGFuY2UpIHtcblx0XHRcdC8qanNoaW50IC1XMDIwICovXG5cdFx0XHRtZnAgPSBuZXcgTWFnbmlmaWNQb3B1cCgpO1xuXHRcdFx0bWZwLmluaXQoKTtcblx0XHRcdCQubWFnbmlmaWNQb3B1cC5pbnN0YW5jZSA9IG1mcDtcblx0XHR9XG5cdH0sXG5cdC8vIENTUyB0cmFuc2l0aW9uIGRldGVjdGlvbiwgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MjY0ODk5L2RldGVjdC1jc3MtdHJhbnNpdGlvbnMtdXNpbmctamF2YXNjcmlwdC1hbmQtd2l0aG91dC1tb2Rlcm5penJcblx0c3VwcG9ydHNUcmFuc2l0aW9ucyA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpLnN0eWxlLCAvLyAncycgZm9yIHN0eWxlLiBiZXR0ZXIgdG8gY3JlYXRlIGFuIGVsZW1lbnQgaWYgYm9keSB5ZXQgdG8gZXhpc3Rcblx0XHRcdHYgPSBbJ21zJywnTycsJ01veicsJ1dlYmtpdCddOyAvLyAndicgZm9yIHZlbmRvclxuXG5cdFx0aWYoIHNbJ3RyYW5zaXRpb24nXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuIHRydWU7IFxuXHRcdH1cblx0XHRcdFxuXHRcdHdoaWxlKCB2Lmxlbmd0aCApIHtcblx0XHRcdGlmKCB2LnBvcCgpICsgJ1RyYW5zaXRpb24nIGluIHMgKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRcdFx0XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9O1xuXG5cblxuLyoqXG4gKiBQdWJsaWMgZnVuY3Rpb25zXG4gKi9cbk1hZ25pZmljUG9wdXAucHJvdG90eXBlID0ge1xuXG5cdGNvbnN0cnVjdG9yOiBNYWduaWZpY1BvcHVwLFxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyBNYWduaWZpYyBQb3B1cCBwbHVnaW4uIFxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCBvbmx5IG9uY2Ugd2hlbiAkLmZuLm1hZ25pZmljUG9wdXAgb3IgJC5tYWduaWZpY1BvcHVwIGlzIGV4ZWN1dGVkXG5cdCAqL1xuXHRpbml0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgYXBwVmVyc2lvbiA9IG5hdmlnYXRvci5hcHBWZXJzaW9uO1xuXHRcdG1mcC5pc0xvd0lFID0gbWZwLmlzSUU4ID0gZG9jdW1lbnQuYWxsICYmICFkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyO1xuXHRcdG1mcC5pc0FuZHJvaWQgPSAoL2FuZHJvaWQvZ2kpLnRlc3QoYXBwVmVyc2lvbik7XG5cdFx0bWZwLmlzSU9TID0gKC9pcGhvbmV8aXBhZHxpcG9kL2dpKS50ZXN0KGFwcFZlcnNpb24pO1xuXHRcdG1mcC5zdXBwb3J0c1RyYW5zaXRpb24gPSBzdXBwb3J0c1RyYW5zaXRpb25zKCk7XG5cblx0XHQvLyBXZSBkaXNhYmxlIGZpeGVkIHBvc2l0aW9uZWQgbGlnaHRib3ggb24gZGV2aWNlcyB0aGF0IGRvbid0IGhhbmRsZSBpdCBuaWNlbHkuXG5cdFx0Ly8gSWYgeW91IGtub3cgYSBiZXR0ZXIgd2F5IG9mIGRldGVjdGluZyB0aGlzIC0gbGV0IG1lIGtub3cuXG5cdFx0bWZwLnByb2JhYmx5TW9iaWxlID0gKG1mcC5pc0FuZHJvaWQgfHwgbWZwLmlzSU9TIHx8IC8oT3BlcmEgTWluaSl8S2luZGxlfHdlYk9TfEJsYWNrQmVycnl8KE9wZXJhIE1vYmkpfChXaW5kb3dzIFBob25lKXxJRU1vYmlsZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgKTtcblx0XHRfZG9jdW1lbnQgPSAkKGRvY3VtZW50KTtcblxuXHRcdG1mcC5wb3B1cHNDYWNoZSA9IHt9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBPcGVucyBwb3B1cFxuXHQgKiBAcGFyYW0gIGRhdGEgW2Rlc2NyaXB0aW9uXVxuXHQgKi9cblx0b3BlbjogZnVuY3Rpb24oZGF0YSkge1xuXG5cdFx0dmFyIGk7XG5cblx0XHRpZihkYXRhLmlzT2JqID09PSBmYWxzZSkgeyBcblx0XHRcdC8vIGNvbnZlcnQgalF1ZXJ5IGNvbGxlY3Rpb24gdG8gYXJyYXkgdG8gYXZvaWQgY29uZmxpY3RzIGxhdGVyXG5cdFx0XHRtZnAuaXRlbXMgPSBkYXRhLml0ZW1zLnRvQXJyYXkoKTtcblxuXHRcdFx0bWZwLmluZGV4ID0gMDtcblx0XHRcdHZhciBpdGVtcyA9IGRhdGEuaXRlbXMsXG5cdFx0XHRcdGl0ZW07XG5cdFx0XHRmb3IoaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpdGVtID0gaXRlbXNbaV07XG5cdFx0XHRcdGlmKGl0ZW0ucGFyc2VkKSB7XG5cdFx0XHRcdFx0aXRlbSA9IGl0ZW0uZWxbMF07XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoaXRlbSA9PT0gZGF0YS5lbFswXSkge1xuXHRcdFx0XHRcdG1mcC5pbmRleCA9IGk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bWZwLml0ZW1zID0gJC5pc0FycmF5KGRhdGEuaXRlbXMpID8gZGF0YS5pdGVtcyA6IFtkYXRhLml0ZW1zXTtcblx0XHRcdG1mcC5pbmRleCA9IGRhdGEuaW5kZXggfHwgMDtcblx0XHR9XG5cblx0XHQvLyBpZiBwb3B1cCBpcyBhbHJlYWR5IG9wZW5lZCAtIHdlIGp1c3QgdXBkYXRlIHRoZSBjb250ZW50XG5cdFx0aWYobWZwLmlzT3Blbikge1xuXHRcdFx0bWZwLnVwZGF0ZUl0ZW1IVE1MKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFxuXHRcdG1mcC50eXBlcyA9IFtdOyBcblx0XHRfd3JhcENsYXNzZXMgPSAnJztcblx0XHRpZihkYXRhLm1haW5FbCAmJiBkYXRhLm1haW5FbC5sZW5ndGgpIHtcblx0XHRcdG1mcC5ldiA9IGRhdGEubWFpbkVsLmVxKDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtZnAuZXYgPSBfZG9jdW1lbnQ7XG5cdFx0fVxuXG5cdFx0aWYoZGF0YS5rZXkpIHtcblx0XHRcdGlmKCFtZnAucG9wdXBzQ2FjaGVbZGF0YS5rZXldKSB7XG5cdFx0XHRcdG1mcC5wb3B1cHNDYWNoZVtkYXRhLmtleV0gPSB7fTtcblx0XHRcdH1cblx0XHRcdG1mcC5jdXJyVGVtcGxhdGUgPSBtZnAucG9wdXBzQ2FjaGVbZGF0YS5rZXldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtZnAuY3VyclRlbXBsYXRlID0ge307XG5cdFx0fVxuXG5cblxuXHRcdG1mcC5zdCA9ICQuZXh0ZW5kKHRydWUsIHt9LCAkLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMsIGRhdGEgKTsgXG5cdFx0bWZwLmZpeGVkQ29udGVudFBvcyA9IG1mcC5zdC5maXhlZENvbnRlbnRQb3MgPT09ICdhdXRvJyA/ICFtZnAucHJvYmFibHlNb2JpbGUgOiBtZnAuc3QuZml4ZWRDb250ZW50UG9zO1xuXG5cdFx0aWYobWZwLnN0Lm1vZGFsKSB7XG5cdFx0XHRtZnAuc3QuY2xvc2VPbkNvbnRlbnRDbGljayA9IGZhbHNlO1xuXHRcdFx0bWZwLnN0LmNsb3NlT25CZ0NsaWNrID0gZmFsc2U7XG5cdFx0XHRtZnAuc3Quc2hvd0Nsb3NlQnRuID0gZmFsc2U7XG5cdFx0XHRtZnAuc3QuZW5hYmxlRXNjYXBlS2V5ID0gZmFsc2U7XG5cdFx0fVxuXHRcdFxuXG5cdFx0Ly8gQnVpbGRpbmcgbWFya3VwXG5cdFx0Ly8gbWFpbiBjb250YWluZXJzIGFyZSBjcmVhdGVkIG9ubHkgb25jZVxuXHRcdGlmKCFtZnAuYmdPdmVybGF5KSB7XG5cblx0XHRcdC8vIERhcmsgb3ZlcmxheVxuXHRcdFx0bWZwLmJnT3ZlcmxheSA9IF9nZXRFbCgnYmcnKS5vbignY2xpY2snK0VWRU5UX05TLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0bWZwLmNsb3NlKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0bWZwLndyYXAgPSBfZ2V0RWwoJ3dyYXAnKS5hdHRyKCd0YWJpbmRleCcsIC0xKS5vbignY2xpY2snK0VWRU5UX05TLCBmdW5jdGlvbihlKSB7XG5cdFx0XHRcdGlmKG1mcC5fY2hlY2tJZkNsb3NlKGUudGFyZ2V0KSkge1xuXHRcdFx0XHRcdG1mcC5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0bWZwLmNvbnRhaW5lciA9IF9nZXRFbCgnY29udGFpbmVyJywgbWZwLndyYXApO1xuXHRcdH1cblxuXHRcdG1mcC5jb250ZW50Q29udGFpbmVyID0gX2dldEVsKCdjb250ZW50Jyk7XG5cdFx0aWYobWZwLnN0LnByZWxvYWRlcikge1xuXHRcdFx0bWZwLnByZWxvYWRlciA9IF9nZXRFbCgncHJlbG9hZGVyJywgbWZwLmNvbnRhaW5lciwgbWZwLnN0LnRMb2FkaW5nKTtcblx0XHR9XG5cblxuXHRcdC8vIEluaXRpYWxpemluZyBtb2R1bGVzXG5cdFx0dmFyIG1vZHVsZXMgPSAkLm1hZ25pZmljUG9wdXAubW9kdWxlcztcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgbiA9IG1vZHVsZXNbaV07XG5cdFx0XHRuID0gbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG4uc2xpY2UoMSk7XG5cdFx0XHRtZnBbJ2luaXQnK25dLmNhbGwobWZwKTtcblx0XHR9XG5cdFx0X21mcFRyaWdnZXIoJ0JlZm9yZU9wZW4nKTtcblxuXG5cdFx0aWYobWZwLnN0LnNob3dDbG9zZUJ0bikge1xuXHRcdFx0Ly8gQ2xvc2UgYnV0dG9uXG5cdFx0XHRpZighbWZwLnN0LmNsb3NlQnRuSW5zaWRlKSB7XG5cdFx0XHRcdG1mcC53cmFwLmFwcGVuZCggX2dldENsb3NlQnRuKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdF9tZnBPbihNQVJLVVBfUEFSU0VfRVZFTlQsIGZ1bmN0aW9uKGUsIHRlbXBsYXRlLCB2YWx1ZXMsIGl0ZW0pIHtcblx0XHRcdFx0XHR2YWx1ZXMuY2xvc2VfcmVwbGFjZVdpdGggPSBfZ2V0Q2xvc2VCdG4oaXRlbS50eXBlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdF93cmFwQ2xhc3NlcyArPSAnIG1mcC1jbG9zZS1idG4taW4nO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmKG1mcC5zdC5hbGlnblRvcCkge1xuXHRcdFx0X3dyYXBDbGFzc2VzICs9ICcgbWZwLWFsaWduLXRvcCc7XG5cdFx0fVxuXG5cdFxuXG5cdFx0aWYobWZwLmZpeGVkQ29udGVudFBvcykge1xuXHRcdFx0bWZwLndyYXAuY3NzKHtcblx0XHRcdFx0b3ZlcmZsb3c6IG1mcC5zdC5vdmVyZmxvd1ksXG5cdFx0XHRcdG92ZXJmbG93WDogJ2hpZGRlbicsXG5cdFx0XHRcdG92ZXJmbG93WTogbWZwLnN0Lm92ZXJmbG93WVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1mcC53cmFwLmNzcyh7IFxuXHRcdFx0XHR0b3A6IF93aW5kb3cuc2Nyb2xsVG9wKCksXG5cdFx0XHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYoIG1mcC5zdC5maXhlZEJnUG9zID09PSBmYWxzZSB8fCAobWZwLnN0LmZpeGVkQmdQb3MgPT09ICdhdXRvJyAmJiAhbWZwLmZpeGVkQ29udGVudFBvcykgKSB7XG5cdFx0XHRtZnAuYmdPdmVybGF5LmNzcyh7XG5cdFx0XHRcdGhlaWdodDogX2RvY3VtZW50LmhlaWdodCgpLFxuXHRcdFx0XHRwb3NpdGlvbjogJ2Fic29sdXRlJ1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0XG5cblx0XHRpZihtZnAuc3QuZW5hYmxlRXNjYXBlS2V5KSB7XG5cdFx0XHQvLyBDbG9zZSBvbiBFU0Mga2V5XG5cdFx0XHRfZG9jdW1lbnQub24oJ2tleXVwJyArIEVWRU5UX05TLCBmdW5jdGlvbihlKSB7XG5cdFx0XHRcdGlmKGUua2V5Q29kZSA9PT0gMjcpIHtcblx0XHRcdFx0XHRtZnAuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0X3dpbmRvdy5vbigncmVzaXplJyArIEVWRU5UX05TLCBmdW5jdGlvbigpIHtcblx0XHRcdG1mcC51cGRhdGVTaXplKCk7XG5cdFx0fSk7XG5cblxuXHRcdGlmKCFtZnAuc3QuY2xvc2VPbkNvbnRlbnRDbGljaykge1xuXHRcdFx0X3dyYXBDbGFzc2VzICs9ICcgbWZwLWF1dG8tY3Vyc29yJztcblx0XHR9XG5cdFx0XG5cdFx0aWYoX3dyYXBDbGFzc2VzKVxuXHRcdFx0bWZwLndyYXAuYWRkQ2xhc3MoX3dyYXBDbGFzc2VzKTtcblxuXG5cdFx0Ly8gdGhpcyB0cmlnZ2VycyByZWNhbGN1bGF0aW9uIG9mIGxheW91dCwgc28gd2UgZ2V0IGl0IG9uY2UgdG8gbm90IHRvIHRyaWdnZXIgdHdpY2Vcblx0XHR2YXIgd2luZG93SGVpZ2h0ID0gbWZwLndIID0gX3dpbmRvdy5oZWlnaHQoKTtcblxuXHRcdFxuXHRcdHZhciB3aW5kb3dTdHlsZXMgPSB7fTtcblxuXHRcdGlmKCBtZnAuZml4ZWRDb250ZW50UG9zICkge1xuICAgICAgICAgICAgaWYobWZwLl9oYXNTY3JvbGxCYXIod2luZG93SGVpZ2h0KSl7XG4gICAgICAgICAgICAgICAgdmFyIHMgPSBtZnAuX2dldFNjcm9sbGJhclNpemUoKTtcbiAgICAgICAgICAgICAgICBpZihzKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd1N0eWxlcy5tYXJnaW5SaWdodCA9IHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblx0XHRpZihtZnAuZml4ZWRDb250ZW50UG9zKSB7XG5cdFx0XHRpZighbWZwLmlzSUU3KSB7XG5cdFx0XHRcdHdpbmRvd1N0eWxlcy5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gaWU3IGRvdWJsZS1zY3JvbGwgYnVnXG5cdFx0XHRcdCQoJ2JvZHksIGh0bWwnKS5jc3MoJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdFxuXHRcdFxuXHRcdHZhciBjbGFzc2VzVG9hZGQgPSBtZnAuc3QubWFpbkNsYXNzO1xuXHRcdGlmKG1mcC5pc0lFNykge1xuXHRcdFx0Y2xhc3Nlc1RvYWRkICs9ICcgbWZwLWllNyc7XG5cdFx0fVxuXHRcdGlmKGNsYXNzZXNUb2FkZCkge1xuXHRcdFx0bWZwLl9hZGRDbGFzc1RvTUZQKCBjbGFzc2VzVG9hZGQgKTtcblx0XHR9XG5cblx0XHQvLyBhZGQgY29udGVudFxuXHRcdG1mcC51cGRhdGVJdGVtSFRNTCgpO1xuXG5cdFx0X21mcFRyaWdnZXIoJ0J1aWxkQ29udHJvbHMnKTtcblxuXHRcdC8vIHJlbW92ZSBzY3JvbGxiYXIsIGFkZCBtYXJnaW4gZS50LmNcblx0XHQkKCdodG1sJykuY3NzKHdpbmRvd1N0eWxlcyk7XG5cdFx0XG5cdFx0Ly8gYWRkIGV2ZXJ5dGhpbmcgdG8gRE9NXG5cdFx0bWZwLmJnT3ZlcmxheS5hZGQobWZwLndyYXApLnByZXBlbmRUbyggbWZwLnN0LnByZXBlbmRUbyB8fCAkKGRvY3VtZW50LmJvZHkpICk7XG5cblx0XHQvLyBTYXZlIGxhc3QgZm9jdXNlZCBlbGVtZW50XG5cdFx0bWZwLl9sYXN0Rm9jdXNlZEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0XHRcblx0XHQvLyBXYWl0IGZvciBuZXh0IGN5Y2xlIHRvIGFsbG93IENTUyB0cmFuc2l0aW9uXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFxuXHRcdFx0aWYobWZwLmNvbnRlbnQpIHtcblx0XHRcdFx0bWZwLl9hZGRDbGFzc1RvTUZQKFJFQURZX0NMQVNTKTtcblx0XHRcdFx0bWZwLl9zZXRGb2N1cygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gaWYgY29udGVudCBpcyBub3QgZGVmaW5lZCAobm90IGxvYWRlZCBlLnQuYykgd2UgYWRkIGNsYXNzIG9ubHkgZm9yIEJHXG5cdFx0XHRcdG1mcC5iZ092ZXJsYXkuYWRkQ2xhc3MoUkVBRFlfQ0xBU1MpO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQvLyBUcmFwIHRoZSBmb2N1cyBpbiBwb3B1cFxuXHRcdFx0X2RvY3VtZW50Lm9uKCdmb2N1c2luJyArIEVWRU5UX05TLCBtZnAuX29uRm9jdXNJbik7XG5cblx0XHR9LCAxNik7XG5cblx0XHRtZnAuaXNPcGVuID0gdHJ1ZTtcblx0XHRtZnAudXBkYXRlU2l6ZSh3aW5kb3dIZWlnaHQpO1xuXHRcdF9tZnBUcmlnZ2VyKE9QRU5fRVZFTlQpO1xuXG5cdFx0cmV0dXJuIGRhdGE7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGUgcG9wdXBcblx0ICovXG5cdGNsb3NlOiBmdW5jdGlvbigpIHtcblx0XHRpZighbWZwLmlzT3BlbikgcmV0dXJuO1xuXHRcdF9tZnBUcmlnZ2VyKEJFRk9SRV9DTE9TRV9FVkVOVCk7XG5cblx0XHRtZnAuaXNPcGVuID0gZmFsc2U7XG5cdFx0Ly8gZm9yIENTUzMgYW5pbWF0aW9uXG5cdFx0aWYobWZwLnN0LnJlbW92YWxEZWxheSAmJiAhbWZwLmlzTG93SUUgJiYgbWZwLnN1cHBvcnRzVHJhbnNpdGlvbiApICB7XG5cdFx0XHRtZnAuX2FkZENsYXNzVG9NRlAoUkVNT1ZJTkdfQ0xBU1MpO1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0bWZwLl9jbG9zZSgpO1xuXHRcdFx0fSwgbWZwLnN0LnJlbW92YWxEZWxheSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1mcC5fY2xvc2UoKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhlbHBlciBmb3IgY2xvc2UoKSBmdW5jdGlvblxuXHQgKi9cblx0X2Nsb3NlOiBmdW5jdGlvbigpIHtcblx0XHRfbWZwVHJpZ2dlcihDTE9TRV9FVkVOVCk7XG5cblx0XHR2YXIgY2xhc3Nlc1RvUmVtb3ZlID0gUkVNT1ZJTkdfQ0xBU1MgKyAnICcgKyBSRUFEWV9DTEFTUyArICcgJztcblxuXHRcdG1mcC5iZ092ZXJsYXkuZGV0YWNoKCk7XG5cdFx0bWZwLndyYXAuZGV0YWNoKCk7XG5cdFx0bWZwLmNvbnRhaW5lci5lbXB0eSgpO1xuXG5cdFx0aWYobWZwLnN0Lm1haW5DbGFzcykge1xuXHRcdFx0Y2xhc3Nlc1RvUmVtb3ZlICs9IG1mcC5zdC5tYWluQ2xhc3MgKyAnICc7XG5cdFx0fVxuXG5cdFx0bWZwLl9yZW1vdmVDbGFzc0Zyb21NRlAoY2xhc3Nlc1RvUmVtb3ZlKTtcblxuXHRcdGlmKG1mcC5maXhlZENvbnRlbnRQb3MpIHtcblx0XHRcdHZhciB3aW5kb3dTdHlsZXMgPSB7bWFyZ2luUmlnaHQ6ICcnfTtcblx0XHRcdGlmKG1mcC5pc0lFNykge1xuXHRcdFx0XHQkKCdib2R5LCBodG1sJykuY3NzKCdvdmVyZmxvdycsICcnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1N0eWxlcy5vdmVyZmxvdyA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0JCgnaHRtbCcpLmNzcyh3aW5kb3dTdHlsZXMpO1xuXHRcdH1cblx0XHRcblx0XHRfZG9jdW1lbnQub2ZmKCdrZXl1cCcgKyBFVkVOVF9OUyArICcgZm9jdXNpbicgKyBFVkVOVF9OUyk7XG5cdFx0bWZwLmV2Lm9mZihFVkVOVF9OUyk7XG5cblx0XHQvLyBjbGVhbiB1cCBET00gZWxlbWVudHMgdGhhdCBhcmVuJ3QgcmVtb3ZlZFxuXHRcdG1mcC53cmFwLmF0dHIoJ2NsYXNzJywgJ21mcC13cmFwJykucmVtb3ZlQXR0cignc3R5bGUnKTtcblx0XHRtZnAuYmdPdmVybGF5LmF0dHIoJ2NsYXNzJywgJ21mcC1iZycpO1xuXHRcdG1mcC5jb250YWluZXIuYXR0cignY2xhc3MnLCAnbWZwLWNvbnRhaW5lcicpO1xuXG5cdFx0Ly8gcmVtb3ZlIGNsb3NlIGJ1dHRvbiBmcm9tIHRhcmdldCBlbGVtZW50XG5cdFx0aWYobWZwLnN0LnNob3dDbG9zZUJ0biAmJlxuXHRcdCghbWZwLnN0LmNsb3NlQnRuSW5zaWRlIHx8IG1mcC5jdXJyVGVtcGxhdGVbbWZwLmN1cnJJdGVtLnR5cGVdID09PSB0cnVlKSkge1xuXHRcdFx0aWYobWZwLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bilcblx0XHRcdFx0bWZwLmN1cnJUZW1wbGF0ZS5jbG9zZUJ0bi5kZXRhY2goKTtcblx0XHR9XG5cblxuXHRcdGlmKG1mcC5zdC5hdXRvRm9jdXNMYXN0ICYmIG1mcC5fbGFzdEZvY3VzZWRFbCkge1xuXHRcdFx0JChtZnAuX2xhc3RGb2N1c2VkRWwpLmZvY3VzKCk7IC8vIHB1dCB0YWIgZm9jdXMgYmFja1xuXHRcdH1cblx0XHRtZnAuY3Vyckl0ZW0gPSBudWxsO1x0XG5cdFx0bWZwLmNvbnRlbnQgPSBudWxsO1xuXHRcdG1mcC5jdXJyVGVtcGxhdGUgPSBudWxsO1xuXHRcdG1mcC5wcmV2SGVpZ2h0ID0gMDtcblxuXHRcdF9tZnBUcmlnZ2VyKEFGVEVSX0NMT1NFX0VWRU5UKTtcblx0fSxcblx0XG5cdHVwZGF0ZVNpemU6IGZ1bmN0aW9uKHdpbkhlaWdodCkge1xuXG5cdFx0aWYobWZwLmlzSU9TKSB7XG5cdFx0XHQvLyBmaXhlcyBpT1MgbmF2IGJhcnMgaHR0cHM6Ly9naXRodWIuY29tL2RpbXNlbWVub3YvTWFnbmlmaWMtUG9wdXAvaXNzdWVzLzJcblx0XHRcdHZhciB6b29tTGV2ZWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyB3aW5kb3cuaW5uZXJXaWR0aDtcblx0XHRcdHZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgKiB6b29tTGV2ZWw7XG5cdFx0XHRtZnAud3JhcC5jc3MoJ2hlaWdodCcsIGhlaWdodCk7XG5cdFx0XHRtZnAud0ggPSBoZWlnaHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1mcC53SCA9IHdpbkhlaWdodCB8fCBfd2luZG93LmhlaWdodCgpO1xuXHRcdH1cblx0XHQvLyBGaXhlcyAjODQ6IHBvcHVwIGluY29ycmVjdGx5IHBvc2l0aW9uZWQgd2l0aCBwb3NpdGlvbjpyZWxhdGl2ZSBvbiBib2R5XG5cdFx0aWYoIW1mcC5maXhlZENvbnRlbnRQb3MpIHtcblx0XHRcdG1mcC53cmFwLmNzcygnaGVpZ2h0JywgbWZwLndIKTtcblx0XHR9XG5cblx0XHRfbWZwVHJpZ2dlcignUmVzaXplJyk7XG5cblx0fSxcblxuXHQvKipcblx0ICogU2V0IGNvbnRlbnQgb2YgcG9wdXAgYmFzZWQgb24gY3VycmVudCBpbmRleFxuXHQgKi9cblx0dXBkYXRlSXRlbUhUTUw6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBpdGVtID0gbWZwLml0ZW1zW21mcC5pbmRleF07XG5cblx0XHQvLyBEZXRhY2ggYW5kIHBlcmZvcm0gbW9kaWZpY2F0aW9uc1xuXHRcdG1mcC5jb250ZW50Q29udGFpbmVyLmRldGFjaCgpO1xuXG5cdFx0aWYobWZwLmNvbnRlbnQpXG5cdFx0XHRtZnAuY29udGVudC5kZXRhY2goKTtcblxuXHRcdGlmKCFpdGVtLnBhcnNlZCkge1xuXHRcdFx0aXRlbSA9IG1mcC5wYXJzZUVsKCBtZnAuaW5kZXggKTtcblx0XHR9XG5cblx0XHR2YXIgdHlwZSA9IGl0ZW0udHlwZTtcblxuXHRcdF9tZnBUcmlnZ2VyKCdCZWZvcmVDaGFuZ2UnLCBbbWZwLmN1cnJJdGVtID8gbWZwLmN1cnJJdGVtLnR5cGUgOiAnJywgdHlwZV0pO1xuXHRcdC8vIEJlZm9yZUNoYW5nZSBldmVudCB3b3JrcyBsaWtlIHNvOlxuXHRcdC8vIF9tZnBPbignQmVmb3JlQ2hhbmdlJywgZnVuY3Rpb24oZSwgcHJldlR5cGUsIG5ld1R5cGUpIHsgfSk7XG5cblx0XHRtZnAuY3Vyckl0ZW0gPSBpdGVtO1xuXG5cdFx0aWYoIW1mcC5jdXJyVGVtcGxhdGVbdHlwZV0pIHtcblx0XHRcdHZhciBtYXJrdXAgPSBtZnAuc3RbdHlwZV0gPyBtZnAuc3RbdHlwZV0ubWFya3VwIDogZmFsc2U7XG5cblx0XHRcdC8vIGFsbG93cyB0byBtb2RpZnkgbWFya3VwXG5cdFx0XHRfbWZwVHJpZ2dlcignRmlyc3RNYXJrdXBQYXJzZScsIG1hcmt1cCk7XG5cblx0XHRcdGlmKG1hcmt1cCkge1xuXHRcdFx0XHRtZnAuY3VyclRlbXBsYXRlW3R5cGVdID0gJChtYXJrdXApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gaWYgdGhlcmUgaXMgbm8gbWFya3VwIGZvdW5kIHdlIGp1c3QgZGVmaW5lIHRoYXQgdGVtcGxhdGUgaXMgcGFyc2VkXG5cdFx0XHRcdG1mcC5jdXJyVGVtcGxhdGVbdHlwZV0gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmKF9wcmV2Q29udGVudFR5cGUgJiYgX3ByZXZDb250ZW50VHlwZSAhPT0gaXRlbS50eXBlKSB7XG5cdFx0XHRtZnAuY29udGFpbmVyLnJlbW92ZUNsYXNzKCdtZnAtJytfcHJldkNvbnRlbnRUeXBlKyctaG9sZGVyJyk7XG5cdFx0fVxuXG5cdFx0dmFyIG5ld0NvbnRlbnQgPSBtZnBbJ2dldCcgKyB0eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKV0oaXRlbSwgbWZwLmN1cnJUZW1wbGF0ZVt0eXBlXSk7XG5cdFx0bWZwLmFwcGVuZENvbnRlbnQobmV3Q29udGVudCwgdHlwZSk7XG5cblx0XHRpdGVtLnByZWxvYWRlZCA9IHRydWU7XG5cblx0XHRfbWZwVHJpZ2dlcihDSEFOR0VfRVZFTlQsIGl0ZW0pO1xuXHRcdF9wcmV2Q29udGVudFR5cGUgPSBpdGVtLnR5cGU7XG5cblx0XHQvLyBBcHBlbmQgY29udGFpbmVyIGJhY2sgYWZ0ZXIgaXRzIGNvbnRlbnQgY2hhbmdlZFxuXHRcdG1mcC5jb250YWluZXIucHJlcGVuZChtZnAuY29udGVudENvbnRhaW5lcik7XG5cblx0XHRfbWZwVHJpZ2dlcignQWZ0ZXJDaGFuZ2UnKTtcblx0fSxcblxuXG5cdC8qKlxuXHQgKiBTZXQgSFRNTCBjb250ZW50IG9mIHBvcHVwXG5cdCAqL1xuXHRhcHBlbmRDb250ZW50OiBmdW5jdGlvbihuZXdDb250ZW50LCB0eXBlKSB7XG5cdFx0bWZwLmNvbnRlbnQgPSBuZXdDb250ZW50O1xuXG5cdFx0aWYobmV3Q29udGVudCkge1xuXHRcdFx0aWYobWZwLnN0LnNob3dDbG9zZUJ0biAmJiBtZnAuc3QuY2xvc2VCdG5JbnNpZGUgJiZcblx0XHRcdFx0bWZwLmN1cnJUZW1wbGF0ZVt0eXBlXSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBpZiB0aGVyZSBpcyBubyBtYXJrdXAsIHdlIGp1c3QgYXBwZW5kIGNsb3NlIGJ1dHRvbiBlbGVtZW50IGluc2lkZVxuXHRcdFx0XHRpZighbWZwLmNvbnRlbnQuZmluZCgnLm1mcC1jbG9zZScpLmxlbmd0aCkge1xuXHRcdFx0XHRcdG1mcC5jb250ZW50LmFwcGVuZChfZ2V0Q2xvc2VCdG4oKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1mcC5jb250ZW50ID0gbmV3Q29udGVudDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bWZwLmNvbnRlbnQgPSAnJztcblx0XHR9XG5cblx0XHRfbWZwVHJpZ2dlcihCRUZPUkVfQVBQRU5EX0VWRU5UKTtcblx0XHRtZnAuY29udGFpbmVyLmFkZENsYXNzKCdtZnAtJyt0eXBlKyctaG9sZGVyJyk7XG5cblx0XHRtZnAuY29udGVudENvbnRhaW5lci5hcHBlbmQobWZwLmNvbnRlbnQpO1xuXHR9LFxuXG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgTWFnbmlmaWMgUG9wdXAgZGF0YSBvYmplY3QgYmFzZWQgb24gZ2l2ZW4gZGF0YVxuXHQgKiBAcGFyYW0gIHtpbnR9IGluZGV4IEluZGV4IG9mIGl0ZW0gdG8gcGFyc2Vcblx0ICovXG5cdHBhcnNlRWw6IGZ1bmN0aW9uKGluZGV4KSB7XG5cdFx0dmFyIGl0ZW0gPSBtZnAuaXRlbXNbaW5kZXhdLFxuXHRcdFx0dHlwZTtcblxuXHRcdGlmKGl0ZW0udGFnTmFtZSkge1xuXHRcdFx0aXRlbSA9IHsgZWw6ICQoaXRlbSkgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dHlwZSA9IGl0ZW0udHlwZTtcblx0XHRcdGl0ZW0gPSB7IGRhdGE6IGl0ZW0sIHNyYzogaXRlbS5zcmMgfTtcblx0XHR9XG5cblx0XHRpZihpdGVtLmVsKSB7XG5cdFx0XHR2YXIgdHlwZXMgPSBtZnAudHlwZXM7XG5cblx0XHRcdC8vIGNoZWNrIGZvciAnbWZwLVRZUEUnIGNsYXNzXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYoIGl0ZW0uZWwuaGFzQ2xhc3MoJ21mcC0nK3R5cGVzW2ldKSApIHtcblx0XHRcdFx0XHR0eXBlID0gdHlwZXNbaV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aXRlbS5zcmMgPSBpdGVtLmVsLmF0dHIoJ2RhdGEtbWZwLXNyYycpO1xuXHRcdFx0aWYoIWl0ZW0uc3JjKSB7XG5cdFx0XHRcdGl0ZW0uc3JjID0gaXRlbS5lbC5hdHRyKCdocmVmJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aXRlbS50eXBlID0gdHlwZSB8fCBtZnAuc3QudHlwZSB8fCAnaW5saW5lJztcblx0XHRpdGVtLmluZGV4ID0gaW5kZXg7XG5cdFx0aXRlbS5wYXJzZWQgPSB0cnVlO1xuXHRcdG1mcC5pdGVtc1tpbmRleF0gPSBpdGVtO1xuXHRcdF9tZnBUcmlnZ2VyKCdFbGVtZW50UGFyc2UnLCBpdGVtKTtcblxuXHRcdHJldHVybiBtZnAuaXRlbXNbaW5kZXhdO1xuXHR9LFxuXG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHNpbmdsZSBwb3B1cCBvciBhIGdyb3VwIG9mIHBvcHVwc1xuXHQgKi9cblx0YWRkR3JvdXA6IGZ1bmN0aW9uKGVsLCBvcHRpb25zKSB7XG5cdFx0dmFyIGVIYW5kbGVyID0gZnVuY3Rpb24oZSkge1xuXHRcdFx0ZS5tZnBFbCA9IHRoaXM7XG5cdFx0XHRtZnAuX29wZW5DbGljayhlLCBlbCwgb3B0aW9ucyk7XG5cdFx0fTtcblxuXHRcdGlmKCFvcHRpb25zKSB7XG5cdFx0XHRvcHRpb25zID0ge307XG5cdFx0fVxuXG5cdFx0dmFyIGVOYW1lID0gJ2NsaWNrLm1hZ25pZmljUG9wdXAnO1xuXHRcdG9wdGlvbnMubWFpbkVsID0gZWw7XG5cblx0XHRpZihvcHRpb25zLml0ZW1zKSB7XG5cdFx0XHRvcHRpb25zLmlzT2JqID0gdHJ1ZTtcblx0XHRcdGVsLm9mZihlTmFtZSkub24oZU5hbWUsIGVIYW5kbGVyKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3B0aW9ucy5pc09iaiA9IGZhbHNlO1xuXHRcdFx0aWYob3B0aW9ucy5kZWxlZ2F0ZSkge1xuXHRcdFx0XHRlbC5vZmYoZU5hbWUpLm9uKGVOYW1lLCBvcHRpb25zLmRlbGVnYXRlICwgZUhhbmRsZXIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0aW9ucy5pdGVtcyA9IGVsO1xuXHRcdFx0XHRlbC5vZmYoZU5hbWUpLm9uKGVOYW1lLCBlSGFuZGxlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRfb3BlbkNsaWNrOiBmdW5jdGlvbihlLCBlbCwgb3B0aW9ucykge1xuXHRcdHZhciBtaWRDbGljayA9IG9wdGlvbnMubWlkQ2xpY2sgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubWlkQ2xpY2sgOiAkLm1hZ25pZmljUG9wdXAuZGVmYXVsdHMubWlkQ2xpY2s7XG5cblxuXHRcdGlmKCFtaWRDbGljayAmJiAoIGUud2hpY2ggPT09IDIgfHwgZS5jdHJsS2V5IHx8IGUubWV0YUtleSB8fCBlLmFsdEtleSB8fCBlLnNoaWZ0S2V5ICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIGRpc2FibGVPbiA9IG9wdGlvbnMuZGlzYWJsZU9uICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmRpc2FibGVPbiA6ICQubWFnbmlmaWNQb3B1cC5kZWZhdWx0cy5kaXNhYmxlT247XG5cblx0XHRpZihkaXNhYmxlT24pIHtcblx0XHRcdGlmKCQuaXNGdW5jdGlvbihkaXNhYmxlT24pKSB7XG5cdFx0XHRcdGlmKCAhZGlzYWJsZU9uLmNhbGwobWZwKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHsgLy8gZWxzZSBpdCdzIG51bWJlclxuXHRcdFx0XHRpZiggX3dpbmRvdy53aWR0aCgpIDwgZGlzYWJsZU9uICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYoZS50eXBlKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdC8vIFRoaXMgd2lsbCBwcmV2ZW50IHBvcHVwIGZyb20gY2xvc2luZyBpZiBlbGVtZW50IGlzIGluc2lkZSBhbmQgcG9wdXAgaXMgYWxyZWFkeSBvcGVuZWRcblx0XHRcdGlmKG1mcC5pc09wZW4pIHtcblx0XHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvcHRpb25zLmVsID0gJChlLm1mcEVsKTtcblx0XHRpZihvcHRpb25zLmRlbGVnYXRlKSB7XG5cdFx0XHRvcHRpb25zLml0ZW1zID0gZWwuZmluZChvcHRpb25zLmRlbGVnYXRlKTtcblx0XHR9XG5cdFx0bWZwLm9wZW4ob3B0aW9ucyk7XG5cdH0sXG5cblxuXHQvKipcblx0ICogVXBkYXRlcyB0ZXh0IG9uIHByZWxvYWRlclxuXHQgKi9cblx0dXBkYXRlU3RhdHVzOiBmdW5jdGlvbihzdGF0dXMsIHRleHQpIHtcblxuXHRcdGlmKG1mcC5wcmVsb2FkZXIpIHtcblx0XHRcdGlmKF9wcmV2U3RhdHVzICE9PSBzdGF0dXMpIHtcblx0XHRcdFx0bWZwLmNvbnRhaW5lci5yZW1vdmVDbGFzcygnbWZwLXMtJytfcHJldlN0YXR1cyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmKCF0ZXh0ICYmIHN0YXR1cyA9PT0gJ2xvYWRpbmcnKSB7XG5cdFx0XHRcdHRleHQgPSBtZnAuc3QudExvYWRpbmc7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkYXRhID0ge1xuXHRcdFx0XHRzdGF0dXM6IHN0YXR1cyxcblx0XHRcdFx0dGV4dDogdGV4dFxuXHRcdFx0fTtcblx0XHRcdC8vIGFsbG93cyB0byBtb2RpZnkgc3RhdHVzXG5cdFx0XHRfbWZwVHJpZ2dlcignVXBkYXRlU3RhdHVzJywgZGF0YSk7XG5cblx0XHRcdHN0YXR1cyA9IGRhdGEuc3RhdHVzO1xuXHRcdFx0dGV4dCA9IGRhdGEudGV4dDtcblxuXHRcdFx0bWZwLnByZWxvYWRlci5odG1sKHRleHQpO1xuXG5cdFx0XHRtZnAucHJlbG9hZGVyLmZpbmQoJ2EnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7XG5cdFx0XHRcdGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0bWZwLmNvbnRhaW5lci5hZGRDbGFzcygnbWZwLXMtJytzdGF0dXMpO1xuXHRcdFx0X3ByZXZTdGF0dXMgPSBzdGF0dXM7XG5cdFx0fVxuXHR9LFxuXG5cblx0Lypcblx0XHRcIlByaXZhdGVcIiBoZWxwZXJzIHRoYXQgYXJlbid0IHByaXZhdGUgYXQgYWxsXG5cdCAqL1xuXHQvLyBDaGVjayB0byBjbG9zZSBwb3B1cCBvciBub3Rcblx0Ly8gXCJ0YXJnZXRcIiBpcyBhbiBlbGVtZW50IHRoYXQgd2FzIGNsaWNrZWRcblx0X2NoZWNrSWZDbG9zZTogZnVuY3Rpb24odGFyZ2V0KSB7XG5cblx0XHRpZigkKHRhcmdldCkuaGFzQ2xhc3MoUFJFVkVOVF9DTE9TRV9DTEFTUykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgY2xvc2VPbkNvbnRlbnQgPSBtZnAuc3QuY2xvc2VPbkNvbnRlbnRDbGljaztcblx0XHR2YXIgY2xvc2VPbkJnID0gbWZwLnN0LmNsb3NlT25CZ0NsaWNrO1xuXG5cdFx0aWYoY2xvc2VPbkNvbnRlbnQgJiYgY2xvc2VPbkJnKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBXZSBjbG9zZSB0aGUgcG9wdXAgaWYgY2xpY2sgaXMgb24gY2xvc2UgYnV0dG9uIG9yIG9uIHByZWxvYWRlci4gT3IgaWYgdGhlcmUgaXMgbm8gY29udGVudC5cblx0XHRcdGlmKCFtZnAuY29udGVudCB8fCAkKHRhcmdldCkuaGFzQ2xhc3MoJ21mcC1jbG9zZScpIHx8IChtZnAucHJlbG9hZGVyICYmIHRhcmdldCA9PT0gbWZwLnByZWxvYWRlclswXSkgKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBpZiBjbGljayBpcyBvdXRzaWRlIHRoZSBjb250ZW50XG5cdFx0XHRpZiggICh0YXJnZXQgIT09IG1mcC5jb250ZW50WzBdICYmICEkLmNvbnRhaW5zKG1mcC5jb250ZW50WzBdLCB0YXJnZXQpKSAgKSB7XG5cdFx0XHRcdGlmKGNsb3NlT25CZykge1xuXHRcdFx0XHRcdC8vIGxhc3QgY2hlY2ssIGlmIHRoZSBjbGlja2VkIGVsZW1lbnQgaXMgaW4gRE9NLCAoaW4gY2FzZSBpdCdzIHJlbW92ZWQgb25jbGljaylcblx0XHRcdFx0XHRpZiggJC5jb250YWlucyhkb2N1bWVudCwgdGFyZ2V0KSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmKGNsb3NlT25Db250ZW50KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblx0X2FkZENsYXNzVG9NRlA6IGZ1bmN0aW9uKGNOYW1lKSB7XG5cdFx0bWZwLmJnT3ZlcmxheS5hZGRDbGFzcyhjTmFtZSk7XG5cdFx0bWZwLndyYXAuYWRkQ2xhc3MoY05hbWUpO1xuXHR9LFxuXHRfcmVtb3ZlQ2xhc3NGcm9tTUZQOiBmdW5jdGlvbihjTmFtZSkge1xuXHRcdHRoaXMuYmdPdmVybGF5LnJlbW92ZUNsYXNzKGNOYW1lKTtcblx0XHRtZnAud3JhcC5yZW1vdmVDbGFzcyhjTmFtZSk7XG5cdH0sXG5cdF9oYXNTY3JvbGxCYXI6IGZ1bmN0aW9uKHdpbkhlaWdodCkge1xuXHRcdHJldHVybiAoICAobWZwLmlzSUU3ID8gX2RvY3VtZW50LmhlaWdodCgpIDogZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQpID4gKHdpbkhlaWdodCB8fCBfd2luZG93LmhlaWdodCgpKSApO1xuXHR9LFxuXHRfc2V0Rm9jdXM6IGZ1bmN0aW9uKCkge1xuXHRcdChtZnAuc3QuZm9jdXMgPyBtZnAuY29udGVudC5maW5kKG1mcC5zdC5mb2N1cykuZXEoMCkgOiBtZnAud3JhcCkuZm9jdXMoKTtcblx0fSxcblx0X29uRm9jdXNJbjogZnVuY3Rpb24oZSkge1xuXHRcdGlmKCBlLnRhcmdldCAhPT0gbWZwLndyYXBbMF0gJiYgISQuY29udGFpbnMobWZwLndyYXBbMF0sIGUudGFyZ2V0KSApIHtcblx0XHRcdG1mcC5fc2V0Rm9jdXMoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdF9wYXJzZU1hcmt1cDogZnVuY3Rpb24odGVtcGxhdGUsIHZhbHVlcywgaXRlbSkge1xuXHRcdHZhciBhcnI7XG5cdFx0aWYoaXRlbS5kYXRhKSB7XG5cdFx0XHR2YWx1ZXMgPSAkLmV4dGVuZChpdGVtLmRhdGEsIHZhbHVlcyk7XG5cdFx0fVxuXHRcdF9tZnBUcmlnZ2VyKE1BUktVUF9QQVJTRV9FVkVOVCwgW3RlbXBsYXRlLCB2YWx1ZXMsIGl0ZW1dICk7XG5cblx0XHQkLmVhY2godmFsdWVzLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdFx0XHRpZih2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBmYWxzZSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGFyciA9IGtleS5zcGxpdCgnXycpO1xuXHRcdFx0aWYoYXJyLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0dmFyIGVsID0gdGVtcGxhdGUuZmluZChFVkVOVF9OUyArICctJythcnJbMF0pO1xuXG5cdFx0XHRcdGlmKGVsLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IGFyclsxXTtcblx0XHRcdFx0XHRpZihhdHRyID09PSAncmVwbGFjZVdpdGgnKSB7XG5cdFx0XHRcdFx0XHRpZihlbFswXSAhPT0gdmFsdWVbMF0pIHtcblx0XHRcdFx0XHRcdFx0ZWwucmVwbGFjZVdpdGgodmFsdWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyID09PSAnaW1nJykge1xuXHRcdFx0XHRcdFx0aWYoZWwuaXMoJ2ltZycpKSB7XG5cdFx0XHRcdFx0XHRcdGVsLmF0dHIoJ3NyYycsIHZhbHVlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGVsLnJlcGxhY2VXaXRoKCAkKCc8aW1nPicpLmF0dHIoJ3NyYycsIHZhbHVlKS5hdHRyKCdjbGFzcycsIGVsLmF0dHIoJ2NsYXNzJykpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGVsLmF0dHIoYXJyWzFdLCB2YWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRlbXBsYXRlLmZpbmQoRVZFTlRfTlMgKyAnLScra2V5KS5odG1sKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblxuXHRfZ2V0U2Nyb2xsYmFyU2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0Ly8gdGh4IERhdmlkXG5cdFx0aWYobWZwLnNjcm9sbGJhclNpemUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dmFyIHNjcm9sbERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdFx0XHRzY3JvbGxEaXYuc3R5bGUuY3NzVGV4dCA9ICd3aWR0aDogOTlweDsgaGVpZ2h0OiA5OXB4OyBvdmVyZmxvdzogc2Nyb2xsOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTk5OTlweDsnO1xuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JvbGxEaXYpO1xuXHRcdFx0bWZwLnNjcm9sbGJhclNpemUgPSBzY3JvbGxEaXYub2Zmc2V0V2lkdGggLSBzY3JvbGxEaXYuY2xpZW50V2lkdGg7XG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbERpdik7XG5cdFx0fVxuXHRcdHJldHVybiBtZnAuc2Nyb2xsYmFyU2l6ZTtcblx0fVxuXG59OyAvKiBNYWduaWZpY1BvcHVwIGNvcmUgcHJvdG90eXBlIGVuZCAqL1xuXG5cblxuXG4vKipcbiAqIFB1YmxpYyBzdGF0aWMgZnVuY3Rpb25zXG4gKi9cbiQubWFnbmlmaWNQb3B1cCA9IHtcblx0aW5zdGFuY2U6IG51bGwsXG5cdHByb3RvOiBNYWduaWZpY1BvcHVwLnByb3RvdHlwZSxcblx0bW9kdWxlczogW10sXG5cblx0b3BlbjogZnVuY3Rpb24ob3B0aW9ucywgaW5kZXgpIHtcblx0XHRfY2hlY2tJbnN0YW5jZSgpO1xuXG5cdFx0aWYoIW9wdGlvbnMpIHtcblx0XHRcdG9wdGlvbnMgPSB7fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRpb25zKTtcblx0XHR9XG5cblx0XHRvcHRpb25zLmlzT2JqID0gdHJ1ZTtcblx0XHRvcHRpb25zLmluZGV4ID0gaW5kZXggfHwgMDtcblx0XHRyZXR1cm4gdGhpcy5pbnN0YW5jZS5vcGVuKG9wdGlvbnMpO1xuXHR9LFxuXG5cdGNsb3NlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gJC5tYWduaWZpY1BvcHVwLmluc3RhbmNlICYmICQubWFnbmlmaWNQb3B1cC5pbnN0YW5jZS5jbG9zZSgpO1xuXHR9LFxuXG5cdHJlZ2lzdGVyTW9kdWxlOiBmdW5jdGlvbihuYW1lLCBtb2R1bGUpIHtcblx0XHRpZihtb2R1bGUub3B0aW9ucykge1xuXHRcdFx0JC5tYWduaWZpY1BvcHVwLmRlZmF1bHRzW25hbWVdID0gbW9kdWxlLm9wdGlvbnM7XG5cdFx0fVxuXHRcdCQuZXh0ZW5kKHRoaXMucHJvdG8sIG1vZHVsZS5wcm90byk7XG5cdFx0dGhpcy5tb2R1bGVzLnB1c2gobmFtZSk7XG5cdH0sXG5cblx0ZGVmYXVsdHM6IHtcblxuXHRcdC8vIEluZm8gYWJvdXQgb3B0aW9ucyBpcyBpbiBkb2NzOlxuXHRcdC8vIGh0dHA6Ly9kaW1zZW1lbm92LmNvbS9wbHVnaW5zL21hZ25pZmljLXBvcHVwL2RvY3VtZW50YXRpb24uaHRtbCNvcHRpb25zXG5cblx0XHRkaXNhYmxlT246IDAsXG5cblx0XHRrZXk6IG51bGwsXG5cblx0XHRtaWRDbGljazogZmFsc2UsXG5cblx0XHRtYWluQ2xhc3M6ICcnLFxuXG5cdFx0cHJlbG9hZGVyOiB0cnVlLFxuXG5cdFx0Zm9jdXM6ICcnLCAvLyBDU1Mgc2VsZWN0b3Igb2YgaW5wdXQgdG8gZm9jdXMgYWZ0ZXIgcG9wdXAgaXMgb3BlbmVkXG5cblx0XHRjbG9zZU9uQ29udGVudENsaWNrOiBmYWxzZSxcblxuXHRcdGNsb3NlT25CZ0NsaWNrOiB0cnVlLFxuXG5cdFx0Y2xvc2VCdG5JbnNpZGU6IHRydWUsXG5cblx0XHRzaG93Q2xvc2VCdG46IHRydWUsXG5cblx0XHRlbmFibGVFc2NhcGVLZXk6IHRydWUsXG5cblx0XHRtb2RhbDogZmFsc2UsXG5cblx0XHRhbGlnblRvcDogZmFsc2UsXG5cblx0XHRyZW1vdmFsRGVsYXk6IDAsXG5cblx0XHRwcmVwZW5kVG86IG51bGwsXG5cblx0XHRmaXhlZENvbnRlbnRQb3M6ICdhdXRvJyxcblxuXHRcdGZpeGVkQmdQb3M6ICdhdXRvJyxcblxuXHRcdG92ZXJmbG93WTogJ2F1dG8nLFxuXG5cdFx0Y2xvc2VNYXJrdXA6ICc8YnV0dG9uIHRpdGxlPVwiJXRpdGxlJVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1mcC1jbG9zZVwiPiYjMjE1OzwvYnV0dG9uPicsXG5cblx0XHR0Q2xvc2U6ICdDbG9zZSAoRXNjKScsXG5cblx0XHR0TG9hZGluZzogJ0xvYWRpbmcuLi4nLFxuXG5cdFx0YXV0b0ZvY3VzTGFzdDogdHJ1ZVxuXG5cdH1cbn07XG5cblxuXG4kLmZuLm1hZ25pZmljUG9wdXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG5cdF9jaGVja0luc3RhbmNlKCk7XG5cblx0dmFyIGpxRWwgPSAkKHRoaXMpO1xuXG5cdC8vIFdlIGNhbGwgc29tZSBBUEkgbWV0aG9kIG9mIGZpcnN0IHBhcmFtIGlzIGEgc3RyaW5nXG5cdGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiApIHtcblxuXHRcdGlmKG9wdGlvbnMgPT09ICdvcGVuJykge1xuXHRcdFx0dmFyIGl0ZW1zLFxuXHRcdFx0XHRpdGVtT3B0cyA9IF9pc0pRID8ganFFbC5kYXRhKCdtYWduaWZpY1BvcHVwJykgOiBqcUVsWzBdLm1hZ25pZmljUG9wdXAsXG5cdFx0XHRcdGluZGV4ID0gcGFyc2VJbnQoYXJndW1lbnRzWzFdLCAxMCkgfHwgMDtcblxuXHRcdFx0aWYoaXRlbU9wdHMuaXRlbXMpIHtcblx0XHRcdFx0aXRlbXMgPSBpdGVtT3B0cy5pdGVtc1tpbmRleF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpdGVtcyA9IGpxRWw7XG5cdFx0XHRcdGlmKGl0ZW1PcHRzLmRlbGVnYXRlKSB7XG5cdFx0XHRcdFx0aXRlbXMgPSBpdGVtcy5maW5kKGl0ZW1PcHRzLmRlbGVnYXRlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpdGVtcyA9IGl0ZW1zLmVxKCBpbmRleCApO1xuXHRcdFx0fVxuXHRcdFx0bWZwLl9vcGVuQ2xpY2soe21mcEVsOml0ZW1zfSwganFFbCwgaXRlbU9wdHMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZihtZnAuaXNPcGVuKVxuXHRcdFx0XHRtZnBbb3B0aW9uc10uYXBwbHkobWZwLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblx0XHQvLyBjbG9uZSBvcHRpb25zIG9ialxuXHRcdG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0aW9ucyk7XG5cblx0XHQvKlxuXHRcdCAqIEFzIFplcHRvIGRvZXNuJ3Qgc3VwcG9ydCAuZGF0YSgpIG1ldGhvZCBmb3Igb2JqZWN0c1xuXHRcdCAqIGFuZCBpdCB3b3JrcyBvbmx5IGluIG5vcm1hbCBicm93c2Vyc1xuXHRcdCAqIHdlIGFzc2lnbiBcIm9wdGlvbnNcIiBvYmplY3QgZGlyZWN0bHkgdG8gdGhlIERPTSBlbGVtZW50LiBGVFchXG5cdFx0ICovXG5cdFx0aWYoX2lzSlEpIHtcblx0XHRcdGpxRWwuZGF0YSgnbWFnbmlmaWNQb3B1cCcsIG9wdGlvbnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcUVsWzBdLm1hZ25pZmljUG9wdXAgPSBvcHRpb25zO1xuXHRcdH1cblxuXHRcdG1mcC5hZGRHcm91cChqcUVsLCBvcHRpb25zKTtcblxuXHR9XG5cdHJldHVybiBqcUVsO1xufTtcblxuLyo+PmNvcmUqL1xuXG4vKj4+aW5saW5lKi9cblxudmFyIElOTElORV9OUyA9ICdpbmxpbmUnLFxuXHRfaGlkZGVuQ2xhc3MsXG5cdF9pbmxpbmVQbGFjZWhvbGRlcixcblx0X2xhc3RJbmxpbmVFbGVtZW50LFxuXHRfcHV0SW5saW5lRWxlbWVudHNCYWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoX2xhc3RJbmxpbmVFbGVtZW50KSB7XG5cdFx0XHRfaW5saW5lUGxhY2Vob2xkZXIuYWZ0ZXIoIF9sYXN0SW5saW5lRWxlbWVudC5hZGRDbGFzcyhfaGlkZGVuQ2xhc3MpICkuZGV0YWNoKCk7XG5cdFx0XHRfbGFzdElubGluZUVsZW1lbnQgPSBudWxsO1xuXHRcdH1cblx0fTtcblxuJC5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKElOTElORV9OUywge1xuXHRvcHRpb25zOiB7XG5cdFx0aGlkZGVuQ2xhc3M6ICdoaWRlJywgLy8gd2lsbCBiZSBhcHBlbmRlZCB3aXRoIGBtZnAtYCBwcmVmaXhcblx0XHRtYXJrdXA6ICcnLFxuXHRcdHROb3RGb3VuZDogJ0NvbnRlbnQgbm90IGZvdW5kJ1xuXHR9LFxuXHRwcm90bzoge1xuXG5cdFx0aW5pdElubGluZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRtZnAudHlwZXMucHVzaChJTkxJTkVfTlMpO1xuXG5cdFx0XHRfbWZwT24oQ0xPU0VfRVZFTlQrJy4nK0lOTElORV9OUywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdF9wdXRJbmxpbmVFbGVtZW50c0JhY2soKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cblx0XHRnZXRJbmxpbmU6IGZ1bmN0aW9uKGl0ZW0sIHRlbXBsYXRlKSB7XG5cblx0XHRcdF9wdXRJbmxpbmVFbGVtZW50c0JhY2soKTtcblxuXHRcdFx0aWYoaXRlbS5zcmMpIHtcblx0XHRcdFx0dmFyIGlubGluZVN0ID0gbWZwLnN0LmlubGluZSxcblx0XHRcdFx0XHRlbCA9ICQoaXRlbS5zcmMpO1xuXG5cdFx0XHRcdGlmKGVsLmxlbmd0aCkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgdGFyZ2V0IGVsZW1lbnQgaGFzIHBhcmVudCAtIHdlIHJlcGxhY2UgaXQgd2l0aCBwbGFjZWhvbGRlciBhbmQgcHV0IGl0IGJhY2sgYWZ0ZXIgcG9wdXAgaXMgY2xvc2VkXG5cdFx0XHRcdFx0dmFyIHBhcmVudCA9IGVsWzBdLnBhcmVudE5vZGU7XG5cdFx0XHRcdFx0aWYocGFyZW50ICYmIHBhcmVudC50YWdOYW1lKSB7XG5cdFx0XHRcdFx0XHRpZighX2lubGluZVBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0XHRcdF9oaWRkZW5DbGFzcyA9IGlubGluZVN0LmhpZGRlbkNsYXNzO1xuXHRcdFx0XHRcdFx0XHRfaW5saW5lUGxhY2Vob2xkZXIgPSBfZ2V0RWwoX2hpZGRlbkNsYXNzKTtcblx0XHRcdFx0XHRcdFx0X2hpZGRlbkNsYXNzID0gJ21mcC0nK19oaWRkZW5DbGFzcztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIHJlcGxhY2UgdGFyZ2V0IGlubGluZSBlbGVtZW50IHdpdGggcGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdF9sYXN0SW5saW5lRWxlbWVudCA9IGVsLmFmdGVyKF9pbmxpbmVQbGFjZWhvbGRlcikuZGV0YWNoKCkucmVtb3ZlQ2xhc3MoX2hpZGRlbkNsYXNzKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZnAudXBkYXRlU3RhdHVzKCdyZWFkeScpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG1mcC51cGRhdGVTdGF0dXMoJ2Vycm9yJywgaW5saW5lU3QudE5vdEZvdW5kKTtcblx0XHRcdFx0XHRlbCA9ICQoJzxkaXY+Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpdGVtLmlubGluZUVsZW1lbnQgPSBlbDtcblx0XHRcdFx0cmV0dXJuIGVsO1xuXHRcdFx0fVxuXG5cdFx0XHRtZnAudXBkYXRlU3RhdHVzKCdyZWFkeScpO1xuXHRcdFx0bWZwLl9wYXJzZU1hcmt1cCh0ZW1wbGF0ZSwge30sIGl0ZW0pO1xuXHRcdFx0cmV0dXJuIHRlbXBsYXRlO1xuXHRcdH1cblx0fVxufSk7XG5cbi8qPj5pbmxpbmUqL1xuXG4vKj4+YWpheCovXG52YXIgQUpBWF9OUyA9ICdhamF4Jyxcblx0X2FqYXhDdXIsXG5cdF9yZW1vdmVBamF4Q3Vyc29yID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoX2FqYXhDdXIpIHtcblx0XHRcdCQoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoX2FqYXhDdXIpO1xuXHRcdH1cblx0fSxcblx0X2Rlc3Ryb3lBamF4UmVxdWVzdCA9IGZ1bmN0aW9uKCkge1xuXHRcdF9yZW1vdmVBamF4Q3Vyc29yKCk7XG5cdFx0aWYobWZwLnJlcSkge1xuXHRcdFx0bWZwLnJlcS5hYm9ydCgpO1xuXHRcdH1cblx0fTtcblxuJC5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKEFKQVhfTlMsIHtcblxuXHRvcHRpb25zOiB7XG5cdFx0c2V0dGluZ3M6IG51bGwsXG5cdFx0Y3Vyc29yOiAnbWZwLWFqYXgtY3VyJyxcblx0XHR0RXJyb3I6ICc8YSBocmVmPVwiJXVybCVcIj5UaGUgY29udGVudDwvYT4gY291bGQgbm90IGJlIGxvYWRlZC4nXG5cdH0sXG5cblx0cHJvdG86IHtcblx0XHRpbml0QWpheDogZnVuY3Rpb24oKSB7XG5cdFx0XHRtZnAudHlwZXMucHVzaChBSkFYX05TKTtcblx0XHRcdF9hamF4Q3VyID0gbWZwLnN0LmFqYXguY3Vyc29yO1xuXG5cdFx0XHRfbWZwT24oQ0xPU0VfRVZFTlQrJy4nK0FKQVhfTlMsIF9kZXN0cm95QWpheFJlcXVlc3QpO1xuXHRcdFx0X21mcE9uKCdCZWZvcmVDaGFuZ2UuJyArIEFKQVhfTlMsIF9kZXN0cm95QWpheFJlcXVlc3QpO1xuXHRcdH0sXG5cdFx0Z2V0QWpheDogZnVuY3Rpb24oaXRlbSkge1xuXG5cdFx0XHRpZihfYWpheEN1cikge1xuXHRcdFx0XHQkKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKF9hamF4Q3VyKTtcblx0XHRcdH1cblxuXHRcdFx0bWZwLnVwZGF0ZVN0YXR1cygnbG9hZGluZycpO1xuXG5cdFx0XHR2YXIgb3B0cyA9ICQuZXh0ZW5kKHtcblx0XHRcdFx0dXJsOiBpdGVtLnNyYyxcblx0XHRcdFx0c3VjY2VzczogZnVuY3Rpb24oZGF0YSwgdGV4dFN0YXR1cywganFYSFIpIHtcblx0XHRcdFx0XHR2YXIgdGVtcCA9IHtcblx0XHRcdFx0XHRcdGRhdGE6ZGF0YSxcblx0XHRcdFx0XHRcdHhocjpqcVhIUlxuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRfbWZwVHJpZ2dlcignUGFyc2VBamF4JywgdGVtcCk7XG5cblx0XHRcdFx0XHRtZnAuYXBwZW5kQ29udGVudCggJCh0ZW1wLmRhdGEpLCBBSkFYX05TICk7XG5cblx0XHRcdFx0XHRpdGVtLmZpbmlzaGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdF9yZW1vdmVBamF4Q3Vyc29yKCk7XG5cblx0XHRcdFx0XHRtZnAuX3NldEZvY3VzKCk7XG5cblx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0bWZwLndyYXAuYWRkQ2xhc3MoUkVBRFlfQ0xBU1MpO1xuXHRcdFx0XHRcdH0sIDE2KTtcblxuXHRcdFx0XHRcdG1mcC51cGRhdGVTdGF0dXMoJ3JlYWR5Jyk7XG5cblx0XHRcdFx0XHRfbWZwVHJpZ2dlcignQWpheENvbnRlbnRBZGRlZCcpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0X3JlbW92ZUFqYXhDdXJzb3IoKTtcblx0XHRcdFx0XHRpdGVtLmZpbmlzaGVkID0gaXRlbS5sb2FkRXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRcdG1mcC51cGRhdGVTdGF0dXMoJ2Vycm9yJywgbWZwLnN0LmFqYXgudEVycm9yLnJlcGxhY2UoJyV1cmwlJywgaXRlbS5zcmMpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgbWZwLnN0LmFqYXguc2V0dGluZ3MpO1xuXG5cdFx0XHRtZnAucmVxID0gJC5hamF4KG9wdHMpO1xuXG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHR9XG59KTtcblxuLyo+PmFqYXgqL1xuXG4vKj4+aW1hZ2UqL1xudmFyIF9pbWdJbnRlcnZhbCxcblx0X2dldFRpdGxlID0gZnVuY3Rpb24oaXRlbSkge1xuXHRcdGlmKGl0ZW0uZGF0YSAmJiBpdGVtLmRhdGEudGl0bGUgIT09IHVuZGVmaW5lZClcblx0XHRcdHJldHVybiBpdGVtLmRhdGEudGl0bGU7XG5cblx0XHR2YXIgc3JjID0gbWZwLnN0LmltYWdlLnRpdGxlU3JjO1xuXG5cdFx0aWYoc3JjKSB7XG5cdFx0XHRpZigkLmlzRnVuY3Rpb24oc3JjKSkge1xuXHRcdFx0XHRyZXR1cm4gc3JjLmNhbGwobWZwLCBpdGVtKTtcblx0XHRcdH0gZWxzZSBpZihpdGVtLmVsKSB7XG5cdFx0XHRcdHJldHVybiBpdGVtLmVsLmF0dHIoc3JjKSB8fCAnJztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuICcnO1xuXHR9O1xuXG4kLm1hZ25pZmljUG9wdXAucmVnaXN0ZXJNb2R1bGUoJ2ltYWdlJywge1xuXG5cdG9wdGlvbnM6IHtcblx0XHRtYXJrdXA6ICc8ZGl2IGNsYXNzPVwibWZwLWZpZ3VyZVwiPicrXG5cdFx0XHRcdFx0JzxkaXYgY2xhc3M9XCJtZnAtY2xvc2VcIj48L2Rpdj4nK1xuXHRcdFx0XHRcdCc8ZmlndXJlPicrXG5cdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIm1mcC1pbWdcIj48L2Rpdj4nK1xuXHRcdFx0XHRcdFx0JzxmaWdjYXB0aW9uPicrXG5cdFx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwibWZwLWJvdHRvbS1iYXJcIj4nK1xuXHRcdFx0XHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwibWZwLXRpdGxlXCI+PC9kaXY+Jytcblx0XHRcdFx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIm1mcC1jb3VudGVyXCI+PC9kaXY+Jytcblx0XHRcdFx0XHRcdFx0JzwvZGl2PicrXG5cdFx0XHRcdFx0XHQnPC9maWdjYXB0aW9uPicrXG5cdFx0XHRcdFx0JzwvZmlndXJlPicrXG5cdFx0XHRcdCc8L2Rpdj4nLFxuXHRcdGN1cnNvcjogJ21mcC16b29tLW91dC1jdXInLFxuXHRcdHRpdGxlU3JjOiAndGl0bGUnLFxuXHRcdHZlcnRpY2FsRml0OiB0cnVlLFxuXHRcdHRFcnJvcjogJzxhIGhyZWY9XCIldXJsJVwiPlRoZSBpbWFnZTwvYT4gY291bGQgbm90IGJlIGxvYWRlZC4nXG5cdH0sXG5cblx0cHJvdG86IHtcblx0XHRpbml0SW1hZ2U6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGltZ1N0ID0gbWZwLnN0LmltYWdlLFxuXHRcdFx0XHRucyA9ICcuaW1hZ2UnO1xuXG5cdFx0XHRtZnAudHlwZXMucHVzaCgnaW1hZ2UnKTtcblxuXHRcdFx0X21mcE9uKE9QRU5fRVZFTlQrbnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihtZnAuY3Vyckl0ZW0udHlwZSA9PT0gJ2ltYWdlJyAmJiBpbWdTdC5jdXJzb3IpIHtcblx0XHRcdFx0XHQkKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKGltZ1N0LmN1cnNvcik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRfbWZwT24oQ0xPU0VfRVZFTlQrbnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihpbWdTdC5jdXJzb3IpIHtcblx0XHRcdFx0XHQkKGRvY3VtZW50LmJvZHkpLnJlbW92ZUNsYXNzKGltZ1N0LmN1cnNvcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0X3dpbmRvdy5vZmYoJ3Jlc2l6ZScgKyBFVkVOVF9OUyk7XG5cdFx0XHR9KTtcblxuXHRcdFx0X21mcE9uKCdSZXNpemUnK25zLCBtZnAucmVzaXplSW1hZ2UpO1xuXHRcdFx0aWYobWZwLmlzTG93SUUpIHtcblx0XHRcdFx0X21mcE9uKCdBZnRlckNoYW5nZScsIG1mcC5yZXNpemVJbWFnZSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRyZXNpemVJbWFnZTogZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaXRlbSA9IG1mcC5jdXJySXRlbTtcblx0XHRcdGlmKCFpdGVtIHx8ICFpdGVtLmltZykgcmV0dXJuO1xuXG5cdFx0XHRpZihtZnAuc3QuaW1hZ2UudmVydGljYWxGaXQpIHtcblx0XHRcdFx0dmFyIGRlY3IgPSAwO1xuXHRcdFx0XHQvLyBmaXggYm94LXNpemluZyBpbiBpZTcvOFxuXHRcdFx0XHRpZihtZnAuaXNMb3dJRSkge1xuXHRcdFx0XHRcdGRlY3IgPSBwYXJzZUludChpdGVtLmltZy5jc3MoJ3BhZGRpbmctdG9wJyksIDEwKSArIHBhcnNlSW50KGl0ZW0uaW1nLmNzcygncGFkZGluZy1ib3R0b20nKSwxMCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aXRlbS5pbWcuY3NzKCdtYXgtaGVpZ2h0JywgbWZwLndILWRlY3IpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0X29uSW1hZ2VIYXNTaXplOiBmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHRpZihpdGVtLmltZykge1xuXG5cdFx0XHRcdGl0ZW0uaGFzU2l6ZSA9IHRydWU7XG5cblx0XHRcdFx0aWYoX2ltZ0ludGVydmFsKSB7XG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbChfaW1nSW50ZXJ2YWwpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aXRlbS5pc0NoZWNraW5nSW1nU2l6ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdF9tZnBUcmlnZ2VyKCdJbWFnZUhhc1NpemUnLCBpdGVtKTtcblxuXHRcdFx0XHRpZihpdGVtLmltZ0hpZGRlbikge1xuXHRcdFx0XHRcdGlmKG1mcC5jb250ZW50KVxuXHRcdFx0XHRcdFx0bWZwLmNvbnRlbnQucmVtb3ZlQ2xhc3MoJ21mcC1sb2FkaW5nJyk7XG5cblx0XHRcdFx0XHRpdGVtLmltZ0hpZGRlbiA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogRnVuY3Rpb24gdGhhdCBsb29wcyB1bnRpbCB0aGUgaW1hZ2UgaGFzIHNpemUgdG8gZGlzcGxheSBlbGVtZW50cyB0aGF0IHJlbHkgb24gaXQgYXNhcFxuXHRcdCAqL1xuXHRcdGZpbmRJbWFnZVNpemU6IGZ1bmN0aW9uKGl0ZW0pIHtcblxuXHRcdFx0dmFyIGNvdW50ZXIgPSAwLFxuXHRcdFx0XHRpbWcgPSBpdGVtLmltZ1swXSxcblx0XHRcdFx0bWZwU2V0SW50ZXJ2YWwgPSBmdW5jdGlvbihkZWxheSkge1xuXG5cdFx0XHRcdFx0aWYoX2ltZ0ludGVydmFsKSB7XG5cdFx0XHRcdFx0XHRjbGVhckludGVydmFsKF9pbWdJbnRlcnZhbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRlY2VsZXJhdGluZyBpbnRlcnZhbCB0aGF0IGNoZWNrcyBmb3Igc2l6ZSBvZiBhbiBpbWFnZVxuXHRcdFx0XHRcdF9pbWdJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYoaW1nLm5hdHVyYWxXaWR0aCA+IDApIHtcblx0XHRcdFx0XHRcdFx0bWZwLl9vbkltYWdlSGFzU2l6ZShpdGVtKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZihjb3VudGVyID4gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwoX2ltZ0ludGVydmFsKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y291bnRlcisrO1xuXHRcdFx0XHRcdFx0aWYoY291bnRlciA9PT0gMykge1xuXHRcdFx0XHRcdFx0XHRtZnBTZXRJbnRlcnZhbCgxMCk7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYoY291bnRlciA9PT0gNDApIHtcblx0XHRcdFx0XHRcdFx0bWZwU2V0SW50ZXJ2YWwoNTApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKGNvdW50ZXIgPT09IDEwMCkge1xuXHRcdFx0XHRcdFx0XHRtZnBTZXRJbnRlcnZhbCg1MDApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sIGRlbGF5KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0bWZwU2V0SW50ZXJ2YWwoMSk7XG5cdFx0fSxcblxuXHRcdGdldEltYWdlOiBmdW5jdGlvbihpdGVtLCB0ZW1wbGF0ZSkge1xuXG5cdFx0XHR2YXIgZ3VhcmQgPSAwLFxuXG5cdFx0XHRcdC8vIGltYWdlIGxvYWQgY29tcGxldGUgaGFuZGxlclxuXHRcdFx0XHRvbkxvYWRDb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmKGl0ZW0pIHtcblx0XHRcdFx0XHRcdGlmIChpdGVtLmltZ1swXS5jb21wbGV0ZSkge1xuXHRcdFx0XHRcdFx0XHRpdGVtLmltZy5vZmYoJy5tZnBsb2FkZXInKTtcblxuXHRcdFx0XHRcdFx0XHRpZihpdGVtID09PSBtZnAuY3Vyckl0ZW0pe1xuXHRcdFx0XHRcdFx0XHRcdG1mcC5fb25JbWFnZUhhc1NpemUoaXRlbSk7XG5cblx0XHRcdFx0XHRcdFx0XHRtZnAudXBkYXRlU3RhdHVzKCdyZWFkeScpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aXRlbS5oYXNTaXplID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0aXRlbS5sb2FkZWQgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRcdF9tZnBUcmlnZ2VyKCdJbWFnZUxvYWRDb21wbGV0ZScpO1xuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYgaW1hZ2UgY29tcGxldGUgY2hlY2sgZmFpbHMgMjAwIHRpbWVzICgyMCBzZWMpLCB3ZSBhc3N1bWUgdGhhdCB0aGVyZSB3YXMgYW4gZXJyb3IuXG5cdFx0XHRcdFx0XHRcdGd1YXJkKys7XG5cdFx0XHRcdFx0XHRcdGlmKGd1YXJkIDwgMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0c2V0VGltZW91dChvbkxvYWRDb21wbGV0ZSwxMDApO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdG9uTG9hZEVycm9yKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gaW1hZ2UgZXJyb3IgaGFuZGxlclxuXHRcdFx0XHRvbkxvYWRFcnJvciA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmKGl0ZW0pIHtcblx0XHRcdFx0XHRcdGl0ZW0uaW1nLm9mZignLm1mcGxvYWRlcicpO1xuXHRcdFx0XHRcdFx0aWYoaXRlbSA9PT0gbWZwLmN1cnJJdGVtKXtcblx0XHRcdFx0XHRcdFx0bWZwLl9vbkltYWdlSGFzU2l6ZShpdGVtKTtcblx0XHRcdFx0XHRcdFx0bWZwLnVwZGF0ZVN0YXR1cygnZXJyb3InLCBpbWdTdC50RXJyb3IucmVwbGFjZSgnJXVybCUnLCBpdGVtLnNyYykgKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aXRlbS5oYXNTaXplID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGl0ZW0ubG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGl0ZW0ubG9hZEVycm9yID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGltZ1N0ID0gbWZwLnN0LmltYWdlO1xuXG5cblx0XHRcdHZhciBlbCA9IHRlbXBsYXRlLmZpbmQoJy5tZnAtaW1nJyk7XG5cdFx0XHRpZihlbC5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXHRcdFx0XHRpbWcuY2xhc3NOYW1lID0gJ21mcC1pbWcnO1xuXHRcdFx0XHRpZihpdGVtLmVsICYmIGl0ZW0uZWwuZmluZCgnaW1nJykubGVuZ3RoKSB7XG5cdFx0XHRcdFx0aW1nLmFsdCA9IGl0ZW0uZWwuZmluZCgnaW1nJykuYXR0cignYWx0Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aXRlbS5pbWcgPSAkKGltZykub24oJ2xvYWQubWZwbG9hZGVyJywgb25Mb2FkQ29tcGxldGUpLm9uKCdlcnJvci5tZnBsb2FkZXInLCBvbkxvYWRFcnJvcik7XG5cdFx0XHRcdGltZy5zcmMgPSBpdGVtLnNyYztcblxuXHRcdFx0XHQvLyB3aXRob3V0IGNsb25lKCkgXCJlcnJvclwiIGV2ZW50IGlzIG5vdCBmaXJpbmcgd2hlbiBJTUcgaXMgcmVwbGFjZWQgYnkgbmV3IElNR1xuXHRcdFx0XHQvLyBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHN1Y2ggY2xvbmluZ1xuXHRcdFx0XHRpZihlbC5pcygnaW1nJykpIHtcblx0XHRcdFx0XHRpdGVtLmltZyA9IGl0ZW0uaW1nLmNsb25lKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbWcgPSBpdGVtLmltZ1swXTtcblx0XHRcdFx0aWYoaW1nLm5hdHVyYWxXaWR0aCA+IDApIHtcblx0XHRcdFx0XHRpdGVtLmhhc1NpemUgPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYoIWltZy53aWR0aCkge1xuXHRcdFx0XHRcdGl0ZW0uaGFzU2l6ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdG1mcC5fcGFyc2VNYXJrdXAodGVtcGxhdGUsIHtcblx0XHRcdFx0dGl0bGU6IF9nZXRUaXRsZShpdGVtKSxcblx0XHRcdFx0aW1nX3JlcGxhY2VXaXRoOiBpdGVtLmltZ1xuXHRcdFx0fSwgaXRlbSk7XG5cblx0XHRcdG1mcC5yZXNpemVJbWFnZSgpO1xuXG5cdFx0XHRpZihpdGVtLmhhc1NpemUpIHtcblx0XHRcdFx0aWYoX2ltZ0ludGVydmFsKSBjbGVhckludGVydmFsKF9pbWdJbnRlcnZhbCk7XG5cblx0XHRcdFx0aWYoaXRlbS5sb2FkRXJyb3IpIHtcblx0XHRcdFx0XHR0ZW1wbGF0ZS5hZGRDbGFzcygnbWZwLWxvYWRpbmcnKTtcblx0XHRcdFx0XHRtZnAudXBkYXRlU3RhdHVzKCdlcnJvcicsIGltZ1N0LnRFcnJvci5yZXBsYWNlKCcldXJsJScsIGl0ZW0uc3JjKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRlbXBsYXRlLnJlbW92ZUNsYXNzKCdtZnAtbG9hZGluZycpO1xuXHRcdFx0XHRcdG1mcC51cGRhdGVTdGF0dXMoJ3JlYWR5Jyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRlbXBsYXRlO1xuXHRcdFx0fVxuXG5cdFx0XHRtZnAudXBkYXRlU3RhdHVzKCdsb2FkaW5nJyk7XG5cdFx0XHRpdGVtLmxvYWRpbmcgPSB0cnVlO1xuXG5cdFx0XHRpZighaXRlbS5oYXNTaXplKSB7XG5cdFx0XHRcdGl0ZW0uaW1nSGlkZGVuID0gdHJ1ZTtcblx0XHRcdFx0dGVtcGxhdGUuYWRkQ2xhc3MoJ21mcC1sb2FkaW5nJyk7XG5cdFx0XHRcdG1mcC5maW5kSW1hZ2VTaXplKGl0ZW0pO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGVtcGxhdGU7XG5cdFx0fVxuXHR9XG59KTtcblxuLyo+PmltYWdlKi9cblxuLyo+Pnpvb20qL1xudmFyIGhhc01velRyYW5zZm9ybSxcblx0Z2V0SGFzTW96VHJhbnNmb3JtID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoaGFzTW96VHJhbnNmb3JtID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGhhc01velRyYW5zZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKS5zdHlsZS5Nb3pUcmFuc2Zvcm0gIT09IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIGhhc01velRyYW5zZm9ybTtcblx0fTtcblxuJC5tYWduaWZpY1BvcHVwLnJlZ2lzdGVyTW9kdWxlKCd6b29tJywge1xuXG5cdG9wdGlvbnM6IHtcblx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRlYXNpbmc6ICdlYXNlLWluLW91dCcsXG5cdFx0ZHVyYXRpb246IDMwMCxcblx0XHRvcGVuZXI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBlbGVtZW50LmlzKCdpbWcnKSA/IGVsZW1lbnQgOiBlbGVtZW50LmZpbmQoJ2ltZycpO1xuXHRcdH1cblx0fSxcblxuXHRwcm90bzoge1xuXG5cdFx0aW5pdFpvb206IGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHpvb21TdCA9IG1mcC5zdC56b29tLFxuXHRcdFx0XHRucyA9ICcuem9vbScsXG5cdFx0XHRcdGltYWdlO1xuXG5cdFx0XHRpZighem9vbVN0LmVuYWJsZWQgfHwgIW1mcC5zdXBwb3J0c1RyYW5zaXRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgZHVyYXRpb24gPSB6b29tU3QuZHVyYXRpb24sXG5cdFx0XHRcdGdldEVsVG9BbmltYXRlID0gZnVuY3Rpb24oaW1hZ2UpIHtcblx0XHRcdFx0XHR2YXIgbmV3SW1nID0gaW1hZ2UuY2xvbmUoKS5yZW1vdmVBdHRyKCdzdHlsZScpLnJlbW92ZUF0dHIoJ2NsYXNzJykuYWRkQ2xhc3MoJ21mcC1hbmltYXRlZC1pbWFnZScpLFxuXHRcdFx0XHRcdFx0dHJhbnNpdGlvbiA9ICdhbGwgJysoem9vbVN0LmR1cmF0aW9uLzEwMDApKydzICcgKyB6b29tU3QuZWFzaW5nLFxuXHRcdFx0XHRcdFx0Y3NzT2JqID0ge1xuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogJ2ZpeGVkJyxcblx0XHRcdFx0XHRcdFx0ekluZGV4OiA5OTk5LFxuXHRcdFx0XHRcdFx0XHRsZWZ0OiAwLFxuXHRcdFx0XHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdFx0XHRcdCctd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHknOiAnaGlkZGVuJ1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHQgPSAndHJhbnNpdGlvbic7XG5cblx0XHRcdFx0XHRjc3NPYmpbJy13ZWJraXQtJyt0XSA9IGNzc09ialsnLW1vei0nK3RdID0gY3NzT2JqWyctby0nK3RdID0gY3NzT2JqW3RdID0gdHJhbnNpdGlvbjtcblxuXHRcdFx0XHRcdG5ld0ltZy5jc3MoY3NzT2JqKTtcblx0XHRcdFx0XHRyZXR1cm4gbmV3SW1nO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaG93TWFpbkNvbnRlbnQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRtZnAuY29udGVudC5jc3MoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRvcGVuVGltZW91dCxcblx0XHRcdFx0YW5pbWF0ZWRJbWc7XG5cblx0XHRcdF9tZnBPbignQnVpbGRDb250cm9scycrbnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihtZnAuX2FsbG93Wm9vbSgpKSB7XG5cblx0XHRcdFx0XHRjbGVhclRpbWVvdXQob3BlblRpbWVvdXQpO1xuXHRcdFx0XHRcdG1mcC5jb250ZW50LmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcblxuXHRcdFx0XHRcdC8vIEJhc2ljYWxseSwgYWxsIGNvZGUgYmVsb3cgZG9lcyBpcyBjbG9uZXMgZXhpc3RpbmcgaW1hZ2UsIHB1dHMgaW4gb24gdG9wIG9mIHRoZSBjdXJyZW50IG9uZSBhbmQgYW5pbWF0ZWQgaXRcblxuXHRcdFx0XHRcdGltYWdlID0gbWZwLl9nZXRJdGVtVG9ab29tKCk7XG5cblx0XHRcdFx0XHRpZighaW1hZ2UpIHtcblx0XHRcdFx0XHRcdHNob3dNYWluQ29udGVudCgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGFuaW1hdGVkSW1nID0gZ2V0RWxUb0FuaW1hdGUoaW1hZ2UpO1xuXG5cdFx0XHRcdFx0YW5pbWF0ZWRJbWcuY3NzKCBtZnAuX2dldE9mZnNldCgpICk7XG5cblx0XHRcdFx0XHRtZnAud3JhcC5hcHBlbmQoYW5pbWF0ZWRJbWcpO1xuXG5cdFx0XHRcdFx0b3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0YW5pbWF0ZWRJbWcuY3NzKCBtZnAuX2dldE9mZnNldCggdHJ1ZSApICk7XG5cdFx0XHRcdFx0XHRvcGVuVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdFx0c2hvd01haW5Db250ZW50KCk7XG5cblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRlZEltZy5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdFx0XHRpbWFnZSA9IGFuaW1hdGVkSW1nID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0XHRfbWZwVHJpZ2dlcignWm9vbUFuaW1hdGlvbkVuZGVkJyk7XG5cdFx0XHRcdFx0XHRcdH0sIDE2KTsgLy8gYXZvaWQgYmxpbmsgd2hlbiBzd2l0Y2hpbmcgaW1hZ2VzXG5cblx0XHRcdFx0XHRcdH0sIGR1cmF0aW9uKTsgLy8gdGhpcyB0aW1lb3V0IGVxdWFscyBhbmltYXRpb24gZHVyYXRpb25cblxuXHRcdFx0XHRcdH0sIDE2KTsgLy8gYnkgYWRkaW5nIHRoaXMgdGltZW91dCB3ZSBhdm9pZCBzaG9ydCBnbGl0Y2ggYXQgdGhlIGJlZ2lubmluZyBvZiBhbmltYXRpb25cblxuXG5cdFx0XHRcdFx0Ly8gTG90cyBvZiB0aW1lb3V0cy4uLlxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdF9tZnBPbihCRUZPUkVfQ0xPU0VfRVZFTlQrbnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihtZnAuX2FsbG93Wm9vbSgpKSB7XG5cblx0XHRcdFx0XHRjbGVhclRpbWVvdXQob3BlblRpbWVvdXQpO1xuXG5cdFx0XHRcdFx0bWZwLnN0LnJlbW92YWxEZWxheSA9IGR1cmF0aW9uO1xuXG5cdFx0XHRcdFx0aWYoIWltYWdlKSB7XG5cdFx0XHRcdFx0XHRpbWFnZSA9IG1mcC5fZ2V0SXRlbVRvWm9vbSgpO1xuXHRcdFx0XHRcdFx0aWYoIWltYWdlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGFuaW1hdGVkSW1nID0gZ2V0RWxUb0FuaW1hdGUoaW1hZ2UpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGFuaW1hdGVkSW1nLmNzcyggbWZwLl9nZXRPZmZzZXQodHJ1ZSkgKTtcblx0XHRcdFx0XHRtZnAud3JhcC5hcHBlbmQoYW5pbWF0ZWRJbWcpO1xuXHRcdFx0XHRcdG1mcC5jb250ZW50LmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcblxuXHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRhbmltYXRlZEltZy5jc3MoIG1mcC5fZ2V0T2Zmc2V0KCkgKTtcblx0XHRcdFx0XHR9LCAxNik7XG5cdFx0XHRcdH1cblxuXHRcdFx0fSk7XG5cblx0XHRcdF9tZnBPbihDTE9TRV9FVkVOVCtucywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmKG1mcC5fYWxsb3dab29tKCkpIHtcblx0XHRcdFx0XHRzaG93TWFpbkNvbnRlbnQoKTtcblx0XHRcdFx0XHRpZihhbmltYXRlZEltZykge1xuXHRcdFx0XHRcdFx0YW5pbWF0ZWRJbWcucmVtb3ZlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGltYWdlID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdF9hbGxvd1pvb206IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIG1mcC5jdXJySXRlbS50eXBlID09PSAnaW1hZ2UnO1xuXHRcdH0sXG5cblx0XHRfZ2V0SXRlbVRvWm9vbTogZnVuY3Rpb24oKSB7XG5cdFx0XHRpZihtZnAuY3Vyckl0ZW0uaGFzU2l6ZSkge1xuXHRcdFx0XHRyZXR1cm4gbWZwLmN1cnJJdGVtLmltZztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gR2V0IGVsZW1lbnQgcG9zdGlvbiByZWxhdGl2ZSB0byB2aWV3cG9ydFxuXHRcdF9nZXRPZmZzZXQ6IGZ1bmN0aW9uKGlzTGFyZ2UpIHtcblx0XHRcdHZhciBlbDtcblx0XHRcdGlmKGlzTGFyZ2UpIHtcblx0XHRcdFx0ZWwgPSBtZnAuY3Vyckl0ZW0uaW1nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWwgPSBtZnAuc3Quem9vbS5vcGVuZXIobWZwLmN1cnJJdGVtLmVsIHx8IG1mcC5jdXJySXRlbSk7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBvZmZzZXQgPSBlbC5vZmZzZXQoKTtcblx0XHRcdHZhciBwYWRkaW5nVG9wID0gcGFyc2VJbnQoZWwuY3NzKCdwYWRkaW5nLXRvcCcpLDEwKTtcblx0XHRcdHZhciBwYWRkaW5nQm90dG9tID0gcGFyc2VJbnQoZWwuY3NzKCdwYWRkaW5nLWJvdHRvbScpLDEwKTtcblx0XHRcdG9mZnNldC50b3AgLT0gKCAkKHdpbmRvdykuc2Nyb2xsVG9wKCkgLSBwYWRkaW5nVG9wICk7XG5cblxuXHRcdFx0LypcblxuXHRcdFx0QW5pbWF0aW5nIGxlZnQgKyB0b3AgKyB3aWR0aC9oZWlnaHQgbG9va3MgZ2xpdGNoeSBpbiBGaXJlZm94LCBidXQgcGVyZmVjdCBpbiBDaHJvbWUuIEFuZCB2aWNlLXZlcnNhLlxuXG5cdFx0XHQgKi9cblx0XHRcdHZhciBvYmogPSB7XG5cdFx0XHRcdHdpZHRoOiBlbC53aWR0aCgpLFxuXHRcdFx0XHQvLyBmaXggWmVwdG8gaGVpZ2h0K3BhZGRpbmcgaXNzdWVcblx0XHRcdFx0aGVpZ2h0OiAoX2lzSlEgPyBlbC5pbm5lckhlaWdodCgpIDogZWxbMF0ub2Zmc2V0SGVpZ2h0KSAtIHBhZGRpbmdCb3R0b20gLSBwYWRkaW5nVG9wXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBJIGhhdGUgdG8gZG8gdGhpcywgYnV0IHRoZXJlIGlzIG5vIGFub3RoZXIgb3B0aW9uXG5cdFx0XHRpZiggZ2V0SGFzTW96VHJhbnNmb3JtKCkgKSB7XG5cdFx0XHRcdG9ialsnLW1vei10cmFuc2Zvcm0nXSA9IG9ialsndHJhbnNmb3JtJ10gPSAndHJhbnNsYXRlKCcgKyBvZmZzZXQubGVmdCArICdweCwnICsgb2Zmc2V0LnRvcCArICdweCknO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b2JqLmxlZnQgPSBvZmZzZXQubGVmdDtcblx0XHRcdFx0b2JqLnRvcCA9IG9mZnNldC50b3A7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb2JqO1xuXHRcdH1cblxuXHR9XG59KTtcblxuXG5cbi8qPj56b29tKi9cblxuLyo+PmlmcmFtZSovXG5cbnZhciBJRlJBTUVfTlMgPSAnaWZyYW1lJyxcblx0X2VtcHR5UGFnZSA9ICcvL2Fib3V0OmJsYW5rJyxcblxuXHRfZml4SWZyYW1lQnVncyA9IGZ1bmN0aW9uKGlzU2hvd2luZykge1xuXHRcdGlmKG1mcC5jdXJyVGVtcGxhdGVbSUZSQU1FX05TXSkge1xuXHRcdFx0dmFyIGVsID0gbWZwLmN1cnJUZW1wbGF0ZVtJRlJBTUVfTlNdLmZpbmQoJ2lmcmFtZScpO1xuXHRcdFx0aWYoZWwubGVuZ3RoKSB7XG5cdFx0XHRcdC8vIHJlc2V0IHNyYyBhZnRlciB0aGUgcG9wdXAgaXMgY2xvc2VkIHRvIGF2b2lkIFwidmlkZW8ga2VlcHMgcGxheWluZyBhZnRlciBwb3B1cCBpcyBjbG9zZWRcIiBidWdcblx0XHRcdFx0aWYoIWlzU2hvd2luZykge1xuXHRcdFx0XHRcdGVsWzBdLnNyYyA9IF9lbXB0eVBhZ2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJRTggYmxhY2sgc2NyZWVuIGJ1ZyBmaXhcblx0XHRcdFx0aWYobWZwLmlzSUU4KSB7XG5cdFx0XHRcdFx0ZWwuY3NzKCdkaXNwbGF5JywgaXNTaG93aW5nID8gJ2Jsb2NrJyA6ICdub25lJyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cbiQubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShJRlJBTUVfTlMsIHtcblxuXHRvcHRpb25zOiB7XG5cdFx0bWFya3VwOiAnPGRpdiBjbGFzcz1cIm1mcC1pZnJhbWUtc2NhbGVyXCI+Jytcblx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIm1mcC1jbG9zZVwiPjwvZGl2PicrXG5cdFx0XHRcdFx0JzxpZnJhbWUgY2xhc3M9XCJtZnAtaWZyYW1lXCIgc3JjPVwiLy9hYm91dDpibGFua1wiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nK1xuXHRcdFx0XHQnPC9kaXY+JyxcblxuXHRcdHNyY0FjdGlvbjogJ2lmcmFtZV9zcmMnLFxuXG5cdFx0Ly8gd2UgZG9uJ3QgY2FyZSBhbmQgc3VwcG9ydCBvbmx5IG9uZSBkZWZhdWx0IHR5cGUgb2YgVVJMIGJ5IGRlZmF1bHRcblx0XHRwYXR0ZXJuczoge1xuXHRcdFx0eW91dHViZToge1xuXHRcdFx0XHRpbmRleDogJ3lvdXR1YmUuY29tJyxcblx0XHRcdFx0aWQ6ICd2PScsXG5cdFx0XHRcdHNyYzogJy8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyVpZCU/YXV0b3BsYXk9MSdcblx0XHRcdH0sXG5cdFx0XHR2aW1lbzoge1xuXHRcdFx0XHRpbmRleDogJ3ZpbWVvLmNvbS8nLFxuXHRcdFx0XHRpZDogJy8nLFxuXHRcdFx0XHRzcmM6ICcvL3BsYXllci52aW1lby5jb20vdmlkZW8vJWlkJT9hdXRvcGxheT0xJ1xuXHRcdFx0fSxcblx0XHRcdGdtYXBzOiB7XG5cdFx0XHRcdGluZGV4OiAnLy9tYXBzLmdvb2dsZS4nLFxuXHRcdFx0XHRzcmM6ICclaWQlJm91dHB1dD1lbWJlZCdcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvdG86IHtcblx0XHRpbml0SWZyYW1lOiBmdW5jdGlvbigpIHtcblx0XHRcdG1mcC50eXBlcy5wdXNoKElGUkFNRV9OUyk7XG5cblx0XHRcdF9tZnBPbignQmVmb3JlQ2hhbmdlJywgZnVuY3Rpb24oZSwgcHJldlR5cGUsIG5ld1R5cGUpIHtcblx0XHRcdFx0aWYocHJldlR5cGUgIT09IG5ld1R5cGUpIHtcblx0XHRcdFx0XHRpZihwcmV2VHlwZSA9PT0gSUZSQU1FX05TKSB7XG5cdFx0XHRcdFx0XHRfZml4SWZyYW1lQnVncygpOyAvLyBpZnJhbWUgaWYgcmVtb3ZlZFxuXHRcdFx0XHRcdH0gZWxzZSBpZihuZXdUeXBlID09PSBJRlJBTUVfTlMpIHtcblx0XHRcdFx0XHRcdF9maXhJZnJhbWVCdWdzKHRydWUpOyAvLyBpZnJhbWUgaXMgc2hvd2luZ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fS8vIGVsc2Uge1xuXHRcdFx0XHRcdC8vIGlmcmFtZSBzb3VyY2UgaXMgc3dpdGNoZWQsIGRvbid0IGRvIGFueXRoaW5nXG5cdFx0XHRcdC8vfVxuXHRcdFx0fSk7XG5cblx0XHRcdF9tZnBPbihDTE9TRV9FVkVOVCArICcuJyArIElGUkFNRV9OUywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdF9maXhJZnJhbWVCdWdzKCk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0Z2V0SWZyYW1lOiBmdW5jdGlvbihpdGVtLCB0ZW1wbGF0ZSkge1xuXHRcdFx0dmFyIGVtYmVkU3JjID0gaXRlbS5zcmM7XG5cdFx0XHR2YXIgaWZyYW1lU3QgPSBtZnAuc3QuaWZyYW1lO1xuXG5cdFx0XHQkLmVhY2goaWZyYW1lU3QucGF0dGVybnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihlbWJlZFNyYy5pbmRleE9mKCB0aGlzLmluZGV4ICkgPiAtMSkge1xuXHRcdFx0XHRcdGlmKHRoaXMuaWQpIHtcblx0XHRcdFx0XHRcdGlmKHR5cGVvZiB0aGlzLmlkID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRlbWJlZFNyYyA9IGVtYmVkU3JjLnN1YnN0cihlbWJlZFNyYy5sYXN0SW5kZXhPZih0aGlzLmlkKSt0aGlzLmlkLmxlbmd0aCwgZW1iZWRTcmMubGVuZ3RoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGVtYmVkU3JjID0gdGhpcy5pZC5jYWxsKCB0aGlzLCBlbWJlZFNyYyApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbWJlZFNyYyA9IHRoaXMuc3JjLnJlcGxhY2UoJyVpZCUnLCBlbWJlZFNyYyApO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTsgLy8gYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR2YXIgZGF0YU9iaiA9IHt9O1xuXHRcdFx0aWYoaWZyYW1lU3Quc3JjQWN0aW9uKSB7XG5cdFx0XHRcdGRhdGFPYmpbaWZyYW1lU3Quc3JjQWN0aW9uXSA9IGVtYmVkU3JjO1xuXHRcdFx0fVxuXHRcdFx0bWZwLl9wYXJzZU1hcmt1cCh0ZW1wbGF0ZSwgZGF0YU9iaiwgaXRlbSk7XG5cblx0XHRcdG1mcC51cGRhdGVTdGF0dXMoJ3JlYWR5Jyk7XG5cblx0XHRcdHJldHVybiB0ZW1wbGF0ZTtcblx0XHR9XG5cdH1cbn0pO1xuXG5cblxuLyo+PmlmcmFtZSovXG5cbi8qPj5nYWxsZXJ5Ki9cbi8qKlxuICogR2V0IGxvb3BlZCBpbmRleCBkZXBlbmRpbmcgb24gbnVtYmVyIG9mIHNsaWRlc1xuICovXG52YXIgX2dldExvb3BlZElkID0gZnVuY3Rpb24oaW5kZXgpIHtcblx0XHR2YXIgbnVtU2xpZGVzID0gbWZwLml0ZW1zLmxlbmd0aDtcblx0XHRpZihpbmRleCA+IG51bVNsaWRlcyAtIDEpIHtcblx0XHRcdHJldHVybiBpbmRleCAtIG51bVNsaWRlcztcblx0XHR9IGVsc2UgIGlmKGluZGV4IDwgMCkge1xuXHRcdFx0cmV0dXJuIG51bVNsaWRlcyArIGluZGV4O1xuXHRcdH1cblx0XHRyZXR1cm4gaW5kZXg7XG5cdH0sXG5cdF9yZXBsYWNlQ3VyclRvdGFsID0gZnVuY3Rpb24odGV4dCwgY3VyciwgdG90YWwpIHtcblx0XHRyZXR1cm4gdGV4dC5yZXBsYWNlKC8lY3VyciUvZ2ksIGN1cnIgKyAxKS5yZXBsYWNlKC8ldG90YWwlL2dpLCB0b3RhbCk7XG5cdH07XG5cbiQubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZSgnZ2FsbGVyeScsIHtcblxuXHRvcHRpb25zOiB7XG5cdFx0ZW5hYmxlZDogZmFsc2UsXG5cdFx0YXJyb3dNYXJrdXA6ICc8YnV0dG9uIHRpdGxlPVwiJXRpdGxlJVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1mcC1hcnJvdyBtZnAtYXJyb3ctJWRpciVcIj48L2J1dHRvbj4nLFxuXHRcdHByZWxvYWQ6IFswLDJdLFxuXHRcdG5hdmlnYXRlQnlJbWdDbGljazogdHJ1ZSxcblx0XHRhcnJvd3M6IHRydWUsXG5cblx0XHR0UHJldjogJ1ByZXZpb3VzIChMZWZ0IGFycm93IGtleSknLFxuXHRcdHROZXh0OiAnTmV4dCAoUmlnaHQgYXJyb3cga2V5KScsXG5cdFx0dENvdW50ZXI6ICclY3VyciUgb2YgJXRvdGFsJSdcblx0fSxcblxuXHRwcm90bzoge1xuXHRcdGluaXRHYWxsZXJ5OiBmdW5jdGlvbigpIHtcblxuXHRcdFx0dmFyIGdTdCA9IG1mcC5zdC5nYWxsZXJ5LFxuXHRcdFx0XHRucyA9ICcubWZwLWdhbGxlcnknO1xuXG5cdFx0XHRtZnAuZGlyZWN0aW9uID0gdHJ1ZTsgLy8gdHJ1ZSAtIG5leHQsIGZhbHNlIC0gcHJldlxuXG5cdFx0XHRpZighZ1N0IHx8ICFnU3QuZW5hYmxlZCApIHJldHVybiBmYWxzZTtcblxuXHRcdFx0X3dyYXBDbGFzc2VzICs9ICcgbWZwLWdhbGxlcnknO1xuXG5cdFx0XHRfbWZwT24oT1BFTl9FVkVOVCtucywgZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0aWYoZ1N0Lm5hdmlnYXRlQnlJbWdDbGljaykge1xuXHRcdFx0XHRcdG1mcC53cmFwLm9uKCdjbGljaycrbnMsICcubWZwLWltZycsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYobWZwLml0ZW1zLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdFx0bWZwLm5leHQoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0X2RvY3VtZW50Lm9uKCdrZXlkb3duJytucywgZnVuY3Rpb24oZSkge1xuXHRcdFx0XHRcdGlmIChlLmtleUNvZGUgPT09IDM3KSB7XG5cdFx0XHRcdFx0XHRtZnAucHJldigpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSAzOSkge1xuXHRcdFx0XHRcdFx0bWZwLm5leHQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdF9tZnBPbignVXBkYXRlU3RhdHVzJytucywgZnVuY3Rpb24oZSwgZGF0YSkge1xuXHRcdFx0XHRpZihkYXRhLnRleHQpIHtcblx0XHRcdFx0XHRkYXRhLnRleHQgPSBfcmVwbGFjZUN1cnJUb3RhbChkYXRhLnRleHQsIG1mcC5jdXJySXRlbS5pbmRleCwgbWZwLml0ZW1zLmxlbmd0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRfbWZwT24oTUFSS1VQX1BBUlNFX0VWRU5UK25zLCBmdW5jdGlvbihlLCBlbGVtZW50LCB2YWx1ZXMsIGl0ZW0pIHtcblx0XHRcdFx0dmFyIGwgPSBtZnAuaXRlbXMubGVuZ3RoO1xuXHRcdFx0XHR2YWx1ZXMuY291bnRlciA9IGwgPiAxID8gX3JlcGxhY2VDdXJyVG90YWwoZ1N0LnRDb3VudGVyLCBpdGVtLmluZGV4LCBsKSA6ICcnO1xuXHRcdFx0fSk7XG5cblx0XHRcdF9tZnBPbignQnVpbGRDb250cm9scycgKyBucywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmKG1mcC5pdGVtcy5sZW5ndGggPiAxICYmIGdTdC5hcnJvd3MgJiYgIW1mcC5hcnJvd0xlZnQpIHtcblx0XHRcdFx0XHR2YXIgbWFya3VwID0gZ1N0LmFycm93TWFya3VwLFxuXHRcdFx0XHRcdFx0YXJyb3dMZWZ0ID0gbWZwLmFycm93TGVmdCA9ICQoIG1hcmt1cC5yZXBsYWNlKC8ldGl0bGUlL2dpLCBnU3QudFByZXYpLnJlcGxhY2UoLyVkaXIlL2dpLCAnbGVmdCcpICkuYWRkQ2xhc3MoUFJFVkVOVF9DTE9TRV9DTEFTUyksXG5cdFx0XHRcdFx0XHRhcnJvd1JpZ2h0ID0gbWZwLmFycm93UmlnaHQgPSAkKCBtYXJrdXAucmVwbGFjZSgvJXRpdGxlJS9naSwgZ1N0LnROZXh0KS5yZXBsYWNlKC8lZGlyJS9naSwgJ3JpZ2h0JykgKS5hZGRDbGFzcyhQUkVWRU5UX0NMT1NFX0NMQVNTKTtcblxuXHRcdFx0XHRcdGFycm93TGVmdC5jbGljayhmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdG1mcC5wcmV2KCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXJyb3dSaWdodC5jbGljayhmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdG1mcC5uZXh0KCk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRtZnAuY29udGFpbmVyLmFwcGVuZChhcnJvd0xlZnQuYWRkKGFycm93UmlnaHQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdF9tZnBPbihDSEFOR0VfRVZFTlQrbnMsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihtZnAuX3ByZWxvYWRUaW1lb3V0KSBjbGVhclRpbWVvdXQobWZwLl9wcmVsb2FkVGltZW91dCk7XG5cblx0XHRcdFx0bWZwLl9wcmVsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0bWZwLnByZWxvYWROZWFyYnlJbWFnZXMoKTtcblx0XHRcdFx0XHRtZnAuX3ByZWxvYWRUaW1lb3V0ID0gbnVsbDtcblx0XHRcdFx0fSwgMTYpO1xuXHRcdFx0fSk7XG5cblxuXHRcdFx0X21mcE9uKENMT1NFX0VWRU5UK25zLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0X2RvY3VtZW50Lm9mZihucyk7XG5cdFx0XHRcdG1mcC53cmFwLm9mZignY2xpY2snK25zKTtcblx0XHRcdFx0bWZwLmFycm93UmlnaHQgPSBtZnAuYXJyb3dMZWZ0ID0gbnVsbDtcblx0XHRcdH0pO1xuXG5cdFx0fSxcblx0XHRuZXh0OiBmdW5jdGlvbigpIHtcblx0XHRcdG1mcC5kaXJlY3Rpb24gPSB0cnVlO1xuXHRcdFx0bWZwLmluZGV4ID0gX2dldExvb3BlZElkKG1mcC5pbmRleCArIDEpO1xuXHRcdFx0bWZwLnVwZGF0ZUl0ZW1IVE1MKCk7XG5cdFx0fSxcblx0XHRwcmV2OiBmdW5jdGlvbigpIHtcblx0XHRcdG1mcC5kaXJlY3Rpb24gPSBmYWxzZTtcblx0XHRcdG1mcC5pbmRleCA9IF9nZXRMb29wZWRJZChtZnAuaW5kZXggLSAxKTtcblx0XHRcdG1mcC51cGRhdGVJdGVtSFRNTCgpO1xuXHRcdH0sXG5cdFx0Z29UbzogZnVuY3Rpb24obmV3SW5kZXgpIHtcblx0XHRcdG1mcC5kaXJlY3Rpb24gPSAobmV3SW5kZXggPj0gbWZwLmluZGV4KTtcblx0XHRcdG1mcC5pbmRleCA9IG5ld0luZGV4O1xuXHRcdFx0bWZwLnVwZGF0ZUl0ZW1IVE1MKCk7XG5cdFx0fSxcblx0XHRwcmVsb2FkTmVhcmJ5SW1hZ2VzOiBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBwID0gbWZwLnN0LmdhbGxlcnkucHJlbG9hZCxcblx0XHRcdFx0cHJlbG9hZEJlZm9yZSA9IE1hdGgubWluKHBbMF0sIG1mcC5pdGVtcy5sZW5ndGgpLFxuXHRcdFx0XHRwcmVsb2FkQWZ0ZXIgPSBNYXRoLm1pbihwWzFdLCBtZnAuaXRlbXMubGVuZ3RoKSxcblx0XHRcdFx0aTtcblxuXHRcdFx0Zm9yKGkgPSAxOyBpIDw9IChtZnAuZGlyZWN0aW9uID8gcHJlbG9hZEFmdGVyIDogcHJlbG9hZEJlZm9yZSk7IGkrKykge1xuXHRcdFx0XHRtZnAuX3ByZWxvYWRJdGVtKG1mcC5pbmRleCtpKTtcblx0XHRcdH1cblx0XHRcdGZvcihpID0gMTsgaSA8PSAobWZwLmRpcmVjdGlvbiA/IHByZWxvYWRCZWZvcmUgOiBwcmVsb2FkQWZ0ZXIpOyBpKyspIHtcblx0XHRcdFx0bWZwLl9wcmVsb2FkSXRlbShtZnAuaW5kZXgtaSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRfcHJlbG9hZEl0ZW06IGZ1bmN0aW9uKGluZGV4KSB7XG5cdFx0XHRpbmRleCA9IF9nZXRMb29wZWRJZChpbmRleCk7XG5cblx0XHRcdGlmKG1mcC5pdGVtc1tpbmRleF0ucHJlbG9hZGVkKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGl0ZW0gPSBtZnAuaXRlbXNbaW5kZXhdO1xuXHRcdFx0aWYoIWl0ZW0ucGFyc2VkKSB7XG5cdFx0XHRcdGl0ZW0gPSBtZnAucGFyc2VFbCggaW5kZXggKTtcblx0XHRcdH1cblxuXHRcdFx0X21mcFRyaWdnZXIoJ0xhenlMb2FkJywgaXRlbSk7XG5cblx0XHRcdGlmKGl0ZW0udHlwZSA9PT0gJ2ltYWdlJykge1xuXHRcdFx0XHRpdGVtLmltZyA9ICQoJzxpbWcgY2xhc3M9XCJtZnAtaW1nXCIgLz4nKS5vbignbG9hZC5tZnBsb2FkZXInLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpdGVtLmhhc1NpemUgPSB0cnVlO1xuXHRcdFx0XHR9KS5vbignZXJyb3IubWZwbG9hZGVyJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aXRlbS5oYXNTaXplID0gdHJ1ZTtcblx0XHRcdFx0XHRpdGVtLmxvYWRFcnJvciA9IHRydWU7XG5cdFx0XHRcdFx0X21mcFRyaWdnZXIoJ0xhenlMb2FkRXJyb3InLCBpdGVtKTtcblx0XHRcdFx0fSkuYXR0cignc3JjJywgaXRlbS5zcmMpO1xuXHRcdFx0fVxuXG5cblx0XHRcdGl0ZW0ucHJlbG9hZGVkID0gdHJ1ZTtcblx0XHR9XG5cdH1cbn0pO1xuXG4vKj4+Z2FsbGVyeSovXG5cbi8qPj5yZXRpbmEqL1xuXG52YXIgUkVUSU5BX05TID0gJ3JldGluYSc7XG5cbiQubWFnbmlmaWNQb3B1cC5yZWdpc3Rlck1vZHVsZShSRVRJTkFfTlMsIHtcblx0b3B0aW9uczoge1xuXHRcdHJlcGxhY2VTcmM6IGZ1bmN0aW9uKGl0ZW0pIHtcblx0XHRcdHJldHVybiBpdGVtLnNyYy5yZXBsYWNlKC9cXC5cXHcrJC8sIGZ1bmN0aW9uKG0pIHsgcmV0dXJuICdAMngnICsgbTsgfSk7XG5cdFx0fSxcblx0XHRyYXRpbzogMSAvLyBGdW5jdGlvbiBvciBudW1iZXIuICBTZXQgdG8gMSB0byBkaXNhYmxlLlxuXHR9LFxuXHRwcm90bzoge1xuXHRcdGluaXRSZXRpbmE6IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYod2luZG93LmRldmljZVBpeGVsUmF0aW8gPiAxKSB7XG5cblx0XHRcdFx0dmFyIHN0ID0gbWZwLnN0LnJldGluYSxcblx0XHRcdFx0XHRyYXRpbyA9IHN0LnJhdGlvO1xuXG5cdFx0XHRcdHJhdGlvID0gIWlzTmFOKHJhdGlvKSA/IHJhdGlvIDogcmF0aW8oKTtcblxuXHRcdFx0XHRpZihyYXRpbyA+IDEpIHtcblx0XHRcdFx0XHRfbWZwT24oJ0ltYWdlSGFzU2l6ZScgKyAnLicgKyBSRVRJTkFfTlMsIGZ1bmN0aW9uKGUsIGl0ZW0pIHtcblx0XHRcdFx0XHRcdGl0ZW0uaW1nLmNzcyh7XG5cdFx0XHRcdFx0XHRcdCdtYXgtd2lkdGgnOiBpdGVtLmltZ1swXS5uYXR1cmFsV2lkdGggLyByYXRpbyxcblx0XHRcdFx0XHRcdFx0J3dpZHRoJzogJzEwMCUnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRfbWZwT24oJ0VsZW1lbnRQYXJzZScgKyAnLicgKyBSRVRJTkFfTlMsIGZ1bmN0aW9uKGUsIGl0ZW0pIHtcblx0XHRcdFx0XHRcdGl0ZW0uc3JjID0gc3QucmVwbGFjZVNyYyhpdGVtLCByYXRpbyk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fVxufSk7XG5cbi8qPj5yZXRpbmEqL1xuIF9jaGVja0luc3RhbmNlKCk7IH0pKTtcbn0uY2FsbCh3aW5kb3csIGZhbHNlLCBmYWxzZSkpO1xuIiwiLyoqKiBJTVBPUlRTIEZST00gaW1wb3J0cy1sb2FkZXIgKioqL1xuXG4oZnVuY3Rpb24obW9kdWxlKSB7XG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuLypcbiAqXG4gKiBNb3JlIGluZm8gYXQgW3d3dy5kcm9wem9uZWpzLmNvbV0oaHR0cDovL3d3dy5kcm9wem9uZWpzLmNvbSlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIsIE1hdGlhcyBNZW5vXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbiAqIFRIRSBTT0ZUV0FSRS5cbiAqXG4gKi9cbi8vIFRoZSBFbWl0dGVyIGNsYXNzIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNhbGwgYC5vbigpYCBvbiBEcm9wem9uZSB0byBsaXN0ZW5cbi8vIHRvIGV2ZW50cy5cbi8vIEl0IGlzIHN0cm9uZ2x5IGJhc2VkIG9uIGNvbXBvbmVudCdzIGVtaXR0ZXIgY2xhc3MsIGFuZCBJIHJlbW92ZWQgdGhlXG4vLyBmdW5jdGlvbmFsaXR5IGJlY2F1c2Ugb2YgdGhlIGRlcGVuZGVuY3kgaGVsbCB3aXRoIGRpZmZlcmVudCBmcmFtZXdvcmtzLlxudmFyIEVtaXR0ZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBFbWl0dGVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFbWl0dGVyKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFbWl0dGVyLCBbe1xuICAgIGtleTogXCJvblwiLFxuICAgIC8vIEFkZCBhbiBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRcbiAgICB2YWx1ZTogZnVuY3Rpb24gb24oZXZlbnQsIGZuKSB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307IC8vIENyZWF0ZSBuYW1lc3BhY2UgZm9yIHRoaXMgZXZlbnRcblxuICAgICAgaWYgKCF0aGlzLl9jYWxsYmFja3NbZXZlbnRdKSB7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrc1tldmVudF0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2FsbGJhY2tzW2V2ZW50XS5wdXNoKGZuKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVtaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9O1xuICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1tldmVudF07XG5cbiAgICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gY2FsbGJhY2tzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gX3N0ZXAudmFsdWU7XG4gICAgICAgICAgICBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IGVycjtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uICYmIF9pdGVyYXRvcltcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcltcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IpIHtcbiAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZlbiBldmVudC4gSWYgZm4gaXMgbm90IHByb3ZpZGVkLCBhbGwgZXZlbnRcbiAgICAvLyBsaXN0ZW5lcnMgZm9yIHRoYXQgZXZlbnQgd2lsbCBiZSByZW1vdmVkLiBJZiBuZWl0aGVyIGlzIHByb3ZpZGVkLCBhbGxcbiAgICAvLyBldmVudCBsaXN0ZW5lcnMgd2lsbCBiZSByZW1vdmVkLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwib2ZmXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9mZihldmVudCwgZm4pIHtcbiAgICAgIGlmICghdGhpcy5fY2FsbGJhY2tzIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzID0ge307XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSAvLyBzcGVjaWZpYyBldmVudFxuXG5cbiAgICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3NbZXZlbnRdO1xuXG4gICAgICBpZiAoIWNhbGxiYWNrcykge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0gLy8gcmVtb3ZlIGFsbCBoYW5kbGVyc1xuXG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbZXZlbnRdO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0gLy8gcmVtb3ZlIHNwZWNpZmljIGhhbmRsZXJcblxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBjYWxsYmFja3NbaV07XG5cbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSBmbikge1xuICAgICAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEVtaXR0ZXI7XG59KCk7XG5cbnZhciBEcm9wem9uZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX0VtaXR0ZXIpIHtcbiAgX2luaGVyaXRzKERyb3B6b25lLCBfRW1pdHRlcik7XG5cbiAgX2NyZWF0ZUNsYXNzKERyb3B6b25lLCBudWxsLCBbe1xuICAgIGtleTogXCJpbml0Q2xhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdENsYXNzKCkge1xuICAgICAgLy8gRXhwb3NpbmcgdGhlIGVtaXR0ZXIgY2xhc3MsIG1haW5seSBmb3IgdGVzdHNcbiAgICAgIHRoaXMucHJvdG90eXBlLkVtaXR0ZXIgPSBFbWl0dGVyO1xuICAgICAgLypcbiAgICAgICBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGV2ZW50cyB5b3UgY2FuIHJlZ2lzdGVyIG9uIGEgZHJvcHpvbmUgb2JqZWN0LlxuICAgICAgICBZb3UgY2FuIHJlZ2lzdGVyIGFuIGV2ZW50IGhhbmRsZXIgbGlrZSB0aGlzOlxuICAgICAgICBkcm9wem9uZS5vbihcImRyYWdFbnRlclwiLCBmdW5jdGlvbigpIHsgfSk7XG4gICAgICAgICovXG5cbiAgICAgIHRoaXMucHJvdG90eXBlLmV2ZW50cyA9IFtcImRyb3BcIiwgXCJkcmFnc3RhcnRcIiwgXCJkcmFnZW5kXCIsIFwiZHJhZ2VudGVyXCIsIFwiZHJhZ292ZXJcIiwgXCJkcmFnbGVhdmVcIiwgXCJhZGRlZGZpbGVcIiwgXCJhZGRlZGZpbGVzXCIsIFwicmVtb3ZlZGZpbGVcIiwgXCJ0aHVtYm5haWxcIiwgXCJlcnJvclwiLCBcImVycm9ybXVsdGlwbGVcIiwgXCJwcm9jZXNzaW5nXCIsIFwicHJvY2Vzc2luZ211bHRpcGxlXCIsIFwidXBsb2FkcHJvZ3Jlc3NcIiwgXCJ0b3RhbHVwbG9hZHByb2dyZXNzXCIsIFwic2VuZGluZ1wiLCBcInNlbmRpbmdtdWx0aXBsZVwiLCBcInN1Y2Nlc3NcIiwgXCJzdWNjZXNzbXVsdGlwbGVcIiwgXCJjYW5jZWxlZFwiLCBcImNhbmNlbGVkbXVsdGlwbGVcIiwgXCJjb21wbGV0ZVwiLCBcImNvbXBsZXRlbXVsdGlwbGVcIiwgXCJyZXNldFwiLCBcIm1heGZpbGVzZXhjZWVkZWRcIiwgXCJtYXhmaWxlc3JlYWNoZWRcIiwgXCJxdWV1ZWNvbXBsZXRlXCJdO1xuICAgICAgdGhpcy5wcm90b3R5cGUuZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIYXMgdG8gYmUgc3BlY2lmaWVkIG9uIGVsZW1lbnRzIG90aGVyIHRoYW4gZm9ybSAob3Igd2hlbiB0aGUgZm9ybVxuICAgICAgICAgKiBkb2Vzbid0IGhhdmUgYW4gYGFjdGlvbmAgYXR0cmlidXRlKS4gWW91IGNhbiBhbHNvXG4gICAgICAgICAqIHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYGZpbGVzYCBhbmRcbiAgICAgICAgICogbXVzdCByZXR1cm4gdGhlIHVybCAoc2luY2UgYHYzLjEyLjBgKVxuICAgICAgICAgKi9cbiAgICAgICAgdXJsOiBudWxsLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYW4gYmUgY2hhbmdlZCB0byBgXCJwdXRcImAgaWYgbmVjZXNzYXJ5LiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIGZ1bmN0aW9uXG4gICAgICAgICAqIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBgZmlsZXNgIGFuZCBtdXN0IHJldHVybiB0aGUgbWV0aG9kIChzaW5jZSBgdjMuMTIuMGApLlxuICAgICAgICAgKi9cbiAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2lsbCBiZSBzZXQgb24gdGhlIFhIUmVxdWVzdC5cbiAgICAgICAgICovXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0aW1lb3V0IGZvciB0aGUgWEhSIHJlcXVlc3RzIGluIG1pbGxpc2Vjb25kcyAoc2luY2UgYHY0LjQuMGApLlxuICAgICAgICAgKi9cbiAgICAgICAgdGltZW91dDogMzAwMDAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhvdyBtYW55IGZpbGUgdXBsb2FkcyB0byBwcm9jZXNzIGluIHBhcmFsbGVsIChTZWUgdGhlXG4gICAgICAgICAqIEVucXVldWluZyBmaWxlIHVwbG9hZHMgZG9jdW1lbnRhdGlvbiBzZWN0aW9uIGZvciBtb3JlIGluZm8pXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhbGxlbFVwbG9hZHM6IDIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgdG8gc2VuZCBtdWx0aXBsZSBmaWxlcyBpbiBvbmUgcmVxdWVzdC4gSWZcbiAgICAgICAgICogdGhpcyBpdCBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgZmFsbGJhY2sgZmlsZSBpbnB1dCBlbGVtZW50IHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgYG11bHRpcGxlYCBhdHRyaWJ1dGUgYXMgd2VsbC4gVGhpcyBvcHRpb24gd2lsbFxuICAgICAgICAgKiBhbHNvIHRyaWdnZXIgYWRkaXRpb25hbCBldmVudHMgKGxpa2UgYHByb2Nlc3NpbmdtdWx0aXBsZWApLiBTZWUgdGhlIGV2ZW50c1xuICAgICAgICAgKiBkb2N1bWVudGF0aW9uIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICB1cGxvYWRNdWx0aXBsZTogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgeW91IHdhbnQgZmlsZXMgdG8gYmUgdXBsb2FkZWQgaW4gY2h1bmtzIHRvIHlvdXIgc2VydmVyLiBUaGlzIGNhbid0IGJlXG4gICAgICAgICAqIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdXBsb2FkTXVsdGlwbGVgLlxuICAgICAgICAgKlxuICAgICAgICAgKiBTZWUgW2NodW5rc1VwbG9hZGVkXSgjY29uZmlnLWNodW5rc1VwbG9hZGVkKSBmb3IgdGhlIGNhbGxiYWNrIHRvIGZpbmFsaXNlIGFuIHVwbG9hZC5cbiAgICAgICAgICovXG4gICAgICAgIGNodW5raW5nOiBmYWxzZSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYGNodW5raW5nYCBpcyBlbmFibGVkLCB0aGlzIGRlZmluZXMgd2hldGhlciAqKmV2ZXJ5KiogZmlsZSBzaG91bGQgYmUgY2h1bmtlZCxcbiAgICAgICAgICogZXZlbiBpZiB0aGUgZmlsZSBzaXplIGlzIGJlbG93IGNodW5rU2l6ZS4gVGhpcyBtZWFucywgdGhhdCB0aGUgYWRkaXRpb25hbCBjaHVua1xuICAgICAgICAgKiBmb3JtIGRhdGEgd2lsbCBiZSBzdWJtaXR0ZWQgYW5kIHRoZSBgY2h1bmtzVXBsb2FkZWRgIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZC5cbiAgICAgICAgICovXG4gICAgICAgIGZvcmNlQ2h1bmtpbmc6IGZhbHNlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBgY2h1bmtpbmdgIGlzIGB0cnVlYCwgdGhlbiB0aGlzIGRlZmluZXMgdGhlIGNodW5rIHNpemUgaW4gYnl0ZXMuXG4gICAgICAgICAqL1xuICAgICAgICBjaHVua1NpemU6IDIwMDAwMDAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGB0cnVlYCwgdGhlIGluZGl2aWR1YWwgY2h1bmtzIG9mIGEgZmlsZSBhcmUgYmVpbmcgdXBsb2FkZWQgc2ltdWx0YW5lb3VzbHkuXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhbGxlbENodW5rVXBsb2FkczogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgYSBjaHVuayBzaG91bGQgYmUgcmV0cmllZCBpZiBpdCBmYWlscy5cbiAgICAgICAgICovXG4gICAgICAgIHJldHJ5Q2h1bmtzOiBmYWxzZSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYHJldHJ5Q2h1bmtzYCBpcyB0cnVlLCBob3cgbWFueSB0aW1lcyBzaG91bGQgaXQgYmUgcmV0cmllZC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHJ5Q2h1bmtzTGltaXQ6IDMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIG5vdCBgbnVsbGAgZGVmaW5lcyBob3cgbWFueSBmaWxlcyB0aGlzIERyb3B6b25lIGhhbmRsZXMuIElmIGl0IGV4Y2VlZHMsXG4gICAgICAgICAqIHRoZSBldmVudCBgbWF4ZmlsZXNleGNlZWRlZGAgd2lsbCBiZSBjYWxsZWQuIFRoZSBkcm9wem9uZSBlbGVtZW50IGdldHMgdGhlXG4gICAgICAgICAqIGNsYXNzIGBkei1tYXgtZmlsZXMtcmVhY2hlZGAgYWNjb3JkaW5nbHkgc28geW91IGNhbiBwcm92aWRlIHZpc3VhbCBmZWVkYmFjay5cbiAgICAgICAgICovXG4gICAgICAgIG1heEZpbGVzaXplOiAyNTYsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHBhcmFtIHRoYXQgZ2V0cyB0cmFuc2ZlcnJlZC5cbiAgICAgICAgICogKipOT1RFKio6IElmIHlvdSBoYXZlIHRoZSBvcHRpb24gIGB1cGxvYWRNdWx0aXBsZWAgc2V0IHRvIGB0cnVlYCwgdGhlblxuICAgICAgICAgKiBEcm9wem9uZSB3aWxsIGFwcGVuZCBgW11gIHRvIHRoZSBuYW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgcGFyYW1OYW1lOiBcImZpbGVcIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciB0aHVtYm5haWxzIGZvciBpbWFnZXMgc2hvdWxkIGJlIGdlbmVyYXRlZFxuICAgICAgICAgKi9cbiAgICAgICAgY3JlYXRlSW1hZ2VUaHVtYm5haWxzOiB0cnVlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbiBNQi4gV2hlbiB0aGUgZmlsZW5hbWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgdGh1bWJuYWlsIHdpbGwgbm90IGJlIGdlbmVyYXRlZC5cbiAgICAgICAgICovXG4gICAgICAgIG1heFRodW1ibmFpbEZpbGVzaXplOiAxMCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYG51bGxgLCB0aGUgcmF0aW8gb2YgdGhlIGltYWdlIHdpbGwgYmUgdXNlZCB0byBjYWxjdWxhdGUgaXQuXG4gICAgICAgICAqL1xuICAgICAgICB0aHVtYm5haWxXaWR0aDogMTIwLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgc2FtZSBhcyBgdGh1bWJuYWlsV2lkdGhgLiBJZiBib3RoIGFyZSBudWxsLCBpbWFnZXMgd2lsbCBub3QgYmUgcmVzaXplZC5cbiAgICAgICAgICovXG4gICAgICAgIHRodW1ibmFpbEhlaWdodDogMTIwLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIb3cgdGhlIGltYWdlcyBzaG91bGQgYmUgc2NhbGVkIGRvd24gaW4gY2FzZSBib3RoLCBgdGh1bWJuYWlsV2lkdGhgIGFuZCBgdGh1bWJuYWlsSGVpZ2h0YCBhcmUgcHJvdmlkZWQuXG4gICAgICAgICAqIENhbiBiZSBlaXRoZXIgYGNvbnRhaW5gIG9yIGBjcm9wYC5cbiAgICAgICAgICovXG4gICAgICAgIHRodW1ibmFpbE1ldGhvZDogJ2Nyb3AnLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBzZXQsIGltYWdlcyB3aWxsIGJlIHJlc2l6ZWQgdG8gdGhlc2UgZGltZW5zaW9ucyBiZWZvcmUgYmVpbmcgKip1cGxvYWRlZCoqLlxuICAgICAgICAgKiBJZiBvbmx5IG9uZSwgYHJlc2l6ZVdpZHRoYCAqKm9yKiogYHJlc2l6ZUhlaWdodGAgaXMgcHJvdmlkZWQsIHRoZSBvcmlnaW5hbCBhc3BlY3RcbiAgICAgICAgICogcmF0aW8gb2YgdGhlIGZpbGUgd2lsbCBiZSBwcmVzZXJ2ZWQuXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoZSBgb3B0aW9ucy50cmFuc2Zvcm1GaWxlYCBmdW5jdGlvbiB1c2VzIHRoZXNlIG9wdGlvbnMsIHNvIGlmIHRoZSBgdHJhbnNmb3JtRmlsZWAgZnVuY3Rpb25cbiAgICAgICAgICogaXMgb3ZlcnJpZGRlbiwgdGhlc2Ugb3B0aW9ucyBkb24ndCBkbyBhbnl0aGluZy5cbiAgICAgICAgICovXG4gICAgICAgIHJlc2l6ZVdpZHRoOiBudWxsLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWUgYHJlc2l6ZVdpZHRoYC5cbiAgICAgICAgICovXG4gICAgICAgIHJlc2l6ZUhlaWdodDogbnVsbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG1pbWUgdHlwZSBvZiB0aGUgcmVzaXplZCBpbWFnZSAoYmVmb3JlIGl0IGdldHMgdXBsb2FkZWQgdG8gdGhlIHNlcnZlcikuXG4gICAgICAgICAqIElmIGBudWxsYCB0aGUgb3JpZ2luYWwgbWltZSB0eXBlIHdpbGwgYmUgdXNlZC4gVG8gZm9yY2UganBlZywgZm9yIGV4YW1wbGUsIHVzZSBgaW1hZ2UvanBlZ2AuXG4gICAgICAgICAqIFNlZSBgcmVzaXplV2lkdGhgIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzaXplTWltZVR5cGU6IG51bGwsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBxdWFsaXR5IG9mIHRoZSByZXNpemVkIGltYWdlcy4gU2VlIGByZXNpemVXaWR0aGAuXG4gICAgICAgICAqL1xuICAgICAgICByZXNpemVRdWFsaXR5OiAwLjgsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhvdyB0aGUgaW1hZ2VzIHNob3VsZCBiZSBzY2FsZWQgZG93biBpbiBjYXNlIGJvdGgsIGByZXNpemVXaWR0aGAgYW5kIGByZXNpemVIZWlnaHRgIGFyZSBwcm92aWRlZC5cbiAgICAgICAgICogQ2FuIGJlIGVpdGhlciBgY29udGFpbmAgb3IgYGNyb3BgLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVzaXplTWV0aG9kOiAnY29udGFpbicsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBiYXNlIHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGZpbGVzaXplLiBZb3UgY2FuIGNoYW5nZSB0aGlzIHRvXG4gICAgICAgICAqIDEwMjQgaWYgeW91IHdvdWxkIHJhdGhlciBkaXNwbGF5IGtpYmlieXRlcywgbWViaWJ5dGVzLCBldGMuLi5cbiAgICAgICAgICogMTAyNCBpcyB0ZWNobmljYWxseSBpbmNvcnJlY3QsIGJlY2F1c2UgYDEwMjQgYnl0ZXNgIGFyZSBgMSBraWJpYnl0ZWAgbm90IGAxIGtpbG9ieXRlYC5cbiAgICAgICAgICogWW91IGNhbiBjaGFuZ2UgdGhpcyB0byBgMTAyNGAgaWYgeW91IGRvbid0IGNhcmUgYWJvdXQgdmFsaWRpdHkuXG4gICAgICAgICAqL1xuICAgICAgICBmaWxlc2l6ZUJhc2U6IDEwMDAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlcyB0aGF0IHdpbGwgYmUgaGFuZGxlZCBieSB0aGlzIERyb3B6b25lXG4gICAgICAgICAqL1xuICAgICAgICBtYXhGaWxlczogbnVsbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQW4gb3B0aW9uYWwgb2JqZWN0IHRvIHNlbmQgYWRkaXRpb25hbCBoZWFkZXJzIHRvIHRoZSBzZXJ2ZXIuIEVnOlxuICAgICAgICAgKiBgeyBcIk15LUF3ZXNvbWUtSGVhZGVyXCI6IFwiaGVhZGVyIHZhbHVlXCIgfWBcbiAgICAgICAgICovXG4gICAgICAgIGhlYWRlcnM6IG51bGwsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGB0cnVlYCwgdGhlIGRyb3B6b25lIGVsZW1lbnQgaXRzZWxmIHdpbGwgYmUgY2xpY2thYmxlLCBpZiBgZmFsc2VgXG4gICAgICAgICAqIG5vdGhpbmcgd2lsbCBiZSBjbGlja2FibGUuXG4gICAgICAgICAqXG4gICAgICAgICAqIFlvdSBjYW4gYWxzbyBwYXNzIGFuIEhUTUwgZWxlbWVudCwgYSBDU1Mgc2VsZWN0b3IgKGZvciBtdWx0aXBsZSBlbGVtZW50cylcbiAgICAgICAgICogb3IgYW4gYXJyYXkgb2YgdGhvc2UuIEluIHRoYXQgY2FzZSwgYWxsIG9mIHRob3NlIGVsZW1lbnRzIHdpbGwgdHJpZ2dlciBhblxuICAgICAgICAgKiB1cGxvYWQgd2hlbiBjbGlja2VkLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIGhpZGRlbiBmaWxlcyBpbiBkaXJlY3RvcmllcyBzaG91bGQgYmUgaWdub3JlZC5cbiAgICAgICAgICovXG4gICAgICAgIGlnbm9yZUhpZGRlbkZpbGVzOiB0cnVlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBgYWNjZXB0YCBjaGVja3MgdGhlIGZpbGUncyBtaW1lIHR5cGUgb3JcbiAgICAgICAgICogZXh0ZW5zaW9uIGFnYWluc3QgdGhpcyBsaXN0LiBUaGlzIGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbWltZVxuICAgICAgICAgKiB0eXBlcyBvciBmaWxlIGV4dGVuc2lvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEVnLjogYGltYWdlLyosYXBwbGljYXRpb24vcGRmLC5wc2RgXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBEcm9wem9uZSBpcyBgY2xpY2thYmxlYCB0aGlzIG9wdGlvbiB3aWxsIGFsc28gYmUgdXNlZCBhc1xuICAgICAgICAgKiBbYGFjY2VwdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItYWNjZXB0KVxuICAgICAgICAgKiBwYXJhbWV0ZXIgb24gdGhlIGhpZGRlbiBmaWxlIGlucHV0IGFzIHdlbGwuXG4gICAgICAgICAqL1xuICAgICAgICBhY2NlcHRlZEZpbGVzOiBudWxsLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAqKkRlcHJlY2F0ZWQhKipcbiAgICAgICAgICogVXNlIGFjY2VwdGVkRmlsZXMgaW5zdGVhZC5cbiAgICAgICAgICovXG4gICAgICAgIGFjY2VwdGVkTWltZVR5cGVzOiBudWxsLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBmYWxzZSwgZmlsZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgcXVldWUgYnV0IHRoZSBxdWV1ZSB3aWxsIG5vdCBiZVxuICAgICAgICAgKiBwcm9jZXNzZWQgYXV0b21hdGljYWxseS5cbiAgICAgICAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBuZWVkIHNvbWUgYWRkaXRpb25hbCB1c2VyIGlucHV0IGJlZm9yZSBzZW5kaW5nXG4gICAgICAgICAqIGZpbGVzIChvciBpZiB5b3Ugd2FudCB3YW50IGFsbCBmaWxlcyBzZW50IGF0IG9uY2UpLlxuICAgICAgICAgKiBJZiB5b3UncmUgcmVhZHkgdG8gc2VuZCB0aGUgZmlsZSBzaW1wbHkgY2FsbCBgbXlEcm9wem9uZS5wcm9jZXNzUXVldWUoKWAuXG4gICAgICAgICAqXG4gICAgICAgICAqIFNlZSB0aGUgW2VucXVldWluZyBmaWxlIHVwbG9hZHNdKCNlbnF1ZXVpbmctZmlsZS11cGxvYWRzKSBkb2N1bWVudGF0aW9uXG4gICAgICAgICAqIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICBhdXRvUHJvY2Vzc1F1ZXVlOiB0cnVlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBmYWxzZSwgZmlsZXMgYWRkZWQgdG8gdGhlIGRyb3B6b25lIHdpbGwgbm90IGJlIHF1ZXVlZCBieSBkZWZhdWx0LlxuICAgICAgICAgKiBZb3UnbGwgaGF2ZSB0byBjYWxsIGBlbnF1ZXVlRmlsZShmaWxlKWAgbWFudWFsbHkuXG4gICAgICAgICAqL1xuICAgICAgICBhdXRvUXVldWU6IHRydWUsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGB0cnVlYCwgdGhpcyB3aWxsIGFkZCBhIGxpbmsgdG8gZXZlcnkgZmlsZSBwcmV2aWV3IHRvIHJlbW92ZSBvciBjYW5jZWwgKGlmXG4gICAgICAgICAqIGFscmVhZHkgdXBsb2FkaW5nKSB0aGUgZmlsZS4gVGhlIGBkaWN0Q2FuY2VsVXBsb2FkYCwgYGRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb25gXG4gICAgICAgICAqIGFuZCBgZGljdFJlbW92ZUZpbGVgIG9wdGlvbnMgYXJlIHVzZWQgZm9yIHRoZSB3b3JkaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgYWRkUmVtb3ZlTGlua3M6IGZhbHNlLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWZpbmVzIHdoZXJlIHRvIGRpc3BsYXkgdGhlIGZpbGUgcHJldmlld3Mg4oCTIGlmIGBudWxsYCB0aGVcbiAgICAgICAgICogRHJvcHpvbmUgZWxlbWVudCBpdHNlbGYgaXMgdXNlZC4gQ2FuIGJlIGEgcGxhaW4gYEhUTUxFbGVtZW50YCBvciBhIENTU1xuICAgICAgICAgKiBzZWxlY3Rvci4gVGhlIGVsZW1lbnQgc2hvdWxkIGhhdmUgdGhlIGBkcm9wem9uZS1wcmV2aWV3c2AgY2xhc3Mgc29cbiAgICAgICAgICogdGhlIHByZXZpZXdzIGFyZSBkaXNwbGF5ZWQgcHJvcGVybHkuXG4gICAgICAgICAqL1xuICAgICAgICBwcmV2aWV3c0NvbnRhaW5lcjogbnVsbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyB0aGUgZWxlbWVudCB0aGUgaGlkZGVuIGlucHV0IGZpZWxkICh3aGljaCBpcyB1c2VkIHdoZW4gY2xpY2tpbmcgb24gdGhlXG4gICAgICAgICAqIGRyb3B6b25lIHRvIHRyaWdnZXIgZmlsZSBzZWxlY3Rpb24pIHdpbGwgYmUgYXBwZW5kZWQgdG8uIFRoaXMgbWlnaHRcbiAgICAgICAgICogYmUgaW1wb3J0YW50IGluIGNhc2UgeW91IHVzZSBmcmFtZXdvcmtzIHRvIHN3aXRjaCB0aGUgY29udGVudCBvZiB5b3VyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIENhbiBiZSBhIHNlbGVjdG9yIHN0cmluZywgb3IgYW4gZWxlbWVudCBkaXJlY3RseS5cbiAgICAgICAgICovXG4gICAgICAgIGhpZGRlbklucHV0Q29udGFpbmVyOiBcImJvZHlcIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgbnVsbCwgbm8gY2FwdHVyZSB0eXBlIHdpbGwgYmUgc3BlY2lmaWVkXG4gICAgICAgICAqIElmIGNhbWVyYSwgbW9iaWxlIGRldmljZXMgd2lsbCBza2lwIHRoZSBmaWxlIHNlbGVjdGlvbiBhbmQgY2hvb3NlIGNhbWVyYVxuICAgICAgICAgKiBJZiBtaWNyb3Bob25lLCBtb2JpbGUgZGV2aWNlcyB3aWxsIHNraXAgdGhlIGZpbGUgc2VsZWN0aW9uIGFuZCBjaG9vc2UgdGhlIG1pY3JvcGhvbmVcbiAgICAgICAgICogSWYgY2FtY29yZGVyLCBtb2JpbGUgZGV2aWNlcyB3aWxsIHNraXAgdGhlIGZpbGUgc2VsZWN0aW9uIGFuZCBjaG9vc2UgdGhlIGNhbWVyYSBpbiB2aWRlbyBtb2RlXG4gICAgICAgICAqIE9uIGFwcGxlIGRldmljZXMgbXVsdGlwbGUgbXVzdCBiZSBzZXQgdG8gZmFsc2UuICBBY2NlcHRlZEZpbGVzIG1heSBuZWVkIHRvXG4gICAgICAgICAqIGJlIHNldCB0byBhbiBhcHByb3ByaWF0ZSBtaW1lIHR5cGUgKGUuZy4gXCJpbWFnZS8qXCIsIFwiYXVkaW8vKlwiLCBvciBcInZpZGVvLypcIikuXG4gICAgICAgICAqL1xuICAgICAgICBjYXB0dXJlOiBudWxsLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAqKkRlcHJlY2F0ZWQqKi4gVXNlIGByZW5hbWVGaWxlYCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVuYW1lRmlsZW5hbWU6IG51bGwsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIGJlZm9yZSB0aGUgZmlsZSBpcyB1cGxvYWRlZCB0byB0aGUgc2VydmVyIGFuZCByZW5hbWVzIHRoZSBmaWxlLlxuICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIGBGaWxlYCBhcyBhcmd1bWVudCBhbmQgY2FuIHVzZSB0aGUgYGZpbGUubmFtZWAuIFRoZSBhY3R1YWwgbmFtZSBvZiB0aGVcbiAgICAgICAgICogZmlsZSB0aGF0IGdldHMgdXNlZCBkdXJpbmcgdGhlIHVwbG9hZCBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBgZmlsZS51cGxvYWQuZmlsZW5hbWVgLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVuYW1lRmlsZTogbnVsbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYHRydWVgIHRoZSBmYWxsYmFjayB3aWxsIGJlIGZvcmNlZC4gVGhpcyBpcyB2ZXJ5IHVzZWZ1bCB0byB0ZXN0IHlvdXIgc2VydmVyXG4gICAgICAgICAqIGltcGxlbWVudGF0aW9ucyBmaXJzdCBhbmQgbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyB3b3JrcyBhc1xuICAgICAgICAgKiBleHBlY3RlZCB3aXRob3V0IGRyb3B6b25lIGlmIHlvdSBleHBlcmllbmNlIHByb2JsZW1zLCBhbmQgdG8gdGVzdFxuICAgICAgICAgKiBob3cgeW91ciBmYWxsYmFja3Mgd2lsbCBsb29rLlxuICAgICAgICAgKi9cbiAgICAgICAgZm9yY2VGYWxsYmFjazogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0ZXh0IHVzZWQgYmVmb3JlIGFueSBmaWxlcyBhcmUgZHJvcHBlZC5cbiAgICAgICAgICovXG4gICAgICAgIGRpY3REZWZhdWx0TWVzc2FnZTogXCJEcm9wIGZpbGVzIGhlcmUgdG8gdXBsb2FkXCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0ZXh0IHRoYXQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgbWVzc2FnZSB0ZXh0IGl0IHRoZSBicm93c2VyIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0RmFsbGJhY2tNZXNzYWdlOiBcIllvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGRyYWcnbidkcm9wIGZpbGUgdXBsb2Fkcy5cIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGFkZGVkIGJlZm9yZSB0aGUgZmFsbGJhY2sgZm9ybS5cbiAgICAgICAgICogSWYgeW91IHByb3ZpZGUgYSAgZmFsbGJhY2sgZWxlbWVudCB5b3Vyc2VsZiwgb3IgaWYgdGhpcyBvcHRpb24gaXMgYG51bGxgIHRoaXMgd2lsbFxuICAgICAgICAgKiBiZSBpZ25vcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZGljdEZhbGxiYWNrVGV4dDogXCJQbGVhc2UgdXNlIHRoZSBmYWxsYmFjayBmb3JtIGJlbG93IHRvIHVwbG9hZCB5b3VyIGZpbGVzIGxpa2UgaW4gdGhlIG9sZGVuIGRheXMuXCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSBmaWxlc2l6ZSBpcyB0b28gYmlnLlxuICAgICAgICAgKiBge3tmaWxlc2l6ZX19YCBhbmQgYHt7bWF4RmlsZXNpemV9fWAgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb24gdmFsdWVzLlxuICAgICAgICAgKi9cbiAgICAgICAgZGljdEZpbGVUb29CaWc6IFwiRmlsZSBpcyB0b28gYmlnICh7e2ZpbGVzaXplfX1NaUIpLiBNYXggZmlsZXNpemU6IHt7bWF4RmlsZXNpemV9fU1pQi5cIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIGZpbGUgZG9lc24ndCBtYXRjaCB0aGUgZmlsZSB0eXBlLlxuICAgICAgICAgKi9cbiAgICAgICAgZGljdEludmFsaWRGaWxlVHlwZTogXCJZb3UgY2FuJ3QgdXBsb2FkIGZpbGVzIG9mIHRoaXMgdHlwZS5cIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIHNlcnZlciByZXNwb25zZSB3YXMgaW52YWxpZC5cbiAgICAgICAgICogYHt7c3RhdHVzQ29kZX19YCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHNlcnZlcnMgc3RhdHVzIGNvZGUuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0UmVzcG9uc2VFcnJvcjogXCJTZXJ2ZXIgcmVzcG9uZGVkIHdpdGgge3tzdGF0dXNDb2RlfX0gY29kZS5cIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgYGFkZFJlbW92ZUxpbmtzYCBpcyB0cnVlLCB0aGUgdGV4dCB0byBiZSB1c2VkIGZvciB0aGUgY2FuY2VsIHVwbG9hZCBsaW5rLlxuICAgICAgICAgKi9cbiAgICAgICAgZGljdENhbmNlbFVwbG9hZDogXCJDYW5jZWwgdXBsb2FkXCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0ZXh0IHRoYXQgaXMgZGlzcGxheWVkIGlmIGFuIHVwbG9hZCB3YXMgbWFudWFsbHkgY2FuY2VsZWRcbiAgICAgICAgICovXG4gICAgICAgIGRpY3RVcGxvYWRDYW5jZWxlZDogXCJVcGxvYWQgY2FuY2VsZWQuXCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGBhZGRSZW1vdmVMaW5rc2AgaXMgdHJ1ZSwgdGhlIHRleHQgdG8gYmUgdXNlZCBmb3IgY29uZmlybWF0aW9uIHdoZW4gY2FuY2VsbGluZyB1cGxvYWQuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uOiBcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgdGhpcyB1cGxvYWQ/XCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGBhZGRSZW1vdmVMaW5rc2AgaXMgdHJ1ZSwgdGhlIHRleHQgdG8gYmUgdXNlZCB0byByZW1vdmUgYSBmaWxlLlxuICAgICAgICAgKi9cbiAgICAgICAgZGljdFJlbW92ZUZpbGU6IFwiUmVtb3ZlIGZpbGVcIixcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhpcyBpcyBub3QgbnVsbCwgdGhlbiB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIGJlZm9yZSByZW1vdmluZyBhIGZpbGUuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbjogbnVsbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogRGlzcGxheWVkIGlmIGBtYXhGaWxlc2AgaXMgc3QgYW5kIGV4Y2VlZGVkLlxuICAgICAgICAgKiBUaGUgc3RyaW5nIGB7e21heEZpbGVzfX1gIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0TWF4RmlsZXNFeGNlZWRlZDogXCJZb3UgY2FuIG5vdCB1cGxvYWQgYW55IG1vcmUgZmlsZXMuXCIsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbG93cyB5b3UgdG8gdHJhbnNsYXRlIHRoZSBkaWZmZXJlbnQgdW5pdHMuIFN0YXJ0aW5nIHdpdGggYHRiYCBmb3IgdGVyYWJ5dGVzIGFuZCBnb2luZyBkb3duIHRvXG4gICAgICAgICAqIGBiYCBmb3IgYnl0ZXMuXG4gICAgICAgICAqL1xuICAgICAgICBkaWN0RmlsZVNpemVVbml0czoge1xuICAgICAgICAgIHRiOiBcIlRCXCIsXG4gICAgICAgICAgZ2I6IFwiR0JcIixcbiAgICAgICAgICBtYjogXCJNQlwiLFxuICAgICAgICAgIGtiOiBcIktCXCIsXG4gICAgICAgICAgYjogXCJiXCJcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2FsbGVkIHdoZW4gZHJvcHpvbmUgaW5pdGlhbGl6ZWRcbiAgICAgICAgICogWW91IGNhbiBhZGQgZXZlbnQgbGlzdGVuZXJzIGhlcmVcbiAgICAgICAgICovXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uIGluaXQoKSB7fSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2FuIGJlIGFuICoqb2JqZWN0Kiogb2YgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHRyYW5zZmVyIHRvIHRoZSBzZXJ2ZXIsICoqb3IqKiBhIGBGdW5jdGlvbmBcbiAgICAgICAgICogdGhhdCBnZXRzIGludm9rZWQgd2l0aCB0aGUgYGZpbGVzYCwgYHhocmAgYW5kLCBpZiBpdCdzIGEgY2h1bmtlZCB1cGxvYWQsIGBjaHVua2AgYXJndW1lbnRzLiBJbiBjYXNlXG4gICAgICAgICAqIG9mIGEgZnVuY3Rpb24sIHRoaXMgbmVlZHMgdG8gcmV0dXJuIGEgbWFwLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcgZm9yIG5vcm1hbCB1cGxvYWRzLCBidXQgYWRkcyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3JcbiAgICAgICAgICogY2h1bmtlZCB1cGxvYWRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGlzIGlzIHRoZSBzYW1lIGFzIGFkZGluZyBoaWRkZW4gaW5wdXQgZmllbGRzIGluIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhbXM6IGZ1bmN0aW9uIHBhcmFtcyhmaWxlcywgeGhyLCBjaHVuaykge1xuICAgICAgICAgIGlmIChjaHVuaykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZHp1dWlkOiBjaHVuay5maWxlLnVwbG9hZC51dWlkLFxuICAgICAgICAgICAgICBkemNodW5raW5kZXg6IGNodW5rLmluZGV4LFxuICAgICAgICAgICAgICBkenRvdGFsZmlsZXNpemU6IGNodW5rLmZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgZHpjaHVua3NpemU6IHRoaXMub3B0aW9ucy5jaHVua1NpemUsXG4gICAgICAgICAgICAgIGR6dG90YWxjaHVua2NvdW50OiBjaHVuay5maWxlLnVwbG9hZC50b3RhbENodW5rQ291bnQsXG4gICAgICAgICAgICAgIGR6Y2h1bmtieXRlb2Zmc2V0OiBjaHVuay5pbmRleCAqIHRoaXMub3B0aW9ucy5jaHVua1NpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGZ1bmN0aW9uIHRoYXQgZ2V0cyBhIFtmaWxlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0RPTS9GaWxlKVxuICAgICAgICAgKiBhbmQgYSBgZG9uZWAgZnVuY3Rpb24gYXMgcGFyYW1ldGVycy5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGRvbmUgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgdGhlIGZpbGUgaXMgXCJhY2NlcHRlZFwiIGFuZCB3aWxsXG4gICAgICAgICAqIGJlIHByb2Nlc3NlZC4gSWYgeW91IHBhc3MgYW4gZXJyb3IgbWVzc2FnZSwgdGhlIGZpbGUgaXMgcmVqZWN0ZWQsIGFuZCB0aGUgZXJyb3JcbiAgICAgICAgICogbWVzc2FnZSB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICAgICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjYWxsZWQgaWYgdGhlIGZpbGUgaXMgdG9vIGJpZyBvciBkb2Vzbid0IG1hdGNoIHRoZSBtaW1lIHR5cGVzLlxuICAgICAgICAgKi9cbiAgICAgICAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQoZmlsZSwgZG9uZSkge1xuICAgICAgICAgIHJldHVybiBkb25lKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgaW52b2tlZCB3aGVuIGFsbCBjaHVua3MgaGF2ZSBiZWVuIHVwbG9hZGVkIGZvciBhIGZpbGUuXG4gICAgICAgICAqIEl0IGdldHMgdGhlIGZpbGUgZm9yIHdoaWNoIHRoZSBjaHVua3MgaGF2ZSBiZWVuIHVwbG9hZGVkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIsXG4gICAgICAgICAqIGFuZCB0aGUgYGRvbmVgIGZ1bmN0aW9uIGFzIHNlY29uZC4gYGRvbmUoKWAgbmVlZHMgdG8gYmUgaW52b2tlZCB3aGVuIGV2ZXJ5dGhpbmdcbiAgICAgICAgICogbmVlZGVkIHRvIGZpbmlzaCB0aGUgdXBsb2FkIHByb2Nlc3MgaXMgZG9uZS5cbiAgICAgICAgICovXG4gICAgICAgIGNodW5rc1VwbG9hZGVkOiBmdW5jdGlvbiBjaHVua3NVcGxvYWRlZChmaWxlLCBkb25lKSB7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIGNhbGxlZCB3aGVuIHRoZSBicm93c2VyIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHNob3dzIHRoZSBmYWxsYmFjayBpbnB1dCBmaWVsZCBhbmQgYWRkc1xuICAgICAgICAgKiBhIHRleHQuXG4gICAgICAgICAqL1xuICAgICAgICBmYWxsYmFjazogZnVuY3Rpb24gZmFsbGJhY2soKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb2RlIHNob3VsZCBwYXNzIGluIElFNy4uLiA6KFxuICAgICAgICAgIHZhciBtZXNzYWdlRWxlbWVudDtcbiAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gXCJcIi5jb25jYXQodGhpcy5lbGVtZW50LmNsYXNzTmFtZSwgXCIgZHotYnJvd3Nlci1ub3Qtc3VwcG9ydGVkXCIpO1xuICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG4gICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRpdlwiKVtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkge1xuICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBfc3RlcDIudmFsdWU7XG5cbiAgICAgICAgICAgICAgaWYgKC8oXnwgKWR6LW1lc3NhZ2UoJHwgKS8udGVzdChjaGlsZC5jbGFzc05hbWUpKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZUVsZW1lbnQgPSBjaGlsZDtcbiAgICAgICAgICAgICAgICBjaGlsZC5jbGFzc05hbWUgPSBcImR6LW1lc3NhZ2VcIjsgLy8gUmVtb3ZlcyB0aGUgJ2R6LWRlZmF1bHQnIGNsYXNzXG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcbiAgICAgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IGVycjtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyW1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyW1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIW1lc3NhZ2VFbGVtZW50KSB7XG4gICAgICAgICAgICBtZXNzYWdlRWxlbWVudCA9IERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoXCI8ZGl2IGNsYXNzPVxcXCJkei1tZXNzYWdlXFxcIj48c3Bhbj48L3NwYW4+PC9kaXY+XCIpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VFbGVtZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3BhbiA9IG1lc3NhZ2VFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic3BhblwiKVswXTtcblxuICAgICAgICAgIGlmIChzcGFuKSB7XG4gICAgICAgICAgICBpZiAoc3Bhbi50ZXh0Q29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSB0aGlzLm9wdGlvbnMuZGljdEZhbGxiYWNrTWVzc2FnZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3Bhbi5pbm5lclRleHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBzcGFuLmlubmVyVGV4dCA9IHRoaXMub3B0aW9ucy5kaWN0RmFsbGJhY2tNZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5nZXRGYWxsYmFja0Zvcm0oKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgY2FsbGVkIHRvIGNhbGN1bGF0ZSB0aGUgdGh1bWJuYWlsIGRpbWVuc2lvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEl0IGdldHMgYGZpbGVgLCBgd2lkdGhgIGFuZCBgaGVpZ2h0YCAoYm90aCBtYXkgYmUgYG51bGxgKSBhcyBwYXJhbWV0ZXJzIGFuZCBtdXN0IHJldHVybiBhbiBvYmplY3QgY29udGFpbmluZzpcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gYHNyY1dpZHRoYCAmIGBzcmNIZWlnaHRgIChyZXF1aXJlZClcbiAgICAgICAgICogIC0gYHRyZ1dpZHRoYCAmIGB0cmdIZWlnaHRgIChyZXF1aXJlZClcbiAgICAgICAgICogIC0gYHNyY1hgICYgYHNyY1lgIChvcHRpb25hbCwgZGVmYXVsdCBgMGApXG4gICAgICAgICAqICAtIGB0cmdYYCAmIGB0cmdZYCAob3B0aW9uYWwsIGRlZmF1bHQgYDBgKVxuICAgICAgICAgKlxuICAgICAgICAgKiBUaG9zZSB2YWx1ZXMgYXJlIGdvaW5nIHRvIGJlIHVzZWQgYnkgYGN0eC5kcmF3SW1hZ2UoKWAuXG4gICAgICAgICAqL1xuICAgICAgICByZXNpemU6IGZ1bmN0aW9uIHJlc2l6ZShmaWxlLCB3aWR0aCwgaGVpZ2h0LCByZXNpemVNZXRob2QpIHtcbiAgICAgICAgICB2YXIgaW5mbyA9IHtcbiAgICAgICAgICAgIHNyY1g6IDAsXG4gICAgICAgICAgICBzcmNZOiAwLFxuICAgICAgICAgICAgc3JjV2lkdGg6IGZpbGUud2lkdGgsXG4gICAgICAgICAgICBzcmNIZWlnaHQ6IGZpbGUuaGVpZ2h0XG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgc3JjUmF0aW8gPSBmaWxlLndpZHRoIC8gZmlsZS5oZWlnaHQ7IC8vIEF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIGRpbWVuc2lvbnMgaWYgbm90IHNwZWNpZmllZFxuXG4gICAgICAgICAgaWYgKHdpZHRoID09IG51bGwgJiYgaGVpZ2h0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHdpZHRoID0gaW5mby5zcmNXaWR0aDtcbiAgICAgICAgICAgIGhlaWdodCA9IGluZm8uc3JjSGVpZ2h0O1xuICAgICAgICAgIH0gZWxzZSBpZiAod2lkdGggPT0gbnVsbCkge1xuICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgKiBzcmNSYXRpbztcbiAgICAgICAgICB9IGVsc2UgaWYgKGhlaWdodCA9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWlnaHQgPSB3aWR0aCAvIHNyY1JhdGlvO1xuICAgICAgICAgIH0gLy8gTWFrZSBzdXJlIGltYWdlcyBhcmVuJ3QgdXBzY2FsZWRcblxuXG4gICAgICAgICAgd2lkdGggPSBNYXRoLm1pbih3aWR0aCwgaW5mby5zcmNXaWR0aCk7XG4gICAgICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBpbmZvLnNyY0hlaWdodCk7XG4gICAgICAgICAgdmFyIHRyZ1JhdGlvID0gd2lkdGggLyBoZWlnaHQ7XG5cbiAgICAgICAgICBpZiAoaW5mby5zcmNXaWR0aCA+IHdpZHRoIHx8IGluZm8uc3JjSGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBJbWFnZSBpcyBiaWdnZXIgYW5kIG5lZWRzIHJlc2NhbGluZ1xuICAgICAgICAgICAgaWYgKHJlc2l6ZU1ldGhvZCA9PT0gJ2Nyb3AnKSB7XG4gICAgICAgICAgICAgIGlmIChzcmNSYXRpbyA+IHRyZ1JhdGlvKSB7XG4gICAgICAgICAgICAgICAgaW5mby5zcmNIZWlnaHQgPSBmaWxlLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpbmZvLnNyY1dpZHRoID0gaW5mby5zcmNIZWlnaHQgKiB0cmdSYXRpbztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmZvLnNyY1dpZHRoID0gZmlsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBpbmZvLnNyY0hlaWdodCA9IGluZm8uc3JjV2lkdGggLyB0cmdSYXRpbztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNpemVNZXRob2QgPT09ICdjb250YWluJykge1xuICAgICAgICAgICAgICAvLyBNZXRob2QgJ2NvbnRhaW4nXG4gICAgICAgICAgICAgIGlmIChzcmNSYXRpbyA+IHRyZ1JhdGlvKSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gd2lkdGggLyBzcmNSYXRpbztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCAqIHNyY1JhdGlvO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHJlc2l6ZU1ldGhvZCAnXCIuY29uY2F0KHJlc2l6ZU1ldGhvZCwgXCInXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbmZvLnNyY1ggPSAoZmlsZS53aWR0aCAtIGluZm8uc3JjV2lkdGgpIC8gMjtcbiAgICAgICAgICBpbmZvLnNyY1kgPSAoZmlsZS5oZWlnaHQgLSBpbmZvLnNyY0hlaWdodCkgLyAyO1xuICAgICAgICAgIGluZm8udHJnV2lkdGggPSB3aWR0aDtcbiAgICAgICAgICBpbmZvLnRyZ0hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICByZXR1cm4gaW5mbztcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2FuIGJlIHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBmaWxlIChmb3IgZXhhbXBsZSwgcmVzaXplIGFuIGltYWdlIGlmIG5lY2Vzc2FyeSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHVzZXMgYHJlc2l6ZVdpZHRoYCBhbmQgYHJlc2l6ZUhlaWdodGAgKGlmIHByb3ZpZGVkKSBhbmQgcmVzaXplc1xuICAgICAgICAgKiBpbWFnZXMgYWNjb3JkaW5nIHRvIHRob3NlIGRpbWVuc2lvbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIEdldHMgdGhlIGBmaWxlYCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyLCBhbmQgYSBgZG9uZSgpYCBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kLCB0aGF0IG5lZWRzXG4gICAgICAgICAqIHRvIGJlIGludm9rZWQgd2l0aCB0aGUgZmlsZSB3aGVuIHRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuICAgICAgICAgKi9cbiAgICAgICAgdHJhbnNmb3JtRmlsZTogZnVuY3Rpb24gdHJhbnNmb3JtRmlsZShmaWxlLCBkb25lKSB7XG4gICAgICAgICAgaWYgKCh0aGlzLm9wdGlvbnMucmVzaXplV2lkdGggfHwgdGhpcy5vcHRpb25zLnJlc2l6ZUhlaWdodCkgJiYgZmlsZS50eXBlLm1hdGNoKC9pbWFnZS4qLykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc2l6ZUltYWdlKGZpbGUsIHRoaXMub3B0aW9ucy5yZXNpemVXaWR0aCwgdGhpcy5vcHRpb25zLnJlc2l6ZUhlaWdodCwgdGhpcy5vcHRpb25zLnJlc2l6ZU1ldGhvZCwgZG9uZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkb25lKGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgZWFjaCBkcm9wcGVkXG4gICAgICAgICAqIGZpbGUuIENoYW5nZSBpdCB0byBmdWxmaWxsIHlvdXIgbmVlZHMgYnV0IG1ha2Ugc3VyZSB0byBwcm9wZXJseVxuICAgICAgICAgKiBwcm92aWRlIGFsbCBlbGVtZW50cy5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgeW91IHdhbnQgdG8gdXNlIGFuIGFjdHVhbCBIVE1MIGVsZW1lbnQgaW5zdGVhZCBvZiBwcm92aWRpbmcgYSBTdHJpbmdcbiAgICAgICAgICogYXMgYSBjb25maWcgb3B0aW9uLCB5b3UgY291bGQgY3JlYXRlIGEgZGl2IHdpdGggdGhlIGlkIGB0cGxgLFxuICAgICAgICAgKiBwdXQgdGhlIHRlbXBsYXRlIGluc2lkZSBpdCBhbmQgcHJvdmlkZSB0aGUgZWxlbWVudCBsaWtlIHRoaXM6XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBkb2N1bWVudFxuICAgICAgICAgKiAgICAgICAucXVlcnlTZWxlY3RvcignI3RwbCcpXG4gICAgICAgICAqICAgICAgIC5pbm5lckhUTUxcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIHByZXZpZXdUZW1wbGF0ZTogXCI8ZGl2IGNsYXNzPVxcXCJkei1wcmV2aWV3IGR6LWZpbGUtcHJldmlld1xcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJkei1pbWFnZVxcXCI+PGltZyBkYXRhLWR6LXRodW1ibmFpbCAvPjwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotZGV0YWlsc1xcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImR6LXNpemVcXFwiPjxzcGFuIGRhdGEtZHotc2l6ZT48L3NwYW4+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcImR6LWZpbGVuYW1lXFxcIj48c3BhbiBkYXRhLWR6LW5hbWU+PC9zcGFuPjwvZGl2PlxcbiAgPC9kaXY+XFxuICA8ZGl2IGNsYXNzPVxcXCJkei1wcm9ncmVzc1xcXCI+PHNwYW4gY2xhc3M9XFxcImR6LXVwbG9hZFxcXCIgZGF0YS1kei11cGxvYWRwcm9ncmVzcz48L3NwYW4+PC9kaXY+XFxuICA8ZGl2IGNsYXNzPVxcXCJkei1lcnJvci1tZXNzYWdlXFxcIj48c3BhbiBkYXRhLWR6LWVycm9ybWVzc2FnZT48L3NwYW4+PC9kaXY+XFxuICA8ZGl2IGNsYXNzPVxcXCJkei1zdWNjZXNzLW1hcmtcXFwiPlxcbiAgICA8c3ZnIHdpZHRoPVxcXCI1NHB4XFxcIiBoZWlnaHQ9XFxcIjU0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCA1NCA1NFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHhtbG5zOnhsaW5rPVxcXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXFxcIj5cXG4gICAgICA8dGl0bGU+Q2hlY2s8L3RpdGxlPlxcbiAgICAgIDxnIHN0cm9rZT1cXFwibm9uZVxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxXFxcIiBmaWxsPVxcXCJub25lXFxcIiBmaWxsLXJ1bGU9XFxcImV2ZW5vZGRcXFwiPlxcbiAgICAgICAgPHBhdGggZD1cXFwiTTIzLjUsMzEuODQzMTQ1OCBMMTcuNTg1MjQxOSwyNS45MjgzODc3IEMxNi4wMjQ4MjUzLDI0LjM2Nzk3MTEgMTMuNDkxMDI5NCwyNC4zNjY4MzUgMTEuOTI4OTMyMiwyNS45Mjg5MzIyIEMxMC4zNzAwMTM2LDI3LjQ4Nzg1MDggMTAuMzY2NTkxMiwzMC4wMjM0NDU1IDExLjkyODM4NzcsMzEuNTg1MjQxOSBMMjAuNDE0NzU4MSw0MC4wNzE2MTIzIEMyMC41MTMzOTk5LDQwLjE3MDI1NDEgMjAuNjE1OTMxNSw0MC4yNjI2NjQ5IDIwLjcyMTg2MTUsNDAuMzQ4ODQzNSBDMjIuMjgzNTY2OSw0MS44NzI1NjUxIDI0Ljc5NDIzNCw0MS44NjI2MjAyIDI2LjM0NjE1NjQsNDAuMzEwNjk3OCBMNDMuMzEwNjk3OCwyMy4zNDYxNTY0IEM0NC44NzcxMDIxLDIxLjc3OTc1MjEgNDQuODc1ODA1NywxOS4yNDgzODg3IDQzLjMxMzcwODUsMTcuNjg2MjkxNSBDNDEuNzU0Nzg5OSwxNi4xMjczNzI5IDM5LjIxNzYwMzUsMTYuMTI1NTQyMiAzNy42NTM4NDM2LDE3LjY4OTMwMjIgTDIzLjUsMzEuODQzMTQ1OCBaIE0yNyw1MyBDNDEuMzU5NDAzNSw1MyA1Myw0MS4zNTk0MDM1IDUzLDI3IEM1MywxMi42NDA1OTY1IDQxLjM1OTQwMzUsMSAyNywxIEMxMi42NDA1OTY1LDEgMSwxMi42NDA1OTY1IDEsMjcgQzEsNDEuMzU5NDAzNSAxMi42NDA1OTY1LDUzIDI3LDUzIFpcXFwiIHN0cm9rZS1vcGFjaXR5PVxcXCIwLjE5ODc5NDE1OFxcXCIgc3Ryb2tlPVxcXCIjNzQ3NDc0XFxcIiBmaWxsLW9wYWNpdHk9XFxcIjAuODE2NTE5NDc1XFxcIiBmaWxsPVxcXCIjRkZGRkZGXFxcIj48L3BhdGg+XFxuICAgICAgPC9nPlxcbiAgICA8L3N2Zz5cXG4gIDwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwiZHotZXJyb3ItbWFya1xcXCI+XFxuICAgIDxzdmcgd2lkdGg9XFxcIjU0cHhcXFwiIGhlaWdodD1cXFwiNTRweFxcXCIgdmlld0JveD1cXFwiMCAwIDU0IDU0XFxcIiB2ZXJzaW9uPVxcXCIxLjFcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgeG1sbnM6eGxpbms9XFxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcXFwiPlxcbiAgICAgIDx0aXRsZT5FcnJvcjwvdGl0bGU+XFxuICAgICAgPGcgc3Ryb2tlPVxcXCJub25lXFxcIiBzdHJva2Utd2lkdGg9XFxcIjFcXFwiIGZpbGw9XFxcIm5vbmVcXFwiIGZpbGwtcnVsZT1cXFwiZXZlbm9kZFxcXCI+XFxuICAgICAgICA8ZyBzdHJva2U9XFxcIiM3NDc0NzRcXFwiIHN0cm9rZS1vcGFjaXR5PVxcXCIwLjE5ODc5NDE1OFxcXCIgZmlsbD1cXFwiI0ZGRkZGRlxcXCIgZmlsbC1vcGFjaXR5PVxcXCIwLjgxNjUxOTQ3NVxcXCI+XFxuICAgICAgICAgIDxwYXRoIGQ9XFxcIk0zMi42NTY4NTQyLDI5IEwzOC4zMTA2OTc4LDIzLjM0NjE1NjQgQzM5Ljg3NzEwMjEsMjEuNzc5NzUyMSAzOS44NzU4MDU3LDE5LjI0ODM4ODcgMzguMzEzNzA4NSwxNy42ODYyOTE1IEMzNi43NTQ3ODk5LDE2LjEyNzM3MjkgMzQuMjE3NjAzNSwxNi4xMjU1NDIyIDMyLjY1Mzg0MzYsMTcuNjg5MzAyMiBMMjcsMjMuMzQzMTQ1OCBMMjEuMzQ2MTU2NCwxNy42ODkzMDIyIEMxOS43ODIzOTY1LDE2LjEyNTU0MjIgMTcuMjQ1MjEwMSwxNi4xMjczNzI5IDE1LjY4NjI5MTUsMTcuNjg2MjkxNSBDMTQuMTI0MTk0MywxOS4yNDgzODg3IDE0LjEyMjg5NzksMjEuNzc5NzUyMSAxNS42ODkzMDIyLDIzLjM0NjE1NjQgTDIxLjM0MzE0NTgsMjkgTDE1LjY4OTMwMjIsMzQuNjUzODQzNiBDMTQuMTIyODk3OSwzNi4yMjAyNDc5IDE0LjEyNDE5NDMsMzguNzUxNjExMyAxNS42ODYyOTE1LDQwLjMxMzcwODUgQzE3LjI0NTIxMDEsNDEuODcyNjI3MSAxOS43ODIzOTY1LDQxLjg3NDQ1NzggMjEuMzQ2MTU2NCw0MC4zMTA2OTc4IEwyNywzNC42NTY4NTQyIEwzMi42NTM4NDM2LDQwLjMxMDY5NzggQzM0LjIxNzYwMzUsNDEuODc0NDU3OCAzNi43NTQ3ODk5LDQxLjg3MjYyNzEgMzguMzEzNzA4NSw0MC4zMTM3MDg1IEMzOS44NzU4MDU3LDM4Ljc1MTYxMTMgMzkuODc3MTAyMSwzNi4yMjAyNDc5IDM4LjMxMDY5NzgsMzQuNjUzODQzNiBMMzIuNjU2ODU0MiwyOSBaIE0yNyw1MyBDNDEuMzU5NDAzNSw1MyA1Myw0MS4zNTk0MDM1IDUzLDI3IEM1MywxMi42NDA1OTY1IDQxLjM1OTQwMzUsMSAyNywxIEMxMi42NDA1OTY1LDEgMSwxMi42NDA1OTY1IDEsMjcgQzEsNDEuMzU5NDAzNSAxMi42NDA1OTY1LDUzIDI3LDUzIFpcXFwiPjwvcGF0aD5cXG4gICAgICAgIDwvZz5cXG4gICAgICA8L2c+XFxuICAgIDwvc3ZnPlxcbiAgPC9kaXY+XFxuPC9kaXY+XCIsXG4gICAgICAgIC8vIEVORCBPUFRJT05TXG4gICAgICAgIC8vIChSZXF1aXJlZCBieSB0aGUgZHJvcHpvbmUgZG9jdW1lbnRhdGlvbiBwYXJzZXIpXG5cbiAgICAgICAgLypcbiAgICAgICAgIFRob3NlIGZ1bmN0aW9ucyByZWdpc3RlciB0aGVtc2VsdmVzIHRvIHRoZSBldmVudHMgb24gaW5pdCBhbmQgaGFuZGxlIGFsbFxuICAgICAgICAgdGhlIHVzZXIgaW50ZXJmYWNlIHNwZWNpZmljIHN0dWZmLiBPdmVyd3JpdGluZyB0aGVtIHdvbid0IGJyZWFrIHRoZSB1cGxvYWRcbiAgICAgICAgIGJ1dCBjYW4gYnJlYWsgdGhlIHdheSBpdCdzIGRpc3BsYXllZC5cbiAgICAgICAgIFlvdSBjYW4gb3ZlcndyaXRlIHRoZW0gaWYgeW91IGRvbid0IGxpa2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIElmIHlvdSBqdXN0XG4gICAgICAgICB3YW50IHRvIGFkZCBhbiBhZGRpdGlvbmFsIGV2ZW50IGhhbmRsZXIsIHJlZ2lzdGVyIGl0IG9uIHRoZSBkcm9wem9uZSBvYmplY3RcbiAgICAgICAgIGFuZCBkb24ndCBvdmVyd3JpdGUgdGhvc2Ugb3B0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIC8vIFRob3NlIGFyZSBzZWxmIGV4cGxhbmF0b3J5IGFuZCBzaW1wbHkgY29uY2VybiB0aGUgRHJhZ25Ecm9wLlxuICAgICAgICBkcm9wOiBmdW5jdGlvbiBkcm9wKGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1kcmFnLWhvdmVyXCIpO1xuICAgICAgICB9LFxuICAgICAgICBkcmFnc3RhcnQ6IGZ1bmN0aW9uIGRyYWdzdGFydChlKSB7fSxcbiAgICAgICAgZHJhZ2VuZDogZnVuY3Rpb24gZHJhZ2VuZChlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZHotZHJhZy1ob3ZlclwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ2VudGVyOiBmdW5jdGlvbiBkcmFnZW50ZXIoZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LWRyYWctaG92ZXJcIik7XG4gICAgICAgIH0sXG4gICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbiBkcmFnb3ZlcihlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotZHJhZy1ob3ZlclwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ2xlYXZlOiBmdW5jdGlvbiBkcmFnbGVhdmUoZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LWRyYWctaG92ZXJcIik7XG4gICAgICAgIH0sXG4gICAgICAgIHBhc3RlOiBmdW5jdGlvbiBwYXN0ZShlKSB7fSxcbiAgICAgICAgLy8gQ2FsbGVkIHdoZW5ldmVyIHRoZXJlIGFyZSBubyBmaWxlcyBsZWZ0IGluIHRoZSBkcm9wem9uZSBhbnltb3JlLCBhbmQgdGhlXG4gICAgICAgIC8vIGRyb3B6b25lIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgaWYgaW4gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1zdGFydGVkXCIpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBDYWxsZWQgd2hlbiBhIGZpbGUgaXMgYWRkZWQgdG8gdGhlIHF1ZXVlXG4gICAgICAgIC8vIFJlY2VpdmVzIGBmaWxlYFxuICAgICAgICBhZGRlZGZpbGU6IGZ1bmN0aW9uIGFkZGVkZmlsZShmaWxlKSB7XG4gICAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgICBpZiAodGhpcy5lbGVtZW50ID09PSB0aGlzLnByZXZpZXdzQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LXN0YXJ0ZWRcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMucHJldmlld3NDb250YWluZXIpIHtcbiAgICAgICAgICAgIGZpbGUucHJldmlld0VsZW1lbnQgPSBEcm9wem9uZS5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy5wcmV2aWV3VGVtcGxhdGUudHJpbSgpKTtcbiAgICAgICAgICAgIGZpbGUucHJldmlld1RlbXBsYXRlID0gZmlsZS5wcmV2aWV3RWxlbWVudDsgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuICAgICAgICAgICAgdGhpcy5wcmV2aWV3c0NvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlLnByZXZpZXdFbGVtZW50KTtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IzID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotbmFtZV1cIilbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwMy52YWx1ZTtcbiAgICAgICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gZmlsZS5uYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zICYmIF9pdGVyYXRvcjNbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yM1tcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3I0ID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotc2l6ZV1cIilbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gX3N0ZXA0LnZhbHVlO1xuICAgICAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGhpcy5maWxlc2l6ZShmaWxlLnNpemUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ICYmIF9pdGVyYXRvcjRbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yNFtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3I0KSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYWRkUmVtb3ZlTGlua3MpIHtcbiAgICAgICAgICAgICAgZmlsZS5fcmVtb3ZlTGluayA9IERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoXCI8YSBjbGFzcz1cXFwiZHotcmVtb3ZlXFxcIiBocmVmPVxcXCJqYXZhc2NyaXB0OnVuZGVmaW5lZDtcXFwiIGRhdGEtZHotcmVtb3ZlPlwiLmNvbmNhdCh0aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGUsIFwiPC9hPlwiKSk7XG4gICAgICAgICAgICAgIGZpbGUucHJldmlld0VsZW1lbnQuYXBwZW5kQ2hpbGQoZmlsZS5fcmVtb3ZlTGluayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciByZW1vdmVGaWxlRXZlbnQgPSBmdW5jdGlvbiByZW1vdmVGaWxlRXZlbnQoZSkge1xuICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5VUExPQURJTkcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRHJvcHpvbmUuY29uZmlybShfdGhpczIub3B0aW9ucy5kaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzMi5vcHRpb25zLmRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gRHJvcHpvbmUuY29uZmlybShfdGhpczIub3B0aW9ucy5kaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5yZW1vdmVGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjUgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei1yZW1vdmVdXCIpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA1OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gKF9zdGVwNSA9IF9pdGVyYXRvcjUubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlbW92ZUxpbmsgPSBfc3RlcDUudmFsdWU7XG4gICAgICAgICAgICAgICAgcmVtb3ZlTGluay5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVtb3ZlRmlsZUV2ZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IHRydWU7XG4gICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yNSA9IGVycjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSAmJiBfaXRlcmF0b3I1W1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yNSkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gQ2FsbGVkIHdoZW5ldmVyIGEgZmlsZSBpcyByZW1vdmVkLlxuICAgICAgICByZW1vdmVkZmlsZTogZnVuY3Rpb24gcmVtb3ZlZGZpbGUoZmlsZSkge1xuICAgICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50ICE9IG51bGwgJiYgZmlsZS5wcmV2aWV3RWxlbWVudC5wYXJlbnROb2RlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZpbGUucHJldmlld0VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmaWxlLnByZXZpZXdFbGVtZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlTWF4RmlsZXNSZWFjaGVkQ2xhc3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQ2FsbGVkIHdoZW4gYSB0aHVtYm5haWwgaGFzIGJlZW4gZ2VuZXJhdGVkXG4gICAgICAgIC8vIFJlY2VpdmVzIGBmaWxlYCBhbmQgYGRhdGFVcmxgXG4gICAgICAgIHRodW1ibmFpbDogZnVuY3Rpb24gdGh1bWJuYWlsKGZpbGUsIGRhdGFVcmwpIHtcbiAgICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZHotZmlsZS1wcmV2aWV3XCIpO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjYgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjYgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjYgPSBmaWxlLnByZXZpZXdFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1kei10aHVtYm5haWxdXCIpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA2OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gKF9zdGVwNiA9IF9pdGVyYXRvcjYubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRodW1ibmFpbEVsZW1lbnQgPSBfc3RlcDYudmFsdWU7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsRWxlbWVudC5hbHQgPSBmaWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsRWxlbWVudC5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I2ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ICYmIF9pdGVyYXRvcjZbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yNltcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3I2KSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbGUucHJldmlld0VsZW1lbnQuY2xhc3NMaXN0LmFkZChcImR6LWltYWdlLXByZXZpZXdcIik7XG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIENhbGxlZCB3aGVuZXZlciBhbiBlcnJvciBvY2N1cnNcbiAgICAgICAgLy8gUmVjZWl2ZXMgYGZpbGVgIGFuZCBgbWVzc2FnZWBcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKGZpbGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotZXJyb3JcIik7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPT0gXCJTdHJpbmdcIiAmJiBtZXNzYWdlLmVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVycm9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yNyA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yNyA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNyA9IGZpbGUucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWR6LWVycm9ybWVzc2FnZV1cIilbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDc7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSAoX3N0ZXA3ID0gX2l0ZXJhdG9yNy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwNy52YWx1ZTtcbiAgICAgICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNyA9IHRydWU7XG4gICAgICAgICAgICAgIF9pdGVyYXRvckVycm9yNyA9IGVycjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyAmJiBfaXRlcmF0b3I3W1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjdbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yNykge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JtdWx0aXBsZTogZnVuY3Rpb24gZXJyb3JtdWx0aXBsZSgpIHt9LFxuICAgICAgICAvLyBDYWxsZWQgd2hlbiBhIGZpbGUgZ2V0cyBwcm9jZXNzZWQuIFNpbmNlIHRoZXJlIGlzIGEgY3VlLCBub3QgYWxsIGFkZGVkXG4gICAgICAgIC8vIGZpbGVzIGFyZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgIC8vIFJlY2VpdmVzIGBmaWxlYFxuICAgICAgICBwcm9jZXNzaW5nOiBmdW5jdGlvbiBwcm9jZXNzaW5nKGZpbGUpIHtcbiAgICAgICAgICBpZiAoZmlsZS5wcmV2aWV3RWxlbWVudCkge1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotcHJvY2Vzc2luZ1wiKTtcblxuICAgICAgICAgICAgaWYgKGZpbGUuX3JlbW92ZUxpbmspIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbGUuX3JlbW92ZUxpbmsuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmRpY3RDYW5jZWxVcGxvYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzaW5nbXVsdGlwbGU6IGZ1bmN0aW9uIHByb2Nlc3NpbmdtdWx0aXBsZSgpIHt9LFxuICAgICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgdGhlIHVwbG9hZCBwcm9ncmVzcyBnZXRzIHVwZGF0ZWQuXG4gICAgICAgIC8vIFJlY2VpdmVzIGBmaWxlYCwgYHByb2dyZXNzYCAocGVyY2VudGFnZSAwLTEwMCkgYW5kIGBieXRlc1NlbnRgLlxuICAgICAgICAvLyBUbyBnZXQgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZiB0aGUgZmlsZSwgdXNlIGBmaWxlLnNpemVgXG4gICAgICAgIHVwbG9hZHByb2dyZXNzOiBmdW5jdGlvbiB1cGxvYWRwcm9ncmVzcyhmaWxlLCBwcm9ncmVzcywgYnl0ZXNTZW50KSB7XG4gICAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I4ID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3I4ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3I4ID0gZmlsZS5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZHotdXBsb2FkcHJvZ3Jlc3NdXCIpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA4OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gKF9zdGVwOCA9IF9pdGVyYXRvcjgubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBfc3RlcDgudmFsdWU7XG4gICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZSA9PT0gJ1BST0dSRVNTJyA/IG5vZGUudmFsdWUgPSBwcm9ncmVzcyA6IG5vZGUuc3R5bGUud2lkdGggPSBcIlwiLmNvbmNhdChwcm9ncmVzcywgXCIlXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I4ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I4ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ICYmIF9pdGVyYXRvcjhbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yOFtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3I4KSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgdGhlIHRvdGFsIHVwbG9hZCBwcm9ncmVzcyBnZXRzIHVwZGF0ZWQuXG4gICAgICAgIC8vIENhbGxlZCB3aXRoIHRvdGFsVXBsb2FkUHJvZ3Jlc3MgKDAtMTAwKSwgdG90YWxCeXRlcyBhbmQgdG90YWxCeXRlc1NlbnRcbiAgICAgICAgdG90YWx1cGxvYWRwcm9ncmVzczogZnVuY3Rpb24gdG90YWx1cGxvYWRwcm9ncmVzcygpIHt9LFxuICAgICAgICAvLyBDYWxsZWQganVzdCBiZWZvcmUgdGhlIGZpbGUgaXMgc2VudC4gR2V0cyB0aGUgYHhocmAgb2JqZWN0IGFzIHNlY29uZFxuICAgICAgICAvLyBwYXJhbWV0ZXIsIHNvIHlvdSBjYW4gbW9kaWZ5IGl0IChmb3IgZXhhbXBsZSB0byBhZGQgYSBDU1JGIHRva2VuKSBhbmQgYVxuICAgICAgICAvLyBgZm9ybURhdGFgIG9iamVjdCB0byBhZGQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cbiAgICAgICAgc2VuZGluZzogZnVuY3Rpb24gc2VuZGluZygpIHt9LFxuICAgICAgICBzZW5kaW5nbXVsdGlwbGU6IGZ1bmN0aW9uIHNlbmRpbmdtdWx0aXBsZSgpIHt9LFxuICAgICAgICAvLyBXaGVuIHRoZSBjb21wbGV0ZSB1cGxvYWQgaXMgZmluaXNoZWQgYW5kIHN1Y2Nlc3NmdWxcbiAgICAgICAgLy8gUmVjZWl2ZXMgYGZpbGVgXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoZmlsZSkge1xuICAgICAgICAgIGlmIChmaWxlLnByZXZpZXdFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsZS5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotc3VjY2Vzc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN1Y2Nlc3NtdWx0aXBsZTogZnVuY3Rpb24gc3VjY2Vzc211bHRpcGxlKCkge30sXG4gICAgICAgIC8vIFdoZW4gdGhlIHVwbG9hZCBpcyBjYW5jZWxlZC5cbiAgICAgICAgY2FuY2VsZWQ6IGZ1bmN0aW9uIGNhbmNlbGVkKGZpbGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIiwgZmlsZSwgdGhpcy5vcHRpb25zLmRpY3RVcGxvYWRDYW5jZWxlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbmNlbGVkbXVsdGlwbGU6IGZ1bmN0aW9uIGNhbmNlbGVkbXVsdGlwbGUoKSB7fSxcbiAgICAgICAgLy8gV2hlbiB0aGUgdXBsb2FkIGlzIGZpbmlzaGVkLCBlaXRoZXIgd2l0aCBzdWNjZXNzIG9yIGFuIGVycm9yLlxuICAgICAgICAvLyBSZWNlaXZlcyBgZmlsZWBcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKGZpbGUpIHtcbiAgICAgICAgICBpZiAoZmlsZS5fcmVtb3ZlTGluaykge1xuICAgICAgICAgICAgZmlsZS5fcmVtb3ZlTGluay5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpbGUucHJldmlld0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1jb21wbGV0ZVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlbXVsdGlwbGU6IGZ1bmN0aW9uIGNvbXBsZXRlbXVsdGlwbGUoKSB7fSxcbiAgICAgICAgbWF4ZmlsZXNleGNlZWRlZDogZnVuY3Rpb24gbWF4ZmlsZXNleGNlZWRlZCgpIHt9LFxuICAgICAgICBtYXhmaWxlc3JlYWNoZWQ6IGZ1bmN0aW9uIG1heGZpbGVzcmVhY2hlZCgpIHt9LFxuICAgICAgICBxdWV1ZWNvbXBsZXRlOiBmdW5jdGlvbiBxdWV1ZWNvbXBsZXRlKCkge30sXG4gICAgICAgIGFkZGVkZmlsZXM6IGZ1bmN0aW9uIGFkZGVkZmlsZXMoKSB7fVxuICAgICAgfTtcbiAgICAgIHRoaXMucHJvdG90eXBlLl90aHVtYm5haWxRdWV1ZSA9IFtdO1xuICAgICAgdGhpcy5wcm90b3R5cGUuX3Byb2Nlc3NpbmdUaHVtYm5haWwgPSBmYWxzZTtcbiAgICB9IC8vIGdsb2JhbCB1dGlsaXR5XG5cbiAgfSwge1xuICAgIGtleTogXCJleHRlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCkge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBvYmplY3RzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgb2JqZWN0c1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgX2kgPSAwLCBfb2JqZWN0cyA9IG9iamVjdHM7IF9pIDwgX29iamVjdHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBvYmplY3QgPSBfb2JqZWN0c1tfaV07XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIHZhciB2YWwgPSBvYmplY3Rba2V5XTtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgfV0pO1xuXG4gIGZ1bmN0aW9uIERyb3B6b25lKGVsLCBvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERyb3B6b25lKTtcblxuICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKERyb3B6b25lKS5jYWxsKHRoaXMpKTtcbiAgICB2YXIgZmFsbGJhY2ssIGxlZnQ7XG4gICAgX3RoaXMuZWxlbWVudCA9IGVsOyAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc2luY2UgdGhlIHZlcnNpb24gd2FzIGluIHRoZSBwcm90b3R5cGUgcHJldmlvdXNseVxuXG4gICAgX3RoaXMudmVyc2lvbiA9IERyb3B6b25lLnZlcnNpb247XG4gICAgX3RoaXMuZGVmYXVsdE9wdGlvbnMucHJldmlld1RlbXBsYXRlID0gX3RoaXMuZGVmYXVsdE9wdGlvbnMucHJldmlld1RlbXBsYXRlLnJlcGxhY2UoL1xcbiovZywgXCJcIik7XG4gICAgX3RoaXMuY2xpY2thYmxlRWxlbWVudHMgPSBbXTtcbiAgICBfdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgICBfdGhpcy5maWxlcyA9IFtdOyAvLyBBbGwgZmlsZXNcblxuICAgIGlmICh0eXBlb2YgX3RoaXMuZWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgX3RoaXMuZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoX3RoaXMuZWxlbWVudCk7XG4gICAgfSAvLyBOb3QgY2hlY2tpbmcgaWYgaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQgb3IgRWxlbWVudCBzaW5jZSBJRTkgaXMgZXh0cmVtZWx5IHdlaXJkLlxuXG5cbiAgICBpZiAoIV90aGlzLmVsZW1lbnQgfHwgX3RoaXMuZWxlbWVudC5ub2RlVHlwZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRyb3B6b25lIGVsZW1lbnQuXCIpO1xuICAgIH1cblxuICAgIGlmIChfdGhpcy5lbGVtZW50LmRyb3B6b25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEcm9wem9uZSBhbHJlYWR5IGF0dGFjaGVkLlwiKTtcbiAgICB9IC8vIE5vdyBhZGQgdGhpcyBkcm9wem9uZSB0byB0aGUgaW5zdGFuY2VzLlxuXG5cbiAgICBEcm9wem9uZS5pbnN0YW5jZXMucHVzaChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7IC8vIFB1dCB0aGUgZHJvcHpvbmUgaW5zaWRlIHRoZSBlbGVtZW50IGl0c2VsZi5cblxuICAgIF90aGlzLmVsZW1lbnQuZHJvcHpvbmUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICB2YXIgZWxlbWVudE9wdGlvbnMgPSAobGVmdCA9IERyb3B6b25lLm9wdGlvbnNGb3JFbGVtZW50KF90aGlzLmVsZW1lbnQpKSAhPSBudWxsID8gbGVmdCA6IHt9O1xuICAgIF90aGlzLm9wdGlvbnMgPSBEcm9wem9uZS5leHRlbmQoe30sIF90aGlzLmRlZmF1bHRPcHRpb25zLCBlbGVtZW50T3B0aW9ucywgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHt9KTsgLy8gSWYgdGhlIGJyb3dzZXIgZmFpbGVkLCBqdXN0IGNhbGwgdGhlIGZhbGxiYWNrIGFuZCBsZWF2ZVxuXG4gICAgaWYgKF90aGlzLm9wdGlvbnMuZm9yY2VGYWxsYmFjayB8fCAhRHJvcHpvbmUuaXNCcm93c2VyU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX3RoaXMub3B0aW9ucy5mYWxsYmFjay5jYWxsKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSk7XG4gICAgfSAvLyBAb3B0aW9ucy51cmwgPSBAZWxlbWVudC5nZXRBdHRyaWJ1dGUgXCJhY3Rpb25cIiB1bmxlc3MgQG9wdGlvbnMudXJsP1xuXG5cbiAgICBpZiAoX3RoaXMub3B0aW9ucy51cmwgPT0gbnVsbCkge1xuICAgICAgX3RoaXMub3B0aW9ucy51cmwgPSBfdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShcImFjdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAoIV90aGlzLm9wdGlvbnMudXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBVUkwgcHJvdmlkZWQuXCIpO1xuICAgIH1cblxuICAgIGlmIChfdGhpcy5vcHRpb25zLmFjY2VwdGVkRmlsZXMgJiYgX3RoaXMub3B0aW9ucy5hY2NlcHRlZE1pbWVUeXBlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbid0IHByb3ZpZGUgYm90aCAnYWNjZXB0ZWRGaWxlcycgYW5kICdhY2NlcHRlZE1pbWVUeXBlcycuICdhY2NlcHRlZE1pbWVUeXBlcycgaXMgZGVwcmVjYXRlZC5cIik7XG4gICAgfVxuXG4gICAgaWYgKF90aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUgJiYgX3RoaXMub3B0aW9ucy5jaHVua2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgY2Fubm90IHNldCBib3RoOiB1cGxvYWRNdWx0aXBsZSBhbmQgY2h1bmtpbmcuJyk7XG4gICAgfSAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG5cbiAgICBpZiAoX3RoaXMub3B0aW9ucy5hY2NlcHRlZE1pbWVUeXBlcykge1xuICAgICAgX3RoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzID0gX3RoaXMub3B0aW9ucy5hY2NlcHRlZE1pbWVUeXBlcztcbiAgICAgIGRlbGV0ZSBfdGhpcy5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzO1xuICAgIH0gLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuXG4gICAgaWYgKF90aGlzLm9wdGlvbnMucmVuYW1lRmlsZW5hbWUgIT0gbnVsbCkge1xuICAgICAgX3RoaXMub3B0aW9ucy5yZW5hbWVGaWxlID0gZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLm9wdGlvbnMucmVuYW1lRmlsZW5hbWUuY2FsbChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgZmlsZS5uYW1lLCBmaWxlKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgX3RoaXMub3B0aW9ucy5tZXRob2QgPSBfdGhpcy5vcHRpb25zLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgaWYgKChmYWxsYmFjayA9IF90aGlzLmdldEV4aXN0aW5nRmFsbGJhY2soKSkgJiYgZmFsbGJhY2sucGFyZW50Tm9kZSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBmYWxsYmFja1xuICAgICAgZmFsbGJhY2sucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmYWxsYmFjayk7XG4gICAgfSAvLyBEaXNwbGF5IHByZXZpZXdzIGluIHRoZSBwcmV2aWV3c0NvbnRhaW5lciBlbGVtZW50IG9yIHRoZSBEcm9wem9uZSBlbGVtZW50IHVubGVzcyBleHBsaWNpdGx5IHNldCB0byBmYWxzZVxuXG5cbiAgICBpZiAoX3RoaXMub3B0aW9ucy5wcmV2aWV3c0NvbnRhaW5lciAhPT0gZmFsc2UpIHtcbiAgICAgIGlmIChfdGhpcy5vcHRpb25zLnByZXZpZXdzQ29udGFpbmVyKSB7XG4gICAgICAgIF90aGlzLnByZXZpZXdzQ29udGFpbmVyID0gRHJvcHpvbmUuZ2V0RWxlbWVudChfdGhpcy5vcHRpb25zLnByZXZpZXdzQ29udGFpbmVyLCBcInByZXZpZXdzQ29udGFpbmVyXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMucHJldmlld3NDb250YWluZXIgPSBfdGhpcy5lbGVtZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfdGhpcy5vcHRpb25zLmNsaWNrYWJsZSkge1xuICAgICAgaWYgKF90aGlzLm9wdGlvbnMuY2xpY2thYmxlID09PSB0cnVlKSB7XG4gICAgICAgIF90aGlzLmNsaWNrYWJsZUVsZW1lbnRzID0gW190aGlzLmVsZW1lbnRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuY2xpY2thYmxlRWxlbWVudHMgPSBEcm9wem9uZS5nZXRFbGVtZW50cyhfdGhpcy5vcHRpb25zLmNsaWNrYWJsZSwgXCJjbGlja2FibGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuaW5pdCgpO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9IC8vIFJldHVybnMgYWxsIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGFjY2VwdGVkXG5cblxuICBfY3JlYXRlQ2xhc3MoRHJvcHpvbmUsIFt7XG4gICAga2V5OiBcImdldEFjY2VwdGVkRmlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWNjZXB0ZWRGaWxlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZS5hY2NlcHRlZDtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgIH0pO1xuICAgIH0gLy8gUmV0dXJucyBhbGwgZmlsZXMgdGhhdCBoYXZlIGJlZW4gcmVqZWN0ZWRcbiAgICAvLyBOb3Qgc3VyZSB3aGVuIHRoYXQncyBnb2luZyB0byBiZSB1c2VmdWwsIGJ1dCBhZGRlZCBmb3IgY29tcGxldGVuZXNzLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UmVqZWN0ZWRGaWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZWplY3RlZEZpbGVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIHJldHVybiAhZmlsZS5hY2NlcHRlZDtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGaWxlc1dpdGhTdGF0dXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmlsZXNXaXRoU3RhdHVzKHN0YXR1cykge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIHJldHVybiBmaWxlLnN0YXR1cyA9PT0gc3RhdHVzO1xuICAgICAgfSkubWFwKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgfSk7XG4gICAgfSAvLyBSZXR1cm5zIGFsbCBmaWxlcyB0aGF0IGFyZSBpbiB0aGUgcXVldWVcblxuICB9LCB7XG4gICAga2V5OiBcImdldFF1ZXVlZEZpbGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFF1ZXVlZEZpbGVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZXNXaXRoU3RhdHVzKERyb3B6b25lLlFVRVVFRCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVwbG9hZGluZ0ZpbGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVwbG9hZGluZ0ZpbGVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZXNXaXRoU3RhdHVzKERyb3B6b25lLlVQTE9BRElORyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEFkZGVkRmlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWRkZWRGaWxlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpbGVzV2l0aFN0YXR1cyhEcm9wem9uZS5BRERFRCk7XG4gICAgfSAvLyBGaWxlcyB0aGF0IGFyZSBlaXRoZXIgcXVldWVkIG9yIHVwbG9hZGluZ1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QWN0aXZlRmlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWN0aXZlRmlsZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWxlcy5maWx0ZXIoZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5VUExPQURJTkcgfHwgZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlFVRVVFRDtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgIH0pO1xuICAgIH0gLy8gVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiBEcm9wem9uZSBpcyBpbml0aWFsaXplZC4gWW91XG4gICAgLy8gY2FuIChhbmQgc2hvdWxkKSBzZXR1cCBldmVudCBsaXN0ZW5lcnMgaW5zaWRlIHRoaXMgZnVuY3Rpb24uXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgLy8gSW4gY2FzZSBpdCBpc24ndCBzZXQgYWxyZWFkeVxuICAgICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lID09PSBcImZvcm1cIikge1xuICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZW5jdHlwZVwiLCBcIm11bHRpcGFydC9mb3JtLWRhdGFcIik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZHJvcHpvbmVcIikgJiYgIXRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmR6LW1lc3NhZ2VcIikpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoXCI8ZGl2IGNsYXNzPVxcXCJkei1kZWZhdWx0IGR6LW1lc3NhZ2VcXFwiPjxidXR0b24gY2xhc3M9XFxcImR6LWJ1dHRvblxcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIj5cIi5jb25jYXQodGhpcy5vcHRpb25zLmRpY3REZWZhdWx0TWVzc2FnZSwgXCI8L2J1dHRvbj48L2Rpdj5cIikpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2xpY2thYmxlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBzZXR1cEhpZGRlbkZpbGVJbnB1dCA9IGZ1bmN0aW9uIHNldHVwSGlkZGVuRmlsZUlucHV0KCkge1xuICAgICAgICAgIGlmIChfdGhpczMuaGlkZGVuRmlsZUlucHV0KSB7XG4gICAgICAgICAgICBfdGhpczMuaGlkZGVuRmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXMzLmhpZGRlbkZpbGVJbnB1dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMzLmhpZGRlbkZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcblxuICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImZpbGVcIik7XG5cbiAgICAgICAgICBpZiAoX3RoaXMzLm9wdGlvbnMubWF4RmlsZXMgPT09IG51bGwgfHwgX3RoaXMzLm9wdGlvbnMubWF4RmlsZXMgPiAxKSB7XG4gICAgICAgICAgICBfdGhpczMuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZShcIm11bHRpcGxlXCIsIFwibXVsdGlwbGVcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMzLmhpZGRlbkZpbGVJbnB1dC5jbGFzc05hbWUgPSBcImR6LWhpZGRlbi1pbnB1dFwiO1xuXG4gICAgICAgICAgaWYgKF90aGlzMy5vcHRpb25zLmFjY2VwdGVkRmlsZXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKFwiYWNjZXB0XCIsIF90aGlzMy5vcHRpb25zLmFjY2VwdGVkRmlsZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfdGhpczMub3B0aW9ucy5jYXB0dXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBfdGhpczMuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZShcImNhcHR1cmVcIiwgX3RoaXMzLm9wdGlvbnMuY2FwdHVyZSk7XG4gICAgICAgICAgfSAvLyBOb3Qgc2V0dGluZyBgZGlzcGxheT1cIm5vbmVcImAgYmVjYXVzZSBzb21lIGJyb3dzZXJzIGRvbid0IGFjY2VwdCBjbGlja3NcbiAgICAgICAgICAvLyBvbiBlbGVtZW50cyB0aGF0IGFyZW4ndCBkaXNwbGF5ZWQuXG5cblxuICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgX3RoaXMzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgICBfdGhpczMuaGlkZGVuRmlsZUlucHV0LnN0eWxlLnRvcCA9IFwiMFwiO1xuICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuc3R5bGUubGVmdCA9IFwiMFwiO1xuICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuc3R5bGUuaGVpZ2h0ID0gXCIwXCI7XG4gICAgICAgICAgX3RoaXMzLmhpZGRlbkZpbGVJbnB1dC5zdHlsZS53aWR0aCA9IFwiMFwiO1xuICAgICAgICAgIERyb3B6b25lLmdldEVsZW1lbnQoX3RoaXMzLm9wdGlvbnMuaGlkZGVuSW5wdXRDb250YWluZXIsICdoaWRkZW5JbnB1dENvbnRhaW5lcicpLmFwcGVuZENoaWxkKF90aGlzMy5oaWRkZW5GaWxlSW5wdXQpO1xuICAgICAgICAgIHJldHVybiBfdGhpczMuaGlkZGVuRmlsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZpbGVzID0gX3RoaXMzLmhpZGRlbkZpbGVJbnB1dC5maWxlcztcblxuICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuICAgICAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3I5ID0gZmFsc2U7XG4gICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3I5ID0gZmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDk7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSAoX3N0ZXA5ID0gX2l0ZXJhdG9yOS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gX3N0ZXA5LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICBfdGhpczMuYWRkRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3I5ID0gZXJyO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ICYmIF9pdGVyYXRvcjlbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I5O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfdGhpczMuZW1pdChcImFkZGVkZmlsZXNcIiwgZmlsZXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gc2V0dXBIaWRkZW5GaWxlSW5wdXQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBzZXR1cEhpZGRlbkZpbGVJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLlVSTCA9IHdpbmRvdy5VUkwgIT09IG51bGwgPyB3aW5kb3cuVVJMIDogd2luZG93LndlYmtpdFVSTDsgLy8gU2V0dXAgYWxsIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgRHJvcHpvbmUgb2JqZWN0IGl0c2VsZi5cbiAgICAgIC8vIFRoZXkncmUgbm90IGluIEBzZXR1cEV2ZW50TGlzdGVuZXJzKCkgYmVjYXVzZSB0aGV5IHNob3VsZG4ndCBiZSByZW1vdmVkXG4gICAgICAvLyBhZ2FpbiB3aGVuIHRoZSBkcm9wem9uZSBnZXRzIGRpc2FibGVkLlxuXG4gICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcbiAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjEwID0gZmFsc2U7XG4gICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IxMCA9IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTAgPSB0aGlzLmV2ZW50c1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMTA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIGV2ZW50TmFtZSA9IF9zdGVwMTAudmFsdWU7XG4gICAgICAgICAgdGhpcy5vbihldmVudE5hbWUsIHRoaXMub3B0aW9uc1tldmVudE5hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTAgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjEwID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCAmJiBfaXRlcmF0b3IxMFtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IxMFtcInJldHVyblwiXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxMCkge1xuICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5vbihcInVwbG9hZHByb2dyZXNzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy51cGRhdGVUb3RhbFVwbG9hZFByb2dyZXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub24oXCJyZW1vdmVkZmlsZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMudXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcygpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm9uKFwiY2FuY2VsZWRcIiwgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5lbWl0KFwiY29tcGxldGVcIiwgZmlsZSk7XG4gICAgICB9KTsgLy8gRW1pdCBhIGBxdWV1ZWNvbXBsZXRlYCBldmVudCBpZiBhbGwgZmlsZXMgZmluaXNoZWQgdXBsb2FkaW5nLlxuXG4gICAgICB0aGlzLm9uKFwiY29tcGxldGVcIiwgZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgaWYgKF90aGlzMy5nZXRBZGRlZEZpbGVzKCkubGVuZ3RoID09PSAwICYmIF90aGlzMy5nZXRVcGxvYWRpbmdGaWxlcygpLmxlbmd0aCA9PT0gMCAmJiBfdGhpczMuZ2V0UXVldWVkRmlsZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRlZmVycmVkIHNvIHRoYXQgYHF1ZXVlY29tcGxldGVgIHJlYWxseSB0cmlnZ2VycyBhZnRlciBgY29tcGxldGVgXG4gICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5lbWl0KFwicXVldWVjb21wbGV0ZVwiKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBjb250YWluc0ZpbGVzID0gZnVuY3Rpb24gY29udGFpbnNGaWxlcyhlKSB7XG4gICAgICAgIHJldHVybiBlLmRhdGFUcmFuc2Zlci50eXBlcyAmJiBlLmRhdGFUcmFuc2Zlci50eXBlcy5zb21lKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGUgPT0gXCJGaWxlc1wiO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBub1Byb3BhZ2F0aW9uID0gZnVuY3Rpb24gbm9Qcm9wYWdhdGlvbihlKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBmaWxlcywgd2UgZG9uJ3Qgd2FudCB0byBzdG9wXG4gICAgICAgIC8vIHByb3BhZ2F0aW9uIHNvIHdlIGRvbid0IGludGVyZmVyZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIGRyYWcgYW5kIGRyb3AgYmVoYXZpb3VyLlxuICAgICAgICBpZiAoIWNvbnRhaW5zRmlsZXMoZSkpIHJldHVybjtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgIHJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGUucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5lcnNcblxuXG4gICAgICB0aGlzLmxpc3RlbmVycyA9IFt7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCxcbiAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgXCJkcmFnc3RhcnRcIjogZnVuY3Rpb24gZHJhZ3N0YXJ0KGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczMuZW1pdChcImRyYWdzdGFydFwiLCBlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZHJhZ2VudGVyXCI6IGZ1bmN0aW9uIGRyYWdlbnRlcihlKSB7XG4gICAgICAgICAgICBub1Byb3BhZ2F0aW9uKGUpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5lbWl0KFwiZHJhZ2VudGVyXCIsIGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkcmFnb3ZlclwiOiBmdW5jdGlvbiBkcmFnb3ZlcihlKSB7XG4gICAgICAgICAgICAvLyBNYWtlcyBpdCBwb3NzaWJsZSB0byBkcmFnIGZpbGVzIGZyb20gY2hyb21lJ3MgZG93bmxvYWQgYmFyXG4gICAgICAgICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5NTI2NDMwL2RyYWctYW5kLWRyb3AtZmlsZS11cGxvYWRzLWZyb20tY2hyb21lLWRvd25sb2Fkcy1iYXJcbiAgICAgICAgICAgIC8vIFRyeSBpcyByZXF1aXJlZCB0byBwcmV2ZW50IGJ1ZyBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMSAoU0NSSVBUNjU1MzUgZXhjZXB0aW9uKVxuICAgICAgICAgICAgdmFyIGVmY3Q7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGVmY3QgPSBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG5cbiAgICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZScgPT09IGVmY3QgfHwgJ2xpbmtNb3ZlJyA9PT0gZWZjdCA/ICdtb3ZlJyA6ICdjb3B5JztcbiAgICAgICAgICAgIG5vUHJvcGFnYXRpb24oZSk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMzLmVtaXQoXCJkcmFnb3ZlclwiLCBlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZHJhZ2xlYXZlXCI6IGZ1bmN0aW9uIGRyYWdsZWF2ZShlKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMzLmVtaXQoXCJkcmFnbGVhdmVcIiwgZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRyb3BcIjogZnVuY3Rpb24gZHJvcChlKSB7XG4gICAgICAgICAgICBub1Byb3BhZ2F0aW9uKGUpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5kcm9wKGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkcmFnZW5kXCI6IGZ1bmN0aW9uIGRyYWdlbmQoZSkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5lbWl0KFwiZHJhZ2VuZFwiLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gVGhpcyBpcyBkaXNhYmxlZCByaWdodCBub3csIGJlY2F1c2UgdGhlIGJyb3dzZXJzIGRvbid0IGltcGxlbWVudCBpdCBwcm9wZXJseS5cbiAgICAgICAgLy8gXCJwYXN0ZVwiOiAoZSkgPT5cbiAgICAgICAgLy8gICBub1Byb3BhZ2F0aW9uIGVcbiAgICAgICAgLy8gICBAcGFzdGUgZVxuXG4gICAgICB9XTtcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoY2xpY2thYmxlRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gX3RoaXMzLmxpc3RlbmVycy5wdXNoKHtcbiAgICAgICAgICBlbGVtZW50OiBjbGlja2FibGVFbGVtZW50LFxuICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgXCJjbGlja1wiOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgICAgICAgICAgLy8gT25seSB0aGUgYWN0dWFsIGRyb3B6b25lIG9yIHRoZSBtZXNzYWdlIGVsZW1lbnQgc2hvdWxkIHRyaWdnZXIgZmlsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgaWYgKGNsaWNrYWJsZUVsZW1lbnQgIT09IF90aGlzMy5lbGVtZW50IHx8IGV2dC50YXJnZXQgPT09IF90aGlzMy5lbGVtZW50IHx8IERyb3B6b25lLmVsZW1lbnRJbnNpZGUoZXZ0LnRhcmdldCwgX3RoaXMzLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5kei1tZXNzYWdlXCIpKSkge1xuICAgICAgICAgICAgICAgIF90aGlzMy5oaWRkZW5GaWxlSW5wdXQuY2xpY2soKTsgLy8gRm9yd2FyZCB0aGUgY2xpY2tcblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaW5pdC5jYWxsKHRoaXMpO1xuICAgIH0gLy8gTm90IGZ1bGx5IHRlc3RlZCB5ZXRcblxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5yZW1vdmVBbGxGaWxlcyh0cnVlKTtcblxuICAgICAgaWYgKHRoaXMuaGlkZGVuRmlsZUlucHV0ICE9IG51bGwgPyB0aGlzLmhpZGRlbkZpbGVJbnB1dC5wYXJlbnROb2RlIDogdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5oaWRkZW5GaWxlSW5wdXQpO1xuICAgICAgICB0aGlzLmhpZGRlbkZpbGVJbnB1dCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSB0aGlzLmVsZW1lbnQuZHJvcHpvbmU7XG4gICAgICByZXR1cm4gRHJvcHpvbmUuaW5zdGFuY2VzLnNwbGljZShEcm9wem9uZS5pbnN0YW5jZXMuaW5kZXhPZih0aGlzKSwgMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcygpIHtcbiAgICAgIHZhciB0b3RhbFVwbG9hZFByb2dyZXNzO1xuICAgICAgdmFyIHRvdGFsQnl0ZXNTZW50ID0gMDtcbiAgICAgIHZhciB0b3RhbEJ5dGVzID0gMDtcbiAgICAgIHZhciBhY3RpdmVGaWxlcyA9IHRoaXMuZ2V0QWN0aXZlRmlsZXMoKTtcblxuICAgICAgaWYgKGFjdGl2ZUZpbGVzLmxlbmd0aCkge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTEgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yMTEgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMSA9IHRoaXMuZ2V0QWN0aXZlRmlsZXMoKVtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMTE7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgZmlsZSA9IF9zdGVwMTEudmFsdWU7XG4gICAgICAgICAgICB0b3RhbEJ5dGVzU2VudCArPSBmaWxlLnVwbG9hZC5ieXRlc1NlbnQ7XG4gICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGZpbGUudXBsb2FkLnRvdGFsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSA9IHRydWU7XG4gICAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMSA9IGVycjtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgJiYgX2l0ZXJhdG9yMTFbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IxMVtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxMSkge1xuICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjExO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRvdGFsVXBsb2FkUHJvZ3Jlc3MgPSAxMDAgKiB0b3RhbEJ5dGVzU2VudCAvIHRvdGFsQnl0ZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b3RhbFVwbG9hZFByb2dyZXNzID0gMTAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5lbWl0KFwidG90YWx1cGxvYWRwcm9ncmVzc1wiLCB0b3RhbFVwbG9hZFByb2dyZXNzLCB0b3RhbEJ5dGVzLCB0b3RhbEJ5dGVzU2VudCk7XG4gICAgfSAvLyBAb3B0aW9ucy5wYXJhbU5hbWUgY2FuIGJlIGEgZnVuY3Rpb24gdGFraW5nIG9uZSBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4gYSBzdHJpbmcuXG4gICAgLy8gQSBwYXJhbWV0ZXIgbmFtZSBmb3IgYSBmaWxlIGlzIG9idGFpbmVkIHNpbXBseSBieSBjYWxsaW5nIHRoaXMgd2l0aCBhbiBpbmRleCBudW1iZXIuXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0UGFyYW1OYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRQYXJhbU5hbWUobikge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMucGFyYW1OYW1lID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbU5hbWUobik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQodGhpcy5vcHRpb25zLnBhcmFtTmFtZSkuY29uY2F0KHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSA/IFwiW1wiLmNvbmNhdChuLCBcIl1cIikgOiBcIlwiKTtcbiAgICAgIH1cbiAgICB9IC8vIElmIEBvcHRpb25zLnJlbmFtZUZpbGUgaXMgYSBmdW5jdGlvbixcbiAgICAvLyB0aGUgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHRvIHJlbmFtZSB0aGUgZmlsZS5uYW1lIGJlZm9yZSBhcHBlbmRpbmcgaXQgdG8gdGhlIGZvcm1EYXRhXG5cbiAgfSwge1xuICAgIGtleTogXCJfcmVuYW1lRmlsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVuYW1lRmlsZShmaWxlKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5yZW5hbWVGaWxlICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZpbGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZW5hbWVGaWxlKGZpbGUpO1xuICAgIH0gLy8gUmV0dXJucyBhIGZvcm0gdGhhdCBjYW4gYmUgdXNlZCBhcyBmYWxsYmFjayBpZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IERyYWduRHJvcFxuICAgIC8vXG4gICAgLy8gSWYgdGhlIGRyb3B6b25lIGlzIGFscmVhZHkgYSBmb3JtLCBvbmx5IHRoZSBpbnB1dCBmaWVsZCBhbmQgYnV0dG9uIGFyZSByZXR1cm5lZC4gT3RoZXJ3aXNlIGEgY29tcGxldGUgZm9ybSBlbGVtZW50IGlzIHByb3ZpZGVkLlxuICAgIC8vIFRoaXMgY29kZSBoYXMgdG8gcGFzcyBpbiBJRTcgOihcblxuICB9LCB7XG4gICAga2V5OiBcImdldEZhbGxiYWNrRm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGYWxsYmFja0Zvcm0oKSB7XG4gICAgICB2YXIgZXhpc3RpbmdGYWxsYmFjaywgZm9ybTtcblxuICAgICAgaWYgKGV4aXN0aW5nRmFsbGJhY2sgPSB0aGlzLmdldEV4aXN0aW5nRmFsbGJhY2soKSkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdGYWxsYmFjaztcbiAgICAgIH1cblxuICAgICAgdmFyIGZpZWxkc1N0cmluZyA9IFwiPGRpdiBjbGFzcz1cXFwiZHotZmFsbGJhY2tcXFwiPlwiO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja1RleHQpIHtcbiAgICAgICAgZmllbGRzU3RyaW5nICs9IFwiPHA+XCIuY29uY2F0KHRoaXMub3B0aW9ucy5kaWN0RmFsbGJhY2tUZXh0LCBcIjwvcD5cIik7XG4gICAgICB9XG5cbiAgICAgIGZpZWxkc1N0cmluZyArPSBcIjxpbnB1dCB0eXBlPVxcXCJmaWxlXFxcIiBuYW1lPVxcXCJcIi5jb25jYXQodGhpcy5fZ2V0UGFyYW1OYW1lKDApLCBcIlxcXCIgXCIpLmNvbmNhdCh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUgPyAnbXVsdGlwbGU9XCJtdWx0aXBsZVwiJyA6IHVuZGVmaW5lZCwgXCIgLz48aW5wdXQgdHlwZT1cXFwic3VibWl0XFxcIiB2YWx1ZT1cXFwiVXBsb2FkIVxcXCI+PC9kaXY+XCIpO1xuICAgICAgdmFyIGZpZWxkcyA9IERyb3B6b25lLmNyZWF0ZUVsZW1lbnQoZmllbGRzU3RyaW5nKTtcblxuICAgICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lICE9PSBcIkZPUk1cIikge1xuICAgICAgICBmb3JtID0gRHJvcHpvbmUuY3JlYXRlRWxlbWVudChcIjxmb3JtIGFjdGlvbj1cXFwiXCIuY29uY2F0KHRoaXMub3B0aW9ucy51cmwsIFwiXFxcIiBlbmN0eXBlPVxcXCJtdWx0aXBhcnQvZm9ybS1kYXRhXFxcIiBtZXRob2Q9XFxcIlwiKS5jb25jYXQodGhpcy5vcHRpb25zLm1ldGhvZCwgXCJcXFwiPjwvZm9ybT5cIikpO1xuICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGZpZWxkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZW5jdHlwZSBhbmQgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIHNldCBwcm9wZXJseVxuICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZW5jdHlwZVwiLCBcIm11bHRpcGFydC9mb3JtLWRhdGFcIik7XG4gICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJtZXRob2RcIiwgdGhpcy5vcHRpb25zLm1ldGhvZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3JtICE9IG51bGwgPyBmb3JtIDogZmllbGRzO1xuICAgIH0gLy8gUmV0dXJucyB0aGUgZmFsbGJhY2sgZWxlbWVudHMgaWYgdGhleSBleGlzdCBhbHJlYWR5XG4gICAgLy9cbiAgICAvLyBUaGlzIGNvZGUgaGFzIHRvIHBhc3MgaW4gSUU3IDooXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRFeGlzdGluZ0ZhbGxiYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEV4aXN0aW5nRmFsbGJhY2soKSB7XG4gICAgICB2YXIgZ2V0RmFsbGJhY2sgPSBmdW5jdGlvbiBnZXRGYWxsYmFjayhlbGVtZW50cykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTIgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yMTIgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMiA9IGVsZW1lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAxMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSAoX3N0ZXAxMiA9IF9pdGVyYXRvcjEyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IHRydWUpIHtcbiAgICAgICAgICAgIHZhciBlbCA9IF9zdGVwMTIudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICgvKF58IClmYWxsYmFjaygkfCApLy50ZXN0KGVsLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMiA9IHRydWU7XG4gICAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IGVycjtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgJiYgX2l0ZXJhdG9yMTJbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IxMltcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxMikge1xuICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgX2kyID0gMCwgX2FyciA9IFtcImRpdlwiLCBcImZvcm1cIl07IF9pMiA8IF9hcnIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgdGFnTmFtZSA9IF9hcnJbX2kyXTtcbiAgICAgICAgdmFyIGZhbGxiYWNrO1xuXG4gICAgICAgIGlmIChmYWxsYmFjayA9IGdldEZhbGxiYWNrKHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIEFjdGl2YXRlcyBhbGwgbGlzdGVuZXJzIHN0b3JlZCBpbiBAbGlzdGVuZXJzXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXR1cEV2ZW50TGlzdGVuZXJzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMubWFwKGZ1bmN0aW9uIChlbGVtZW50TGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgICAgICAgZm9yICh2YXIgZXZlbnQgaW4gZWxlbWVudExpc3RlbmVycy5ldmVudHMpIHtcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGVsZW1lbnRMaXN0ZW5lcnMuZXZlbnRzW2V2ZW50XTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVsZW1lbnRMaXN0ZW5lcnMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgZmFsc2UpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KCk7XG4gICAgICB9KTtcbiAgICB9IC8vIERlYWN0aXZhdGVzIGFsbCBsaXN0ZW5lcnMgc3RvcmVkIGluIEBsaXN0ZW5lcnNcblxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUV2ZW50TGlzdGVuZXJzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXJzLm1hcChmdW5jdGlvbiAoZWxlbWVudExpc3RlbmVycykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgICAgIGZvciAodmFyIGV2ZW50IGluIGVsZW1lbnRMaXN0ZW5lcnMuZXZlbnRzKSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBlbGVtZW50TGlzdGVuZXJzLmV2ZW50c1tldmVudF07XG4gICAgICAgICAgICByZXN1bHQucHVzaChlbGVtZW50TGlzdGVuZXJzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIGZhbHNlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSgpO1xuICAgICAgfSk7XG4gICAgfSAvLyBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMgYW5kIGNhbmNlbHMgYWxsIGZpbGVzIGluIHRoZSBxdWV1ZSBvciBiZWluZyBwcm9jZXNzZWQuXG5cbiAgfSwge1xuICAgIGtleTogXCJkaXNhYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdGhpcy5jbGlja2FibGVFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJkei1jbGlja2FibGVcIik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubWFwKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgIHJldHVybiBfdGhpczQuY2FuY2VsVXBsb2FkKGZpbGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGUoKSB7XG4gICAgICBkZWxldGUgdGhpcy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZHotY2xpY2thYmxlXCIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfSAvLyBSZXR1cm5zIGEgbmljZWx5IGZvcm1hdHRlZCBmaWxlc2l6ZVxuXG4gIH0sIHtcbiAgICBrZXk6IFwiZmlsZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsZXNpemUoc2l6ZSkge1xuICAgICAgdmFyIHNlbGVjdGVkU2l6ZSA9IDA7XG4gICAgICB2YXIgc2VsZWN0ZWRVbml0ID0gXCJiXCI7XG5cbiAgICAgIGlmIChzaXplID4gMCkge1xuICAgICAgICB2YXIgdW5pdHMgPSBbJ3RiJywgJ2diJywgJ21iJywgJ2tiJywgJ2InXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHVuaXQgPSB1bml0c1tpXTtcbiAgICAgICAgICB2YXIgY3V0b2ZmID0gTWF0aC5wb3codGhpcy5vcHRpb25zLmZpbGVzaXplQmFzZSwgNCAtIGkpIC8gMTA7XG5cbiAgICAgICAgICBpZiAoc2l6ZSA+PSBjdXRvZmYpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkU2l6ZSA9IHNpemUgLyBNYXRoLnBvdyh0aGlzLm9wdGlvbnMuZmlsZXNpemVCYXNlLCA0IC0gaSk7XG4gICAgICAgICAgICBzZWxlY3RlZFVuaXQgPSB1bml0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0ZWRTaXplID0gTWF0aC5yb3VuZCgxMCAqIHNlbGVjdGVkU2l6ZSkgLyAxMDsgLy8gQ3V0dGluZyBvZiBkaWdpdHNcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwiPHN0cm9uZz5cIi5jb25jYXQoc2VsZWN0ZWRTaXplLCBcIjwvc3Ryb25nPiBcIikuY29uY2F0KHRoaXMub3B0aW9ucy5kaWN0RmlsZVNpemVVbml0c1tzZWxlY3RlZFVuaXRdKTtcbiAgICB9IC8vIEFkZHMgb3IgcmVtb3ZlcyB0aGUgYGR6LW1heC1maWxlcy1yZWFjaGVkYCBjbGFzcyBmcm9tIHRoZSBmb3JtLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVNYXhGaWxlc1JlYWNoZWRDbGFzcygpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWF4RmlsZXMgIT0gbnVsbCAmJiB0aGlzLmdldEFjY2VwdGVkRmlsZXMoKS5sZW5ndGggPj0gdGhpcy5vcHRpb25zLm1heEZpbGVzKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEFjY2VwdGVkRmlsZXMoKS5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5tYXhGaWxlcykge1xuICAgICAgICAgIHRoaXMuZW1pdCgnbWF4ZmlsZXNyZWFjaGVkJywgdGhpcy5maWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJkei1tYXgtZmlsZXMtcmVhY2hlZFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImR6LW1heC1maWxlcy1yZWFjaGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkcm9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRyb3AoZSkge1xuICAgICAgaWYgKCFlLmRhdGFUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdChcImRyb3BcIiwgZSk7IC8vIENvbnZlcnQgdGhlIEZpbGVMaXN0IHRvIGFuIEFycmF5XG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgSUUxMVxuXG4gICAgICB2YXIgZmlsZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmaWxlc1tpXSA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzW2ldO1xuICAgICAgfSAvLyBFdmVuIGlmIGl0J3MgYSBmb2xkZXIsIGZpbGVzLmxlbmd0aCB3aWxsIGNvbnRhaW4gdGhlIGZvbGRlcnMuXG5cblxuICAgICAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBlLmRhdGFUcmFuc2Zlci5pdGVtcztcblxuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoICYmIGl0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBicm93c2VyIHN1cHBvcnRzIGRyb3BwaW5nIG9mIGZvbGRlcnMsIHNvIGhhbmRsZSBpdGVtcyBpbnN0ZWFkIG9mIGZpbGVzXG4gICAgICAgICAgdGhpcy5fYWRkRmlsZXNGcm9tSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdChcImFkZGVkZmlsZXNcIiwgZmlsZXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYXN0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXN0ZShlKSB7XG4gICAgICBpZiAoX19ndWFyZF9fKGUgIT0gbnVsbCA/IGUuY2xpcGJvYXJkRGF0YSA6IHVuZGVmaW5lZCwgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHguaXRlbXM7XG4gICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0KFwicGFzdGVcIiwgZSk7XG4gICAgICB2YXIgaXRlbXMgPSBlLmNsaXBib2FyZERhdGEuaXRlbXM7XG5cbiAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZEZpbGVzRnJvbUl0ZW1zKGl0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFuZGxlRmlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlRmlsZXMoZmlsZXMpIHtcbiAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTMgPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjEzID0gdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMyA9IGZpbGVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAxMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSAoX3N0ZXAxMyA9IF9pdGVyYXRvcjEzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWUpIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IF9zdGVwMTMudmFsdWU7XG4gICAgICAgICAgdGhpcy5hZGRGaWxlKGZpbGUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMyA9IHRydWU7XG4gICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSBlcnI7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzICYmIF9pdGVyYXRvcjEzW1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjEzW1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjEzKSB7XG4gICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gV2hlbiBhIGZvbGRlciBpcyBkcm9wcGVkIChvciBmaWxlcyBhcmUgcGFzdGVkKSwgaXRlbXMgbXVzdCBiZSBoYW5kbGVkXG4gICAgLy8gaW5zdGVhZCBvZiBmaWxlcy5cblxuICB9LCB7XG4gICAga2V5OiBcIl9hZGRGaWxlc0Zyb21JdGVtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYWRkRmlsZXNGcm9tSXRlbXMoaXRlbXMpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSB0cnVlO1xuICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IxNCA9IGZhbHNlO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IxNCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjE0ID0gaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDE0OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IChfc3RlcDE0ID0gX2l0ZXJhdG9yMTQubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcDE0LnZhbHVlO1xuICAgICAgICAgICAgdmFyIGVudHJ5O1xuXG4gICAgICAgICAgICBpZiAoaXRlbS53ZWJraXRHZXRBc0VudHJ5ICE9IG51bGwgJiYgKGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCkpKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChfdGhpczUuYWRkRmlsZShpdGVtLmdldEFzRmlsZSgpKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICAvLyBBcHBlbmQgYWxsIGZpbGVzIGZyb20gdGhhdCBkaXJlY3RvcnkgdG8gZmlsZXNcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChfdGhpczUuX2FkZEZpbGVzRnJvbURpcmVjdG9yeShlbnRyeSwgZW50cnkubmFtZSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRBc0ZpbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5raW5kID09IG51bGwgfHwgaXRlbS5raW5kID09PSBcImZpbGVcIikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKF90aGlzNS5hZGRGaWxlKGl0ZW0uZ2V0QXNGaWxlKCkpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNCA9IHRydWU7XG4gICAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNCA9IGVycjtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgJiYgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IxNFtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxNCkge1xuICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KCk7XG4gICAgfSAvLyBHb2VzIHRocm91Z2ggdGhlIGRpcmVjdG9yeSwgYW5kIGFkZHMgZWFjaCBmaWxlIGl0IGZpbmRzIHJlY3Vyc2l2ZWx5XG5cbiAgfSwge1xuICAgIGtleTogXCJfYWRkRmlsZXNGcm9tRGlyZWN0b3J5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9hZGRGaWxlc0Zyb21EaXJlY3RvcnkoZGlyZWN0b3J5LCBwYXRoKSB7XG4gICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgdmFyIGRpclJlYWRlciA9IGRpcmVjdG9yeS5jcmVhdGVSZWFkZXIoKTtcblxuICAgICAgdmFyIGVycm9ySGFuZGxlciA9IGZ1bmN0aW9uIGVycm9ySGFuZGxlcihlcnJvcikge1xuICAgICAgICByZXR1cm4gX19ndWFyZE1ldGhvZF9fKGNvbnNvbGUsICdsb2cnLCBmdW5jdGlvbiAobykge1xuICAgICAgICAgIHJldHVybiBvLmxvZyhlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgdmFyIHJlYWRFbnRyaWVzID0gZnVuY3Rpb24gcmVhZEVudHJpZXMoKSB7XG4gICAgICAgIHJldHVybiBkaXJSZWFkZXIucmVhZEVudHJpZXMoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gZmFsc2U7XG4gICAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IxNSA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTUgPSBlbnRyaWVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAxNTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSAoX3N0ZXAxNSA9IF9pdGVyYXRvcjE1Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBfc3RlcDE1LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgICAgICAgICAgICAgZW50cnkuZmlsZShmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXM2Lm9wdGlvbnMuaWdub3JlSGlkZGVuRmlsZXMgJiYgZmlsZS5uYW1lLnN1YnN0cmluZygwLCAxKSA9PT0gJy4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZS5mdWxsUGF0aCA9IFwiXCIuY29uY2F0KHBhdGgsIFwiL1wiKS5jb25jYXQoZmlsZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNi5hZGRGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgX3RoaXM2Ll9hZGRGaWxlc0Zyb21EaXJlY3RvcnkoZW50cnksIFwiXCIuY29uY2F0KHBhdGgsIFwiL1wiKS5jb25jYXQoZW50cnkubmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSAvLyBSZWN1cnNpdmVseSBjYWxsIHJlYWRFbnRyaWVzKCkgYWdhaW4sIHNpbmNlIGJyb3dzZXIgb25seSBoYW5kbGVcbiAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IDEwMCBlbnRyaWVzLlxuICAgICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9EaXJlY3RvcnlSZWFkZXIjcmVhZEVudHJpZXNcblxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTUgPSB0cnVlO1xuICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gZXJyO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSAmJiBfaXRlcmF0b3IxNVtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxNVtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxNSkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVhZEVudHJpZXMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSwgZXJyb3JIYW5kbGVyKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiByZWFkRW50cmllcygpO1xuICAgIH0gLy8gSWYgYGRvbmUoKWAgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnQgdGhlIGZpbGUgaXMgYWNjZXB0ZWRcbiAgICAvLyBJZiB5b3UgY2FsbCBpdCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UsIHRoZSBmaWxlIGlzIHJlamVjdGVkXG4gICAgLy8gKFRoaXMgYWxsb3dzIGZvciBhc3luY2hyb25vdXMgdmFsaWRhdGlvbilcbiAgICAvL1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBmaWxlc2l6ZSwgYW5kIGlmIHRoZSBmaWxlLnR5cGUgcGFzc2VzIHRoZVxuICAgIC8vIGBhY2NlcHRlZEZpbGVzYCBjaGVjay5cblxuICB9LCB7XG4gICAga2V5OiBcImFjY2VwdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY2NlcHQoZmlsZSwgZG9uZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYXhGaWxlc2l6ZSAmJiBmaWxlLnNpemUgPiB0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICBkb25lKHRoaXMub3B0aW9ucy5kaWN0RmlsZVRvb0JpZy5yZXBsYWNlKFwie3tmaWxlc2l6ZX19XCIsIE1hdGgucm91bmQoZmlsZS5zaXplIC8gMTAyNCAvIDEwLjI0KSAvIDEwMCkucmVwbGFjZShcInt7bWF4RmlsZXNpemV9fVwiLCB0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUpKTtcbiAgICAgIH0gZWxzZSBpZiAoIURyb3B6b25lLmlzVmFsaWRGaWxlKGZpbGUsIHRoaXMub3B0aW9ucy5hY2NlcHRlZEZpbGVzKSkge1xuICAgICAgICBkb25lKHRoaXMub3B0aW9ucy5kaWN0SW52YWxpZEZpbGVUeXBlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLm1heEZpbGVzICE9IG51bGwgJiYgdGhpcy5nZXRBY2NlcHRlZEZpbGVzKCkubGVuZ3RoID49IHRoaXMub3B0aW9ucy5tYXhGaWxlcykge1xuICAgICAgICBkb25lKHRoaXMub3B0aW9ucy5kaWN0TWF4RmlsZXNFeGNlZWRlZC5yZXBsYWNlKFwie3ttYXhGaWxlc319XCIsIHRoaXMub3B0aW9ucy5tYXhGaWxlcykpO1xuICAgICAgICB0aGlzLmVtaXQoXCJtYXhmaWxlc2V4Y2VlZGVkXCIsIGZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmFjY2VwdC5jYWxsKHRoaXMsIGZpbGUsIGRvbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRGaWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZEZpbGUoZmlsZSkge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIGZpbGUudXBsb2FkID0ge1xuICAgICAgICB1dWlkOiBEcm9wem9uZS51dWlkdjQoKSxcbiAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgIC8vIFNldHRpbmcgdGhlIHRvdGFsIHVwbG9hZCBzaXplIHRvIGZpbGUuc2l6ZSBmb3IgdGhlIGJlZ2lubmluZ1xuICAgICAgICAvLyBJdCdzIGFjdHVhbCBkaWZmZXJlbnQgdGhhbiB0aGUgc2l6ZSB0byBiZSB0cmFuc21pdHRlZC5cbiAgICAgICAgdG90YWw6IGZpbGUuc2l6ZSxcbiAgICAgICAgYnl0ZXNTZW50OiAwLFxuICAgICAgICBmaWxlbmFtZTogdGhpcy5fcmVuYW1lRmlsZShmaWxlKSAvLyBOb3Qgc2V0dGluZyBjaHVua2luZyBpbmZvcm1hdGlvbiBoZXJlLCBiZWNhdXNlIHRoZSBhY3V0YWwgZGF0YSDigJQgYW5kXG4gICAgICAgIC8vIHRodXMgdGhlIGNodW5rcyDigJQgbWlnaHQgY2hhbmdlIGlmIGBvcHRpb25zLnRyYW5zZm9ybUZpbGVgIGlzIHNldFxuICAgICAgICAvLyBhbmQgZG9lcyBzb21ldGhpbmcgdG8gdGhlIGRhdGEuXG5cbiAgICAgIH07XG4gICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZSk7XG4gICAgICBmaWxlLnN0YXR1cyA9IERyb3B6b25lLkFEREVEO1xuICAgICAgdGhpcy5lbWl0KFwiYWRkZWRmaWxlXCIsIGZpbGUpO1xuXG4gICAgICB0aGlzLl9lbnF1ZXVlVGh1bWJuYWlsKGZpbGUpO1xuXG4gICAgICB0aGlzLmFjY2VwdChmaWxlLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgZmlsZS5hY2NlcHRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgX3RoaXM3Ll9lcnJvclByb2Nlc3NpbmcoW2ZpbGVdLCBlcnJvcik7IC8vIFdpbGwgc2V0IHRoZSBmaWxlLnN0YXR1c1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZS5hY2NlcHRlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoX3RoaXM3Lm9wdGlvbnMuYXV0b1F1ZXVlKSB7XG4gICAgICAgICAgICBfdGhpczcuZW5xdWV1ZUZpbGUoZmlsZSk7XG4gICAgICAgICAgfSAvLyBXaWxsIHNldCAuYWNjZXB0ZWQgPSB0cnVlXG5cbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzNy5fdXBkYXRlTWF4RmlsZXNSZWFjaGVkQ2xhc3MoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gV3JhcHBlciBmb3IgZW5xdWV1ZUZpbGVcblxuICB9LCB7XG4gICAga2V5OiBcImVucXVldWVGaWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbnF1ZXVlRmlsZXMoZmlsZXMpIHtcbiAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTYgPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjE2ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNiA9IGZpbGVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAxNjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSAoX3N0ZXAxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWUpIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IF9zdGVwMTYudmFsdWU7XG4gICAgICAgICAgdGhpcy5lbnF1ZXVlRmlsZShmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjE2ID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiAmJiBfaXRlcmF0b3IxNltcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IxNltcInJldHVyblwiXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IxNikge1xuICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVucXVldWVGaWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVucXVldWVGaWxlKGZpbGUpIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLkFEREVEICYmIGZpbGUuYWNjZXB0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5RVUVVRUQ7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvUHJvY2Vzc1F1ZXVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzOC5wcm9jZXNzUXVldWUoKTtcbiAgICAgICAgICB9LCAwKTsgLy8gRGVmZXJyaW5nIHRoZSBjYWxsXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgZmlsZSBjYW4ndCBiZSBxdWV1ZWQgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCBvciB3YXMgcmVqZWN0ZWQuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfZW5xdWV1ZVRodW1ibmFpbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZW5xdWV1ZVRodW1ibmFpbChmaWxlKSB7XG4gICAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jcmVhdGVJbWFnZVRodW1ibmFpbHMgJiYgZmlsZS50eXBlLm1hdGNoKC9pbWFnZS4qLykgJiYgZmlsZS5zaXplIDw9IHRoaXMub3B0aW9ucy5tYXhUaHVtYm5haWxGaWxlc2l6ZSAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgIHRoaXMuX3RodW1ibmFpbFF1ZXVlLnB1c2goZmlsZSk7XG5cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczkuX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSgpO1xuICAgICAgICB9LCAwKTsgLy8gRGVmZXJyaW5nIHRoZSBjYWxsXG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9wcm9jZXNzVGh1bWJuYWlsUXVldWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSgpIHtcbiAgICAgIHZhciBfdGhpczEwID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuX3Byb2Nlc3NpbmdUaHVtYm5haWwgfHwgdGhpcy5fdGh1bWJuYWlsUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbCA9IHRydWU7XG5cbiAgICAgIHZhciBmaWxlID0gdGhpcy5fdGh1bWJuYWlsUXVldWUuc2hpZnQoKTtcblxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGh1bWJuYWlsKGZpbGUsIHRoaXMub3B0aW9ucy50aHVtYm5haWxXaWR0aCwgdGhpcy5vcHRpb25zLnRodW1ibmFpbEhlaWdodCwgdGhpcy5vcHRpb25zLnRodW1ibmFpbE1ldGhvZCwgdHJ1ZSwgZnVuY3Rpb24gKGRhdGFVcmwpIHtcbiAgICAgICAgX3RoaXMxMC5lbWl0KFwidGh1bWJuYWlsXCIsIGZpbGUsIGRhdGFVcmwpO1xuXG4gICAgICAgIF90aGlzMTAuX3Byb2Nlc3NpbmdUaHVtYm5haWwgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzMTAuX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSgpO1xuICAgICAgfSk7XG4gICAgfSAvLyBDYW4gYmUgY2FsbGVkIGJ5IHRoZSB1c2VyIHRvIHJlbW92ZSBhIGZpbGVcblxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUZpbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlRmlsZShmaWxlKSB7XG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlVQTE9BRElORykge1xuICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZChmaWxlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWxlcyA9IHdpdGhvdXQodGhpcy5maWxlcywgZmlsZSk7XG4gICAgICB0aGlzLmVtaXQoXCJyZW1vdmVkZmlsZVwiLCBmaWxlKTtcblxuICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtaXQoXCJyZXNldFwiKTtcbiAgICAgIH1cbiAgICB9IC8vIFJlbW92ZXMgYWxsIGZpbGVzIHRoYXQgYXJlbid0IGN1cnJlbnRseSBwcm9jZXNzZWQgZnJvbSB0aGUgbGlzdFxuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlQWxsRmlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlQWxsRmlsZXMoY2FuY2VsSWZOZWNlc3NhcnkpIHtcbiAgICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgZmlsZXMgc2luY2UgcmVtb3ZlRmlsZSgpIGNoYW5nZXMgdGhlIEBmaWxlcyBhcnJheS5cbiAgICAgIGlmIChjYW5jZWxJZk5lY2Vzc2FyeSA9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbElmTmVjZXNzYXJ5ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTcgPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjE3ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNyA9IHRoaXMuZmlsZXMuc2xpY2UoKVtTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMTc7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gKF9zdGVwMTcgPSBfaXRlcmF0b3IxNy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIGZpbGUgPSBfc3RlcDE3LnZhbHVlO1xuXG4gICAgICAgICAgaWYgKGZpbGUuc3RhdHVzICE9PSBEcm9wem9uZS5VUExPQURJTkcgfHwgY2FuY2VsSWZOZWNlc3NhcnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNyA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgJiYgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMTcpIHtcbiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gUmVzaXplcyBhbiBpbWFnZSBiZWZvcmUgaXQgZ2V0cyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2ZcbiAgICAvLyBgb3B0aW9ucy50cmFuc2Zvcm1GaWxlYCBpZiBgcmVzaXplV2lkdGhgIG9yIGByZXNpemVIZWlnaHRgIGFyZSBzZXQuIFRoZSBjYWxsYmFjayBpcyBpbnZva2VkIHdpdGhcbiAgICAvLyB0aGUgcmVzaXplZCBibG9iLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVzaXplSW1hZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplSW1hZ2UoZmlsZSwgd2lkdGgsIGhlaWdodCwgcmVzaXplTWV0aG9kLCBjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzMTEgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVUaHVtYm5haWwoZmlsZSwgd2lkdGgsIGhlaWdodCwgcmVzaXplTWV0aG9kLCB0cnVlLCBmdW5jdGlvbiAoZGF0YVVybCwgY2FudmFzKSB7XG4gICAgICAgIGlmIChjYW52YXMgPT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBpbWFnZSBoYXMgbm90IGJlZW4gcmVzaXplZFxuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhmaWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgcmVzaXplTWltZVR5cGUgPSBfdGhpczExLm9wdGlvbnMucmVzaXplTWltZVR5cGU7XG5cbiAgICAgICAgICBpZiAocmVzaXplTWltZVR5cGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzaXplTWltZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHJlc2l6ZWREYXRhVVJMID0gY2FudmFzLnRvRGF0YVVSTChyZXNpemVNaW1lVHlwZSwgX3RoaXMxMS5vcHRpb25zLnJlc2l6ZVF1YWxpdHkpO1xuXG4gICAgICAgICAgaWYgKHJlc2l6ZU1pbWVUeXBlID09PSAnaW1hZ2UvanBlZycgfHwgcmVzaXplTWltZVR5cGUgPT09ICdpbWFnZS9qcGcnKSB7XG4gICAgICAgICAgICAvLyBOb3cgYWRkIHRoZSBvcmlnaW5hbCBFWElGIGluZm9ybWF0aW9uXG4gICAgICAgICAgICByZXNpemVkRGF0YVVSTCA9IEV4aWZSZXN0b3JlLnJlc3RvcmUoZmlsZS5kYXRhVVJMLCByZXNpemVkRGF0YVVSTCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKERyb3B6b25lLmRhdGFVUkl0b0Jsb2IocmVzaXplZERhdGFVUkwpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVRodW1ibmFpbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVUaHVtYm5haWwoZmlsZSwgd2lkdGgsIGhlaWdodCwgcmVzaXplTWV0aG9kLCBmaXhPcmllbnRhdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgIHZhciBfdGhpczEyID0gdGhpcztcblxuICAgICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZmlsZS5kYXRhVVJMID0gZmlsZVJlYWRlci5yZXN1bHQ7IC8vIERvbid0IGJvdGhlciBjcmVhdGluZyBhIHRodW1ibmFpbCBmb3IgU1ZHIGltYWdlcyBzaW5jZSB0aGV5J3JlIHZlY3RvclxuXG4gICAgICAgIGlmIChmaWxlLnR5cGUgPT09IFwiaW1hZ2Uvc3ZnK3htbFwiKSB7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGZpbGVSZWFkZXIucmVzdWx0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpczEyLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwoZmlsZSwgd2lkdGgsIGhlaWdodCwgcmVzaXplTWV0aG9kLCBmaXhPcmllbnRhdGlvbiwgY2FsbGJhY2spO1xuICAgICAgfTtcblxuICAgICAgZmlsZVJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIH0gLy8gYG1vY2tGaWxlYCBuZWVkcyB0byBoYXZlIHRoZXNlIGF0dHJpYnV0ZXM6XG4gICAgLy8gXG4gICAgLy8gICAgIHsgbmFtZTogJ25hbWUnLCBzaXplOiAxMjM0NSwgaW1hZ2VVcmw6ICcnIH1cbiAgICAvL1xuICAgIC8vIGBjYWxsYmFja2Agd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIGltYWdlIGhhcyBiZWVuIGRvd25sb2FkZWQgYW5kIGRpc3BsYXllZC5cbiAgICAvLyBgY3Jvc3NPcmlnaW5gIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBpbWdgIHRhZyB3aGVuIGFjY2Vzc2luZyB0aGUgZmlsZS5cblxuICB9LCB7XG4gICAga2V5OiBcImRpc3BsYXlFeGlzdGluZ0ZpbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzcGxheUV4aXN0aW5nRmlsZShtb2NrRmlsZSwgaW1hZ2VVcmwsIGNhbGxiYWNrLCBjcm9zc09yaWdpbikge1xuICAgICAgdmFyIF90aGlzMTMgPSB0aGlzO1xuXG4gICAgICB2YXIgcmVzaXplVGh1bWJuYWlsID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB0cnVlO1xuICAgICAgdGhpcy5lbWl0KFwiYWRkZWRmaWxlXCIsIG1vY2tGaWxlKTtcbiAgICAgIHRoaXMuZW1pdChcImNvbXBsZXRlXCIsIG1vY2tGaWxlKTtcblxuICAgICAgaWYgKCFyZXNpemVUaHVtYm5haWwpIHtcbiAgICAgICAgdGhpcy5lbWl0KFwidGh1bWJuYWlsXCIsIG1vY2tGaWxlLCBpbWFnZVVybCk7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBvbkRvbmUgPSBmdW5jdGlvbiBvbkRvbmUodGh1bWJuYWlsKSB7XG4gICAgICAgICAgX3RoaXMxMy5lbWl0KCd0aHVtYm5haWwnLCBtb2NrRmlsZSwgdGh1bWJuYWlsKTtcblxuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgfTtcblxuICAgICAgICBtb2NrRmlsZS5kYXRhVVJMID0gaW1hZ2VVcmw7XG4gICAgICAgIHRoaXMuY3JlYXRlVGh1bWJuYWlsRnJvbVVybChtb2NrRmlsZSwgdGhpcy5vcHRpb25zLnRodW1ibmFpbFdpZHRoLCB0aGlzLm9wdGlvbnMudGh1bWJuYWlsSGVpZ2h0LCB0aGlzLm9wdGlvbnMucmVzaXplTWV0aG9kLCB0aGlzLm9wdGlvbnMuZml4T3JpZW50YXRpb24sIG9uRG9uZSwgY3Jvc3NPcmlnaW4pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUaHVtYm5haWxGcm9tVXJsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRodW1ibmFpbEZyb21VcmwoZmlsZSwgd2lkdGgsIGhlaWdodCwgcmVzaXplTWV0aG9kLCBmaXhPcmllbnRhdGlvbiwgY2FsbGJhY2ssIGNyb3NzT3JpZ2luKSB7XG4gICAgICB2YXIgX3RoaXMxNCA9IHRoaXM7XG5cbiAgICAgIC8vIE5vdCB1c2luZyBgbmV3IEltYWdlYCBoZXJlIGJlY2F1c2Ugb2YgYSBidWcgaW4gbGF0ZXN0IENocm9tZSB2ZXJzaW9ucy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZW55by9kcm9wem9uZS9wdWxsLzIyNlxuICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5cbiAgICAgIGlmIChjcm9zc09yaWdpbikge1xuICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSBjcm9zc09yaWdpbjtcbiAgICAgIH1cblxuICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxvYWRFeGlmID0gZnVuY3Rpb24gbG9hZEV4aWYoY2FsbGJhY2spIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soMSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHR5cGVvZiBFWElGICE9PSAndW5kZWZpbmVkJyAmJiBFWElGICE9PSBudWxsICYmIGZpeE9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgbG9hZEV4aWYgPSBmdW5jdGlvbiBsb2FkRXhpZihjYWxsYmFjaykge1xuICAgICAgICAgICAgcmV0dXJuIEVYSUYuZ2V0RGF0YShpbWcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVYSUYuZ2V0VGFnKHRoaXMsICdPcmllbnRhdGlvbicpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9hZEV4aWYoZnVuY3Rpb24gKG9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgZmlsZS53aWR0aCA9IGltZy53aWR0aDtcbiAgICAgICAgICBmaWxlLmhlaWdodCA9IGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICB2YXIgcmVzaXplSW5mbyA9IF90aGlzMTQub3B0aW9ucy5yZXNpemUuY2FsbChfdGhpczE0LCBmaWxlLCB3aWR0aCwgaGVpZ2h0LCByZXNpemVNZXRob2QpO1xuXG4gICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgY2FudmFzLndpZHRoID0gcmVzaXplSW5mby50cmdXaWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gcmVzaXplSW5mby50cmdIZWlnaHQ7XG5cbiAgICAgICAgICBpZiAob3JpZW50YXRpb24gPiA0KSB7XG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSByZXNpemVJbmZvLnRyZ0hlaWdodDtcbiAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSByZXNpemVJbmZvLnRyZ1dpZHRoO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBmbGlwXG4gICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoY2FudmFzLndpZHRoLCAwKTtcbiAgICAgICAgICAgICAgY3R4LnNjYWxlKC0xLCAxKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgLy8gMTgwwrAgcm90YXRlIGxlZnRcbiAgICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZShjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgICAgICBjdHgucm90YXRlKE1hdGguUEkpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAvLyB2ZXJ0aWNhbCBmbGlwXG4gICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIC8vIHZlcnRpY2FsIGZsaXAgKyA5MCByb3RhdGUgcmlnaHRcbiAgICAgICAgICAgICAgY3R4LnJvdGF0ZSgwLjUgKiBNYXRoLlBJKTtcbiAgICAgICAgICAgICAgY3R4LnNjYWxlKDEsIC0xKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgLy8gOTDCsCByb3RhdGUgcmlnaHRcbiAgICAgICAgICAgICAgY3R4LnJvdGF0ZSgwLjUgKiBNYXRoLlBJKTtcbiAgICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtY2FudmFzLndpZHRoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBmbGlwICsgOTAgcm90YXRlIHJpZ2h0XG4gICAgICAgICAgICAgIGN0eC5yb3RhdGUoMC41ICogTWF0aC5QSSk7XG4gICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoY2FudmFzLmhlaWdodCwgLWNhbnZhcy53aWR0aCk7XG4gICAgICAgICAgICAgIGN0eC5zY2FsZSgtMSwgMSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgIC8vIDkwwrAgcm90YXRlIGxlZnRcbiAgICAgICAgICAgICAgY3R4LnJvdGF0ZSgtMC41ICogTWF0aC5QSSk7XG4gICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoLWNhbnZhcy5oZWlnaHQsIDApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IC8vIFRoaXMgaXMgYSBidWdmaXggZm9yIGlPUycgc2NhbGluZyBidWcuXG5cblxuICAgICAgICAgIGRyYXdJbWFnZUlPU0ZpeChjdHgsIGltZywgcmVzaXplSW5mby5zcmNYICE9IG51bGwgPyByZXNpemVJbmZvLnNyY1ggOiAwLCByZXNpemVJbmZvLnNyY1kgIT0gbnVsbCA/IHJlc2l6ZUluZm8uc3JjWSA6IDAsIHJlc2l6ZUluZm8uc3JjV2lkdGgsIHJlc2l6ZUluZm8uc3JjSGVpZ2h0LCByZXNpemVJbmZvLnRyZ1ggIT0gbnVsbCA/IHJlc2l6ZUluZm8udHJnWCA6IDAsIHJlc2l6ZUluZm8udHJnWSAhPSBudWxsID8gcmVzaXplSW5mby50cmdZIDogMCwgcmVzaXplSW5mby50cmdXaWR0aCwgcmVzaXplSW5mby50cmdIZWlnaHQpO1xuICAgICAgICAgIHZhciB0aHVtYm5haWwgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuXG4gICAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0aHVtYm5haWwsIGNhbnZhcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICAgIGltZy5vbmVycm9yID0gY2FsbGJhY2s7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbWcuc3JjID0gZmlsZS5kYXRhVVJMO1xuICAgIH0gLy8gR29lcyB0aHJvdWdoIHRoZSBxdWV1ZSBhbmQgcHJvY2Vzc2VzIGZpbGVzIGlmIHRoZXJlIGFyZW4ndCB0b28gbWFueSBhbHJlYWR5LlxuXG4gIH0sIHtcbiAgICBrZXk6IFwicHJvY2Vzc1F1ZXVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb2Nlc3NRdWV1ZSgpIHtcbiAgICAgIHZhciBwYXJhbGxlbFVwbG9hZHMgPSB0aGlzLm9wdGlvbnMucGFyYWxsZWxVcGxvYWRzO1xuICAgICAgdmFyIHByb2Nlc3NpbmdMZW5ndGggPSB0aGlzLmdldFVwbG9hZGluZ0ZpbGVzKCkubGVuZ3RoO1xuICAgICAgdmFyIGkgPSBwcm9jZXNzaW5nTGVuZ3RoOyAvLyBUaGVyZSBhcmUgYWxyZWFkeSBhdCBsZWFzdCBhcyBtYW55IGZpbGVzIHVwbG9hZGluZyB0aGFuIHNob3VsZCBiZVxuXG4gICAgICBpZiAocHJvY2Vzc2luZ0xlbmd0aCA+PSBwYXJhbGxlbFVwbG9hZHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgcXVldWVkRmlsZXMgPSB0aGlzLmdldFF1ZXVlZEZpbGVzKCk7XG5cbiAgICAgIGlmICghKHF1ZXVlZEZpbGVzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICAvLyBUaGUgZmlsZXMgc2hvdWxkIGJlIHVwbG9hZGVkIGluIG9uZSByZXF1ZXN0XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NGaWxlcyhxdWV1ZWRGaWxlcy5zbGljZSgwLCBwYXJhbGxlbFVwbG9hZHMgLSBwcm9jZXNzaW5nTGVuZ3RoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aGlsZSAoaSA8IHBhcmFsbGVsVXBsb2Fkcykge1xuICAgICAgICAgIGlmICghcXVldWVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSAvLyBOb3RoaW5nIGxlZnQgdG8gcHJvY2Vzc1xuXG5cbiAgICAgICAgICB0aGlzLnByb2Nlc3NGaWxlKHF1ZXVlZEZpbGVzLnNoaWZ0KCkpO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gV3JhcHBlciBmb3IgYHByb2Nlc3NGaWxlc2BcblxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NGaWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb2Nlc3NGaWxlKGZpbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NGaWxlcyhbZmlsZV0pO1xuICAgIH0gLy8gTG9hZHMgdGhlIGZpbGUsIHRoZW4gY2FsbHMgZmluaXNoZWRMb2FkaW5nKClcblxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NGaWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcm9jZXNzRmlsZXMoZmlsZXMpIHtcbiAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTggPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjE4ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxOCA9IGZpbGVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAxODsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSAoX3N0ZXAxOCA9IF9pdGVyYXRvcjE4Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWUpIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IF9zdGVwMTgudmFsdWU7XG4gICAgICAgICAgZmlsZS5wcm9jZXNzaW5nID0gdHJ1ZTsgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuICAgICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuVVBMT0FESU5HO1xuICAgICAgICAgIHRoaXMuZW1pdChcInByb2Nlc3NpbmdcIiwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE4ID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOCA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggJiYgX2l0ZXJhdG9yMThbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgX2l0ZXJhdG9yMThbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMTgpIHtcbiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5lbWl0KFwicHJvY2Vzc2luZ211bHRpcGxlXCIsIGZpbGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZXMoZmlsZXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0RmlsZXNXaXRoWGhyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRGaWxlc1dpdGhYaHIoeGhyKSB7XG4gICAgICB2YXIgZmlsZXM7XG4gICAgICByZXR1cm4gZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZS54aHIgPT09IHhocjtcbiAgICAgIH0pLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgIH0pO1xuICAgIH0gLy8gQ2FuY2VscyB0aGUgZmlsZSB1cGxvYWQgYW5kIHNldHMgdGhlIHN0YXR1cyB0byBDQU5DRUxFRFxuICAgIC8vICoqaWYqKiB0aGUgZmlsZSBpcyBhY3R1YWxseSBiZWluZyB1cGxvYWRlZC5cbiAgICAvLyBJZiBpdCdzIHN0aWxsIGluIHRoZSBxdWV1ZSwgdGhlIGZpbGUgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIGl0IGFuZCB0aGUgc3RhdHVzXG4gICAgLy8gc2V0IHRvIENBTkNFTEVELlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiY2FuY2VsVXBsb2FkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhbmNlbFVwbG9hZChmaWxlKSB7XG4gICAgICBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLlVQTE9BRElORykge1xuICAgICAgICB2YXIgZ3JvdXBlZEZpbGVzID0gdGhpcy5fZ2V0RmlsZXNXaXRoWGhyKGZpbGUueGhyKTtcblxuICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMTkgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yMTkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxOSA9IGdyb3VwZWRGaWxlc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMTk7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gKF9zdGVwMTkgPSBfaXRlcmF0b3IxOS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSB0cnVlKSB7XG4gICAgICAgICAgICB2YXIgZ3JvdXBlZEZpbGUgPSBfc3RlcDE5LnZhbHVlO1xuICAgICAgICAgICAgZ3JvdXBlZEZpbGUuc3RhdHVzID0gRHJvcHpvbmUuQ0FOQ0VMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE5ID0gdHJ1ZTtcbiAgICAgICAgICBfaXRlcmF0b3JFcnJvcjE5ID0gZXJyO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSAmJiBfaXRlcmF0b3IxOVtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjE5W1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjE5KSB7XG4gICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBmaWxlLnhociAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBmaWxlLnhoci5hYm9ydCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IHRydWU7XG4gICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjIwID0gZmFsc2U7XG4gICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjIwID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjAgPSBncm91cGVkRmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDIwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IChfc3RlcDIwID0gX2l0ZXJhdG9yMjAubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIF9ncm91cGVkRmlsZSA9IF9zdGVwMjAudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxlZFwiLCBfZ3JvdXBlZEZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMCA9IHRydWU7XG4gICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMCA9IGVycjtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgJiYgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IyMFtcInJldHVyblwiXSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyMCkge1xuICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxlZG11bHRpcGxlXCIsIGdyb3VwZWRGaWxlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlsZS5zdGF0dXMgPT09IERyb3B6b25lLkFEREVEIHx8IGZpbGUuc3RhdHVzID09PSBEcm9wem9uZS5RVUVVRUQpIHtcbiAgICAgICAgZmlsZS5zdGF0dXMgPSBEcm9wem9uZS5DQU5DRUxFRDtcbiAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsZWRcIiwgZmlsZSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbGVkbXVsdGlwbGVcIiwgW2ZpbGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc29sdmVPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzb2x2ZU9wdGlvbihvcHRpb24pIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4zID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMyA+IDEgPyBfbGVuMyAtIDEgOiAwKSwgX2tleTMgPSAxOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5MyAtIDFdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb24uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwbG9hZEZpbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBsb2FkRmlsZShmaWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlcyhbZmlsZV0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGxvYWRGaWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGxvYWRGaWxlcyhmaWxlcykge1xuICAgICAgdmFyIF90aGlzMTUgPSB0aGlzO1xuXG4gICAgICB0aGlzLl90cmFuc2Zvcm1GaWxlcyhmaWxlcywgZnVuY3Rpb24gKHRyYW5zZm9ybWVkRmlsZXMpIHtcbiAgICAgICAgaWYgKF90aGlzMTUub3B0aW9ucy5jaHVua2luZykge1xuICAgICAgICAgIC8vIENodW5raW5nIGlzIG5vdCBhbGxvd2VkIHRvIGJlIHVzZWQgd2l0aCBgdXBsb2FkTXVsdGlwbGVgIHNvIHdlIGtub3dcbiAgICAgICAgICAvLyB0aGF0IHRoZXJlIGlzIG9ubHkgX19vbmVfX2ZpbGUuXG4gICAgICAgICAgdmFyIHRyYW5zZm9ybWVkRmlsZSA9IHRyYW5zZm9ybWVkRmlsZXNbMF07XG4gICAgICAgICAgZmlsZXNbMF0udXBsb2FkLmNodW5rZWQgPSBfdGhpczE1Lm9wdGlvbnMuY2h1bmtpbmcgJiYgKF90aGlzMTUub3B0aW9ucy5mb3JjZUNodW5raW5nIHx8IHRyYW5zZm9ybWVkRmlsZS5zaXplID4gX3RoaXMxNS5vcHRpb25zLmNodW5rU2l6ZSk7XG4gICAgICAgICAgZmlsZXNbMF0udXBsb2FkLnRvdGFsQ2h1bmtDb3VudCA9IE1hdGguY2VpbCh0cmFuc2Zvcm1lZEZpbGUuc2l6ZSAvIF90aGlzMTUub3B0aW9ucy5jaHVua1NpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzWzBdLnVwbG9hZC5jaHVua2VkKSB7XG4gICAgICAgICAgLy8gVGhpcyBmaWxlIHNob3VsZCBiZSBzZW50IGluIGNodW5rcyFcbiAgICAgICAgICAvLyBJZiB0aGUgY2h1bmtpbmcgb3B0aW9uIGlzIHNldCwgd2UgKiprbm93KiogdGhhdCB0aGVyZSBjYW4gb25seSBiZSAqKm9uZSoqIGZpbGUsIHNpbmNlXG4gICAgICAgICAgLy8gdXBsb2FkTXVsdGlwbGUgaXMgbm90IGFsbG93ZWQgd2l0aCB0aGlzIG9wdGlvbi5cbiAgICAgICAgICB2YXIgZmlsZSA9IGZpbGVzWzBdO1xuICAgICAgICAgIHZhciBfdHJhbnNmb3JtZWRGaWxlID0gdHJhbnNmb3JtZWRGaWxlc1swXTtcbiAgICAgICAgICB2YXIgc3RhcnRlZENodW5rQ291bnQgPSAwO1xuICAgICAgICAgIGZpbGUudXBsb2FkLmNodW5rcyA9IFtdO1xuXG4gICAgICAgICAgdmFyIGhhbmRsZU5leHRDaHVuayA9IGZ1bmN0aW9uIGhhbmRsZU5leHRDaHVuaygpIHtcbiAgICAgICAgICAgIHZhciBjaHVua0luZGV4ID0gMDsgLy8gRmluZCB0aGUgbmV4dCBpdGVtIGluIGZpbGUudXBsb2FkLmNodW5rcyB0aGF0IGlzIG5vdCBkZWZpbmVkIHlldC5cblxuICAgICAgICAgICAgd2hpbGUgKGZpbGUudXBsb2FkLmNodW5rc1tjaHVua0luZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNodW5rSW5kZXgrKztcbiAgICAgICAgICAgIH0gLy8gVGhpcyBtZWFucywgdGhhdCBhbGwgY2h1bmtzIGhhdmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuXG5cblxuICAgICAgICAgICAgaWYgKGNodW5rSW5kZXggPj0gZmlsZS51cGxvYWQudG90YWxDaHVua0NvdW50KSByZXR1cm47XG4gICAgICAgICAgICBzdGFydGVkQ2h1bmtDb3VudCsrO1xuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gY2h1bmtJbmRleCAqIF90aGlzMTUub3B0aW9ucy5jaHVua1NpemU7XG4gICAgICAgICAgICB2YXIgZW5kID0gTWF0aC5taW4oc3RhcnQgKyBfdGhpczE1Lm9wdGlvbnMuY2h1bmtTaXplLCBmaWxlLnNpemUpO1xuICAgICAgICAgICAgdmFyIGRhdGFCbG9jayA9IHtcbiAgICAgICAgICAgICAgbmFtZTogX3RoaXMxNS5fZ2V0UGFyYW1OYW1lKDApLFxuICAgICAgICAgICAgICBkYXRhOiBfdHJhbnNmb3JtZWRGaWxlLndlYmtpdFNsaWNlID8gX3RyYW5zZm9ybWVkRmlsZS53ZWJraXRTbGljZShzdGFydCwgZW5kKSA6IF90cmFuc2Zvcm1lZEZpbGUuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlLnVwbG9hZC5maWxlbmFtZSxcbiAgICAgICAgICAgICAgY2h1bmtJbmRleDogY2h1bmtJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZpbGUudXBsb2FkLmNodW5rc1tjaHVua0luZGV4XSA9IHtcbiAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgaW5kZXg6IGNodW5rSW5kZXgsXG4gICAgICAgICAgICAgIGRhdGFCbG9jazogZGF0YUJsb2NrLFxuICAgICAgICAgICAgICAvLyBJbiBjYXNlIHdlIHdhbnQgdG8gcmV0cnkuXG4gICAgICAgICAgICAgIHN0YXR1czogRHJvcHpvbmUuVVBMT0FESU5HLFxuICAgICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgICAgcmV0cmllczogMCAvLyBUaGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgYmxvY2sgaGFzIGJlZW4gcmV0cmllZC5cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgX3RoaXMxNS5fdXBsb2FkRGF0YShmaWxlcywgW2RhdGFCbG9ja10pO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBmaWxlLnVwbG9hZC5maW5pc2hlZENodW5rVXBsb2FkID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgICAgICB2YXIgYWxsRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgY2h1bmsuc3RhdHVzID0gRHJvcHpvbmUuU1VDQ0VTUzsgLy8gQ2xlYXIgdGhlIGRhdGEgZnJvbSB0aGUgY2h1bmtcblxuICAgICAgICAgICAgY2h1bmsuZGF0YUJsb2NrID0gbnVsbDsgLy8gTGVhdmluZyB0aGlzIHJlZmVyZW5jZSB0byB4aHIgaW50YWN0IGhlcmUgd2lsbCBjYXVzZSBtZW1vcnkgbGVha3MgaW4gc29tZSBicm93c2Vyc1xuXG4gICAgICAgICAgICBjaHVuay54aHIgPSBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGUudXBsb2FkLnRvdGFsQ2h1bmtDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChmaWxlLnVwbG9hZC5jaHVua3NbaV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVOZXh0Q2h1bmsoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChmaWxlLnVwbG9hZC5jaHVua3NbaV0uc3RhdHVzICE9PSBEcm9wem9uZS5TVUNDRVNTKSB7XG4gICAgICAgICAgICAgICAgYWxsRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWxsRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgX3RoaXMxNS5vcHRpb25zLmNodW5rc1VwbG9hZGVkKGZpbGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpczE1Ll9maW5pc2hlZChmaWxlcywgJycsIG51bGwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKF90aGlzMTUub3B0aW9ucy5wYXJhbGxlbENodW5rVXBsb2Fkcykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlLnVwbG9hZC50b3RhbENodW5rQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICBoYW5kbGVOZXh0Q2h1bmsoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlTmV4dENodW5rKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBkYXRhQmxvY2tzID0gW107XG5cbiAgICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBmaWxlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAgICAgICBkYXRhQmxvY2tzW19pM10gPSB7XG4gICAgICAgICAgICAgIG5hbWU6IF90aGlzMTUuX2dldFBhcmFtTmFtZShfaTMpLFxuICAgICAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1lZEZpbGVzW19pM10sXG4gICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlc1tfaTNdLnVwbG9hZC5maWxlbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpczE1Ll91cGxvYWREYXRhKGZpbGVzLCBkYXRhQmxvY2tzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLy8gUmV0dXJucyB0aGUgcmlnaHQgY2h1bmsgZm9yIGdpdmVuIGZpbGUgYW5kIHhoclxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2dldENodW5rXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRDaHVuayhmaWxlLCB4aHIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZS51cGxvYWQudG90YWxDaHVua0NvdW50OyBpKyspIHtcbiAgICAgICAgaWYgKGZpbGUudXBsb2FkLmNodW5rc1tpXSAhPT0gdW5kZWZpbmVkICYmIGZpbGUudXBsb2FkLmNodW5rc1tpXS54aHIgPT09IHhocikge1xuICAgICAgICAgIHJldHVybiBmaWxlLnVwbG9hZC5jaHVua3NbaV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIFRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgdXBsb2FkcyB0aGUgZmlsZShzKSB0byB0aGUgc2VydmVyLlxuICAgIC8vIElmIGRhdGFCbG9ja3MgY29udGFpbnMgdGhlIGFjdHVhbCBkYXRhIHRvIHVwbG9hZCAobWVhbmluZywgdGhhdCB0aGlzIGNvdWxkIGVpdGhlciBiZSB0cmFuc2Zvcm1lZFxuICAgIC8vIGZpbGVzLCBvciBpbmRpdmlkdWFsIGNodW5rcyBmb3IgY2h1bmtlZCB1cGxvYWQpLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX3VwbG9hZERhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwbG9hZERhdGEoZmlsZXMsIGRhdGFCbG9ja3MpIHtcbiAgICAgIHZhciBfdGhpczE2ID0gdGhpcztcblxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOyAvLyBQdXQgdGhlIHhociBvYmplY3QgaW4gdGhlIGZpbGUgb2JqZWN0cyB0byBiZSBhYmxlIHRvIHJlZmVyZW5jZSBpdCBsYXRlci5cblxuICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG4gICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyMSA9IGZhbHNlO1xuICAgICAgdmFyIF9pdGVyYXRvckVycm9yMjEgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIxID0gZmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDIxOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IChfc3RlcDIxID0gX2l0ZXJhdG9yMjEubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gdHJ1ZSkge1xuICAgICAgICAgIHZhciBmaWxlID0gX3N0ZXAyMS52YWx1ZTtcbiAgICAgICAgICBmaWxlLnhociA9IHhocjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjEgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjIxID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSAmJiBfaXRlcmF0b3IyMVtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IyMVtcInJldHVyblwiXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyMSkge1xuICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVzWzBdLnVwbG9hZC5jaHVua2VkKSB7XG4gICAgICAgIC8vIFB1dCB0aGUgeGhyIG9iamVjdCBpbiB0aGUgcmlnaHQgY2h1bmsgb2JqZWN0LCBzbyBpdCBjYW4gYmUgYXNzb2NpYXRlZCBsYXRlciwgYW5kIGZvdW5kIHdpdGggX2dldENodW5rXG4gICAgICAgIGZpbGVzWzBdLnVwbG9hZC5jaHVua3NbZGF0YUJsb2Nrc1swXS5jaHVua0luZGV4XS54aHIgPSB4aHI7XG4gICAgICB9XG5cbiAgICAgIHZhciBtZXRob2QgPSB0aGlzLnJlc29sdmVPcHRpb24odGhpcy5vcHRpb25zLm1ldGhvZCwgZmlsZXMpO1xuICAgICAgdmFyIHVybCA9IHRoaXMucmVzb2x2ZU9wdGlvbih0aGlzLm9wdGlvbnMudXJsLCBmaWxlcyk7XG4gICAgICB4aHIub3BlbihtZXRob2QsIHVybCwgdHJ1ZSk7IC8vIFNldHRpbmcgdGhlIHRpbWVvdXQgYWZ0ZXIgb3BlbiBiZWNhdXNlIG9mIElFMTEgaXNzdWU6IGh0dHBzOi8vZ2l0bGFiLmNvbS9tZW5vL2Ryb3B6b25lL2lzc3Vlcy84XG5cbiAgICAgIHhoci50aW1lb3V0ID0gdGhpcy5yZXNvbHZlT3B0aW9uKHRoaXMub3B0aW9ucy50aW1lb3V0LCBmaWxlcyk7IC8vIEhhcyB0byBiZSBhZnRlciBgLm9wZW4oKWAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZW55by9kcm9wem9uZS9pc3N1ZXMvMTc5XG5cbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSAhIXRoaXMub3B0aW9ucy53aXRoQ3JlZGVudGlhbHM7XG5cbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpczE2Ll9maW5pc2hlZFVwbG9hZGluZyhmaWxlcywgeGhyLCBlKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMTYuX2hhbmRsZVVwbG9hZEVycm9yKGZpbGVzLCB4aHIsIFwiUmVxdWVzdCB0aW1lZG91dCBhZnRlciBcIi5jb25jYXQoX3RoaXMxNi5vcHRpb25zLnRpbWVvdXQsIFwiIHNlY29uZHNcIikpO1xuICAgICAgfTtcblxuICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMTYuX2hhbmRsZVVwbG9hZEVycm9yKGZpbGVzLCB4aHIpO1xuICAgICAgfTsgLy8gU29tZSBicm93c2VycyBkbyBub3QgaGF2ZSB0aGUgLnVwbG9hZCBwcm9wZXJ0eVxuXG5cbiAgICAgIHZhciBwcm9ncmVzc09iaiA9IHhoci51cGxvYWQgIT0gbnVsbCA/IHhoci51cGxvYWQgOiB4aHI7XG5cbiAgICAgIHByb2dyZXNzT2JqLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMxNi5fdXBkYXRlRmlsZXNVcGxvYWRQcm9ncmVzcyhmaWxlcywgeGhyLCBlKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBoZWFkZXJzID0ge1xuICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgICAgXCJYLVJlcXVlc3RlZC1XaXRoXCI6IFwiWE1MSHR0cFJlcXVlc3RcIlxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgIERyb3B6b25lLmV4dGVuZChoZWFkZXJzLCB0aGlzLm9wdGlvbnMuaGVhZGVycyk7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGhlYWRlck5hbWUgaW4gaGVhZGVycykge1xuICAgICAgICB2YXIgaGVhZGVyVmFsdWUgPSBoZWFkZXJzW2hlYWRlck5hbWVdO1xuXG4gICAgICAgIGlmIChoZWFkZXJWYWx1ZSkge1xuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlck5hbWUsIGhlYWRlclZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsgLy8gQWRkaW5nIGFsbCBAb3B0aW9ucyBwYXJhbWV0ZXJzXG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucGFyYW1zKSB7XG4gICAgICAgIHZhciBhZGRpdGlvbmFsUGFyYW1zID0gdGhpcy5vcHRpb25zLnBhcmFtcztcblxuICAgICAgICBpZiAodHlwZW9mIGFkZGl0aW9uYWxQYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBhZGRpdGlvbmFsUGFyYW1zID0gYWRkaXRpb25hbFBhcmFtcy5jYWxsKHRoaXMsIGZpbGVzLCB4aHIsIGZpbGVzWzBdLnVwbG9hZC5jaHVua2VkID8gdGhpcy5fZ2V0Q2h1bmsoZmlsZXNbMF0sIHhocikgOiBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gYWRkaXRpb25hbFBhcmFtc1trZXldO1xuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBMZXQgdGhlIHVzZXIgYWRkIGFkZGl0aW9uYWwgZGF0YSBpZiBuZWNlc3NhcnlcblxuXG4gICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gdHJ1ZTtcbiAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjIyID0gZmFsc2U7XG4gICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyMiA9IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjIgPSBmaWxlc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjI7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gKF9zdGVwMjIgPSBfaXRlcmF0b3IyMi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIF9maWxlID0gX3N0ZXAyMi52YWx1ZTtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJzZW5kaW5nXCIsIF9maWxlLCB4aHIsIGZvcm1EYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiAmJiBfaXRlcmF0b3IyMltcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IyMltcInJldHVyblwiXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyMikge1xuICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmVtaXQoXCJzZW5kaW5nbXVsdGlwbGVcIiwgZmlsZXMsIHhociwgZm9ybURhdGEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9hZGRGb3JtRWxlbWVudERhdGEoZm9ybURhdGEpOyAvLyBGaW5hbGx5IGFkZCB0aGUgZmlsZXNcbiAgICAgIC8vIEhhcyB0byBiZSBsYXN0IGJlY2F1c2Ugc29tZSBzZXJ2ZXJzIChlZzogUzMpIGV4cGVjdCB0aGUgZmlsZSB0byBiZSB0aGUgbGFzdCBwYXJhbWV0ZXJcblxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFCbG9ja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGRhdGFCbG9jayA9IGRhdGFCbG9ja3NbaV07XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChkYXRhQmxvY2submFtZSwgZGF0YUJsb2NrLmRhdGEsIGRhdGFCbG9jay5maWxlbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3VibWl0UmVxdWVzdCh4aHIsIGZvcm1EYXRhLCBmaWxlcyk7XG4gICAgfSAvLyBUcmFuc2Zvcm1zIGFsbCBmaWxlcyB3aXRoIHRoaXMub3B0aW9ucy50cmFuc2Zvcm1GaWxlIGFuZCBpbnZva2VzIGRvbmUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgZmlsZXMgd2hlbiBkb25lLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX3RyYW5zZm9ybUZpbGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF90cmFuc2Zvcm1GaWxlcyhmaWxlcywgZG9uZSkge1xuICAgICAgdmFyIF90aGlzMTcgPSB0aGlzO1xuXG4gICAgICB2YXIgdHJhbnNmb3JtZWRGaWxlcyA9IFtdOyAvLyBDbHVtc3kgd2F5IG9mIGhhbmRsaW5nIGFzeW5jaHJvbm91cyBjYWxscywgdW50aWwgSSBnZXQgdG8gYWRkIGEgcHJvcGVyIEZ1dHVyZSBsaWJyYXJ5LlxuXG4gICAgICB2YXIgZG9uZUNvdW50ZXIgPSAwO1xuXG4gICAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7XG4gICAgICAgIF90aGlzMTcub3B0aW9ucy50cmFuc2Zvcm1GaWxlLmNhbGwoX3RoaXMxNywgZmlsZXNbaV0sIGZ1bmN0aW9uICh0cmFuc2Zvcm1lZEZpbGUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1lZEZpbGVzW2ldID0gdHJhbnNmb3JtZWRGaWxlO1xuXG4gICAgICAgICAgaWYgKCsrZG9uZUNvdW50ZXIgPT09IGZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgZG9uZSh0cmFuc2Zvcm1lZEZpbGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBfbG9vcChpKTtcbiAgICAgIH1cbiAgICB9IC8vIFRha2VzIGNhcmUgb2YgYWRkaW5nIG90aGVyIGlucHV0IGVsZW1lbnRzIG9mIHRoZSBmb3JtIHRvIHRoZSBBSkFYIHJlcXVlc3RcblxuICB9LCB7XG4gICAga2V5OiBcIl9hZGRGb3JtRWxlbWVudERhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2FkZEZvcm1FbGVtZW50RGF0YShmb3JtRGF0YSkge1xuICAgICAgLy8gVGFrZSBjYXJlIG9mIG90aGVyIGlucHV0IGVsZW1lbnRzXG4gICAgICBpZiAodGhpcy5lbGVtZW50LnRhZ05hbWUgPT09IFwiRk9STVwiKSB7XG4gICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSB0cnVlO1xuICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyMyA9IGZhbHNlO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyMyA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIzID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uXCIpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyMzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSAoX3N0ZXAyMyA9IF9pdGVyYXRvcjIzLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IHRydWUpIHtcbiAgICAgICAgICAgIHZhciBpbnB1dCA9IF9zdGVwMjMudmFsdWU7XG4gICAgICAgICAgICB2YXIgaW5wdXROYW1lID0gaW5wdXQuZ2V0QXR0cmlidXRlKFwibmFtZVwiKTtcbiAgICAgICAgICAgIHZhciBpbnB1dFR5cGUgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuICAgICAgICAgICAgaWYgKGlucHV0VHlwZSkgaW5wdXRUeXBlID0gaW5wdXRUeXBlLnRvTG93ZXJDYXNlKCk7IC8vIElmIHRoZSBpbnB1dCBkb2Vzbid0IGhhdmUgYSBuYW1lLCB3ZSBjYW4ndCB1c2UgaXQuXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXROYW1lID09PSAndW5kZWZpbmVkJyB8fCBpbnB1dE5hbWUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoaW5wdXQudGFnTmFtZSA9PT0gXCJTRUxFQ1RcIiAmJiBpbnB1dC5oYXNBdHRyaWJ1dGUoXCJtdWx0aXBsZVwiKSkge1xuICAgICAgICAgICAgICAvLyBQb3NzaWJseSBtdWx0aXBsZSB2YWx1ZXNcbiAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjI0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjQgPSBpbnB1dC5vcHRpb25zW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSAoX3N0ZXAyNCA9IF9pdGVyYXRvcjI0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBvcHRpb24gPSBfc3RlcDI0LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChpbnB1dE5hbWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjI0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjI0ID0gZXJyO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCAmJiBfaXRlcmF0b3IyNFtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjI0W1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dFR5cGUgfHwgaW5wdXRUeXBlICE9PSBcImNoZWNrYm94XCIgJiYgaW5wdXRUeXBlICE9PSBcInJhZGlvXCIgfHwgaW5wdXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoaW5wdXROYW1lLCBpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gdHJ1ZTtcbiAgICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gZXJyO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyAmJiBfaXRlcmF0b3IyM1tcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjIzKSB7XG4gICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBJbnZva2VkIHdoZW4gdGhlcmUgaXMgbmV3IHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IGdpdmVuIGZpbGVzLlxuICAgIC8vIElmIGUgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVwbG9hZCBpcyBmaW5pc2hlZC5cblxuICB9LCB7XG4gICAga2V5OiBcIl91cGRhdGVGaWxlc1VwbG9hZFByb2dyZXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVGaWxlc1VwbG9hZFByb2dyZXNzKGZpbGVzLCB4aHIsIGUpIHtcbiAgICAgIHZhciBwcm9ncmVzcztcblxuICAgICAgaWYgKHR5cGVvZiBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwcm9ncmVzcyA9IDEwMCAqIGUubG9hZGVkIC8gZS50b3RhbDtcblxuICAgICAgICBpZiAoZmlsZXNbMF0udXBsb2FkLmNodW5rZWQpIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IGZpbGVzWzBdOyAvLyBTaW5jZSB0aGlzIGlzIGEgY2h1bmtlZCB1cGxvYWQsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSBjaHVuayBwcm9ncmVzcy5cblxuICAgICAgICAgIHZhciBjaHVuayA9IHRoaXMuX2dldENodW5rKGZpbGUsIHhocik7XG5cbiAgICAgICAgICBjaHVuay5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgIGNodW5rLnRvdGFsID0gZS50b3RhbDtcbiAgICAgICAgICBjaHVuay5ieXRlc1NlbnQgPSBlLmxvYWRlZDtcbiAgICAgICAgICB2YXIgZmlsZVByb2dyZXNzID0gMCxcbiAgICAgICAgICAgICAgZmlsZVRvdGFsLFxuICAgICAgICAgICAgICBmaWxlQnl0ZXNTZW50O1xuICAgICAgICAgIGZpbGUudXBsb2FkLnByb2dyZXNzID0gMDtcbiAgICAgICAgICBmaWxlLnVwbG9hZC50b3RhbCA9IDA7XG4gICAgICAgICAgZmlsZS51cGxvYWQuYnl0ZXNTZW50ID0gMDtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZS51cGxvYWQudG90YWxDaHVua0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmaWxlLnVwbG9hZC5jaHVua3NbaV0gIT09IHVuZGVmaW5lZCAmJiBmaWxlLnVwbG9hZC5jaHVua3NbaV0ucHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBmaWxlLnVwbG9hZC5wcm9ncmVzcyArPSBmaWxlLnVwbG9hZC5jaHVua3NbaV0ucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkLnRvdGFsICs9IGZpbGUudXBsb2FkLmNodW5rc1tpXS50b3RhbDtcbiAgICAgICAgICAgICAgZmlsZS51cGxvYWQuYnl0ZXNTZW50ICs9IGZpbGUudXBsb2FkLmNodW5rc1tpXS5ieXRlc1NlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmlsZS51cGxvYWQucHJvZ3Jlc3MgPSBmaWxlLnVwbG9hZC5wcm9ncmVzcyAvIGZpbGUudXBsb2FkLnRvdGFsQ2h1bmtDb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IGZhbHNlO1xuICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjI1ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjI1ID0gZmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDI1OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IChfc3RlcDI1ID0gX2l0ZXJhdG9yMjUubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZSkge1xuICAgICAgICAgICAgICB2YXIgX2ZpbGUyID0gX3N0ZXAyNS52YWx1ZTtcbiAgICAgICAgICAgICAgX2ZpbGUyLnVwbG9hZC5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICBfZmlsZTIudXBsb2FkLnRvdGFsID0gZS50b3RhbDtcbiAgICAgICAgICAgICAgX2ZpbGUyLnVwbG9hZC5ieXRlc1NlbnQgPSBlLmxvYWRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjUgPSB0cnVlO1xuICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyNSA9IGVycjtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgJiYgX2l0ZXJhdG9yMjVbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjI1W1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI1KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlO1xuICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IGZhbHNlO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyNiA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjI2ID0gZmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDI2OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiA9IChfc3RlcDI2ID0gX2l0ZXJhdG9yMjYubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIF9maWxlMyA9IF9zdGVwMjYudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoXCJ1cGxvYWRwcm9ncmVzc1wiLCBfZmlsZTMsIF9maWxlMy51cGxvYWQucHJvZ3Jlc3MsIF9maWxlMy51cGxvYWQuYnl0ZXNTZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjYgPSB0cnVlO1xuICAgICAgICAgIF9pdGVyYXRvckVycm9yMjYgPSBlcnI7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ICYmIF9pdGVyYXRvcjI2W1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yMjZbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjYpIHtcbiAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBmaWxlIGZpbmlzaGVkIHVwbG9hZGluZ1xuICAgICAgICB2YXIgYWxsRmlsZXNGaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHByb2dyZXNzID0gMTAwO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjcgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yMjcgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyNyA9IGZpbGVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAyNzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgPSAoX3N0ZXAyNyA9IF9pdGVyYXRvcjI3Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IHRydWUpIHtcbiAgICAgICAgICAgIHZhciBfZmlsZTQgPSBfc3RlcDI3LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoX2ZpbGU0LnVwbG9hZC5wcm9ncmVzcyAhPT0gMTAwIHx8IF9maWxlNC51cGxvYWQuYnl0ZXNTZW50ICE9PSBfZmlsZTQudXBsb2FkLnRvdGFsKSB7XG4gICAgICAgICAgICAgIGFsbEZpbGVzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX2ZpbGU0LnVwbG9hZC5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgX2ZpbGU0LnVwbG9hZC5ieXRlc1NlbnQgPSBfZmlsZTQudXBsb2FkLnRvdGFsO1xuICAgICAgICAgIH0gLy8gTm90aGluZyB0byBkbywgYWxsIGZpbGVzIGFscmVhZHkgYXQgMTAwJVxuXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjcgPSB0cnVlO1xuICAgICAgICAgIF9pdGVyYXRvckVycm9yMjcgPSBlcnI7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ICYmIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgX2l0ZXJhdG9yMjdbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjcpIHtcbiAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsRmlsZXNGaW5pc2hlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlO1xuICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyOCA9IGZhbHNlO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyOCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjI4ID0gZmlsZXNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDI4OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IChfc3RlcDI4ID0gX2l0ZXJhdG9yMjgubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIF9maWxlNSA9IF9zdGVwMjgudmFsdWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoXCJ1cGxvYWRwcm9ncmVzc1wiLCBfZmlsZTUsIHByb2dyZXNzLCBfZmlsZTUudXBsb2FkLmJ5dGVzU2VudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjI4ID0gdHJ1ZTtcbiAgICAgICAgICBfaXRlcmF0b3JFcnJvcjI4ID0gZXJyO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCAmJiBfaXRlcmF0b3IyOFtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjI4W1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI4KSB7XG4gICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9maW5pc2hlZFVwbG9hZGluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZmluaXNoZWRVcGxvYWRpbmcoZmlsZXMsIHhociwgZSkge1xuICAgICAgdmFyIHJlc3BvbnNlO1xuXG4gICAgICBpZiAoZmlsZXNbMF0uc3RhdHVzID09PSBEcm9wem9uZS5DQU5DRUxFRCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh4aHIucmVzcG9uc2VUeXBlICE9PSAnYXJyYXlidWZmZXInICYmIHhoci5yZXNwb25zZVR5cGUgIT09ICdibG9iJykge1xuICAgICAgICByZXNwb25zZSA9IHhoci5yZXNwb25zZVRleHQ7XG5cbiAgICAgICAgaWYgKHhoci5nZXRSZXNwb25zZUhlYWRlcihcImNvbnRlbnQtdHlwZVwiKSAmJiB+eGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGUgPSBlcnJvcjtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gXCJJbnZhbGlkIEpTT04gcmVzcG9uc2UgZnJvbSBzZXJ2ZXIuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3VwZGF0ZUZpbGVzVXBsb2FkUHJvZ3Jlc3MoZmlsZXMpO1xuXG4gICAgICBpZiAoISgyMDAgPD0geGhyLnN0YXR1cyAmJiB4aHIuc3RhdHVzIDwgMzAwKSkge1xuICAgICAgICB0aGlzLl9oYW5kbGVVcGxvYWRFcnJvcihmaWxlcywgeGhyLCByZXNwb25zZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmlsZXNbMF0udXBsb2FkLmNodW5rZWQpIHtcbiAgICAgICAgICBmaWxlc1swXS51cGxvYWQuZmluaXNoZWRDaHVua1VwbG9hZCh0aGlzLl9nZXRDaHVuayhmaWxlc1swXSwgeGhyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZmluaXNoZWQoZmlsZXMsIHJlc3BvbnNlLCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfaGFuZGxlVXBsb2FkRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZVVwbG9hZEVycm9yKGZpbGVzLCB4aHIsIHJlc3BvbnNlKSB7XG4gICAgICBpZiAoZmlsZXNbMF0uc3RhdHVzID09PSBEcm9wem9uZS5DQU5DRUxFRCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlc1swXS51cGxvYWQuY2h1bmtlZCAmJiB0aGlzLm9wdGlvbnMucmV0cnlDaHVua3MpIHtcbiAgICAgICAgdmFyIGNodW5rID0gdGhpcy5fZ2V0Q2h1bmsoZmlsZXNbMF0sIHhocik7XG5cbiAgICAgICAgaWYgKGNodW5rLnJldHJpZXMrKyA8IHRoaXMub3B0aW9ucy5yZXRyeUNodW5rc0xpbWl0KSB7XG4gICAgICAgICAgdGhpcy5fdXBsb2FkRGF0YShmaWxlcywgW2NodW5rLmRhdGFCbG9ja10pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmV0cmllZCB0aGlzIGNodW5rIHRvbyBvZnRlbi4gR2l2aW5nIHVwLicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2Vycm9yUHJvY2Vzc2luZyhmaWxlcywgcmVzcG9uc2UgfHwgdGhpcy5vcHRpb25zLmRpY3RSZXNwb25zZUVycm9yLnJlcGxhY2UoXCJ7e3N0YXR1c0NvZGV9fVwiLCB4aHIuc3RhdHVzKSwgeGhyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3VibWl0UmVxdWVzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJtaXRSZXF1ZXN0KHhociwgZm9ybURhdGEsIGZpbGVzKSB7XG4gICAgICB4aHIuc2VuZChmb3JtRGF0YSk7XG4gICAgfSAvLyBDYWxsZWQgaW50ZXJuYWxseSB3aGVuIHByb2Nlc3NpbmcgaXMgZmluaXNoZWQuXG4gICAgLy8gSW5kaXZpZHVhbCBjYWxsYmFja3MgaGF2ZSB0byBiZSBjYWxsZWQgaW4gdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb25zLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2ZpbmlzaGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9maW5pc2hlZChmaWxlcywgcmVzcG9uc2VUZXh0LCBlKSB7XG4gICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZTtcbiAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI5ID0gZmFsc2U7XG4gICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyOSA9IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjkgPSBmaWxlc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMjk7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gKF9zdGVwMjkgPSBfaXRlcmF0b3IyOS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIGZpbGUgPSBfc3RlcDI5LnZhbHVlO1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuU1VDQ0VTUztcbiAgICAgICAgICB0aGlzLmVtaXQoXCJzdWNjZXNzXCIsIGZpbGUsIHJlc3BvbnNlVGV4dCwgZSk7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiY29tcGxldGVcIiwgZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjI5ID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3IyOSA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgJiYgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjkpIHtcbiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5lbWl0KFwic3VjY2Vzc211bHRpcGxlXCIsIGZpbGVzLCByZXNwb25zZVRleHQsIGUpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZW11bHRpcGxlXCIsIGZpbGVzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvUHJvY2Vzc1F1ZXVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfVxuICAgIH0gLy8gQ2FsbGVkIGludGVybmFsbHkgd2hlbiBwcm9jZXNzaW5nIGlzIGZpbmlzaGVkLlxuICAgIC8vIEluZGl2aWR1YWwgY2FsbGJhY2tzIGhhdmUgdG8gYmUgY2FsbGVkIGluIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9ucy5cblxuICB9LCB7XG4gICAga2V5OiBcIl9lcnJvclByb2Nlc3NpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Vycm9yUHJvY2Vzc2luZyhmaWxlcywgbWVzc2FnZSwgeGhyKSB7XG4gICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gdHJ1ZTtcbiAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjMwID0gZmFsc2U7XG4gICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IzMCA9IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMzAgPSBmaWxlc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gKF9zdGVwMzAgPSBfaXRlcmF0b3IzMC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIGZpbGUgPSBfc3RlcDMwLnZhbHVlO1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gRHJvcHpvbmUuRVJST1I7XG4gICAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZmlsZSwgbWVzc2FnZSwgeGhyKTtcbiAgICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZVwiLCBmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9kaWRJdGVyYXRvckVycm9yMzAgPSB0cnVlO1xuICAgICAgICBfaXRlcmF0b3JFcnJvcjMwID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCAmJiBfaXRlcmF0b3IzMFtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IzMFtcInJldHVyblwiXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzMCkge1xuICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSkge1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvcm11bHRpcGxlXCIsIGZpbGVzLCBtZXNzYWdlLCB4aHIpO1xuICAgICAgICB0aGlzLmVtaXQoXCJjb21wbGV0ZW11bHRpcGxlXCIsIGZpbGVzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvUHJvY2Vzc1F1ZXVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcInV1aWR2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1dWlkdjQoKSB7XG4gICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xuICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsXG4gICAgICAgICAgICB2ID0gYyA9PT0gJ3gnID8gciA6IHIgJiAweDMgfCAweDg7XG4gICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEcm9wem9uZTtcbn0oRW1pdHRlcik7XG5cbkRyb3B6b25lLmluaXRDbGFzcygpO1xuRHJvcHpvbmUudmVyc2lvbiA9IFwiNS43LjBcIjsgLy8gVGhpcyBpcyBhIG1hcCBvZiBvcHRpb25zIGZvciB5b3VyIGRpZmZlcmVudCBkcm9wem9uZXMuIEFkZCBjb25maWd1cmF0aW9uc1xuLy8gdG8gdGhpcyBvYmplY3QgZm9yIHlvdXIgZGlmZmVyZW50IGRyb3B6b25lIGVsZW1lbnMuXG4vL1xuLy8gRXhhbXBsZTpcbi8vXG4vLyAgICAgRHJvcHpvbmUub3B0aW9ucy5teURyb3B6b25lRWxlbWVudElkID0geyBtYXhGaWxlc2l6ZTogMSB9O1xuLy9cbi8vIFRvIGRpc2FibGUgYXV0b0Rpc2NvdmVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQsIHlvdSBjYW4gc2V0IGBmYWxzZWAgYXMgYW4gb3B0aW9uOlxuLy9cbi8vICAgICBEcm9wem9uZS5vcHRpb25zLm15RGlzYWJsZWRFbGVtZW50SWQgPSBmYWxzZTtcbi8vXG4vLyBBbmQgaW4gaHRtbDpcbi8vXG4vLyAgICAgPGZvcm0gYWN0aW9uPVwiL3VwbG9hZFwiIGlkPVwibXktZHJvcHpvbmUtZWxlbWVudC1pZFwiIGNsYXNzPVwiZHJvcHpvbmVcIj48L2Zvcm0+XG5cbkRyb3B6b25lLm9wdGlvbnMgPSB7fTsgLy8gUmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgYW4gZWxlbWVudCBvciB1bmRlZmluZWQgaWYgbm9uZSBhdmFpbGFibGUuXG5cbkRyb3B6b25lLm9wdGlvbnNGb3JFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgLy8gR2V0IHRoZSBgRHJvcHpvbmUub3B0aW9ucy5lbGVtZW50SWRgIGZvciB0aGlzIGVsZW1lbnQgaWYgaXQgZXhpc3RzXG4gIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZShcImlkXCIpKSB7XG4gICAgcmV0dXJuIERyb3B6b25lLm9wdGlvbnNbY2FtZWxpemUoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07IC8vIEhvbGRzIGEgbGlzdCBvZiBhbGwgZHJvcHpvbmUgaW5zdGFuY2VzXG5cblxuRHJvcHpvbmUuaW5zdGFuY2VzID0gW107IC8vIFJldHVybnMgdGhlIGRyb3B6b25lIGZvciBnaXZlbiBlbGVtZW50IGlmIGFueVxuXG5Ecm9wem9uZS5mb3JFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudCk7XG4gIH1cblxuICBpZiAoKGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQuZHJvcHpvbmUgOiB1bmRlZmluZWQpID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBEcm9wem9uZSBmb3VuZCBmb3IgZ2l2ZW4gZWxlbWVudC4gVGhpcyBpcyBwcm9iYWJseSBiZWNhdXNlIHlvdSdyZSB0cnlpbmcgdG8gYWNjZXNzIGl0IGJlZm9yZSBEcm9wem9uZSBoYWQgdGhlIHRpbWUgdG8gaW5pdGlhbGl6ZS4gVXNlIHRoZSBgaW5pdGAgb3B0aW9uIHRvIHNldHVwIGFueSBhZGRpdGlvbmFsIG9ic2VydmVycyBvbiB5b3VyIERyb3B6b25lLlwiKTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50LmRyb3B6b25lO1xufTsgLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IERyb3B6b25lIHRvIGF1dG9tYXRpY2FsbHkgZmluZCBhbmQgYXR0YWNoIHRvIC5kcm9wem9uZSBlbGVtZW50cy5cblxuXG5Ecm9wem9uZS5hdXRvRGlzY292ZXIgPSB0cnVlOyAvLyBMb29rcyBmb3IgYWxsIC5kcm9wem9uZSBlbGVtZW50cyBhbmQgY3JlYXRlcyBhIGRyb3B6b25lIGZvciB0aGVtXG5cbkRyb3B6b25lLmRpc2NvdmVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZHJvcHpvbmVzO1xuXG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKSB7XG4gICAgZHJvcHpvbmVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5kcm9wem9uZVwiKTtcbiAgfSBlbHNlIHtcbiAgICBkcm9wem9uZXMgPSBbXTsgLy8gSUUgOihcblxuICAgIHZhciBjaGVja0VsZW1lbnRzID0gZnVuY3Rpb24gY2hlY2tFbGVtZW50cyhlbGVtZW50cykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMxID0gdHJ1ZTtcbiAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMzEgPSBmYWxzZTtcbiAgICAgICAgdmFyIF9pdGVyYXRvckVycm9yMzEgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IzMSA9IGVsZW1lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAzMTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzEgPSAoX3N0ZXAzMSA9IF9pdGVyYXRvcjMxLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMSA9IHRydWUpIHtcbiAgICAgICAgICAgIHZhciBlbCA9IF9zdGVwMzEudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICgvKF58IClkcm9wem9uZSgkfCApLy50ZXN0KGVsLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZHJvcHpvbmVzLnB1c2goZWwpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMxID0gdHJ1ZTtcbiAgICAgICAgICBfaXRlcmF0b3JFcnJvcjMxID0gZXJyO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMSAmJiBfaXRlcmF0b3IzMVtcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjMxW1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjMxKSB7XG4gICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0oKTtcbiAgICB9O1xuXG4gICAgY2hlY2tFbGVtZW50cyhkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRpdlwiKSk7XG4gICAgY2hlY2tFbGVtZW50cyhkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImZvcm1cIikpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMiA9IHRydWU7XG4gICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMzIgPSBmYWxzZTtcbiAgICB2YXIgX2l0ZXJhdG9yRXJyb3IzMiA9IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBmb3IgKHZhciBfaXRlcmF0b3IzMiA9IGRyb3B6b25lc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzI7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMyID0gKF9zdGVwMzIgPSBfaXRlcmF0b3IzMi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzIgPSB0cnVlKSB7XG4gICAgICAgIHZhciBkcm9wem9uZSA9IF9zdGVwMzIudmFsdWU7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZHJvcHpvbmUgdW5sZXNzIGF1dG8gZGlzY292ZXIgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIHNwZWNpZmljIGVsZW1lbnRcbiAgICAgICAgaWYgKERyb3B6b25lLm9wdGlvbnNGb3JFbGVtZW50KGRyb3B6b25lKSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChuZXcgRHJvcHpvbmUoZHJvcHpvbmUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZGlkSXRlcmF0b3JFcnJvcjMyID0gdHJ1ZTtcbiAgICAgIF9pdGVyYXRvckVycm9yMzIgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMyICYmIF9pdGVyYXRvcjMyW1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICBfaXRlcmF0b3IzMltcInJldHVyblwiXSgpO1xuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzMikge1xuICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KCk7XG59OyAvLyBTaW5jZSB0aGUgd2hvbGUgRHJhZyduJ0Ryb3AgQVBJIGlzIHByZXR0eSBuZXcsIHNvbWUgYnJvd3NlcnMgaW1wbGVtZW50IGl0LFxuLy8gYnV0IG5vdCBjb3JyZWN0bHkuXG4vLyBTbyBJIGNyZWF0ZWQgYSBibGFja2xpc3Qgb2YgdXNlckFnZW50cy4gWWVzLCB5ZXMuIEJyb3dzZXIgc25pZmZpbmcsIEkga25vdy5cbi8vIEJ1dCB3aGF0IHRvIGRvIHdoZW4gYnJvd3NlcnMgKnRoZW9yZXRpY2FsbHkqIHN1cHBvcnQgYW4gQVBJLCBidXQgY3Jhc2hcbi8vIHdoZW4gdXNpbmcgaXQuXG4vL1xuLy8gVGhpcyBpcyBhIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyB0ZXN0ZWQgYWdhaW5zdCBuYXZpZ2F0b3IudXNlckFnZW50XG4vL1xuLy8gKiogSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiBicm93c2VyIHRoYXQgKmRvKiBzdXBwb3J0IHRoZSBBUEksIGJ1dFxuLy8gaW5jb3JyZWN0bHkgKipcbi8vXG5cblxuRHJvcHpvbmUuYmxhY2tsaXN0ZWRCcm93c2VycyA9IFsvLyBUaGUgbWFjIG9zIGFuZCB3aW5kb3dzIHBob25lIHZlcnNpb24gb2Ygb3BlcmEgMTIgc2VlbXMgdG8gaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGUgRmlsZSBkcmFnJ24nZHJvcCBBUEkuXG4vb3BlcmEuKihNYWNpbnRvc2h8V2luZG93cyBQaG9uZSkuKnZlcnNpb25cXC8xMi9pXTsgLy8gQ2hlY2tzIGlmIHRoZSBicm93c2VyIGlzIHN1cHBvcnRlZFxuXG5Ecm9wem9uZS5pc0Jyb3dzZXJTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjYXBhYmxlQnJvd3NlciA9IHRydWU7XG5cbiAgaWYgKHdpbmRvdy5GaWxlICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5GaWxlTGlzdCAmJiB3aW5kb3cuQmxvYiAmJiB3aW5kb3cuRm9ybURhdGEgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcikge1xuICAgIGlmICghKFwiY2xhc3NMaXN0XCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIikpKSB7XG4gICAgICBjYXBhYmxlQnJvd3NlciA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQVBJLCBidXQgbWF5IGJlIGJsYWNrbGlzdGVkLlxuICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMyA9IHRydWU7XG4gICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzMyA9IGZhbHNlO1xuICAgICAgdmFyIF9pdGVyYXRvckVycm9yMzMgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMzID0gRHJvcHpvbmUuYmxhY2tsaXN0ZWRCcm93c2Vyc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMzID0gKF9zdGVwMzMgPSBfaXRlcmF0b3IzMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzMgPSB0cnVlKSB7XG4gICAgICAgICAgdmFyIHJlZ2V4ID0gX3N0ZXAzMy52YWx1ZTtcblxuICAgICAgICAgIGlmIChyZWdleC50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7XG4gICAgICAgICAgICBjYXBhYmxlQnJvd3NlciA9IGZhbHNlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzMyA9IHRydWU7XG4gICAgICAgIF9pdGVyYXRvckVycm9yMzMgPSBlcnI7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMzICYmIF9pdGVyYXRvcjMzW1wicmV0dXJuXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjMzW1wicmV0dXJuXCJdKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjMzKSB7XG4gICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjMzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjYXBhYmxlQnJvd3NlciA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNhcGFibGVCcm93c2VyO1xufTtcblxuRHJvcHpvbmUuZGF0YVVSSXRvQmxvYiA9IGZ1bmN0aW9uIChkYXRhVVJJKSB7XG4gIC8vIGNvbnZlcnQgYmFzZTY0IHRvIHJhdyBiaW5hcnkgZGF0YSBoZWxkIGluIGEgc3RyaW5nXG4gIC8vIGRvZXNuJ3QgaGFuZGxlIFVSTEVuY29kZWQgRGF0YVVSSXMgLSBzZWUgU08gYW5zd2VyICM2ODUwMjc2IGZvciBjb2RlIHRoYXQgZG9lcyB0aGlzXG4gIHZhciBieXRlU3RyaW5nID0gYXRvYihkYXRhVVJJLnNwbGl0KCcsJylbMV0pOyAvLyBzZXBhcmF0ZSBvdXQgdGhlIG1pbWUgY29tcG9uZW50XG5cbiAgdmFyIG1pbWVTdHJpbmcgPSBkYXRhVVJJLnNwbGl0KCcsJylbMF0uc3BsaXQoJzonKVsxXS5zcGxpdCgnOycpWzBdOyAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuXG4gIHZhciBhYiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG4gIHZhciBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKHZhciBpID0gMCwgZW5kID0gYnl0ZVN0cmluZy5sZW5ndGgsIGFzYyA9IDAgPD0gZW5kOyBhc2MgPyBpIDw9IGVuZCA6IGkgPj0gZW5kOyBhc2MgPyBpKysgOiBpLS0pIHtcbiAgICBpYVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfSAvLyB3cml0ZSB0aGUgQXJyYXlCdWZmZXIgdG8gYSBibG9iXG5cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge1xuICAgIHR5cGU6IG1pbWVTdHJpbmdcbiAgfSk7XG59OyAvLyBSZXR1cm5zIGFuIGFycmF5IHdpdGhvdXQgdGhlIHJlamVjdGVkIGl0ZW1cblxuXG52YXIgd2l0aG91dCA9IGZ1bmN0aW9uIHdpdGhvdXQobGlzdCwgcmVqZWN0ZWRJdGVtKSB7XG4gIHJldHVybiBsaXN0LmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiBpdGVtICE9PSByZWplY3RlZEl0ZW07XG4gIH0pLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiBpdGVtO1xuICB9KTtcbn07IC8vIGFiYy1kZWZfZ2hpIC0+IGFiY0RlZkdoaVxuXG5cbnZhciBjYW1lbGl6ZSA9IGZ1bmN0aW9uIGNhbWVsaXplKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1fXShcXHcpL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBtYXRjaC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKTtcbiAgfSk7XG59OyAvLyBDcmVhdGVzIGFuIGVsZW1lbnQgZnJvbSBzdHJpbmdcblxuXG5Ecm9wem9uZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgZGl2LmlubmVySFRNTCA9IHN0cmluZztcbiAgcmV0dXJuIGRpdi5jaGlsZE5vZGVzWzBdO1xufTsgLy8gVGVzdHMgaWYgZ2l2ZW4gZWxlbWVudCBpcyBpbnNpZGUgKG9yIHNpbXBseSBpcykgdGhlIGNvbnRhaW5lclxuXG5cbkRyb3B6b25lLmVsZW1lbnRJbnNpZGUgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29udGFpbmVyKSB7XG4gIGlmIChlbGVtZW50ID09PSBjb250YWluZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBDb2ZmZWVzY3JpcHQgZG9lc24ndCBzdXBwb3J0IGRvL3doaWxlIGxvb3BzXG5cblxuICB3aGlsZSAoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgIGlmIChlbGVtZW50ID09PSBjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkRyb3B6b25lLmdldEVsZW1lbnQgPSBmdW5jdGlvbiAoZWwsIG5hbWUpIHtcbiAgdmFyIGVsZW1lbnQ7XG5cbiAgaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgfSBlbHNlIGlmIChlbC5ub2RlVHlwZSAhPSBudWxsKSB7XG4gICAgZWxlbWVudCA9IGVsO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYFwiLmNvbmNhdChuYW1lLCBcImAgb3B0aW9uIHByb3ZpZGVkLiBQbGVhc2UgcHJvdmlkZSBhIENTUyBzZWxlY3RvciBvciBhIHBsYWluIEhUTUwgZWxlbWVudC5cIikpO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5Ecm9wem9uZS5nZXRFbGVtZW50cyA9IGZ1bmN0aW9uIChlbHMsIG5hbWUpIHtcbiAgdmFyIGVsLCBlbGVtZW50cztcblxuICBpZiAoZWxzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBlbGVtZW50cyA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzQgPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMzQgPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjM0ID0gdW5kZWZpbmVkO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IzNCA9IGVsc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjM0ID0gKF9zdGVwMzQgPSBfaXRlcmF0b3IzNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzQgPSB0cnVlKSB7XG4gICAgICAgICAgZWwgPSBfc3RlcDM0LnZhbHVlO1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2godGhpcy5nZXRFbGVtZW50KGVsLCBuYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjM0ID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3IzNCA9IGVycjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzQgJiYgX2l0ZXJhdG9yMzRbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgX2l0ZXJhdG9yMzRbXCJyZXR1cm5cIl0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMzQpIHtcbiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZWxlbWVudHMgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxzID09PSBcInN0cmluZ1wiKSB7XG4gICAgZWxlbWVudHMgPSBbXTtcbiAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjM1ID0gdHJ1ZTtcbiAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzNSA9IGZhbHNlO1xuICAgIHZhciBfaXRlcmF0b3JFcnJvcjM1ID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjM1ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlbHMpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXAzNTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzUgPSAoX3N0ZXAzNSA9IF9pdGVyYXRvcjM1Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zNSA9IHRydWUpIHtcbiAgICAgICAgZWwgPSBfc3RlcDM1LnZhbHVlO1xuICAgICAgICBlbGVtZW50cy5wdXNoKGVsKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9kaWRJdGVyYXRvckVycm9yMzUgPSB0cnVlO1xuICAgICAgX2l0ZXJhdG9yRXJyb3IzNSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzUgJiYgX2l0ZXJhdG9yMzVbXCJyZXR1cm5cIl0gIT0gbnVsbCkge1xuICAgICAgICAgIF9pdGVyYXRvcjM1W1wicmV0dXJuXCJdKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjM1KSB7XG4gICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzNTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChlbHMubm9kZVR5cGUgIT0gbnVsbCkge1xuICAgIGVsZW1lbnRzID0gW2Vsc107XG4gIH1cblxuICBpZiAoZWxlbWVudHMgPT0gbnVsbCB8fCAhZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBgXCIuY29uY2F0KG5hbWUsIFwiYCBvcHRpb24gcHJvdmlkZWQuIFBsZWFzZSBwcm92aWRlIGEgQ1NTIHNlbGVjdG9yLCBhIHBsYWluIEhUTUwgZWxlbWVudCBvciBhIGxpc3Qgb2YgdGhvc2UuXCIpKTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50cztcbn07IC8vIEFza3MgdGhlIHVzZXIgdGhlIHF1ZXN0aW9uIGFuZCBjYWxscyBhY2NlcHRlZCBvciByZWplY3RlZCBhY2NvcmRpbmdseVxuLy9cbi8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGp1c3QgdXNlcyBgd2luZG93LmNvbmZpcm1gIGFuZCB0aGVuIGNhbGxzIHRoZVxuLy8gYXBwcm9wcmlhdGUgY2FsbGJhY2suXG5cblxuRHJvcHpvbmUuY29uZmlybSA9IGZ1bmN0aW9uIChxdWVzdGlvbiwgYWNjZXB0ZWQsIHJlamVjdGVkKSB7XG4gIGlmICh3aW5kb3cuY29uZmlybShxdWVzdGlvbikpIHtcbiAgICByZXR1cm4gYWNjZXB0ZWQoKTtcbiAgfSBlbHNlIGlmIChyZWplY3RlZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHJlamVjdGVkKCk7XG4gIH1cbn07IC8vIFZhbGlkYXRlcyB0aGUgbWltZSB0eXBlIGxpa2UgdGhpczpcbi8vXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvRWxlbWVudC9pbnB1dCNhdHRyLWFjY2VwdFxuXG5cbkRyb3B6b25lLmlzVmFsaWRGaWxlID0gZnVuY3Rpb24gKGZpbGUsIGFjY2VwdGVkRmlsZXMpIHtcbiAgaWYgKCFhY2NlcHRlZEZpbGVzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gSWYgdGhlcmUgYXJlIG5vIGFjY2VwdGVkIG1pbWUgdHlwZXMsIGl0J3MgT0tcblxuXG4gIGFjY2VwdGVkRmlsZXMgPSBhY2NlcHRlZEZpbGVzLnNwbGl0KFwiLFwiKTtcbiAgdmFyIG1pbWVUeXBlID0gZmlsZS50eXBlO1xuICB2YXIgYmFzZU1pbWVUeXBlID0gbWltZVR5cGUucmVwbGFjZSgvXFwvLiokLywgXCJcIik7XG4gIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzYgPSB0cnVlO1xuICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzNiA9IGZhbHNlO1xuICB2YXIgX2l0ZXJhdG9yRXJyb3IzNiA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pdGVyYXRvcjM2ID0gYWNjZXB0ZWRGaWxlc1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwMzY7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjM2ID0gKF9zdGVwMzYgPSBfaXRlcmF0b3IzNi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzYgPSB0cnVlKSB7XG4gICAgICB2YXIgdmFsaWRUeXBlID0gX3N0ZXAzNi52YWx1ZTtcbiAgICAgIHZhbGlkVHlwZSA9IHZhbGlkVHlwZS50cmltKCk7XG5cbiAgICAgIGlmICh2YWxpZFR5cGUuY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih2YWxpZFR5cGUudG9Mb3dlckNhc2UoKSwgZmlsZS5uYW1lLmxlbmd0aCAtIHZhbGlkVHlwZS5sZW5ndGgpICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKC9cXC9cXCokLy50ZXN0KHZhbGlkVHlwZSkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBzb21ldGhpbmcgbGlrZSBhIGltYWdlLyogbWltZSB0eXBlXG4gICAgICAgIGlmIChiYXNlTWltZVR5cGUgPT09IHZhbGlkVHlwZS5yZXBsYWNlKC9cXC8uKiQvLCBcIlwiKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobWltZVR5cGUgPT09IHZhbGlkVHlwZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZGlkSXRlcmF0b3JFcnJvcjM2ID0gdHJ1ZTtcbiAgICBfaXRlcmF0b3JFcnJvcjM2ID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zNiAmJiBfaXRlcmF0b3IzNltcInJldHVyblwiXSAhPSBudWxsKSB7XG4gICAgICAgIF9pdGVyYXRvcjM2W1wicmV0dXJuXCJdKCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjM2KSB7XG4gICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTsgLy8gQXVnbWVudCBqUXVlcnlcblxuXG5pZiAodHlwZW9mIGpRdWVyeSAhPT0gJ3VuZGVmaW5lZCcgJiYgalF1ZXJ5ICE9PSBudWxsKSB7XG4gIGpRdWVyeS5mbi5kcm9wem9uZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbmV3IERyb3B6b25lKHRoaXMsIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9O1xufVxuXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlICE9PSBudWxsKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gRHJvcHpvbmU7XG59IGVsc2Uge1xuICB3aW5kb3cuRHJvcHpvbmUgPSBEcm9wem9uZTtcbn0gLy8gRHJvcHpvbmUgZmlsZSBzdGF0dXMgY29kZXNcblxuXG5Ecm9wem9uZS5BRERFRCA9IFwiYWRkZWRcIjtcbkRyb3B6b25lLlFVRVVFRCA9IFwicXVldWVkXCI7IC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gTm93LCBpZiBhIGZpbGUgaXMgYWNjZXB0ZWQsIGl0J3MgZWl0aGVyIHF1ZXVlZFxuLy8gb3IgdXBsb2FkaW5nLlxuXG5Ecm9wem9uZS5BQ0NFUFRFRCA9IERyb3B6b25lLlFVRVVFRDtcbkRyb3B6b25lLlVQTE9BRElORyA9IFwidXBsb2FkaW5nXCI7XG5Ecm9wem9uZS5QUk9DRVNTSU5HID0gRHJvcHpvbmUuVVBMT0FESU5HOyAvLyBhbGlhc1xuXG5Ecm9wem9uZS5DQU5DRUxFRCA9IFwiY2FuY2VsZWRcIjtcbkRyb3B6b25lLkVSUk9SID0gXCJlcnJvclwiO1xuRHJvcHpvbmUuU1VDQ0VTUyA9IFwic3VjY2Vzc1wiO1xuLypcblxuIEJ1Z2ZpeCBmb3IgaU9TIDYgYW5kIDdcbiBTb3VyY2U6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTE5MjkwOTkvaHRtbDUtY2FudmFzLWRyYXdpbWFnZS1yYXRpby1idWctaW9zXG4gYmFzZWQgb24gdGhlIHdvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3N0b21pdGEvaW9zLWltYWdlZmlsZS1tZWdhcGl4ZWxcblxuICovXG4vLyBEZXRlY3RpbmcgdmVydGljYWwgc3F1YXNoIGluIGxvYWRlZCBpbWFnZS5cbi8vIEZpeGVzIGEgYnVnIHdoaWNoIHNxdWFzaCBpbWFnZSB2ZXJ0aWNhbGx5IHdoaWxlIGRyYXdpbmcgaW50byBjYW52YXMgZm9yIHNvbWUgaW1hZ2VzLlxuLy8gVGhpcyBpcyBhIGJ1ZyBpbiBpT1M2IGRldmljZXMuIFRoaXMgZnVuY3Rpb24gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc3RvbWl0YS9pb3MtaW1hZ2VmaWxlLW1lZ2FwaXhlbFxuXG52YXIgZGV0ZWN0VmVydGljYWxTcXVhc2ggPSBmdW5jdGlvbiBkZXRlY3RWZXJ0aWNhbFNxdWFzaChpbWcpIHtcbiAgdmFyIGl3ID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgdmFyIGloID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSAxO1xuICBjYW52YXMuaGVpZ2h0ID0gaWg7XG4gIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCk7XG5cbiAgdmFyIF9jdHgkZ2V0SW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgxLCAwLCAxLCBpaCksXG4gICAgICBkYXRhID0gX2N0eCRnZXRJbWFnZURhdGEuZGF0YTsgLy8gc2VhcmNoIGltYWdlIGVkZ2UgcGl4ZWwgcG9zaXRpb24gaW4gY2FzZSBpdCBpcyBzcXVhc2hlZCB2ZXJ0aWNhbGx5LlxuXG5cbiAgdmFyIHN5ID0gMDtcbiAgdmFyIGV5ID0gaWg7XG4gIHZhciBweSA9IGloO1xuXG4gIHdoaWxlIChweSA+IHN5KSB7XG4gICAgdmFyIGFscGhhID0gZGF0YVsocHkgLSAxKSAqIDQgKyAzXTtcblxuICAgIGlmIChhbHBoYSA9PT0gMCkge1xuICAgICAgZXkgPSBweTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3kgPSBweTtcbiAgICB9XG5cbiAgICBweSA9IGV5ICsgc3kgPj4gMTtcbiAgfVxuXG4gIHZhciByYXRpbyA9IHB5IC8gaWg7XG5cbiAgaWYgKHJhdGlvID09PSAwKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJhdGlvO1xuICB9XG59OyAvLyBBIHJlcGxhY2VtZW50IGZvciBjb250ZXh0LmRyYXdJbWFnZVxuLy8gKGFyZ3MgYXJlIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKS5cblxuXG52YXIgZHJhd0ltYWdlSU9TRml4ID0gZnVuY3Rpb24gZHJhd0ltYWdlSU9TRml4KGN0eCwgaW1nLCBzeCwgc3ksIHN3LCBzaCwgZHgsIGR5LCBkdywgZGgpIHtcbiAgdmFyIHZlcnRTcXVhc2hSYXRpbyA9IGRldGVjdFZlcnRpY2FsU3F1YXNoKGltZyk7XG4gIHJldHVybiBjdHguZHJhd0ltYWdlKGltZywgc3gsIHN5LCBzdywgc2gsIGR4LCBkeSwgZHcsIGRoIC8gdmVydFNxdWFzaFJhdGlvKTtcbn07IC8vIEJhc2VkIG9uIE1pbmlmeUpwZWdcbi8vIFNvdXJjZTogaHR0cDovL3d3dy5wZXJyeS5jei9maWxlcy9FeGlmUmVzdG9yZXIuanNcbi8vIGh0dHA6Ly9lbGljb24uYmxvZzU3LmZjMi5jb20vYmxvZy1lbnRyeS0yMDYuaHRtbFxuXG5cbnZhciBFeGlmUmVzdG9yZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEV4aWZSZXN0b3JlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeGlmUmVzdG9yZSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhpZlJlc3RvcmUsIG51bGwsIFt7XG4gICAga2V5OiBcImluaXRDbGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0Q2xhc3MoKSB7XG4gICAgICB0aGlzLktFWV9TVFIgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmNvZGU2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmNvZGU2NChpbnB1dCkge1xuICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgdmFyIGNocjEgPSB1bmRlZmluZWQ7XG4gICAgICB2YXIgY2hyMiA9IHVuZGVmaW5lZDtcbiAgICAgIHZhciBjaHIzID0gJyc7XG4gICAgICB2YXIgZW5jMSA9IHVuZGVmaW5lZDtcbiAgICAgIHZhciBlbmMyID0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGVuYzMgPSB1bmRlZmluZWQ7XG4gICAgICB2YXIgZW5jNCA9ICcnO1xuICAgICAgdmFyIGkgPSAwO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBjaHIxID0gaW5wdXRbaSsrXTtcbiAgICAgICAgY2hyMiA9IGlucHV0W2krK107XG4gICAgICAgIGNocjMgPSBpbnB1dFtpKytdO1xuICAgICAgICBlbmMxID0gY2hyMSA+PiAyO1xuICAgICAgICBlbmMyID0gKGNocjEgJiAzKSA8PCA0IHwgY2hyMiA+PiA0O1xuICAgICAgICBlbmMzID0gKGNocjIgJiAxNSkgPDwgMiB8IGNocjMgPj4gNjtcbiAgICAgICAgZW5jNCA9IGNocjMgJiA2MztcblxuICAgICAgICBpZiAoaXNOYU4oY2hyMikpIHtcbiAgICAgICAgICBlbmMzID0gZW5jNCA9IDY0O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKGNocjMpKSB7XG4gICAgICAgICAgZW5jNCA9IDY0O1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgdGhpcy5LRVlfU1RSLmNoYXJBdChlbmMxKSArIHRoaXMuS0VZX1NUUi5jaGFyQXQoZW5jMikgKyB0aGlzLktFWV9TVFIuY2hhckF0KGVuYzMpICsgdGhpcy5LRVlfU1RSLmNoYXJBdChlbmM0KTtcbiAgICAgICAgY2hyMSA9IGNocjIgPSBjaHIzID0gJyc7XG4gICAgICAgIGVuYzEgPSBlbmMyID0gZW5jMyA9IGVuYzQgPSAnJztcblxuICAgICAgICBpZiAoIShpIDwgaW5wdXQubGVuZ3RoKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc3RvcmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzdG9yZShvcmlnRmlsZUJhc2U2NCwgcmVzaXplZEZpbGVCYXNlNjQpIHtcbiAgICAgIGlmICghb3JpZ0ZpbGVCYXNlNjQubWF0Y2goJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc2l6ZWRGaWxlQmFzZTY0O1xuICAgICAgfVxuXG4gICAgICB2YXIgcmF3SW1hZ2UgPSB0aGlzLmRlY29kZTY0KG9yaWdGaWxlQmFzZTY0LnJlcGxhY2UoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJywgJycpKTtcbiAgICAgIHZhciBzZWdtZW50cyA9IHRoaXMuc2xpY2UyU2VnbWVudHMocmF3SW1hZ2UpO1xuICAgICAgdmFyIGltYWdlID0gdGhpcy5leGlmTWFuaXB1bGF0aW9uKHJlc2l6ZWRGaWxlQmFzZTY0LCBzZWdtZW50cyk7XG4gICAgICByZXR1cm4gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiLmNvbmNhdCh0aGlzLmVuY29kZTY0KGltYWdlKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4aWZNYW5pcHVsYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZXhpZk1hbmlwdWxhdGlvbihyZXNpemVkRmlsZUJhc2U2NCwgc2VnbWVudHMpIHtcbiAgICAgIHZhciBleGlmQXJyYXkgPSB0aGlzLmdldEV4aWZBcnJheShzZWdtZW50cyk7XG4gICAgICB2YXIgbmV3SW1hZ2VBcnJheSA9IHRoaXMuaW5zZXJ0RXhpZihyZXNpemVkRmlsZUJhc2U2NCwgZXhpZkFycmF5KTtcbiAgICAgIHZhciBhQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobmV3SW1hZ2VBcnJheSk7XG4gICAgICByZXR1cm4gYUJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RXhpZkFycmF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEV4aWZBcnJheShzZWdtZW50cykge1xuICAgICAgdmFyIHNlZyA9IHVuZGVmaW5lZDtcbiAgICAgIHZhciB4ID0gMDtcblxuICAgICAgd2hpbGUgKHggPCBzZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgc2VnID0gc2VnbWVudHNbeF07XG5cbiAgICAgICAgaWYgKHNlZ1swXSA9PT0gMjU1ICYgc2VnWzFdID09PSAyMjUpIHtcbiAgICAgICAgICByZXR1cm4gc2VnO1xuICAgICAgICB9XG5cbiAgICAgICAgeCsrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluc2VydEV4aWZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0RXhpZihyZXNpemVkRmlsZUJhc2U2NCwgZXhpZkFycmF5KSB7XG4gICAgICB2YXIgaW1hZ2VEYXRhID0gcmVzaXplZEZpbGVCYXNlNjQucmVwbGFjZSgnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnLCAnJyk7XG4gICAgICB2YXIgYnVmID0gdGhpcy5kZWNvZGU2NChpbWFnZURhdGEpO1xuICAgICAgdmFyIHNlcGFyYXRlUG9pbnQgPSBidWYuaW5kZXhPZigyNTUsIDMpO1xuICAgICAgdmFyIG1hZSA9IGJ1Zi5zbGljZSgwLCBzZXBhcmF0ZVBvaW50KTtcbiAgICAgIHZhciBhdG8gPSBidWYuc2xpY2Uoc2VwYXJhdGVQb2ludCk7XG4gICAgICB2YXIgYXJyYXkgPSBtYWU7XG4gICAgICBhcnJheSA9IGFycmF5LmNvbmNhdChleGlmQXJyYXkpO1xuICAgICAgYXJyYXkgPSBhcnJheS5jb25jYXQoYXRvKTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2xpY2UyU2VnbWVudHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2xpY2UyU2VnbWVudHMocmF3SW1hZ2VBcnJheSkge1xuICAgICAgdmFyIGhlYWQgPSAwO1xuICAgICAgdmFyIHNlZ21lbnRzID0gW107XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBsZW5ndGg7XG5cbiAgICAgICAgaWYgKHJhd0ltYWdlQXJyYXlbaGVhZF0gPT09IDI1NSAmIHJhd0ltYWdlQXJyYXlbaGVhZCArIDFdID09PSAyMTgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyYXdJbWFnZUFycmF5W2hlYWRdID09PSAyNTUgJiByYXdJbWFnZUFycmF5W2hlYWQgKyAxXSA9PT0gMjE2KSB7XG4gICAgICAgICAgaGVhZCArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxlbmd0aCA9IHJhd0ltYWdlQXJyYXlbaGVhZCArIDJdICogMjU2ICsgcmF3SW1hZ2VBcnJheVtoZWFkICsgM107XG4gICAgICAgICAgdmFyIGVuZFBvaW50ID0gaGVhZCArIGxlbmd0aCArIDI7XG4gICAgICAgICAgdmFyIHNlZyA9IHJhd0ltYWdlQXJyYXkuc2xpY2UoaGVhZCwgZW5kUG9pbnQpO1xuICAgICAgICAgIHNlZ21lbnRzLnB1c2goc2VnKTtcbiAgICAgICAgICBoZWFkID0gZW5kUG9pbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGVhZCA+IHJhd0ltYWdlQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlZ21lbnRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWNvZGU2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZWNvZGU2NChpbnB1dCkge1xuICAgICAgdmFyIG91dHB1dCA9ICcnO1xuICAgICAgdmFyIGNocjEgPSB1bmRlZmluZWQ7XG4gICAgICB2YXIgY2hyMiA9IHVuZGVmaW5lZDtcbiAgICAgIHZhciBjaHIzID0gJyc7XG4gICAgICB2YXIgZW5jMSA9IHVuZGVmaW5lZDtcbiAgICAgIHZhciBlbmMyID0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGVuYzMgPSB1bmRlZmluZWQ7XG4gICAgICB2YXIgZW5jNCA9ICcnO1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgdmFyIGJ1ZiA9IFtdOyAvLyByZW1vdmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IEEtWiwgYS16LCAwLTksICssIC8sIG9yID1cblxuICAgICAgdmFyIGJhc2U2NHRlc3QgPSAvW15BLVphLXowLTlcXCtcXC9cXD1dL2c7XG5cbiAgICAgIGlmIChiYXNlNjR0ZXN0LmV4ZWMoaW5wdXQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlcmUgd2VyZSBpbnZhbGlkIGJhc2U2NCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dCB0ZXh0LlxcblZhbGlkIGJhc2U2NCBjaGFyYWN0ZXJzIGFyZSBBLVosIGEteiwgMC05LCBcXCcrXFwnLCBcXCcvXFwnLGFuZCBcXCc9XFwnXFxuRXhwZWN0IGVycm9ycyBpbiBkZWNvZGluZy4nKTtcbiAgICAgIH1cblxuICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9bXkEtWmEtejAtOVxcK1xcL1xcPV0vZywgJycpO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBlbmMxID0gdGhpcy5LRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgICAgICBlbmMyID0gdGhpcy5LRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgICAgICBlbmMzID0gdGhpcy5LRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgICAgICBlbmM0ID0gdGhpcy5LRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgICAgICBjaHIxID0gZW5jMSA8PCAyIHwgZW5jMiA+PiA0O1xuICAgICAgICBjaHIyID0gKGVuYzIgJiAxNSkgPDwgNCB8IGVuYzMgPj4gMjtcbiAgICAgICAgY2hyMyA9IChlbmMzICYgMykgPDwgNiB8IGVuYzQ7XG4gICAgICAgIGJ1Zi5wdXNoKGNocjEpO1xuXG4gICAgICAgIGlmIChlbmMzICE9PSA2NCkge1xuICAgICAgICAgIGJ1Zi5wdXNoKGNocjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVuYzQgIT09IDY0KSB7XG4gICAgICAgICAgYnVmLnB1c2goY2hyMyk7XG4gICAgICAgIH1cblxuICAgICAgICBjaHIxID0gY2hyMiA9IGNocjMgPSAnJztcbiAgICAgICAgZW5jMSA9IGVuYzIgPSBlbmMzID0gZW5jNCA9ICcnO1xuXG4gICAgICAgIGlmICghKGkgPCBpbnB1dC5sZW5ndGgpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXhpZlJlc3RvcmU7XG59KCk7XG5cbkV4aWZSZXN0b3JlLmluaXRDbGFzcygpO1xuLypcbiAqIGNvbnRlbnRsb2FkZWQuanNcbiAqXG4gKiBBdXRob3I6IERpZWdvIFBlcmluaSAoZGllZ28ucGVyaW5pIGF0IGdtYWlsLmNvbSlcbiAqIFN1bW1hcnk6IGNyb3NzLWJyb3dzZXIgd3JhcHBlciBmb3IgRE9NQ29udGVudExvYWRlZFxuICogVXBkYXRlZDogMjAxMDEwMjBcbiAqIExpY2Vuc2U6IE1JVFxuICogVmVyc2lvbjogMS4yXG4gKlxuICogVVJMOlxuICogaHR0cDovL2phdmFzY3JpcHQubndib3guY29tL0NvbnRlbnRMb2FkZWQvXG4gKiBodHRwOi8vamF2YXNjcmlwdC5ud2JveC5jb20vQ29udGVudExvYWRlZC9NSVQtTElDRU5TRVxuICovXG4vLyBAd2luIHdpbmRvdyByZWZlcmVuY2Vcbi8vIEBmbiBmdW5jdGlvbiByZWZlcmVuY2VcblxudmFyIGNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbiBjb250ZW50TG9hZGVkKHdpbiwgZm4pIHtcbiAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgdmFyIHRvcCA9IHRydWU7XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgdmFyIGFkZCA9IGRvYy5hZGRFdmVudExpc3RlbmVyID8gXCJhZGRFdmVudExpc3RlbmVyXCIgOiBcImF0dGFjaEV2ZW50XCI7XG4gIHZhciByZW0gPSBkb2MuYWRkRXZlbnRMaXN0ZW5lciA/IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiIDogXCJkZXRhY2hFdmVudFwiO1xuICB2YXIgcHJlID0gZG9jLmFkZEV2ZW50TGlzdGVuZXIgPyBcIlwiIDogXCJvblwiO1xuXG4gIHZhciBpbml0ID0gZnVuY3Rpb24gaW5pdChlKSB7XG4gICAgaWYgKGUudHlwZSA9PT0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgJiYgZG9jLnJlYWR5U3RhdGUgIT09IFwiY29tcGxldGVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIChlLnR5cGUgPT09IFwibG9hZFwiID8gd2luIDogZG9jKVtyZW1dKHByZSArIGUudHlwZSwgaW5pdCwgZmFsc2UpO1xuXG4gICAgaWYgKCFkb25lICYmIChkb25lID0gdHJ1ZSkpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHdpbiwgZS50eXBlIHx8IGUpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgcG9sbCA9IGZ1bmN0aW9uIHBvbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJvb3QuZG9TY3JvbGwoXCJsZWZ0XCIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHNldFRpbWVvdXQocG9sbCwgNTApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBpbml0KFwicG9sbFwiKTtcbiAgfTtcblxuICBpZiAoZG9jLnJlYWR5U3RhdGUgIT09IFwiY29tcGxldGVcIikge1xuICAgIGlmIChkb2MuY3JlYXRlRXZlbnRPYmplY3QgJiYgcm9vdC5kb1Njcm9sbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdG9wID0gIXdpbi5mcmFtZUVsZW1lbnQ7XG4gICAgICB9IGNhdGNoIChlcnJvcikge31cblxuICAgICAgaWYgKHRvcCkge1xuICAgICAgICBwb2xsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jW2FkZF0ocHJlICsgXCJET01Db250ZW50TG9hZGVkXCIsIGluaXQsIGZhbHNlKTtcbiAgICBkb2NbYWRkXShwcmUgKyBcInJlYWR5c3RhdGVjaGFuZ2VcIiwgaW5pdCwgZmFsc2UpO1xuICAgIHJldHVybiB3aW5bYWRkXShwcmUgKyBcImxvYWRcIiwgaW5pdCwgZmFsc2UpO1xuICB9XG59OyAvLyBBcyBhIHNpbmdsZSBmdW5jdGlvbiB0byBiZSBhYmxlIHRvIHdyaXRlIHRlc3RzLlxuXG5cbkRyb3B6b25lLl9hdXRvRGlzY292ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKERyb3B6b25lLmF1dG9EaXNjb3Zlcikge1xuICAgIHJldHVybiBEcm9wem9uZS5kaXNjb3ZlcigpO1xuICB9XG59O1xuXG5jb250ZW50TG9hZGVkKHdpbmRvdywgRHJvcHpvbmUuX2F1dG9EaXNjb3ZlckZ1bmN0aW9uKTtcblxuZnVuY3Rpb24gX19ndWFyZF9fKHZhbHVlLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwgPyB0cmFuc2Zvcm0odmFsdWUpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBfX2d1YXJkTWV0aG9kX18ob2JqLCBtZXRob2ROYW1lLCB0cmFuc2Zvcm0pIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICd1bmRlZmluZWQnICYmIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqW21ldGhvZE5hbWVdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybShvYmosIG1ldGhvZE5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxufS5jYWxsKHdpbmRvdykpO1xuIiwiLyoqKiBJTVBPUlRTIEZST00gaW1wb3J0cy1sb2FkZXIgKioqL1xuXG4oZnVuY3Rpb24oZGVmaW5lKSB7XG4vLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIERhdGUuVVRDIGZ1bmN0aW9uIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBhcmdzWzBdID0geSArIDQwMDtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmdzKSk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhclxuICAgIGZ1bmN0aW9uIGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LFxuICAgICAgICAgICAgLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAtLSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZFxuICAgICAgICAgICAgZndkbHcgPSAoNyArIGNyZWF0ZVVUQ0RhdGUoeWVhciwgMCwgZndkKS5nZXRVVENEYXkoKSAtIGRvdykgJSA3O1xuXG4gICAgICAgIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5XG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtzKHllYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBsb2NhbFdlZWtkYXkgPSAoNyArIHdlZWtkYXkgLSBkb3cpICUgNyxcbiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldCxcbiAgICAgICAgICAgIHJlc1llYXIsIHJlc0RheU9mWWVhcjtcblxuICAgICAgICBpZiAoZGF5T2ZZZWFyIDw9IDApIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyIC0gMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheXNJblllYXIocmVzWWVhcikgKyBkYXlPZlllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyKSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgKyAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgICAgICBkYXlPZlllYXI6IHJlc0RheU9mWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldChtb20ueWVhcigpLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrID0gTWF0aC5mbG9vcigobW9tLmRheU9mWWVhcigpIC0gd2Vla09mZnNldCAtIDEpIC8gNykgKyAxLFxuICAgICAgICAgICAgcmVzV2VlaywgcmVzWWVhcjtcblxuICAgICAgICBpZiAod2VlayA8IDEpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrICsgd2Vla3NJblllYXIocmVzWWVhciwgZG93LCBkb3kpO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWsgPiB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3ZWVrOiByZXNXZWVrLFxuICAgICAgICAgICAgeWVhcjogcmVzWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtzSW5ZZWFyKHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWtPZmZzZXROZXh0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIgKyAxLCBkb3csIGRveSk7XG4gICAgICAgIHJldHVybiAoZGF5c0luWWVhcih5ZWFyKSAtIHdlZWtPZmZzZXQgKyB3ZWVrT2Zmc2V0TmV4dCkgLyA3O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd3JywgWyd3dycsIDJdLCAnd28nLCAnd2VlaycpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdXJywgWydXVycsIDJdLCAnV28nLCAnaXNvV2VlaycpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrJywgJ3cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWsnLCAnVycpO1xuXG4gICAgLy8gUFJJT1JJVElFU1xuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrJywgNSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrJywgNSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd3JywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignd3cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignVycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDEpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWsgKG1vbSkge1xuICAgICAgICByZXR1cm4gd2Vla09mWWVhcihtb20sIHRoaXMuX3dlZWsuZG93LCB0aGlzLl93ZWVrLmRveSkud2VlaztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWsgPSB7XG4gICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZXZWVrICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95O1xuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gd2Vla09mWWVhcih0aGlzLCAxLCA0KS53ZWVrO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2QnLCAwLCAnZG8nLCAnZGF5Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdlJywgMCwgMCwgJ3dlZWtkYXknKTtcbiAgICBhZGRGb3JtYXRUb2tlbignRScsIDAsIDAsICdpc29XZWVrZGF5Jyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheScsICdkJyk7XG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrZGF5JywgJ2UnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtkYXknLCAnRScpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrZGF5JywgMTEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignZCcsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignRScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNNaW5SZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkXG4gICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHdlZWsuZCA9IHdlZWtkYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2QnLCAnZScsICdFJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCA9IGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpICUgNyB8fCA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05hTihpbnB1dCkgPyBudWxsIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gTE9DQUxFU1xuICAgIGZ1bmN0aW9uIHNoaWZ0V2Vla2RheXMgKHdzLCBuKSB7XG4gICAgICAgIHJldHVybiB3cy5zbGljZShuLCA3KS5jb25jYXQod3Muc2xpY2UoMCwgbikpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzWyhtICYmIG0gIT09IHRydWUgJiYgdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChmb3JtYXQpKSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXMod2Vla2RheXMsIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiAobSkgPyB3ZWVrZGF5c1ttLmRheSgpXSA6IHdlZWtkYXlzO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydCAobSkge1xuICAgICAgICByZXR1cm4gKG0gPT09IHRydWUpID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c1Nob3J0LCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogKG0pID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzU2hvcnQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c01pbiAobSkge1xuICAgICAgICByZXR1cm4gKG0gPT09IHRydWUpID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c01pbiwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmUgKyBkb3c7XG4gICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSBkb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlZWsgPCAxIHx8IHdlZWsgPiB3ZWVrc0luWWVhcih3ZWVrWWVhciwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAod2Vla2RheU92ZXJmbG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtkYXkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVtcCA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gdGVtcC55ZWFyO1xuICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0ZW1wLmRheU9mWWVhcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pLSg/OlxcZFxcZC1cXGRcXGR8V1xcZFxcZC1cXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbXFwrXFwtXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC87XG4gICAgdmFyIGJhc2ljSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pKD86XFxkXFxkXFxkXFxkfFdcXGRcXGRcXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzpcXGRcXGQoPzpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuXG4gICAgdmFyIHR6UmVnZXggPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy87XG5cbiAgICB2YXIgaXNvRGF0ZXMgPSBbXG4gICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cXGR7Nn0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICBbJ1lZWVktTU0tREQnLCAvXFxkezR9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXFxkezR9LVdcXGRcXGQtXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVycsIC9cXGR7NH0tV1xcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZLURERCcsIC9cXGR7NH0tXFxkezN9L10sXG4gICAgICAgIFsnWVlZWS1NTScsIC9cXGR7NH0tXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlZWU1NREQnLCAvWystXVxcZHsxMH0vXSxcbiAgICAgICAgWydZWVlZTU1ERCcsIC9cXGR7OH0vXSxcbiAgICAgICAgLy8gWVlZWU1NIGlzIE5PVCBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZFxuICAgICAgICBbJ0dHR0dbV11XV0UnLCAvXFxkezR9V1xcZHszfS9dLFxuICAgICAgICBbJ0dHR0dbV11XVycsIC9cXGR7NH1XXFxkezJ9LywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlEREQnLCAvXFxkezd9L11cbiAgICBdO1xuXG4gICAgLy8gaXNvIHRpbWUgZm9ybWF0cyBhbmQgcmVnZXhlc1xuICAgIHZhciBpc29UaW1lcyA9IFtcbiAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzLFNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgIFsnSEg6bW0nLCAvXFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIbW1zcy5TU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISG1tc3MsU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIbW1zcycsIC9cXGRcXGRcXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISG1tJywgL1xcZFxcZFxcZFxcZC9dLFxuICAgICAgICBbJ0hIJywgL1xcZFxcZC9dXG4gICAgXTtcblxuICAgIHZhciBhc3BOZXRKc29uUmVnZXggPSAvXlxcLz9EYXRlXFwoKFxcLT9cXGQrKS9pO1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgbCxcbiAgICAgICAgICAgIHN0cmluZyA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIG1hdGNoID0gZXh0ZW5kZWRJc29SZWdleC5leGVjKHN0cmluZykgfHwgYmFzaWNJc29SZWdleC5leGVjKHN0cmluZyksXG4gICAgICAgICAgICBhbGxvd1RpbWUsIGRhdGVGb3JtYXQsIHRpbWVGb3JtYXQsIHR6Rm9ybWF0O1xuXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaXNvID0gdHJ1ZTtcblxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpc29EYXRlc1tpXVsxXS5leGVjKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ID0gaXNvRGF0ZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgIGFsbG93VGltZSA9IGlzb0RhdGVzW2ldWzJdICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFszXSkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29UaW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzb1RpbWVzW2ldWzFdLmV4ZWMobWF0Y2hbM10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaFsyXSBzaG91bGQgYmUgJ1QnIG9yIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ID0gKG1hdGNoWzJdIHx8ICcgJykgKyBpc29UaW1lc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aW1lRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFsbG93VGltZSAmJiB0aW1lRm9ybWF0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbNF0pIHtcbiAgICAgICAgICAgICAgICBpZiAodHpSZWdleC5leGVjKG1hdGNoWzRdKSkge1xuICAgICAgICAgICAgICAgICAgICB0ekZvcm1hdCA9ICdaJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZy5fZiA9IGRhdGVGb3JtYXQgKyAodGltZUZvcm1hdCB8fCAnJykgKyAodHpGb3JtYXQgfHwgJycpO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSRkMgMjgyMiByZWdleDogRm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zXG4gICAgdmFyIHJmYzI4MjIgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9cXHMpPyhcXGR7MSwyfSlcXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXFxzKFxcZHsyLDR9KVxccyhcXGRcXGQpOihcXGRcXGQpKD86OihcXGRcXGQpKT9cXHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cXGR7NH0pKSQvO1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyh5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgdW50cnVuY2F0ZVllYXIoeWVhclN0ciksXG4gICAgICAgICAgICBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0ciksXG4gICAgICAgICAgICBwYXJzZUludChkYXlTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGhvdXJTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KG1pbnV0ZVN0ciwgMTApXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHNlY29uZFN0cikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VJbnQoc2Vjb25kU3RyLCAxMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSB7XG4gICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoeWVhclN0ciwgMTApO1xuICAgICAgICBpZiAoeWVhciA8PSA0OSkge1xuICAgICAgICAgICAgcmV0dXJuIDIwMDAgKyB5ZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKHllYXIgPD0gOTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTkwMCArIHllYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHllYXI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAgICAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9cXChbXildKlxcKXxbXFxuXFx0XS9nLCAnICcpLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCAnICcpLnJlcGxhY2UoL15cXHNcXHMqLywgJycpLnJlcGxhY2UoL1xcc1xccyokLywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrV2Vla2RheSh3ZWVrZGF5U3RyLCBwYXJzZWRJbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmICh3ZWVrZGF5U3RyKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZXBsYWNlIHRoZSB2YW5pbGxhIEpTIERhdGUgb2JqZWN0IHdpdGggYW4gaW5kZXBlbnRlbnQgZGF5LW9mLXdlZWsgY2hlY2suXG4gICAgICAgICAgICB2YXIgd2Vla2RheVByb3ZpZGVkID0gZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSxcbiAgICAgICAgICAgICAgICB3ZWVrZGF5QWN0dWFsID0gbmV3IERhdGUocGFyc2VkSW5wdXRbMF0sIHBhcnNlZElucHV0WzFdLCBwYXJzZWRJbnB1dFsyXSkuZ2V0RGF5KCk7XG4gICAgICAgICAgICBpZiAod2Vla2RheVByb3ZpZGVkICE9PSB3ZWVrZGF5QWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIG9ic09mZnNldHMgPSB7XG4gICAgICAgIFVUOiAwLFxuICAgICAgICBHTVQ6IDAsXG4gICAgICAgIEVEVDogLTQgKiA2MCxcbiAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICBDRFQ6IC01ICogNjAsXG4gICAgICAgIENTVDogLTYgKiA2MCxcbiAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICBNU1Q6IC03ICogNjAsXG4gICAgICAgIFBEVDogLTcgKiA2MCxcbiAgICAgICAgUFNUOiAtOCAqIDYwXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChvYnNPZmZzZXQsIG1pbGl0YXJ5T2Zmc2V0LCBudW1PZmZzZXQpIHtcbiAgICAgICAgaWYgKG9ic09mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgICAgICAgfSBlbHNlIGlmIChtaWxpdGFyeU9mZnNldCkge1xuICAgICAgICAgICAgLy8gdGhlIG9ubHkgYWxsb3dlZCBtaWxpdGFyeSB0eiBpcyBaXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBobSA9IHBhcnNlSW50KG51bU9mZnNldCwgMTApO1xuICAgICAgICAgICAgdmFyIG0gPSBobSAlIDEwMCwgaCA9IChobSAtIG0pIC8gMTAwO1xuICAgICAgICAgICAgcmV0dXJuIGggKiA2MCArIG07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGFuZCB0aW1lIGZyb20gcmVmIDI4MjIgZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJmYzI4MjIuZXhlYyhwcmVwcm9jZXNzUkZDMjgyMihjb25maWcuX2kpKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB2YXIgcGFyc2VkQXJyYXkgPSBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKG1hdGNoWzRdLCBtYXRjaFszXSwgbWF0Y2hbMl0sIG1hdGNoWzVdLCBtYXRjaFs2XSwgbWF0Y2hbN10pO1xuICAgICAgICAgICAgaWYgKCFjaGVja1dlZWtkYXkobWF0Y2hbMV0sIHBhcnNlZEFycmF5LCBjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25maWcuX2EgPSBwYXJzZWRBcnJheTtcbiAgICAgICAgICAgIGNvbmZpZy5fdHptID0gY2FsY3VsYXRlT2Zmc2V0KG1hdGNoWzhdLCBtYXRjaFs5XSwgbWF0Y2hbMTBdKTtcblxuICAgICAgICAgICAgY29uZmlnLl9kID0gY3JlYXRlVVRDRGF0ZS5hcHBseShudWxsLCBjb25maWcuX2EpO1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucmZjMjgyMiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0IG9yIGZhbGxiYWNrXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZyhjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcuX2kpO1xuXG4gICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5hbCBhdHRlbXB0LCB1c2UgSW5wdXQgRmFsbGJhY2tcbiAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICB9XG5cbiAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3ZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCAnICtcbiAgICAgICAgJ3doaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9ybWF0cyBhcmUgJyArXG4gICAgICAgICdkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byAnICtcbiAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBJU08gc3RhbmRhcmRcbiAgICBob29rcy5JU09fODYwMSA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIFJGQyAyODIyIGZvcm1cbiAgICBob29rcy5SRkNfMjgyMiA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZ1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKSB7XG4gICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJldmVudCBjaXJjdWxhciBkZXBzXG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLklTT184NjAxKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuUkZDXzI4MjIpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnLl9hID0gW107XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVpdGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYFxuICAgICAgICB2YXIgc3RyaW5nID0gJycgKyBjb25maWcuX2ksXG4gICAgICAgICAgICBpLCBwYXJzZWRJbnB1dCwgdG9rZW5zLCB0b2tlbiwgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMDtcblxuICAgICAgICB0b2tlbnMgPSBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICBwYXJzZWRJbnB1dCA9IChzdHJpbmcubWF0Y2goZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpKSB8fCBbXSlbMF07XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndG9rZW4nLCB0b2tlbiwgJ3BhcnNlZElucHV0JywgcGFyc2VkSW5wdXQsXG4gICAgICAgICAgICAvLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCArPSBwYXJzZWRJbnB1dC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuXG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBwYXJzZWRJbnB1dCwgY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmdcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuY2hhcnNMZWZ0T3ZlciA9IHN0cmluZ0xlbmd0aCAtIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGg7XG4gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMgPD0gMTJcbiAgICAgICAgaWYgKGNvbmZpZy5fYVtIT1VSXSA8PSAxMiAmJlxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnBhcnNlZERhdGVQYXJ0cyA9IGNvbmZpZy5fYS5zbGljZSgwKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykubWVyaWRpZW0gPSBjb25maWcuX21lcmlkaWVtO1xuICAgICAgICAvLyBoYW5kbGUgbWVyaWRpZW1cbiAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gbWVyaWRpZW1GaXhXcmFwKGNvbmZpZy5fbG9jYWxlLCBjb25maWcuX2FbSE9VUl0sIGNvbmZpZy5fbWVyaWRpZW0pO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbUZpeFdyYXAgKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG5cbiAgICAgICAgICAgIHNjb3JlVG9CZWF0LFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY3VycmVudFNjb3JlID0gMDtcbiAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBjb25maWcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBjb25maWcuX3VzZVVUQztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQodGVtcENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYW55IGlucHV0IHRoYXQgd2FzIG5vdCBwYXJzZWQgYWRkIGEgcGVuYWx0eSBmb3IgdGhhdCBmb3JtYXRcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuY2hhcnNMZWZ0T3ZlcjtcblxuICAgICAgICAgICAgLy9vciB0b2tlbnNcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykudW51c2VkVG9rZW5zLmxlbmd0aCAqIDEwO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuc2NvcmUgPSBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgICAgIGlmIChzY29yZVRvQmVhdCA9PSBudWxsIHx8IGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7XG4gICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgYmVzdE1vbWVudCA9IHRlbXBDb25maWc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoY29uZmlnLl9pKTtcbiAgICAgICAgY29uZmlnLl9hID0gbWFwKFtpLnllYXIsIGkubW9udGgsIGkuZGF5IHx8IGkuZGF0ZSwgaS5ob3VyLCBpLm1pbnV0ZSwgaS5zZWNvbmQsIGkubWlsbGlzZWNvbmRdLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhwcmVwYXJlQ29uZmlnKGNvbmZpZykpKTtcbiAgICAgICAgaWYgKHJlcy5fbmV4dERheSkge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUXG4gICAgICAgICAgICByZXMuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICByZXMuX25leHREYXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXBhcmVDb25maWcgKGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBmb3JtYXQgPSBjb25maWcuX2Y7XG5cbiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBnZXRMb2NhbGUoY29uZmlnLl9sKTtcblxuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgKGZvcm1hdCA9PT0gdW5kZWZpbmVkICYmIGlucHV0ID09PSAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKHtudWxsSW5wdXQ6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBpbnB1dDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9ICBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pO1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nKGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tT2JqZWN0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsT3JVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykge1xuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGlmIChsb2NhbGUgPT09IHRydWUgfHwgbG9jYWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChpc09iamVjdChpbnB1dCkgJiYgaXNPYmplY3RFbXB0eShpbnB1dCkpIHx8XG4gICAgICAgICAgICAgICAgKGlzQXJyYXkoaW5wdXQpICYmIGlucHV0Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24gbXVzdCBiZSBkb25lIHRoaXMgd2F5LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyM1xuICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlO1xuICAgICAgICBjLl91c2VVVEMgPSBjLl9pc1VUQyA9IGlzVVRDO1xuICAgICAgICBjLl9sID0gbG9jYWxlO1xuICAgICAgICBjLl9pID0gaW5wdXQ7XG4gICAgICAgIGMuX2YgPSBmb3JtYXQ7XG4gICAgICAgIGMuX3N0cmljdCA9IHN0cmljdDtcblxuICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUNvbmZpZyhjKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbCAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlTWluID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgdmFyIHByb3RvdHlwZU1heCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPiB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsXG4gICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLlxuICAgIC8vXG4gICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZVxuICAgIC8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuXG4gICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7XG4gICAgICAgIHZhciByZXMsIGk7XG4gICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1vbWVudHNbMF0pKSB7XG4gICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMgPSBtb21lbnRzWzBdO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbW9tZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRzW2ldLmlzVmFsaWQoKSB8fCBtb21lbnRzW2ldW2ZuXShyZXMpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/XG4gICAgZnVuY3Rpb24gbWluICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNCZWZvcmUnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXggKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0FmdGVyJywgYXJncyk7XG4gICAgfVxuXG4gICAgdmFyIG5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIERhdGUubm93ID8gRGF0ZS5ub3coKSA6ICsobmV3IERhdGUoKSk7XG4gICAgfTtcblxuICAgIHZhciBvcmRlcmluZyA9IFsneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCddO1xuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvblZhbGlkKG0pIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG0pIHtcbiAgICAgICAgICAgIGlmICghKGluZGV4T2YuY2FsbChvcmRlcmluZywga2V5KSAhPT0gLTEgJiYgKG1ba2V5XSA9PSBudWxsIHx8ICFpc05hTihtW2tleV0pKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdW5pdEhhc0RlY2ltYWwgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmRlcmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKG1bb3JkZXJpbmdbaV1dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuaXRIYXNEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gb25seSBhbGxvdyBub24taW50ZWdlcnMgZm9yIHNtYWxsZXN0IHVuaXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmxvYXQobVtvcmRlcmluZ1tpXV0pICE9PSB0b0ludChtW29yZGVyaW5nW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oTmFOKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBEdXJhdGlvbiAoZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCBub3JtYWxpemVkSW5wdXQuaXNvV2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9ICttaWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDBcbiAgICAgICAgICAgIG1pbnV0ZXMgKiA2ZTQgKyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGhvdXJzICogMTAwMCAqIDYwICogNjA7IC8vdXNpbmcgMTAwMCAqIDYwICogNjAgaW5zdGVhZCBvZiAzNmU1IHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjk3OFxuICAgICAgICAvLyBCZWNhdXNlIG9mIGRhdGVBZGRSZW1vdmUgdHJlYXRzIDI0IGhvdXJzIGFzIGRpZmZlcmVudCBmcm9tIGFcbiAgICAgICAgLy8gZGF5IHdoZW4gd29ya2luZyBhcm91bmQgRFNULCB3ZSBuZWVkIHRvIHN0b3JlIHRoZW0gc2VwYXJhdGVseVxuICAgICAgICB0aGlzLl9kYXlzID0gK2RheXMgK1xuICAgICAgICAgICAgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICtcbiAgICAgICAgICAgIHF1YXJ0ZXJzICogMyArXG4gICAgICAgICAgICB5ZWFycyAqIDEyO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcblxuICAgICAgICB0aGlzLl9sb2NhbGUgPSBnZXRMb2NhbGUoKTtcblxuICAgICAgICB0aGlzLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKC0xICogbnVtYmVyKSAqIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCAodG9rZW4sIHNlcGFyYXRvcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCk7XG4gICAgICAgICAgICB2YXIgc2lnbiA9ICcrJztcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDtcbiAgICAgICAgICAgICAgICBzaWduID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyB6ZXJvRmlsbCh+fihvZmZzZXQgLyA2MCksIDIpICsgc2VwYXJhdG9yICsgemVyb0ZpbGwofn4ob2Zmc2V0KSAlIDYwLCAyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KCdaJywgJzonKTtcbiAgICBvZmZzZXQoJ1paJywgJycpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWicsICBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKTtcblxuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2h1bmsgICA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXSB8fCBbXTtcbiAgICAgICAgdmFyIHBhcnRzICAgPSAoY2h1bmsgKyAnJykubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsIDAsIDBdO1xuICAgICAgICB2YXIgbWludXRlcyA9ICsocGFydHNbMV0gKiA2MCkgKyB0b0ludChwYXJ0c1syXSk7XG5cbiAgICAgICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgP1xuICAgICAgICAgIDAgOlxuICAgICAgICAgIHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID0gKGlzTW9tZW50KGlucHV0KSB8fCBpc0RhdGUoaW5wdXQpID8gaW5wdXQudmFsdWVPZigpIDogY3JlYXRlTG9jYWwoaW5wdXQpLnZhbHVlT2YoKSkgLSByZXMudmFsdWVPZigpO1xuICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLlxuICAgICAgICAgICAgcmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHJlcywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCkubG9jYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERhdGVPZmZzZXQgKG0pIHtcbiAgICAgICAgLy8gT24gRmlyZWZveC4yNCBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgYSBmbG9hdGluZyBwb2ludC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvcHVsbC8xODcxXG4gICAgICAgIHJldHVybiAtTWF0aC5yb3VuZChtLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkgLyAxNSkgKiAxNTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0IChpbnB1dCwga2VlcExvY2FsVGltZSwga2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX29mZnNldCB8fCAwLFxuICAgICAgICAgICAgbG9jYWxBZGp1c3Q7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGlucHV0KSA8IDE2ICYmICFrZWVwTWludXRlcykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgKiA2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIGxvY2FsQWRqdXN0ID0gZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29mZnNldCA9IGlucHV0O1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGxvY2FsQWRqdXN0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZChsb2NhbEFkanVzdCwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgY3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksIDEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gb2Zmc2V0IDogZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFpvbmUgKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gLWlucHV0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC10aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9VVEMgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChnZXREYXRlT2Zmc2V0KHRoaXMpLCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0ICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0aGlzLl90em0sIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhciB0Wm9uZSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIHRoaXMuX2kpO1xuICAgICAgICAgICAgaWYgKHRab25lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0Wm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldCAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0ID0gaW5wdXQgPyBjcmVhdGVMb2NhbChpbnB1dCkudXRjT2Zmc2V0KCkgOiAwO1xuXG4gICAgICAgIHJldHVybiAodGhpcy51dGNPZmZzZXQoKSAtIGlucHV0KSAlIDYwID09PSAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCkgfHxcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQgKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGNvcHlDb25maWcoYywgdGhpcyk7XG4gICAgICAgIGMgPSBwcmVwYXJlQ29uZmlnKGMpO1xuXG4gICAgICAgIGlmIChjLl9hKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjLl9pc1VUQyA/IGNyZWF0ZVVUQyhjLl9hKSA6IGNyZWF0ZUxvY2FsKGMuX2EpO1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICBjb21wYXJlQXJyYXlzKGMuX2EsIG90aGVyLnRvQXJyYXkoKSkgPiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTG9jYWwgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGMgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXhcbiAgICB2YXIgYXNwTmV0UmVnZXggPSAvXihcXC18XFwrKT8oPzooXFxkKilbLiBdKT8oXFxkKylcXDooXFxkKykoPzpcXDooXFxkKykoXFwuXFxkKik/KT8kLztcblxuICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgLy8gc29tZXdoYXQgbW9yZSBpbiBsaW5lIHdpdGggNC40LjMuMiAyMDA0IHNwZWMsIGJ1dCBhbGxvd3MgZGVjaW1hbCBhbnl3aGVyZVxuICAgIC8vIGFuZCBmdXJ0aGVyIG1vZGlmaWVkIHRvIGFsbG93IGZvciBzdHJpbmdzIGNvbnRhaW5pbmcgYm90aCB3ZWVrIGFuZCBkYXlcbiAgICB2YXIgaXNvUmVnZXggPSAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRHVyYXRpb24gKGlucHV0LCBrZXkpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gaW5wdXQsXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBhZ2FpbnN0IHJlZ2V4cCBpcyBleHBlbnNpdmUsIGRvIGl0IG9uIGRlbWFuZFxuICAgICAgICAgICAgbWF0Y2ggPSBudWxsLFxuICAgICAgICAgICAgc2lnbixcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGRpZmZSZXM7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBtcyA6IGlucHV0Ll9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICAgICAgZCAgOiBpbnB1dC5fZGF5cyxcbiAgICAgICAgICAgICAgICBNICA6IGlucHV0Ll9tb250aHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSBpbnB1dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlzZWNvbmRzID0gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5ICA6IDAsXG4gICAgICAgICAgICAgICAgZCAgOiB0b0ludChtYXRjaFtEQVRFXSkgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIGggIDogdG9JbnQobWF0Y2hbSE9VUl0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtICA6IHRvSW50KG1hdGNoW01JTlVURV0pICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgcyAgOiB0b0ludChtYXRjaFtTRUNPTkRdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIG1zIDogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2hcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBpc29SZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5IDogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIE0gOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgdyA6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBkIDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGggOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgbSA6IHBhcnNlSXNvKG1hdGNoWzddLCBzaWduKSxcbiAgICAgICAgICAgICAgICBzIDogcGFyc2VJc28obWF0Y2hbOF0sIHNpZ24pXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09IG51bGwpIHsvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiYgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKSkge1xuICAgICAgICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKGNyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLCBjcmVhdGVMb2NhbChkdXJhdGlvbi50bykpO1xuXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgZHVyYXRpb24ubXMgPSBkaWZmUmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIGR1cmF0aW9uLk0gPSBkaWZmUmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldCA9IG5ldyBEdXJhdGlvbihkdXJhdGlvbik7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfbG9jYWxlJykpIHtcbiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgY3JlYXRlRHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGU7XG4gICAgY3JlYXRlRHVyYXRpb24uaW52YWxpZCA9IGNyZWF0ZUludmFsaWQkMTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvIChpbnAsIHNpZ24pIHtcbiAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc29cbiAgICAgICAgLy8gY29udmVydHMgZmxvYXRzIHRvIGludHMuXG4gICAgICAgIC8vIGlucCBtYXkgYmUgdW5kZWZpbmVkLCBzbyBjYXJlZnVsIGNhbGxpbmcgcmVwbGFjZSBvbiBpdC5cbiAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7XG4gICAgICAgIC8vIGFwcGx5IHNpZ24gd2hpbGUgd2UncmUgYXQgaXRcbiAgICAgICAgcmV0dXJuIChpc05hTihyZXMpID8gMCA6IHJlcykgKiBzaWduO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcyA9IHt9O1xuXG4gICAgICAgIHJlcy5tb250aHMgPSBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICtcbiAgICAgICAgICAgIChvdGhlci55ZWFyKCkgLSBiYXNlLnllYXIoKSkgKiAxMjtcbiAgICAgICAgaWYgKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKS5pc0FmdGVyKG90aGVyKSkge1xuICAgICAgICAgICAgLS1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICsoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIGlmICghKGJhc2UuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7bWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3RoZXIgPSBjbG9uZVdpdGhPZmZzZXQob3RoZXIsIGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZShvdGhlcikpIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShvdGhlciwgYmFzZSk7XG4gICAgICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gLXJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICByZXMubW9udGhzID0gLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWRcbiAgICBmdW5jdGlvbiBjcmVhdGVBZGRlcihkaXJlY3Rpb24sIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWwsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIGR1ciwgdG1wO1xuICAgICAgICAgICAgLy9pbnZlcnQgdGhlIGFyZ3VtZW50cywgYnV0IGNvbXBsYWluIGFib3V0IGl0XG4gICAgICAgICAgICBpZiAocGVyaW9kICE9PSBudWxsICYmICFpc05hTigrcGVyaW9kKSkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShuYW1lLCAnbW9tZW50KCkuJyArIG5hbWUgICsgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICsgbmFtZSArICcobnVtYmVyLCBwZXJpb2QpLiAnICtcbiAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHRtcCA9IHZhbDsgdmFsID0gcGVyaW9kOyBwZXJpb2QgPSB0bXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbCA9IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gK3ZhbCA6IHZhbDtcbiAgICAgICAgICAgIGR1ciA9IGNyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTtcbiAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0IChtb20sIGR1cmF0aW9uLCBpc0FkZGluZywgdXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IGFic1JvdW5kKGR1cmF0aW9uLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFic1JvdW5kKGR1cmF0aW9uLl9tb250aHMpO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDtcblxuICAgICAgICBpZiAobW9udGhzKSB7XG4gICAgICAgICAgICBzZXRNb250aChtb20sIGdldChtb20sICdNb250aCcpICsgbW9udGhzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXlzKSB7XG4gICAgICAgICAgICBzZXQkMShtb20sICdEYXRlJywgZ2V0KG1vbSwgJ0RhdGUnKSArIGRheXMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICAgICAgbW9tLl9kLnNldFRpbWUobW9tLl9kLnZhbHVlT2YoKSArIG1pbGxpc2Vjb25kcyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQobW9tLCBkYXlzIHx8IG1vbnRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYWRkICAgICAgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyk7XG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlQWRkZXIoLTEsICdzdWJ0cmFjdCcpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJGb3JtYXQobXlNb21lbnQsIG5vdykge1xuICAgICAgICB2YXIgZGlmZiA9IG15TW9tZW50LmRpZmYobm93LCAnZGF5cycsIHRydWUpO1xuICAgICAgICByZXR1cm4gZGlmZiA8IC02ID8gJ3NhbWVFbHNlJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IC0xID8gJ2xhc3RXZWVrJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDAgPyAnbGFzdERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAxID8gJ3NhbWVEYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMiA/ICduZXh0RGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDcgPyAnbmV4dFdlZWsnIDogJ3NhbWVFbHNlJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciQxICh0aW1lLCBmb3JtYXRzKSB7XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuXG4gICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LlxuICAgICAgICB2YXIgbm93ID0gdGltZSB8fCBjcmVhdGVMb2NhbCgpLFxuICAgICAgICAgICAgc29kID0gY2xvbmVXaXRoT2Zmc2V0KG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksXG4gICAgICAgICAgICBmb3JtYXQgPSBob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxzZSc7XG5cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdHMgJiYgKGlzRnVuY3Rpb24oZm9ybWF0c1tmb3JtYXRdKSA/IGZvcm1hdHNbZm9ybWF0XS5jYWxsKHRoaXMsIG5vdykgOiBmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBjcmVhdGVMb2NhbChub3cpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbElucHV0LnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmV0d2VlbiAoZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkge1xuICAgICAgICB2YXIgbG9jYWxGcm9tID0gaXNNb21lbnQoZnJvbSkgPyBmcm9tIDogY3JlYXRlTG9jYWwoZnJvbSksXG4gICAgICAgICAgICBsb2NhbFRvID0gaXNNb21lbnQodG8pID8gdG8gOiBjcmVhdGVMb2NhbCh0byk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsRnJvbS5pc1ZhbGlkKCkgJiYgbG9jYWxUby5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIobG9jYWxGcm9tLCB1bml0cykgOiAhdGhpcy5pc0JlZm9yZShsb2NhbEZyb20sIHVuaXRzKSkgJiZcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVsxXSA9PT0gJyknID8gdGhpcy5pc0JlZm9yZShsb2NhbFRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKGxvY2FsVG8sIHVuaXRzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KSxcbiAgICAgICAgICAgIGlucHV0TXM7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID09PSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQWZ0ZXIgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaWZmIChpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHtcbiAgICAgICAgdmFyIHRoYXQsXG4gICAgICAgICAgICB6b25lRGVsdGEsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoYXQgPSBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIHRoaXMpO1xuXG4gICAgICAgIGlmICghdGhhdC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB6b25lRGVsdGEgPSAodGhhdC51dGNPZmZzZXQoKSAtIHRoaXMudXRjT2Zmc2V0KCkpICogNmU0O1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAxMjsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMWUzOyBicmVhazsgLy8gMTAwMFxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDZlNDsgYnJlYWs7IC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnaG91cic6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAzNmU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA4NjRlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gNjA0OGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGRlZmF1bHQ6IG91dHB1dCA9IHRoaXMgLSB0aGF0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzRmxvYXQgPyBvdXRwdXQgOiBhYnNGbG9vcihvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoRGlmZiAoYSwgYikge1xuICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRoc1xuICAgICAgICB2YXIgd2hvbGVNb250aERpZmYgPSAoKGIueWVhcigpIC0gYS55ZWFyKCkpICogMTIpICsgKGIubW9udGgoKSAtIGEubW9udGgoKSksXG4gICAgICAgICAgICAvLyBiIGlzIGluIChhbmNob3IgLSAxIG1vbnRoLCBhbmNob3IgKyAxIG1vbnRoKVxuICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLFxuICAgICAgICAgICAgYW5jaG9yMiwgYWRqdXN0O1xuXG4gICAgICAgIGlmIChiIC0gYW5jaG9yIDwgMCkge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgLSAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvciAtIGFuY2hvcjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgKyAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvcjIgLSBhbmNob3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jaGVjayBmb3IgbmVnYXRpdmUgemVybywgcmV0dXJuIHplcm8gaWYgbmVnYXRpdmUgemVyb1xuICAgICAgICByZXR1cm4gLSh3aG9sZU1vbnRoRGlmZiArIGFkanVzdCkgfHwgMDtcbiAgICB9XG5cbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0VXRjID0gJ1lZWVktTU0tRERUSEg6bW06c3NbWl0nO1xuXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmcoa2VlcE9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXRjID0ga2VlcE9mZnNldCAhPT0gdHJ1ZTtcbiAgICAgICAgdmFyIG0gPSB1dGMgPyB0aGlzLmNsb25lKCkudXRjKCkgOiB0aGlzO1xuICAgICAgICBpZiAobS55ZWFyKCkgPCAwIHx8IG0ueWVhcigpID4gOTk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7XG4gICAgICAgICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhblxuICAgICAgICAgICAgaWYgKHV0Yykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSArIHRoaXMudXRjT2Zmc2V0KCkgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsIGZvcm1hdE1vbWVudChtLCAnWicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGh1bWFuIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9tZW50IHRoYXQgY2FuXG4gICAgICogYWxzbyBiZSBldmFsdWF0ZWQgdG8gZ2V0IGEgbmV3IG1vbWVudCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAqXG4gICAgICogQGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0L2RvY3MvYXBpL3V0aWwuaHRtbCN1dGlsX2N1c3RvbV9pbnNwZWN0X2Z1bmN0aW9uX29uX29iamVjdHNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtb21lbnQuaW52YWxpZCgvKiAnICsgdGhpcy5faSArICcgKi8pJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnVuYyA9ICdtb21lbnQnO1xuICAgICAgICB2YXIgem9uZSA9ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbCgpKSB7XG4gICAgICAgICAgICBmdW5jID0gdGhpcy51dGNPZmZzZXQoKSA9PT0gMCA/ICdtb21lbnQudXRjJyA6ICdtb21lbnQucGFyc2Vab25lJztcbiAgICAgICAgICAgIHpvbmUgPSAnWic7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZWZpeCA9ICdbJyArIGZ1bmMgKyAnKFwiXSc7XG4gICAgICAgIHZhciB5ZWFyID0gKDAgPD0gdGhpcy55ZWFyKCkgJiYgdGhpcy55ZWFyKCkgPD0gOTk5OSkgPyAnWVlZWScgOiAnWVlZWVlZJztcbiAgICAgICAgdmFyIGRhdGV0aW1lID0gJy1NTS1ERFtUXUhIOm1tOnNzLlNTUyc7XG4gICAgICAgIHZhciBzdWZmaXggPSB6b25lICsgJ1tcIildJztcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQocHJlZml4ICsgeWVhciArIGRhdGV0aW1lICsgc3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQgKGlucHV0U3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nID0gdGhpcy5pc1V0YygpID8gaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA6IGhvb2tzLmRlZmF1bHRGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbSAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe3RvOiB0aGlzLCBmcm9tOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbU5vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7ZnJvbTogdGhpcywgdG86IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50byhjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBwYXNzZWQgYSBsb2NhbGUga2V5LCBpdCB3aWxsIHNldCB0aGUgbG9jYWxlIGZvciB0aGlzXG4gICAgLy8gaW5zdGFuY2UuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvblxuICAgIC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS5cbiAgICBmdW5jdGlvbiBsb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTtcblxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsXG4gICAgICAgIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRGF0YSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgdmFyIE1TX1BFUl9TRUNPTkQgPSAxMDAwO1xuICAgIHZhciBNU19QRVJfTUlOVVRFID0gNjAgKiBNU19QRVJfU0VDT05EO1xuICAgIHZhciBNU19QRVJfSE9VUiA9IDYwICogTVNfUEVSX01JTlVURTtcbiAgICB2YXIgTVNfUEVSXzQwMF9ZRUFSUyA9ICgzNjUgKiA0MDAgKyA5NykgKiAyNCAqIE1TX1BFUl9IT1VSO1xuXG4gICAgLy8gYWN0dWFsIG1vZHVsbyAtIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyAoZm9yIGRhdGVzIGJlZm9yZSAxOTcwKTpcbiAgICBmdW5jdGlvbiBtb2QkMShkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgICByZXR1cm4gKGRpdmlkZW5kICUgZGl2aXNvciArIGRpdmlzb3IpICUgZGl2aXNvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbFN0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSwgZCkudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXRjU3RhcnRPZkRhdGUoeSwgbSwgZCkge1xuICAgICAgICAvLyBEYXRlLlVUQyByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgcmV0dXJuIERhdGUuVVRDKHkgKyA0MDAsIG0sIGQpIC0gTVNfUEVSXzQwMF9ZRUFSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5LCBtLCBkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0T2YgKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lO1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSAtIHRoaXMubW9udGgoKSAlIDMsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtIHRoaXMud2Vla2RheSgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksIE1TX1BFUl9IT1VSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB2YXIgdGltZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCkgKyAxLCAwLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSAtIHRoaXMubW9udGgoKSAlIDMgKyAzLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgKyAxLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSArIDcpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpICsgNykgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSArIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9IT1VSIC0gbW9kJDEodGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksIE1TX1BFUl9IT1VSKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9NSU5VVEUgLSBtb2QkMSh0aW1lLCBNU19QRVJfTUlOVVRFKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9TRUNPTkQgLSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kLnNldFRpbWUodGltZSk7XG4gICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsdWVPZiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVlT2YoKSAtICgodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaXggKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRGF0ZSAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9BcnJheSAoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFttLnllYXIoKSwgbS5tb250aCgpLCBtLmRhdGUoKSwgbS5ob3VyKCksIG0ubWludXRlKCksIG0uc2Vjb25kKCksIG0ubWlsbGlzZWNvbmQoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9PYmplY3QgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksXG4gICAgICAgICAgICBtb250aHM6IG0ubW9udGgoKSxcbiAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLFxuICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWludXRlcygpLFxuICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksXG4gICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2luZ0ZsYWdzICgpIHtcbiAgICAgICAgcmV0dXJuIGV4dGVuZCh7fSwgZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkQXQgKCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpLm92ZXJmbG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0aW9uRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLFxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9mLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsXG4gICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsXG4gICAgICAgICAgICBzdHJpY3Q6IHRoaXMuX3N0cmljdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnZ2cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydHRycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrWWVhckZvcm1hdFRva2VuICh0b2tlbiwgZ2V0dGVyKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKDAsIFt0b2tlbiwgdG9rZW4ubGVuZ3RoXSwgMCwgZ2V0dGVyKTtcbiAgICB9XG5cbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnJywgICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgICAgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHRycsICAnaXNvV2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHRycsICdpc29XZWVrWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrWWVhcicsICdnZycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla1llYXInLCAnR0cnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtZZWFyJywgMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrWWVhcicsIDEpO1xuXG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdHJywgICAgICBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignZycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdnZycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHRycsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHRycsICBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDIpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2cnLCAnR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrKCksXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCksXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsIHRoaXMuaXNvV2VlaygpLCB0aGlzLmlzb1dlZWtkYXkoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIgKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFySGVscGVyKGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla3NUYXJnZXQ7XG4gICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla09mWWVhcih0aGlzLCBkb3csIGRveSkueWVhcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdlZWtzVGFyZ2V0ID0gd2Vla3NJblllYXIoaW5wdXQsIGRvdywgZG95KTtcbiAgICAgICAgICAgIGlmICh3ZWVrID4gd2Vla3NUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB3ZWVrID0gd2Vla3NUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0V2Vla0FsbC5jYWxsKHRoaXMsIGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRXZWVrQWxsKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyRGF0YSA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoZGF5T2ZZZWFyRGF0YS55ZWFyLCAwLCBkYXlPZlllYXJEYXRhLmRheU9mWWVhcik7XG5cbiAgICAgICAgdGhpcy55ZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgICAgIHRoaXMubW9udGgoZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICAgICAgdGhpcy5kYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1EnLCAwLCAnUW8nLCAncXVhcnRlcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdxdWFydGVyJywgJ1EnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3F1YXJ0ZXInLCA3KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1EnLCBtYXRjaDEpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1EnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01PTlRIXSA9ICh0b0ludChpbnB1dCkgLSAxKSAqIDM7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRRdWFydGVyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IE1hdGguY2VpbCgodGhpcy5tb250aCgpICsgMSkgLyAzKSA6IHRoaXMubW9udGgoKGlucHV0IC0gMSkgKiAzICsgdGhpcy5tb250aCgpICUgMyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0QnLCBbJ0REJywgMl0sICdEbycsICdkYXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RhdGUnLCAnRCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RhdGUnLCA5KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0QnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdERCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID9cbiAgICAgICAgICAobG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIHx8IGxvY2FsZS5fb3JkaW5hbFBhcnNlKSA6XG4gICAgICAgICAgbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudDtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydEJywgJ0REJ10sIERBVEUpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtEQVRFXSA9IHRvSW50KGlucHV0Lm1hdGNoKG1hdGNoMXRvMilbMF0pO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldERheU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXlPZlllYXInLCAnREREJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5T2ZZZWFyJywgNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEREQnLCAgbWF0Y2gxdG8zKTtcbiAgICBhZGRSZWdleFRva2VuKCdEREREJywgbWF0Y2gzKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnREREJywgJ0REREQnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyIChpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID0gTWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpIC0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKSkgLyA4NjRlNSkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKChpbnB1dCAtIGRheU9mWWVhciksICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ20nLCBbJ21tJywgMl0sIDAsICdtaW51dGUnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWludXRlJywgJ20nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbnV0ZScsIDE0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ20nLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydzJywgJ3NzJ10sIFNFQ09ORCk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0U2Vjb25kID0gbWFrZUdldFNldCgnU2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdTJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTAwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1MnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwgMCwgJ21pbGxpc2Vjb25kJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDA7XG4gICAgfSk7XG5cblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQnLCAnbXMnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsICAgIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsICAgbWF0Y2gxdG8zLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1NTUycsICBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW47XG4gICAgZm9yICh0b2tlbiA9ICdTU1NTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRSZWdleFRva2VuKHRva2VuLCBtYXRjaFVuc2lnbmVkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU1zKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNSUxMSVNFQ09ORF0gPSB0b0ludCgoJzAuJyArIGlucHV0KSAqIDEwMDApO1xuICAgIH1cblxuICAgIGZvciAodG9rZW4gPSAnUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgcGFyc2VNcyk7XG4gICAgfVxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd6JywgIDAsIDAsICd6b25lQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd6eicsIDAsIDAsICd6b25lTmFtZScpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0Wm9uZUFiYnIgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE1vbWVudC5wcm90b3R5cGU7XG5cbiAgICBwcm90by5hZGQgICAgICAgICAgICAgICA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciAgICAgICAgICA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgICAgICAgICAgICAgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmICAgICAgICAgICAgICA9IGRpZmY7XG4gICAgcHJvdG8uZW5kT2YgICAgICAgICAgICAgPSBlbmRPZjtcbiAgICBwcm90by5mb3JtYXQgICAgICAgICAgICA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tICAgICAgICAgICAgICA9IGZyb207XG4gICAgcHJvdG8uZnJvbU5vdyAgICAgICAgICAgPSBmcm9tTm93O1xuICAgIHByb3RvLnRvICAgICAgICAgICAgICAgID0gdG87XG4gICAgcHJvdG8udG9Ob3cgICAgICAgICAgICAgPSB0b05vdztcbiAgICBwcm90by5nZXQgICAgICAgICAgICAgICA9IHN0cmluZ0dldDtcbiAgICBwcm90by5pbnZhbGlkQXQgICAgICAgICA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyICAgICAgICAgICA9IGlzQWZ0ZXI7XG4gICAgcHJvdG8uaXNCZWZvcmUgICAgICAgICAgPSBpc0JlZm9yZTtcbiAgICBwcm90by5pc0JldHdlZW4gICAgICAgICA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgICAgICAgICAgICA9IGlzU2FtZTtcbiAgICBwcm90by5pc1NhbWVPckFmdGVyICAgICA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgICAgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkICAgICAgICAgICA9IGlzVmFsaWQkMjtcbiAgICBwcm90by5sYW5nICAgICAgICAgICAgICA9IGxhbmc7XG4gICAgcHJvdG8ubG9jYWxlICAgICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8ubG9jYWxlRGF0YSAgICAgICAgPSBsb2NhbGVEYXRhO1xuICAgIHByb3RvLm1heCAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWF4O1xuICAgIHByb3RvLm1pbiAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyAgICAgID0gcGFyc2luZ0ZsYWdzO1xuICAgIHByb3RvLnNldCAgICAgICAgICAgICAgID0gc3RyaW5nU2V0O1xuICAgIHByb3RvLnN0YXJ0T2YgICAgICAgICAgID0gc3RhcnRPZjtcbiAgICBwcm90by5zdWJ0cmFjdCAgICAgICAgICA9IHN1YnRyYWN0O1xuICAgIHByb3RvLnRvQXJyYXkgICAgICAgICAgID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCAgICAgICAgICA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSAgICAgICAgICAgID0gdG9EYXRlO1xuICAgIHByb3RvLnRvSVNPU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmc7XG4gICAgcHJvdG8uaW5zcGVjdCAgICAgICAgICAgPSBpbnNwZWN0O1xuICAgIHByb3RvLnRvSlNPTiAgICAgICAgICAgID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nICAgICAgICAgID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCAgICAgICAgICAgICAgPSB1bml4O1xuICAgIHByb3RvLnZhbHVlT2YgICAgICAgICAgID0gdmFsdWVPZjtcbiAgICBwcm90by5jcmVhdGlvbkRhdGEgICAgICA9IGNyZWF0aW9uRGF0YTtcbiAgICBwcm90by55ZWFyICAgICAgID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciAgICA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCAgICAgICA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayAgICAgICAgICAgPSBwcm90by53ZWVrcyAgICAgICAgPSBnZXRTZXRXZWVrO1xuICAgIHByb3RvLmlzb1dlZWsgICAgICAgID0gcHJvdG8uaXNvV2Vla3MgICAgID0gZ2V0U2V0SVNPV2VlaztcbiAgICBwcm90by53ZWVrc0luWWVhciAgICA9IGdldFdlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uZGF0ZSAgICAgICA9IGdldFNldERheU9mTW9udGg7XG4gICAgcHJvdG8uZGF5ICAgICAgICA9IHByb3RvLmRheXMgICAgICAgICAgICAgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSAgICA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciAgPSBnZXRTZXREYXlPZlllYXI7XG4gICAgcHJvdG8uaG91ciA9IHByb3RvLmhvdXJzID0gZ2V0U2V0SG91cjtcbiAgICBwcm90by5taW51dGUgPSBwcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlO1xuICAgIHByb3RvLnNlY29uZCA9IHByb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7XG4gICAgcHJvdG8ubWlsbGlzZWNvbmQgPSBwcm90by5taWxsaXNlY29uZHMgPSBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBwcm90by51dGNPZmZzZXQgICAgICAgICAgICA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgICAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvVVRDO1xuICAgIHByb3RvLmxvY2FsICAgICAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9Mb2NhbDtcbiAgICBwcm90by5wYXJzZVpvbmUgICAgICAgICAgICA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0O1xuICAgIHByb3RvLmhhc0FsaWduZWRIb3VyT2Zmc2V0ID0gaGFzQWxpZ25lZEhvdXJPZmZzZXQ7XG4gICAgcHJvdG8uaXNEU1QgICAgICAgICAgICAgICAgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTtcbiAgICBwcm90by5pc0xvY2FsICAgICAgICAgICAgICA9IGlzTG9jYWw7XG4gICAgcHJvdG8uaXNVdGNPZmZzZXQgICAgICAgICAgPSBpc1V0Y09mZnNldDtcbiAgICBwcm90by5pc1V0YyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLmlzVVRDICAgICAgICAgICAgICAgID0gaXNVdGM7XG4gICAgcHJvdG8uem9uZUFiYnIgPSBnZXRab25lQWJicjtcbiAgICBwcm90by56b25lTmFtZSA9IGdldFpvbmVOYW1lO1xuICAgIHByb3RvLmRhdGVzICA9IGRlcHJlY2F0ZSgnZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4nLCBnZXRTZXREYXlPZk1vbnRoKTtcbiAgICBwcm90by5tb250aHMgPSBkZXByZWNhdGUoJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsIGdldFNldE1vbnRoKTtcbiAgICBwcm90by55ZWFycyAgPSBkZXByZWNhdGUoJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLCBnZXRTZXRZZWFyKTtcbiAgICBwcm90by56b25lICAgPSBkZXByZWNhdGUoJ21vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNldCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL3pvbmUvJywgZ2V0U2V0Wm9uZSk7XG4gICAgcHJvdG8uaXNEU1RTaGlmdGVkID0gZGVwcmVjYXRlKCdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJywgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVuaXggKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCAqIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluWm9uZSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdCAoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDEgPSBMb2NhbGUucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMS5jYWxlbmRhciAgICAgICAgPSBjYWxlbmRhcjtcbiAgICBwcm90byQxLmxvbmdEYXRlRm9ybWF0ICA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgICAgID0gaW52YWxpZERhdGU7XG4gICAgcHJvdG8kMS5vcmRpbmFsICAgICAgICAgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgICAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucG9zdGZvcm1hdCAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lICAgID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSAgICAgID0gcGFzdEZ1dHVyZTtcbiAgICBwcm90byQxLnNldCAgICAgICAgICAgICA9IHNldDtcblxuICAgIHByb3RvJDEubW9udGhzICAgICAgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzO1xuICAgIHByb3RvJDEubW9udGhzU2hvcnQgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHNQYXJzZTtcbiAgICBwcm90byQxLm1vbnRoc1JlZ2V4ICAgICAgID0gbW9udGhzUmVnZXg7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydFJlZ2V4ICA9IG1vbnRoc1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrID0gbG9jYWxlV2VlaztcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZZZWFyID0gbG9jYWxlRmlyc3REYXlPZlllYXI7XG4gICAgcHJvdG8kMS5maXJzdERheU9mV2VlayA9IGxvY2FsZUZpcnN0RGF5T2ZXZWVrO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5cyAgICAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluICAgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzTWluO1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydCAgPSAgICAgICAgbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzUGFyc2U7XG5cbiAgICBwcm90byQxLndlZWtkYXlzUmVnZXggICAgICAgPSAgICAgICAgd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCAgPSAgICAgICAgd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2Vla2RheXNNaW5SZWdleCAgICA9ICAgICAgICB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMSAoZm9ybWF0LCBpbmRleCwgZmllbGQsIHNldHRlcikge1xuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG4gICAgICAgIHZhciB1dGMgPSBjcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBsb2NhbGVbZmllbGRdKHV0YywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzSW1wbCAoZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCBpbmRleCwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgaSwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgLy8gKClcbiAgICAvLyAoNSlcbiAgICAvLyAoZm10LCA1KVxuICAgIC8vIChmbXQpXG4gICAgLy8gKHRydWUpXG4gICAgLy8gKHRydWUsIDUpXG4gICAgLy8gKHRydWUsIGZtdCwgNSlcbiAgICAvLyAodHJ1ZSwgZm10KVxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c0ltcGwgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzIChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc1Nob3J0IChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXMgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0IChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c01pbiAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzTWluJyk7XG4gICAgfVxuXG4gICAgZ2V0U2V0R2xvYmFsTG9jYWxlKCdlbicsIHtcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0b0ludChudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICBob29rcy5sYW5nID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsIGdldFNldEdsb2JhbExvY2FsZSk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoJ21vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4nLCBnZXRMb2NhbGUpO1xuXG4gICAgdmFyIG1hdGhBYnMgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgICA9IHRoaXMuX2RhdGE7XG5cbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gbWF0aEFicyh0aGlzLl9taWxsaXNlY29uZHMpO1xuICAgICAgICB0aGlzLl9kYXlzICAgICAgICAgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgICAgICAgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyAgICAgICA9IG1hdGhBYnMoZGF0YS5zZWNvbmRzKTtcbiAgICAgICAgZGF0YS5taW51dGVzICAgICAgID0gbWF0aEFicyhkYXRhLm1pbnV0ZXMpO1xuICAgICAgICBkYXRhLmhvdXJzICAgICAgICAgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyAgICAgICAgPSBtYXRoQWJzKGRhdGEubW9udGhzKTtcbiAgICAgICAgZGF0YS55ZWFycyAgICAgICAgID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxIChkdXJhdGlvbiwgaW5wdXQsIHZhbHVlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTtcblxuICAgICAgICBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9taWxsaXNlY29uZHM7XG4gICAgICAgIGR1cmF0aW9uLl9kYXlzICAgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgMSk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdCQxIChpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAtMSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzQ2VpbCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlICgpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IHRoaXMuX2RheXM7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSB0aGlzLl9tb250aHM7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgPSB0aGlzLl9kYXRhO1xuICAgICAgICB2YXIgc2Vjb25kcywgbWludXRlcywgaG91cnMsIHllYXJzLCBtb250aHNGcm9tRGF5cztcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgbWl4IG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1YmJsZSBkb3duIGZpcnN0XG4gICAgICAgIC8vIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjE2NlxuICAgICAgICBpZiAoISgobWlsbGlzZWNvbmRzID49IDAgJiYgZGF5cyA+PSAwICYmIG1vbnRocyA+PSAwKSB8fFxuICAgICAgICAgICAgICAgIChtaWxsaXNlY29uZHMgPD0gMCAmJiBkYXlzIDw9IDAgJiYgbW9udGhzIDw9IDApKSkge1xuICAgICAgICAgICAgbWlsbGlzZWNvbmRzICs9IGFic0NlaWwobW9udGhzVG9EYXlzKG1vbnRocykgKyBkYXlzKSAqIDg2NGU1O1xuICAgICAgICAgICAgZGF5cyA9IDA7XG4gICAgICAgICAgICBtb250aHMgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGJ1YmJsZXMgdXAgdmFsdWVzLCBzZWUgdGhlIHRlc3RzIGZvclxuICAgICAgICAvLyBleGFtcGxlcyBvZiB3aGF0IHRoYXQgbWVhbnMuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzICUgMTAwMDtcblxuICAgICAgICBzZWNvbmRzICAgICAgICAgICA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICA9IHNlY29uZHMgJSA2MDtcblxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgID0gbWludXRlcyAlIDYwO1xuXG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgICA9IGRheXM7XG4gICAgICAgIGRhdGEubW9udGhzID0gbW9udGhzO1xuICAgICAgICBkYXRhLnllYXJzICA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyAoZGF5cykge1xuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpXG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDEyIG1vbnRocyA9PT0gNDgwMFxuICAgICAgICByZXR1cm4gZGF5cyAqIDQ4MDAgLyAxNDYwOTc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzVG9EYXlzIChtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiBtb250aHMgKiAxNDYwOTcgLyA0ODAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzICh1bml0cykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXlzO1xuICAgICAgICB2YXIgbW9udGhzO1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21vbnRoJyB8fCB1bml0cyA9PT0gJ3F1YXJ0ZXInIHx8IHVuaXRzID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOiAgIHJldHVybiBtb250aHM7XG4gICAgICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiBtb250aHMgLyAzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOiAgICByZXR1cm4gbW9udGhzIC8gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpXG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnICAgOiByZXR1cm4gZGF5cyAvIDcgICAgICsgbWlsbGlzZWNvbmRzIC8gNjA0OGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RheScgICAgOiByZXR1cm4gZGF5cyAgICAgICAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnaG91cicgICA6IHJldHVybiBkYXlzICogMjQgICAgKyBtaWxsaXNlY29uZHMgLyAzNmU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pbnV0ZScgOiByZXR1cm4gZGF5cyAqIDE0NDAgICsgbWlsbGlzZWNvbmRzIC8gNmU0O1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCcgOiByZXR1cm4gZGF5cyAqIDg2NDAwICsgbWlsbGlzZWNvbmRzIC8gMTAwMDtcbiAgICAgICAgICAgICAgICAvLyBNYXRoLmZsb29yIHByZXZlbnRzIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgICBjYXNlICdtaWxsaXNlY29uZCc6IHJldHVybiBNYXRoLmZsb29yKGRheXMgKiA4NjRlNSkgKyBtaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHVuaXQgJyArIHVuaXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSB0aGlzLmFzKCdtcycpP1xuICAgIGZ1bmN0aW9uIHZhbHVlT2YkMSAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgK1xuICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiArXG4gICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUzNmU2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzIChhbGlhcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXMoYWxpYXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMnKTtcbiAgICB2YXIgYXNTZWNvbmRzICAgICAgPSBtYWtlQXMoJ3MnKTtcbiAgICB2YXIgYXNNaW51dGVzICAgICAgPSBtYWtlQXMoJ20nKTtcbiAgICB2YXIgYXNIb3VycyAgICAgICAgPSBtYWtlQXMoJ2gnKTtcbiAgICB2YXIgYXNEYXlzICAgICAgICAgPSBtYWtlQXMoJ2QnKTtcbiAgICB2YXIgYXNXZWVrcyAgICAgICAgPSBtYWtlQXMoJ3cnKTtcbiAgICB2YXIgYXNNb250aHMgICAgICAgPSBtYWtlQXMoJ00nKTtcbiAgICB2YXIgYXNRdWFydGVycyAgICAgPSBtYWtlQXMoJ1EnKTtcbiAgICB2YXIgYXNZZWFycyAgICAgICAgPSBtYWtlQXMoJ3knKTtcblxuICAgIGZ1bmN0aW9uIGNsb25lJDEgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzW3VuaXRzICsgJ3MnXSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5fZGF0YVtuYW1lXSA6IE5hTjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyk7XG4gICAgdmFyIHNlY29uZHMgICAgICA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKTtcbiAgICB2YXIgbWludXRlcyAgICAgID0gbWFrZUdldHRlcignbWludXRlcycpO1xuICAgIHZhciBob3VycyAgICAgICAgPSBtYWtlR2V0dGVyKCdob3VycycpO1xuICAgIHZhciBkYXlzICAgICAgICAgPSBtYWtlR2V0dGVyKCdkYXlzJyk7XG4gICAgdmFyIG1vbnRocyAgICAgICA9IG1ha2VHZXR0ZXIoJ21vbnRocycpO1xuICAgIHZhciB5ZWFycyAgICAgICAgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MgKCkge1xuICAgICAgICByZXR1cm4gYWJzRmxvb3IodGhpcy5kYXlzKCkgLyA3KTtcbiAgICB9XG5cbiAgICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xuICAgIHZhciB0aHJlc2hvbGRzID0ge1xuICAgICAgICBzczogNDQsICAgICAgICAgLy8gYSBmZXcgc2Vjb25kcyB0byBzZWNvbmRzXG4gICAgICAgIHMgOiA0NSwgICAgICAgICAvLyBzZWNvbmRzIHRvIG1pbnV0ZVxuICAgICAgICBtIDogNDUsICAgICAgICAgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgIGggOiAyMiwgICAgICAgICAvLyBob3VycyB0byBkYXlcbiAgICAgICAgZCA6IDI2LCAgICAgICAgIC8vIGRheXMgdG8gbW9udGhcbiAgICAgICAgTSA6IDExICAgICAgICAgIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgfTtcblxuICAgIC8vIGhlbHBlciBmdW5jdGlvbiBmb3IgbW9tZW50LmZuLmZyb20sIG1vbWVudC5mbi5mcm9tTm93LCBhbmQgbW9tZW50LmR1cmF0aW9uLmZuLmh1bWFuaXplXG4gICAgZnVuY3Rpb24gc3Vic3RpdHV0ZVRpbWVBZ28oc3RyaW5nLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGlzRnV0dXJlLCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5yZWxhdGl2ZVRpbWUobnVtYmVyIHx8IDEsICEhd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lJDEgKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpO1xuICAgICAgICB2YXIgc2Vjb25kcyAgPSByb3VuZChkdXJhdGlvbi5hcygncycpKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgID0gcm91bmQoZHVyYXRpb24uYXMoJ20nKSk7XG4gICAgICAgIHZhciBob3VycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdoJykpO1xuICAgICAgICB2YXIgZGF5cyAgICAgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKTtcbiAgICAgICAgdmFyIG1vbnRocyAgID0gcm91bmQoZHVyYXRpb24uYXMoJ00nKSk7XG4gICAgICAgIHZhciB5ZWFycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCd5JykpO1xuXG4gICAgICAgIHZhciBhID0gc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdICB8fFxuICAgICAgICAgICAgICAgIHNlY29uZHMgPCB0aHJlc2hvbGRzLnMgICAmJiBbJ3NzJywgc2Vjb25kc10gfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDw9IDEgICAgICAgICAgICAgJiYgWydtJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8IHRocmVzaG9sZHMubSAgICYmIFsnbW0nLCBtaW51dGVzXSB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2gnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDwgdGhyZXNob2xkcy5oICAgJiYgWydoaCcsIGhvdXJzXSAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8PSAxICAgICAgICAgICAgICYmIFsnZCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPCB0aHJlc2hvbGRzLmQgICAmJiBbJ2RkJywgZGF5c10gICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDw9IDEgICAgICAgICAgICAgJiYgWydNJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8IHRocmVzaG9sZHMuTSAgICYmIFsnTU0nLCBtb250aHNdICB8fFxuICAgICAgICAgICAgICAgIHllYXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ3knXSAgICAgICAgICAgfHwgWyd5eScsIHllYXJzXTtcblxuICAgICAgICBhWzJdID0gd2l0aG91dFN1ZmZpeDtcbiAgICAgICAgYVszXSA9ICtwb3NOZWdEdXJhdGlvbiA+IDA7XG4gICAgICAgIGFbNF0gPSBsb2NhbGU7XG4gICAgICAgIHJldHVybiBzdWJzdGl0dXRlVGltZUFnby5hcHBseShudWxsLCBhKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IHRoZSByb3VuZGluZyBmdW5jdGlvbiBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmcgKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Yocm91bmRpbmdGdW5jdGlvbikgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdW5kID0gcm91bmRpbmdGdW5jdGlvbjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQgKHRocmVzaG9sZCwgbGltaXQpIHtcbiAgICAgICAgaWYgKHRocmVzaG9sZHNbdGhyZXNob2xkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbWl0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJlc2hvbGRzW3RocmVzaG9sZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhyZXNob2xkc1t0aHJlc2hvbGRdID0gbGltaXQ7XG4gICAgICAgIGlmICh0aHJlc2hvbGQgPT09ICdzJykge1xuICAgICAgICAgICAgdGhyZXNob2xkcy5zcyA9IGxpbWl0IC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBodW1hbml6ZSAod2l0aFN1ZmZpeCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2NhbGUgPSB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCBsb2NhbGUpO1xuXG4gICAgICAgIGlmICh3aXRoU3VmZml4KSB7XG4gICAgICAgICAgICBvdXRwdXQgPSBsb2NhbGUucGFzdEZ1dHVyZSgrdGhpcywgb3V0cHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbGUucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhYnMkMSA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gc2lnbih4KSB7XG4gICAgICAgIHJldHVybiAoKHggPiAwKSAtICh4IDwgMCkpIHx8ICt4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nJDEoKSB7XG4gICAgICAgIC8vIGZvciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxpbmcgcnVsZXM6XG4gICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnNcbiAgICAgICAgLy8gICogZGF5cyBkbyBub3QgYnViYmxlIGF0IGFsbFxuICAgICAgICAvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIHllYXJzXG4gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzXG4gICAgICAgIC8vICh0aGluayBvZiBjbG9jayBjaGFuZ2VzKVxuICAgICAgICAvLyBhbmQgYWxzbyBub3QgYmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRoKVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWNvbmRzID0gYWJzJDEodGhpcy5fbWlsbGlzZWNvbmRzKSAvIDEwMDA7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSBhYnMkMSh0aGlzLl9kYXlzKTtcbiAgICAgICAgdmFyIG1vbnRocyAgICAgICA9IGFicyQxKHRoaXMuX21vbnRocyk7XG4gICAgICAgIHZhciBtaW51dGVzLCBob3VycywgeWVhcnM7XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgICAgICAgICAgID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgaG91cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBzZWNvbmRzICU9IDYwO1xuICAgICAgICBtaW51dGVzICU9IDYwO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cblxuICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qc1xuICAgICAgICB2YXIgWSA9IHllYXJzO1xuICAgICAgICB2YXIgTSA9IG1vbnRocztcbiAgICAgICAgdmFyIEQgPSBkYXlzO1xuICAgICAgICB2YXIgaCA9IGhvdXJzO1xuICAgICAgICB2YXIgbSA9IG1pbnV0ZXM7XG4gICAgICAgIHZhciBzID0gc2Vjb25kcyA/IHNlY29uZHMudG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpIDogJyc7XG4gICAgICAgIHZhciB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCk7XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvdGFsU2lnbiA9IHRvdGFsIDwgMCA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgZGF5c1NpZ24gPSBzaWduKHRoaXMuX2RheXMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgaG1zU2lnbiA9IHNpZ24odGhpcy5fbWlsbGlzZWNvbmRzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcblxuICAgICAgICByZXR1cm4gdG90YWxTaWduICsgJ1AnICtcbiAgICAgICAgICAgIChZID8geW1TaWduICsgWSArICdZJyA6ICcnKSArXG4gICAgICAgICAgICAoTSA/IHltU2lnbiArIE0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKEQgPyBkYXlzU2lnbiArIEQgKyAnRCcgOiAnJykgK1xuICAgICAgICAgICAgKChoIHx8IG0gfHwgcykgPyAnVCcgOiAnJykgK1xuICAgICAgICAgICAgKGggPyBobXNTaWduICsgaCArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobSA/IGhtc1NpZ24gKyBtICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJyk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDIgPSBEdXJhdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcm90byQyLmlzVmFsaWQgICAgICAgID0gaXNWYWxpZCQxO1xuICAgIHByb3RvJDIuYWJzICAgICAgICAgICAgPSBhYnM7XG4gICAgcHJvdG8kMi5hZGQgICAgICAgICAgICA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgICAgICAgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgICAgICAgICAgICAgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgICAgICA9IGFzU2Vjb25kcztcbiAgICBwcm90byQyLmFzTWludXRlcyAgICAgID0gYXNNaW51dGVzO1xuICAgIHByb3RvJDIuYXNIb3VycyAgICAgICAgPSBhc0hvdXJzO1xuICAgIHByb3RvJDIuYXNEYXlzICAgICAgICAgPSBhc0RheXM7XG4gICAgcHJvdG8kMi5hc1dlZWtzICAgICAgICA9IGFzV2Vla3M7XG4gICAgcHJvdG8kMi5hc01vbnRocyAgICAgICA9IGFzTW9udGhzO1xuICAgIHByb3RvJDIuYXNRdWFydGVycyAgICAgPSBhc1F1YXJ0ZXJzO1xuICAgIHByb3RvJDIuYXNZZWFycyAgICAgICAgPSBhc1llYXJzO1xuICAgIHByb3RvJDIudmFsdWVPZiAgICAgICAgPSB2YWx1ZU9mJDE7XG4gICAgcHJvdG8kMi5fYnViYmxlICAgICAgICA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lICAgICAgICAgID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCAgICAgICAgICAgID0gZ2V0JDI7XG4gICAgcHJvdG8kMi5taWxsaXNlY29uZHMgICA9IG1pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLnNlY29uZHMgICAgICAgID0gc2Vjb25kcztcbiAgICBwcm90byQyLm1pbnV0ZXMgICAgICAgID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzICAgICAgICAgID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzICAgICAgICAgICA9IGRheXM7XG4gICAgcHJvdG8kMi53ZWVrcyAgICAgICAgICA9IHdlZWtzO1xuICAgIHByb3RvJDIubW9udGhzICAgICAgICAgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyAgICAgICAgICA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgICAgICAgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiAgICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLmxvY2FsZSAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvJDIubG9jYWxlRGF0YSAgICAgPSBsb2NhbGVEYXRhO1xuXG4gICAgcHJvdG8kMi50b0lzb1N0cmluZyA9IGRlcHJlY2F0ZSgndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLCB0b0lTT1N0cmluZyQxKTtcbiAgICBwcm90byQyLmxhbmcgPSBsYW5nO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd4JywgMCwgMCwgJ3ZhbHVlT2YnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3gnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTtcbiAgICBhZGRQYXJzZVRva2VuKCdYJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQsIDEwKSAqIDEwMDApO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ3gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUodG9JbnQoaW5wdXQpKTtcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuXG4gICAgaG9va3MudmVyc2lvbiA9ICcyLjI0LjAnO1xuXG4gICAgc2V0SG9va0NhbGxiYWNrKGNyZWF0ZUxvY2FsKTtcblxuICAgIGhvb2tzLmZuICAgICAgICAgICAgICAgICAgICA9IHByb3RvO1xuICAgIGhvb2tzLm1pbiAgICAgICAgICAgICAgICAgICA9IG1pbjtcbiAgICBob29rcy5tYXggICAgICAgICAgICAgICAgICAgPSBtYXg7XG4gICAgaG9va3Mubm93ICAgICAgICAgICAgICAgICAgID0gbm93O1xuICAgIGhvb2tzLnV0YyAgICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVUQztcbiAgICBob29rcy51bml4ICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVbml4O1xuICAgIGhvb2tzLm1vbnRocyAgICAgICAgICAgICAgICA9IGxpc3RNb250aHM7XG4gICAgaG9va3MuaXNEYXRlICAgICAgICAgICAgICAgID0gaXNEYXRlO1xuICAgIGhvb2tzLmxvY2FsZSAgICAgICAgICAgICAgICA9IGdldFNldEdsb2JhbExvY2FsZTtcbiAgICBob29rcy5pbnZhbGlkICAgICAgICAgICAgICAgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uICAgICAgICAgICAgICA9IGNyZWF0ZUR1cmF0aW9uO1xuICAgIGhvb2tzLmlzTW9tZW50ICAgICAgICAgICAgICA9IGlzTW9tZW50O1xuICAgIGhvb2tzLndlZWtkYXlzICAgICAgICAgICAgICA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgICAgICAgICAgICAgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSAgICAgICAgICAgID0gZ2V0TG9jYWxlO1xuICAgIGhvb2tzLmlzRHVyYXRpb24gICAgICAgICAgICA9IGlzRHVyYXRpb247XG4gICAgaG9va3MubW9udGhzU2hvcnQgICAgICAgICAgID0gbGlzdE1vbnRoc1Nob3J0O1xuICAgIGhvb2tzLndlZWtkYXlzTWluICAgICAgICAgICA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgICAgICAgICAgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlICAgICAgICAgID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgICAgICAgICAgICAgICA9IGxpc3RMb2NhbGVzO1xuICAgIGhvb2tzLndlZWtkYXlzU2hvcnQgICAgICAgICA9IGxpc3RXZWVrZGF5c1Nob3J0O1xuICAgIGhvb2tzLm5vcm1hbGl6ZVVuaXRzICAgICAgICA9IG5vcm1hbGl6ZVVuaXRzO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVJvdW5kaW5nICA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCAgICAgICAgPSBnZXRDYWxlbmRhckZvcm1hdDtcbiAgICBob29rcy5wcm90b3R5cGUgICAgICAgICAgICAgPSBwcm90bztcblxuICAgIC8vIGN1cnJlbnRseSBIVE1MNSBpbnB1dCB0eXBlIG9ubHkgc3VwcG9ydHMgMjQtaG91ciBmb3JtYXRzXG4gICAgaG9va3MuSFRNTDVfRk1UID0ge1xuICAgICAgICBEQVRFVElNRV9MT0NBTDogJ1lZWVktTU0tRERUSEg6bW0nLCAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfU0VDT05EUzogJ1lZWVktTU0tRERUSEg6bW06c3MnLCAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfTVM6ICdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycsICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIERBVEU6ICdZWVlZLU1NLUREJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIC8+XG4gICAgICAgIFRJTUU6ICdISDptbScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIC8+XG4gICAgICAgIFRJTUVfU0VDT05EUzogJ0hIOm1tOnNzJywgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgV0VFSzogJ0dHR0ctW1ddV1cnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTtcblxufS5jYWxsKHdpbmRvdywgZmFsc2UpKTtcbiIsIi8qKiogSU1QT1JUUyBGUk9NIGltcG9ydHMtbG9hZGVyICoqKi9cblxuKGZ1bmN0aW9uKGRlZmluZSwgZXhwb3J0cykge1xuLyohXG4gKiB0eXBlYWhlYWQuanMgMC4xMS4xXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdHdpdHRlci90eXBlYWhlYWQuanNcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUgVHdpdHRlciwgSW5jLiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVRcbiAqL1xuXG4oZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkge1xuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoXCJ0eXBlYWhlYWQuanNcIiwgWyBcImpxdWVyeVwiIF0sIGZ1bmN0aW9uKGEwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFjdG9yeShhMCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJqcXVlcnlcIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICB9XG59KSh0aGlzLCBmdW5jdGlvbigkKSB7XG4gICAgdmFyIF8gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc01zaWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpID8gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKG1zaWUgfHJ2OikoXFxkKyguXFxkKyk/KS9pKVsyXSA6IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQmxhbmtTdHJpbmc6IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgICAgIHJldHVybiAhc3RyIHx8IC9eXFxzKiQvLnRlc3Qoc3RyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlc2NhcGVSZWdFeENoYXJzOiBmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCBcIlxcXFwkJlwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1N0cmluZzogZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNOdW1iZXI6IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQXJyYXk6ICQuaXNBcnJheSxcbiAgICAgICAgICAgIGlzRnVuY3Rpb246ICQuaXNGdW5jdGlvbixcbiAgICAgICAgICAgIGlzT2JqZWN0OiAkLmlzUGxhaW5PYmplY3QsXG4gICAgICAgICAgICBpc1VuZGVmaW5lZDogZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNFbGVtZW50OiBmdW5jdGlvbihvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISEob2JqICYmIG9iai5ub2RlVHlwZSA9PT0gMSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNKUXVlcnk6IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiAkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRvU3RyOiBmdW5jdGlvbiB0b1N0cihzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQocykgfHwgcyA9PT0gbnVsbCA/IFwiXCIgOiBzICsgXCJcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiaW5kOiAkLnByb3h5LFxuICAgICAgICAgICAgZWFjaDogZnVuY3Rpb24oY29sbGVjdGlvbiwgY2IpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2goY29sbGVjdGlvbiwgcmV2ZXJzZUFyZ3MpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJldmVyc2VBcmdzKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2IodmFsdWUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWFwOiAkLm1hcCxcbiAgICAgICAgICAgIGZpbHRlcjogJC5ncmVwLFxuICAgICAgICAgICAgZXZlcnk6IGZ1bmN0aW9uKG9iaiwgdGVzdCkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICQuZWFjaChvYmosIGZ1bmN0aW9uKGtleSwgdmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHJlc3VsdCA9IHRlc3QuY2FsbChudWxsLCB2YWwsIGtleSwgb2JqKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzb21lOiBmdW5jdGlvbihvYmosIHRlc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJC5lYWNoKG9iaiwgZnVuY3Rpb24oa2V5LCB2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9IHRlc3QuY2FsbChudWxsLCB2YWwsIGtleSwgb2JqKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1peGluOiAkLmV4dGVuZCxcbiAgICAgICAgICAgIGlkZW50aXR5OiBmdW5jdGlvbih4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgb2JqKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRJZEdlbmVyYXRvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRlbXBsYXRpZnk6IGZ1bmN0aW9uIHRlbXBsYXRpZnkob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQuaXNGdW5jdGlvbihvYmopID8gb2JqIDogdGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdGVtcGxhdGUoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcob2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmZXI6IGZ1bmN0aW9uKGZuKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmbiwgMCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVib3VuY2U6IGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aW1lb3V0LCByZXN1bHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHMsIGxhdGVyLCBjYWxsTm93O1xuICAgICAgICAgICAgICAgICAgICBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbE5vdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhyb3R0bGU6IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGV4dCwgYXJncywgdGltZW91dCwgcmVzdWx0LCBwcmV2aW91cywgbGF0ZXI7XG4gICAgICAgICAgICAgICAgcHJldmlvdXMgPSAwO1xuICAgICAgICAgICAgICAgIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpLCByZW1haW5pbmcgPSB3YWl0IC0gKG5vdyAtIHByZXZpb3VzKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHZhbCkgPyB2YWwgOiBKU09OLnN0cmluZ2lmeSh2YWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vb3A6IGZ1bmN0aW9uKCkge31cbiAgICAgICAgfTtcbiAgICB9KCk7XG4gICAgdmFyIFdXVyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGRlZmF1bHRDbGFzc05hbWVzID0ge1xuICAgICAgICAgICAgd3JhcHBlcjogXCJ0d2l0dGVyLXR5cGVhaGVhZFwiLFxuICAgICAgICAgICAgaW5wdXQ6IFwidHQtaW5wdXRcIixcbiAgICAgICAgICAgIGhpbnQ6IFwidHQtaGludFwiLFxuICAgICAgICAgICAgbWVudTogXCJ0dC1tZW51XCIsXG4gICAgICAgICAgICBkYXRhc2V0OiBcInR0LWRhdGFzZXRcIixcbiAgICAgICAgICAgIHN1Z2dlc3Rpb246IFwidHQtc3VnZ2VzdGlvblwiLFxuICAgICAgICAgICAgc2VsZWN0YWJsZTogXCJ0dC1zZWxlY3RhYmxlXCIsXG4gICAgICAgICAgICBlbXB0eTogXCJ0dC1lbXB0eVwiLFxuICAgICAgICAgICAgb3BlbjogXCJ0dC1vcGVuXCIsXG4gICAgICAgICAgICBjdXJzb3I6IFwidHQtY3Vyc29yXCIsXG4gICAgICAgICAgICBoaWdobGlnaHQ6IFwidHQtaGlnaGxpZ2h0XCJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGJ1aWxkO1xuICAgICAgICBmdW5jdGlvbiBidWlsZChvKSB7XG4gICAgICAgICAgICB2YXIgd3d3LCBjbGFzc2VzO1xuICAgICAgICAgICAgY2xhc3NlcyA9IF8ubWl4aW4oe30sIGRlZmF1bHRDbGFzc05hbWVzLCBvKTtcbiAgICAgICAgICAgIHd3dyA9IHtcbiAgICAgICAgICAgICAgICBjc3M6IGJ1aWxkQ3NzKCksXG4gICAgICAgICAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICAgICAgICAgICAgICBodG1sOiBidWlsZEh0bWwoY2xhc3NlcyksXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiBidWlsZFNlbGVjdG9ycyhjbGFzc2VzKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3NzOiB3d3cuY3NzLFxuICAgICAgICAgICAgICAgIGh0bWw6IHd3dy5odG1sLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM6IHd3dy5jbGFzc2VzLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogd3d3LnNlbGVjdG9ycyxcbiAgICAgICAgICAgICAgICBtaXhpbjogZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICBfLm1peGluKG8sIHd3dyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBidWlsZEh0bWwoYykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiAnPHNwYW4gY2xhc3M9XCInICsgYy53cmFwcGVyICsgJ1wiPjwvc3Bhbj4nLFxuICAgICAgICAgICAgICAgIG1lbnU6ICc8ZGl2IGNsYXNzPVwiJyArIGMubWVudSArICdcIj48L2Rpdj4nXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkU2VsZWN0b3JzKGNsYXNzZXMpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3RvcnMgPSB7fTtcbiAgICAgICAgICAgIF8uZWFjaChjbGFzc2VzLCBmdW5jdGlvbih2LCBrKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzW2tdID0gXCIuXCIgKyB2O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0b3JzO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkQ3NzKCkge1xuICAgICAgICAgICAgdmFyIGNzcyA9IHtcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhpbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBcIjBcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IFwiMVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcInRvcFwiLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5wdXRXaXRoTm9IaW50OiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246IFwidG9wXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lbnU6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogXCIxMDBcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJub25lXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGx0cjoge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBcIjBcIixcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IFwiYXV0b1wiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBydGw6IHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBcIiAwXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKF8uaXNNc2llKCkpIHtcbiAgICAgICAgICAgICAgICBfLm1peGluKGNzcy5pbnB1dCwge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IFwidXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNylcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNzcztcbiAgICAgICAgfVxuICAgIH0oKTtcbiAgICB2YXIgRXZlbnRCdXMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgIHZhciBuYW1lc3BhY2UsIGRlcHJlY2F0aW9uTWFwO1xuICAgICAgICBuYW1lc3BhY2UgPSBcInR5cGVhaGVhZDpcIjtcbiAgICAgICAgZGVwcmVjYXRpb25NYXAgPSB7XG4gICAgICAgICAgICByZW5kZXI6IFwicmVuZGVyZWRcIixcbiAgICAgICAgICAgIGN1cnNvcmNoYW5nZTogXCJjdXJzb3JjaGFuZ2VkXCIsXG4gICAgICAgICAgICBzZWxlY3Q6IFwic2VsZWN0ZWRcIixcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJhdXRvY29tcGxldGVkXCJcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gRXZlbnRCdXMobykge1xuICAgICAgICAgICAgaWYgKCFvIHx8ICFvLmVsKSB7XG4gICAgICAgICAgICAgICAgJC5lcnJvcihcIkV2ZW50QnVzIGluaXRpYWxpemVkIHdpdGhvdXQgZWxcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiRlbCA9ICQoby5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgXy5taXhpbihFdmVudEJ1cy5wcm90b3R5cGUsIHtcbiAgICAgICAgICAgIF90cmlnZ2VyOiBmdW5jdGlvbih0eXBlLCBhcmdzKSB7XG4gICAgICAgICAgICAgICAgdmFyICRlO1xuICAgICAgICAgICAgICAgICRlID0gJC5FdmVudChuYW1lc3BhY2UgKyB0eXBlKTtcbiAgICAgICAgICAgICAgICAoYXJncyA9IGFyZ3MgfHwgW10pLnVuc2hpZnQoJGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnRyaWdnZXIuYXBwbHkodGhpcy4kZWwsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiAkZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncywgJGU7XG4gICAgICAgICAgICAgICAgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgICAgICAgICAkZSA9IHRoaXMuX3RyaWdnZXIoXCJiZWZvcmVcIiArIHR5cGUsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiAkZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlcHJlY2F0ZWRUeXBlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIodHlwZSwgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVwcmVjYXRlZFR5cGUgPSBkZXByZWNhdGlvbk1hcFt0eXBlXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKGRlcHJlY2F0ZWRUeXBlLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBFdmVudEJ1cztcbiAgICB9KCk7XG4gICAgdmFyIEV2ZW50RW1pdHRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIHNwbGl0dGVyID0gL1xccysvLCBuZXh0VGljayA9IGdldE5leHRUaWNrKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvblN5bmM6IG9uU3luYyxcbiAgICAgICAgICAgIG9uQXN5bmM6IG9uQXN5bmMsXG4gICAgICAgICAgICBvZmY6IG9mZixcbiAgICAgICAgICAgIHRyaWdnZXI6IHRyaWdnZXJcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gb24obWV0aG9kLCB0eXBlcywgY2IsIGNvbnRleHQpIHtcbiAgICAgICAgICAgIHZhciB0eXBlO1xuICAgICAgICAgICAgaWYgKCFjYikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHlwZXMgPSB0eXBlcy5zcGxpdChzcGxpdHRlcik7XG4gICAgICAgICAgICBjYiA9IGNvbnRleHQgPyBiaW5kQ29udGV4dChjYiwgY29udGV4dCkgOiBjYjtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcbiAgICAgICAgICAgIHdoaWxlICh0eXBlID0gdHlwZXMuc2hpZnQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1t0eXBlXSA9IHRoaXMuX2NhbGxiYWNrc1t0eXBlXSB8fCB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBhc3luYzogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrc1t0eXBlXVttZXRob2RdLnB1c2goY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25Bc3luYyh0eXBlcywgY2IsIGNvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBvbi5jYWxsKHRoaXMsIFwiYXN5bmNcIiwgdHlwZXMsIGNiLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvblN5bmModHlwZXMsIGNiLCBjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gb24uY2FsbCh0aGlzLCBcInN5bmNcIiwgdHlwZXMsIGNiLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvZmYodHlwZXMpIHtcbiAgICAgICAgICAgIHZhciB0eXBlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYWxsYmFja3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHR5cGVzID0gdHlwZXMuc3BsaXQoc3BsaXR0ZXIpO1xuICAgICAgICAgICAgd2hpbGUgKHR5cGUgPSB0eXBlcy5zaGlmdCgpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1t0eXBlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHRyaWdnZXIodHlwZXMpIHtcbiAgICAgICAgICAgIHZhciB0eXBlLCBjYWxsYmFja3MsIGFyZ3MsIHN5bmNGbHVzaCwgYXN5bmNGbHVzaDtcbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0eXBlcyA9IHR5cGVzLnNwbGl0KHNwbGl0dGVyKTtcbiAgICAgICAgICAgIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgICAgICB3aGlsZSAoKHR5cGUgPSB0eXBlcy5zaGlmdCgpKSAmJiAoY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzW3R5cGVdKSkge1xuICAgICAgICAgICAgICAgIHN5bmNGbHVzaCA9IGdldEZsdXNoKGNhbGxiYWNrcy5zeW5jLCB0aGlzLCBbIHR5cGUgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgICAgIGFzeW5jRmx1c2ggPSBnZXRGbHVzaChjYWxsYmFja3MuYXN5bmMsIHRoaXMsIFsgdHlwZSBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICAgICAgc3luY0ZsdXNoKCkgJiYgbmV4dFRpY2soYXN5bmNGbHVzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBnZXRGbHVzaChjYWxsYmFja3MsIGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBmbHVzaDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgICAgICAgICAgIHZhciBjYW5jZWxsZWQ7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNhbGxiYWNrcy5sZW5ndGg7ICFjYW5jZWxsZWQgJiYgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZCA9IGNhbGxiYWNrc1tpXS5hcHBseShjb250ZXh0LCBhcmdzKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhY2FuY2VsbGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGdldE5leHRUaWNrKCkge1xuICAgICAgICAgICAgdmFyIG5leHRUaWNrRm47XG4gICAgICAgICAgICBpZiAod2luZG93LnNldEltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgIG5leHRUaWNrRm4gPSBmdW5jdGlvbiBuZXh0VGlja1NldEltbWVkaWF0ZShmbikge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0VGlja0ZuID0gZnVuY3Rpb24gbmV4dFRpY2tTZXRUaW1lb3V0KGZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHRUaWNrRm47XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gYmluZENvbnRleHQoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5iaW5kID8gZm4uYmluZChjb250ZXh0KSA6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGZuLmFwcGx5KGNvbnRleHQsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSgpO1xuICAgIHZhciBoaWdobGlnaHQgPSBmdW5jdGlvbihkb2MpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG5vZGU6IG51bGwsXG4gICAgICAgICAgICBwYXR0ZXJuOiBudWxsLFxuICAgICAgICAgICAgdGFnTmFtZTogXCJzdHJvbmdcIixcbiAgICAgICAgICAgIGNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgIHdvcmRzT25seTogZmFsc2UsXG4gICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gaGlnaHRsaWdodChvKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXg7XG4gICAgICAgICAgICBvID0gXy5taXhpbih7fSwgZGVmYXVsdHMsIG8pO1xuICAgICAgICAgICAgaWYgKCFvLm5vZGUgfHwgIW8ucGF0dGVybikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG8ucGF0dGVybiA9IF8uaXNBcnJheShvLnBhdHRlcm4pID8gby5wYXR0ZXJuIDogWyBvLnBhdHRlcm4gXTtcbiAgICAgICAgICAgIHJlZ2V4ID0gZ2V0UmVnZXgoby5wYXR0ZXJuLCBvLmNhc2VTZW5zaXRpdmUsIG8ud29yZHNPbmx5KTtcbiAgICAgICAgICAgIHRyYXZlcnNlKG8ubm9kZSwgaGlnaHRsaWdodFRleHROb2RlKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhpZ2h0bGlnaHRUZXh0Tm9kZSh0ZXh0Tm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXRjaCwgcGF0dGVybk5vZGUsIHdyYXBwZXJOb2RlO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCA9IHJlZ2V4LmV4ZWModGV4dE5vZGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgd3JhcHBlck5vZGUgPSBkb2MuY3JlYXRlRWxlbWVudChvLnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBvLmNsYXNzTmFtZSAmJiAod3JhcHBlck5vZGUuY2xhc3NOYW1lID0gby5jbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuTm9kZSA9IHRleHROb2RlLnNwbGl0VGV4dChtYXRjaC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5Ob2RlLnNwbGl0VGV4dChtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyTm9kZS5hcHBlbmRDaGlsZChwYXR0ZXJuTm9kZS5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyTm9kZSwgcGF0dGVybk5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISFtYXRjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIHRyYXZlcnNlKGVsLCBoaWdodGxpZ2h0VGV4dE5vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlLCBURVhUX05PREVfVFlQRSA9IDM7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGVsLmNoaWxkTm9kZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGUubm9kZVR5cGUgPT09IFRFWFRfTk9ERV9UWVBFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IGhpZ2h0bGlnaHRUZXh0Tm9kZShjaGlsZE5vZGUpID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZShjaGlsZE5vZGUsIGhpZ2h0bGlnaHRUZXh0Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZ1bmN0aW9uIGdldFJlZ2V4KHBhdHRlcm5zLCBjYXNlU2Vuc2l0aXZlLCB3b3Jkc09ubHkpIHtcbiAgICAgICAgICAgIHZhciBlc2NhcGVkUGF0dGVybnMgPSBbXSwgcmVnZXhTdHI7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcGF0dGVybnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkUGF0dGVybnMucHVzaChfLmVzY2FwZVJlZ0V4Q2hhcnMocGF0dGVybnNbaV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZ2V4U3RyID0gd29yZHNPbmx5ID8gXCJcXFxcYihcIiArIGVzY2FwZWRQYXR0ZXJucy5qb2luKFwifFwiKSArIFwiKVxcXFxiXCIgOiBcIihcIiArIGVzY2FwZWRQYXR0ZXJucy5qb2luKFwifFwiKSArIFwiKVwiO1xuICAgICAgICAgICAgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyBuZXcgUmVnRXhwKHJlZ2V4U3RyKSA6IG5ldyBSZWdFeHAocmVnZXhTdHIsIFwiaVwiKTtcbiAgICAgICAgfVxuICAgIH0od2luZG93LmRvY3VtZW50KTtcbiAgICB2YXIgSW5wdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgIHZhciBzcGVjaWFsS2V5Q29kZU1hcDtcbiAgICAgICAgc3BlY2lhbEtleUNvZGVNYXAgPSB7XG4gICAgICAgICAgICA5OiBcInRhYlwiLFxuICAgICAgICAgICAgMjc6IFwiZXNjXCIsXG4gICAgICAgICAgICAzNzogXCJsZWZ0XCIsXG4gICAgICAgICAgICAzOTogXCJyaWdodFwiLFxuICAgICAgICAgICAgMTM6IFwiZW50ZXJcIixcbiAgICAgICAgICAgIDM4OiBcInVwXCIsXG4gICAgICAgICAgICA0MDogXCJkb3duXCJcbiAgICAgICAgfTtcbiAgICAgICAgZnVuY3Rpb24gSW5wdXQobywgd3d3KSB7XG4gICAgICAgICAgICBvID0gbyB8fCB7fTtcbiAgICAgICAgICAgIGlmICghby5pbnB1dCkge1xuICAgICAgICAgICAgICAgICQuZXJyb3IoXCJpbnB1dCBpcyBtaXNzaW5nXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3d3Lm1peGluKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kaGludCA9ICQoby5oaW50KTtcbiAgICAgICAgICAgIHRoaXMuJGlucHV0ID0gJChvLmlucHV0KTtcbiAgICAgICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLiRpbnB1dC52YWwoKTtcbiAgICAgICAgICAgIHRoaXMucXVlcnlXaGVuRm9jdXNlZCA9IHRoaXMuaGFzRm9jdXMoKSA/IHRoaXMucXVlcnkgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy4kb3ZlcmZsb3dIZWxwZXIgPSBidWlsZE92ZXJmbG93SGVscGVyKHRoaXMuJGlucHV0KTtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrTGFuZ3VhZ2VEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLiRoaW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGludCA9IHRoaXMuZ2V0SGludCA9IHRoaXMuY2xlYXJIaW50ID0gdGhpcy5jbGVhckhpbnRJZkludmFsaWQgPSBfLm5vb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgSW5wdXQubm9ybWFsaXplUXVlcnkgPSBmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgICAgIHJldHVybiBfLnRvU3RyKHN0cikucmVwbGFjZSgvXlxccyovZywgXCJcIikucmVwbGFjZSgvXFxzezIsfS9nLCBcIiBcIik7XG4gICAgICAgIH07XG4gICAgICAgIF8ubWl4aW4oSW5wdXQucHJvdG90eXBlLCBFdmVudEVtaXR0ZXIsIHtcbiAgICAgICAgICAgIF9vbkJsdXI6IGZ1bmN0aW9uIG9uQmx1cigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0SW5wdXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcihcImJsdXJyZWRcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVdoZW5Gb2N1c2VkID0gdGhpcy5xdWVyeTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJmb2N1c2VkXCIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vbktleWRvd246IGZ1bmN0aW9uIG9uS2V5ZG93bigkZSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXlOYW1lID0gc3BlY2lhbEtleUNvZGVNYXBbJGUud2hpY2ggfHwgJGUua2V5Q29kZV07XG4gICAgICAgICAgICAgICAgdGhpcy5fbWFuYWdlUHJldmVudERlZmF1bHQoa2V5TmFtZSwgJGUpO1xuICAgICAgICAgICAgICAgIGlmIChrZXlOYW1lICYmIHRoaXMuX3Nob3VsZFRyaWdnZXIoa2V5TmFtZSwgJGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcihrZXlOYW1lICsgXCJLZXllZFwiLCAkZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vbklucHV0OiBmdW5jdGlvbiBvbklucHV0KCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFF1ZXJ5KHRoaXMuZ2V0SW5wdXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySGludElmSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrTGFuZ3VhZ2VEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfbWFuYWdlUHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIG1hbmFnZVByZXZlbnREZWZhdWx0KGtleU5hbWUsICRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInVwXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZG93blwiOlxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdCA9ICF3aXRoTW9kaWZpZXIoJGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQgJiYgJGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfc2hvdWxkVHJpZ2dlcjogZnVuY3Rpb24gc2hvdWxkVHJpZ2dlcihrZXlOYW1lLCAkZSkge1xuICAgICAgICAgICAgICAgIHZhciB0cmlnZ2VyO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInRhYlwiOlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyID0gIXdpdGhNb2RpZmllcigkZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyaWdnZXI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NoZWNrTGFuZ3VhZ2VEaXJlY3Rpb246IGZ1bmN0aW9uIGNoZWNrTGFuZ3VhZ2VEaXJlY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRpciA9ICh0aGlzLiRpbnB1dC5jc3MoXCJkaXJlY3Rpb25cIikgfHwgXCJsdHJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXIgIT09IGRpcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA9IGRpcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kaGludC5hdHRyKFwiZGlyXCIsIGRpcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcihcImxhbmdEaXJDaGFuZ2VkXCIsIGRpcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zZXRRdWVyeTogZnVuY3Rpb24gc2V0UXVlcnkodmFsLCBzaWxlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJlRXF1aXZhbGVudCwgaGFzRGlmZmVyZW50V2hpdGVzcGFjZTtcbiAgICAgICAgICAgICAgICBhcmVFcXVpdmFsZW50ID0gYXJlUXVlcmllc0VxdWl2YWxlbnQodmFsLCB0aGlzLnF1ZXJ5KTtcbiAgICAgICAgICAgICAgICBoYXNEaWZmZXJlbnRXaGl0ZXNwYWNlID0gYXJlRXF1aXZhbGVudCA/IHRoaXMucXVlcnkubGVuZ3RoICE9PSB2YWwubGVuZ3RoIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHZhbDtcbiAgICAgICAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhYXJlRXF1aXZhbGVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJxdWVyeUNoYW5nZWRcIiwgdGhpcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc2lsZW50ICYmIGhhc0RpZmZlcmVudFdoaXRlc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKFwid2hpdGVzcGFjZUNoYW5nZWRcIiwgdGhpcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJpbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywgb25CbHVyLCBvbkZvY3VzLCBvbktleWRvd24sIG9uSW5wdXQ7XG4gICAgICAgICAgICAgICAgb25CbHVyID0gXy5iaW5kKHRoaXMuX29uQmx1ciwgdGhpcyk7XG4gICAgICAgICAgICAgICAgb25Gb2N1cyA9IF8uYmluZCh0aGlzLl9vbkZvY3VzLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBvbktleWRvd24gPSBfLmJpbmQodGhpcy5fb25LZXlkb3duLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBvbklucHV0ID0gXy5iaW5kKHRoaXMuX29uSW5wdXQsIHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGlucHV0Lm9uKFwiYmx1ci50dFwiLCBvbkJsdXIpLm9uKFwiZm9jdXMudHRcIiwgb25Gb2N1cykub24oXCJrZXlkb3duLnR0XCIsIG9uS2V5ZG93bik7XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzTXNpZSgpIHx8IF8uaXNNc2llKCkgPiA5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGlucHV0Lm9uKFwiaW5wdXQudHRcIiwgb25JbnB1dCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kaW5wdXQub24oXCJrZXlkb3duLnR0IGtleXByZXNzLnR0IGN1dC50dCBwYXN0ZS50dFwiLCBmdW5jdGlvbigkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwZWNpYWxLZXlDb2RlTWFwWyRlLndoaWNoIHx8ICRlLmtleUNvZGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXy5kZWZlcihfLmJpbmQodGhhdC5fb25JbnB1dCwgdGhhdCwgJGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaW5wdXQuYmx1cigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldExhbmdEaXI6IGZ1bmN0aW9uIGdldExhbmdEaXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFF1ZXJ5OiBmdW5jdGlvbiBnZXRRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWVyeSB8fCBcIlwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFF1ZXJ5OiBmdW5jdGlvbiBzZXRRdWVyeSh2YWwsIHNpbGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh2YWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFF1ZXJ5KHZhbCwgc2lsZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNRdWVyeUNoYW5nZWRTaW5jZUxhc3RGb2N1czogZnVuY3Rpb24gaGFzUXVlcnlDaGFuZ2VkU2luY2VMYXN0Rm9jdXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVlcnkgIT09IHRoaXMucXVlcnlXaGVuRm9jdXNlZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRJbnB1dFZhbHVlOiBmdW5jdGlvbiBnZXRJbnB1dFZhbHVlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRpbnB1dC52YWwoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlOiBmdW5jdGlvbiBzZXRJbnB1dFZhbHVlKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaW5wdXQudmFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySGludElmSW52YWxpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrTGFuZ3VhZ2VEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldElucHV0VmFsdWU6IGZ1bmN0aW9uIHJlc2V0SW5wdXRWYWx1ZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5xdWVyeSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0SGludDogZnVuY3Rpb24gZ2V0SGludCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kaGludC52YWwoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRIaW50OiBmdW5jdGlvbiBzZXRIaW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaGludC52YWwodmFsdWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFySGludDogZnVuY3Rpb24gY2xlYXJIaW50KCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGludChcIlwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGVhckhpbnRJZkludmFsaWQ6IGZ1bmN0aW9uIGNsZWFySGludElmSW52YWxpZCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsLCBoaW50LCB2YWxJc1ByZWZpeE9mSGludCwgaXNWYWxpZDtcbiAgICAgICAgICAgICAgICB2YWwgPSB0aGlzLmdldElucHV0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBoaW50ID0gdGhpcy5nZXRIaW50KCk7XG4gICAgICAgICAgICAgICAgdmFsSXNQcmVmaXhPZkhpbnQgPSB2YWwgIT09IGhpbnQgJiYgaGludC5pbmRleE9mKHZhbCkgPT09IDA7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHZhbCAhPT0gXCJcIiAmJiB2YWxJc1ByZWZpeE9mSGludCAmJiAhdGhpcy5oYXNPdmVyZmxvdygpO1xuICAgICAgICAgICAgICAgICFpc1ZhbGlkICYmIHRoaXMuY2xlYXJIaW50KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzRm9jdXM6IGZ1bmN0aW9uIGhhc0ZvY3VzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRpbnB1dC5pcyhcIjpmb2N1c1wiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNPdmVyZmxvdzogZnVuY3Rpb24gaGFzT3ZlcmZsb3coKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnN0cmFpbnQgPSB0aGlzLiRpbnB1dC53aWR0aCgpIC0gMjtcbiAgICAgICAgICAgICAgICB0aGlzLiRvdmVyZmxvd0hlbHBlci50ZXh0KHRoaXMuZ2V0SW5wdXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kb3ZlcmZsb3dIZWxwZXIud2lkdGgoKSA+PSBjb25zdHJhaW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQ3Vyc29yQXRFbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZUxlbmd0aCwgc2VsZWN0aW9uU3RhcnQsIHJhbmdlO1xuICAgICAgICAgICAgICAgIHZhbHVlTGVuZ3RoID0gdGhpcy4kaW5wdXQudmFsKCkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gdGhpcy4kaW5wdXRbMF0uc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uaXNOdW1iZXIoc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25TdGFydCA9PT0gdmFsdWVMZW5ndGg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UubW92ZVN0YXJ0KFwiY2hhcmFjdGVyXCIsIC12YWx1ZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZUxlbmd0aCA9PT0gcmFuZ2UudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kaGludC5vZmYoXCIudHRcIik7XG4gICAgICAgICAgICAgICAgdGhpcy4kaW5wdXQub2ZmKFwiLnR0XCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuJG92ZXJmbG93SGVscGVyLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGhpbnQgPSB0aGlzLiRpbnB1dCA9IHRoaXMuJG92ZXJmbG93SGVscGVyID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIElucHV0O1xuICAgICAgICBmdW5jdGlvbiBidWlsZE92ZXJmbG93SGVscGVyKCRpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICQoJzxwcmUgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9wcmU+JykuY3NzKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogXCJwcmVcIixcbiAgICAgICAgICAgICAgICBmb250RmFtaWx5OiAkaW5wdXQuY3NzKFwiZm9udC1mYW1pbHlcIiksXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICRpbnB1dC5jc3MoXCJmb250LXNpemVcIiksXG4gICAgICAgICAgICAgICAgZm9udFN0eWxlOiAkaW5wdXQuY3NzKFwiZm9udC1zdHlsZVwiKSxcbiAgICAgICAgICAgICAgICBmb250VmFyaWFudDogJGlucHV0LmNzcyhcImZvbnQtdmFyaWFudFwiKSxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAkaW5wdXQuY3NzKFwiZm9udC13ZWlnaHRcIiksXG4gICAgICAgICAgICAgICAgd29yZFNwYWNpbmc6ICRpbnB1dC5jc3MoXCJ3b3JkLXNwYWNpbmdcIiksXG4gICAgICAgICAgICAgICAgbGV0dGVyU3BhY2luZzogJGlucHV0LmNzcyhcImxldHRlci1zcGFjaW5nXCIpLFxuICAgICAgICAgICAgICAgIHRleHRJbmRlbnQ6ICRpbnB1dC5jc3MoXCJ0ZXh0LWluZGVudFwiKSxcbiAgICAgICAgICAgICAgICB0ZXh0UmVuZGVyaW5nOiAkaW5wdXQuY3NzKFwidGV4dC1yZW5kZXJpbmdcIiksXG4gICAgICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJGlucHV0LmNzcyhcInRleHQtdHJhbnNmb3JtXCIpXG4gICAgICAgICAgICB9KS5pbnNlcnRBZnRlcigkaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFyZVF1ZXJpZXNFcXVpdmFsZW50KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBJbnB1dC5ub3JtYWxpemVRdWVyeShhKSA9PT0gSW5wdXQubm9ybWFsaXplUXVlcnkoYik7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gd2l0aE1vZGlmaWVyKCRlKSB7XG4gICAgICAgICAgICByZXR1cm4gJGUuYWx0S2V5IHx8ICRlLmN0cmxLZXkgfHwgJGUubWV0YUtleSB8fCAkZS5zaGlmdEtleTtcbiAgICAgICAgfVxuICAgIH0oKTtcbiAgICB2YXIgRGF0YXNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGtleXMsIG5hbWVHZW5lcmF0b3I7XG4gICAgICAgIGtleXMgPSB7XG4gICAgICAgICAgICB2YWw6IFwidHQtc2VsZWN0YWJsZS1kaXNwbGF5XCIsXG4gICAgICAgICAgICBvYmo6IFwidHQtc2VsZWN0YWJsZS1vYmplY3RcIlxuICAgICAgICB9O1xuICAgICAgICBuYW1lR2VuZXJhdG9yID0gXy5nZXRJZEdlbmVyYXRvcigpO1xuICAgICAgICBmdW5jdGlvbiBEYXRhc2V0KG8sIHd3dykge1xuICAgICAgICAgICAgbyA9IG8gfHwge307XG4gICAgICAgICAgICBvLnRlbXBsYXRlcyA9IG8udGVtcGxhdGVzIHx8IHt9O1xuICAgICAgICAgICAgby50ZW1wbGF0ZXMubm90Rm91bmQgPSBvLnRlbXBsYXRlcy5ub3RGb3VuZCB8fCBvLnRlbXBsYXRlcy5lbXB0eTtcbiAgICAgICAgICAgIGlmICghby5zb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAkLmVycm9yKFwibWlzc2luZyBzb3VyY2VcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW8ubm9kZSkge1xuICAgICAgICAgICAgICAgICQuZXJyb3IoXCJtaXNzaW5nIG5vZGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoby5uYW1lICYmICFpc1ZhbGlkTmFtZShvLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgJC5lcnJvcihcImludmFsaWQgZGF0YXNldCBuYW1lOiBcIiArIG8ubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3d3cubWl4aW4odGhpcyk7XG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodCA9ICEhby5oaWdobGlnaHQ7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSBvLm5hbWUgfHwgbmFtZUdlbmVyYXRvcigpO1xuICAgICAgICAgICAgdGhpcy5saW1pdCA9IG8ubGltaXQgfHwgNTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUZuID0gZ2V0RGlzcGxheUZuKG8uZGlzcGxheSB8fCBvLmRpc3BsYXlLZXkpO1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBnZXRUZW1wbGF0ZXMoby50ZW1wbGF0ZXMsIHRoaXMuZGlzcGxheUZuKTtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gby5zb3VyY2UuX190dEFkYXB0ZXIgPyBvLnNvdXJjZS5fX3R0QWRhcHRlcigpIDogby5zb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmFzeW5jID0gXy5pc1VuZGVmaW5lZChvLmFzeW5jKSA/IHRoaXMuc291cmNlLmxlbmd0aCA+IDIgOiAhIW8uYXN5bmM7XG4gICAgICAgICAgICB0aGlzLl9yZXNldExhc3RTdWdnZXN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLiRlbCA9ICQoby5ub2RlKS5hZGRDbGFzcyh0aGlzLmNsYXNzZXMuZGF0YXNldCkuYWRkQ2xhc3ModGhpcy5jbGFzc2VzLmRhdGFzZXQgKyBcIi1cIiArIHRoaXMubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgRGF0YXNldC5leHRyYWN0RGF0YSA9IGZ1bmN0aW9uIGV4dHJhY3REYXRhKGVsKSB7XG4gICAgICAgICAgICB2YXIgJGVsID0gJChlbCk7XG4gICAgICAgICAgICBpZiAoJGVsLmRhdGEoa2V5cy5vYmopKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsOiAkZWwuZGF0YShrZXlzLnZhbCkgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgb2JqOiAkZWwuZGF0YShrZXlzLm9iaikgfHwgbnVsbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgXy5taXhpbihEYXRhc2V0LnByb3RvdHlwZSwgRXZlbnRFbWl0dGVyLCB7XG4gICAgICAgICAgICBfb3ZlcndyaXRlOiBmdW5jdGlvbiBvdmVyd3JpdGUocXVlcnksIHN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlclN1Z2dlc3Rpb25zKHF1ZXJ5LCBzdWdnZXN0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFzeW5jICYmIHRoaXMudGVtcGxhdGVzLnBlbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyUGVuZGluZyhxdWVyeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5hc3luYyAmJiB0aGlzLnRlbXBsYXRlcy5ub3RGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJOb3RGb3VuZChxdWVyeSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKFwicmVuZGVyZWRcIiwgdGhpcy5uYW1lLCBzdWdnZXN0aW9ucywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9hcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZChxdWVyeSwgc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgIGlmIChzdWdnZXN0aW9ucy5sZW5ndGggJiYgdGhpcy4kbGFzdFN1Z2dlc3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFN1Z2dlc3Rpb25zKHF1ZXJ5LCBzdWdnZXN0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyU3VnZ2VzdGlvbnMocXVlcnksIHN1Z2dlc3Rpb25zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLiRsYXN0U3VnZ2VzdGlvbi5sZW5ndGggJiYgdGhpcy50ZW1wbGF0ZXMubm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyTm90Rm91bmQocXVlcnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJyZW5kZXJlZFwiLCB0aGlzLm5hbWUsIHN1Z2dlc3Rpb25zLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfcmVuZGVyU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uIHJlbmRlclN1Z2dlc3Rpb25zKHF1ZXJ5LCBzdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciAkZnJhZ21lbnQ7XG4gICAgICAgICAgICAgICAgJGZyYWdtZW50ID0gdGhpcy5fZ2V0U3VnZ2VzdGlvbnNGcmFnbWVudChxdWVyeSwgc3VnZ2VzdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGxhc3RTdWdnZXN0aW9uID0gJGZyYWdtZW50LmNoaWxkcmVuKCkubGFzdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLmh0bWwoJGZyYWdtZW50KS5wcmVwZW5kKHRoaXMuX2dldEhlYWRlcihxdWVyeSwgc3VnZ2VzdGlvbnMpKS5hcHBlbmQodGhpcy5fZ2V0Rm9vdGVyKHF1ZXJ5LCBzdWdnZXN0aW9ucykpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9hcHBlbmRTdWdnZXN0aW9uczogZnVuY3Rpb24gYXBwZW5kU3VnZ2VzdGlvbnMocXVlcnksIHN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgdmFyICRmcmFnbWVudCwgJGxhc3RTdWdnZXN0aW9uO1xuICAgICAgICAgICAgICAgICRmcmFnbWVudCA9IHRoaXMuX2dldFN1Z2dlc3Rpb25zRnJhZ21lbnQocXVlcnksIHN1Z2dlc3Rpb25zKTtcbiAgICAgICAgICAgICAgICAkbGFzdFN1Z2dlc3Rpb24gPSAkZnJhZ21lbnQuY2hpbGRyZW4oKS5sYXN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kbGFzdFN1Z2dlc3Rpb24uYWZ0ZXIoJGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLiRsYXN0U3VnZ2VzdGlvbiA9ICRsYXN0U3VnZ2VzdGlvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfcmVuZGVyUGVuZGluZzogZnVuY3Rpb24gcmVuZGVyUGVuZGluZyhxdWVyeSkge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzLnBlbmRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRMYXN0U3VnZ2VzdGlvbigpO1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlICYmIHRoaXMuJGVsLmh0bWwodGVtcGxhdGUoe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHRoaXMubmFtZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfcmVuZGVyTm90Rm91bmQ6IGZ1bmN0aW9uIHJlbmRlck5vdEZvdW5kKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZXMubm90Rm91bmQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRMYXN0U3VnZ2VzdGlvbigpO1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlICYmIHRoaXMuJGVsLmh0bWwodGVtcGxhdGUoe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHRoaXMubmFtZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfZW1wdHk6IGZ1bmN0aW9uIGVtcHR5KCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRMYXN0U3VnZ2VzdGlvbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9nZXRTdWdnZXN0aW9uc0ZyYWdtZW50OiBmdW5jdGlvbiBnZXRTdWdnZXN0aW9uc0ZyYWdtZW50KHF1ZXJ5LCBzdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywgZnJhZ21lbnQ7XG4gICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICAgICAgICAgICAgXy5lYWNoKHN1Z2dlc3Rpb25zLCBmdW5jdGlvbiBnZXRTdWdnZXN0aW9uTm9kZShzdWdnZXN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwsIGNvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSB0aGF0Ll9pbmplY3RRdWVyeShxdWVyeSwgc3VnZ2VzdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICRlbCA9ICQodGhhdC50ZW1wbGF0ZXMuc3VnZ2VzdGlvbihjb250ZXh0KSkuZGF0YShrZXlzLm9iaiwgc3VnZ2VzdGlvbikuZGF0YShrZXlzLnZhbCwgdGhhdC5kaXNwbGF5Rm4oc3VnZ2VzdGlvbikpLmFkZENsYXNzKHRoYXQuY2xhc3Nlcy5zdWdnZXN0aW9uICsgXCIgXCIgKyB0aGF0LmNsYXNzZXMuc2VsZWN0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKCRlbFswXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHQgJiYgaGlnaGxpZ2h0KHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLmNsYXNzZXMuaGlnaGxpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBub2RlOiBmcmFnbWVudCxcbiAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogcXVlcnlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJChmcmFnbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2dldEZvb3RlcjogZnVuY3Rpb24gZ2V0Rm9vdGVyKHF1ZXJ5LCBzdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcy5mb290ZXIgPyB0aGlzLnRlbXBsYXRlcy5mb290ZXIoe1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDogdGhpcy5uYW1lXG4gICAgICAgICAgICAgICAgfSkgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9nZXRIZWFkZXI6IGZ1bmN0aW9uIGdldEhlYWRlcihxdWVyeSwgc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXMuaGVhZGVyID8gdGhpcy50ZW1wbGF0ZXMuaGVhZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHRoaXMubmFtZVxuICAgICAgICAgICAgICAgIH0pIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfcmVzZXRMYXN0U3VnZ2VzdGlvbjogZnVuY3Rpb24gcmVzZXRMYXN0U3VnZ2VzdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRsYXN0U3VnZ2VzdGlvbiA9ICQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfaW5qZWN0UXVlcnk6IGZ1bmN0aW9uIGluamVjdFF1ZXJ5KHF1ZXJ5LCBvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXy5pc09iamVjdChvYmopID8gXy5taXhpbih7XG4gICAgICAgICAgICAgICAgICAgIF9xdWVyeTogcXVlcnlcbiAgICAgICAgICAgICAgICB9LCBvYmopIDogb2JqO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLCBjYW5jZWxlZCA9IGZhbHNlLCBzeW5jQ2FsbGVkID0gZmFsc2UsIHJlbmRlcmVkID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsID0gZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgICAgICAgICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY2FuY2VsID0gJC5ub29wO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LmFzeW5jICYmIHRoYXQudHJpZ2dlcihcImFzeW5jQ2FuY2VsZWRcIiwgcXVlcnkpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2UocXVlcnksIHN5bmMsIGFzeW5jKTtcbiAgICAgICAgICAgICAgICAhc3luY0NhbGxlZCAmJiBzeW5jKFtdKTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzeW5jKHN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzeW5jQ2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3luY0NhbGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gKHN1Z2dlc3Rpb25zIHx8IFtdKS5zbGljZSgwLCB0aGF0LmxpbWl0KTtcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZWQgPSBzdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX292ZXJ3cml0ZShxdWVyeSwgc3VnZ2VzdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZWQgPCB0aGF0LmxpbWl0ICYmIHRoYXQuYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJpZ2dlcihcImFzeW5jUmVxdWVzdGVkXCIsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhc3luYyhzdWdnZXN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGVkICYmIHJlbmRlcmVkIDwgdGhhdC5saW1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jYW5jZWwgPSAkLm5vb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlZCArPSBzdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hcHBlbmQocXVlcnksIHN1Z2dlc3Rpb25zLnNsaWNlKDAsIHRoYXQubGltaXQgLSByZW5kZXJlZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hc3luYyAmJiB0aGF0LnRyaWdnZXIoXCJhc3luY1JlY2VpdmVkXCIsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5jZWw6ICQubm9vcCxcbiAgICAgICAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbXB0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKFwiY2xlYXJlZFwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0VtcHR5OiBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRlbC5pcyhcIjplbXB0eVwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIERhdGFzZXQ7XG4gICAgICAgIGZ1bmN0aW9uIGdldERpc3BsYXlGbihkaXNwbGF5KSB7XG4gICAgICAgICAgICBkaXNwbGF5ID0gZGlzcGxheSB8fCBfLnN0cmluZ2lmeTtcbiAgICAgICAgICAgIHJldHVybiBfLmlzRnVuY3Rpb24oZGlzcGxheSkgPyBkaXNwbGF5IDogZGlzcGxheUZuO1xuICAgICAgICAgICAgZnVuY3Rpb24gZGlzcGxheUZuKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmpbZGlzcGxheV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ2V0VGVtcGxhdGVzKHRlbXBsYXRlcywgZGlzcGxheUZuKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5vdEZvdW5kOiB0ZW1wbGF0ZXMubm90Rm91bmQgJiYgXy50ZW1wbGF0aWZ5KHRlbXBsYXRlcy5ub3RGb3VuZCksXG4gICAgICAgICAgICAgICAgcGVuZGluZzogdGVtcGxhdGVzLnBlbmRpbmcgJiYgXy50ZW1wbGF0aWZ5KHRlbXBsYXRlcy5wZW5kaW5nKSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRlbXBsYXRlcy5oZWFkZXIgJiYgXy50ZW1wbGF0aWZ5KHRlbXBsYXRlcy5oZWFkZXIpLFxuICAgICAgICAgICAgICAgIGZvb3RlcjogdGVtcGxhdGVzLmZvb3RlciAmJiBfLnRlbXBsYXRpZnkodGVtcGxhdGVzLmZvb3RlciksXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGlvbjogdGVtcGxhdGVzLnN1Z2dlc3Rpb24gfHwgc3VnZ2VzdGlvblRlbXBsYXRlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZnVuY3Rpb24gc3VnZ2VzdGlvblRlbXBsYXRlKGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcIjxkaXY+XCIpLnRleHQoZGlzcGxheUZuKGNvbnRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBpc1ZhbGlkTmFtZShzdHIpIHtcbiAgICAgICAgICAgIHJldHVybiAvXltfYS16QS1aMC05LV0rJC8udGVzdChzdHIpO1xuICAgICAgICB9XG4gICAgfSgpO1xuICAgIHZhciBNZW51ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIFwidXNlIHN0cmljdFwiO1xuICAgICAgICBmdW5jdGlvbiBNZW51KG8sIHd3dykge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgbyA9IG8gfHwge307XG4gICAgICAgICAgICBpZiAoIW8ubm9kZSkge1xuICAgICAgICAgICAgICAgICQuZXJyb3IoXCJub2RlIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3d3Lm1peGluKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kbm9kZSA9ICQoby5ub2RlKTtcbiAgICAgICAgICAgIHRoaXMucXVlcnkgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0cyA9IF8ubWFwKG8uZGF0YXNldHMsIGluaXRpYWxpemVEYXRhc2V0KTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGluaXRpYWxpemVEYXRhc2V0KG9EYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGF0LiRub2RlLmZpbmQob0RhdGFzZXQubm9kZSkuZmlyc3QoKTtcbiAgICAgICAgICAgICAgICBvRGF0YXNldC5ub2RlID0gbm9kZS5sZW5ndGggPyBub2RlIDogJChcIjxkaXY+XCIpLmFwcGVuZFRvKHRoYXQuJG5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0YXNldChvRGF0YXNldCwgd3d3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfLm1peGluKE1lbnUucHJvdG90eXBlLCBFdmVudEVtaXR0ZXIsIHtcbiAgICAgICAgICAgIF9vblNlbGVjdGFibGVDbGljazogZnVuY3Rpb24gb25TZWxlY3RhYmxlQ2xpY2soJGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJzZWxlY3RhYmxlQ2xpY2tlZFwiLCAkKCRlLmN1cnJlbnRUYXJnZXQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25SZW5kZXJlZDogZnVuY3Rpb24gb25SZW5kZXJlZCh0eXBlLCBkYXRhc2V0LCBzdWdnZXN0aW9ucywgYXN5bmMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRub2RlLnRvZ2dsZUNsYXNzKHRoaXMuY2xhc3Nlcy5lbXB0eSwgdGhpcy5fYWxsRGF0YXNldHNFbXB0eSgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJkYXRhc2V0UmVuZGVyZWRcIiwgZGF0YXNldCwgc3VnZ2VzdGlvbnMsIGFzeW5jKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25DbGVhcmVkOiBmdW5jdGlvbiBvbkNsZWFyZWQoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbm9kZS50b2dnbGVDbGFzcyh0aGlzLmNsYXNzZXMuZW1wdHksIHRoaXMuX2FsbERhdGFzZXRzRW1wdHkoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyKFwiZGF0YXNldENsZWFyZWRcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3Byb3BhZ2F0ZTogZnVuY3Rpb24gcHJvcGFnYXRlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9hbGxEYXRhc2V0c0VtcHR5OiBmdW5jdGlvbiBhbGxEYXRhc2V0c0VtcHR5KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfLmV2ZXJ5KHRoaXMuZGF0YXNldHMsIGlzRGF0YXNldEVtcHR5KTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpc0RhdGFzZXRFbXB0eShkYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhc2V0LmlzRW1wdHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2dldFNlbGVjdGFibGVzOiBmdW5jdGlvbiBnZXRTZWxlY3RhYmxlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kbm9kZS5maW5kKHRoaXMuc2VsZWN0b3JzLnNlbGVjdGFibGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9yZW1vdmVDdXJzb3I6IGZ1bmN0aW9uIF9yZW1vdmVDdXJzb3IoKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxlY3RhYmxlID0gdGhpcy5nZXRBY3RpdmVTZWxlY3RhYmxlKCk7XG4gICAgICAgICAgICAgICAgJHNlbGVjdGFibGUgJiYgJHNlbGVjdGFibGUucmVtb3ZlQ2xhc3ModGhpcy5jbGFzc2VzLmN1cnNvcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2Vuc3VyZVZpc2libGU6IGZ1bmN0aW9uIGVuc3VyZVZpc2libGUoJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsVG9wLCBlbEJvdHRvbSwgbm9kZVNjcm9sbFRvcCwgbm9kZUhlaWdodDtcbiAgICAgICAgICAgICAgICBlbFRvcCA9ICRlbC5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgICAgICAgICBlbEJvdHRvbSA9IGVsVG9wICsgJGVsLm91dGVySGVpZ2h0KHRydWUpO1xuICAgICAgICAgICAgICAgIG5vZGVTY3JvbGxUb3AgPSB0aGlzLiRub2RlLnNjcm9sbFRvcCgpO1xuICAgICAgICAgICAgICAgIG5vZGVIZWlnaHQgPSB0aGlzLiRub2RlLmhlaWdodCgpICsgcGFyc2VJbnQodGhpcy4kbm9kZS5jc3MoXCJwYWRkaW5nVG9wXCIpLCAxMCkgKyBwYXJzZUludCh0aGlzLiRub2RlLmNzcyhcInBhZGRpbmdCb3R0b21cIiksIDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoZWxUb3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJG5vZGUuc2Nyb2xsVG9wKG5vZGVTY3JvbGxUb3AgKyBlbFRvcCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlSGVpZ2h0IDwgZWxCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbm9kZS5zY3JvbGxUb3Aobm9kZVNjcm9sbFRvcCArIChlbEJvdHRvbSAtIG5vZGVIZWlnaHQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmluZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLCBvblNlbGVjdGFibGVDbGljaztcbiAgICAgICAgICAgICAgICBvblNlbGVjdGFibGVDbGljayA9IF8uYmluZCh0aGlzLl9vblNlbGVjdGFibGVDbGljaywgdGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kbm9kZS5vbihcImNsaWNrLnR0XCIsIHRoaXMuc2VsZWN0b3JzLnNlbGVjdGFibGUsIG9uU2VsZWN0YWJsZUNsaWNrKTtcbiAgICAgICAgICAgICAgICBfLmVhY2godGhpcy5kYXRhc2V0cywgZnVuY3Rpb24oZGF0YXNldCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0Lm9uU3luYyhcImFzeW5jUmVxdWVzdGVkXCIsIHRoYXQuX3Byb3BhZ2F0ZSwgdGhhdCkub25TeW5jKFwiYXN5bmNDYW5jZWxlZFwiLCB0aGF0Ll9wcm9wYWdhdGUsIHRoYXQpLm9uU3luYyhcImFzeW5jUmVjZWl2ZWRcIiwgdGhhdC5fcHJvcGFnYXRlLCB0aGF0KS5vblN5bmMoXCJyZW5kZXJlZFwiLCB0aGF0Ll9vblJlbmRlcmVkLCB0aGF0KS5vblN5bmMoXCJjbGVhcmVkXCIsIHRoYXQuX29uQ2xlYXJlZCwgdGhhdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNPcGVuOiBmdW5jdGlvbiBpc09wZW4oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJG5vZGUuaGFzQ2xhc3ModGhpcy5jbGFzc2VzLm9wZW4pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbm9kZS5hZGRDbGFzcyh0aGlzLmNsYXNzZXMub3Blbik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJG5vZGUucmVtb3ZlQ2xhc3ModGhpcy5jbGFzc2VzLm9wZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUN1cnNvcigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldExhbmd1YWdlRGlyZWN0aW9uOiBmdW5jdGlvbiBzZXRMYW5ndWFnZURpcmVjdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRub2RlLmF0dHIoXCJkaXJcIiwgZGlyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3RhYmxlUmVsYXRpdmVUb0N1cnNvcjogZnVuY3Rpb24gc2VsZWN0YWJsZVJlbGF0aXZlVG9DdXJzb3IoZGVsdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGVjdGFibGVzLCAkb2xkQ3Vyc29yLCBvbGRJbmRleCwgbmV3SW5kZXg7XG4gICAgICAgICAgICAgICAgJG9sZEN1cnNvciA9IHRoaXMuZ2V0QWN0aXZlU2VsZWN0YWJsZSgpO1xuICAgICAgICAgICAgICAgICRzZWxlY3RhYmxlcyA9IHRoaXMuX2dldFNlbGVjdGFibGVzKCk7XG4gICAgICAgICAgICAgICAgb2xkSW5kZXggPSAkb2xkQ3Vyc29yID8gJHNlbGVjdGFibGVzLmluZGV4KCRvbGRDdXJzb3IpIDogLTE7XG4gICAgICAgICAgICAgICAgbmV3SW5kZXggPSBvbGRJbmRleCArIGRlbHRhO1xuICAgICAgICAgICAgICAgIG5ld0luZGV4ID0gKG5ld0luZGV4ICsgMSkgJSAoJHNlbGVjdGFibGVzLmxlbmd0aCArIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBuZXdJbmRleCA9IG5ld0luZGV4IDwgLTEgPyAkc2VsZWN0YWJsZXMubGVuZ3RoIC0gMSA6IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdJbmRleCA9PT0gLTEgPyBudWxsIDogJHNlbGVjdGFibGVzLmVxKG5ld0luZGV4KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRDdXJzb3I6IGZ1bmN0aW9uIHNldEN1cnNvcigkc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUN1cnNvcigpO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0YWJsZSA9ICRzZWxlY3RhYmxlICYmICRzZWxlY3RhYmxlLmZpcnN0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdGFibGUuYWRkQ2xhc3ModGhpcy5jbGFzc2VzLmN1cnNvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vuc3VyZVZpc2libGUoJHNlbGVjdGFibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTZWxlY3RhYmxlRGF0YTogZnVuY3Rpb24gZ2V0U2VsZWN0YWJsZURhdGEoJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRlbCAmJiAkZWwubGVuZ3RoID8gRGF0YXNldC5leHRyYWN0RGF0YSgkZWwpIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRBY3RpdmVTZWxlY3RhYmxlOiBmdW5jdGlvbiBnZXRBY3RpdmVTZWxlY3RhYmxlKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZWN0YWJsZSA9IHRoaXMuX2dldFNlbGVjdGFibGVzKCkuZmlsdGVyKHRoaXMuc2VsZWN0b3JzLmN1cnNvcikuZmlyc3QoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGVjdGFibGUubGVuZ3RoID8gJHNlbGVjdGFibGUgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFRvcFNlbGVjdGFibGU6IGZ1bmN0aW9uIGdldFRvcFNlbGVjdGFibGUoKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxlY3RhYmxlID0gdGhpcy5fZ2V0U2VsZWN0YWJsZXMoKS5maXJzdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAkc2VsZWN0YWJsZS5sZW5ndGggPyAkc2VsZWN0YWJsZSA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUocXVlcnkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaXNWYWxpZFVwZGF0ZSA9IHF1ZXJ5ICE9PSB0aGlzLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHRoaXMuZGF0YXNldHMsIHVwZGF0ZURhdGFzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZFVwZGF0ZTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVEYXRhc2V0KGRhdGFzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldC51cGRhdGUocXVlcnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbXB0eTogZnVuY3Rpb24gZW1wdHkoKSB7XG4gICAgICAgICAgICAgICAgXy5lYWNoKHRoaXMuZGF0YXNldHMsIGNsZWFyRGF0YXNldCk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy4kbm9kZS5hZGRDbGFzcyh0aGlzLmNsYXNzZXMuZW1wdHkpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsZWFyRGF0YXNldChkYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRub2RlLm9mZihcIi50dFwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRub2RlID0gJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgICAgIF8uZWFjaCh0aGlzLmRhdGFzZXRzLCBkZXN0cm95RGF0YXNldCk7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gZGVzdHJveURhdGFzZXQoZGF0YXNldCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gTWVudTtcbiAgICB9KCk7XG4gICAgdmFyIERlZmF1bHRNZW51ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIFwidXNlIHN0cmljdFwiO1xuICAgICAgICB2YXIgcyA9IE1lbnUucHJvdG90eXBlO1xuICAgICAgICBmdW5jdGlvbiBEZWZhdWx0TWVudSgpIHtcbiAgICAgICAgICAgIE1lbnUuYXBwbHkodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTtcbiAgICAgICAgfVxuICAgICAgICBfLm1peGluKERlZmF1bHRNZW51LnByb3RvdHlwZSwgTWVudS5wcm90b3R5cGUsIHtcbiAgICAgICAgICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4oKSB7XG4gICAgICAgICAgICAgICAgIXRoaXMuX2FsbERhdGFzZXRzRW1wdHkoKSAmJiB0aGlzLl9zaG93KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMub3Blbi5hcHBseSh0aGlzLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMuY2xvc2UuYXBwbHkodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25SZW5kZXJlZDogZnVuY3Rpb24gb25SZW5kZXJlZCgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYWxsRGF0YXNldHNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hpZGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbigpICYmIHRoaXMuX3Nob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMuX29uUmVuZGVyZWQuYXBwbHkodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25DbGVhcmVkOiBmdW5jdGlvbiBvbkNsZWFyZWQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2FsbERhdGFzZXRzRW1wdHkoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oaWRlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc09wZW4oKSAmJiB0aGlzLl9zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzLl9vbkNsZWFyZWQuYXBwbHkodGhpcywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRMYW5ndWFnZURpcmVjdGlvbjogZnVuY3Rpb24gc2V0TGFuZ3VhZ2VEaXJlY3Rpb24oZGlyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbm9kZS5jc3MoZGlyID09PSBcImx0clwiID8gdGhpcy5jc3MubHRyIDogdGhpcy5jc3MucnRsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcy5zZXRMYW5ndWFnZURpcmVjdGlvbi5hcHBseSh0aGlzLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9oaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJG5vZGUuaGlkZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9zaG93OiBmdW5jdGlvbiBzaG93KCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJG5vZGUuY3NzKFwiZGlzcGxheVwiLCBcImJsb2NrXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIERlZmF1bHRNZW51O1xuICAgIH0oKTtcbiAgICB2YXIgVHlwZWFoZWFkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIFwidXNlIHN0cmljdFwiO1xuICAgICAgICBmdW5jdGlvbiBUeXBlYWhlYWQobywgd3d3KSB7XG4gICAgICAgICAgICB2YXIgb25Gb2N1c2VkLCBvbkJsdXJyZWQsIG9uRW50ZXJLZXllZCwgb25UYWJLZXllZCwgb25Fc2NLZXllZCwgb25VcEtleWVkLCBvbkRvd25LZXllZCwgb25MZWZ0S2V5ZWQsIG9uUmlnaHRLZXllZCwgb25RdWVyeUNoYW5nZWQsIG9uV2hpdGVzcGFjZUNoYW5nZWQ7XG4gICAgICAgICAgICBvID0gbyB8fCB7fTtcbiAgICAgICAgICAgIGlmICghby5pbnB1dCkge1xuICAgICAgICAgICAgICAgICQuZXJyb3IoXCJtaXNzaW5nIGlucHV0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvLm1lbnUpIHtcbiAgICAgICAgICAgICAgICAkLmVycm9yKFwibWlzc2luZyBtZW51XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvLmV2ZW50QnVzKSB7XG4gICAgICAgICAgICAgICAgJC5lcnJvcihcIm1pc3NpbmcgZXZlbnQgYnVzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3d3Lm1peGluKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cyA9IG8uZXZlbnRCdXM7XG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IF8uaXNOdW1iZXIoby5taW5MZW5ndGgpID8gby5taW5MZW5ndGggOiAxO1xuICAgICAgICAgICAgdGhpcy5pbnB1dCA9IG8uaW5wdXQ7XG4gICAgICAgICAgICB0aGlzLm1lbnUgPSBvLm1lbnU7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQuaGFzRm9jdXMoKSAmJiB0aGlzLmFjdGl2YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRpciA9IHRoaXMuaW5wdXQuZ2V0TGFuZ0RpcigpO1xuICAgICAgICAgICAgdGhpcy5faGFja3MoKTtcbiAgICAgICAgICAgIHRoaXMubWVudS5iaW5kKCkub25TeW5jKFwic2VsZWN0YWJsZUNsaWNrZWRcIiwgdGhpcy5fb25TZWxlY3RhYmxlQ2xpY2tlZCwgdGhpcykub25TeW5jKFwiYXN5bmNSZXF1ZXN0ZWRcIiwgdGhpcy5fb25Bc3luY1JlcXVlc3RlZCwgdGhpcykub25TeW5jKFwiYXN5bmNDYW5jZWxlZFwiLCB0aGlzLl9vbkFzeW5jQ2FuY2VsZWQsIHRoaXMpLm9uU3luYyhcImFzeW5jUmVjZWl2ZWRcIiwgdGhpcy5fb25Bc3luY1JlY2VpdmVkLCB0aGlzKS5vblN5bmMoXCJkYXRhc2V0UmVuZGVyZWRcIiwgdGhpcy5fb25EYXRhc2V0UmVuZGVyZWQsIHRoaXMpLm9uU3luYyhcImRhdGFzZXRDbGVhcmVkXCIsIHRoaXMuX29uRGF0YXNldENsZWFyZWQsIHRoaXMpO1xuICAgICAgICAgICAgb25Gb2N1c2VkID0gYyh0aGlzLCBcImFjdGl2YXRlXCIsIFwib3BlblwiLCBcIl9vbkZvY3VzZWRcIik7XG4gICAgICAgICAgICBvbkJsdXJyZWQgPSBjKHRoaXMsIFwiZGVhY3RpdmF0ZVwiLCBcIl9vbkJsdXJyZWRcIik7XG4gICAgICAgICAgICBvbkVudGVyS2V5ZWQgPSBjKHRoaXMsIFwiaXNBY3RpdmVcIiwgXCJpc09wZW5cIiwgXCJfb25FbnRlcktleWVkXCIpO1xuICAgICAgICAgICAgb25UYWJLZXllZCA9IGModGhpcywgXCJpc0FjdGl2ZVwiLCBcImlzT3BlblwiLCBcIl9vblRhYktleWVkXCIpO1xuICAgICAgICAgICAgb25Fc2NLZXllZCA9IGModGhpcywgXCJpc0FjdGl2ZVwiLCBcIl9vbkVzY0tleWVkXCIpO1xuICAgICAgICAgICAgb25VcEtleWVkID0gYyh0aGlzLCBcImlzQWN0aXZlXCIsIFwib3BlblwiLCBcIl9vblVwS2V5ZWRcIik7XG4gICAgICAgICAgICBvbkRvd25LZXllZCA9IGModGhpcywgXCJpc0FjdGl2ZVwiLCBcIm9wZW5cIiwgXCJfb25Eb3duS2V5ZWRcIik7XG4gICAgICAgICAgICBvbkxlZnRLZXllZCA9IGModGhpcywgXCJpc0FjdGl2ZVwiLCBcImlzT3BlblwiLCBcIl9vbkxlZnRLZXllZFwiKTtcbiAgICAgICAgICAgIG9uUmlnaHRLZXllZCA9IGModGhpcywgXCJpc0FjdGl2ZVwiLCBcImlzT3BlblwiLCBcIl9vblJpZ2h0S2V5ZWRcIik7XG4gICAgICAgICAgICBvblF1ZXJ5Q2hhbmdlZCA9IGModGhpcywgXCJfb3BlbklmQWN0aXZlXCIsIFwiX29uUXVlcnlDaGFuZ2VkXCIpO1xuICAgICAgICAgICAgb25XaGl0ZXNwYWNlQ2hhbmdlZCA9IGModGhpcywgXCJfb3BlbklmQWN0aXZlXCIsIFwiX29uV2hpdGVzcGFjZUNoYW5nZWRcIik7XG4gICAgICAgICAgICB0aGlzLmlucHV0LmJpbmQoKS5vblN5bmMoXCJmb2N1c2VkXCIsIG9uRm9jdXNlZCwgdGhpcykub25TeW5jKFwiYmx1cnJlZFwiLCBvbkJsdXJyZWQsIHRoaXMpLm9uU3luYyhcImVudGVyS2V5ZWRcIiwgb25FbnRlcktleWVkLCB0aGlzKS5vblN5bmMoXCJ0YWJLZXllZFwiLCBvblRhYktleWVkLCB0aGlzKS5vblN5bmMoXCJlc2NLZXllZFwiLCBvbkVzY0tleWVkLCB0aGlzKS5vblN5bmMoXCJ1cEtleWVkXCIsIG9uVXBLZXllZCwgdGhpcykub25TeW5jKFwiZG93bktleWVkXCIsIG9uRG93bktleWVkLCB0aGlzKS5vblN5bmMoXCJsZWZ0S2V5ZWRcIiwgb25MZWZ0S2V5ZWQsIHRoaXMpLm9uU3luYyhcInJpZ2h0S2V5ZWRcIiwgb25SaWdodEtleWVkLCB0aGlzKS5vblN5bmMoXCJxdWVyeUNoYW5nZWRcIiwgb25RdWVyeUNoYW5nZWQsIHRoaXMpLm9uU3luYyhcIndoaXRlc3BhY2VDaGFuZ2VkXCIsIG9uV2hpdGVzcGFjZUNoYW5nZWQsIHRoaXMpLm9uU3luYyhcImxhbmdEaXJDaGFuZ2VkXCIsIHRoaXMuX29uTGFuZ0RpckNoYW5nZWQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIF8ubWl4aW4oVHlwZWFoZWFkLnByb3RvdHlwZSwge1xuICAgICAgICAgICAgX2hhY2tzOiBmdW5jdGlvbiBoYWNrcygpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGlucHV0LCAkbWVudTtcbiAgICAgICAgICAgICAgICAkaW5wdXQgPSB0aGlzLmlucHV0LiRpbnB1dCB8fCAkKFwiPGRpdj5cIik7XG4gICAgICAgICAgICAgICAgJG1lbnUgPSB0aGlzLm1lbnUuJG5vZGUgfHwgJChcIjxkaXY+XCIpO1xuICAgICAgICAgICAgICAgICRpbnB1dC5vbihcImJsdXIudHRcIiwgZnVuY3Rpb24oJGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSwgaXNBY3RpdmUsIGhhc0FjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmUgPSAkbWVudS5pcyhhY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICBoYXNBY3RpdmUgPSAkbWVudS5oYXMoYWN0aXZlKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc01zaWUoKSAmJiAoaXNBY3RpdmUgfHwgaGFzQWN0aXZlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXy5kZWZlcihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJG1lbnUub24oXCJtb3VzZWRvd24udHRcIiwgZnVuY3Rpb24oJGUpIHtcbiAgICAgICAgICAgICAgICAgICAgJGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25TZWxlY3RhYmxlQ2xpY2tlZDogZnVuY3Rpb24gb25TZWxlY3RhYmxlQ2xpY2tlZCh0eXBlLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgkZWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vbkRhdGFzZXRDbGVhcmVkOiBmdW5jdGlvbiBvbkRhdGFzZXRDbGVhcmVkKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhpbnQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25EYXRhc2V0UmVuZGVyZWQ6IGZ1bmN0aW9uIG9uRGF0YXNldFJlbmRlcmVkKHR5cGUsIGRhdGFzZXQsIHN1Z2dlc3Rpb25zLCBhc3luYykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhpbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50QnVzLnRyaWdnZXIoXCJyZW5kZXJcIiwgc3VnZ2VzdGlvbnMsIGFzeW5jLCBkYXRhc2V0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25Bc3luY1JlcXVlc3RlZDogZnVuY3Rpb24gb25Bc3luY1JlcXVlc3RlZCh0eXBlLCBkYXRhc2V0LCBxdWVyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMudHJpZ2dlcihcImFzeW5jcmVxdWVzdFwiLCBxdWVyeSwgZGF0YXNldCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uQXN5bmNDYW5jZWxlZDogZnVuY3Rpb24gb25Bc3luY0NhbmNlbGVkKHR5cGUsIGRhdGFzZXQsIHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy50cmlnZ2VyKFwiYXN5bmNjYW5jZWxcIiwgcXVlcnksIGRhdGFzZXQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vbkFzeW5jUmVjZWl2ZWQ6IGZ1bmN0aW9uIG9uQXN5bmNSZWNlaXZlZCh0eXBlLCBkYXRhc2V0LCBxdWVyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMudHJpZ2dlcihcImFzeW5jcmVjZWl2ZVwiLCBxdWVyeSwgZGF0YXNldCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uRm9jdXNlZDogZnVuY3Rpb24gb25Gb2N1c2VkKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbkxlbmd0aE1ldCgpICYmIHRoaXMubWVudS51cGRhdGUodGhpcy5pbnB1dC5nZXRRdWVyeSgpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25CbHVycmVkOiBmdW5jdGlvbiBvbkJsdXJyZWQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXQuaGFzUXVlcnlDaGFuZ2VkU2luY2VMYXN0Rm9jdXMoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50QnVzLnRyaWdnZXIoXCJjaGFuZ2VcIiwgdGhpcy5pbnB1dC5nZXRRdWVyeSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uRW50ZXJLZXllZDogZnVuY3Rpb24gb25FbnRlcktleWVkKHR5cGUsICRlKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxlY3RhYmxlO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0YWJsZSA9IHRoaXMubWVudS5nZXRBY3RpdmVTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJHNlbGVjdGFibGUpICYmICRlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vblRhYktleWVkOiBmdW5jdGlvbiBvblRhYktleWVkKHR5cGUsICRlKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxlY3RhYmxlO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZWN0YWJsZSA9IHRoaXMubWVudS5nZXRBY3RpdmVTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJHNlbGVjdGFibGUpICYmICRlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkc2VsZWN0YWJsZSA9IHRoaXMubWVudS5nZXRUb3BTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGUoJHNlbGVjdGFibGUpICYmICRlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vbkVzY0tleWVkOiBmdW5jdGlvbiBvbkVzY0tleWVkKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25VcEtleWVkOiBmdW5jdGlvbiBvblVwS2V5ZWQoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25Eb3duS2V5ZWQ6IGZ1bmN0aW9uIG9uRG93bktleWVkKCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZUN1cnNvcigrMSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uTGVmdEtleWVkOiBmdW5jdGlvbiBvbkxlZnRLZXllZCgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXIgPT09IFwicnRsXCIgJiYgdGhpcy5pbnB1dC5pc0N1cnNvckF0RW5kKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGUodGhpcy5tZW51LmdldFRvcFNlbGVjdGFibGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vblJpZ2h0S2V5ZWQ6IGZ1bmN0aW9uIG9uUmlnaHRLZXllZCgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXIgPT09IFwibHRyXCIgJiYgdGhpcy5pbnB1dC5pc0N1cnNvckF0RW5kKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGUodGhpcy5tZW51LmdldFRvcFNlbGVjdGFibGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9vblF1ZXJ5Q2hhbmdlZDogZnVuY3Rpb24gb25RdWVyeUNoYW5nZWQoZSwgcXVlcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9taW5MZW5ndGhNZXQocXVlcnkpID8gdGhpcy5tZW51LnVwZGF0ZShxdWVyeSkgOiB0aGlzLm1lbnUuZW1wdHkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb25XaGl0ZXNwYWNlQ2hhbmdlZDogZnVuY3Rpb24gb25XaGl0ZXNwYWNlQ2hhbmdlZCgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVIaW50KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX29uTGFuZ0RpckNoYW5nZWQ6IGZ1bmN0aW9uIG9uTGFuZ0RpckNoYW5nZWQoZSwgZGlyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyICE9PSBkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBkaXI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudS5zZXRMYW5ndWFnZURpcmVjdGlvbihkaXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfb3BlbklmQWN0aXZlOiBmdW5jdGlvbiBvcGVuSWZBY3RpdmUoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSgpICYmIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9taW5MZW5ndGhNZXQ6IGZ1bmN0aW9uIG1pbkxlbmd0aE1ldChxdWVyeSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5ID0gXy5pc1N0cmluZyhxdWVyeSkgPyBxdWVyeSA6IHRoaXMuaW5wdXQuZ2V0UXVlcnkoKSB8fCBcIlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX3VwZGF0ZUhpbnQ6IGZ1bmN0aW9uIHVwZGF0ZUhpbnQoKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxlY3RhYmxlLCBkYXRhLCB2YWwsIHF1ZXJ5LCBlc2NhcGVkUXVlcnksIGZyb250TWF0Y2hSZWdFeCwgbWF0Y2g7XG4gICAgICAgICAgICAgICAgJHNlbGVjdGFibGUgPSB0aGlzLm1lbnUuZ2V0VG9wU2VsZWN0YWJsZSgpO1xuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLm1lbnUuZ2V0U2VsZWN0YWJsZURhdGEoJHNlbGVjdGFibGUpO1xuICAgICAgICAgICAgICAgIHZhbCA9IHRoaXMuaW5wdXQuZ2V0SW5wdXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhICYmICFfLmlzQmxhbmtTdHJpbmcodmFsKSAmJiAhdGhpcy5pbnB1dC5oYXNPdmVyZmxvdygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gSW5wdXQubm9ybWFsaXplUXVlcnkodmFsKTtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZFF1ZXJ5ID0gXy5lc2NhcGVSZWdFeENoYXJzKHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbnRNYXRjaFJlZ0V4ID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIGVzY2FwZWRRdWVyeSArIFwiKSguKyQpXCIsIFwiaVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmcm9udE1hdGNoUmVnRXguZXhlYyhkYXRhLnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoICYmIHRoaXMuaW5wdXQuc2V0SGludCh2YWwgKyBtYXRjaFsxXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5jbGVhckhpbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNFbmFibGVkOiBmdW5jdGlvbiBpc0VuYWJsZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uIGVuYWJsZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FibGU6IGZ1bmN0aW9uIGRpc2FibGUoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBY3RpdmU6IGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmF0ZTogZnVuY3Rpb24gYWN0aXZhdGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRW5hYmxlZCgpIHx8IHRoaXMuZXZlbnRCdXMuYmVmb3JlKFwiYWN0aXZlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMudHJpZ2dlcihcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlYWN0aXZhdGU6IGZ1bmN0aW9uIGRlYWN0aXZhdGUoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50QnVzLmJlZm9yZShcImlkbGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy50cmlnZ2VyKFwiaWRsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogZnVuY3Rpb24gaXNPcGVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbnUuaXNPcGVuKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3BlbjogZnVuY3Rpb24gb3BlbigpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKCkgJiYgIXRoaXMuZXZlbnRCdXMuYmVmb3JlKFwib3BlblwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUub3BlbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVIaW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMudHJpZ2dlcihcIm9wZW5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3BlbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsb3NlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc09wZW4oKSAmJiAhdGhpcy5ldmVudEJ1cy5iZWZvcmUoXCJjbG9zZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5jbGVhckhpbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5yZXNldElucHV0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy50cmlnZ2VyKFwiY2xvc2VcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc09wZW4oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRWYWw6IGZ1bmN0aW9uIHNldFZhbCh2YWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNldFF1ZXJ5KF8udG9TdHIodmFsKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0VmFsOiBmdW5jdGlvbiBnZXRWYWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQuZ2V0UXVlcnkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCgkc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5tZW51LmdldFNlbGVjdGFibGVEYXRhKCRzZWxlY3RhYmxlKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiAhdGhpcy5ldmVudEJ1cy5iZWZvcmUoXCJzZWxlY3RcIiwgZGF0YS5vYmopKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQuc2V0UXVlcnkoZGF0YS52YWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50QnVzLnRyaWdnZXIoXCJzZWxlY3RcIiwgZGF0YS5vYmopO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBmdW5jdGlvbiBhdXRvY29tcGxldGUoJHNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnksIGRhdGEsIGlzVmFsaWQ7XG4gICAgICAgICAgICAgICAgcXVlcnkgPSB0aGlzLmlucHV0LmdldFF1ZXJ5KCk7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMubWVudS5nZXRTZWxlY3RhYmxlRGF0YSgkc2VsZWN0YWJsZSk7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGRhdGEgJiYgcXVlcnkgIT09IGRhdGEudmFsO1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkICYmICF0aGlzLmV2ZW50QnVzLmJlZm9yZShcImF1dG9jb21wbGV0ZVwiLCBkYXRhLm9iaikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5zZXRRdWVyeShkYXRhLnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMudHJpZ2dlcihcImF1dG9jb21wbGV0ZVwiLCBkYXRhLm9iaik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW92ZUN1cnNvcjogZnVuY3Rpb24gbW92ZUN1cnNvcihkZWx0YSkge1xuICAgICAgICAgICAgICAgIHZhciBxdWVyeSwgJGNhbmRpZGF0ZSwgZGF0YSwgcGF5bG9hZCwgY2FuY2VsTW92ZTtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IHRoaXMuaW5wdXQuZ2V0UXVlcnkoKTtcbiAgICAgICAgICAgICAgICAkY2FuZGlkYXRlID0gdGhpcy5tZW51LnNlbGVjdGFibGVSZWxhdGl2ZVRvQ3Vyc29yKGRlbHRhKTtcbiAgICAgICAgICAgICAgICBkYXRhID0gdGhpcy5tZW51LmdldFNlbGVjdGFibGVEYXRhKCRjYW5kaWRhdGUpO1xuICAgICAgICAgICAgICAgIHBheWxvYWQgPSBkYXRhID8gZGF0YS5vYmogOiBudWxsO1xuICAgICAgICAgICAgICAgIGNhbmNlbE1vdmUgPSB0aGlzLl9taW5MZW5ndGhNZXQoKSAmJiB0aGlzLm1lbnUudXBkYXRlKHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbE1vdmUgJiYgIXRoaXMuZXZlbnRCdXMuYmVmb3JlKFwiY3Vyc29yY2hhbmdlXCIsIHBheWxvYWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudS5zZXRDdXJzb3IoJGNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNldElucHV0VmFsdWUoZGF0YS52YWwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dC5yZXNldElucHV0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhpbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50QnVzLnRyaWdnZXIoXCJjdXJzb3JjaGFuZ2VcIiwgcGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnUuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFR5cGVhaGVhZDtcbiAgICAgICAgZnVuY3Rpb24gYyhjdHgpIHtcbiAgICAgICAgICAgIHZhciBtZXRob2RzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIF8uZWFjaChtZXRob2RzLCBmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eFttZXRob2RdLmFwcGx5KGN0eCwgYXJncyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSgpO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgICAgIHZhciBvbGQsIGtleXMsIG1ldGhvZHM7XG4gICAgICAgIG9sZCA9ICQuZm4udHlwZWFoZWFkO1xuICAgICAgICBrZXlzID0ge1xuICAgICAgICAgICAgd3d3OiBcInR0LXd3d1wiLFxuICAgICAgICAgICAgYXR0cnM6IFwidHQtYXR0cnNcIixcbiAgICAgICAgICAgIHR5cGVhaGVhZDogXCJ0dC10eXBlYWhlYWRcIlxuICAgICAgICB9O1xuICAgICAgICBtZXRob2RzID0ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZShvLCBkYXRhc2V0cykge1xuICAgICAgICAgICAgICAgIHZhciB3d3c7XG4gICAgICAgICAgICAgICAgZGF0YXNldHMgPSBfLmlzQXJyYXkoZGF0YXNldHMpID8gZGF0YXNldHMgOiBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgICAgICAgICAgbyA9IG8gfHwge307XG4gICAgICAgICAgICAgICAgd3d3ID0gV1dXKG8uY2xhc3NOYW1lcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChhdHRhY2gpO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRpbnB1dCwgJHdyYXBwZXIsICRoaW50LCAkbWVudSwgZGVmYXVsdEhpbnQsIGRlZmF1bHRNZW51LCBldmVudEJ1cywgaW5wdXQsIG1lbnUsIHR5cGVhaGVhZCwgTWVudUNvbnN0cnVjdG9yO1xuICAgICAgICAgICAgICAgICAgICBfLmVhY2goZGF0YXNldHMsIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGQuaGlnaGxpZ2h0ID0gISFvLmhpZ2hsaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICRpbnB1dCA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICR3cmFwcGVyID0gJCh3d3cuaHRtbC53cmFwcGVyKTtcbiAgICAgICAgICAgICAgICAgICAgJGhpbnQgPSAkZWxPck51bGwoby5oaW50KTtcbiAgICAgICAgICAgICAgICAgICAgJG1lbnUgPSAkZWxPck51bGwoby5tZW51KTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEhpbnQgPSBvLmhpbnQgIT09IGZhbHNlICYmICEkaGludDtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lbnUgPSBvLm1lbnUgIT09IGZhbHNlICYmICEkbWVudTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEhpbnQgJiYgKCRoaW50ID0gYnVpbGRIaW50RnJvbUlucHV0KCRpbnB1dCwgd3d3KSk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZW51ICYmICgkbWVudSA9ICQod3d3Lmh0bWwubWVudSkuY3NzKHd3dy5jc3MubWVudSkpO1xuICAgICAgICAgICAgICAgICAgICAkaGludCAmJiAkaGludC52YWwoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICRpbnB1dCA9IHByZXBJbnB1dCgkaW5wdXQsIHd3dyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0SGludCB8fCBkZWZhdWx0TWVudSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHdyYXBwZXIuY3NzKHd3dy5jc3Mud3JhcHBlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuY3NzKGRlZmF1bHRIaW50ID8gd3d3LmNzcy5pbnB1dCA6IHd3dy5jc3MuaW5wdXRXaXRoTm9IaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC53cmFwKCR3cmFwcGVyKS5wYXJlbnQoKS5wcmVwZW5kKGRlZmF1bHRIaW50ID8gJGhpbnQgOiBudWxsKS5hcHBlbmQoZGVmYXVsdE1lbnUgPyAkbWVudSA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIE1lbnVDb25zdHJ1Y3RvciA9IGRlZmF1bHRNZW51ID8gRGVmYXVsdE1lbnUgOiBNZW51O1xuICAgICAgICAgICAgICAgICAgICBldmVudEJ1cyA9IG5ldyBFdmVudEJ1cyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbDogJGlucHV0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IG5ldyBJbnB1dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaW50OiAkaGludCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiAkaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgfSwgd3d3KTtcbiAgICAgICAgICAgICAgICAgICAgbWVudSA9IG5ldyBNZW51Q29uc3RydWN0b3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogJG1lbnUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0czogZGF0YXNldHNcbiAgICAgICAgICAgICAgICAgICAgfSwgd3d3KTtcbiAgICAgICAgICAgICAgICAgICAgdHlwZWFoZWFkID0gbmV3IFR5cGVhaGVhZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51OiBtZW51LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRCdXM6IGV2ZW50QnVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBvLm1pbkxlbmd0aFxuICAgICAgICAgICAgICAgICAgICB9LCB3d3cpO1xuICAgICAgICAgICAgICAgICAgICAkaW5wdXQuZGF0YShrZXlzLnd3dywgd3d3KTtcbiAgICAgICAgICAgICAgICAgICAgJGlucHV0LmRhdGEoa2V5cy50eXBlYWhlYWQsIHR5cGVhaGVhZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRW5hYmxlZDogZnVuY3Rpb24gaXNFbmFibGVkKCkge1xuICAgICAgICAgICAgICAgIHZhciBlbmFibGVkO1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLmZpcnN0KCksIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCA9IHQuaXNFbmFibGVkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuYWJsZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiBlbmFibGUoKSB7XG4gICAgICAgICAgICAgICAgdHRFYWNoKHRoaXMsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbiBkaXNhYmxlKCkge1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiBmdW5jdGlvbiBpc0FjdGl2ZSgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlO1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLmZpcnN0KCksIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdC5pc0FjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWN0aXZhdGU6IGZ1bmN0aW9uIGFjdGl2YXRlKCkge1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuYWN0aXZhdGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWFjdGl2YXRlOiBmdW5jdGlvbiBkZWFjdGl2YXRlKCkge1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQuZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogZnVuY3Rpb24gaXNPcGVuKCkge1xuICAgICAgICAgICAgICAgIHZhciBvcGVuO1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLmZpcnN0KCksIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbiA9IHQuaXNPcGVuKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3BlbjogZnVuY3Rpb24gb3BlbigpIHtcbiAgICAgICAgICAgICAgICB0dEVhY2godGhpcywgZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgICAgICAgICB0Lm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICAgICAgICAgICAgdHRFYWNoKHRoaXMsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZSwgJGVsID0gJChlbCk7XG4gICAgICAgICAgICAgICAgdHRFYWNoKHRoaXMuZmlyc3QoKSwgZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdC5zZWxlY3QoJGVsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdXRvY29tcGxldGU6IGZ1bmN0aW9uIGF1dG9jb21wbGV0ZShlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzdWNjZXNzID0gZmFsc2UsICRlbCA9ICQoZWwpO1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLmZpcnN0KCksIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHQuYXV0b2NvbXBsZXRlKCRlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW92ZUN1cnNvcjogZnVuY3Rpb24gbW92ZUN1cnNvZShkZWx0YSkge1xuICAgICAgICAgICAgICAgIHZhciBzdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdHRFYWNoKHRoaXMuZmlyc3QoKSwgZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdC5tb3ZlQ3Vyc29yKGRlbHRhKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWw6IGZ1bmN0aW9uIHZhbChuZXdWYWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgcXVlcnk7XG4gICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLmZpcnN0KCksIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gdC5nZXRWYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0dEVhY2godGhpcywgZnVuY3Rpb24odCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5zZXRWYWwobmV3VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICAgICAgICAgIHR0RWFjaCh0aGlzLCBmdW5jdGlvbih0eXBlYWhlYWQsICRpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICByZXZlcnQoJGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgdHlwZWFoZWFkLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgJC5mbi50eXBlYWhlYWQgPSBmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgICAgICAgIGlmIChtZXRob2RzW21ldGhvZF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kc1ttZXRob2RdLmFwcGx5KHRoaXMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgJC5mbi50eXBlYWhlYWQubm9Db25mbGljdCA9IGZ1bmN0aW9uIG5vQ29uZmxpY3QoKSB7XG4gICAgICAgICAgICAkLmZuLnR5cGVhaGVhZCA9IG9sZDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiB0dEVhY2goJGVscywgZm4pIHtcbiAgICAgICAgICAgICRlbHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGlucHV0ID0gJCh0aGlzKSwgdHlwZWFoZWFkO1xuICAgICAgICAgICAgICAgICh0eXBlYWhlYWQgPSAkaW5wdXQuZGF0YShrZXlzLnR5cGVhaGVhZCkpICYmIGZuKHR5cGVhaGVhZCwgJGlucHV0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkSGludEZyb21JbnB1dCgkaW5wdXQsIHd3dykge1xuICAgICAgICAgICAgcmV0dXJuICRpbnB1dC5jbG9uZSgpLmFkZENsYXNzKHd3dy5jbGFzc2VzLmhpbnQpLnJlbW92ZURhdGEoKS5jc3Mod3d3LmNzcy5oaW50KS5jc3MoZ2V0QmFja2dyb3VuZFN0eWxlcygkaW5wdXQpKS5wcm9wKFwicmVhZG9ubHlcIiwgdHJ1ZSkucmVtb3ZlQXR0cihcImlkIG5hbWUgcGxhY2Vob2xkZXIgcmVxdWlyZWRcIikuYXR0cih7XG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICB0YWJpbmRleDogLTFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHByZXBJbnB1dCgkaW5wdXQsIHd3dykge1xuICAgICAgICAgICAgJGlucHV0LmRhdGEoa2V5cy5hdHRycywge1xuICAgICAgICAgICAgICAgIGRpcjogJGlucHV0LmF0dHIoXCJkaXJcIiksXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiAkaW5wdXQuYXR0cihcImF1dG9jb21wbGV0ZVwiKSxcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrOiAkaW5wdXQuYXR0cihcInNwZWxsY2hlY2tcIiksXG4gICAgICAgICAgICAgICAgc3R5bGU6ICRpbnB1dC5hdHRyKFwic3R5bGVcIilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgJGlucHV0LmFkZENsYXNzKHd3dy5jbGFzc2VzLmlucHV0KS5hdHRyKHtcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjazogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAhJGlucHV0LmF0dHIoXCJkaXJcIikgJiYgJGlucHV0LmF0dHIoXCJkaXJcIiwgXCJhdXRvXCIpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIHJldHVybiAkaW5wdXQ7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZ2V0QmFja2dyb3VuZFN0eWxlcygkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLWF0dGFjaG1lbnRcIiksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENsaXA6ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLWNsaXBcIiksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAkZWwuY3NzKFwiYmFja2dyb3VuZC1jb2xvclwiKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLWltYWdlXCIpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRPcmlnaW46ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLW9yaWdpblwiKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCIpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICRlbC5jc3MoXCJiYWNrZ3JvdW5kLXJlcGVhdFwiKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJGVsLmNzcyhcImJhY2tncm91bmQtc2l6ZVwiKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiByZXZlcnQoJGlucHV0KSB7XG4gICAgICAgICAgICB2YXIgd3d3LCAkd3JhcHBlcjtcbiAgICAgICAgICAgIHd3dyA9ICRpbnB1dC5kYXRhKGtleXMud3d3KTtcbiAgICAgICAgICAgICR3cmFwcGVyID0gJGlucHV0LnBhcmVudCgpLmZpbHRlcih3d3cuc2VsZWN0b3JzLndyYXBwZXIpO1xuICAgICAgICAgICAgXy5lYWNoKCRpbnB1dC5kYXRhKGtleXMuYXR0cnMpLCBmdW5jdGlvbih2YWwsIGtleSkge1xuICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQodmFsKSA/ICRpbnB1dC5yZW1vdmVBdHRyKGtleSkgOiAkaW5wdXQuYXR0cihrZXksIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICRpbnB1dC5yZW1vdmVEYXRhKGtleXMudHlwZWFoZWFkKS5yZW1vdmVEYXRhKGtleXMud3d3KS5yZW1vdmVEYXRhKGtleXMuYXR0cikucmVtb3ZlQ2xhc3Mod3d3LmNsYXNzZXMuaW5wdXQpO1xuICAgICAgICAgICAgaWYgKCR3cmFwcGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICRpbnB1dC5kZXRhY2goKS5pbnNlcnRBZnRlcigkd3JhcHBlcik7XG4gICAgICAgICAgICAgICAgJHdyYXBwZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gJGVsT3JOdWxsKG9iaikge1xuICAgICAgICAgICAgdmFyIGlzVmFsaWQsICRlbDtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBfLmlzSlF1ZXJ5KG9iaikgfHwgXy5pc0VsZW1lbnQob2JqKTtcbiAgICAgICAgICAgICRlbCA9IGlzVmFsaWQgPyAkKG9iaikuZmlyc3QoKSA6IFtdO1xuICAgICAgICAgICAgcmV0dXJuICRlbC5sZW5ndGggPyAkZWwgOiBudWxsO1xuICAgICAgICB9XG4gICAgfSkoKTtcbn0pO1xufS5jYWxsKHdpbmRvdywgZmFsc2UsIGZhbHNlKSk7XG4iLCIvKioqIElNUE9SVFMgRlJPTSBpbXBvcnRzLWxvYWRlciAqKiovXG5cbihmdW5jdGlvbihkZWZpbmUsIGV4cG9ydHMpIHtcbi8qIVxuICogYm9vdHN0cmFwLXRva2VuZmllbGRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zbGlwdHJlZS9ib290c3RyYXAtdG9rZW5maWVsZFxuICogQ29weXJpZ2h0IDIwMTMtMjAxNCBTbGlwdHJlZSBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVRcbiAqL1xuXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHdpbmRvdyB3aXRoIGpRdWVyeVxuICAgIC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3Rvcnkgd2l0aCB0aGUgalF1ZXJ5IGluc3RhbmNlIGZyb20gdGhlIHdpbmRvdyBvYmplY3RcbiAgICAvLyBGb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IGluaGVyZW50bHkgcG9zc2VzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFxuICAgIC8vIChzdWNoIGFzIE5vZGUuanMpLCBleHBvc2UgYSBUb2tlbmZpZWxkLW1ha2luZyBmYWN0b3J5IGFzIG1vZHVsZS5leHBvcnRzXG4gICAgLy8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCB3aW5kb3cgb3IgcGFzc2luZyBpbiBhIGpRdWVyeSBpbnN0YW5jZVxuICAgIC8vIGUuZy4gcmVxdWlyZShcImJvb3RzdHJhcC10b2tlbmZpZWxkXCIpKHdpbmRvdyk7IG9yIHJlcXVpcmUoXCJib290c3RyYXAtdG9rZW5maWVsZFwiKSgkKTtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC53aW5kb3cgJiYgZ2xvYmFsLndpbmRvdy4kID9cbiAgICAgIGZhY3RvcnkoIGdsb2JhbC53aW5kb3cuJCApIDpcbiAgICAgIGZ1bmN0aW9uKCBpbnB1dCApIHtcbiAgICAgICAgaWYgKCAhaW5wdXQuJCAmJiAhaW5wdXQuZm4gKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBcIlRva2VuZmllbGQgcmVxdWlyZXMgYSB3aW5kb3cgb2JqZWN0IHdpdGggalF1ZXJ5IG9yIGEgalF1ZXJ5IGluc3RhbmNlXCIgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjdG9yeSggaW5wdXQuJCB8fCBpbnB1dCApO1xuICAgICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCcm93c2VyIGdsb2JhbHNcbiAgICBmYWN0b3J5KGpRdWVyeSk7XG4gIH1cbn0oZnVuY3Rpb24gKCQsIHdpbmRvdykge1xuXG4gIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XG5cbiAvKiBUT0tFTkZJRUxEIFBVQkxJQyBDTEFTUyBERUZJTklUSU9OXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgdmFyIFRva2VuZmllbGQgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHZhciBfc2VsZiA9IHRoaXNcblxuICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpXG4gICAgdGhpcy50ZXh0RGlyZWN0aW9uID0gdGhpcy4kZWxlbWVudC5jc3MoJ2RpcmVjdGlvbicpO1xuXG4gICAgLy8gRXh0ZW5kIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgJC5mbi50b2tlbmZpZWxkLmRlZmF1bHRzLCB7IHRva2VuczogdGhpcy4kZWxlbWVudC52YWwoKSB9LCB0aGlzLiRlbGVtZW50LmRhdGEoKSwgb3B0aW9ucylcbiAgICBcbiAgICAvLyBTZXR1cCBkZWxpbWl0ZXJzIGFuZCB0cmlnZ2VyIGtleXNcbiAgICB0aGlzLl9kZWxpbWl0ZXJzID0gKHR5cGVvZiB0aGlzLm9wdGlvbnMuZGVsaW1pdGVyID09PSAnc3RyaW5nJykgPyBbdGhpcy5vcHRpb25zLmRlbGltaXRlcl0gOiB0aGlzLm9wdGlvbnMuZGVsaW1pdGVyXG4gICAgdGhpcy5fdHJpZ2dlcktleXMgPSAkLm1hcCh0aGlzLl9kZWxpbWl0ZXJzLCBmdW5jdGlvbiAoZGVsaW1pdGVyKSB7XG4gICAgICByZXR1cm4gZGVsaW1pdGVyLmNoYXJDb2RlQXQoMCk7XG4gICAgfSk7XG4gICAgdGhpcy5fZmlyc3REZWxpbWl0ZXIgPSB0aGlzLl9kZWxpbWl0ZXJzWzBdO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHdoaXRlc3BhY2UsIGRhc2ggYW5kIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIHZhciB3aGl0ZXNwYWNlID0gJC5pbkFycmF5KCcgJywgdGhpcy5fZGVsaW1pdGVycylcbiAgICAgICwgZGFzaCA9ICQuaW5BcnJheSgnLScsIHRoaXMuX2RlbGltaXRlcnMpXG5cbiAgICBpZiAod2hpdGVzcGFjZSA+PSAwKVxuICAgICAgdGhpcy5fZGVsaW1pdGVyc1t3aGl0ZXNwYWNlXSA9ICdcXFxccydcblxuICAgIGlmIChkYXNoID49IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9kZWxpbWl0ZXJzW2Rhc2hdXG4gICAgICB0aGlzLl9kZWxpbWl0ZXJzLnVuc2hpZnQoJy0nKVxuICAgIH1cblxuICAgIHZhciBzcGVjaWFsQ2hhcmFjdGVycyA9IFsnXFxcXCcsICckJywgJ1snLCAneycsICdeJywgJy4nLCAnfCcsICc/JywgJyonLCAnKycsICcoJywgJyknXVxuICAgICQuZWFjaCh0aGlzLl9kZWxpbWl0ZXJzLCBmdW5jdGlvbiAoaW5kZXgsIGNoYXIpIHtcbiAgICAgIHZhciBwb3MgPSAkLmluQXJyYXkoY2hhciwgc3BlY2lhbENoYXJhY3RlcnMpXG4gICAgICBpZiAocG9zID49IDApIF9zZWxmLl9kZWxpbWl0ZXJzW2luZGV4XSA9ICdcXFxcJyArIGNoYXI7XG4gICAgfSk7XG5cbiAgICAvLyBTdG9yZSBvcmlnaW5hbCBpbnB1dCB3aWR0aFxuICAgIHZhciBlbFJ1bGVzID0gKHdpbmRvdyAmJiB0eXBlb2Ygd2luZG93LmdldE1hdGNoZWRDU1NSdWxlcyA9PT0gJ2Z1bmN0aW9uJykgPyB3aW5kb3cuZ2V0TWF0Y2hlZENTU1J1bGVzKCBlbGVtZW50ICkgOiBudWxsXG4gICAgICAsIGVsU3R5bGVXaWR0aCA9IGVsZW1lbnQuc3R5bGUud2lkdGhcbiAgICAgICwgZWxDU1NXaWR0aFxuICAgICAgLCBlbFdpZHRoID0gdGhpcy4kZWxlbWVudC53aWR0aCgpXG5cbiAgICBpZiAoZWxSdWxlcykge1xuICAgICAgJC5lYWNoKCBlbFJ1bGVzLCBmdW5jdGlvbiAoaSwgcnVsZSkge1xuICAgICAgICBpZiAocnVsZS5zdHlsZS53aWR0aCkge1xuICAgICAgICAgIGVsQ1NTV2lkdGggPSBydWxlLnN0eWxlLndpZHRoO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBNb3ZlIG9yaWdpbmFsIGlucHV0IG91dCBvZiB0aGUgd2F5XG4gICAgdmFyIGhpZGluZ1Bvc2l0aW9uID0gJCgnYm9keScpLmNzcygnZGlyZWN0aW9uJykgPT09ICdydGwnID8gJ3JpZ2h0JyA6ICdsZWZ0JyxcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMgPSB7IHBvc2l0aW9uOiB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nKSB9O1xuICAgIG9yaWdpbmFsU3R5bGVzW2hpZGluZ1Bvc2l0aW9uXSA9IHRoaXMuJGVsZW1lbnQuY3NzKGhpZGluZ1Bvc2l0aW9uKTtcbiAgICBcbiAgICB0aGlzLiRlbGVtZW50XG4gICAgICAuZGF0YSgnb3JpZ2luYWwtc3R5bGVzJywgb3JpZ2luYWxTdHlsZXMpXG4gICAgICAuZGF0YSgnb3JpZ2luYWwtdGFiaW5kZXgnLCB0aGlzLiRlbGVtZW50LnByb3AoJ3RhYmluZGV4JykpXG4gICAgICAuY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpXG4gICAgICAuY3NzKGhpZGluZ1Bvc2l0aW9uLCAnLTEwMDAwcHgnKVxuICAgICAgLnByb3AoJ3RhYmluZGV4JywgLTEpXG5cbiAgICAvLyBDcmVhdGUgYSB3cmFwcGVyXG4gICAgdGhpcy4kd3JhcHBlciA9ICQoJzxkaXYgY2xhc3M9XCJ0b2tlbmZpZWxkIGZvcm0tY29udHJvbFwiIC8+JylcbiAgICBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnaW5wdXQtbGcnKSkgdGhpcy4kd3JhcHBlci5hZGRDbGFzcygnaW5wdXQtbGcnKVxuICAgIGlmICh0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdpbnB1dC1zbScpKSB0aGlzLiR3cmFwcGVyLmFkZENsYXNzKCdpbnB1dC1zbScpXG4gICAgaWYgKHRoaXMudGV4dERpcmVjdGlvbiA9PT0gJ3J0bCcpIHRoaXMuJHdyYXBwZXIuYWRkQ2xhc3MoJ3J0bCcpXG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgaW5wdXRcbiAgICB2YXIgaWQgPSB0aGlzLiRlbGVtZW50LnByb3AoJ2lkJykgfHwgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAnJyArIE1hdGguZmxvb3IoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDEwMClcbiAgICB0aGlzLiRpbnB1dCA9ICQoJzxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwidG9rZW4taW5wdXRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyggdGhpcy4kd3JhcHBlciApXG4gICAgICAgICAgICAgICAgICAgIC5wcm9wKCAncGxhY2Vob2xkZXInLCAgdGhpcy4kZWxlbWVudC5wcm9wKCdwbGFjZWhvbGRlcicpIClcbiAgICAgICAgICAgICAgICAgICAgLnByb3AoICdpZCcsIGlkICsgJy10b2tlbmZpZWxkJyApXG4gICAgICAgICAgICAgICAgICAgIC5wcm9wKCAndGFiaW5kZXgnLCB0aGlzLiRlbGVtZW50LmRhdGEoJ29yaWdpbmFsLXRhYmluZGV4JykgKVxuXG4gICAgLy8gUmUtcm91dGUgb3JpZ2luYWwgaW5wdXQgbGFiZWwgdG8gbmV3IGlucHV0XG4gICAgdmFyICRsYWJlbCA9ICQoICdsYWJlbFtmb3I9XCInICsgdGhpcy4kZWxlbWVudC5wcm9wKCdpZCcpICsgJ1wiXScgKVxuICAgIGlmICggJGxhYmVsLmxlbmd0aCApIHtcbiAgICAgICRsYWJlbC5wcm9wKCAnZm9yJywgdGhpcy4kaW5wdXQucHJvcCgnaWQnKSApXG4gICAgfVxuXG4gICAgLy8gU2V0IHVwIGEgY29weSBoZWxwZXIgdG8gaGFuZGxlIGNvcHkgJiBwYXN0ZVxuICAgIHRoaXMuJGNvcHlIZWxwZXIgPSAkKCc8aW5wdXQgdHlwZT1cInRleHRcIiAvPicpLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKS5jc3MoaGlkaW5nUG9zaXRpb24sICctMTAwMDBweCcpLnByb3AoJ3RhYmluZGV4JywgLTEpLnByZXBlbmRUbyggdGhpcy4kd3JhcHBlciApXG4gICAgXG4gICAgLy8gU2V0IHdyYXBwZXIgd2lkdGhcbiAgICBpZiAoZWxTdHlsZVdpZHRoKSB7XG4gICAgICB0aGlzLiR3cmFwcGVyLmNzcygnd2lkdGgnLCBlbFN0eWxlV2lkdGgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbENTU1dpZHRoKSB7XG4gICAgICB0aGlzLiR3cmFwcGVyLmNzcygnd2lkdGgnLCBlbENTU1dpZHRoKTtcbiAgICB9XG4gICAgLy8gSWYgaW5wdXQgaXMgaW5zaWRlIGlubGluZS1mb3JtIHdpdGggbm8gd2lkdGggc2V0LCBzZXQgZml4ZWQgd2lkdGhcbiAgICBlbHNlIGlmICh0aGlzLiRlbGVtZW50LnBhcmVudHMoJy5mb3JtLWlubGluZScpLmxlbmd0aCkge1xuICAgICAgdGhpcy4kd3JhcHBlci53aWR0aCggZWxXaWR0aCApXG4gICAgfVxuXG4gICAgLy8gU2V0IHRva2VuZmllbGQgZGlzYWJsZWQsIGlmIG9yaWdpbmFsIG9yIGZpZWxkc2V0IGlucHV0IGlzIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnKSB8fCB0aGlzLiRlbGVtZW50LnBhcmVudHMoJ2ZpZWxkc2V0W2Rpc2FibGVkXScpLmxlbmd0aCkge1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRva2VuZmllbGQgcmVhZG9ubHksIGlmIG9yaWdpbmFsIGlucHV0IGlzIHJlYWRvbmx5XG4gICAgaWYgKHRoaXMuJGVsZW1lbnQucHJvcCgncmVhZG9ubHknKSkge1xuICAgICAgdGhpcy5yZWFkb25seSgpO1xuICAgIH1cblxuICAgIC8vIFNldCB1cCBtaXJyb3IgZm9yIGlucHV0IGF1dG8tc2l6aW5nXG4gICAgdGhpcy4kbWlycm9yID0gJCgnPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi05OTlweDsgbGVmdDowOyB3aGl0ZS1zcGFjZTpwcmU7XCIvPicpO1xuICAgIHRoaXMuJGlucHV0LmNzcygnbWluLXdpZHRoJywgdGhpcy5vcHRpb25zLm1pbldpZHRoICsgJ3B4JylcbiAgICAkLmVhY2goW1xuICAgICAgICAnZm9udEZhbWlseScsIFxuICAgICAgICAnZm9udFNpemUnLCBcbiAgICAgICAgJ2ZvbnRXZWlnaHQnLCBcbiAgICAgICAgJ2ZvbnRTdHlsZScsIFxuICAgICAgICAnbGV0dGVyU3BhY2luZycsIFxuICAgICAgICAndGV4dFRyYW5zZm9ybScsIFxuICAgICAgICAnd29yZFNwYWNpbmcnLCBcbiAgICAgICAgJ3RleHRJbmRlbnQnXG4gICAgXSwgZnVuY3Rpb24gKGksIHZhbCkge1xuICAgICAgICBfc2VsZi4kbWlycm9yWzBdLnN0eWxlW3ZhbF0gPSBfc2VsZi4kaW5wdXQuY3NzKHZhbCk7XG4gICAgfSk7XG4gICAgdGhpcy4kbWlycm9yLmFwcGVuZFRvKCAnYm9keScgKVxuXG4gICAgLy8gSW5zZXJ0IHRva2VuZmllbGQgdG8gSFRNTFxuICAgIHRoaXMuJHdyYXBwZXIuaW5zZXJ0QmVmb3JlKCB0aGlzLiRlbGVtZW50IClcbiAgICB0aGlzLiRlbGVtZW50LnByZXBlbmRUbyggdGhpcy4kd3JhcHBlciApXG5cbiAgICAvLyBDYWxjdWxhdGUgaW5uZXIgaW5wdXQgd2lkdGhcbiAgICB0aGlzLnVwZGF0ZSgpXG4gICAgXG4gICAgLy8gQ3JlYXRlIGluaXRpYWwgdG9rZW5zLCBpZiBhbnlcbiAgICB0aGlzLnNldFRva2Vucyh0aGlzLm9wdGlvbnMudG9rZW5zLCBmYWxzZSwgZmFsc2UpXG5cbiAgICAvLyBTdGFydCBsaXN0ZW5pbmcgdG8gZXZlbnRzXG4gICAgdGhpcy5saXN0ZW4oKVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBhdXRvY29tcGxldGUsIGlmIG5lY2Vzc2FyeVxuICAgIGlmICggISAkLmlzRW1wdHlPYmplY3QoIHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUgKSApIHtcbiAgICAgIHZhciBzaWRlID0gdGhpcy50ZXh0RGlyZWN0aW9uID09PSAncnRsJyA/ICdyaWdodCcgOiAnbGVmdCdcbiAgICAgICAsICBhdXRvY29tcGxldGVPcHRpb25zID0gJC5leHRlbmQoe1xuICAgICAgICAgICAgbWluTGVuZ3RoOiB0aGlzLm9wdGlvbnMuc2hvd0F1dG9jb21wbGV0ZU9uRm9jdXMgPyAwIDogbnVsbCxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7IG15OiBzaWRlICsgXCIgdG9wXCIsIGF0OiBzaWRlICsgXCIgYm90dG9tXCIsIG9mOiB0aGlzLiR3cmFwcGVyIH1cbiAgICAgICAgICB9LCB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlIClcbiAgICAgIFxuICAgICAgdGhpcy4kaW5wdXQuYXV0b2NvbXBsZXRlKCBhdXRvY29tcGxldGVPcHRpb25zIClcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHR5cGVhaGVhZCwgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKCAhICQuaXNFbXB0eU9iamVjdCggdGhpcy5vcHRpb25zLnR5cGVhaGVhZCApICkge1xuICAgICAgXG4gICAgICB2YXIgdHlwZWFoZWFkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy50eXBlYWhlYWRcbiAgICAgICAgLCBkZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG1pbkxlbmd0aDogdGhpcy5vcHRpb25zLnNob3dBdXRvY29tcGxldGVPbkZvY3VzID8gMCA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICwgYXJncyA9ICQuaXNBcnJheSggdHlwZWFoZWFkT3B0aW9ucyApID8gdHlwZWFoZWFkT3B0aW9ucyA6IFt0eXBlYWhlYWRPcHRpb25zLCB0eXBlYWhlYWRPcHRpb25zXVxuICAgICAgXG4gICAgICBhcmdzWzBdID0gJC5leHRlbmQoIHt9LCBkZWZhdWx0cywgYXJnc1swXSApXG5cbiAgICAgIHRoaXMuJGlucHV0LnR5cGVhaGVhZC5hcHBseSggdGhpcy4kaW5wdXQsIGFyZ3MgKVxuICAgICAgdGhpcy50eXBlYWhlYWQgPSB0cnVlXG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCd0b2tlbmZpZWxkOmluaXRpYWxpemUnKVxuICB9XG5cbiAgVG9rZW5maWVsZC5wcm90b3R5cGUgPSB7XG5cbiAgICBjb25zdHJ1Y3RvcjogVG9rZW5maWVsZFxuXG4gICwgY3JlYXRlVG9rZW46IGZ1bmN0aW9uIChhdHRycywgdHJpZ2dlckNoYW5nZSkge1xuICAgICAgdmFyIF9zZWxmID0gdGhpc1xuXG4gICAgICBpZiAodHlwZW9mIGF0dHJzID09PSAnc3RyaW5nJykge1xuICAgICAgICBhdHRycyA9IHsgdmFsdWU6IGF0dHJzLCBsYWJlbDogYXR0cnMgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRyaWdnZXJDaGFuZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICB0cmlnZ2VyQ2hhbmdlID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICAvLyBOb3JtYWxpemUgbGFiZWwgYW5kIHZhbHVlXG4gICAgICBhdHRycy52YWx1ZSA9ICQudHJpbShhdHRycy52YWx1ZSk7XG4gICAgICBhdHRycy5sYWJlbCA9IGF0dHJzLmxhYmVsICYmIGF0dHJzLmxhYmVsLmxlbmd0aCA/ICQudHJpbShhdHRycy5sYWJlbCkgOiBhdHRycy52YWx1ZVxuXG4gICAgICAvLyBCYWlsIG91dCBpZiBoYXMgbm8gdmFsdWUgb3IgbGFiZWwsIG9yIGxhYmVsIGlzIHRvbyBzaG9ydFxuICAgICAgaWYgKCFhdHRycy52YWx1ZS5sZW5ndGggfHwgIWF0dHJzLmxhYmVsLmxlbmd0aCB8fCBhdHRycy5sYWJlbC5sZW5ndGggPD0gdGhpcy5vcHRpb25zLm1pbkxlbmd0aCkgcmV0dXJuXG5cbiAgICAgIC8vIEJhaWwgb3V0IGlmIG1heGltdW0gbnVtYmVyIG9mIHRva2VucyBpcyByZWFjaGVkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmxpbWl0ICYmIHRoaXMuZ2V0VG9rZW5zKCkubGVuZ3RoID49IHRoaXMub3B0aW9ucy5saW1pdCkgcmV0dXJuXG5cbiAgICAgIC8vIEFsbG93IGNoYW5naW5nIHRva2VuIGRhdGEgYmVmb3JlIGNyZWF0aW5nIGl0XG4gICAgICB2YXIgY3JlYXRlRXZlbnQgPSAkLkV2ZW50KCd0b2tlbmZpZWxkOmNyZWF0ZXRva2VuJywgeyBhdHRyczogYXR0cnMgfSlcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihjcmVhdGVFdmVudClcblxuICAgICAgLy8gQmFpbCBvdXQgaWYgdGhlcmUgaWYgYXR0cmlidXRlcyBhcmUgZW1wdHkgb3IgZXZlbnQgd2FzIGRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgIGlmICghY3JlYXRlRXZlbnQuYXR0cnMgfHwgY3JlYXRlRXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgICB2YXIgJHRva2VuID0gJCgnPGRpdiBjbGFzcz1cInRva2VuXCIgLz4nKVxuICAgICAgICAgICAgLmF0dHIoJ2RhdGEtdmFsdWUnLCBhdHRycy52YWx1ZSlcbiAgICAgICAgICAgIC5hcHBlbmQoJzxzcGFuIGNsYXNzPVwidG9rZW4tbGFiZWxcIiAvPicpXG4gICAgICAgICAgICAuYXBwZW5kKCc8YSBocmVmPVwiI1wiIGNsYXNzPVwiY2xvc2VcIiB0YWJpbmRleD1cIi0xXCI+JnRpbWVzOzwvYT4nKVxuXG4gICAgICAvLyBJbnNlcnQgdG9rZW4gaW50byBIVE1MXG4gICAgICBpZiAodGhpcy4kaW5wdXQuaGFzQ2xhc3MoJ3R0LWlucHV0JykpIHtcbiAgICAgICAgLy8gSWYgdGhlIGlucHV0IGhhcyB0eXBlYWhlYWQgZW5hYmxlZCwgaW5zZXJ0IHRva2VuIGJlZm9yZSBpdCdzIHBhcmVudFxuICAgICAgICB0aGlzLiRpbnB1dC5wYXJlbnQoKS5iZWZvcmUoICR0b2tlbiApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRpbnB1dC5iZWZvcmUoICR0b2tlbiApXG4gICAgICB9XG5cbiAgICAgIC8vIFRlbXBvcmFyaWx5IHNldCBpbnB1dCB3aWR0aCB0byBtaW5pbXVtXG4gICAgICB0aGlzLiRpbnB1dC5jc3MoJ3dpZHRoJywgdGhpcy5vcHRpb25zLm1pbldpZHRoICsgJ3B4JylcblxuICAgICAgdmFyICR0b2tlbkxhYmVsID0gJHRva2VuLmZpbmQoJy50b2tlbi1sYWJlbCcpXG4gICAgICAgICwgJGNsb3NlQnV0dG9uID0gJHRva2VuLmZpbmQoJy5jbG9zZScpXG5cbiAgICAgIC8vIERldGVybWluZSBtYXhpbXVtIHBvc3NpYmxlIHRva2VuIGxhYmVsIHdpZHRoXG4gICAgICBpZiAoIXRoaXMubWF4VG9rZW5XaWR0aCkge1xuICAgICAgICB0aGlzLm1heFRva2VuV2lkdGggPVxuICAgICAgICAgIHRoaXMuJHdyYXBwZXIud2lkdGgoKSAtICRjbG9zZUJ1dHRvbi5vdXRlcldpZHRoKCkgLSBcbiAgICAgICAgICBwYXJzZUludCgkY2xvc2VCdXR0b24uY3NzKCdtYXJnaW4tbGVmdCcpLCAxMCkgLVxuICAgICAgICAgIHBhcnNlSW50KCRjbG9zZUJ1dHRvbi5jc3MoJ21hcmdpbi1yaWdodCcpLCAxMCkgLVxuICAgICAgICAgIHBhcnNlSW50KCR0b2tlbi5jc3MoJ2JvcmRlci1sZWZ0LXdpZHRoJyksIDEwKSAtXG4gICAgICAgICAgcGFyc2VJbnQoJHRva2VuLmNzcygnYm9yZGVyLXJpZ2h0LXdpZHRoJyksIDEwKSAtXG4gICAgICAgICAgcGFyc2VJbnQoJHRva2VuLmNzcygncGFkZGluZy1sZWZ0JyksIDEwKSAtXG4gICAgICAgICAgcGFyc2VJbnQoJHRva2VuLmNzcygncGFkZGluZy1yaWdodCcpLCAxMClcbiAgICAgICAgICBwYXJzZUludCgkdG9rZW5MYWJlbC5jc3MoJ2JvcmRlci1sZWZ0LXdpZHRoJyksIDEwKSAtXG4gICAgICAgICAgcGFyc2VJbnQoJHRva2VuTGFiZWwuY3NzKCdib3JkZXItcmlnaHQtd2lkdGgnKSwgMTApIC1cbiAgICAgICAgICBwYXJzZUludCgkdG9rZW5MYWJlbC5jc3MoJ3BhZGRpbmctbGVmdCcpLCAxMCkgLVxuICAgICAgICAgIHBhcnNlSW50KCR0b2tlbkxhYmVsLmNzcygncGFkZGluZy1yaWdodCcpLCAxMClcbiAgICAgICAgICBwYXJzZUludCgkdG9rZW5MYWJlbC5jc3MoJ21hcmdpbi1sZWZ0JyksIDEwKSAtXG4gICAgICAgICAgcGFyc2VJbnQoJHRva2VuTGFiZWwuY3NzKCdtYXJnaW4tcmlnaHQnKSwgMTApXG4gICAgICB9XG5cbiAgICAgICR0b2tlbkxhYmVsXG4gICAgICAgIC50ZXh0KGF0dHJzLmxhYmVsKVxuICAgICAgICAuY3NzKCdtYXgtd2lkdGgnLCB0aGlzLm1heFRva2VuV2lkdGgpXG5cbiAgICAgIC8vIExpc3RlbiB0byBldmVudHMgb24gdG9rZW5cbiAgICAgICR0b2tlblxuICAgICAgICAub24oJ21vdXNlZG93bicsICBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGlmIChfc2VsZi5fZGlzYWJsZWQgfHwgX3NlbGYuX3JlYWRvbmx5KSByZXR1cm4gZmFsc2VcbiAgICAgICAgICBfc2VsZi5wcmV2ZW50RGVhY3RpdmF0aW9uID0gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICAub24oJ2NsaWNrJywgICAgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBpZiAoX3NlbGYuX2Rpc2FibGVkIHx8IF9zZWxmLl9yZWFkb25seSkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgX3NlbGYucHJldmVudERlYWN0aXZhdGlvbiA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICByZXR1cm4gX3NlbGYudG9nZ2xlKCAkdG9rZW4gKVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBfc2VsZi5hY3RpdmF0ZSggJHRva2VuLCBlLnNoaWZ0S2V5LCBlLnNoaWZ0S2V5ICkgICAgICAgICAgXG4gICAgICAgIH0pXG4gICAgICAgIC5vbignZGJsY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGlmIChfc2VsZi5fZGlzYWJsZWQgfHwgX3NlbGYuX3JlYWRvbmx5IHx8ICFfc2VsZi5vcHRpb25zLmFsbG93RWRpdGluZyApIHJldHVybiBmYWxzZVxuICAgICAgICAgIF9zZWxmLmVkaXQoICR0b2tlbiApXG4gICAgICAgIH0pXG5cbiAgICAgICRjbG9zZUJ1dHRvblxuICAgICAgICAgIC5vbignY2xpY2snLCAgJC5wcm94eSh0aGlzLnJlbW92ZSwgdGhpcykpXG5cbiAgICAgIC8vIFRyaWdnZXIgY3JlYXRlZHRva2VuIGV2ZW50IG9uIHRoZSBvcmlnaW5hbCBmaWVsZFxuICAgICAgLy8gaW5kaWNhdGluZyB0aGF0IHRoZSB0b2tlbiBpcyBub3cgaW4gdGhlIERPTVxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCQuRXZlbnQoJ3Rva2VuZmllbGQ6Y3JlYXRlZHRva2VuJywge1xuICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6ICR0b2tlbi5nZXQoMClcbiAgICAgIH0pKVxuXG4gICAgICAvLyBUcmlnZ2VyIGNoYW5nZSBldmVudCBvbiB0aGUgb3JpZ2luYWwgZmllbGRcbiAgICAgIGlmICh0cmlnZ2VyQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQudmFsKCB0aGlzLmdldFRva2Vuc0xpc3QoKSApLnRyaWdnZXIoICQuRXZlbnQoJ2NoYW5nZScsIHsgaW5pdGlhdG9yOiAndG9rZW5maWVsZCcgfSkgKVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgdG9rZW5maWVsZCBkaW1lbnNpb25zXG4gICAgICB0aGlzLnVwZGF0ZSgpXG5cbiAgICAgIC8vIFJldHVybiBvcmlnaW5hbCBlbGVtZW50XG4gICAgICByZXR1cm4gdGhpcy4kZWxlbWVudC5nZXQoMClcbiAgICB9ICAgIFxuXG4gICwgc2V0VG9rZW5zOiBmdW5jdGlvbiAodG9rZW5zLCBhZGQsIHRyaWdnZXJDaGFuZ2UpIHtcbiAgICAgIGlmICghdG9rZW5zKSByZXR1cm5cblxuICAgICAgaWYgKCFhZGQpIHRoaXMuJHdyYXBwZXIuZmluZCgnLnRva2VuJykucmVtb3ZlKClcblxuICAgICAgaWYgKHR5cGVvZiB0cmlnZ2VyQ2hhbmdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHRyaWdnZXJDaGFuZ2UgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdG9rZW5zID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodGhpcy5fZGVsaW1pdGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBTcGxpdCBiYXNlZCBvbiBkZWxpbWl0ZXJzXG4gICAgICAgICAgdG9rZW5zID0gdG9rZW5zLnNwbGl0KCBuZXcgUmVnRXhwKCAnWycgKyB0aGlzLl9kZWxpbWl0ZXJzLmpvaW4oJycpICsgJ10nICkgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRva2VucyA9IFt0b2tlbnNdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBfc2VsZiA9IHRoaXNcbiAgICAgICQuZWFjaCh0b2tlbnMsIGZ1bmN0aW9uIChpLCBhdHRycykge1xuICAgICAgICBfc2VsZi5jcmVhdGVUb2tlbihhdHRycywgdHJpZ2dlckNoYW5nZSlcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LmdldCgwKVxuICAgIH1cblxuICAsIGdldFRva2VuRGF0YTogZnVuY3Rpb24oJHRva2VuKSB7XG4gICAgICB2YXIgZGF0YSA9ICR0b2tlbi5tYXAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciAkdG9rZW4gPSAkKHRoaXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiAkdG9rZW4uYXR0cignZGF0YS12YWx1ZScpLFxuICAgICAgICAgIGxhYmVsOiAkdG9rZW4uZmluZCgnLnRva2VuLWxhYmVsJykudGV4dCgpXG4gICAgICAgIH1cbiAgICAgIH0pLmdldCgpO1xuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMSkge1xuICAgICAgICBkYXRhID0gZGF0YVswXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICwgZ2V0VG9rZW5zOiBmdW5jdGlvbihhY3RpdmUpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpc1xuICAgICAgICAsIHRva2VucyA9IFtdXG4gICAgICAgICwgYWN0aXZlQ2xhc3MgPSBhY3RpdmUgPyAnLmFjdGl2ZScgOiAnJyAvLyBnZXQgYWN0aXZlIHRva2VucyBvbmx5XG4gICAgICB0aGlzLiR3cmFwcGVyLmZpbmQoICcudG9rZW4nICsgYWN0aXZlQ2xhc3MgKS5lYWNoKCBmdW5jdGlvbigpIHtcbiAgICAgICAgdG9rZW5zLnB1c2goIHNlbGYuZ2V0VG9rZW5EYXRhKCAkKHRoaXMpICkgKVxuICAgICAgfSlcbiAgICAgIHJldHVybiB0b2tlbnNcbiAgfVxuXG4gICwgZ2V0VG9rZW5zTGlzdDogZnVuY3Rpb24oZGVsaW1pdGVyLCBiZWF1dGlmeSwgYWN0aXZlKSB7XG4gICAgICBkZWxpbWl0ZXIgPSBkZWxpbWl0ZXIgfHwgdGhpcy5fZmlyc3REZWxpbWl0ZXJcbiAgICAgIGJlYXV0aWZ5ID0gKCB0eXBlb2YgYmVhdXRpZnkgIT09ICd1bmRlZmluZWQnICYmIGJlYXV0aWZ5ICE9PSBudWxsICkgPyBiZWF1dGlmeSA6IHRoaXMub3B0aW9ucy5iZWF1dGlmeVxuICAgICAgXG4gICAgICB2YXIgc2VwYXJhdG9yID0gZGVsaW1pdGVyICsgKCBiZWF1dGlmeSAmJiBkZWxpbWl0ZXIgIT09ICcgJyA/ICcgJyA6ICcnKVxuICAgICAgcmV0dXJuICQubWFwKCB0aGlzLmdldFRva2VucyhhY3RpdmUpLCBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlXG4gICAgICB9KS5qb2luKHNlcGFyYXRvcilcbiAgfVxuXG4gICwgZ2V0SW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLiRpbnB1dC52YWwoKVxuICB9XG5cbiAgLCBsaXN0ZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfc2VsZiA9IHRoaXNcblxuICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAub24oJ2NoYW5nZScsICAgJC5wcm94eSh0aGlzLmNoYW5nZSwgdGhpcykpXG5cbiAgICAgIHRoaXMuJHdyYXBwZXJcbiAgICAgICAgLm9uKCdtb3VzZWRvd24nLCQucHJveHkodGhpcy5mb2N1c0lucHV0LCB0aGlzKSlcblxuICAgICAgdGhpcy4kaW5wdXRcbiAgICAgICAgLm9uKCdmb2N1cycsICAgICQucHJveHkodGhpcy5mb2N1cywgdGhpcykpXG4gICAgICAgIC5vbignYmx1cicsICAgICAkLnByb3h5KHRoaXMuYmx1ciwgdGhpcykpXG4gICAgICAgIC5vbigncGFzdGUnLCAgICAkLnByb3h5KHRoaXMucGFzdGUsIHRoaXMpKVxuICAgICAgICAub24oJ2tleWRvd24nLCAgJC5wcm94eSh0aGlzLmtleWRvd24sIHRoaXMpKVxuICAgICAgICAub24oJ2tleXByZXNzJywgJC5wcm94eSh0aGlzLmtleXByZXNzLCB0aGlzKSlcbiAgICAgICAgLm9uKCdrZXl1cCcsICAgICQucHJveHkodGhpcy5rZXl1cCwgdGhpcykpXG5cbiAgICAgIHRoaXMuJGNvcHlIZWxwZXJcbiAgICAgICAgLm9uKCdmb2N1cycsICAgICQucHJveHkodGhpcy5mb2N1cywgdGhpcykpXG4gICAgICAgIC5vbignYmx1cicsICAgICAkLnByb3h5KHRoaXMuYmx1ciwgdGhpcykpICAgICAgICBcbiAgICAgICAgLm9uKCdrZXlkb3duJywgICQucHJveHkodGhpcy5rZXlkb3duLCB0aGlzKSlcbiAgICAgICAgLm9uKCdrZXl1cCcsICAgICQucHJveHkodGhpcy5rZXl1cCwgdGhpcykpXG5cbiAgICAgIC8vIFNlY29uZGFyeSBsaXN0ZW5lcnMgZm9yIGlucHV0IHdpZHRoIGNhbGN1bGF0aW9uXG4gICAgICB0aGlzLiRpbnB1dFxuICAgICAgICAub24oJ2tleXByZXNzJywgJC5wcm94eSh0aGlzLnVwZGF0ZSwgdGhpcykpXG4gICAgICAgIC5vbigna2V5dXAnLCAgICAkLnByb3h5KHRoaXMudXBkYXRlLCB0aGlzKSlcblxuICAgICAgdGhpcy4kaW5wdXRcbiAgICAgICAgLm9uKCdhdXRvY29tcGxldGVjcmVhdGUnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAvLyBTZXQgbWluaW11bSBhdXRvY29tcGxldGUgbWVudSB3aWR0aFxuICAgICAgICAgIHZhciAkX21lbnVFbGVtZW50ID0gJCh0aGlzKS5kYXRhKCd1aS1hdXRvY29tcGxldGUnKS5tZW51LmVsZW1lbnRcbiAgICAgICAgICBcbiAgICAgICAgICB2YXIgbWluV2lkdGggPSBfc2VsZi4kd3JhcHBlci5vdXRlcldpZHRoKCkgLVxuICAgICAgICAgICAgICBwYXJzZUludCggJF9tZW51RWxlbWVudC5jc3MoJ2JvcmRlci1sZWZ0LXdpZHRoJyksIDEwICkgLVxuICAgICAgICAgICAgICBwYXJzZUludCggJF9tZW51RWxlbWVudC5jc3MoJ2JvcmRlci1yaWdodC13aWR0aCcpLCAxMCApXG5cbiAgICAgICAgICAkX21lbnVFbGVtZW50LmNzcyggJ21pbi13aWR0aCcsIG1pbldpZHRoICsgJ3B4JyApXG4gICAgICAgIH0pXG4gICAgICAgIC5vbignYXV0b2NvbXBsZXRlc2VsZWN0JywgZnVuY3Rpb24gKGUsIHVpKSB7XG4gICAgICAgICAgaWYgKF9zZWxmLmNyZWF0ZVRva2VuKCB1aS5pdGVtICkpIHtcbiAgICAgICAgICAgIF9zZWxmLiRpbnB1dC52YWwoJycpXG4gICAgICAgICAgICBpZiAoX3NlbGYuJGlucHV0LmRhdGEoICdlZGl0JyApKSB7XG4gICAgICAgICAgICAgIF9zZWxmLnVuZWRpdCh0cnVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCd0eXBlYWhlYWQ6c2VsZWN0ZWQgdHlwZWFoZWFkOmF1dG9jb21wbGV0ZWQnLCBmdW5jdGlvbiAoZSwgZGF0dW0sIGRhdGFzZXQpIHtcbiAgICAgICAgICAvLyBDcmVhdGUgdG9rZW5cbiAgICAgICAgICBpZiAoX3NlbGYuY3JlYXRlVG9rZW4oIGRhdHVtICkpIHtcbiAgICAgICAgICAgIF9zZWxmLiRpbnB1dC50eXBlYWhlYWQoJ3ZhbCcsICcnKVxuICAgICAgICAgICAgaWYgKF9zZWxmLiRpbnB1dC5kYXRhKCAnZWRpdCcgKSkge1xuICAgICAgICAgICAgICBfc2VsZi51bmVkaXQodHJ1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgIC8vIExpc3RlbiB0byB3aW5kb3cgcmVzaXplXG4gICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZScsICQucHJveHkodGhpcy51cGRhdGUsIHRoaXMgKSlcblxuICAgIH1cblxuICAsIGtleWRvd246IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgIGlmICghdGhpcy5mb2N1c2VkKSByZXR1cm5cblxuICAgICAgdmFyIF9zZWxmID0gdGhpc1xuXG4gICAgICBzd2l0Y2goZS5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgODogLy8gYmFja3NwYWNlXG4gICAgICAgICAgaWYgKCF0aGlzLiRpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkgYnJlYWtcbiAgICAgICAgICB0aGlzLmxhc3RJbnB1dFZhbHVlID0gdGhpcy4kaW5wdXQudmFsKClcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgMzc6IC8vIGxlZnQgYXJyb3dcbiAgICAgICAgICBsZWZ0UmlnaHQoIHRoaXMudGV4dERpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnbmV4dCc6ICdwcmV2JyApXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlIDM4OiAvLyB1cCBhcnJvd1xuICAgICAgICAgIHVwRG93bigncHJldicpXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlIDM5OiAvLyByaWdodCBhcnJvd1xuICAgICAgICAgIGxlZnRSaWdodCggdGhpcy50ZXh0RGlyZWN0aW9uID09PSAncnRsJyA/ICdwcmV2JzogJ25leHQnIClcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgNDA6IC8vIGRvd24gYXJyb3dcbiAgICAgICAgICB1cERvd24oJ25leHQnKVxuICAgICAgICAgIGJyZWFrICAgICAgICBcblxuICAgICAgICBjYXNlIDY1OiAvLyBhICh0byBoYW5kbGUgY3RybCArIGEpXG4gICAgICAgICAgaWYgKHRoaXMuJGlucHV0LnZhbCgpLmxlbmd0aCA+IDAgfHwgIShlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkgYnJlYWtcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlQWxsKClcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgOTogLy8gdGFiXG4gICAgICAgIGNhc2UgMTM6IC8vIGVudGVyICAgICBcblxuICAgICAgICAgIC8vIFdlIHdpbGwgaGFuZGxlIGNyZWF0aW5nIHRva2VucyBmcm9tIGF1dG9jb21wbGV0ZSBpbiBhdXRvY29tcGxldGUgZXZlbnRzXG4gICAgICAgICAgaWYgKHRoaXMuJGlucHV0LmRhdGEoJ3VpLWF1dG9jb21wbGV0ZScpICYmIHRoaXMuJGlucHV0LmRhdGEoJ3VpLWF1dG9jb21wbGV0ZScpLm1lbnUuZWxlbWVudC5maW5kKFwibGk6aGFzKGEudWktc3RhdGUtZm9jdXMpXCIpLmxlbmd0aCkgYnJlYWtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBXZSB3aWxsIGhhbmRsZSBjcmVhdGluZyB0b2tlbnMgZnJvbSB0eXBlYWhlYWQgaW4gdHlwZWFoZWFkIGV2ZW50c1xuICAgICAgICAgIGlmICh0aGlzLiRpbnB1dC5oYXNDbGFzcygndHQtaW5wdXQnKSAmJiB0aGlzLiR3cmFwcGVyLmZpbmQoJy50dC1jdXJzb3InKS5sZW5ndGggKSBicmVha1xuICAgICAgICAgIGlmICh0aGlzLiRpbnB1dC5oYXNDbGFzcygndHQtaW5wdXQnKSAmJiB0aGlzLiR3cmFwcGVyLmZpbmQoJy50dC1oaW50JykudmFsKCkubGVuZ3RoKSBicmVha1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIENyZWF0ZSB0b2tlblxuICAgICAgICAgIGlmICh0aGlzLiRpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSAmJiB0aGlzLiRpbnB1dC52YWwoKS5sZW5ndGggfHwgdGhpcy4kaW5wdXQuZGF0YSgnZWRpdCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUb2tlbnNGcm9tSW5wdXQoZSwgdGhpcy4kaW5wdXQuZGF0YSgnZWRpdCcpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFZGl0IHRva2VuXG4gICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy4kY29weUhlbHBlci5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB8fCB0aGlzLiR3cmFwcGVyLmZpbmQoJy50b2tlbi5hY3RpdmUnKS5sZW5ndGggIT09IDEpIGJyZWFrXG4gICAgICAgICAgICBpZiAoIV9zZWxmLm9wdGlvbnMuYWxsb3dFZGl0aW5nKSBicmVha1xuICAgICAgICAgICAgdGhpcy5lZGl0KCB0aGlzLiR3cmFwcGVyLmZpbmQoJy50b2tlbi5hY3RpdmUnKSApXG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWZ0UmlnaHQoZGlyZWN0aW9uKSB7XG4gICAgICAgIGlmIChfc2VsZi4kaW5wdXQuaXMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICBpZiAoX3NlbGYuJGlucHV0LnZhbCgpLmxlbmd0aCA+IDApIHJldHVyblxuXG4gICAgICAgICAgZGlyZWN0aW9uICs9ICdBbGwnXG4gICAgICAgICAgdmFyICR0b2tlbiA9IF9zZWxmLiRpbnB1dC5oYXNDbGFzcygndHQtaW5wdXQnKSA/IF9zZWxmLiRpbnB1dC5wYXJlbnQoKVtkaXJlY3Rpb25dKCcudG9rZW46Zmlyc3QnKSA6IF9zZWxmLiRpbnB1dFtkaXJlY3Rpb25dKCcudG9rZW46Zmlyc3QnKVxuICAgICAgICAgIGlmICghJHRva2VuLmxlbmd0aCkgcmV0dXJuXG5cbiAgICAgICAgICBfc2VsZi5wcmV2ZW50SW5wdXRGb2N1cyA9IHRydWVcbiAgICAgICAgICBfc2VsZi5wcmV2ZW50RGVhY3RpdmF0aW9uID0gdHJ1ZVxuXG4gICAgICAgICAgX3NlbGYuYWN0aXZhdGUoICR0b2tlbiApXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfc2VsZltkaXJlY3Rpb25dKCBlLnNoaWZ0S2V5IClcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB1cERvd24oZGlyZWN0aW9uKSB7XG4gICAgICAgIGlmICghZS5zaGlmdEtleSkgcmV0dXJuXG5cbiAgICAgICAgaWYgKF9zZWxmLiRpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgIGlmIChfc2VsZi4kaW5wdXQudmFsKCkubGVuZ3RoID4gMCkgcmV0dXJuXG5cbiAgICAgICAgICB2YXIgJHRva2VuID0gX3NlbGYuJGlucHV0Lmhhc0NsYXNzKCd0dC1pbnB1dCcpID8gX3NlbGYuJGlucHV0LnBhcmVudCgpW2RpcmVjdGlvbiArICdBbGwnXSgnLnRva2VuOmZpcnN0JykgOiBfc2VsZi4kaW5wdXRbZGlyZWN0aW9uICsgJ0FsbCddKCcudG9rZW46Zmlyc3QnKVxuICAgICAgICAgIGlmICghJHRva2VuLmxlbmd0aCkgcmV0dXJuXG5cbiAgICAgICAgICBfc2VsZi5hY3RpdmF0ZSggJHRva2VuIClcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvcHBvc2l0ZSA9IGRpcmVjdGlvbiA9PT0gJ3ByZXYnID8gJ25leHQnIDogJ3ByZXYnXG4gICAgICAgICAgLCBwb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3ByZXYnID8gJ2ZpcnN0JyA6ICdsYXN0J1xuXG4gICAgICAgIF9zZWxmLmZpcnN0QWN0aXZlVG9rZW5bb3Bwb3NpdGUgKyAnQWxsJ10oJy50b2tlbicpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgX3NlbGYuZGVhY3RpdmF0ZSggJCh0aGlzKSApXG4gICAgICAgIH0pXG5cbiAgICAgICAgX3NlbGYuYWN0aXZhdGUoIF9zZWxmLiR3cmFwcGVyLmZpbmQoJy50b2tlbjonICsgcG9zaXRpb24pLCB0cnVlLCB0cnVlIClcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdEtleURvd24gPSBlLmtleUNvZGVcbiAgICB9XG5cbiAgLCBrZXlwcmVzczogZnVuY3Rpb24oZSkge1xuICAgICAgdGhpcy5sYXN0S2V5UHJlc3NDb2RlID0gZS5rZXlDb2RlXG4gICAgICB0aGlzLmxhc3RLZXlQcmVzc0NoYXJDb2RlID0gZS5jaGFyQ29kZVxuXG4gICAgICAvLyBDb21tYVxuICAgICAgaWYgKCQuaW5BcnJheSggZS5jaGFyQ29kZSwgdGhpcy5fdHJpZ2dlcktleXMpICE9PSAtMSAmJiB0aGlzLiRpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICBpZiAodGhpcy4kaW5wdXQudmFsKCkpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZVRva2Vuc0Zyb21JbnB1dChlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBrZXl1cDogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHRoaXMucHJldmVudElucHV0Rm9jdXMgPSBmYWxzZVxuXG4gICAgICBpZiAoIXRoaXMuZm9jdXNlZCkgcmV0dXJuXG5cbiAgICAgIHN3aXRjaChlLmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSA4OiAvLyBiYWNrc3BhY2VcbiAgICAgICAgICBpZiAodGhpcy4kaW5wdXQuaXMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiRpbnB1dC52YWwoKS5sZW5ndGggfHwgdGhpcy5sYXN0SW5wdXRWYWx1ZS5sZW5ndGggJiYgdGhpcy5sYXN0S2V5RG93biA9PT0gOCkgYnJlYWtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RGVhY3RpdmF0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgdmFyICRwcmV2VG9rZW4gPSB0aGlzLiRpbnB1dC5oYXNDbGFzcygndHQtaW5wdXQnKSA/IHRoaXMuJGlucHV0LnBhcmVudCgpLnByZXZBbGwoJy50b2tlbjpmaXJzdCcpIDogdGhpcy4kaW5wdXQucHJldkFsbCgnLnRva2VuOmZpcnN0JylcblxuICAgICAgICAgICAgaWYgKCEkcHJldlRva2VuLmxlbmd0aCkgYnJlYWtcblxuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZSggJHByZXZUb2tlbiApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKGUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSA0NjogLy8gZGVsZXRlXG4gICAgICAgICAgdGhpcy5yZW1vdmUoZSwgJ25leHQnKVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RLZXlVcCA9IGUua2V5Q29kZVxuICAgIH1cblxuICAsIGZvY3VzOiBmdW5jdGlvbiAoZSkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgICAgdGhpcy4kd3JhcHBlci5hZGRDbGFzcygnZm9jdXMnKVxuXG4gICAgICBpZiAodGhpcy4kaW5wdXQuaXMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgdGhpcy4kd3JhcHBlci5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICAgIHRoaXMuJGZpcnN0QWN0aXZlVG9rZW4gPSBudWxsXG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93QXV0b2NvbXBsZXRlT25Gb2N1cykge1xuICAgICAgICAgIHRoaXMuc2VhcmNoKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAsIGJsdXI6IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlXG4gICAgICB0aGlzLiR3cmFwcGVyLnJlbW92ZUNsYXNzKCdmb2N1cycpXG5cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50RGVhY3RpdmF0aW9uICYmICF0aGlzLiRlbGVtZW50LmlzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuJHdyYXBwZXIuZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxuICAgICAgICB0aGlzLiRmaXJzdEFjdGl2ZVRva2VuID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMucHJldmVudENyZWF0ZVRva2VucyAmJiAodGhpcy4kaW5wdXQuZGF0YSgnZWRpdCcpICYmICF0aGlzLiRpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB8fCB0aGlzLm9wdGlvbnMuY3JlYXRlVG9rZW5zT25CbHVyICkpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVUb2tlbnNGcm9tSW5wdXQoZSkgXG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMucHJldmVudERlYWN0aXZhdGlvbiA9IGZhbHNlXG4gICAgICB0aGlzLnByZXZlbnRDcmVhdGVUb2tlbnMgPSBmYWxzZVxuICAgIH1cblxuICAsIHBhc3RlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF9zZWxmID0gdGhpc1xuICAgICAgXG4gICAgICAvLyBBZGQgdG9rZW5zIHRvIGV4aXN0aW5nIG9uZXNcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfc2VsZi5jcmVhdGVUb2tlbnNGcm9tSW5wdXQoZSlcbiAgICAgIH0sIDEpXG4gICAgfVxuXG4gICwgY2hhbmdlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCBlLmluaXRpYXRvciA9PT0gJ3Rva2VuZmllbGQnICkgcmV0dXJuIC8vIFByZXZlbnQgbG9vcHNcbiAgICAgIFxuICAgICAgdGhpcy5zZXRUb2tlbnMoIHRoaXMuJGVsZW1lbnQudmFsKCkgKVxuICAgIH1cblxuICAsIGNyZWF0ZVRva2Vuc0Zyb21JbnB1dDogZnVuY3Rpb24gKGUsIGZvY3VzKSB7XG4gICAgICBpZiAodGhpcy4kaW5wdXQudmFsKCkubGVuZ3RoIDwgdGhpcy5vcHRpb25zLm1pbkxlbmd0aClcbiAgICAgICAgcmV0dXJuIC8vIE5vIGlucHV0LCBzaW1wbHkgcmV0dXJuXG5cbiAgICAgIHZhciB0b2tlbnNCZWZvcmUgPSB0aGlzLmdldFRva2Vuc0xpc3QoKVxuICAgICAgdGhpcy5zZXRUb2tlbnMoIHRoaXMuJGlucHV0LnZhbCgpLCB0cnVlIClcbiAgICAgIFxuICAgICAgaWYgKHRva2Vuc0JlZm9yZSA9PSB0aGlzLmdldFRva2Vuc0xpc3QoKSAmJiB0aGlzLiRpbnB1dC52YWwoKS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZSAvLyBObyB0b2tlbnMgd2VyZSBhZGRlZCwgZG8gbm90aGluZyAocHJldmVudCBmb3JtIHN1Ym1pdClcblxuICAgICAgaWYgKHRoaXMuJGlucHV0Lmhhc0NsYXNzKCd0dC1pbnB1dCcpKSB7XG4gICAgICAgIC8vIFR5cGVhaGVhZCBhY3RzIHdlaXJkIHdoZW4gc2ltcGx5IHNldHRpbmcgaW5wdXQgdmFsdWUgdG8gZW1wdHksXG4gICAgICAgIC8vIHNvIHdlIHNldCB0aGUgcXVlcnkgdG8gZW1wdHkgaW5zdGVhZFxuICAgICAgICB0aGlzLiRpbnB1dC50eXBlYWhlYWQoJ3ZhbCcsICcnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kaW5wdXQudmFsKCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4kaW5wdXQuZGF0YSggJ2VkaXQnICkpIHtcbiAgICAgICAgdGhpcy51bmVkaXQoZm9jdXMpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZSAvLyBQcmV2ZW50IGZvcm0gYmVpbmcgc3VibWl0dGVkXG4gICAgfSAgXG5cbiAgLCBuZXh0OiBmdW5jdGlvbiAoYWRkKSB7XG4gICAgICBpZiAoYWRkKSB7XG4gICAgICAgIHZhciAkZmlyc3RBY3RpdmVUb2tlbiA9IHRoaXMuJHdyYXBwZXIuZmluZCgnLmFjdGl2ZTpmaXJzdCcpXG4gICAgICAgICAgLCBkZWFjdGl2YXRlID0gJGZpcnN0QWN0aXZlVG9rZW4gJiYgdGhpcy4kZmlyc3RBY3RpdmVUb2tlbiA/ICRmaXJzdEFjdGl2ZVRva2VuLmluZGV4KCkgPCB0aGlzLiRmaXJzdEFjdGl2ZVRva2VuLmluZGV4KCkgOiBmYWxzZVxuXG4gICAgICAgIGlmIChkZWFjdGl2YXRlKSByZXR1cm4gdGhpcy5kZWFjdGl2YXRlKCAkZmlyc3RBY3RpdmVUb2tlbiApXG4gICAgICB9XG5cbiAgICAgIHZhciAkbGFzdEFjdGl2ZVRva2VuID0gdGhpcy4kd3JhcHBlci5maW5kKCcuYWN0aXZlOmxhc3QnKVxuICAgICAgICAsICRuZXh0VG9rZW4gPSAkbGFzdEFjdGl2ZVRva2VuLm5leHRBbGwoJy50b2tlbjpmaXJzdCcpXG5cbiAgICAgIGlmICghJG5leHRUb2tlbi5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy4kaW5wdXQuZm9jdXMoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5hY3RpdmF0ZSgkbmV4dFRva2VuLCBhZGQpXG4gICAgfVxuXG4gICwgcHJldjogZnVuY3Rpb24gKGFkZCkge1xuXG4gICAgICBpZiAoYWRkKSB7XG4gICAgICAgIHZhciAkbGFzdEFjdGl2ZVRva2VuID0gdGhpcy4kd3JhcHBlci5maW5kKCcuYWN0aXZlOmxhc3QnKVxuICAgICAgICAgICwgZGVhY3RpdmF0ZSA9ICRsYXN0QWN0aXZlVG9rZW4gJiYgdGhpcy4kZmlyc3RBY3RpdmVUb2tlbiA/ICRsYXN0QWN0aXZlVG9rZW4uaW5kZXgoKSA+IHRoaXMuJGZpcnN0QWN0aXZlVG9rZW4uaW5kZXgoKSA6IGZhbHNlXG5cbiAgICAgICAgaWYgKGRlYWN0aXZhdGUpIHJldHVybiB0aGlzLmRlYWN0aXZhdGUoICRsYXN0QWN0aXZlVG9rZW4gKVxuICAgICAgfVxuXG4gICAgICB2YXIgJGZpcnN0QWN0aXZlVG9rZW4gPSB0aGlzLiR3cmFwcGVyLmZpbmQoJy5hY3RpdmU6Zmlyc3QnKVxuICAgICAgICAsICRwcmV2VG9rZW4gPSAkZmlyc3RBY3RpdmVUb2tlbi5wcmV2QWxsKCcudG9rZW46Zmlyc3QnKVxuXG4gICAgICBpZiAoISRwcmV2VG9rZW4ubGVuZ3RoKSB7XG4gICAgICAgICRwcmV2VG9rZW4gPSB0aGlzLiR3cmFwcGVyLmZpbmQoJy50b2tlbjpmaXJzdCcpXG4gICAgICB9XG5cbiAgICAgIGlmICghJHByZXZUb2tlbi5sZW5ndGggJiYgIWFkZCkge1xuICAgICAgICB0aGlzLiRpbnB1dC5mb2N1cygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLmFjdGl2YXRlKCAkcHJldlRva2VuLCBhZGQgKVxuICAgIH1cblxuICAsIGFjdGl2YXRlOiBmdW5jdGlvbiAoJHRva2VuLCBhZGQsIG11bHRpLCByZW1lbWJlcikge1xuXG4gICAgICBpZiAoISR0b2tlbikgcmV0dXJuXG5cbiAgICAgIGlmICh0eXBlb2YgcmVtZW1iZXIgPT09ICd1bmRlZmluZWQnKSB2YXIgcmVtZW1iZXIgPSB0cnVlXG5cbiAgICAgIGlmIChtdWx0aSkgdmFyIGFkZCA9IHRydWVcblxuICAgICAgdGhpcy4kY29weUhlbHBlci5mb2N1cygpXG5cbiAgICAgIGlmICghYWRkKSB7XG4gICAgICAgIHRoaXMuJHdyYXBwZXIuZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxuICAgICAgICBpZiAocmVtZW1iZXIpIHtcbiAgICAgICAgICB0aGlzLiRmaXJzdEFjdGl2ZVRva2VuID0gJHRva2VuIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLiRmaXJzdEFjdGl2ZVRva2VuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG11bHRpICYmIHRoaXMuJGZpcnN0QWN0aXZlVG9rZW4pIHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGZpcnN0IGFjdGl2ZSB0b2tlbiBhbmQgdGhlIGN1cnJlbnQgdG9rZW5zIGluZGljaWVzXG4gICAgICAgIC8vIEFjY291bnQgZm9yIHRoZSAxIGhpZGRlbiB0ZXh0YXJlYSBieSBzdWJ0cmFjdGluZyAxIGZyb20gYm90aFxuICAgICAgICB2YXIgaSA9IHRoaXMuJGZpcnN0QWN0aXZlVG9rZW4uaW5kZXgoKSAtIDJcbiAgICAgICAgICAsIGEgPSAkdG9rZW4uaW5kZXgoKSAtIDJcbiAgICAgICAgICAsIF9zZWxmID0gdGhpc1xuXG4gICAgICAgIHRoaXMuJHdyYXBwZXIuZmluZCgnLnRva2VuJykuc2xpY2UoIE1hdGgubWluKGksIGEpICsgMSwgTWF0aC5tYXgoaSwgYSkgKS5lYWNoKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBfc2VsZi5hY3RpdmF0ZSggJCh0aGlzKSwgdHJ1ZSApXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgICR0b2tlbi5hZGRDbGFzcygnYWN0aXZlJylcbiAgICAgIHRoaXMuJGNvcHlIZWxwZXIudmFsKCB0aGlzLmdldFRva2Vuc0xpc3QoIG51bGwsIG51bGwsIHRydWUgKSApLnNlbGVjdCgpXG4gICAgfVxuXG4gICwgYWN0aXZhdGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIF9zZWxmID0gdGhpc1xuXG4gICAgICB0aGlzLiR3cmFwcGVyLmZpbmQoJy50b2tlbicpLmVhY2goIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIF9zZWxmLmFjdGl2YXRlKCQodGhpcyksIGkgIT09IDAsIGZhbHNlLCBmYWxzZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICwgZGVhY3RpdmF0ZTogZnVuY3Rpb24oJHRva2VuKSB7XG4gICAgICBpZiAoISR0b2tlbikgcmV0dXJuXG5cbiAgICAgICR0b2tlbi5yZW1vdmVDbGFzcygnYWN0aXZlJylcbiAgICAgIHRoaXMuJGNvcHlIZWxwZXIudmFsKCB0aGlzLmdldFRva2Vuc0xpc3QoIG51bGwsIG51bGwsIHRydWUgKSApLnNlbGVjdCgpXG4gICAgfVxuXG4gICwgdG9nZ2xlOiBmdW5jdGlvbigkdG9rZW4pIHtcbiAgICAgIGlmICghJHRva2VuKSByZXR1cm5cblxuICAgICAgJHRva2VuLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKVxuICAgICAgdGhpcy4kY29weUhlbHBlci52YWwoIHRoaXMuZ2V0VG9rZW5zTGlzdCggbnVsbCwgbnVsbCwgdHJ1ZSApICkuc2VsZWN0KClcbiAgICB9XG5cbiAgLCBlZGl0OiBmdW5jdGlvbiAoJHRva2VuKSB7XG4gICAgICBpZiAoISR0b2tlbikgcmV0dXJuXG5cbiAgICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgdmFsdWU6ICR0b2tlbi5kYXRhKCd2YWx1ZScpLFxuICAgICAgICBsYWJlbDogJHRva2VuLmZpbmQoJy50b2tlbi1sYWJlbCcpLnRleHQoKVxuICAgICAgfVxuXG4gICAgICAvLyBBbGxvdyBjaGFuZ2luZyBpbnB1dCB2YWx1ZSBiZWZvcmUgZWRpdGluZ1xuICAgICAgdmFyIG9wdGlvbnMgPSB7IGF0dHJzOiBhdHRycywgcmVsYXRlZFRhcmdldDogJHRva2VuLmdldCgwKSB9XG4gICAgICB2YXIgZWRpdEV2ZW50ID0gJC5FdmVudCgndG9rZW5maWVsZDplZGl0dG9rZW4nLCBvcHRpb25zKVxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCBlZGl0RXZlbnQgKVxuICAgICAgXG4gICAgICAvLyBFZGl0IGV2ZW50IGNhbiBiZSBjYW5jZWxsZWQgaWYgZGVmYXVsdCBpcyBwcmV2ZW50ZWRcbiAgICAgIGlmIChlZGl0RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxuXG4gICAgICAkdG9rZW4uZmluZCgnLnRva2VuLWxhYmVsJykudGV4dChhdHRycy52YWx1ZSlcbiAgICAgIHZhciB0b2tlbldpZHRoID0gJHRva2VuLm91dGVyV2lkdGgoKVxuXG4gICAgICB2YXIgJF9pbnB1dCA9IHRoaXMuJGlucHV0Lmhhc0NsYXNzKCd0dC1pbnB1dCcpID8gdGhpcy4kaW5wdXQucGFyZW50KCkgOiB0aGlzLiRpbnB1dFxuXG4gICAgICAkdG9rZW4ucmVwbGFjZVdpdGgoICRfaW5wdXQgKVxuXG4gICAgICB0aGlzLnByZXZlbnRDcmVhdGVUb2tlbnMgPSB0cnVlXG5cbiAgICAgIHRoaXMuJGlucHV0LnZhbCggYXR0cnMudmFsdWUgKVxuICAgICAgICAgICAgICAgIC5zZWxlY3QoKVxuICAgICAgICAgICAgICAgIC5kYXRhKCAnZWRpdCcsIHRydWUgKVxuICAgICAgICAgICAgICAgIC53aWR0aCggdG9rZW5XaWR0aCApXG5cbiAgICAgIHRoaXMudXBkYXRlKCk7XG5cbiAgICAgIC8vIEluZGljYXRlIHRoYXQgdG9rZW4gaW4gc25vdyBiZWluZyBlZGl0ZWQsIGFuZCBpcyByZXBsYWNlZCB3aXRoIGFuIGlucHV0IGZpZWxkIGluIHRoZSBET01cbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigkLkV2ZW50KCd0b2tlbmZpZWxkOmVkaXRlZHRva2VuJywgb3B0aW9ucyApKVxuICAgIH1cblxuICAsIHVuZWRpdDogZnVuY3Rpb24gKGZvY3VzKSB7XG4gICAgICB2YXIgJF9pbnB1dCA9IHRoaXMuJGlucHV0Lmhhc0NsYXNzKCd0dC1pbnB1dCcpID8gdGhpcy4kaW5wdXQucGFyZW50KCkgOiB0aGlzLiRpbnB1dFxuICAgICAgJF9pbnB1dC5hcHBlbmRUbyggdGhpcy4kd3JhcHBlciApXG4gICAgICBcbiAgICAgIHRoaXMuJGlucHV0LmRhdGEoJ2VkaXQnLCBmYWxzZSlcbiAgICAgIHRoaXMuJG1pcnJvci50ZXh0KCcnKVxuXG4gICAgICB0aGlzLnVwZGF0ZSgpXG5cbiAgICAgIC8vIEJlY2F1c2UgbW92aW5nIHRoZSBpbnB1dCBlbGVtZW50IGFyb3VuZCBpbiBET00gXG4gICAgICAvLyB3aWxsIGNhdXNlIGl0IHRvIGxvc2UgZm9jdXMsIHdlIHByb3ZpZGUgYW4gb3B0aW9uXG4gICAgICAvLyB0byByZS1mb2N1cyB0aGUgaW5wdXQgYWZ0ZXIgYXBwZW5kaW5nIGl0IHRvIHRoZSB3cmFwcGVyXG4gICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgdmFyIF9zZWxmID0gdGhpc1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfc2VsZi4kaW5wdXQuZm9jdXMoKVxuICAgICAgICB9LCAxKVxuICAgICAgfVxuICAgIH1cblxuICAsIHJlbW92ZTogZnVuY3Rpb24gKGUsIGRpcmVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuJGlucHV0LmlzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHx8IHRoaXMuX2Rpc2FibGVkIHx8IHRoaXMuX3JlYWRvbmx5KSByZXR1cm5cblxuICAgICAgdmFyICR0b2tlbiA9IChlLnR5cGUgPT09ICdjbGljaycpID8gJChlLnRhcmdldCkuY2xvc2VzdCgnLnRva2VuJykgOiB0aGlzLiR3cmFwcGVyLmZpbmQoJy50b2tlbi5hY3RpdmUnKVxuICAgICAgXG4gICAgICBpZiAoZS50eXBlICE9PSAnY2xpY2snKSB7XG4gICAgICAgIGlmICghZGlyZWN0aW9uKSB2YXIgZGlyZWN0aW9uID0gJ3ByZXYnXG4gICAgICAgIHRoaXNbZGlyZWN0aW9uXSgpXG5cbiAgICAgICAgLy8gV2FzIGl0IHRoZSBmaXJzdCB0b2tlbj9cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB2YXIgZmlyc3RUb2tlbiA9ICR0b2tlbi5maXJzdCgpLnByZXZBbGwoJy50b2tlbjpmaXJzdCcpLmxlbmd0aCA9PT0gMFxuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIGV2ZW50cyBhbmQgdGhlaXIgb3B0aW9uc1xuICAgICAgdmFyIG9wdGlvbnMgPSB7IGF0dHJzOiB0aGlzLmdldFRva2VuRGF0YSggJHRva2VuICksIHJlbGF0ZWRUYXJnZXQ6ICR0b2tlbi5nZXQoMCkgfVxuICAgICAgICAsIHJlbW92ZUV2ZW50ID0gJC5FdmVudCgndG9rZW5maWVsZDpyZW1vdmV0b2tlbicsIG9wdGlvbnMpXG4gICAgICBcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihyZW1vdmVFdmVudCk7XG5cbiAgICAgIC8vIFJlbW92ZSBldmVudCBjYW4gYmUgaW50ZXJjZXB0ZWQgYW5kIGNhbmNlbGxlZFxuICAgICAgaWYgKHJlbW92ZUV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cblxuICAgICAgdmFyIHJlbW92ZWRFdmVudCA9ICQuRXZlbnQoJ3Rva2VuZmllbGQ6cmVtb3ZlZHRva2VuJywgb3B0aW9ucylcbiAgICAgICAgLCBjaGFuZ2VFdmVudCA9ICQuRXZlbnQoJ2NoYW5nZScsIHsgaW5pdGlhdG9yOiAndG9rZW5maWVsZCcgfSlcblxuICAgICAgLy8gUmVtb3ZlIHRva2VuIGZyb20gRE9NXG4gICAgICAkdG9rZW4ucmVtb3ZlKClcblxuICAgICAgLy8gVHJpZ2dlciBldmVudHNcbiAgICAgIHRoaXMuJGVsZW1lbnQudmFsKCB0aGlzLmdldFRva2Vuc0xpc3QoKSApLnRyaWdnZXIoIHJlbW92ZWRFdmVudCApLnRyaWdnZXIoIGNoYW5nZUV2ZW50IClcblxuICAgICAgLy8gRm9jdXMsIHdoZW4gbmVjZXNzYXJ5OlxuICAgICAgLy8gV2hlbiB0aGVyZSBhcmUgbm8gbW9yZSB0b2tlbnMsIG9yIGlmIHRoaXMgd2FzIHRoZSBmaXJzdCB0b2tlblxuICAgICAgLy8gYW5kIGl0IHdhcyByZW1vdmVkIHdpdGggYmFja3NwYWNlIG9yIGl0IHdhcyBjbGlja2VkIG9uXG4gICAgICBpZiAoIXRoaXMuJHdyYXBwZXIuZmluZCgnLnRva2VuJykubGVuZ3RoIHx8IGUudHlwZSA9PT0gJ2NsaWNrJyB8fCBmaXJzdFRva2VuKSB0aGlzLiRpbnB1dC5mb2N1cygpXG5cbiAgICAgIC8vIEFkanVzdCBpbnB1dCB3aWR0aFxuICAgICAgdGhpcy4kaW5wdXQuY3NzKCd3aWR0aCcsIHRoaXMub3B0aW9ucy5taW5XaWR0aCArICdweCcpXG4gICAgICB0aGlzLnVwZGF0ZSgpXG5cbiAgICAgIC8vIENhbmNlbCBvcmlnaW5hbCBldmVudCBoYW5kbGVyc1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRva2VuZmllbGQgZGltZW5zaW9uc1xuICAgICAqL1xuICAsIHVwZGF0ZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuJGlucHV0LnZhbCgpXG4gICAgICAgICwgaW5wdXRQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHRoaXMuJGlucHV0LmNzcygncGFkZGluZy1sZWZ0JyksIDEwKVxuICAgICAgICAsIGlucHV0UGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQodGhpcy4kaW5wdXQuY3NzKCdwYWRkaW5nLXJpZ2h0JyksIDEwKVxuICAgICAgICAsIGlucHV0UGFkZGluZyA9IGlucHV0UGFkZGluZ0xlZnQgKyBpbnB1dFBhZGRpbmdSaWdodFxuXG4gICAgICBpZiAodGhpcy4kaW5wdXQuZGF0YSgnZWRpdCcpKSB7XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHZhbHVlID0gdGhpcy4kaW5wdXQucHJvcChcInBsYWNlaG9sZGVyXCIpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLiRtaXJyb3IudGV4dCgpKSByZXR1cm5cblxuICAgICAgICB0aGlzLiRtaXJyb3IudGV4dCh2YWx1ZSlcbiAgICAgICAgXG4gICAgICAgIHZhciBtaXJyb3JXaWR0aCA9IHRoaXMuJG1pcnJvci53aWR0aCgpICsgMTA7XG4gICAgICAgIGlmICggbWlycm9yV2lkdGggPiB0aGlzLiR3cmFwcGVyLndpZHRoKCkgKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuJGlucHV0LndpZHRoKCB0aGlzLiR3cmFwcGVyLndpZHRoKCkgKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4kaW5wdXQud2lkdGgoIG1pcnJvcldpZHRoIClcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLiRpbnB1dC5jc3MoICd3aWR0aCcsIHRoaXMub3B0aW9ucy5taW5XaWR0aCArICdweCcgKVxuICAgICAgICBpZiAodGhpcy50ZXh0RGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgIHJldHVybiB0aGlzLiRpbnB1dC53aWR0aCggdGhpcy4kaW5wdXQub2Zmc2V0KCkubGVmdCArIHRoaXMuJGlucHV0Lm91dGVyV2lkdGgoKSAtIHRoaXMuJHdyYXBwZXIub2Zmc2V0KCkubGVmdCAtIHBhcnNlSW50KHRoaXMuJHdyYXBwZXIuY3NzKCdwYWRkaW5nLWxlZnQnKSwgMTApIC0gaW5wdXRQYWRkaW5nIC0gMSApXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4kaW5wdXQud2lkdGgoIHRoaXMuJHdyYXBwZXIub2Zmc2V0KCkubGVmdCArIHRoaXMuJHdyYXBwZXIud2lkdGgoKSArIHBhcnNlSW50KHRoaXMuJHdyYXBwZXIuY3NzKCdwYWRkaW5nLWxlZnQnKSwgMTApIC0gdGhpcy4kaW5wdXQub2Zmc2V0KCkubGVmdCAtIGlucHV0UGFkZGluZyApXG4gICAgICB9XG4gICAgfVxuXG4gICwgZm9jdXNJbnB1dDogZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICggJChlLnRhcmdldCkuY2xvc2VzdCgnLnRva2VuJykubGVuZ3RoIHx8ICQoZS50YXJnZXQpLmNsb3Nlc3QoJy50b2tlbi1pbnB1dCcpLmxlbmd0aCB8fCAkKGUudGFyZ2V0KS5jbG9zZXN0KCcudHQtZHJvcGRvd24tbWVudScpLmxlbmd0aCApIHJldHVyblxuICAgICAgLy8gRm9jdXMgb25seSBhZnRlciB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLFxuICAgICAgLy8gb3RoZXJ3aXNlIGhhcyBubyBlZmZlY3QuXG4gICAgICAvLyBSZWFzb246IG1vdXNlZG93biBpcyB0b28gZWFybHkgLSBpbnB1dCB3aWxsIGxvc2UgZm9jdXNcbiAgICAgIC8vIGFmdGVyIG1vdXNlZG93bi4gSG93ZXZlciwgc2luY2UgdGhlIGlucHV0IG1heSBiZSBtb3ZlZFxuICAgICAgLy8gaW4gRE9NLCB0aGVyZSBtYXkgYmUgbm8gY2xpY2sgb3IgbW91c2V1cCBldmVudCB0cmlnZ2VyZWQuXG4gICAgICB2YXIgX3NlbGYgPSB0aGlzXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBfc2VsZi4kaW5wdXQuZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgLCBzZWFyY2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICggdGhpcy4kaW5wdXQuZGF0YSgndWktYXV0b2NvbXBsZXRlJykgKSB7XG4gICAgICAgIHRoaXMuJGlucHV0LmF1dG9jb21wbGV0ZSgnc2VhcmNoJylcbiAgICAgIH1cbiAgICB9XG5cbiAgLCBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KCdkaXNhYmxlZCcsIHRydWUpO1xuICAgIH1cblxuICAsIGVuYWJsZTogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5zZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgfVxuXG4gICwgcmVhZG9ubHk6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuc2V0UHJvcGVydHkoJ3JlYWRvbmx5JywgdHJ1ZSk7XG4gICAgfVxuXG4gICwgd3JpdGVhYmxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KCdyZWFkb25seScsIGZhbHNlKTtcbiAgICB9XG5cbiAgLCBzZXRQcm9wZXJ0eTogZnVuY3Rpb24ocHJvcGVydHksIHZhbHVlKSB7XG4gICAgICB0aGlzWydfJyArIHByb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgdGhpcy4kaW5wdXQucHJvcChwcm9wZXJ0eSwgdmFsdWUpO1xuICAgICAgdGhpcy4kZWxlbWVudC5wcm9wKHByb3BlcnR5LCB2YWx1ZSk7XG4gICAgICB0aGlzLiR3cmFwcGVyWyB2YWx1ZSA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnIF0ocHJvcGVydHkpO1xuICB9XG5cbiAgLCBkZXN0cm95OiBmdW5jdGlvbigpIHtcbiAgICAgIC8vIFNldCBmaWVsZCB2YWx1ZVxuICAgICAgdGhpcy4kZWxlbWVudC52YWwoIHRoaXMuZ2V0VG9rZW5zTGlzdCgpICk7XG4gICAgICAvLyBSZXN0b3JlIHN0eWxlcyBhbmQgcHJvcGVydGllc1xuICAgICAgdGhpcy4kZWxlbWVudC5jc3MoIHRoaXMuJGVsZW1lbnQuZGF0YSgnb3JpZ2luYWwtc3R5bGVzJykgKTtcbiAgICAgIHRoaXMuJGVsZW1lbnQucHJvcCggJ3RhYmluZGV4JywgdGhpcy4kZWxlbWVudC5kYXRhKCdvcmlnaW5hbC10YWJpbmRleCcpICk7XG4gICAgICBcbiAgICAgIC8vIFJlLXJvdXRlIHRva2VuZmllbGQgbGFiZWxlIHRvIG9yaWdpbmFsIGlucHV0XG4gICAgICB2YXIgJGxhYmVsID0gJCggJ2xhYmVsW2Zvcj1cIicgKyB0aGlzLiRpbnB1dC5wcm9wKCdpZCcpICsgJ1wiXScgKVxuICAgICAgaWYgKCAkbGFiZWwubGVuZ3RoICkge1xuICAgICAgICAkbGFiZWwucHJvcCggJ2ZvcicsIHRoaXMuJGVsZW1lbnQucHJvcCgnaWQnKSApXG4gICAgICB9XG5cbiAgICAgIC8vIE1vdmUgb3JpZ2luYWwgZWxlbWVudCBvdXRzaWRlIG9mIHRva2VuZmllbGQgd3JhcHBlclxuICAgICAgdGhpcy4kZWxlbWVudC5pbnNlcnRCZWZvcmUoIHRoaXMuJHdyYXBwZXIgKTtcblxuICAgICAgLy8gUmVtb3ZlIHRva2VuZmllbGQtcmVsYXRlZCBkYXRhXG4gICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ29yaWdpbmFsLXN0eWxlcycpXG4gICAgICAgICAgICAgICAgICAgLnJlbW92ZURhdGEoJ29yaWdpbmFsLXRhYmluZGV4JylcbiAgICAgICAgICAgICAgICAgICAucmVtb3ZlRGF0YSgnYnMudG9rZW5maWVsZCcpO1xuXG4gICAgICAvLyBSZW1vdmUgdG9rZW5maWVsZCBmcm9tIERPTVxuICAgICAgdGhpcy4kd3JhcHBlci5yZW1vdmUoKTtcblxuICAgICAgdmFyICRfZWxlbWVudCA9IHRoaXMuJGVsZW1lbnQ7XG4gICAgICBkZWxldGUgdGhpcztcblxuICAgICAgcmV0dXJuICRfZWxlbWVudDtcbiAgfVxuXG4gIH1cblxuXG4gLyogVE9LRU5GSUVMRCBQTFVHSU4gREVGSU5JVElPTlxuICAqID09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIHZhciBvbGQgPSAkLmZuLnRva2VuZmllbGRcblxuICAkLmZuLnRva2VuZmllbGQgPSBmdW5jdGlvbiAob3B0aW9uLCBwYXJhbSkge1xuICAgIHZhciB2YWx1ZVxuICAgICAgLCBhcmdzID0gW11cbiAgICBcbiAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSggYXJncywgYXJndW1lbnRzICk7XG5cbiAgICB2YXIgZWxlbWVudHMgPSB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKVxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdicy50b2tlbmZpZWxkJylcbiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnICYmIGRhdGEgJiYgZGF0YVtvcHRpb25dKSB7XG4gICAgICAgIGFyZ3Muc2hpZnQoKVxuICAgICAgICB2YWx1ZSA9IGRhdGFbb3B0aW9uXS5hcHBseShkYXRhLCBhcmdzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFkYXRhICYmIHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmICFwYXJhbSkgJHRoaXMuZGF0YSgnYnMudG9rZW5maWVsZCcsIChkYXRhID0gbmV3IFRva2VuZmllbGQodGhpcywgb3B0aW9ucykpKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyA/IHZhbHVlIDogZWxlbWVudHM7XG4gIH1cblxuICAkLmZuLnRva2VuZmllbGQuZGVmYXVsdHMgPSB7XG4gICAgbWluV2lkdGg6IDYwLFxuICAgIG1pbkxlbmd0aDogMCxcbiAgICBhbGxvd0VkaXRpbmc6IHRydWUsXG4gICAgbGltaXQ6IDAsXG4gICAgYXV0b2NvbXBsZXRlOiB7fSxcbiAgICB0eXBlYWhlYWQ6IHt9LFxuICAgIHNob3dBdXRvY29tcGxldGVPbkZvY3VzOiBmYWxzZSxcbiAgICBjcmVhdGVUb2tlbnNPbkJsdXI6IGZhbHNlLFxuICAgIGRlbGltaXRlcjogJywnLFxuICAgIGJlYXV0aWZ5OiB0cnVlXG4gIH1cblxuICAkLmZuLnRva2VuZmllbGQuQ29uc3RydWN0b3IgPSBUb2tlbmZpZWxkXG5cblxuIC8qIFRPS0VORklFTEQgTk8gQ09ORkxJQ1RcbiAgKiA9PT09PT09PT09PT09PT09PT0gKi9cblxuICAkLmZuLnRva2VuZmllbGQubm9Db25mbGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAkLmZuLnRva2VuZmllbGQgPSBvbGRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcmV0dXJuIFRva2VuZmllbGQ7XG5cbn0pKTtcblxufS5jYWxsKHdpbmRvdywgZmFsc2UsIGZhbHNlKSk7XG4iLCIvKioqIElNUE9SVFMgRlJPTSBpbXBvcnRzLWxvYWRlciAqKiovXG5cbihmdW5jdGlvbihkZWZpbmUsIGV4cG9ydHMpIHtcbi8qISB2ZXJzaW9uIDogNC4xNy40N1xyXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiBib290c3RyYXAtZGF0ZXRpbWVqc1xyXG4gaHR0cHM6Ly9naXRodWIuY29tL0VvbmFzZGFuL2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlclxyXG4gQ29weXJpZ2h0IChjKSAyMDE1IEpvbmF0aGFuIFBldGVyc29uXHJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICovXHJcbi8qXHJcbiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcclxuXHJcbiBDb3B5cmlnaHQgKGMpIDIwMTUgSm9uYXRoYW4gUGV0ZXJzb25cclxuXHJcbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XHJcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXHJcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXHJcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXHJcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcclxuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XHJcblxyXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cclxuIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG5cclxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcclxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxyXG4gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXHJcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXHJcbiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxyXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxyXG4gVEhFIFNPRlRXQVJFLlxyXG4gKi9cclxuLypnbG9iYWwgZGVmaW5lOmZhbHNlICovXHJcbi8qZ2xvYmFsIGV4cG9ydHM6ZmFsc2UgKi9cclxuLypnbG9iYWwgcmVxdWlyZTpmYWxzZSAqL1xyXG4vKmdsb2JhbCBqUXVlcnk6ZmFsc2UgKi9cclxuLypnbG9iYWwgbW9tZW50OmZhbHNlICovXHJcbihmdW5jdGlvbiAoZmFjdG9yeSkge1xyXG4gICAgJ3VzZSBzdHJpY3QnO1xyXG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgICAgIC8vIEFNRCBpcyB1c2VkIC0gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cclxuICAgICAgICBkZWZpbmUoWydqcXVlcnknLCAnbW9tZW50J10sIGZhY3RvcnkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JyksIHJlcXVpcmUoJ21vbWVudCcpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gTmVpdGhlciBBTUQgbm9yIENvbW1vbkpTIHVzZWQuIFVzZSBnbG9iYWwgdmFyaWFibGVzLlxyXG4gICAgICAgIGlmICh0eXBlb2YgalF1ZXJ5ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aHJvdyAnYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyIHJlcXVpcmVzIGpRdWVyeSB0byBiZSBsb2FkZWQgZmlyc3QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIG1vbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhyb3cgJ2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlciByZXF1aXJlcyBNb21lbnQuanMgdG8gYmUgbG9hZGVkIGZpcnN0JztcclxuICAgICAgICB9XHJcbiAgICAgICAgZmFjdG9yeShqUXVlcnksIG1vbWVudCk7XHJcbiAgICB9XHJcbn0oZnVuY3Rpb24gKCQsIG1vbWVudCkge1xyXG4gICAgJ3VzZSBzdHJpY3QnO1xyXG4gICAgaWYgKCFtb21lbnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlciByZXF1aXJlcyBNb21lbnQuanMgdG8gYmUgbG9hZGVkIGZpcnN0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRhdGVUaW1lUGlja2VyID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgICAgICB2YXIgcGlja2VyID0ge30sXHJcbiAgICAgICAgICAgIGRhdGUsXHJcbiAgICAgICAgICAgIHZpZXdEYXRlLFxyXG4gICAgICAgICAgICB1bnNldCA9IHRydWUsXHJcbiAgICAgICAgICAgIGlucHV0LFxyXG4gICAgICAgICAgICBjb21wb25lbnQgPSBmYWxzZSxcclxuICAgICAgICAgICAgd2lkZ2V0ID0gZmFsc2UsXHJcbiAgICAgICAgICAgIHVzZTI0SG91cnMsXHJcbiAgICAgICAgICAgIG1pblZpZXdNb2RlTnVtYmVyID0gMCxcclxuICAgICAgICAgICAgYWN0dWFsRm9ybWF0LFxyXG4gICAgICAgICAgICBwYXJzZUZvcm1hdHMsXHJcbiAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZSxcclxuICAgICAgICAgICAgZGF0ZVBpY2tlck1vZGVzID0gW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsc05hbWU6ICdkYXlzJyxcclxuICAgICAgICAgICAgICAgICAgICBuYXZGbmM6ICdNJyxcclxuICAgICAgICAgICAgICAgICAgICBuYXZTdGVwOiAxXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsc05hbWU6ICdtb250aHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdkZuYzogJ3knLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdlN0ZXA6IDFcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xzTmFtZTogJ3llYXJzJyxcclxuICAgICAgICAgICAgICAgICAgICBuYXZGbmM6ICd5JyxcclxuICAgICAgICAgICAgICAgICAgICBuYXZTdGVwOiAxMFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjbHNOYW1lOiAnZGVjYWRlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2Rm5jOiAneScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2U3RlcDogMTAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHZpZXdNb2RlcyA9IFsnZGF5cycsICdtb250aHMnLCAneWVhcnMnLCAnZGVjYWRlcyddLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbE1vZGVzID0gWyd0b3AnLCAnYm90dG9tJywgJ2F1dG8nXSxcclxuICAgICAgICAgICAgaG9yaXpvbnRhbE1vZGVzID0gWydsZWZ0JywgJ3JpZ2h0JywgJ2F1dG8nXSxcclxuICAgICAgICAgICAgdG9vbGJhclBsYWNlbWVudHMgPSBbJ2RlZmF1bHQnLCAndG9wJywgJ2JvdHRvbSddLFxyXG4gICAgICAgICAgICBrZXlNYXAgPSB7XHJcbiAgICAgICAgICAgICAgICAndXAnOiAzOCxcclxuICAgICAgICAgICAgICAgIDM4OiAndXAnLFxyXG4gICAgICAgICAgICAgICAgJ2Rvd24nOiA0MCxcclxuICAgICAgICAgICAgICAgIDQwOiAnZG93bicsXHJcbiAgICAgICAgICAgICAgICAnbGVmdCc6IDM3LFxyXG4gICAgICAgICAgICAgICAgMzc6ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICdyaWdodCc6IDM5LFxyXG4gICAgICAgICAgICAgICAgMzk6ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAndGFiJzogOSxcclxuICAgICAgICAgICAgICAgIDk6ICd0YWInLFxyXG4gICAgICAgICAgICAgICAgJ2VzY2FwZSc6IDI3LFxyXG4gICAgICAgICAgICAgICAgMjc6ICdlc2NhcGUnLFxyXG4gICAgICAgICAgICAgICAgJ2VudGVyJzogMTMsXHJcbiAgICAgICAgICAgICAgICAxMzogJ2VudGVyJyxcclxuICAgICAgICAgICAgICAgICdwYWdlVXAnOiAzMyxcclxuICAgICAgICAgICAgICAgIDMzOiAncGFnZVVwJyxcclxuICAgICAgICAgICAgICAgICdwYWdlRG93bic6IDM0LFxyXG4gICAgICAgICAgICAgICAgMzQ6ICdwYWdlRG93bicsXHJcbiAgICAgICAgICAgICAgICAnc2hpZnQnOiAxNixcclxuICAgICAgICAgICAgICAgIDE2OiAnc2hpZnQnLFxyXG4gICAgICAgICAgICAgICAgJ2NvbnRyb2wnOiAxNyxcclxuICAgICAgICAgICAgICAgIDE3OiAnY29udHJvbCcsXHJcbiAgICAgICAgICAgICAgICAnc3BhY2UnOiAzMixcclxuICAgICAgICAgICAgICAgIDMyOiAnc3BhY2UnLFxyXG4gICAgICAgICAgICAgICAgJ3QnOiA4NCxcclxuICAgICAgICAgICAgICAgIDg0OiAndCcsXHJcbiAgICAgICAgICAgICAgICAnZGVsZXRlJzogNDYsXHJcbiAgICAgICAgICAgICAgICA0NjogJ2RlbGV0ZSdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAga2V5U3RhdGUgPSB7fSxcclxuXHJcbiAgICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKiBQcml2YXRlIGZ1bmN0aW9uc1xyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gICAgICAgICAgICBoYXNUaW1lWm9uZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQudHogIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnRpbWVab25lICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy50aW1lWm9uZSAhPT0gbnVsbCAmJiBvcHRpb25zLnRpbWVab25lICE9PSAnJztcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGdldE1vbWVudCA9IGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmV0dXJuTW9tZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkID09PSB1bmRlZmluZWQgfHwgZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybk1vbWVudCA9IG1vbWVudCgpOyAvL1RPRE8gc2hvdWxkIHRoaXMgdXNlIGZvcm1hdD8gYW5kIGxvY2FsZT9cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9tZW50LmlzRGF0ZShkKSB8fCBtb21lbnQuaXNNb21lbnQoZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSB0aGF0IGlzIHBhc3NlZCBpbiBpcyBhbHJlYWR5IGEgRGF0ZSgpIG9yIG1vbWVudCgpIG9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIGl0IGRpcmVjdGx5IHRvIG1vbWVudC5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5Nb21lbnQgPSBtb21lbnQoZCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1RpbWVab25lKCkpIHsgLy8gVGhlcmUgaXMgYSBzdHJpbmcgdG8gcGFyc2UgYW5kIGEgZGVmYXVsdCB0aW1lIHpvbmVcclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZSB3aXRoIHRoZSB0eiBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIGRlZmF1bHQgdGltZSB6b25lIGlmIGl0IGlzIG5vdCBpbiB0aGUgZm9ybWF0IHN0cmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybk1vbWVudCA9IG1vbWVudC50eihkLCBwYXJzZUZvcm1hdHMsIG9wdGlvbnMudXNlU3RyaWN0LCBvcHRpb25zLnRpbWVab25lKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuTW9tZW50ID0gbW9tZW50KGQsIHBhcnNlRm9ybWF0cywgb3B0aW9ucy51c2VTdHJpY3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoYXNUaW1lWm9uZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuTW9tZW50LnR6KG9wdGlvbnMudGltZVpvbmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5Nb21lbnQ7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBpc0VuYWJsZWQgPSBmdW5jdGlvbiAoZ3JhbnVsYXJpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ3JhbnVsYXJpdHkgIT09ICdzdHJpbmcnIHx8IGdyYW51bGFyaXR5Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpc0VuYWJsZWQgZXhwZWN0cyBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4T2YoJ1knKSAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZignTScpICE9PSAtMTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdHVhbEZvcm1hdC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2QnKSAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnSCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdoJykgIT09IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4T2YoJ20nKSAhPT0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZigncycpICE9PSAtMTtcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBoYXNUaW1lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc0VuYWJsZWQoJ2gnKSB8fCBpc0VuYWJsZWQoJ20nKSB8fCBpc0VuYWJsZWQoJ3MnKSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBoYXNEYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc0VuYWJsZWQoJ3knKSB8fCBpc0VuYWJsZWQoJ00nKSB8fCBpc0VuYWJsZWQoJ2QnKSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBnZXREYXRlUGlja2VyVGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaGVhZFRlbXBsYXRlID0gJCgnPHRoZWFkPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRyPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0aD4nKS5hZGRDbGFzcygncHJldicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ3ByZXZpb3VzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMucHJldmlvdXMpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCdwaWNrZXItc3dpdGNoJykuYXR0cignZGF0YS1hY3Rpb24nLCAncGlja2VyU3dpdGNoJykuYXR0cignY29sc3BhbicsIChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPyAnNicgOiAnNScpKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCduZXh0JykuYXR0cignZGF0YS1hY3Rpb24nLCAnbmV4dCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLm5leHQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgY29udFRlbXBsYXRlID0gJCgnPHRib2R5PicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRyPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0ZD4nKS5hdHRyKCdjb2xzcGFuJywgKG9wdGlvbnMuY2FsZW5kYXJXZWVrcyA/ICc4JyA6ICc3JykpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICQoJzxkaXY+JykuYWRkQ2xhc3MoJ2RhdGVwaWNrZXItZGF5cycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChoZWFkVGVtcGxhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0Ym9keT4nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygnZGF0ZXBpY2tlci1tb250aHMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVuc2VkJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoaGVhZFRlbXBsYXRlLmNsb25lKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGNvbnRUZW1wbGF0ZS5jbG9uZSgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAkKCc8ZGl2PicpLmFkZENsYXNzKCdkYXRlcGlja2VyLXllYXJzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGhlYWRUZW1wbGF0ZS5jbG9uZSgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChjb250VGVtcGxhdGUuY2xvbmUoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygnZGF0ZXBpY2tlci1kZWNhZGVzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGhlYWRUZW1wbGF0ZS5jbG9uZSgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChjb250VGVtcGxhdGUuY2xvbmUoKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBnZXRUaW1lUGlja2VyTWFpblRlbXBsYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvcFJvdyA9ICQoJzx0cj4nKSxcclxuICAgICAgICAgICAgICAgICAgICBtaWRkbGVSb3cgPSAkKCc8dHI+JyksXHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93ID0gJCgnPHRyPicpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcFJvdy5hcHBlbmQoJCgnPHRkPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuaW5jcmVtZW50SG91ciB9KS5hZGRDbGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnaW5jcmVtZW50SG91cnMnKS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy51cCkpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcygndGltZXBpY2tlci1ob3VyJykuYXR0cih7ICdkYXRhLXRpbWUtY29tcG9uZW50JzogJ2hvdXJzJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5waWNrSG91ciB9KS5hdHRyKCdkYXRhLWFjdGlvbicsICdzaG93SG91cnMnKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRkPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuZGVjcmVtZW50SG91ciB9KS5hZGRDbGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnZGVjcmVtZW50SG91cnMnKS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy5kb3duKSkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ20nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BSb3cuYXBwZW5kKCQoJzx0ZD4nKS5hZGRDbGFzcygnc2VwYXJhdG9yJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQoJzx0ZD4nKS5hZGRDbGFzcygnc2VwYXJhdG9yJykuaHRtbCgnOicpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wUm93LmFwcGVuZCgkKCc8dGQ+JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgaHJlZjogJyMnLCB0YWJpbmRleDogJy0xJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5pbmNyZW1lbnRNaW51dGUgfSkuYWRkQ2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2luY3JlbWVudE1pbnV0ZXMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLnVwKSkpKTtcclxuICAgICAgICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQoJzx0ZD4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKCd0aW1lcGlja2VyLW1pbnV0ZScpLmF0dHIoeyAnZGF0YS10aW1lLWNvbXBvbmVudCc6ICdtaW51dGVzJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5waWNrTWludXRlIH0pLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ3Nob3dNaW51dGVzJykpKTtcclxuICAgICAgICAgICAgICAgICAgICBib3R0b21Sb3cuYXBwZW5kKCQoJzx0ZD4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyBocmVmOiAnIycsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmRlY3JlbWVudE1pbnV0ZSB9KS5hZGRDbGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnZGVjcmVtZW50TWludXRlcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMuZG93bikpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpLmh0bWwoJzonKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRvcFJvdy5hcHBlbmQoJCgnPHRkPicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuaW5jcmVtZW50U2Vjb25kIH0pLmFkZENsYXNzKCdidG4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdpbmNyZW1lbnRTZWNvbmRzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy51cCkpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcygndGltZXBpY2tlci1zZWNvbmQnKS5hdHRyKHsgJ2RhdGEtdGltZS1jb21wb25lbnQnOiAnc2Vjb25kcycsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMucGlja1NlY29uZCB9KS5hdHRyKCdkYXRhLWFjdGlvbicsICdzaG93U2Vjb25kcycpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVuZCgkKCc8dGQ+JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgaHJlZjogJyMnLCB0YWJpbmRleDogJy0xJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5kZWNyZW1lbnRTZWNvbmQgfSkuYWRkQ2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2RlY3JlbWVudFNlY29uZHMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLmRvd24pKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdXNlMjRIb3Vycykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcFJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YnV0dG9uPicpLmFkZENsYXNzKCdidG4gYnRuLXByaW1hcnknKS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ3RvZ2dsZVBlcmlvZCcsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLnRvZ2dsZVBlcmlvZCB9KSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItcGlja2VyJylcclxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVuc2VkJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChbdG9wUm93LCBtaWRkbGVSb3csIGJvdHRvbVJvd10pKTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGdldFRpbWVQaWNrZXJUZW1wbGF0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBob3Vyc1ZpZXcgPSAkKCc8ZGl2PicpLmFkZENsYXNzKCd0aW1lcGlja2VyLWhvdXJzJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpKSxcclxuICAgICAgICAgICAgICAgICAgICBtaW51dGVzVmlldyA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItbWludXRlcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kc1ZpZXcgPSAkKCc8ZGl2PicpLmFkZENsYXNzKCd0aW1lcGlja2VyLXNlY29uZHMnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVuc2VkJykpLFxyXG4gICAgICAgICAgICAgICAgICAgIHJldCA9IFtnZXRUaW1lUGlja2VyTWFpblRlbXBsYXRlKCldO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGhvdXJzVmlldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXQucHVzaChtaW51dGVzVmlldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXQucHVzaChzZWNvbmRzVmlldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGdldFRvb2xiYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zaG93VG9kYXlCdXR0b24pIHtcclxuICAgICAgICAgICAgICAgICAgICByb3cucHVzaCgkKCc8dGQ+JykuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyAnZGF0YS1hY3Rpb24nOiAndG9kYXknLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLnRvZGF5IH0pLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLnRvZGF5KSkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWRlQnlTaWRlICYmIGhhc0RhdGUoKSAmJiBoYXNUaW1lKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByb3cucHVzaCgkKCc8dGQ+JykuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyAnZGF0YS1hY3Rpb24nOiAndG9nZ2xlUGlja2VyJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5zZWxlY3RUaW1lIH0pLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLnRpbWUpKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvd0NsZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ2NsZWFyJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5jbGVhciB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy5jbGVhcikpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zaG93Q2xvc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICByb3cucHVzaCgkKCc8dGQ+JykuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyAnZGF0YS1hY3Rpb24nOiAnY2xvc2UnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmNsb3NlIH0pLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLmNsb3NlKSkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpLmFwcGVuZCgkKCc8dGJvZHk+JykuYXBwZW5kKCQoJzx0cj4nKS5hcHBlbmQocm93KSkpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZ2V0VGVtcGxhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSAkKCc8ZGl2PicpLmFkZENsYXNzKCdib290c3RyYXAtZGF0ZXRpbWVwaWNrZXItd2lkZ2V0IGRyb3Bkb3duLW1lbnUnKSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRlVmlldyA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ2RhdGVwaWNrZXInKS5hcHBlbmQoZ2V0RGF0ZVBpY2tlclRlbXBsYXRlKCkpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVWaWV3ID0gJCgnPGRpdj4nKS5hZGRDbGFzcygndGltZXBpY2tlcicpLmFwcGVuZChnZXRUaW1lUGlja2VyVGVtcGxhdGUoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9ICQoJzx1bD4nKS5hZGRDbGFzcygnbGlzdC11bnN0eWxlZCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2xiYXIgPSAkKCc8bGk+JykuYWRkQ2xhc3MoJ3BpY2tlci1zd2l0Y2gnICsgKG9wdGlvbnMuY29sbGFwc2UgPyAnIGFjY29yZGlvbi10b2dnbGUnIDogJycpKS5hcHBlbmQoZ2V0VG9vbGJhcigpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5pbmxpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5yZW1vdmVDbGFzcygnZHJvcGRvd24tbWVudScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh1c2UyNEhvdXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuYWRkQ2xhc3MoJ3VzZXR3ZW50eWZvdXInKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdzJykgJiYgIXVzZTI0SG91cnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hZGRDbGFzcygnd2lkZXInKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zaWRlQnlTaWRlICYmIGhhc0RhdGUoKSAmJiBoYXNUaW1lKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hZGRDbGFzcygndGltZXBpY2tlci1zYnMnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50b29sYmFyUGxhY2VtZW50ID09PSAndG9wJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hcHBlbmQodG9vbGJhcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygncm93JylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZGF0ZVZpZXcuYWRkQ2xhc3MoJ2NvbC1tZC02JykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKHRpbWVWaWV3LmFkZENsYXNzKCdjb2wtbWQtNicpKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuYXBwZW5kKHRvb2xiYXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ3RvcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0b29sYmFyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChoYXNEYXRlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgkKCc8bGk+JykuYWRkQ2xhc3MoKG9wdGlvbnMuY29sbGFwc2UgJiYgaGFzVGltZSgpID8gJ2NvbGxhcHNlIGluJyA6ICcnKSkuYXBwZW5kKGRhdGVWaWV3KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50b29sYmFyUGxhY2VtZW50ID09PSAnZGVmYXVsdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0b29sYmFyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChoYXNUaW1lKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgkKCc8bGk+JykuYWRkQ2xhc3MoKG9wdGlvbnMuY29sbGFwc2UgJiYgaGFzRGF0ZSgpID8gJ2NvbGxhcHNlJyA6ICcnKSkuYXBwZW5kKHRpbWVWaWV3KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50b29sYmFyUGxhY2VtZW50ID09PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKHRvb2xiYXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlLmFwcGVuZChjb250ZW50KTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGRhdGFUb09wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSB8fCBvcHRpb25zLmlubGluZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVEYXRhID0gZWxlbWVudC5kYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGVEYXRhID0gZWxlbWVudC5maW5kKCdpbnB1dCcpLmRhdGEoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZURhdGEuZGF0ZU9wdGlvbnMgJiYgZURhdGEuZGF0ZU9wdGlvbnMgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhT3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIGRhdGFPcHRpb25zLCBlRGF0YS5kYXRlT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMsIGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9ICdkYXRlJyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZURhdGFbYXR0cmlidXRlTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhT3B0aW9uc1trZXldID0gZURhdGFbYXR0cmlidXRlTmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YU9wdGlvbnM7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBwbGFjZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IChjb21wb25lbnQgfHwgZWxlbWVudCkucG9zaXRpb24oKSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAoY29tcG9uZW50IHx8IGVsZW1lbnQpLm9mZnNldCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsID0gb3B0aW9ucy53aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbCxcclxuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsID0gb3B0aW9ucy53aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy53aWRnZXRQYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBvcHRpb25zLndpZGdldFBhcmVudC5hcHBlbmQod2lkZ2V0KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW1lbnQuYWZ0ZXIod2lkZ2V0KS5wYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmxpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtZW50LmFwcGVuZCh3aWRnZXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuKCkuZmlyc3QoKS5hZnRlcih3aWRnZXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRvcCBhbmQgYm90dG9tIGxvZ2ljXHJcbiAgICAgICAgICAgICAgICBpZiAodmVydGljYWwgPT09ICdhdXRvJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQudG9wICsgd2lkZ2V0LmhlaWdodCgpICogMS41ID49ICQod2luZG93KS5oZWlnaHQoKSArICQod2luZG93KS5zY3JvbGxUb3AoKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQuaGVpZ2h0KCkgKyBlbGVtZW50Lm91dGVySGVpZ2h0KCkgPCBvZmZzZXQudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsID0gJ3RvcCc7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgPSAnYm90dG9tJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTGVmdCBhbmQgcmlnaHQgbG9naWNcclxuICAgICAgICAgICAgICAgIGlmIChob3Jpem9udGFsID09PSAnYXV0bycpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50LndpZHRoKCkgPCBvZmZzZXQubGVmdCArIHdpZGdldC5vdXRlcldpZHRoKCkgLyAyICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC5sZWZ0ICsgd2lkZ2V0Lm91dGVyV2lkdGgoKSA+ICQod2luZG93KS53aWR0aCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwgPSAncmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWwgPSAnbGVmdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbCA9PT0gJ3RvcCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ3RvcCcpLnJlbW92ZUNsYXNzKCdib3R0b20nKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmFkZENsYXNzKCdib3R0b20nKS5yZW1vdmVDbGFzcygndG9wJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhvcml6b250YWwgPT09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ3B1bGwtcmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LnJlbW92ZUNsYXNzKCdwdWxsLXJpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgZmlyc3QgcGFyZW50IGVsZW1lbnQgdGhhdCBoYXMgYSBub24tc3RhdGljIGNzcyBwb3NpdGlvbmluZ1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5jc3MoJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJykgIT09ICdzdGF0aWMnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpcnN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGV0aW1lcGlja2VyIGNvbXBvbmVudCBzaG91bGQgYmUgcGxhY2VkIHdpdGhpbiBhIG5vbi1zdGF0aWMgcG9zaXRpb25lZCBjb250YWluZXInKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB3aWRnZXQuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICB0b3A6IHZlcnRpY2FsID09PSAndG9wJyA/ICdhdXRvJyA6IHBvc2l0aW9uLnRvcCArIGVsZW1lbnQub3V0ZXJIZWlnaHQoKSxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b206IHZlcnRpY2FsID09PSAndG9wJyA/IHBhcmVudC5vdXRlckhlaWdodCgpIC0gKHBhcmVudCA9PT0gZWxlbWVudCA/IDAgOiBwb3NpdGlvbi50b3ApIDogJ2F1dG8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGhvcml6b250YWwgPT09ICdsZWZ0JyA/IChwYXJlbnQgPT09IGVsZW1lbnQgPyAwIDogcG9zaXRpb24ubGVmdCkgOiAnYXV0bycsXHJcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGhvcml6b250YWwgPT09ICdsZWZ0JyA/ICdhdXRvJyA6IHBhcmVudC5vdXRlcldpZHRoKCkgLSBlbGVtZW50Lm91dGVyV2lkdGgoKSAtIChwYXJlbnQgPT09IGVsZW1lbnQgPyAwIDogcG9zaXRpb24ubGVmdClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgbm90aWZ5RXZlbnQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2RwLmNoYW5nZScgJiYgKChlLmRhdGUgJiYgZS5kYXRlLmlzU2FtZShlLm9sZERhdGUpKSB8fCAoIWUuZGF0ZSAmJiAhZS5vbGREYXRlKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnRyaWdnZXIoZSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICB2aWV3VXBkYXRlID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlID09PSAneScpIHtcclxuICAgICAgICAgICAgICAgICAgICBlID0gJ1lZWVknO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbm90aWZ5RXZlbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC51cGRhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZSxcclxuICAgICAgICAgICAgICAgICAgICB2aWV3RGF0ZTogdmlld0RhdGUuY2xvbmUoKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBzaG93TW9kZSA9IGZ1bmN0aW9uIChkaXIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGRpcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZSA9IE1hdGgubWF4KG1pblZpZXdNb2RlTnVtYmVyLCBNYXRoLm1pbigzLCBjdXJyZW50Vmlld01vZGUgKyBkaXIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlciA+IGRpdicpLmhpZGUoKS5maWx0ZXIoJy5kYXRlcGlja2VyLScgKyBkYXRlUGlja2VyTW9kZXNbY3VycmVudFZpZXdNb2RlXS5jbHNOYW1lKS5zaG93KCk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBmaWxsRG93ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJvdyA9ICQoJzx0cj4nKSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZSA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZigndycpLnN0YXJ0T2YoJ2QnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jYWxlbmRhcldlZWtzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgkKCc8dGg+JykuYWRkQ2xhc3MoJ2N3JykudGV4dCgnIycpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudERhdGUuaXNCZWZvcmUodmlld0RhdGUuY2xvbmUoKS5lbmRPZigndycpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCdkb3cnKS50ZXh0KGN1cnJlbnREYXRlLmZvcm1hdCgnZGQnKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLmFkZCgxLCAnZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLWRheXMgdGhlYWQnKS5hcHBlbmQocm93KTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGlzSW5EaXNhYmxlZERhdGVzID0gZnVuY3Rpb24gKHRlc3REYXRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kaXNhYmxlZERhdGVzW3Rlc3REYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpXSA9PT0gdHJ1ZTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGlzSW5FbmFibGVkRGF0ZXMgPSBmdW5jdGlvbiAodGVzdERhdGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmVuYWJsZWREYXRlc1t0ZXN0RGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKV0gPT09IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBpc0luRGlzYWJsZWRIb3VycyA9IGZ1bmN0aW9uICh0ZXN0RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGlzYWJsZWRIb3Vyc1t0ZXN0RGF0ZS5mb3JtYXQoJ0gnKV0gPT09IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBpc0luRW5hYmxlZEhvdXJzID0gZnVuY3Rpb24gKHRlc3REYXRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5lbmFibGVkSG91cnNbdGVzdERhdGUuZm9ybWF0KCdIJyldID09PSB0cnVlO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgaXNWYWxpZCA9IGZ1bmN0aW9uICh0YXJnZXRNb21lbnQsIGdyYW51bGFyaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE1vbWVudC5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kaXNhYmxlZERhdGVzICYmIGdyYW51bGFyaXR5ID09PSAnZCcgJiYgaXNJbkRpc2FibGVkRGF0ZXModGFyZ2V0TW9tZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWREYXRlcyAmJiBncmFudWxhcml0eSA9PT0gJ2QnICYmICFpc0luRW5hYmxlZERhdGVzKHRhcmdldE1vbWVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5taW5EYXRlICYmIHRhcmdldE1vbWVudC5pc0JlZm9yZShvcHRpb25zLm1pbkRhdGUsIGdyYW51bGFyaXR5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm1heERhdGUgJiYgdGFyZ2V0TW9tZW50LmlzQWZ0ZXIob3B0aW9ucy5tYXhEYXRlLCBncmFudWxhcml0eSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzT2ZXZWVrRGlzYWJsZWQgJiYgZ3JhbnVsYXJpdHkgPT09ICdkJyAmJiBvcHRpb25zLmRheXNPZldlZWtEaXNhYmxlZC5pbmRleE9mKHRhcmdldE1vbWVudC5kYXkoKSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWRIb3VycyAmJiAoZ3JhbnVsYXJpdHkgPT09ICdoJyB8fCBncmFudWxhcml0eSA9PT0gJ20nIHx8IGdyYW51bGFyaXR5ID09PSAncycpICYmIGlzSW5EaXNhYmxlZEhvdXJzKHRhcmdldE1vbWVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVkSG91cnMgJiYgKGdyYW51bGFyaXR5ID09PSAnaCcgfHwgZ3JhbnVsYXJpdHkgPT09ICdtJyB8fCBncmFudWxhcml0eSA9PT0gJ3MnKSAmJiAhaXNJbkVuYWJsZWRIb3Vycyh0YXJnZXRNb21lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzICYmIChncmFudWxhcml0eSA9PT0gJ2gnIHx8IGdyYW51bGFyaXR5ID09PSAnbScgfHwgZ3JhbnVsYXJpdHkgPT09ICdzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5kaXNhYmxlZFRpbWVJbnRlcnZhbHMsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE1vbWVudC5pc0JldHdlZW4odGhpc1swXSwgdGhpc1sxXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBmaWxsTW9udGhzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwYW5zID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGhzU2hvcnQgPSB2aWV3RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ3knKS5zdGFydE9mKCdkJyk7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAobW9udGhzU2hvcnQuaXNTYW1lKHZpZXdEYXRlLCAneScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BhbnMucHVzaCgkKCc8c3Bhbj4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdzZWxlY3RNb250aCcpLmFkZENsYXNzKCdtb250aCcpLnRleHQobW9udGhzU2hvcnQuZm9ybWF0KCdNTU0nKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoc1Nob3J0LmFkZCgxLCAnTScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLW1vbnRocyB0ZCcpLmVtcHR5KCkuYXBwZW5kKHNwYW5zKTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIHVwZGF0ZU1vbnRocyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBtb250aHNWaWV3ID0gd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLW1vbnRocycpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoc1ZpZXdIZWFkZXIgPSBtb250aHNWaWV3LmZpbmQoJ3RoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGhzID0gbW9udGhzVmlldy5maW5kKCd0Ym9keScpLmZpbmQoJ3NwYW4nKTtcclxuXHJcbiAgICAgICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDApLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMucHJldlllYXIpO1xyXG4gICAgICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgxKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0WWVhcik7XHJcbiAgICAgICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDIpLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMubmV4dFllYXIpO1xyXG5cclxuICAgICAgICAgICAgICAgIG1vbnRoc1ZpZXcuZmluZCgnLmRpc2FibGVkJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZpZXdEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ3knKSwgJ3knKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoc1ZpZXdIZWFkZXIuZXEoMCkuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgxKS50ZXh0KHZpZXdEYXRlLnllYXIoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZpZXdEYXRlLmNsb25lKCkuYWRkKDEsICd5JyksICd5JykpIHtcclxuICAgICAgICAgICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDIpLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG1vbnRocy5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZS5pc1NhbWUodmlld0RhdGUsICd5JykgJiYgIXVuc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGhzLmVxKGRhdGUubW9udGgoKSkuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG1vbnRocy5lYWNoKGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCh2aWV3RGF0ZS5jbG9uZSgpLm1vbnRoKGluZGV4KSwgJ00nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgdXBkYXRlWWVhcnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgeWVhcnNWaWV3ID0gd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLXllYXJzJyksXHJcbiAgICAgICAgICAgICAgICAgICAgeWVhcnNWaWV3SGVhZGVyID0geWVhcnNWaWV3LmZpbmQoJ3RoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRZZWFyID0gdmlld0RhdGUuY2xvbmUoKS5zdWJ0cmFjdCg1LCAneScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuZFllYXIgPSB2aWV3RGF0ZS5jbG9uZSgpLmFkZCg2LCAneScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwgPSAnJztcclxuXHJcbiAgICAgICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMCkuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5wcmV2RGVjYWRlKTtcclxuICAgICAgICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgxKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0RGVjYWRlKTtcclxuICAgICAgICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgyKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLm5leHREZWNhZGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIHllYXJzVmlldy5maW5kKCcuZGlzYWJsZWQnKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5taW5EYXRlICYmIG9wdGlvbnMubWluRGF0ZS5pc0FmdGVyKHN0YXJ0WWVhciwgJ3knKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMSkudGV4dChzdGFydFllYXIueWVhcigpICsgJy0nICsgZW5kWWVhci55ZWFyKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm1heERhdGUgJiYgb3B0aW9ucy5tYXhEYXRlLmlzQmVmb3JlKGVuZFllYXIsICd5JykpIHtcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMikuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCFzdGFydFllYXIuaXNBZnRlcihlbmRZZWFyLCAneScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHNwYW4gZGF0YS1hY3Rpb249XCJzZWxlY3RZZWFyXCIgY2xhc3M9XCJ5ZWFyJyArIChzdGFydFllYXIuaXNTYW1lKGRhdGUsICd5JykgJiYgIXVuc2V0ID8gJyBhY3RpdmUnIDogJycpICsgKCFpc1ZhbGlkKHN0YXJ0WWVhciwgJ3knKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiPicgKyBzdGFydFllYXIueWVhcigpICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0WWVhci5hZGQoMSwgJ3knKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB5ZWFyc1ZpZXcuZmluZCgndGQnKS5odG1sKGh0bWwpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgdXBkYXRlRGVjYWRlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkZWNhZGVzVmlldyA9IHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlci1kZWNhZGVzJyksXHJcbiAgICAgICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIgPSBkZWNhZGVzVmlldy5maW5kKCd0aCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGVjYWRlID0gbW9tZW50KHsgeTogdmlld0RhdGUueWVhcigpIC0gKHZpZXdEYXRlLnllYXIoKSAlIDEwMCkgLSAxIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuZERlY2FkZSA9IHN0YXJ0RGVjYWRlLmNsb25lKCkuYWRkKDEwMCwgJ3knKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFydGVkQXQgPSBzdGFydERlY2FkZS5jbG9uZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbkRhdGVEZWNhZGUgPSBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBtYXhEYXRlRGVjYWRlID0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZW5kRGVjYWRlWWVhcixcclxuICAgICAgICAgICAgICAgICAgICBodG1sID0gJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMCkuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5wcmV2Q2VudHVyeSk7XHJcbiAgICAgICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgyKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLm5leHRDZW50dXJ5KTtcclxuXHJcbiAgICAgICAgICAgICAgICBkZWNhZGVzVmlldy5maW5kKCcuZGlzYWJsZWQnKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnREZWNhZGUuaXNTYW1lKG1vbWVudCh7IHk6IDE5MDAgfSkpIHx8IChvcHRpb25zLm1pbkRhdGUgJiYgb3B0aW9ucy5taW5EYXRlLmlzQWZ0ZXIoc3RhcnREZWNhZGUsICd5JykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMCkuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMSkudGV4dChzdGFydERlY2FkZS55ZWFyKCkgKyAnLScgKyBlbmREZWNhZGUueWVhcigpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnREZWNhZGUuaXNTYW1lKG1vbWVudCh7IHk6IDIwMDAgfSkpIHx8IChvcHRpb25zLm1heERhdGUgJiYgb3B0aW9ucy5tYXhEYXRlLmlzQmVmb3JlKGVuZERlY2FkZSwgJ3knKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoIXN0YXJ0RGVjYWRlLmlzQWZ0ZXIoZW5kRGVjYWRlLCAneScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kRGVjYWRlWWVhciA9IHN0YXJ0RGVjYWRlLnllYXIoKSArIDEyO1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbkRhdGVEZWNhZGUgPSBvcHRpb25zLm1pbkRhdGUgJiYgb3B0aW9ucy5taW5EYXRlLmlzQWZ0ZXIoc3RhcnREZWNhZGUsICd5JykgJiYgb3B0aW9ucy5taW5EYXRlLnllYXIoKSA8PSBlbmREZWNhZGVZZWFyO1xyXG4gICAgICAgICAgICAgICAgICAgIG1heERhdGVEZWNhZGUgPSBvcHRpb25zLm1heERhdGUgJiYgb3B0aW9ucy5tYXhEYXRlLmlzQWZ0ZXIoc3RhcnREZWNhZGUsICd5JykgJiYgb3B0aW9ucy5tYXhEYXRlLnllYXIoKSA8PSBlbmREZWNhZGVZZWFyO1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGRhdGEtYWN0aW9uPVwic2VsZWN0RGVjYWRlXCIgY2xhc3M9XCJkZWNhZGUnICsgKGRhdGUuaXNBZnRlcihzdGFydERlY2FkZSkgJiYgZGF0ZS55ZWFyKCkgPD0gZW5kRGVjYWRlWWVhciA/ICcgYWN0aXZlJyA6ICcnKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICghaXNWYWxpZChzdGFydERlY2FkZSwgJ3knKSAmJiAhbWluRGF0ZURlY2FkZSAmJiAhbWF4RGF0ZURlY2FkZSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiIGRhdGEtc2VsZWN0aW9uPVwiJyArIChzdGFydERlY2FkZS55ZWFyKCkgKyA2KSArICdcIj4nICsgKHN0YXJ0RGVjYWRlLnllYXIoKSArIDEpICsgJyAtICcgKyAoc3RhcnREZWNhZGUueWVhcigpICsgMTIpICsgJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGVjYWRlLmFkZCgxMiwgJ3knKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPic7IC8vcHVzaCB0aGUgZGFuZ2xpbmcgYmxvY2sgb3ZlciwgYXQgbGVhc3QgdGhpcyB3YXkgaXQncyBldmVuXHJcblxyXG4gICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXcuZmluZCgndGQnKS5odG1sKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMSkudGV4dCgoc3RhcnRlZEF0LnllYXIoKSArIDEpICsgJy0nICsgKHN0YXJ0RGVjYWRlLnllYXIoKSkpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZmlsbERhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF5c1ZpZXcgPSB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXItZGF5cycpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheXNWaWV3SGVhZGVyID0gZGF5c1ZpZXcuZmluZCgndGgnKSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBodG1sID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsc05hbWVzID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0RhdGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgwKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLnByZXZNb250aCk7XHJcbiAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgxKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0TW9udGgpO1xyXG4gICAgICAgICAgICAgICAgZGF5c1ZpZXdIZWFkZXIuZXEoMikuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5uZXh0TW9udGgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGRheXNWaWV3LmZpbmQoJy5kaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAgICAgZGF5c1ZpZXdIZWFkZXIuZXEoMSkudGV4dCh2aWV3RGF0ZS5mb3JtYXQob3B0aW9ucy5kYXlWaWV3SGVhZGVyRm9ybWF0KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZpZXdEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ00nKSwgJ00nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRheXNWaWV3SGVhZGVyLmVxKDApLmFkZENsYXNzKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZpZXdEYXRlLmNsb25lKCkuYWRkKDEsICdNJyksICdNJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZSA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZignTScpLnN0YXJ0T2YoJ3cnKS5zdGFydE9mKCdkJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQyOyBpKyspIHsgLy9hbHdheXMgZGlzcGxheSA0MiBkYXlzIChzaG91bGQgc2hvdyA2IHdlZWtzKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS53ZWVrZGF5KCkgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gJCgnPHRyPicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jYWxlbmRhcldlZWtzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQgY2xhc3M9XCJjd1wiPicgKyBjdXJyZW50RGF0ZS53ZWVrKCkgKyAnPC90ZD4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLnB1c2gocm93KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMgPSBbJ2RheSddO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS5pc0JlZm9yZSh2aWV3RGF0ZSwgJ00nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHNOYW1lcy5wdXNoKCdvbGQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzQWZ0ZXIodmlld0RhdGUsICdNJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMucHVzaCgnbmV3Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS5pc1NhbWUoZGF0ZSwgJ2QnKSAmJiAhdW5zZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMucHVzaCgnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChjdXJyZW50RGF0ZSwgJ2QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHNOYW1lcy5wdXNoKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUuaXNTYW1lKGdldE1vbWVudCgpLCAnZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsc05hbWVzLnB1c2goJ3RvZGF5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS5kYXkoKSA9PT0gMCB8fCBjdXJyZW50RGF0ZS5kYXkoKSA9PT0gNikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHNOYW1lcy5wdXNoKCd3ZWVrZW5kJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGlmeUV2ZW50KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RwLmNsYXNzaWZ5JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IGNsc05hbWVzXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnPHRkIGRhdGEtYWN0aW9uPVwic2VsZWN0RGF5XCIgZGF0YS1kYXk9XCInICsgY3VycmVudERhdGUuZm9ybWF0KCdMJykgKyAnXCIgY2xhc3M9XCInICsgY2xzTmFtZXMuam9pbignICcpICsgJ1wiPicgKyBjdXJyZW50RGF0ZS5kYXRlKCkgKyAnPC90ZD4nKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZS5hZGQoMSwgJ2QnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBkYXlzVmlldy5maW5kKCd0Ym9keScpLmVtcHR5KCkuYXBwZW5kKGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZU1vbnRocygpO1xyXG5cclxuICAgICAgICAgICAgICAgIHVwZGF0ZVllYXJzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdXBkYXRlRGVjYWRlcygpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZmlsbEhvdXJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLWhvdXJzIHRhYmxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEhvdXIgPSB2aWV3RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2QnKSxcclxuICAgICAgICAgICAgICAgICAgICBodG1sID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcm93ID0gJCgnPHRyPicpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh2aWV3RGF0ZS5ob3VyKCkgPiAxMSAmJiAhdXNlMjRIb3Vycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIb3VyLmhvdXIoMTIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRIb3VyLmlzU2FtZSh2aWV3RGF0ZSwgJ2QnKSAmJiAodXNlMjRIb3VycyB8fCAodmlld0RhdGUuaG91cigpIDwgMTIgJiYgY3VycmVudEhvdXIuaG91cigpIDwgMTIpIHx8IHZpZXdEYXRlLmhvdXIoKSA+IDExKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SG91ci5ob3VyKCkgJSA0ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5wdXNoKHJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJzx0ZCBkYXRhLWFjdGlvbj1cInNlbGVjdEhvdXJcIiBjbGFzcz1cImhvdXInICsgKCFpc1ZhbGlkKGN1cnJlbnRIb3VyLCAnaCcpID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnXCI+JyArIGN1cnJlbnRIb3VyLmZvcm1hdCh1c2UyNEhvdXJzID8gJ0hIJyA6ICdoaCcpICsgJzwvdGQ+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEhvdXIuYWRkKDEsICdoJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVuZChodG1sKTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGZpbGxNaW51dGVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLW1pbnV0ZXMgdGFibGUnKSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TWludXRlID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9mKCdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGVwID0gb3B0aW9ucy5zdGVwcGluZyA9PT0gMSA/IDUgOiBvcHRpb25zLnN0ZXBwaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIHdoaWxlICh2aWV3RGF0ZS5pc1NhbWUoY3VycmVudE1pbnV0ZSwgJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TWludXRlLm1pbnV0ZSgpICUgKHN0ZXAgKiA0KSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3cgPSAkKCc8dHI+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwucHVzaChyb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQgZGF0YS1hY3Rpb249XCJzZWxlY3RNaW51dGVcIiBjbGFzcz1cIm1pbnV0ZScgKyAoIWlzVmFsaWQoY3VycmVudE1pbnV0ZSwgJ20nKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiPicgKyBjdXJyZW50TWludXRlLmZvcm1hdCgnbW0nKSArICc8L3RkPicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUuYWRkKHN0ZXAsICdtJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVuZChodG1sKTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGZpbGxTZWNvbmRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLXNlY29uZHMgdGFibGUnKSxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2Vjb25kID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9mKCdtJyksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSAodmlld0RhdGUuaXNTYW1lKGN1cnJlbnRTZWNvbmQsICdtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlY29uZC5zZWNvbmQoKSAlIDIwID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5wdXNoKHJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJzx0ZCBkYXRhLWFjdGlvbj1cInNlbGVjdFNlY29uZFwiIGNsYXNzPVwic2Vjb25kJyArICghaXNWYWxpZChjdXJyZW50U2Vjb25kLCAncycpID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnXCI+JyArIGN1cnJlbnRTZWNvbmQuZm9ybWF0KCdzcycpICsgJzwvdGQ+Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZC5hZGQoNSwgJ3MnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVuZChodG1sKTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGZpbGxUaW1lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSwgbmV3RGF0ZSwgdGltZUNvbXBvbmVudHMgPSB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgc3BhbltkYXRhLXRpbWUtY29tcG9uZW50XScpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdXNlMjRIb3Vycykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZSA9IHdpZGdldC5maW5kKCcudGltZXBpY2tlciBbZGF0YS1hY3Rpb249dG9nZ2xlUGVyaW9kXScpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKChkYXRlLmhvdXJzKCkgPj0gMTIpID8gLTEyIDogMTIsICdoJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS50ZXh0KGRhdGUuZm9ybWF0KCdBJykpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAnaCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1ob3Vyc10nKS50ZXh0KGRhdGUuZm9ybWF0KHVzZTI0SG91cnMgPyAnSEgnIDogJ2hoJykpO1xyXG4gICAgICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1taW51dGVzXScpLnRleHQoZGF0ZS5mb3JtYXQoJ21tJykpO1xyXG4gICAgICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1zZWNvbmRzXScpLnRleHQoZGF0ZS5mb3JtYXQoJ3NzJykpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZpbGxIb3VycygpO1xyXG4gICAgICAgICAgICAgICAgZmlsbE1pbnV0ZXMoKTtcclxuICAgICAgICAgICAgICAgIGZpbGxTZWNvbmRzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICB1cGRhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBmaWxsVGltZSgpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgc2V0VmFsdWUgPSBmdW5jdGlvbiAodGFyZ2V0TW9tZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgb2xkRGF0ZSA9IHVuc2V0ID8gbnVsbCA6IGRhdGU7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gY2FzZSBvZiBjYWxsaW5nIHNldFZhbHVlKG51bGwgb3IgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldE1vbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWwoJycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZGF0YSgnZGF0ZScsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5jaGFuZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkRGF0ZTogb2xkRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0YXJnZXRNb21lbnQgPSB0YXJnZXRNb21lbnQuY2xvbmUoKS5sb2NhbGUob3B0aW9ucy5sb2NhbGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoYXNUaW1lWm9uZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TW9tZW50LnR6KG9wdGlvbnMudGltZVpvbmUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnN0ZXBwaW5nICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TW9tZW50Lm1pbnV0ZXMoKE1hdGgucm91bmQodGFyZ2V0TW9tZW50Lm1pbnV0ZXMoKSAvIG9wdGlvbnMuc3RlcHBpbmcpICogb3B0aW9ucy5zdGVwcGluZykpLnNlY29uZHMoMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChvcHRpb25zLm1pbkRhdGUgJiYgdGFyZ2V0TW9tZW50LmlzQmVmb3JlKG9wdGlvbnMubWluRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TW9tZW50LmFkZChvcHRpb25zLnN0ZXBwaW5nLCAnbWludXRlcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZCh0YXJnZXRNb21lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IHRhcmdldE1vbWVudDtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3RGF0ZSA9IGRhdGUuY2xvbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWwoZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5kYXRhKCdkYXRlJywgZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5zZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5jaGFuZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmNsb25lKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZERhdGU6IG9sZERhdGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmtlZXBJbnZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbCh1bnNldCA/ICcnIDogZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5RXZlbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RwLmNoYW5nZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiB0YXJnZXRNb21lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGREYXRlOiBvbGREYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5lcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IHRhcmdldE1vbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2xkRGF0ZTogb2xkRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEhpZGVzIHRoZSB3aWRnZXQuIFBvc3NpYmx5IHdpbGwgZW1pdCBkcC5oaWRlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBoaWRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zaXRpb25pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBldmVudCBpZiBpbiB0aGUgbWlkZGxlIG9mIGEgcGlja2VyIHRyYW5zaXRpb25cclxuICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcuY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sbGFwc2VEYXRhID0gJCh0aGlzKS5kYXRhKCdjb2xsYXBzZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2xsYXBzZURhdGEgJiYgY29sbGFwc2VEYXRhLnRyYW5zaXRpb25pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Lmhhc0NsYXNzKCdidG4nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50b2dnbGVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQuaGlkZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZScsIHBsYWNlKTtcclxuICAgICAgICAgICAgICAgIHdpZGdldC5vZmYoJ2NsaWNrJywgJ1tkYXRhLWFjdGlvbl0nKTtcclxuICAgICAgICAgICAgICAgIHdpZGdldC5vZmYoJ21vdXNlZG93bicsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aWRnZXQucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICB3aWRnZXQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RwLmhpZGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IGRhdGUuY2xvbmUoKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaW5wdXQuYmx1cigpO1xyXG5cclxuICAgICAgICAgICAgICAgIHZpZXdEYXRlID0gZGF0ZS5jbG9uZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBjbGVhciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgcGFyc2VJbnB1dERhdGUgPSBmdW5jdGlvbiAoaW5wdXREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wYXJzZUlucHV0RGF0ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb21lbnQuaXNNb21lbnQoaW5wdXREYXRlKSB8fCBpbnB1dERhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RGF0ZSA9IGdldE1vbWVudChpbnB1dERhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREYXRlID0gb3B0aW9ucy5wYXJzZUlucHV0RGF0ZShpbnB1dERhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy9pbnB1dERhdGUubG9jYWxlKG9wdGlvbnMubG9jYWxlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dERhdGU7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAgICAgICpcclxuICAgICAgICAgICAgICogV2lkZ2V0IFVJIGludGVyYWN0aW9uIGZ1bmN0aW9uc1xyXG4gICAgICAgICAgICAgKlxyXG4gICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgICAgIGFjdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hdkZuYyA9IGRhdGVQaWNrZXJNb2Rlc1tjdXJyZW50Vmlld01vZGVdLm5hdkZuYztcclxuICAgICAgICAgICAgICAgICAgICB2aWV3RGF0ZS5hZGQoZGF0ZVBpY2tlck1vZGVzW2N1cnJlbnRWaWV3TW9kZV0ubmF2U3RlcCwgbmF2Rm5jKTtcclxuICAgICAgICAgICAgICAgICAgICBmaWxsRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUobmF2Rm5jKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgcHJldmlvdXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmF2Rm5jID0gZGF0ZVBpY2tlck1vZGVzW2N1cnJlbnRWaWV3TW9kZV0ubmF2Rm5jO1xyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdEYXRlLnN1YnRyYWN0KGRhdGVQaWNrZXJNb2Rlc1tjdXJyZW50Vmlld01vZGVdLm5hdlN0ZXAsIG5hdkZuYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbERhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3VXBkYXRlKG5hdkZuYyk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHBpY2tlclN3aXRjaDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNob3dNb2RlKDEpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RNb250aDogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9udGggPSAkKGUudGFyZ2V0KS5jbG9zZXN0KCd0Ym9keScpLmZpbmQoJ3NwYW4nKS5pbmRleCgkKGUudGFyZ2V0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0RhdGUubW9udGgobW9udGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlld01vZGUgPT09IG1pblZpZXdNb2RlTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS55ZWFyKHZpZXdEYXRlLnllYXIoKSkubW9udGgodmlld0RhdGUubW9udGgoKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9kZSgtMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUoJ00nKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZWN0WWVhcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KCQoZS50YXJnZXQpLnRleHQoKSwgMTApIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0RhdGUueWVhcih5ZWFyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZpZXdNb2RlID09PSBtaW5WaWV3TW9kZU51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlLmNsb25lKCkueWVhcih2aWV3RGF0ZS55ZWFyKCkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlubGluZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd01vZGUoLTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsRGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB2aWV3VXBkYXRlKCdZWVlZJyk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdERlY2FkZTogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KCQoZS50YXJnZXQpLmRhdGEoJ3NlbGVjdGlvbicpLCAxMCkgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3RGF0ZS55ZWFyKHllYXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlld01vZGUgPT09IG1pblZpZXdNb2RlTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS55ZWFyKHZpZXdEYXRlLnllYXIoKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9kZSgtMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUoJ1lZWVknKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZWN0RGF5OiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSB2aWV3RGF0ZS5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkKGUudGFyZ2V0KS5pcygnLm9sZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRheS5zdWJ0cmFjdCgxLCAnTScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoJChlLnRhcmdldCkuaXMoJy5uZXcnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXkuYWRkKDEsICdNJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGRheS5kYXRlKHBhcnNlSW50KCQoZS50YXJnZXQpLnRleHQoKSwgMTApKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNUaW1lKCkgJiYgIW9wdGlvbnMua2VlcE9wZW4gJiYgIW9wdGlvbnMuaW5saW5lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGluY3JlbWVudEhvdXJzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKDEsICdoJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGluY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3RGF0ZSA9IGRhdGUuY2xvbmUoKS5hZGQob3B0aW9ucy5zdGVwcGluZywgJ20nKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAnbScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgaW5jcmVtZW50U2Vjb25kczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdEYXRlID0gZGF0ZS5jbG9uZSgpLmFkZCgxLCAncycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3RGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBkZWNyZW1lbnRIb3VyczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdEYXRlID0gZGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdoJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGRlY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3RGF0ZSA9IGRhdGUuY2xvbmUoKS5zdWJ0cmFjdChvcHRpb25zLnN0ZXBwaW5nLCAnbScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdtJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3RGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBkZWNyZW1lbnRTZWNvbmRzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ3MnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAncycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUGVyaW9kOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLmFkZCgoZGF0ZS5ob3VycygpID49IDEyKSA/IC0xMiA6IDEyLCAnaCcpKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgdG9nZ2xlUGlja2VyOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQoZS50YXJnZXQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkcGFyZW50ID0gJHRoaXMuY2xvc2VzdCgndWwnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgPSAkcGFyZW50LmZpbmQoJy5pbicpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSAkcGFyZW50LmZpbmQoJy5jb2xsYXBzZTpub3QoLmluKScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZURhdGE7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZCAmJiBleHBhbmRlZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VEYXRhID0gZXhwYW5kZWQuZGF0YSgnY29sbGFwc2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbGxhcHNlRGF0YSAmJiBjb2xsYXBzZURhdGEudHJhbnNpdGlvbmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZC5jb2xsYXBzZSkgeyAvLyBpZiBjb2xsYXBzZSBwbHVnaW4gaXMgYXZhaWxhYmxlIHRocm91Z2ggYm9vdHN0cmFwLmpzIHRoZW4gdXNlIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZC5jb2xsYXBzZSgnaGlkZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkLmNvbGxhcHNlKCdzaG93Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSBqdXN0IHRvZ2dsZSBpbiBjbGFzcyBvbiB0aGUgdHdvIHZpZXdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZC5yZW1vdmVDbGFzcygnaW4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZC5hZGRDbGFzcygnaW4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMuaXMoJ3NwYW4nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMudG9nZ2xlQ2xhc3Mob3B0aW9ucy5pY29ucy50aW1lICsgJyAnICsgb3B0aW9ucy5pY29ucy5kYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJ3NwYW4nKS50b2dnbGVDbGFzcyhvcHRpb25zLmljb25zLnRpbWUgKyAnICcgKyBvcHRpb25zLmljb25zLmRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB1bmNvbW1lbnQgaWYgdG9nZ2xlZCBzdGF0ZSB3aWxsIGJlIHJlc3RvcmVkIGluIHNob3coKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgY29tcG9uZW50LmZpbmQoJ3NwYW4nKS50b2dnbGVDbGFzcyhvcHRpb25zLmljb25zLnRpbWUgKyAnICcgKyBvcHRpb25zLmljb25zLmRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL31cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHNob3dQaWNrZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgPiBkaXY6bm90KC50aW1lcGlja2VyLXBpY2tlciknKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLnNob3coKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgc2hvd0hvdXJzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItaG91cnMnKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHNob3dNaW51dGVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItbWludXRlcycpLnNob3coKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgc2hvd1NlY29uZHM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItcGlja2VyJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlciAudGltZXBpY2tlci1zZWNvbmRzJykuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RIb3VyOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBob3VyID0gcGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdXNlMjRIb3Vycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZS5ob3VycygpID49IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG91ciAhPT0gMTIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLmhvdXJzKGhvdXIpKTtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnNob3dQaWNrZXIuY2FsbChwaWNrZXIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RNaW51dGU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLm1pbnV0ZXMocGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCkpKTtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnNob3dQaWNrZXIuY2FsbChwaWNrZXIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RTZWNvbmQ6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLnNlY29uZHMocGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCkpKTtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zLnNob3dQaWNrZXIuY2FsbChwaWNrZXIpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjbGVhcjogY2xlYXIsXHJcblxyXG4gICAgICAgICAgICAgICAgdG9kYXk6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9kYXlzRGF0ZSA9IGdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKHRvZGF5c0RhdGUsICdkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodG9kYXlzRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjbG9zZTogaGlkZVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZG9BY3Rpb24gPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCQoZS5jdXJyZW50VGFyZ2V0KS5pcygnLmRpc2FibGVkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhY3Rpb25zWyQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKCdhY3Rpb24nKV0uYXBwbHkocGlja2VyLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFNob3dzIHRoZSB3aWRnZXQuIFBvc3NpYmx5IHdpbGwgZW1pdCBkcC5zaG93IGFuZCBkcC5jaGFuZ2VcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIHNob3cgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudE1vbWVudCxcclxuICAgICAgICAgICAgICAgICAgICB1c2VDdXJyZW50R3JhbnVsYXJpdHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd5ZWFyJzogZnVuY3Rpb24gKG0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtLm1vbnRoKDApLmRhdGUoMSkuaG91cnMoMCkuc2Vjb25kcygwKS5taW51dGVzKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW9udGgnOiBmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uZGF0ZSgxKS5ob3VycygwKS5zZWNvbmRzKDApLm1pbnV0ZXMoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdkYXknOiBmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uaG91cnMoMCkuc2Vjb25kcygwKS5taW51dGVzKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaG91cic6IGZ1bmN0aW9uIChtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5zZWNvbmRzKDApLm1pbnV0ZXMoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW51dGUnOiBmdW5jdGlvbiAobSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uc2Vjb25kcygwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnByb3AoJ2Rpc2FibGVkJykgfHwgKCFvcHRpb25zLmlnbm9yZVJlYWRvbmx5ICYmIGlucHV0LnByb3AoJ3JlYWRvbmx5JykpIHx8IHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQudmFsKCkgIT09IHVuZGVmaW5lZCAmJiBpbnB1dC52YWwoKS50cmltKCkubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUocGFyc2VJbnB1dERhdGUoaW5wdXQudmFsKCkudHJpbSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVuc2V0ICYmIG9wdGlvbnMudXNlQ3VycmVudCAmJiAob3B0aW9ucy5pbmxpbmUgfHwgKGlucHV0LmlzKCdpbnB1dCcpICYmIGlucHV0LnZhbCgpLnRyaW0oKS5sZW5ndGggPT09IDApKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb21lbnQgPSBnZXRNb21lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMudXNlQ3VycmVudCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vbWVudCA9IHVzZUN1cnJlbnRHcmFudWxhcml0eVtvcHRpb25zLnVzZUN1cnJlbnRdKGN1cnJlbnRNb21lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShjdXJyZW50TW9tZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHdpZGdldCA9IGdldFRlbXBsYXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZmlsbERvdygpO1xyXG4gICAgICAgICAgICAgICAgZmlsbE1vbnRocygpO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlci1ob3VycycpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlci1taW51dGVzJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLXNlY29uZHMnKS5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBzaG93TW9kZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICQod2luZG93KS5vbigncmVzaXplJywgcGxhY2UpO1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0Lm9uKCdjbGljaycsICdbZGF0YS1hY3Rpb25dJywgZG9BY3Rpb24pOyAvLyB0aGlzIGhhbmRsZXMgY2xpY2tzIG9uIHRoZSB3aWRnZXRcclxuICAgICAgICAgICAgICAgIHdpZGdldC5vbignbW91c2Vkb3duJywgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Lmhhc0NsYXNzKCdidG4nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50b2dnbGVDbGFzcygnYWN0aXZlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwbGFjZSgpO1xyXG4gICAgICAgICAgICAgICAgd2lkZ2V0LnNob3coKTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZvY3VzT25TaG93ICYmICFpbnB1dC5pcygnOmZvY3VzJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG5vdGlmeUV2ZW50KHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZHAuc2hvdydcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBTaG93cyBvciBoaWRlcyB0aGUgd2lkZ2V0XHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICB0b2dnbGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpZGdldCA/IGhpZGUoKSA6IHNob3coKSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBrZXlkb3duID0gZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyID0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBpbmRleDIsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJlc3NlZEtleXMgPSBbXSxcclxuICAgICAgICAgICAgICAgICAgICBwcmVzc2VkTW9kaWZpZXJzID0ge30sXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEtleSA9IGUud2hpY2gsXHJcbiAgICAgICAgICAgICAgICAgICAga2V5QmluZEtleXMsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxsTW9kaWZpZXJzUHJlc3NlZCxcclxuICAgICAgICAgICAgICAgICAgICBwcmVzc2VkID0gJ3AnO1xyXG5cclxuICAgICAgICAgICAgICAgIGtleVN0YXRlW2N1cnJlbnRLZXldID0gcHJlc3NlZDtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGluZGV4IGluIGtleVN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleVN0YXRlLmhhc093blByb3BlcnR5KGluZGV4KSAmJiBrZXlTdGF0ZVtpbmRleF0gPT09IHByZXNzZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3NlZEtleXMucHVzaChpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChpbmRleCwgMTApICE9PSBjdXJyZW50S2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc2VkTW9kaWZpZXJzW2luZGV4XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChpbmRleCBpbiBvcHRpb25zLmtleUJpbmRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMua2V5QmluZHMuaGFzT3duUHJvcGVydHkoaW5kZXgpICYmIHR5cGVvZiAob3B0aW9ucy5rZXlCaW5kc1tpbmRleF0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUJpbmRLZXlzID0gaW5kZXguc3BsaXQoJyAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleUJpbmRLZXlzLmxlbmd0aCA9PT0gcHJlc3NlZEtleXMubGVuZ3RoICYmIGtleU1hcFtjdXJyZW50S2V5XSA9PT0ga2V5QmluZEtleXNba2V5QmluZEtleXMubGVuZ3RoIC0gMV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE1vZGlmaWVyc1ByZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbmRleDIgPSBrZXlCaW5kS2V5cy5sZW5ndGggLSAyOyBpbmRleDIgPj0gMDsgaW5kZXgyLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShrZXlNYXBba2V5QmluZEtleXNbaW5kZXgyXV0gaW4gcHJlc3NlZE1vZGlmaWVycykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTW9kaWZpZXJzUHJlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsTW9kaWZpZXJzUHJlc3NlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBvcHRpb25zLmtleUJpbmRzW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIuY2FsbChwaWNrZXIsIHdpZGdldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBrZXl1cCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICBrZXlTdGF0ZVtlLndoaWNoXSA9ICdyJztcclxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBjaGFuZ2UgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9ICQoZS50YXJnZXQpLnZhbCgpLnRyaW0oKSxcclxuICAgICAgICAgICAgICAgICAgICBwYXJzZWREYXRlID0gdmFsID8gcGFyc2VJbnB1dERhdGUodmFsKSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShwYXJzZWREYXRlKTtcclxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBhdHRhY2hEYXRlUGlja2VyRWxlbWVudEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlucHV0Lm9uKHtcclxuICAgICAgICAgICAgICAgICAgICAnY2hhbmdlJzogY2hhbmdlLFxyXG4gICAgICAgICAgICAgICAgICAgICdibHVyJzogb3B0aW9ucy5kZWJ1ZyA/ICcnIDogaGlkZSxcclxuICAgICAgICAgICAgICAgICAgICAna2V5ZG93bic6IGtleWRvd24sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2tleXVwJzoga2V5dXAsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzJzogb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlID8gc2hvdyA6ICcnXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Lm9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzJzogc2hvd1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQub24oJ2NsaWNrJywgdG9nZ2xlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQub24oJ21vdXNlZG93bicsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGRldGFjaERhdGVQaWNrZXJFbGVtZW50RXZlbnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQub2ZmKHtcclxuICAgICAgICAgICAgICAgICAgICAnY2hhbmdlJzogY2hhbmdlLFxyXG4gICAgICAgICAgICAgICAgICAgICdibHVyJzogYmx1cixcclxuICAgICAgICAgICAgICAgICAgICAna2V5ZG93bic6IGtleWRvd24sXHJcbiAgICAgICAgICAgICAgICAgICAgJ2tleXVwJzoga2V5dXAsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzJzogb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlID8gaGlkZSA6ICcnXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Lm9mZih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2N1cyc6IHNob3dcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm9mZignY2xpY2snLCB0b2dnbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vZmYoJ21vdXNlZG93bicsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGluZGV4R2l2ZW5EYXRlcyA9IGZ1bmN0aW9uIChnaXZlbkRhdGVzQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFN0b3JlIGdpdmVuIGVuYWJsZWREYXRlcyBhbmQgZGlzYWJsZWREYXRlcyBhcyBrZXlzLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyB3YXkgd2UgY2FuIGNoZWNrIHRoZWlyIGV4aXN0ZW5jZSBpbiBPKDEpIHRpbWUgaW5zdGVhZCBvZiBsb29waW5nIHRocm91Z2ggd2hvbGUgYXJyYXkuXHJcbiAgICAgICAgICAgICAgICAvLyAoZm9yIGV4YW1wbGU6IG9wdGlvbnMuZW5hYmxlZERhdGVzWycyMDE0LTAyLTI3J10gPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICB2YXIgZ2l2ZW5EYXRlc0luZGV4ZWQgPSB7fTtcclxuICAgICAgICAgICAgICAgICQuZWFjaChnaXZlbkRhdGVzQXJyYXksIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZERhdGUgPSBwYXJzZUlucHV0RGF0ZSh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZERhdGUuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuRGF0ZXNJbmRleGVkW2REYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKE9iamVjdC5rZXlzKGdpdmVuRGF0ZXNJbmRleGVkKS5sZW5ndGgpID8gZ2l2ZW5EYXRlc0luZGV4ZWQgOiBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGluZGV4R2l2ZW5Ib3VycyA9IGZ1bmN0aW9uIChnaXZlbkhvdXJzQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFN0b3JlIGdpdmVuIGVuYWJsZWRIb3VycyBhbmQgZGlzYWJsZWRIb3VycyBhcyBrZXlzLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyB3YXkgd2UgY2FuIGNoZWNrIHRoZWlyIGV4aXN0ZW5jZSBpbiBPKDEpIHRpbWUgaW5zdGVhZCBvZiBsb29waW5nIHRocm91Z2ggd2hvbGUgYXJyYXkuXHJcbiAgICAgICAgICAgICAgICAvLyAoZm9yIGV4YW1wbGU6IG9wdGlvbnMuZW5hYmxlZEhvdXJzWycyMDE0LTAyLTI3J10gPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICB2YXIgZ2l2ZW5Ib3Vyc0luZGV4ZWQgPSB7fTtcclxuICAgICAgICAgICAgICAgICQuZWFjaChnaXZlbkhvdXJzQXJyYXksIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBnaXZlbkhvdXJzSW5kZXhlZFt0aGlzXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoT2JqZWN0LmtleXMoZ2l2ZW5Ib3Vyc0luZGV4ZWQpLmxlbmd0aCkgPyBnaXZlbkhvdXJzSW5kZXhlZCA6IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQgfHwgJ0wgTFQnO1xyXG5cclxuICAgICAgICAgICAgICAgIGFjdHVhbEZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csIGZ1bmN0aW9uIChmb3JtYXRJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdpbnB1dCA9IGRhdGUubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KGZvcm1hdElucHV0KSB8fCBmb3JtYXRJbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3aW5wdXQucmVwbGFjZSgvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLCBmdW5jdGlvbiAoZm9ybWF0SW5wdXQyKSB7IC8vdGVtcCBmaXggZm9yICM3NDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUubG9jYWxlRGF0YSgpLmxvbmdEYXRlRm9ybWF0KGZvcm1hdElucHV0MikgfHwgZm9ybWF0SW5wdXQyO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIHBhcnNlRm9ybWF0cyA9IG9wdGlvbnMuZXh0cmFGb3JtYXRzID8gb3B0aW9ucy5leHRyYUZvcm1hdHMuc2xpY2UoKSA6IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlRm9ybWF0cy5pbmRleE9mKGZvcm1hdCkgPCAwICYmIHBhcnNlRm9ybWF0cy5pbmRleE9mKGFjdHVhbEZvcm1hdCkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGb3JtYXRzLnB1c2goYWN0dWFsRm9ybWF0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB1c2UyNEhvdXJzID0gKGFjdHVhbEZvcm1hdC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2EnKSA8IDEgJiYgYWN0dWFsRm9ybWF0LnJlcGxhY2UoL1xcWy4qP1xcXS9nLCAnJykuaW5kZXhPZignaCcpIDwgMSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgneScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluVmlld01vZGVOdW1iZXIgPSAyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgnTScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluVmlld01vZGVOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgnZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluVmlld01vZGVOdW1iZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZSA9IE1hdGgubWF4KG1pblZpZXdNb2RlTnVtYmVyLCBjdXJyZW50Vmlld01vZGUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdW5zZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBQdWJsaWMgQVBJIGZ1bmN0aW9uc1xyXG4gICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogSW1wb3J0YW50OiBEbyBub3QgZXhwb3NlIGRpcmVjdCByZWZlcmVuY2VzIHRvIHByaXZhdGUgb2JqZWN0cyBvciB0aGUgb3B0aW9uc1xyXG4gICAgICAgICAqIG9iamVjdCB0byB0aGUgb3V0ZXIgd29ybGQuIEFsd2F5cyByZXR1cm4gYSBjbG9uZSB3aGVuIHJldHVybmluZyB2YWx1ZXMgb3IgbWFrZVxyXG4gICAgICAgICAqIGEgY2xvbmUgd2hlbiBzZXR0aW5nIGEgcHJpdmF0ZSB2YXJpYWJsZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICBwaWNrZXIuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+RGVzdHJveXMgdGhlIHdpZGdldCBhbmQgcmVtb3ZlcyBhbGwgYXR0YWNoZWQgZXZlbnQgbGlzdGVuZXJzPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgIGRldGFjaERhdGVQaWNrZXJFbGVtZW50RXZlbnRzKCk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRGF0YSgnRGF0ZVRpbWVQaWNrZXInKTtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVEYXRhKCdkYXRlJyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLnRvZ2dsZSA9IHRvZ2dsZTtcclxuXHJcbiAgICAgICAgcGlja2VyLnNob3cgPSBzaG93O1xyXG5cclxuICAgICAgICBwaWNrZXIuaGlkZSA9IGhpZGU7XHJcblxyXG4gICAgICAgIHBpY2tlci5kaXNhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAvLy88c3VtbWFyeT5EaXNhYmxlcyB0aGUgaW5wdXQgZWxlbWVudCwgdGhlIGNvbXBvbmVudCBpcyBhdHRhY2hlZCB0bywgYnkgYWRkaW5nIGEgZGlzYWJsZWQ9XCJ0cnVlXCIgYXR0cmlidXRlIHRvIGl0LlxyXG4gICAgICAgICAgICAvLy9JZiB0aGUgd2lkZ2V0IHdhcyB2aXNpYmxlIGJlZm9yZSB0aGF0IGNhbGwgaXQgaXMgaGlkZGVuLiBQb3NzaWJseSBlbWl0cyBkcC5oaWRlPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Lmhhc0NsYXNzKCdidG4nKSkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmFkZENsYXNzKCdkaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlucHV0LnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmVuYWJsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+RW5hYmxlcyB0aGUgaW5wdXQgZWxlbWVudCwgdGhlIGNvbXBvbmVudCBpcyBhdHRhY2hlZCB0bywgYnkgcmVtb3ZpbmcgZGlzYWJsZWQgYXR0cmlidXRlIGZyb20gaXQuPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5oYXNDbGFzcygnYnRuJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbnB1dC5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuaWdub3JlUmVhZG9ubHkgPSBmdW5jdGlvbiAoaWdub3JlUmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmlnbm9yZVJlYWRvbmx5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaWdub3JlUmVhZG9ubHkgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaWdub3JlUmVhZG9ubHkgKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy5pZ25vcmVSZWFkb25seSA9IGlnbm9yZVJlYWRvbmx5O1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5vcHRpb25zID0gZnVuY3Rpb24gKG5ld09wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghKG5ld09wdGlvbnMgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zKCkgb3B0aW9ucyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIG9wdGlvbnMsIG5ld09wdGlvbnMpO1xyXG4gICAgICAgICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwaWNrZXJba2V5XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGlja2VyW2tleV0odmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIGtleSArICcgaXMgbm90IHJlY29nbml6ZWQhJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5kYXRlID0gZnVuY3Rpb24gKG5ld0RhdGUpIHtcclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZSBoZWxwS2V5d29yZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGF0ZVwiPlxyXG4gICAgICAgICAgICAvLy88c3VtbWFyeT5SZXR1cm5zIHRoZSBjb21wb25lbnQncyBtb2RlbCBjdXJyZW50IGRhdGUsIGEgbW9tZW50IG9iamVjdCBvciBudWxsIGlmIG5vdCBzZXQuPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPVwiTW9tZW50XCI+ZGF0ZS5jbG9uZSgpPC9yZXR1cm5zPlxyXG4gICAgICAgICAgICAvLy88L3NpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+U2V0cyB0aGUgY29tcG9uZW50cyBtb2RlbCBjdXJyZW50IG1vbWVudCB0byBpdC4gUGFzc2luZyBhIG51bGwgdmFsdWUgdW5zZXRzIHRoZSBjb21wb25lbnRzIG1vZGVsIGN1cnJlbnQgbW9tZW50LiBQYXJzaW5nIG9mIHRoZSBuZXdEYXRlIHBhcmFtZXRlciBpcyBtYWRlIHVzaW5nIG1vbWVudCBsaWJyYXJ5IHdpdGggdGhlIG9wdGlvbnMuZm9ybWF0IGFuZCBvcHRpb25zLnVzZVN0cmljdCBjb21wb25lbnRzIGNvbmZpZ3VyYXRpb24uPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cGFyYW0gbmFtZT1cIm5ld0RhdGVcIiBsb2NpZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGF0ZV9wOm5ld0RhdGVcIj5UYWtlcyBzdHJpbmcsIERhdGUsIG1vbWVudCwgbnVsbCBwYXJhbWV0ZXIuPC9wYXJhbT5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodW5zZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLmNsb25lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdEYXRlICE9PSBudWxsICYmIHR5cGVvZiBuZXdEYXRlICE9PSAnc3RyaW5nJyAmJiAhbW9tZW50LmlzTW9tZW50KG5ld0RhdGUpICYmICEobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRlKCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mIFtudWxsLCBzdHJpbmcsIG1vbWVudCBvciBEYXRlXScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlID09PSBudWxsID8gbnVsbCA6IHBhcnNlSW5wdXREYXRlKG5ld0RhdGUpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuZm9ybWF0ID0gZnVuY3Rpb24gKG5ld0Zvcm1hdCkge1xyXG4gICAgICAgICAgICAvLy88c3VtbWFyeT50ZXN0IHN1PC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cGFyYW0gbmFtZT1cIm5ld0Zvcm1hdFwiPmluZm8gYWJvdXQgcGFyYTwvcGFyYW0+XHJcbiAgICAgICAgICAgIC8vLzxyZXR1cm5zIHR5cGU9XCJzdHJpbmd8Ym9vbGVhblwiPnJldHVybnMgZm9vPC9yZXR1cm5zPlxyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybWF0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiBuZXdGb3JtYXQgIT09ICdzdHJpbmcnKSAmJiAoKHR5cGVvZiBuZXdGb3JtYXQgIT09ICdib29sZWFuJykgfHwgKG5ld0Zvcm1hdCAhPT0gZmFsc2UpKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9ybWF0KCkgZXhwZWN0cyBhIHN0cmluZyBvciBib29sZWFuOmZhbHNlIHBhcmFtZXRlciAnICsgbmV3Rm9ybWF0KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5mb3JtYXQgPSBuZXdGb3JtYXQ7XHJcbiAgICAgICAgICAgIGlmIChhY3R1YWxGb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIGluaXRGb3JtYXR0aW5nKCk7IC8vIHJlaW5pdCBmb3JtYXR0aW5nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIudGltZVpvbmUgPSBmdW5jdGlvbiAobmV3Wm9uZSkge1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMudGltZVpvbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3Wm9uZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25ld1pvbmUoKSBleHBlY3RzIGEgc3RyaW5nIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLnRpbWVab25lID0gbmV3Wm9uZTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmRheVZpZXdIZWFkZXJGb3JtYXQgPSBmdW5jdGlvbiAobmV3Rm9ybWF0KSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kYXlWaWV3SGVhZGVyRm9ybWF0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0Zvcm1hdCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RheVZpZXdIZWFkZXJGb3JtYXQoKSBleHBlY3RzIGEgc3RyaW5nIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLmRheVZpZXdIZWFkZXJGb3JtYXQgPSBuZXdGb3JtYXQ7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmV4dHJhRm9ybWF0cyA9IGZ1bmN0aW9uIChmb3JtYXRzKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5leHRyYUZvcm1hdHM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChmb3JtYXRzICE9PSBmYWxzZSAmJiAhKGZvcm1hdHMgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4dHJhRm9ybWF0cygpIGV4cGVjdHMgYW4gYXJyYXkgb3IgZmFsc2UgcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG9wdGlvbnMuZXh0cmFGb3JtYXRzID0gZm9ybWF0cztcclxuICAgICAgICAgICAgaWYgKHBhcnNlRm9ybWF0cykge1xyXG4gICAgICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTsgLy8gcmVpbml0IGZvcm1hdHRpbmdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5kaXNhYmxlZERhdGVzID0gZnVuY3Rpb24gKGRhdGVzKSB7XHJcbiAgICAgICAgICAgIC8vLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRpc2FibGVkRGF0ZXNcIj5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGRpc2FibGVkIGRhdGVzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPVwiYXJyYXlcIj5vcHRpb25zLmRpc2FibGVkRGF0ZXM8L3JldHVybnM+XHJcbiAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPlxyXG4gICAgICAgICAgICAvLy88c2lnbmF0dXJlPlxyXG4gICAgICAgICAgICAvLy88c3VtbWFyeT5TZXR0aW5nIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9wdGlvbnMubWluRGF0ZSwgb3B0aW9ucy5tYXhEYXRlIGNvbmZpZ3VyYXRpb24uIEFsc28gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2ZcclxuICAgICAgICAgICAgLy8vb3B0aW9ucy5lbmFibGVkRGF0ZXMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+XHJcbiAgICAgICAgICAgIC8vLzxwYXJhbSBuYW1lPVwiZGF0ZXNcIiBsb2NpZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGlzYWJsZWREYXRlc19wOmRhdGVzXCI+VGFrZXMgYW4gWyBzdHJpbmcgb3IgRGF0ZSBvciBtb21lbnQgXSBvZiB2YWx1ZXMgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25seSBmcm9tIHRob3NlIGRheXMuPC9wYXJhbT5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbnMuZGlzYWJsZWREYXRlcyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkRGF0ZXMpIDogb3B0aW9ucy5kaXNhYmxlZERhdGVzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFkYXRlcykge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZERhdGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCEoZGF0ZXMgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Rpc2FibGVkRGF0ZXMoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWREYXRlcyA9IGluZGV4R2l2ZW5EYXRlcyhkYXRlcyk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZERhdGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5lbmFibGVkRGF0ZXMgPSBmdW5jdGlvbiAoZGF0ZXMpIHtcclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZSBoZWxwS2V5d29yZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZW5hYmxlZERhdGVzXCI+XHJcbiAgICAgICAgICAgIC8vLzxzdW1tYXJ5PlJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgY3VycmVudGx5IHNldCBlbmFibGVkIGRhdGVzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPVwiYXJyYXlcIj5vcHRpb25zLmVuYWJsZWREYXRlczwvcmV0dXJucz5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBvcHRpb25zLmRpc2FibGVkRGF0ZXMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+XHJcbiAgICAgICAgICAgIC8vLzxwYXJhbSBuYW1lPVwiZGF0ZXNcIiBsb2NpZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZW5hYmxlZERhdGVzX3A6ZGF0ZXNcIj5UYWtlcyBhbiBbIHN0cmluZyBvciBEYXRlIG9yIG1vbWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFtPlxyXG4gICAgICAgICAgICAvLy88L3NpZ25hdHVyZT5cclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9ucy5lbmFibGVkRGF0ZXMgPyAkLmV4dGVuZCh7fSwgb3B0aW9ucy5lbmFibGVkRGF0ZXMpIDogb3B0aW9ucy5lbmFibGVkRGF0ZXMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWRhdGVzKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmVuYWJsZWREYXRlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghKGRhdGVzIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmFibGVkRGF0ZXMoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZERhdGVzID0gaW5kZXhHaXZlbkRhdGVzKGRhdGVzKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZERhdGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5kYXlzT2ZXZWVrRGlzYWJsZWQgPSBmdW5jdGlvbiAoZGF5c09mV2Vla0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kYXlzT2ZXZWVrRGlzYWJsZWQuc3BsaWNlKDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiBkYXlzT2ZXZWVrRGlzYWJsZWQgPT09ICdib29sZWFuJykgJiYgIWRheXNPZldlZWtEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXlzT2ZXZWVrRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCEoZGF5c09mV2Vla0Rpc2FibGVkIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXlzT2ZXZWVrRGlzYWJsZWQoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZGF5c09mV2Vla0Rpc2FibGVkID0gZGF5c09mV2Vla0Rpc2FibGVkLnJlZHVjZShmdW5jdGlvbiAocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBwYXJzZUludChjdXJyZW50VmFsdWUsIDEwKTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgPiA2IHx8IGN1cnJlbnRWYWx1ZSA8IDAgfHwgaXNOYU4oY3VycmVudFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUuaW5kZXhPZihjdXJyZW50VmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUucHVzaChjdXJyZW50VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XHJcbiAgICAgICAgICAgIH0sIFtdKS5zb3J0KCk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHZhciB0cmllcyA9IDA7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWlzVmFsaWQoZGF0ZSwgJ2QnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVzID09PSAzMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAnVHJpZWQgMzEgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0cmllcysrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLm1heERhdGUgPSBmdW5jdGlvbiAobWF4RGF0ZSkge1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMubWF4RGF0ZSA/IG9wdGlvbnMubWF4RGF0ZS5jbG9uZSgpIDogb3B0aW9ucy5tYXhEYXRlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHR5cGVvZiBtYXhEYXRlID09PSAnYm9vbGVhbicpICYmIG1heERhdGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1heERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXhEYXRlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1heERhdGUgPT09ICdub3cnIHx8IG1heERhdGUgPT09ICdtb21lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZSA9IGdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgcGFyc2VkRGF0ZSA9IHBhcnNlSW5wdXREYXRlKG1heERhdGUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFwYXJzZWREYXRlLmlzVmFsaWQoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4RGF0ZSgpIENvdWxkIG5vdCBwYXJzZSBkYXRlIHBhcmFtZXRlcjogJyArIG1heERhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1pbkRhdGUgJiYgcGFyc2VkRGF0ZS5pc0JlZm9yZShvcHRpb25zLm1pbkRhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXhEYXRlKCkgZGF0ZSBwYXJhbWV0ZXIgaXMgYmVmb3JlIG9wdGlvbnMubWluRGF0ZTogJyArIHBhcnNlZERhdGUuZm9ybWF0KGFjdHVhbEZvcm1hdCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMubWF4RGF0ZSA9IHBhcnNlZERhdGU7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQgJiYgZGF0ZS5pc0FmdGVyKG1heERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShvcHRpb25zLm1heERhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2aWV3RGF0ZS5pc0FmdGVyKHBhcnNlZERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICB2aWV3RGF0ZSA9IHBhcnNlZERhdGUuY2xvbmUoKS5zdWJ0cmFjdChvcHRpb25zLnN0ZXBwaW5nLCAnbScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5taW5EYXRlID0gZnVuY3Rpb24gKG1pbkRhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm1pbkRhdGUgPyBvcHRpb25zLm1pbkRhdGUuY2xvbmUoKSA6IG9wdGlvbnMubWluRGF0ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCh0eXBlb2YgbWluRGF0ZSA9PT0gJ2Jvb2xlYW4nKSAmJiBtaW5EYXRlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5taW5EYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWluRGF0ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGlmIChtaW5EYXRlID09PSAnbm93JyB8fCBtaW5EYXRlID09PSAnbW9tZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbkRhdGUgPSBnZXRNb21lbnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZShtaW5EYXRlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghcGFyc2VkRGF0ZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbkRhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICcgKyBtaW5EYXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tYXhEYXRlICYmIHBhcnNlZERhdGUuaXNBZnRlcihvcHRpb25zLm1heERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW5EYXRlKCkgZGF0ZSBwYXJhbWV0ZXIgaXMgYWZ0ZXIgb3B0aW9ucy5tYXhEYXRlOiAnICsgcGFyc2VkRGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy5taW5EYXRlID0gcGFyc2VkRGF0ZTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlQ3VycmVudCAmJiAhb3B0aW9ucy5rZWVwSW52YWxpZCAmJiBkYXRlLmlzQmVmb3JlKG1pbkRhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShvcHRpb25zLm1pbkRhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2aWV3RGF0ZS5pc0JlZm9yZShwYXJzZWREYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgdmlld0RhdGUgPSBwYXJzZWREYXRlLmNsb25lKCkuYWRkKG9wdGlvbnMuc3RlcHBpbmcsICdtJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmRlZmF1bHREYXRlID0gZnVuY3Rpb24gKGRlZmF1bHREYXRlKSB7XHJcbiAgICAgICAgICAgIC8vLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHREYXRlXCI+XHJcbiAgICAgICAgICAgIC8vLzxzdW1tYXJ5PlJldHVybnMgYSBtb21lbnQgd2l0aCB0aGUgb3B0aW9ucy5kZWZhdWx0RGF0ZSBvcHRpb24gY29uZmlndXJhdGlvbiBvciBmYWxzZSBpZiBub3Qgc2V0PC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPVwiTW9tZW50XCI+ZGF0ZS5jbG9uZSgpPC9yZXR1cm5zPlxyXG4gICAgICAgICAgICAvLy88L3NpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+V2lsbCBzZXQgdGhlIHBpY2tlcidzIGluaXRhbCBkYXRlLiBJZiBhIGJvb2xlYW46ZmFsc2UgdmFsdWUgaXMgcGFzc2VkIHRoZSBvcHRpb25zLmRlZmF1bHREYXRlIHBhcmFtZXRlciBpcyBjbGVhcmVkLjwvc3VtbWFyeT5cclxuICAgICAgICAgICAgLy8vPHBhcmFtIG5hbWU9XCJkZWZhdWx0RGF0ZVwiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kZWZhdWx0RGF0ZV9wOmRlZmF1bHREYXRlXCI+VGFrZXMgYSBzdHJpbmcsIERhdGUsIG1vbWVudCwgYm9vbGVhbjpmYWxzZTwvcGFyYW0+XHJcbiAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPlxyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGVmYXVsdERhdGUgPyBvcHRpb25zLmRlZmF1bHREYXRlLmNsb25lKCkgOiBvcHRpb25zLmRlZmF1bHREYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGVmYXVsdERhdGUpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZGVmYXVsdERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdERhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERhdGUgPT09ICdub3cnIHx8IGRlZmF1bHREYXRlID09PSAnbW9tZW50Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYXRlID0gZ2V0TW9tZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYXRlID0gZ2V0TW9tZW50KGRlZmF1bHREYXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZShkZWZhdWx0RGF0ZSk7XHJcbiAgICAgICAgICAgIGlmICghcGFyc2VkRGF0ZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlZmF1bHREYXRlKCkgQ291bGQgbm90IHBhcnNlIGRhdGUgcGFyYW1ldGVyOiAnICsgZGVmYXVsdERhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaXNWYWxpZChwYXJzZWREYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGVmYXVsdERhdGUoKSBkYXRlIHBhc3NlZCBpcyBpbnZhbGlkIGFjY29yZGluZyB0byBjb21wb25lbnQgc2V0dXAgdmFsaWRhdGlvbnMnKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0RGF0ZSA9IHBhcnNlZERhdGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoKG9wdGlvbnMuZGVmYXVsdERhdGUgJiYgb3B0aW9ucy5pbmxpbmUpIHx8IGlucHV0LnZhbCgpLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHNldFZhbHVlKG9wdGlvbnMuZGVmYXVsdERhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmxvY2FsZSA9IGZ1bmN0aW9uIChsb2NhbGUpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmxvY2FsZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFtb21lbnQubG9jYWxlRGF0YShsb2NhbGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdsb2NhbGUoKSBsb2NhbGUgJyArIGxvY2FsZSArICcgaXMgbm90IGxvYWRlZCBmcm9tIG1vbWVudCBsb2NhbGVzIScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZTtcclxuICAgICAgICAgICAgZGF0ZS5sb2NhbGUob3B0aW9ucy5sb2NhbGUpO1xyXG4gICAgICAgICAgICB2aWV3RGF0ZS5sb2NhbGUob3B0aW9ucy5sb2NhbGUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdHVhbEZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTsgLy8gcmVpbml0IGZvcm1hdHRpbmdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBzaG93KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuc3RlcHBpbmcgPSBmdW5jdGlvbiAoc3RlcHBpbmcpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnN0ZXBwaW5nO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdGVwcGluZyA9IHBhcnNlSW50KHN0ZXBwaW5nLCAxMCk7XHJcbiAgICAgICAgICAgIGlmIChpc05hTihzdGVwcGluZykgfHwgc3RlcHBpbmcgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICBzdGVwcGluZyA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy5zdGVwcGluZyA9IHN0ZXBwaW5nO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci51c2VDdXJyZW50ID0gZnVuY3Rpb24gKHVzZUN1cnJlbnQpIHtcclxuICAgICAgICAgICAgdmFyIHVzZUN1cnJlbnRPcHRpb25zID0gWyd5ZWFyJywgJ21vbnRoJywgJ2RheScsICdob3VyJywgJ21pbnV0ZSddO1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMudXNlQ3VycmVudDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCh0eXBlb2YgdXNlQ3VycmVudCAhPT0gJ2Jvb2xlYW4nKSAmJiAodHlwZW9mIHVzZUN1cnJlbnQgIT09ICdzdHJpbmcnKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndXNlQ3VycmVudCgpIGV4cGVjdHMgYSBib29sZWFuIG9yIHN0cmluZyBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHVzZUN1cnJlbnQgPT09ICdzdHJpbmcnICYmIHVzZUN1cnJlbnRPcHRpb25zLmluZGV4T2YodXNlQ3VycmVudC50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VzZUN1cnJlbnQoKSBleHBlY3RzIGEgc3RyaW5nIHBhcmFtZXRlciBvZiAnICsgdXNlQ3VycmVudE9wdGlvbnMuam9pbignLCAnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy51c2VDdXJyZW50ID0gdXNlQ3VycmVudDtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuY29sbGFwc2UgPSBmdW5jdGlvbiAoY29sbGFwc2UpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbGxhcHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbGxhcHNlICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbGxhcHNlKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29sbGFwc2UgPT09IGNvbGxhcHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuY29sbGFwc2UgPSBjb2xsYXBzZTtcclxuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmljb25zID0gZnVuY3Rpb24gKGljb25zKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIG9wdGlvbnMuaWNvbnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIShpY29ucyBpbnN0YW5jZW9mIE9iamVjdCkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ljb25zKCkgZXhwZWN0cyBwYXJhbWV0ZXIgdG8gYmUgYW4gT2JqZWN0Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJC5leHRlbmQob3B0aW9ucy5pY29ucywgaWNvbnMpO1xyXG4gICAgICAgICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBoaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBzaG93KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIudG9vbHRpcHMgPSBmdW5jdGlvbiAodG9vbHRpcHMpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZCh7fSwgb3B0aW9ucy50b29sdGlwcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghKHRvb2x0aXBzIGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9vbHRpcHMoKSBleHBlY3RzIHBhcmFtZXRlciB0byBiZSBhbiBPYmplY3QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkLmV4dGVuZChvcHRpb25zLnRvb2x0aXBzLCB0b29sdGlwcyk7XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHNob3coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci51c2VTdHJpY3QgPSBmdW5jdGlvbiAodXNlU3RyaWN0KSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy51c2VTdHJpY3Q7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdXNlU3RyaWN0ICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VzZVN0cmljdCgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMudXNlU3RyaWN0ID0gdXNlU3RyaWN0O1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5zaWRlQnlTaWRlID0gZnVuY3Rpb24gKHNpZGVCeVNpZGUpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnNpZGVCeVNpZGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2lkZUJ5U2lkZSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaWRlQnlTaWRlKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy5zaWRlQnlTaWRlID0gc2lkZUJ5U2lkZTtcclxuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLnZpZXdNb2RlID0gZnVuY3Rpb24gKHZpZXdNb2RlKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy52aWV3TW9kZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2aWV3TW9kZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZpZXdNb2RlKCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZpZXdNb2Rlcy5pbmRleE9mKHZpZXdNb2RlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZpZXdNb2RlKCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mICgnICsgdmlld01vZGVzLmpvaW4oJywgJykgKyAnKSB2YWx1ZScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLnZpZXdNb2RlID0gdmlld01vZGU7XHJcbiAgICAgICAgICAgIGN1cnJlbnRWaWV3TW9kZSA9IE1hdGgubWF4KHZpZXdNb2Rlcy5pbmRleE9mKHZpZXdNb2RlKSwgbWluVmlld01vZGVOdW1iZXIpO1xyXG5cclxuICAgICAgICAgICAgc2hvd01vZGUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIudG9vbGJhclBsYWNlbWVudCA9IGZ1bmN0aW9uICh0b29sYmFyUGxhY2VtZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy50b29sYmFyUGxhY2VtZW50O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRvb2xiYXJQbGFjZW1lbnQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b29sYmFyUGxhY2VtZW50KCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodG9vbGJhclBsYWNlbWVudHMuaW5kZXhPZih0b29sYmFyUGxhY2VtZW50KSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Rvb2xiYXJQbGFjZW1lbnQoKSBwYXJhbWV0ZXIgbXVzdCBiZSBvbmUgb2YgKCcgKyB0b29sYmFyUGxhY2VtZW50cy5qb2luKCcsICcpICsgJykgdmFsdWUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcHRpb25zLnRvb2xiYXJQbGFjZW1lbnQgPSB0b29sYmFyUGxhY2VtZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLndpZGdldFBvc2l0aW9uaW5nID0gZnVuY3Rpb24gKHdpZGdldFBvc2l0aW9uaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIG9wdGlvbnMud2lkZ2V0UG9zaXRpb25pbmcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKHt9KS50b1N0cmluZy5jYWxsKHdpZGdldFBvc2l0aW9uaW5nKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgZXhwZWN0cyBhbiBvYmplY3QgdmFyaWFibGUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAod2lkZ2V0UG9zaXRpb25pbmcuaG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgaG9yaXpvbnRhbCB2YXJpYWJsZSBtdXN0IGJlIGEgc3RyaW5nJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsID0gd2lkZ2V0UG9zaXRpb25pbmcuaG9yaXpvbnRhbC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhvcml6b250YWxNb2Rlcy5pbmRleE9mKHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgZXhwZWN0cyBob3Jpem9udGFsIHBhcmFtZXRlciB0byBiZSBvbmUgb2YgKCcgKyBob3Jpem9udGFsTW9kZXMuam9pbignLCAnKSArICcpJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgPSB3aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd3aWRnZXRQb3NpdGlvbmluZygpIHZlcnRpY2FsIHZhcmlhYmxlIG11c3QgYmUgYSBzdHJpbmcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsID0gd2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbE1vZGVzLmluZGV4T2Yod2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWwpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgZXhwZWN0cyB2ZXJ0aWNhbCBwYXJhbWV0ZXIgdG8gYmUgb25lIG9mICgnICsgdmVydGljYWxNb2Rlcy5qb2luKCcsICcpICsgJyknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG9wdGlvbnMud2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWwgPSB3aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuY2FsZW5kYXJXZWVrcyA9IGZ1bmN0aW9uIChjYWxlbmRhcldlZWtzKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5jYWxlbmRhcldlZWtzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhbGVuZGFyV2Vla3MgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsZW5kYXJXZWVrcygpIGV4cGVjdHMgcGFyYW1ldGVyIHRvIGJlIGEgYm9vbGVhbiB2YWx1ZScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLmNhbGVuZGFyV2Vla3MgPSBjYWxlbmRhcldlZWtzO1xyXG4gICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuc2hvd1RvZGF5QnV0dG9uID0gZnVuY3Rpb24gKHNob3dUb2RheUJ1dHRvbikge1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2hvd1RvZGF5QnV0dG9uO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNob3dUb2RheUJ1dHRvbiAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG93VG9kYXlCdXR0b24oKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5zaG93VG9kYXlCdXR0b24gPSBzaG93VG9kYXlCdXR0b247XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHNob3coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5zaG93Q2xlYXIgPSBmdW5jdGlvbiAoc2hvd0NsZWFyKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaG93Q2xlYXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2hvd0NsZWFyICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3dDbGVhcigpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLnNob3dDbGVhciA9IHNob3dDbGVhcjtcclxuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLndpZGdldFBhcmVudCA9IGZ1bmN0aW9uICh3aWRnZXRQYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLndpZGdldFBhcmVudDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aWRnZXRQYXJlbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICB3aWRnZXRQYXJlbnQgPSAkKHdpZGdldFBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3aWRnZXRQYXJlbnQgIT09IG51bGwgJiYgKHR5cGVvZiB3aWRnZXRQYXJlbnQgIT09ICdzdHJpbmcnICYmICEod2lkZ2V0UGFyZW50IGluc3RhbmNlb2YgJCkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd3aWRnZXRQYXJlbnQoKSBleHBlY3RzIGEgc3RyaW5nIG9yIGEgalF1ZXJ5IG9iamVjdCBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy53aWRnZXRQYXJlbnQgPSB3aWRnZXRQYXJlbnQ7XHJcbiAgICAgICAgICAgIGlmICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHNob3coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5rZWVwT3BlbiA9IGZ1bmN0aW9uIChrZWVwT3Blbikge1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMua2VlcE9wZW47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Yga2VlcE9wZW4gIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigna2VlcE9wZW4oKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5rZWVwT3BlbiA9IGtlZXBPcGVuO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5mb2N1c09uU2hvdyA9IGZ1bmN0aW9uIChmb2N1c09uU2hvdykge1xyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9jdXNPblNob3c7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZm9jdXNPblNob3cgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9jdXNPblNob3coKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5mb2N1c09uU2hvdyA9IGZvY3VzT25TaG93O1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5pbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5lKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbmxpbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5saW5lICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lubGluZSgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLmlubGluZSA9IGlubGluZTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNsZWFyKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmtleUJpbmRzID0gZnVuY3Rpb24gKGtleUJpbmRzKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5rZXlCaW5kcztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5rZXlCaW5kcyA9IGtleUJpbmRzO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5nZXRNb21lbnQgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0TW9tZW50KGQpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5kZWJ1ZyA9IGZ1bmN0aW9uIChkZWJ1Zykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlYnVnICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlYnVnKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG9wdGlvbnMuZGVidWcgPSBkZWJ1ZztcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuYWxsb3dJbnB1dFRvZ2dsZSA9IGZ1bmN0aW9uIChhbGxvd0lucHV0VG9nZ2xlKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFsbG93SW5wdXRUb2dnbGUgIT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYWxsb3dJbnB1dFRvZ2dsZSgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLmFsbG93SW5wdXRUb2dnbGUgPSBhbGxvd0lucHV0VG9nZ2xlO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5zaG93Q2xvc2UgPSBmdW5jdGlvbiAoc2hvd0Nsb3NlKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaG93Q2xvc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2hvd0Nsb3NlICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Nob3dDbG9zZSgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zLnNob3dDbG9zZSA9IHNob3dDbG9zZTtcclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIua2VlcEludmFsaWQgPSBmdW5jdGlvbiAoa2VlcEludmFsaWQpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmtlZXBJbnZhbGlkO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGtlZXBJbnZhbGlkICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2tlZXBJbnZhbGlkKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3B0aW9ucy5rZWVwSW52YWxpZCA9IGtlZXBJbnZhbGlkO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHBpY2tlci5kYXRlcGlja2VySW5wdXQgPSBmdW5jdGlvbiAoZGF0ZXBpY2tlcklucHV0KSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kYXRlcGlja2VySW5wdXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0ZXBpY2tlcklucHV0ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0ZXBpY2tlcklucHV0KCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5kYXRlcGlja2VySW5wdXQgPSBkYXRlcGlja2VySW5wdXQ7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLnBhcnNlSW5wdXREYXRlID0gZnVuY3Rpb24gKHBhcnNlSW5wdXREYXRlKSB7XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5wYXJzZUlucHV0RGF0ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJzZUlucHV0RGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyc2VJbnB1dERhdGUoKSBzaG9sdWQgYmUgYXMgZnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9ucy5wYXJzZUlucHV0RGF0ZSA9IHBhcnNlSW5wdXREYXRlO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwaWNrZXIuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzID0gZnVuY3Rpb24gKGRpc2FibGVkVGltZUludGVydmFscykge1xyXG4gICAgICAgICAgICAvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZFRpbWVJbnRlcnZhbHNcIj5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGRpc2FibGVkIGRhdGVzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5PlxyXG4gICAgICAgICAgICAvLy88cmV0dXJucyB0eXBlPVwiYXJyYXlcIj5vcHRpb25zLmRpc2FibGVkVGltZUludGVydmFsczwvcmV0dXJucz5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZlxyXG4gICAgICAgICAgICAvLy9vcHRpb25zLmVuYWJsZWREYXRlcyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT5cclxuICAgICAgICAgICAgLy8vPHBhcmFtIG5hbWU9XCJkYXRlc1wiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZFRpbWVJbnRlcnZhbHNfcDpkYXRlc1wiPlRha2VzIGFuIFsgc3RyaW5nIG9yIERhdGUgb3IgbW9tZW50IF0gb2YgdmFsdWVzIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IG9ubHkgZnJvbSB0aG9zZSBkYXlzLjwvcGFyYW0+XHJcbiAgICAgICAgICAgIC8vLzwvc2lnbmF0dXJlPlxyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscykgOiBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghKGRpc2FibGVkVGltZUludGVydmFscyBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyA9IGRpc2FibGVkVGltZUludGVydmFscztcclxuICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmRpc2FibGVkSG91cnMgPSBmdW5jdGlvbiAoaG91cnMpIHtcclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZSBoZWxwS2V5d29yZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGlzYWJsZWRIb3Vyc1wiPlxyXG4gICAgICAgICAgICAvLy88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZGlzYWJsZWQgaG91cnMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+XHJcbiAgICAgICAgICAgIC8vLzxyZXR1cm5zIHR5cGU9XCJhcnJheVwiPm9wdGlvbnMuZGlzYWJsZWRIb3VyczwvcmV0dXJucz5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzaWduYXR1cmU+XHJcbiAgICAgICAgICAgIC8vLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZlxyXG4gICAgICAgICAgICAvLy9vcHRpb25zLmVuYWJsZWRIb3VycyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT5cclxuICAgICAgICAgICAgLy8vPHBhcmFtIG5hbWU9XCJob3Vyc1wiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZEhvdXJzX3A6aG91cnNcIj5UYWtlcyBhbiBbIGludCBdIG9mIHZhbHVlcyBhbmQgZGlzYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgaG91cnMuPC9wYXJhbT5cclxuICAgICAgICAgICAgLy8vPC9zaWduYXR1cmU+XHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbnMuZGlzYWJsZWRIb3VycyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkSG91cnMpIDogb3B0aW9ucy5kaXNhYmxlZEhvdXJzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFob3Vycykge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZEhvdXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCEoaG91cnMgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Rpc2FibGVkSG91cnMoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWRIb3VycyA9IGluZGV4R2l2ZW5Ib3Vycyhob3Vycyk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHZhciB0cmllcyA9IDA7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWlzVmFsaWQoZGF0ZSwgJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUuYWRkKDEsICdoJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVzID09PSAyNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAnVHJpZWQgMjQgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0cmllcysrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGlja2VyLmVuYWJsZWRIb3VycyA9IGZ1bmN0aW9uIChob3Vycykge1xyXG4gICAgICAgICAgICAvLy88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPVwiJC5mbi5kYXRldGltZXBpY2tlci5lbmFibGVkSG91cnNcIj5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGVuYWJsZWQgaG91cnMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+XHJcbiAgICAgICAgICAgIC8vLzxyZXR1cm5zIHR5cGU9XCJhcnJheVwiPm9wdGlvbnMuZW5hYmxlZEhvdXJzPC9yZXR1cm5zPlxyXG4gICAgICAgICAgICAvLy88L3NpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHNpZ25hdHVyZT5cclxuICAgICAgICAgICAgLy8vPHN1bW1hcnk+U2V0dGluZyB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvcHRpb25zLm1pbkRhdGUsIG9wdGlvbnMubWF4RGF0ZSBjb25maWd1cmF0aW9uLiBBbHNvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIG9mIG9wdGlvbnMuZGlzYWJsZWRIb3VycyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT5cclxuICAgICAgICAgICAgLy8vPHBhcmFtIG5hbWU9XCJob3Vyc1wiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5lbmFibGVkSG91cnNfcDpob3Vyc1wiPlRha2VzIGFuIFsgaW50IF0gb2YgdmFsdWVzIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IG9ubHkgZnJvbSB0aG9zZSBob3Vycy48L3BhcmFtPlxyXG4gICAgICAgICAgICAvLy88L3NpZ25hdHVyZT5cclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9ucy5lbmFibGVkSG91cnMgPyAkLmV4dGVuZCh7fSwgb3B0aW9ucy5lbmFibGVkSG91cnMpIDogb3B0aW9ucy5lbmFibGVkSG91cnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWhvdXJzKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zLmVuYWJsZWRIb3VycyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghKGhvdXJzIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmFibGVkSG91cnMoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0gaW5kZXhHaXZlbkhvdXJzKGhvdXJzKTtcclxuICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZEhvdXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQpIHtcclxuICAgICAgICAgICAgICAgIHZhciB0cmllcyA9IDA7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWlzVmFsaWQoZGF0ZSwgJ2gnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUuYWRkKDEsICdoJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVzID09PSAyNCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAnVHJpZWQgMjQgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0cmllcysrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBSZXR1cm5zIHRoZSBjb21wb25lbnQncyBtb2RlbCBjdXJyZW50IHZpZXdEYXRlLCBhIG1vbWVudCBvYmplY3Qgb3IgbnVsbCBpZiBub3Qgc2V0LiBQYXNzaW5nIGEgbnVsbCB2YWx1ZSB1bnNldHMgdGhlIGNvbXBvbmVudHMgbW9kZWwgY3VycmVudCBtb21lbnQuIFBhcnNpbmcgb2YgdGhlIG5ld0RhdGUgcGFyYW1ldGVyIGlzIG1hZGUgdXNpbmcgbW9tZW50IGxpYnJhcnkgd2l0aCB0aGUgb3B0aW9ucy5mb3JtYXQgYW5kIG9wdGlvbnMudXNlU3RyaWN0IGNvbXBvbmVudHMgY29uZmlndXJhdGlvbi5cclxuICAgICAgICAgKiBAcGFyYW0ge1Rha2VzIHN0cmluZywgdmlld0RhdGUsIG1vbWVudCwgbnVsbCBwYXJhbWV0ZXIufSBuZXdEYXRlXHJcbiAgICAgICAgICogQHJldHVybnMge3ZpZXdEYXRlLmNsb25lKCl9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcGlja2VyLnZpZXdEYXRlID0gZnVuY3Rpb24gKG5ld0RhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3RGF0ZS5jbG9uZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIW5ld0RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHZpZXdEYXRlID0gZGF0ZS5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXdEYXRlICE9PSAnc3RyaW5nJyAmJiAhbW9tZW50LmlzTW9tZW50KG5ld0RhdGUpICYmICEobmV3RGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aWV3RGF0ZSgpIHBhcmFtZXRlciBtdXN0IGJlIG9uZSBvZiBbc3RyaW5nLCBtb21lbnQgb3IgRGF0ZV0nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmlld0RhdGUgPSBwYXJzZUlucHV0RGF0ZShuZXdEYXRlKTtcclxuICAgICAgICAgICAgdmlld1VwZGF0ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vIGluaXRpYWxpemluZyBlbGVtZW50IGFuZCBjb21wb25lbnQgYXR0cmlidXRlc1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlzKCdpbnB1dCcpKSB7XHJcbiAgICAgICAgICAgIGlucHV0ID0gZWxlbWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbnB1dCA9IGVsZW1lbnQuZmluZChvcHRpb25zLmRhdGVwaWNrZXJJbnB1dCk7XHJcbiAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGlucHV0ID0gZWxlbWVudC5maW5kKCdpbnB1dCcpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5pcygnaW5wdXQnKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDU1MgY2xhc3MgXCInICsgb3B0aW9ucy5kYXRlcGlja2VySW5wdXQgKyAnXCIgY2Fubm90IGJlIGFwcGxpZWQgdG8gbm9uIGlucHV0IGVsZW1lbnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoJ2lucHV0LWdyb3VwJykpIHtcclxuICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGVyZSBpcyBtb3JlIHRoZW4gb25lICdpbnB1dC1ncm91cC1hZGRvbicgSXNzdWUgIzQ4XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbmQoJy5kYXRlcGlja2VyYnV0dG9uJykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBlbGVtZW50LmZpbmQoJy5pbnB1dC1ncm91cC1hZGRvbicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50ID0gZWxlbWVudC5maW5kKCcuZGF0ZXBpY2tlcmJ1dHRvbicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lICYmICFpbnB1dC5pcygnaW5wdXQnKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBpbml0aWFsaXplIERhdGVUaW1lUGlja2VyIHdpdGhvdXQgYW4gaW5wdXQgZWxlbWVudCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHRzIGZvciBkYXRlIGhlcmUgbm93IGluc3RlYWQgb2YgaW4gdmFyIGRlY2xhcmF0aW9uXHJcbiAgICAgICAgZGF0ZSA9IGdldE1vbWVudCgpO1xyXG4gICAgICAgIHZpZXdEYXRlID0gZGF0ZS5jbG9uZSgpO1xyXG5cclxuICAgICAgICAkLmV4dGVuZCh0cnVlLCBvcHRpb25zLCBkYXRhVG9PcHRpb25zKCkpO1xyXG5cclxuICAgICAgICBwaWNrZXIub3B0aW9ucyhvcHRpb25zKTtcclxuXHJcbiAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTtcclxuXHJcbiAgICAgICAgYXR0YWNoRGF0ZVBpY2tlckVsZW1lbnRFdmVudHMoKTtcclxuXHJcbiAgICAgICAgaWYgKGlucHV0LnByb3AoJ2Rpc2FibGVkJykpIHtcclxuICAgICAgICAgICAgcGlja2VyLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlucHV0LmlzKCdpbnB1dCcpICYmIGlucHV0LnZhbCgpLnRyaW0oKS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgc2V0VmFsdWUocGFyc2VJbnB1dERhdGUoaW5wdXQudmFsKCkudHJpbSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZGVmYXVsdERhdGUgJiYgaW5wdXQuYXR0cigncGxhY2Vob2xkZXInKSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNldFZhbHVlKG9wdGlvbnMuZGVmYXVsdERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5pbmxpbmUpIHtcclxuICAgICAgICAgICAgc2hvdygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGlja2VyO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAqXHJcbiAgICAgKiBqUXVlcnkgcGx1Z2luIGNvbnN0cnVjdG9yIGFuZCBkZWZhdWx0cyBvYmplY3RcclxuICAgICAqXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNlZSAoaHR0cDovL2pxdWVyeS5jb20vKS5cclxuICAgICogQG5hbWUgalF1ZXJ5XHJcbiAgICAqIEBjbGFzc1xyXG4gICAgKiBTZWUgdGhlIGpRdWVyeSBMaWJyYXJ5ICAoaHR0cDovL2pxdWVyeS5jb20vKSBmb3IgZnVsbCBkZXRhaWxzLiAgVGhpcyBqdXN0XHJcbiAgICAqIGRvY3VtZW50cyB0aGUgZnVuY3Rpb24gYW5kIGNsYXNzZXMgdGhhdCBhcmUgYWRkZWQgdG8galF1ZXJ5IGJ5IHRoaXMgcGx1Zy1pbi5cclxuICAgICovXHJcbiAgICAvKipcclxuICAgICAqIFNlZSAoaHR0cDovL2pxdWVyeS5jb20vKVxyXG4gICAgICogQG5hbWUgZm5cclxuICAgICAqIEBjbGFzc1xyXG4gICAgICogU2VlIHRoZSBqUXVlcnkgTGlicmFyeSAgKGh0dHA6Ly9qcXVlcnkuY29tLykgZm9yIGZ1bGwgZGV0YWlscy4gIFRoaXMganVzdFxyXG4gICAgICogZG9jdW1lbnRzIHRoZSBmdW5jdGlvbiBhbmQgY2xhc3NlcyB0aGF0IGFyZSBhZGRlZCB0byBqUXVlcnkgYnkgdGhpcyBwbHVnLWluLlxyXG4gICAgICogQG1lbWJlck9mIGpRdWVyeVxyXG4gICAgICovXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgY29tbWVudHNcclxuICAgICAqIEBjbGFzcyBkYXRldGltZXBpY2tlclxyXG4gICAgICogQG1lbWJlck9mIGpRdWVyeS5mblxyXG4gICAgICovXHJcbiAgICAkLmZuLmRhdGV0aW1lcGlja2VyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLFxyXG4gICAgICAgICAgICBpc0luc3RhbmNlID0gdHJ1ZSxcclxuICAgICAgICAgICAgdGhpc01ldGhvZHMgPSBbJ2Rlc3Ryb3knLCAnaGlkZScsICdzaG93JywgJ3RvZ2dsZSddLFxyXG4gICAgICAgICAgICByZXR1cm5WYWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksXHJcbiAgICAgICAgICAgICAgICAgICAgX29wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBpZiAoISR0aGlzLmRhdGEoJ0RhdGVUaW1lUGlja2VyJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBwcml2YXRlIGNvcHkgb2YgdGhlIGRlZmF1bHRzIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgIF9vcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sICQuZm4uZGF0ZXRpbWVwaWNrZXIuZGVmYXVsdHMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoJ0RhdGVUaW1lUGlja2VyJywgZGF0ZVRpbWVQaWNrZXIoJHRoaXMsIF9vcHRpb25zKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlID0gJHRoaXMuZGF0YSgnRGF0ZVRpbWVQaWNrZXInKTtcclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlcihcIicgKyBvcHRpb25zICsgJ1wiKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiBlbGVtZW50IHRoYXQgaXMgbm90IHVzaW5nIERhdGVUaW1lUGlja2VyJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBpbnN0YW5jZVtvcHRpb25zXS5hcHBseShpbnN0YW5jZSwgYXJncyk7XHJcbiAgICAgICAgICAgICAgICBpc0luc3RhbmNlID0gcmV0dXJuVmFsdWUgPT09IGluc3RhbmNlO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc0luc3RhbmNlIHx8ICQuaW5BcnJheShvcHRpb25zLCB0aGlzTWV0aG9kcykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzIGZvciBEYXRlVGltZVBpY2tlcjogJyArIG9wdGlvbnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICAkLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHRzID0ge1xyXG4gICAgICAgIHRpbWVab25lOiAnJyxcclxuICAgICAgICBmb3JtYXQ6IGZhbHNlLFxyXG4gICAgICAgIGRheVZpZXdIZWFkZXJGb3JtYXQ6ICdNTU1NIFlZWVknLFxyXG4gICAgICAgIGV4dHJhRm9ybWF0czogZmFsc2UsXHJcbiAgICAgICAgc3RlcHBpbmc6IDEsXHJcbiAgICAgICAgbWluRGF0ZTogZmFsc2UsXHJcbiAgICAgICAgbWF4RGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdXNlQ3VycmVudDogdHJ1ZSxcclxuICAgICAgICBjb2xsYXBzZTogdHJ1ZSxcclxuICAgICAgICBsb2NhbGU6IG1vbWVudC5sb2NhbGUoKSxcclxuICAgICAgICBkZWZhdWx0RGF0ZTogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWREYXRlczogZmFsc2UsXHJcbiAgICAgICAgZW5hYmxlZERhdGVzOiBmYWxzZSxcclxuICAgICAgICBpY29uczoge1xyXG4gICAgICAgICAgICB0aW1lOiAnZ2x5cGhpY29uIGdseXBoaWNvbi10aW1lJyxcclxuICAgICAgICAgICAgZGF0ZTogJ2dseXBoaWNvbiBnbHlwaGljb24tY2FsZW5kYXInLFxyXG4gICAgICAgICAgICB1cDogJ2dseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi11cCcsXHJcbiAgICAgICAgICAgIGRvd246ICdnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tZG93bicsXHJcbiAgICAgICAgICAgIHByZXZpb3VzOiAnZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnQnLFxyXG4gICAgICAgICAgICBuZXh0OiAnZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0JyxcclxuICAgICAgICAgICAgdG9kYXk6ICdnbHlwaGljb24gZ2x5cGhpY29uLXNjcmVlbnNob3QnLFxyXG4gICAgICAgICAgICBjbGVhcjogJ2dseXBoaWNvbiBnbHlwaGljb24tdHJhc2gnLFxyXG4gICAgICAgICAgICBjbG9zZTogJ2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgICAgdG9kYXk6ICdHbyB0byB0b2RheScsXHJcbiAgICAgICAgICAgIGNsZWFyOiAnQ2xlYXIgc2VsZWN0aW9uJyxcclxuICAgICAgICAgICAgY2xvc2U6ICdDbG9zZSB0aGUgcGlja2VyJyxcclxuICAgICAgICAgICAgc2VsZWN0TW9udGg6ICdTZWxlY3QgTW9udGgnLFxyXG4gICAgICAgICAgICBwcmV2TW9udGg6ICdQcmV2aW91cyBNb250aCcsXHJcbiAgICAgICAgICAgIG5leHRNb250aDogJ05leHQgTW9udGgnLFxyXG4gICAgICAgICAgICBzZWxlY3RZZWFyOiAnU2VsZWN0IFllYXInLFxyXG4gICAgICAgICAgICBwcmV2WWVhcjogJ1ByZXZpb3VzIFllYXInLFxyXG4gICAgICAgICAgICBuZXh0WWVhcjogJ05leHQgWWVhcicsXHJcbiAgICAgICAgICAgIHNlbGVjdERlY2FkZTogJ1NlbGVjdCBEZWNhZGUnLFxyXG4gICAgICAgICAgICBwcmV2RGVjYWRlOiAnUHJldmlvdXMgRGVjYWRlJyxcclxuICAgICAgICAgICAgbmV4dERlY2FkZTogJ05leHQgRGVjYWRlJyxcclxuICAgICAgICAgICAgcHJldkNlbnR1cnk6ICdQcmV2aW91cyBDZW50dXJ5JyxcclxuICAgICAgICAgICAgbmV4dENlbnR1cnk6ICdOZXh0IENlbnR1cnknLFxyXG4gICAgICAgICAgICBwaWNrSG91cjogJ1BpY2sgSG91cicsXHJcbiAgICAgICAgICAgIGluY3JlbWVudEhvdXI6ICdJbmNyZW1lbnQgSG91cicsXHJcbiAgICAgICAgICAgIGRlY3JlbWVudEhvdXI6ICdEZWNyZW1lbnQgSG91cicsXHJcbiAgICAgICAgICAgIHBpY2tNaW51dGU6ICdQaWNrIE1pbnV0ZScsXHJcbiAgICAgICAgICAgIGluY3JlbWVudE1pbnV0ZTogJ0luY3JlbWVudCBNaW51dGUnLFxyXG4gICAgICAgICAgICBkZWNyZW1lbnRNaW51dGU6ICdEZWNyZW1lbnQgTWludXRlJyxcclxuICAgICAgICAgICAgcGlja1NlY29uZDogJ1BpY2sgU2Vjb25kJyxcclxuICAgICAgICAgICAgaW5jcmVtZW50U2Vjb25kOiAnSW5jcmVtZW50IFNlY29uZCcsXHJcbiAgICAgICAgICAgIGRlY3JlbWVudFNlY29uZDogJ0RlY3JlbWVudCBTZWNvbmQnLFxyXG4gICAgICAgICAgICB0b2dnbGVQZXJpb2Q6ICdUb2dnbGUgUGVyaW9kJyxcclxuICAgICAgICAgICAgc2VsZWN0VGltZTogJ1NlbGVjdCBUaW1lJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdXNlU3RyaWN0OiBmYWxzZSxcclxuICAgICAgICBzaWRlQnlTaWRlOiBmYWxzZSxcclxuICAgICAgICBkYXlzT2ZXZWVrRGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIGNhbGVuZGFyV2Vla3M6IGZhbHNlLFxyXG4gICAgICAgIHZpZXdNb2RlOiAnZGF5cycsXHJcbiAgICAgICAgdG9vbGJhclBsYWNlbWVudDogJ2RlZmF1bHQnLFxyXG4gICAgICAgIHNob3dUb2RheUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd0NsZWFyOiBmYWxzZSxcclxuICAgICAgICBzaG93Q2xvc2U6IGZhbHNlLFxyXG4gICAgICAgIHdpZGdldFBvc2l0aW9uaW5nOiB7XHJcbiAgICAgICAgICAgIGhvcml6b250YWw6ICdhdXRvJyxcclxuICAgICAgICAgICAgdmVydGljYWw6ICdhdXRvJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2lkZ2V0UGFyZW50OiBudWxsLFxyXG4gICAgICAgIGlnbm9yZVJlYWRvbmx5OiBmYWxzZSxcclxuICAgICAgICBrZWVwT3BlbjogZmFsc2UsXHJcbiAgICAgICAgZm9jdXNPblNob3c6IHRydWUsXHJcbiAgICAgICAgaW5saW5lOiBmYWxzZSxcclxuICAgICAgICBrZWVwSW52YWxpZDogZmFsc2UsXHJcbiAgICAgICAgZGF0ZXBpY2tlcklucHV0OiAnLmRhdGVwaWNrZXJpbnB1dCcsXHJcbiAgICAgICAga2V5QmluZHM6IHtcclxuICAgICAgICAgICAgdXA6IGZ1bmN0aW9uICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5zdWJ0cmFjdCg3LCAnZCcpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQodGhpcy5zdGVwcGluZygpLCAnbScpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZG93bjogZnVuY3Rpb24gKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5jbG9uZSgpLmFkZCg3LCAnZCcpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5zdWJ0cmFjdCh0aGlzLnN0ZXBwaW5nKCksICdtJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAnY29udHJvbCB1cCc6IGZ1bmN0aW9uICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5zdWJ0cmFjdCgxLCAneScpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ2gnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICdjb250cm9sIGRvd24nOiBmdW5jdGlvbiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcclxuICAgICAgICAgICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZpc2libGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuYWRkKDEsICd5JykpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5jbG9uZSgpLnN1YnRyYWN0KDEsICdoJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBsZWZ0OiBmdW5jdGlvbiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcclxuICAgICAgICAgICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZpc2libGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ2QnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJpZ2h0OiBmdW5jdGlvbiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcclxuICAgICAgICAgICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZpc2libGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuYWRkKDEsICdkJykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwYWdlVXA6IGZ1bmN0aW9uICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5zdWJ0cmFjdCgxLCAnTScpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcGFnZURvd246IGZ1bmN0aW9uICh3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ00nKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXNjYXBlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy90YWI6IGZ1bmN0aW9uICh3aWRnZXQpIHsgLy90aGlzIGJyZWFrIHRoZSBmbG93IG9mIHRoZSBmb3JtLiBkaXNhYmxpbmcgZm9yIG5vd1xyXG4gICAgICAgICAgICAvLyAgICB2YXIgdG9nZ2xlID0gd2lkZ2V0LmZpbmQoJy5waWNrZXItc3dpdGNoIGFbZGF0YS1hY3Rpb249XCJ0b2dnbGVQaWNrZXJcIl0nKTtcclxuICAgICAgICAgICAgLy8gICAgaWYodG9nZ2xlLmxlbmd0aCA+IDApIHRvZ2dsZS5jbGljaygpO1xyXG4gICAgICAgICAgICAvL30sXHJcbiAgICAgICAgICAgICdjb250cm9sIHNwYWNlJzogZnVuY3Rpb24gKHdpZGdldCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLmJ0bltkYXRhLWFjdGlvbj1cInRvZ2dsZVBlcmlvZFwiXScpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSh0aGlzLmdldE1vbWVudCgpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVidWc6IGZhbHNlLFxyXG4gICAgICAgIGFsbG93SW5wdXRUb2dnbGU6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkVGltZUludGVydmFsczogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWRIb3VyczogZmFsc2UsXHJcbiAgICAgICAgZW5hYmxlZEhvdXJzOiBmYWxzZSxcclxuICAgICAgICB2aWV3RGF0ZTogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuICQuZm4uZGF0ZXRpbWVwaWNrZXI7XHJcbn0pKTtcclxuXG59LmNhbGwod2luZG93LCBmYWxzZSwgZmFsc2UpKTtcbiIsIi8qISBKZXRzLmpzIC0gdjAuMTEuMCAtIDIwMTYtMDctMzBcclxuKiBodHRwOi8vTmVYVHMuZ2l0aHViLmNvbS9KZXRzLmpzL1xyXG4qIENvcHlyaWdodCAoYykgMjAxNSBEZW5pcyBMdWtvdjsgTGljZW5zZWQgTUlUICovXHJcblxyXG47KGZ1bmN0aW9uKHJvb3QsIGRlZmluaXRpb24pIHtcclxuICBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykgbW9kdWxlLmV4cG9ydHMgPSBkZWZpbml0aW9uKCk7XHJcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnKSBkZWZpbmUoZGVmaW5pdGlvbik7XHJcbiAgZWxzZSByb290WydKZXRzJ10gPSBkZWZpbml0aW9uKCk7XHJcbn0odGhpcywgZnVuY3Rpb24oKSB7XHJcbiAgXCJ1c2Ugc3RyaWN0XCJcclxuXHJcbiAgZnVuY3Rpb24gSmV0cyhvcHRzKSB7XHJcbiAgICBpZiggISAodGhpcyBpbnN0YW5jZW9mIEpldHMpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgSmV0cyhvcHRzKTtcclxuICAgIH1cclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgIFsnc2VhcmNoVGFnJywgJ2NvbnRlbnRUYWcnXS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtKSB7XHJcbiAgICAgIHZhciBuYW1lID0gcGFyYW0ucmVwbGFjZSgnVGFnJywgJycpLFxyXG4gICAgICAgIHF1ZXJ5TWV0aG9kID0gJ3F1ZXJ5U2VsZWN0b3InICsgKHBhcmFtID09ICdjb250ZW50VGFnJyA/ICdBbGwnIDogJycpO1xyXG4gICAgICBzZWxmW25hbWUgKyAnX3RhZyddID0gZG9jdW1lbnRbcXVlcnlNZXRob2RdKG9wdHNbcGFyYW1dKTtcclxuICAgICAgc2VsZltuYW1lICsgJ19wYXJhbSddID0gb3B0c1twYXJhbV07XHJcbiAgICAgIGlmKCAhIHNlbGZbbmFtZSArICdfdGFnJ10pIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yISBDb3VsZCBub3QgZmluZCAnICsgcGFyYW0gKyAnIGVsZW1lbnQnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGRlZmF1bHRzID0ge1xyXG4gICAgICBzZWFyY2hTZWxlY3RvcjogJypBTkQnLFxyXG4gICAgICBoaWRlQnk6ICdkaXNwbGF5Om5vbmUnLFxyXG4gICAgICBkaWFjcml0aWNzTWFwOiB7fVxyXG4gICAgfVxyXG5cclxuICAgIHNlbGYub3B0aW9ucyA9IHt9O1xyXG4gICAgWydjb2x1bW5zJywgJ2FkZEltcG9ydGFudCcsICdzZWFyY2hTZWxlY3RvcicsICdoaWRlQnknLCAnbWFudWFsQ29udGVudEhhbmRsaW5nJywgJ2NhbGxTZWFyY2hNYW51YWxseScsICdkaWFjcml0aWNzTWFwJywgJ2RpZFNlYXJjaCcsICdpbnZlcnQnXS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgICAgc2VsZi5vcHRpb25zW25hbWVdID0gb3B0c1tuYW1lXSB8fCBkZWZhdWx0c1tuYW1lXTtcclxuICAgIH0pO1xyXG4gICAgaWYodGhpcy5vcHRpb25zLnNlYXJjaFNlbGVjdG9yLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdmFyIHNlYXJjaFNlbGVjdG9yID0gc2VsZi5vcHRpb25zWydzZWFyY2hTZWxlY3RvciddLnRyaW0oKTtcclxuICAgICAgc2VsZi5vcHRpb25zLnNlYXJjaFNlbGVjdG9yID0gc2VhcmNoU2VsZWN0b3Iuc3Vic3RyKDAsIDEpO1xyXG4gICAgICBzZWxmLm9wdGlvbnMuc2VhcmNoU2VsZWN0b3JNb2RlID0gc2VhcmNoU2VsZWN0b3Iuc3Vic3RyKDEpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGxhc3Rfc2VhcmNoX3F1ZXJ5O1xyXG4gICAgc2VsZi5zZWFyY2ggPSBmdW5jdGlvbigpIHtcclxuICAgICAgaWYobGFzdF9zZWFyY2hfcXVlcnkgPT0gKGxhc3Rfc2VhcmNoX3F1ZXJ5ID0gc2VsZi5zZWFyY2hfdGFnLnZhbHVlKSkgcmV0dXJuO1xyXG4gICAgICBzZWxmLl9hcHBseUNTUygpO1xyXG4gICAgICBzZWxmLm9wdGlvbnMuZGlkU2VhcmNoICYmIHNlbGYub3B0aW9ucy5kaWRTZWFyY2goc2VsZi5zZWFyY2hfdGFnLnZhbHVlKTtcclxuICAgIH07XHJcbiAgICBzZWxmLl9vblNlYXJjaCA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgIGlmKGV2ZW50LnR5cGUgPT0gJ2tleWRvd24nKVxyXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHNlbGYuc2VhcmNoLCAwKTtcclxuICAgICAgc2VsZi5zZWFyY2goKTtcclxuICAgIH07XHJcbiAgICBzZWxmLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcclxuICAgICAgaWYoICEgc2VsZi5vcHRpb25zLmNhbGxTZWFyY2hNYW51YWxseSkgc2VsZi5fcHJvY2Vzc0V2ZW50TGlzdGVuZXJzKCdyZW1vdmUnKTtcclxuICAgICAgc2VsZi5fZGVzdHJveSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiggISBzZWxmLm9wdGlvbnMuY2FsbFNlYXJjaE1hbnVhbGx5KSBzZWxmLl9wcm9jZXNzRXZlbnRMaXN0ZW5lcnMoJ2FkZCcpO1xyXG4gICAgc2VsZi5fYWRkU3R5bGVUYWcoKTtcclxuICAgIHNlbGYuX3NldEpldHMoKTtcclxuICAgIHNlbGYuX2FwcGx5Q1NTKCk7XHJcbiAgfVxyXG5cclxuICBKZXRzLnByb3RvdHlwZSA9IHtcclxuICAgIGNvbnN0cnVjdG9yOiBKZXRzLFxyXG4gICAgX3Byb2Nlc3NFdmVudExpc3RlbmVyczogZnVuY3Rpb24oYWN0aW9uKSB7XHJcbiAgICAgIFsnaW5wdXQnLCAna2V5ZG93bicsICdjaGFuZ2UnXS5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50X3R5cGUpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaF90YWdbYWN0aW9uICsgJ0V2ZW50TGlzdGVuZXInXShldmVudF90eXBlLCB0aGlzLl9vblNlYXJjaCk7XHJcbiAgICAgIH0uYmluZCh0aGlzKSk7XHJcbiAgICB9LFxyXG4gICAgX2FwcGx5Q1NTOiBmdW5jdGlvbigpIHtcclxuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXHJcbiAgICAgICAgc2VhcmNoX3BocmFzZSA9IHRoaXMucmVwbGFjZURpYWNyaXRpY3ModGhpcy5zZWFyY2hfdGFnLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcc1xccysvZywgJyAnKSkucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKSxcclxuICAgICAgICB3b3JkcyA9IG9wdGlvbnMuc2VhcmNoU2VsZWN0b3JNb2RlXHJcbiAgICAgICAgICA/IHNlYXJjaF9waHJhc2Uuc3BsaXQoJyAnKS5maWx0ZXIoZnVuY3Rpb24oaXRlbSwgcG9zLCBhcnIpIHsgcmV0dXJuIGFyci5pbmRleE9mKGl0ZW0pID09IHBvczsgfSlcclxuICAgICAgICAgIDogW3NlYXJjaF9waHJhc2VdLFxyXG4gICAgICAgIGlzX3N0cmljdF9zZWxlY3RvciA9IG9wdGlvbnMuc2VhcmNoU2VsZWN0b3JNb2RlID09ICdBTkQnLFxyXG4gICAgICAgIHNlbGVjdG9ycyA9IFtdO1xyXG4gICAgICBmb3IodmFyIGkgPSAwLCBpaSA9IHdvcmRzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcclxuICAgICAgICBzZWxlY3RvcnMucHVzaCgoaXNfc3RyaWN0X3NlbGVjdG9yID8gdGhpcy5jb250ZW50X3BhcmFtICsgJz4nIDogJycpICsgKG9wdGlvbnMuaW52ZXJ0ID8gJycgOiAnOm5vdCgnKSArICdbZGF0YS1qZXRzJyArXHJcbiAgICAgICAgICBvcHRpb25zLnNlYXJjaFNlbGVjdG9yICsgJz1cIicgKyB3b3Jkc1tpXSArICdcIl0nICsgKG9wdGlvbnMuaW52ZXJ0ID8gJycgOiAnKScpKTtcclxuICAgICAgfVxyXG4gICAgICB2YXIgaGlkZV9ydWxlcyA9IG9wdGlvbnMuaGlkZUJ5LnNwbGl0KCc7JykuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbihydWxlKSB7IHJldHVybiBydWxlICsgKG9wdGlvbnMuYWRkSW1wb3J0YW50ID8gJyFpbXBvcnRhbnQnIDogJycpIH0pO1xyXG4gICAgICB2YXIgY3NzX3J1bGUgPSAoaXNfc3RyaWN0X3NlbGVjdG9yID8gJycgOiB0aGlzLmNvbnRlbnRfcGFyYW0gKyAnPicpICsgc2VsZWN0b3JzLmpvaW4oaXNfc3RyaWN0X3NlbGVjdG9yID8gJywnIDogJycpICsgJ3snICsgaGlkZV9ydWxlcy5qb2luKCc7JykgKyAnfSc7XHJcbiAgICAgIHRoaXMuc3R5bGVUYWcuaW5uZXJIVE1MID0gc2VhcmNoX3BocmFzZS5sZW5ndGggPyBjc3NfcnVsZSA6ICcnO1xyXG4gICAgfSxcclxuICAgIF9hZGRTdHlsZVRhZzogZnVuY3Rpb24oKSB7XHJcbiAgICAgIHRoaXMuc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuc3R5bGVUYWcpO1xyXG4gICAgfSxcclxuICAgIF9nZXRUZXh0OiBmdW5jdGlvbih0YWcpIHtcclxuICAgICAgcmV0dXJuIHRhZyAmJiAodGFnLnRleHRDb250ZW50IHx8IHRhZy5pbm5lclRleHQpIHx8ICcnO1xyXG4gICAgfSxcclxuICAgIF9nZXRDb250ZW50VGFnczogZnVuY3Rpb24ocXVlcnkpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuY29udGVudF90YWcpLnJlZHVjZShmdW5jdGlvbihhbGwsIGVsZW0pIHtcclxuICAgICAgICByZXR1cm4gYWxsLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnkgfHwgJzpzY29wZSA+IConKSkpO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICB9LFxyXG4gICAgX3NldEpldHM6IGZ1bmN0aW9uKHF1ZXJ5LCBmb3JjZSkge1xyXG4gICAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdGFncyA9IHNlbGYuX2dldENvbnRlbnRUYWdzKGZvcmNlID8gJycgOiBxdWVyeSksIHRleHQ7XHJcbiAgICAgIGZvcih2YXIgaSA9IDAsIHRhZzsgdGFnID0gdGFnc1tpXTsgaSsrKSB7XHJcbiAgICAgICAgaWYodGFnLmhhc0F0dHJpYnV0ZSgnZGF0YS1qZXRzJykgJiYgISBmb3JjZSkgY29udGludWU7XHJcbiAgICAgICAgdGV4dCA9IHRoaXMub3B0aW9ucy5tYW51YWxDb250ZW50SGFuZGxpbmdcclxuICAgICAgICAgID8gdGhpcy5vcHRpb25zLm1hbnVhbENvbnRlbnRIYW5kbGluZyh0YWcpXHJcbiAgICAgICAgICA6IHNlbGYub3B0aW9ucy5jb2x1bW5zICYmIHNlbGYub3B0aW9ucy5jb2x1bW5zLmxlbmd0aFxyXG4gICAgICAgICAgICA/IHNlbGYub3B0aW9ucy5jb2x1bW5zLm1hcChmdW5jdGlvbihjb2x1bW4pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRUZXh0KHRhZy5jaGlsZHJlbltjb2x1bW5dKTtcclxuICAgICAgICAgICAgICB9KS5qb2luKCcgJylcclxuICAgICAgICAgICAgOiBzZWxmLl9nZXRUZXh0KHRhZyk7XHJcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1qZXRzJywgc2VsZi5yZXBsYWNlRGlhY3JpdGljcyh0ZXh0LnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJykudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICB9O1xyXG4gICAgfSxcclxuICAgIHJlcGxhY2VEaWFjcml0aWNzOiBmdW5jdGlvbih0ZXh0KSB7XHJcbiAgICAgIHZhciBkaWFjcml0aWNzID0gdGhpcy5vcHRpb25zLmRpYWNyaXRpY3NNYXA7XHJcbiAgICAgIGZvcih2YXIgbGV0dGVyIGluIGRpYWNyaXRpY3MpIGlmKGRpYWNyaXRpY3MuaGFzT3duUHJvcGVydHkobGV0dGVyKSkge1xyXG4gICAgICAgIGZvcih2YXIgaSA9IDAsIGlpID0gZGlhY3JpdGljc1tsZXR0ZXJdLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcclxuICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChkaWFjcml0aWNzW2xldHRlcl1baV0sICdnJyksIGxldHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZTogZnVuY3Rpb24oZm9yY2UpIHtcclxuICAgICAgdGhpcy5fc2V0SmV0cygnOnNjb3BlID4gOm5vdChbZGF0YS1qZXRzXSknLCBmb3JjZSk7XHJcbiAgICB9LFxyXG4gICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xyXG4gICAgICB0aGlzLnN0eWxlVGFnLnBhcmVudE5vZGUgJiYgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlVGFnKTtcclxuICAgICAgdmFyIHRhZ3MgPSB0aGlzLl9nZXRDb250ZW50VGFncygpO1xyXG4gICAgICBmb3IodmFyIGkgPSAwLCB0YWc7IHRhZyA9IHRhZ3NbaV07IGkrKykge1xyXG4gICAgICAgIHRhZy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtamV0cycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyA6c2NvcGUgcG9seWZpbGxcclxuICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNzk4OTgwMy8xMjIxMDgyXHJcbiAgOyhmdW5jdGlvbihkb2MsIHByb3RvKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBkb2MucXVlcnlTZWxlY3RvcignOnNjb3BlIGJvZHknKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBbJ3F1ZXJ5U2VsZWN0b3InLCAncXVlcnlTZWxlY3RvckFsbCddLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XHJcbiAgICAgICAgdmFyIG5hdGl2ID0gcHJvdG9bbWV0aG9kXTtcclxuICAgICAgICBwcm90b1ttZXRob2RdID0gZnVuY3Rpb24oc2VsZWN0b3JzKSB7XHJcbiAgICAgICAgICBpZiAoLyhefCwpXFxzKjpzY29wZS8udGVzdChzZWxlY3RvcnMpKSB7XHJcbiAgICAgICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaWQgPSAnSURfJyArIERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9ycy5yZXBsYWNlKC8oKF58LClcXHMqKTpzY29wZS9nLCAnJDEjJyArIHRoaXMuaWQpO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZG9jW21ldGhvZF0oc2VsZWN0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5hdGl2LmNhbGwodGhpcywgc2VsZWN0b3JzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0pKHdpbmRvdy5kb2N1bWVudCwgRWxlbWVudC5wcm90b3R5cGUpO1xyXG5cclxuICByZXR1cm4gSmV0cztcclxufSkpO1xyXG4iLCIvKiFcbiAgU2VyaWFsaXplSlNPTiBqUXVlcnkgcGx1Z2luLlxuICBodHRwczovL2dpdGh1Yi5jb20vbWFyaW9penF1aWVyZG8vanF1ZXJ5LnNlcmlhbGl6ZUpTT05cbiAgdmVyc2lvbiAzLjIuMCAoRGVjLCAyMDIwKVxuXG4gIENvcHlyaWdodCAoYykgMjAxMi0yMDIxIE1hcmlvIEl6cXVpZXJkb1xuICBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKVxuICBhbmQgR1BMIChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2dwbC1saWNlbnNlLnBocCkgbGljZW5zZXMuXG4qL1xuKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgbW9kdWxlICovXG4gICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7IC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICAgICAgZGVmaW5lKFtcImpxdWVyeVwiXSwgZmFjdG9yeSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gXCJvYmplY3RcIikgeyAvLyBOb2RlL0NvbW1vbkpTXG4gICAgICAgIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoalF1ZXJ5KTtcbiAgICB9IGVsc2UgeyAvLyBCcm93c2VyIGdsb2JhbHMgKHplcHRvIHN1cHBvcnRlZClcbiAgICAgICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5IHx8IHdpbmRvdy5aZXB0byB8fCB3aW5kb3cuJCk7IC8vIFplcHRvIHN1cHBvcnRlZCBvbiBicm93c2VycyBhcyB3ZWxsXG4gICAgfVxuXG59KGZ1bmN0aW9uICgkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICB2YXIgckNSTEYgPSAvXFxyP1xcbi9nO1xuICAgIHZhciByc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2k7XG4gICAgdmFyIHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcbiAgICB2YXIgcmNoZWNrYWJsZVR5cGUgPSAvXig/OmNoZWNrYm94fHJhZGlvKSQvaTtcblxuICAgICQuZm4uc2VyaWFsaXplSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBmID0gJC5zZXJpYWxpemVKU09OO1xuICAgICAgICB2YXIgJGZvcm0gPSB0aGlzOyAvLyBOT1RFOiB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMgaXMgbW9zdCBsaWtlbHkgYSBmb3JtLCBidXQgaXQgY291bGQgYWxzbyBiZSBhIGdyb3VwIG9mIGlucHV0c1xuICAgICAgICB2YXIgb3B0cyA9IGYuc2V0dXBPcHRzKG9wdGlvbnMpOyAvLyB2YWxpZGF0ZSBvcHRpb25zIGFuZCBhcHBseSBkZWZhdWx0c1xuICAgICAgICB2YXIgdHlwZUZ1bmN0aW9ucyA9ICQuZXh0ZW5kKHt9LCBvcHRzLmRlZmF1bHRUeXBlcywgb3B0cy5jdXN0b21UeXBlcyk7XG5cbiAgICAgICAgLy8gTWFrZSBhIGxpc3Qgd2l0aCB7bmFtZSwgdmFsdWUsIGVsfSBmb3IgZWFjaCBpbnB1dCBlbGVtZW50XG4gICAgICAgIHZhciBzZXJpYWxpemVkQXJyYXkgPSBmLnNlcmlhbGl6ZUFycmF5KCRmb3JtLCBvcHRzKTtcblxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBzZXJpYWxpemVkQXJyYXkgaW50byBhIHNlcmlhbGl6ZWRPYmplY3Qgd2l0aCBuZXN0ZWQga2V5c1xuICAgICAgICB2YXIgc2VyaWFsaXplZE9iamVjdCA9IHt9O1xuICAgICAgICAkLmVhY2goc2VyaWFsaXplZEFycmF5LCBmdW5jdGlvbiAoX2ksIG9iaikge1xuXG4gICAgICAgICAgICB2YXIgbmFtZVNhbnNUeXBlID0gb2JqLm5hbWU7XG4gICAgICAgICAgICB2YXIgdHlwZSA9ICQob2JqLmVsKS5hdHRyKFwiZGF0YS12YWx1ZS10eXBlXCIpO1xuXG4gICAgICAgICAgICBpZiAoIXR5cGUgJiYgIW9wdHMuZGlzYWJsZUNvbG9uVHlwZXMpIHsgLy8gdHJ5IGdldHRpbmcgdGhlIHR5cGUgZnJvbSB0aGUgaW5wdXQgbmFtZVxuICAgICAgICAgICAgICAgIHZhciBwID0gZi5zcGxpdFR5cGUob2JqLm5hbWUpOyAvLyBcImZvbzpzdHJpbmdcIiA9PiBbXCJmb29cIiwgXCJzdHJpbmdcIl1cbiAgICAgICAgICAgICAgICBuYW1lU2Fuc1R5cGUgPSBwWzBdO1xuICAgICAgICAgICAgICAgIHR5cGUgPSBwWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwic2tpcFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBpZ25vcmUgZmllbGRzIHdpdGggdHlwZSBza2lwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gb3B0cy5kZWZhdWx0VHlwZTsgLy8gXCJzdHJpbmdcIiBieSBkZWZhdWx0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciB0eXBlZFZhbHVlID0gZi5hcHBseVR5cGVGdW5jKG9iai5uYW1lLCBvYmoudmFsdWUsIHR5cGUsIG9iai5lbCwgdHlwZUZ1bmN0aW9ucyk7IC8vIFBhcnNlIHR5cGUgYXMgc3RyaW5nLCBudW1iZXIsIGV0Yy5cblxuICAgICAgICAgICAgaWYgKCF0eXBlZFZhbHVlICYmIGYuc2hvdWxkU2tpcEZhbHN5KG9iai5uYW1lLCBuYW1lU2Fuc1R5cGUsIHR5cGUsIG9iai5lbCwgb3B0cykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIGlnbm9yZSBmYWxzeSBpbnB1dHMgaWYgc3BlY2lmaWVkIGluIHRoZSBvcHRpb25zXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBrZXlzID0gZi5zcGxpdElucHV0TmFtZUludG9LZXlzQXJyYXkobmFtZVNhbnNUeXBlKTtcbiAgICAgICAgICAgIGYuZGVlcFNldChzZXJpYWxpemVkT2JqZWN0LCBrZXlzLCB0eXBlZFZhbHVlLCBvcHRzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVkT2JqZWN0O1xuICAgIH07XG5cbiAgICAvLyBVc2UgJC5zZXJpYWxpemVKU09OIGFzIG5hbWVzcGFjZSBmb3IgdGhlIGF1eGlsaWFyIGZ1bmN0aW9uc1xuICAgIC8vIGFuZCB0byBkZWZpbmUgZGVmYXVsdHNcbiAgICAkLnNlcmlhbGl6ZUpTT04gPSB7XG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7fSwgLy8gcmVhc3NpZ24gdG8gb3ZlcnJpZGUgb3B0aW9uIGRlZmF1bHRzIGZvciBhbGwgc2VyaWFsaXplSlNPTiBjYWxsc1xuXG4gICAgICAgIGRlZmF1bHRCYXNlT3B0aW9uczogeyAvLyBkbyBub3QgbW9kaWZ5LCB1c2UgZGVmYXVsdE9wdGlvbnMgaW5zdGVhZFxuICAgICAgICAgICAgY2hlY2tib3hVbmNoZWNrZWRWYWx1ZTogdW5kZWZpbmVkLCAvLyB0byBpbmNsdWRlIHRoYXQgdmFsdWUgZm9yIHVuY2hlY2tlZCBjaGVja2JveGVzIChpbnN0ZWFkIG9mIGlnbm9yaW5nIHRoZW0pXG4gICAgICAgICAgICB1c2VJbnRLZXlzQXNBcnJheUluZGV4OiBmYWxzZSwgLy8gbmFtZT1cImZvb1syXVwiIHZhbHVlPVwidlwiID0+IHtmb286IFtudWxsLCBudWxsLCBcInZcIl19LCBpbnN0ZWFkIG9mIHtmb286IFtcIjJcIjogXCJ2XCJdfVxuXG4gICAgICAgICAgICBza2lwRmFsc3lWYWx1ZXNGb3JUeXBlczogW10sIC8vIHNraXAgc2VyaWFsaXphdGlvbiBvZiBmYWxzeSB2YWx1ZXMgZm9yIGxpc3RlZCB2YWx1ZSB0eXBlc1xuICAgICAgICAgICAgc2tpcEZhbHN5VmFsdWVzRm9yRmllbGRzOiBbXSwgLy8gc2tpcCBzZXJpYWxpemF0aW9uIG9mIGZhbHN5IHZhbHVlcyBmb3IgbGlzdGVkIGZpZWxkIG5hbWVzXG5cbiAgICAgICAgICAgIGRpc2FibGVDb2xvblR5cGVzOiBmYWxzZSwgLy8gZG8gbm90IGludGVycHJldCBcIjp0eXBlXCIgc3VmZml4IGFzIGEgdHlwZVxuICAgICAgICAgICAgY3VzdG9tVHlwZXM6IHt9LCAvLyBleHRlbmRzIGRlZmF1bHRUeXBlc1xuICAgICAgICAgICAgZGVmYXVsdFR5cGVzOiB7XG4gICAgICAgICAgICAgICAgXCJzdHJpbmdcIjogIGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gU3RyaW5nKHN0cik7IH0sXG4gICAgICAgICAgICAgICAgXCJudW1iZXJcIjogIGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gTnVtYmVyKHN0cik7IH0sXG4gICAgICAgICAgICAgICAgXCJib29sZWFuXCI6IGZ1bmN0aW9uKHN0cikgeyB2YXIgZmFsc2VzID0gW1wiZmFsc2VcIiwgXCJudWxsXCIsIFwidW5kZWZpbmVkXCIsIFwiXCIsIFwiMFwiXTsgcmV0dXJuIGZhbHNlcy5pbmRleE9mKHN0cikgPT09IC0xOyB9LFxuICAgICAgICAgICAgICAgIFwibnVsbFwiOiAgICBmdW5jdGlvbihzdHIpIHsgdmFyIGZhbHNlcyA9IFtcImZhbHNlXCIsIFwibnVsbFwiLCBcInVuZGVmaW5lZFwiLCBcIlwiLCBcIjBcIl07IHJldHVybiBmYWxzZXMuaW5kZXhPZihzdHIpID09PSAtMSA/IHN0ciA6IG51bGw7IH0sXG4gICAgICAgICAgICAgICAgXCJhcnJheVwiOiAgIGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gSlNPTi5wYXJzZShzdHIpOyB9LFxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCI6ICBmdW5jdGlvbihzdHIpIHsgcmV0dXJuIEpTT04ucGFyc2Uoc3RyKTsgfSxcbiAgICAgICAgICAgICAgICBcInNraXBcIjogICAgbnVsbCAvLyBza2lwIGlzIGEgc3BlY2lhbCB0eXBlIHVzZWQgdG8gaWdub3JlIGZpZWxkc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlZmF1bHRUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGFuZCBzZXQgZGVmYXVsdHNcbiAgICAgICAgc2V0dXBPcHRzOiBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSBvcHRpb25zID0ge307XG4gICAgICAgICAgICB2YXIgZiA9ICQuc2VyaWFsaXplSlNPTjtcblxuICAgICAgICAgICAgLy8gVmFsaWRhdGVcbiAgICAgICAgICAgIHZhciB2YWxpZE9wdHMgPSBbXG4gICAgICAgICAgICAgICAgXCJjaGVja2JveFVuY2hlY2tlZFZhbHVlXCIsXG4gICAgICAgICAgICAgICAgXCJ1c2VJbnRLZXlzQXNBcnJheUluZGV4XCIsXG5cbiAgICAgICAgICAgICAgICBcInNraXBGYWxzeVZhbHVlc0ZvclR5cGVzXCIsXG4gICAgICAgICAgICAgICAgXCJza2lwRmFsc3lWYWx1ZXNGb3JGaWVsZHNcIixcblxuICAgICAgICAgICAgICAgIFwiZGlzYWJsZUNvbG9uVHlwZXNcIixcbiAgICAgICAgICAgICAgICBcImN1c3RvbVR5cGVzXCIsXG4gICAgICAgICAgICAgICAgXCJkZWZhdWx0VHlwZXNcIixcbiAgICAgICAgICAgICAgICBcImRlZmF1bHRUeXBlXCJcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBmb3IgKHZhciBvcHQgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICh2YWxpZE9wdHMuaW5kZXhPZihvcHQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgIEVycm9yKFwic2VyaWFsaXplSlNPTiBFUlJPUjogaW52YWxpZCBvcHRpb24gJ1wiICsgb3B0ICsgXCInLiBQbGVhc2UgdXNlIG9uZSBvZiBcIiArIHZhbGlkT3B0cy5qb2luKFwiLCBcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSGVscGVyIHRvIGdldCBvcHRpb25zIG9yIGRlZmF1bHRzXG4gICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGYuZGVmYXVsdEJhc2VPcHRpb25zLCBmLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBKdXN0IGxpa2UgalF1ZXJ5J3Mgc2VyaWFsaXplQXJyYXkgbWV0aG9kLCByZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZCB2YWx1ZS5cbiAgICAgICAgLy8gYnV0IGFsc28gaW5jbHVkZXMgdGhlIGRvbSBlbGVtZW50IChlbCkgYW5kIGlzIGhhbmRsZXMgdW5jaGVja2VkIGNoZWNrYm94ZXMgaWYgdGhlIG9wdGlvbiBvciBkYXRhIGF0dHJpYnV0ZSBhcmUgcHJvdmlkZWQuXG4gICAgICAgIHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigkZm9ybSwgb3B0cykge1xuICAgICAgICAgICAgaWYgKG9wdHMgPT0gbnVsbCkgeyBvcHRzID0ge307IH1cbiAgICAgICAgICAgIHZhciBmID0gJC5zZXJpYWxpemVKU09OO1xuXG4gICAgICAgICAgICByZXR1cm4gJGZvcm0ubWFwKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9ICQucHJvcCh0aGlzLCBcImVsZW1lbnRzXCIpOyAvLyBoYW5kbGUgcHJvcEhvb2sgXCJlbGVtZW50c1wiIHRvIGZpbHRlciBvciBhZGQgZm9ybSBlbGVtZW50c1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cyA/ICQubWFrZUFycmF5KGVsZW1lbnRzKSA6IHRoaXM7XG5cbiAgICAgICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGVsID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZTtcblxuICAgICAgICAgICAgICAgIC8vIEZpbHRlciB3aXRoIHRoZSBzdGFuZGFyZCBXM0MgcnVsZXMgZm9yIHN1Y2Nlc3NmdWwgY29udHJvbHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW50ZXJhY3QvZm9ybXMuaHRtbCNoLTE3LjEzLjJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lICYmIC8vIG11c3QgY29udGFpbiBhIG5hbWUgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICEkZWwuaXMoXCI6ZGlzYWJsZWRcIikgJiYgLy8gbXVzdCBub3QgYmUgZGlzYWJsZSAodXNlIC5pcyhcIjpkaXNhYmxlZFwiKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3JrcylcbiAgICAgICAgICAgICAgICAgICAgcnN1Ym1pdHRhYmxlLnRlc3QodGhpcy5ub2RlTmFtZSkgJiYgIXJzdWJtaXR0ZXJUeXBlcy50ZXN0KHR5cGUpICYmIC8vIG9ubHkgc2VyaWFsaXplIHN1Ym1pdHRhYmxlIGZpZWxkcyAoYW5kIG5vdCBidXR0b25zKVxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KHR5cGUpIHx8IGYuZ2V0Q2hlY2tib3hVbmNoZWNrZWRWYWx1ZSgkZWwsIG9wdHMpICE9IG51bGwpOyAvLyBza2lwIHVuY2hlY2tlZCBjaGVja2JveGVzICh1bmxlc3MgdXNpbmcgb3B0cylcblxuICAgICAgICAgICAgfSkubWFwKGZ1bmN0aW9uKF9pLCBlbCkge1xuICAgICAgICAgICAgICAgIHZhciAkZWwgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAkZWwudmFsKCk7XG4gICAgICAgICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLnR5cGU7IC8vIFwiaW5wdXRcIiwgXCJzZWxlY3RcIiwgXCJ0ZXh0YXJlYVwiLCBcImNoZWNrYm94XCIsIGV0Yy5cblxuICAgICAgICAgICAgICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmNoZWNrYWJsZVR5cGUudGVzdCh0eXBlKSAmJiAhdGhpcy5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IGYuZ2V0Q2hlY2tib3hVbmNoZWNrZWRWYWx1ZSgkZWwsIG9wdHMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQubWFwKHZhbCwgZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBlbC5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UockNSTEYsIFwiXFxyXFxuXCIpLCBlbDogZWwgfTtcbiAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IG5hbWU6IGVsLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZShyQ1JMRiwgXCJcXHJcXG5cIiksIGVsOiBlbCB9O1xuXG4gICAgICAgICAgICB9KS5nZXQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDaGVja2JveFVuY2hlY2tlZFZhbHVlOiBmdW5jdGlvbigkZWwsIG9wdHMpIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSAkZWwuYXR0cihcImRhdGEtdW5jaGVja2VkLXZhbHVlXCIpO1xuICAgICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gb3B0cy5jaGVja2JveFVuY2hlY2tlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBQYXJzZSB2YWx1ZSB3aXRoIHR5cGUgZnVuY3Rpb25cbiAgICAgICAgYXBwbHlUeXBlRnVuYzogZnVuY3Rpb24obmFtZSwgdmFsU3RyLCB0eXBlLCBlbCwgdHlwZUZ1bmN0aW9ucykge1xuICAgICAgICAgICAgdmFyIHR5cGVGdW5jID0gdHlwZUZ1bmN0aW9uc1t0eXBlXTtcbiAgICAgICAgICAgIGlmICghdHlwZUZ1bmMpIHsgLy8gcXVpY2sgZmVlZGJhY2sgdG8gdXNlciBpZiB0aGVyZSBpcyBhIHR5cG8gb3IgbWlzc2NvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZXJpYWxpemVKU09OIEVSUk9SOiBJbnZhbGlkIHR5cGUgXCIgKyB0eXBlICsgXCIgZm91bmQgaW4gaW5wdXQgbmFtZSAnXCIgKyBuYW1lICsgXCInLCBwbGVhc2UgdXNlIG9uZSBvZiBcIiArIG9iamVjdEtleXModHlwZUZ1bmN0aW9ucykuam9pbihcIiwgXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0eXBlRnVuYyh2YWxTdHIsIGVsKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBTcGxpdHMgYSBmaWVsZCBuYW1lIGludG8gdGhlIG5hbWUgYW5kIHRoZSB0eXBlLiBFeGFtcGxlczpcbiAgICAgICAgLy8gICBcImZvb1wiICAgICAgICAgICA9PiAgW1wiZm9vXCIsIFwiXCJdXG4gICAgICAgIC8vICAgXCJmb286Ym9vbGVhblwiICAgPT4gIFtcImZvb1wiLCBcImJvb2xlYW5cIl1cbiAgICAgICAgLy8gICBcImZvb1tiYXJdOm51bGxcIiA9PiAgW1wiZm9vW2Jhcl1cIiwgXCJudWxsXCJdXG4gICAgICAgIHNwbGl0VHlwZSA6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgIHZhciBwYXJ0cyA9IG5hbWUuc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHBhcnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbcGFydHMuam9pbihcIjpcIiksIHRdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW25hbWUsIFwiXCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaW5wdXQgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBpdCBoYXMgYSBmYWxzeSB2YWx1ZSxcbiAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIHRvIHNraXAgdmFsdWVzIGJ5IG5hbWUgb3IgdHlwZSwgYW5kIHRoZSBkYXRhLXNraXAtZmFsc3kgYXR0cmlidXRlLlxuICAgICAgICBzaG91bGRTa2lwRmFsc3k6IGZ1bmN0aW9uKG5hbWUsIG5hbWVTYW5zVHlwZSwgdHlwZSwgZWwsIG9wdHMpIHtcbiAgICAgICAgICAgIHZhciBza2lwRnJvbURhdGFBdHRyID0gJChlbCkuYXR0cihcImRhdGEtc2tpcC1mYWxzeVwiKTtcbiAgICAgICAgICAgIGlmIChza2lwRnJvbURhdGFBdHRyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2tpcEZyb21EYXRhQXR0ciAhPT0gXCJmYWxzZVwiOyAvLyBhbnkgdmFsdWUgaXMgdHJ1ZSwgZXhjZXB0IHRoZSBzdHJpbmcgXCJmYWxzZVwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRGb3JGaWVsZHMgPSBvcHRzLnNraXBGYWxzeVZhbHVlc0ZvckZpZWxkcztcbiAgICAgICAgICAgIGlmIChvcHRGb3JGaWVsZHMgJiYgKG9wdEZvckZpZWxkcy5pbmRleE9mKG5hbWVTYW5zVHlwZSkgIT09IC0xIHx8IG9wdEZvckZpZWxkcy5pbmRleE9mKG5hbWUpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdEZvclR5cGVzID0gb3B0cy5za2lwRmFsc3lWYWx1ZXNGb3JUeXBlcztcbiAgICAgICAgICAgIGlmIChvcHRGb3JUeXBlcyAmJiBvcHRGb3JUeXBlcy5pbmRleE9mKHR5cGUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gU3BsaXQgdGhlIGlucHV0IG5hbWUgaW4gcHJvZ3JhbWF0aWNhbGx5IHJlYWRhYmxlIGtleXMuXG4gICAgICAgIC8vIEV4YW1wbGVzOlxuICAgICAgICAvLyBcImZvb1wiICAgICAgICAgICAgICA9PiBbXCJmb29cIl1cbiAgICAgICAgLy8gXCJbZm9vXVwiICAgICAgICAgICAgPT4gW1wiZm9vXCJdXG4gICAgICAgIC8vIFwiZm9vW2lubl1bYmFyXVwiICAgID0+IFtcImZvb1wiLCBcImlublwiLCBcImJhclwiXVxuICAgICAgICAvLyBcImZvb1tpbm5bYmFyXV1cIiAgICA9PiBbXCJmb29cIiwgXCJpbm5cIiwgXCJiYXJcIl1cbiAgICAgICAgLy8gXCJmb29baW5uXVthcnJdWzBdXCIgPT4gW1wiZm9vXCIsIFwiaW5uXCIsIFwiYXJyXCIsIFwiMFwiXVxuICAgICAgICAvLyBcImFycltdW3ZhbF1cIiAgICAgICA9PiBbXCJhcnJcIiwgXCJcIiwgXCJ2YWxcIl1cbiAgICAgICAgc3BsaXRJbnB1dE5hbWVJbnRvS2V5c0FycmF5OiBmdW5jdGlvbihuYW1lV2l0aE5vVHlwZSkge1xuICAgICAgICAgICAgdmFyIGtleXMgPSBuYW1lV2l0aE5vVHlwZS5zcGxpdChcIltcIik7IC8vIHNwbGl0IHN0cmluZyBpbnRvIGFycmF5XG4gICAgICAgICAgICBrZXlzID0gJC5tYXAoa2V5cywgZnVuY3Rpb24gKGtleSkgeyByZXR1cm4ga2V5LnJlcGxhY2UoL1xcXS9nLCBcIlwiKTsgfSk7IC8vIHJlbW92ZSBjbG9zaW5nIGJyYWNrZXRzXG4gICAgICAgICAgICBpZiAoa2V5c1swXSA9PT0gXCJcIikgeyBrZXlzLnNoaWZ0KCk7IH0gLy8gZW5zdXJlIG5vIG9wZW5pbmcgYnJhY2tldCAoXCJbZm9vXVtpbm5dXCIgc2hvdWxkIGJlIHNhbWUgYXMgXCJmb29baW5uXVwiKVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gU2V0IGEgdmFsdWUgaW4gYW4gb2JqZWN0IG9yIGFycmF5LCB1c2luZyBtdWx0aXBsZSBrZXlzIHRvIHNldCBpbiBhIG5lc3RlZCBvYmplY3Qgb3IgYXJyYXkuXG4gICAgICAgIC8vIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIHNjcmlwdCwgdGhhdCBhbGxvd3Mgc2VyaWFsaXplSlNPTiB0byB1c2UgbmVzdGVkIGtleXMuXG4gICAgICAgIC8vIEV4YW1wbGVzOlxuICAgICAgICAvL1xuICAgICAgICAvLyBkZWVwU2V0KG9iaiwgW1wiZm9vXCJdLCB2KSAgICAgICAgICAgICAgIC8vIG9ialtcImZvb1wiXSA9IHZcbiAgICAgICAgLy8gZGVlcFNldChvYmosIFtcImZvb1wiLCBcImlublwiXSwgdikgICAgICAgIC8vIG9ialtcImZvb1wiXVtcImlublwiXSA9IHYgLy8gQ3JlYXRlIHRoZSBpbm5lciBvYmpbXCJmb29cIl0gb2JqZWN0LCBpZiBuZWVkZWRcbiAgICAgICAgLy8gZGVlcFNldChvYmosIFtcImZvb1wiLCBcImlublwiLCBcIjEyM1wiXSwgdikgLy8gb2JqW1wiZm9vXCJdW1wiYXJyXCJdW1wiMTIzXCJdID0gdiAvL1xuICAgICAgICAvL1xuICAgICAgICAvLyBkZWVwU2V0KG9iaiwgW1wiMFwiXSwgdikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ialtcIjBcIl0gPSB2XG4gICAgICAgIC8vIGRlZXBTZXQoYXJyLCBbXCIwXCJdLCB2LCB7dXNlSW50S2V5c0FzQXJyYXlJbmRleDogdHJ1ZX0pICAgLy8gYXJyWzBdID0gdlxuICAgICAgICAvLyBkZWVwU2V0KGFyciwgW1wiXCJdLCB2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyci5wdXNoKHYpXG4gICAgICAgIC8vIGRlZXBTZXQob2JqLCBbXCJhcnJcIiwgXCJcIl0sIHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvYmpbXCJhcnJcIl0ucHVzaCh2KVxuICAgICAgICAvL1xuICAgICAgICAvLyBhcnIgPSBbXTtcbiAgICAgICAgLy8gZGVlcFNldChhcnIsIFtcIlwiLCB2XSAgICAgICAgICAvLyBhcnIgPT4gW3ZdXG4gICAgICAgIC8vIGRlZXBTZXQoYXJyLCBbXCJcIiwgXCJmb29cIl0sIHYpICAvLyBhcnIgPT4gW3YsIHtmb286IHZ9XVxuICAgICAgICAvLyBkZWVwU2V0KGFyciwgW1wiXCIsIFwiYmFyXCJdLCB2KSAgLy8gYXJyID0+IFt2LCB7Zm9vOiB2LCBiYXI6IHZ9XVxuICAgICAgICAvLyBkZWVwU2V0KGFyciwgW1wiXCIsIFwiYmFyXCJdLCB2KSAgLy8gYXJyID0+IFt2LCB7Zm9vOiB2LCBiYXI6IHZ9LCB7YmFyOiB2fV1cbiAgICAgICAgLy9cbiAgICAgICAgZGVlcFNldDogZnVuY3Rpb24gKG8sIGtleXMsIHZhbHVlLCBvcHRzKSB7XG4gICAgICAgICAgICBpZiAob3B0cyA9PSBudWxsKSB7IG9wdHMgPSB7fTsgfVxuICAgICAgICAgICAgdmFyIGYgPSAkLnNlcmlhbGl6ZUpTT047XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQobykpIHsgdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnRFcnJvcjogcGFyYW0gJ28nIGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCBvciBhcnJheSwgZm91bmQgdW5kZWZpbmVkXCIpOyB9XG4gICAgICAgICAgICBpZiAoIWtleXMgfHwga2V5cy5sZW5ndGggPT09IDApIHsgdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnRFcnJvcjogcGFyYW0gJ2tleXMnIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5IHdpdGggbGVhc3Qgb25lIGVsZW1lbnRcIik7IH1cblxuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbMF07XG5cbiAgICAgICAgICAgIC8vIE9ubHkgb25lIGtleSwgdGhlbiBpdCdzIG5vdCBhIGRlZXBTZXQsIGp1c3QgYXNzaWduIHRoZSB2YWx1ZSBpbiB0aGUgb2JqZWN0IG9yIGFkZCBpdCB0byB0aGUgYXJyYXkuXG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIlwiKSB7IC8vIHB1c2ggdmFsdWVzIGludG8gYW4gYXJyYXkgKG8gbXVzdCBiZSBhbiBhcnJheSlcbiAgICAgICAgICAgICAgICAgICAgby5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvW2tleV0gPSB2YWx1ZTsgLy8ga2V5cyBjYW4gYmUgb2JqZWN0IGtleXMgKHN0cmluZ3MpIG9yIGFycmF5IGluZGV4ZXMgKG51bWJlcnMpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5leHRLZXkgPSBrZXlzWzFdOyAvLyBuZXN0ZWQga2V5XG4gICAgICAgICAgICB2YXIgdGFpbEtleXMgPSBrZXlzLnNsaWNlKDEpOyAvLyBsaXN0IG9mIGFsbCBvdGhlciBuZXN0ZWQga2V5cyAobmV4dEtleSBpcyBmaXJzdClcblxuICAgICAgICAgICAgaWYgKGtleSA9PT0gXCJcIikgeyAvLyBwdXNoIG5lc3RlZCBvYmplY3RzIGludG8gYW4gYXJyYXkgKG8gbXVzdCBiZSBhbiBhcnJheSlcbiAgICAgICAgICAgICAgICB2YXIgbGFzdElkeCA9IG8ubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFZhbCA9IG9bbGFzdElkeF07XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbGFzdCB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgYXJyYXksIGFuZCB0aGUgbmV3IGtleSBpcyBub3Qgc2V0IHlldFxuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChsYXN0VmFsKSAmJiBpc1VuZGVmaW5lZChmLmRlZXBHZXQobGFzdFZhbCwgdGFpbEtleXMpKSkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBsYXN0SWR4OyAvLyB0aGVuIHNldCB0aGUgbmV3IHZhbHVlIGFzIGEgbmV3IGF0dHJpYnV0ZSBvZiB0aGUgc2FtZSBvYmplY3RcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBsYXN0SWR4ICsgMTsgLy8gb3RoZXJ3aXNlLCBhZGQgYSBuZXcgZWxlbWVudCBpbiB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXh0S2V5ID09PSBcIlwiKSB7IC8vIFwiXCIgaXMgdXNlZCB0byBwdXNoIHZhbHVlcyBpbnRvIHRoZSBuZXN0ZWQgYXJyYXkgXCJhcnJheVtdXCJcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQob1trZXldKSB8fCAhaXNBcnJheShvW2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ba2V5XSA9IFtdOyAvLyBkZWZpbmUgKG9yIG92ZXJyaWRlKSBhcyBhcnJheSB0byBwdXNoIHZhbHVlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdHMudXNlSW50S2V5c0FzQXJyYXlJbmRleCAmJiBpc1ZhbGlkQXJyYXlJbmRleChuZXh0S2V5KSkgeyAvLyBpZiAxLCAyLCAzIC4uLiB0aGVuIHVzZSBhbiBhcnJheSwgd2hlcmUgbmV4dEtleSBpcyB0aGUgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKG9ba2V5XSkgfHwgIWlzQXJyYXkob1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb1trZXldID0gW107IC8vIGRlZmluZSAob3Igb3ZlcnJpZGUpIGFzIGFycmF5LCB0byBpbnNlcnQgdmFsdWVzIHVzaW5nIGludCBrZXlzIGFzIGFycmF5IGluZGV4ZXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5leHRLZXkgaXMgZ29pbmcgdG8gYmUgdGhlIG5lc3RlZCBvYmplY3QncyBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKG9ba2V5XSkgfHwgIWlzT2JqZWN0KG9ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ba2V5XSA9IHt9OyAvLyBkZWZpbmUgKG9yIG92ZXJyaWRlKSBhcyBvYmplY3QsIHRvIHNldCBuZXN0ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBzZXQgdGhlIGlubmVyIG9iamVjdFxuICAgICAgICAgICAgZi5kZWVwU2V0KG9ba2V5XSwgdGFpbEtleXMsIHZhbHVlLCBvcHRzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkZWVwR2V0OiBmdW5jdGlvbiAobywga2V5cykge1xuICAgICAgICAgICAgdmFyIGYgPSAkLnNlcmlhbGl6ZUpTT047XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQobykgfHwgaXNVbmRlZmluZWQoa2V5cykgfHwga2V5cy5sZW5ndGggPT09IDAgfHwgKCFpc09iamVjdChvKSAmJiAhaXNBcnJheShvKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gXCJcIikgeyAvLyBcIlwiIG1lYW5zIG5leHQgYXJyYXkgaW5kZXggKHVzZWQgYnkgZGVlcFNldClcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0YWlsS2V5cyA9IGtleXMuc2xpY2UoMSk7XG4gICAgICAgICAgICByZXR1cm4gZi5kZWVwR2V0KG9ba2V5XSwgdGFpbEtleXMpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIHBvbHlmaWxsIE9iamVjdC5rZXlzIHRvIGdldCBvcHRpb24ga2V5cyBpbiBJRTw5XG4gICAgdmFyIG9iamVjdEtleXMgPSBmdW5jdGlvbihvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrZXksIGtleXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIG9iaikgeyBrZXlzLnB1c2goa2V5KTsgfVxuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGlzT2JqZWN0ID0gICAgICAgICAgZnVuY3Rpb24ob2JqKSB7IHJldHVybiBvYmogPT09IE9iamVjdChvYmopOyB9OyAvLyB0cnVlIGZvciBPYmplY3RzIGFuZCBBcnJheXNcbiAgICB2YXIgaXNVbmRlZmluZWQgPSAgICAgICBmdW5jdGlvbihvYmopIHsgcmV0dXJuIG9iaiA9PT0gdm9pZCAwOyB9OyAvLyBzYWZlIGNoZWNrIGZvciB1bmRlZmluZWQgdmFsdWVzXG4gICAgdmFyIGlzVmFsaWRBcnJheUluZGV4ID0gZnVuY3Rpb24odmFsKSB7IHJldHVybiAvXlswLTldKyQvLnRlc3QoU3RyaW5nKHZhbCkpOyB9OyAvLyAxLDIsMyw0IC4uLiBhcmUgdmFsaWQgYXJyYXkgaW5kZXhlc1xuICAgIHZhciBpc0FycmF5ID0gICAgICAgICAgIEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24ob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiOyB9O1xufSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYWYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhZicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmllX0ZlYnJ1YXJpZV9NYWFydF9BcHJpbF9NZWlfSnVuaWVfSnVsaWVfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTXJ0X0Fwcl9NZWlfSnVuX0p1bF9BdWdfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25kYWdfTWFhbmRhZ19EaW5zZGFnX1dvZW5zZGFnX0RvbmRlcmRhZ19WcnlkYWdfU2F0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU29uX01hYV9EaW5fV29lX0Rvbl9WcnlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTb19NYV9EaV9Xb19Eb19Wcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3ZtfG5tL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXm5tJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICd2bScgOiAnVk0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdubScgOiAnTk0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVmFuZGFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tNw7RyZSBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0dpc3RlciBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhYXNdIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb29yICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZ2VsZWRlJyxcbiAgICAgICAgICAgIHMgOiAnXFwnbiBwYWFyIHNla29uZGVzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGVzJyxcbiAgICAgICAgICAgIG0gOiAnXFwnbiBtaW51dXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlJyxcbiAgICAgICAgICAgIGggOiAnXFwnbiB1dXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdXJlJyxcbiAgICAgICAgICAgIGQgOiAnXFwnbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFlJyxcbiAgICAgICAgICAgIE0gOiAnXFwnbiBtYWFuZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtYWFuZGUnLFxuICAgICAgICAgICAgeSA6ICdcXCduIGphYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTsgLy8gVGhhbmtzIHRvIEpvcmlzIFLDtmxpbmcgOiBodHRwczovL2dpdGh1Yi5jb20vamp1cGl0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1hYW5kYWcgaXMgZGllIGVlcnN0ZSBkYWcgdmFuIGRpZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gRGllIHdlZWsgd2F0IGRpZSA0ZGUgSmFudWFyaWUgYmV2YXQgaXMgZGllIGVlcnN0ZSB3ZWVrIHZhbiBkaWUgamFhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFmO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJEeiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWR6Jywge1xuICAgICAgICBtb250aHMgOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYp9it2K9f2KfYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2KPYrV/YpdirX9ir2YTYp1/Yo9ixX9iu2YVf2KzZhV/Ys9ioJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGggOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkIDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZCA6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNIDogJ9i02YfYsScsXG4gICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5IDogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckR6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJLdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWt3Jywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckt3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICcxJyxcbiAgICAgICAgJzInOiAnMicsXG4gICAgICAgICczJzogJzMnLFxuICAgICAgICAnNCc6ICc0JyxcbiAgICAgICAgJzUnOiAnNScsXG4gICAgICAgICc2JzogJzYnLFxuICAgICAgICAnNyc6ICc3JyxcbiAgICAgICAgJzgnOiAnOCcsXG4gICAgICAgICc5JzogJzknLFxuICAgICAgICAnMCc6ICcwJ1xuICAgIH0sIHBsdXJhbEZvcm0gPSBmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbiA9PT0gMCA/IDAgOiBuID09PSAxID8gMSA6IG4gPT09IDIgPyAyIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTAgPyAzIDogbiAlIDEwMCA+PSAxMSA/IDQgOiA1O1xuICAgIH0sIHBsdXJhbHMgPSB7XG4gICAgICAgIHMgOiBbJ9ij2YLZhCDZhdmGINir2KfZhtmK2KknLCAn2KvYp9mG2YrYqSDZiNin2K3Yr9ipJywgWyfYq9in2YbZitiq2KfZhicsICfYq9in2YbZitiq2YrZhiddLCAnJWQg2KvZiNin2YYnLCAnJWQg2KvYp9mG2YrYqScsICclZCDYq9in2YbZitipJ10sXG4gICAgICAgIG0gOiBbJ9ij2YLZhCDZhdmGINiv2YLZitmC2KknLCAn2K/ZgtmK2YLYqSDZiNin2K3Yr9ipJywgWyfYr9mC2YrZgtiq2KfZhicsICfYr9mC2YrZgtiq2YrZhiddLCAnJWQg2K/Zgtin2KbZgicsICclZCDYr9mC2YrZgtipJywgJyVkINiv2YLZitmC2KknXSxcbiAgICAgICAgaCA6IFsn2KPZgtmEINmF2YYg2LPYp9i52KknLCAn2LPYp9i52Kkg2YjYp9it2K/YqScsIFsn2LPYp9i52KrYp9mGJywgJ9iz2KfYudiq2YrZhiddLCAnJWQg2LPYp9i52KfYqicsICclZCDYs9in2LnYqScsICclZCDYs9in2LnYqSddLFxuICAgICAgICBkIDogWyfYo9mC2YQg2YXZhiDZitmI2YUnLCAn2YrZiNmFINmI2KfYrdivJywgWyfZitmI2YXYp9mGJywgJ9mK2YjZhdmK2YYnXSwgJyVkINij2YrYp9mFJywgJyVkINmK2YjZhdmL2KcnLCAnJWQg2YrZiNmFJ10sXG4gICAgICAgIE0gOiBbJ9ij2YLZhCDZhdmGINi02YfYsScsICfYtNmH2LEg2YjYp9it2K8nLCBbJ9i02YfYsdin2YYnLCAn2LTZh9ix2YrZhiddLCAnJWQg2KPYtNmH2LEnLCAnJWQg2LTZh9ix2KcnLCAnJWQg2LTZh9ixJ10sXG4gICAgICAgIHkgOiBbJ9ij2YLZhCDZhdmGINi52KfZhScsICfYudin2YUg2YjYp9it2K8nLCBbJ9i52KfZhdin2YYnLCAn2LnYp9mF2YrZhiddLCAnJWQg2KPYudmI2KfZhScsICclZCDYudin2YXZi9inJywgJyVkINi52KfZhSddXG4gICAgfSwgcGx1cmFsaXplID0gZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgIHZhciBmID0gcGx1cmFsRm9ybShudW1iZXIpLFxuICAgICAgICAgICAgICAgIHN0ciA9IHBsdXJhbHNbdV1bcGx1cmFsRm9ybShudW1iZXIpXTtcbiAgICAgICAgICAgIGlmIChmID09PSAyKSB7XG4gICAgICAgICAgICAgICAgc3RyID0gc3RyW3dpdGhvdXRTdWZmaXggPyAwIDogMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgICAgIH07XG4gICAgfSwgbW9udGhzID0gW1xuICAgICAgICAn2YrZhtin2YrYsScsXG4gICAgICAgICfZgdio2LHYp9mK2LEnLFxuICAgICAgICAn2YXYp9ix2LMnLFxuICAgICAgICAn2KPYqNix2YrZhCcsXG4gICAgICAgICfZhdin2YrZiCcsXG4gICAgICAgICfZitmI2YbZitmIJyxcbiAgICAgICAgJ9mK2YjZhNmK2YgnLFxuICAgICAgICAn2KPYutiz2LfYsycsXG4gICAgICAgICfYs9io2KrZhdio2LEnLFxuICAgICAgICAn2KPZg9iq2YjYqNixJyxcbiAgICAgICAgJ9mG2YjZgdmF2KjYsScsXG4gICAgICAgICfYr9mK2LPZhdio2LEnXG4gICAgXTtcblxuICAgIHZhciBhckx5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItbHknLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC9cXHUyMDBGTS9cXHUyMDBGWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2KjYudivICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIHNzIDogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBtIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBtbSA6IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgaGggOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIGRkIDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBNIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICBNTSA6IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgeSA6IHBsdXJhbGl6ZSgneScpLFxuICAgICAgICAgICAgeXkgOiBwbHVyYWxpemUoJ3knKVxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckx5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJNYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLW1hJywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9in2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyTWE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ9mhJyxcbiAgICAgICAgJzInOiAn2aInLFxuICAgICAgICAnMyc6ICfZoycsXG4gICAgICAgICc0JzogJ9mkJyxcbiAgICAgICAgJzUnOiAn2aUnLFxuICAgICAgICAnNic6ICfZpicsXG4gICAgICAgICc3JzogJ9mnJyxcbiAgICAgICAgJzgnOiAn2agnLFxuICAgICAgICAnOSc6ICfZqScsXG4gICAgICAgICcwJzogJ9mgJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ9mhJzogJzEnLFxuICAgICAgICAn2aInOiAnMicsXG4gICAgICAgICfZoyc6ICczJyxcbiAgICAgICAgJ9mkJzogJzQnLFxuICAgICAgICAn2aUnOiAnNScsXG4gICAgICAgICfZpic6ICc2JyxcbiAgICAgICAgJ9mnJzogJzcnLFxuICAgICAgICAn2agnOiAnOCcsXG4gICAgICAgICfZqSc6ICc5JyxcbiAgICAgICAgJ9mgJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBhclNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXItc2EnLCB7XG4gICAgICAgIG1vbnRocyA6ICfZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LV82YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mFJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG0gOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC2KfYptmCJyxcbiAgICAgICAgICAgIGggOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGggOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkIDogJ9mK2YjZhScsXG4gICAgICAgICAgICBkZCA6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNIDogJ9i02YfYsScsXG4gICAgICAgICAgICBNTSA6ICclZCDYo9i02YfYsScsXG4gICAgICAgICAgICB5IDogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhclNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYXJUbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXRuJywge1xuICAgICAgICBtb250aHM6ICfYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ9in2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0OiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHM6ICfYq9mI2KfZhicsXG4gICAgICAgICAgICBzcyA6ICclZCDYq9in2YbZitipJyxcbiAgICAgICAgICAgIG06ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoOiAn2LPYp9i52KknLFxuICAgICAgICAgICAgaGg6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQ6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQ6ICclZCDYo9mK2KfZhScsXG4gICAgICAgICAgICBNOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeTogJ9iz2YbYqScsXG4gICAgICAgICAgICB5eTogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJUbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn2aEnLFxuICAgICAgICAnMic6ICfZoicsXG4gICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgJzQnOiAn2aQnLFxuICAgICAgICAnNSc6ICfZpScsXG4gICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgJzcnOiAn2acnLFxuICAgICAgICAnOCc6ICfZqCcsXG4gICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgJzAnOiAn2aAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAn2aAnOiAnMCdcbiAgICB9LCBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPT09IDAgPyAwIDogbiA9PT0gMSA/IDEgOiBuID09PSAyID8gMiA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwID8gMyA6IG4gJSAxMDAgPj0gMTEgPyA0IDogNTtcbiAgICB9LCBwbHVyYWxzID0ge1xuICAgICAgICBzIDogWyfYo9mC2YQg2YXZhiDYq9in2YbZitipJywgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSwgJyVkINir2YjYp9mGJywgJyVkINir2KfZhtmK2KknLCAnJWQg2KvYp9mG2YrYqSddLFxuICAgICAgICBtIDogWyfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJywgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSwgJyVkINiv2YLYp9im2YInLCAnJWQg2K/ZgtmK2YLYqScsICclZCDYr9mC2YrZgtipJ10sXG4gICAgICAgIGggOiBbJ9ij2YLZhCDZhdmGINiz2KfYudipJywgJ9iz2KfYudipINmI2KfYrdiv2KknLCBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSwgJyVkINiz2KfYudin2KonLCAnJWQg2LPYp9i52KknLCAnJWQg2LPYp9i52KknXSxcbiAgICAgICAgZCA6IFsn2KPZgtmEINmF2YYg2YrZiNmFJywgJ9mK2YjZhSDZiNin2K3YrycsIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sICclZCDYo9mK2KfZhScsICclZCDZitmI2YXZi9inJywgJyVkINmK2YjZhSddLFxuICAgICAgICBNIDogWyfYo9mC2YQg2YXZhiDYtNmH2LEnLCAn2LTZh9ixINmI2KfYrdivJywgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSwgJyVkINij2LTZh9ixJywgJyVkINi02YfYsdinJywgJyVkINi02YfYsSddLFxuICAgICAgICB5IDogWyfYo9mC2YQg2YXZhiDYudin2YUnLCAn2LnYp9mFINmI2KfYrdivJywgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSwgJyVkINij2LnZiNin2YUnLCAnJWQg2LnYp9mF2YvYpycsICclZCDYudin2YUnXVxuICAgIH0sIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICB9O1xuICAgIH0sIG1vbnRocyA9IFtcbiAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgJ9mF2KfYsdizJyxcbiAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAn2YrZiNmG2YrZiCcsXG4gICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAn2LPYqNiq2YXYqNixJyxcbiAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAn2K/Zitiz2YXYqNixJ1xuICAgIF07XG5cbiAgICB2YXIgYXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhcicsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3MgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG0gOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoIDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZCA6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE0gOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5IDogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eSA6IHBsdXJhbGl6ZSgneScpXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiAnLWluY2knLFxuICAgICAgICA1OiAnLWluY2knLFxuICAgICAgICA4OiAnLWluY2knLFxuICAgICAgICA3MDogJy1pbmNpJyxcbiAgICAgICAgODA6ICctaW5jaScsXG4gICAgICAgIDI6ICctbmNpJyxcbiAgICAgICAgNzogJy1uY2knLFxuICAgICAgICAyMDogJy1uY2knLFxuICAgICAgICA1MDogJy1uY2knLFxuICAgICAgICAzOiAnLcO8bmPDvCcsXG4gICAgICAgIDQ6ICctw7xuY8O8JyxcbiAgICAgICAgMTAwOiAnLcO8bmPDvCcsXG4gICAgICAgIDY6ICctbmPEsScsXG4gICAgICAgIDk6ICctdW5jdScsXG4gICAgICAgIDEwOiAnLXVuY3UnLFxuICAgICAgICAzMDogJy11bmN1JyxcbiAgICAgICAgNjA6ICctxLFuY8SxJyxcbiAgICAgICAgOTA6ICctxLFuY8SxJ1xuICAgIH07XG5cbiAgICB2YXIgYXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdheicsIHtcbiAgICAgICAgbW9udGhzIDogJ3lhbnZhcl9mZXZyYWxfbWFydF9hcHJlbF9tYXlfaXl1bl9peXVsX2F2cXVzdF9zZW50eWFicl9va3R5YWJyX25veWFicl9kZWthYnInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3lhbl9mZXZfbWFyX2Fwcl9tYXlfaXluX2l5bF9hdnFfc2VuX29rdF9ub3lfZGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdCYXphcl9CYXphciBlcnTJmXNpX8OHyZlyxZ/JmW5iyZkgYXjFn2FtxLFfw4fJmXLFn8mZbmLJmV9Dw7xtyZkgYXjFn2FtxLFfQ8O8bcmZX8WeyZluYsmZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0Jhel9CekVfw4dBeF/Dh8mZcl9DQXhfQ8O8bV/FnsmZbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQnpfQkVfw4dBX8OHyZlfQ0FfQ8O8X8WeyZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbc2FiYWggc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW2fJmWzJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbZMO8bsmZbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2tlw6fJmW4gaMmZZnTJmV0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgyZl2dsmZbCcsXG4gICAgICAgICAgICBzIDogJ2Jpcm5lw6fJmSBzYW5pecmZJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNhbml5yZknLFxuICAgICAgICAgICAgbSA6ICdiaXIgZMmZcWlxyZknLFxuICAgICAgICAgICAgbW0gOiAnJWQgZMmZcWlxyZknLFxuICAgICAgICAgICAgaCA6ICdiaXIgc2FhdCcsXG4gICAgICAgICAgICBoaCA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIGQgOiAnYmlyIGfDvG4nLFxuICAgICAgICAgICAgZGQgOiAnJWQgZ8O8bicsXG4gICAgICAgICAgICBNIDogJ2JpciBheScsXG4gICAgICAgICAgICBNTSA6ICclZCBheScsXG4gICAgICAgICAgICB5IDogJ2JpciBpbCcsXG4gICAgICAgICAgICB5eSA6ICclZCBpbCdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2dlY8mZfHPJmWjJmXJ8Z8O8bmTDvHp8YXjFn2FtLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKGfDvG5kw7x6fGF4xZ9hbSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2dlY8mZJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzyZloyZlyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnw7xuZMO8eic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnYXjFn2FtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjEsW5jxLF8aW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkgeyAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICctxLFuY8SxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciAlIDEwMCAtIGEsXG4gICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSB8fCBzdWZmaXhlc1tjXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF6O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScgOiAn0YXQstGW0LvRltC90YNf0YXQstGW0LvRltC90Ytf0YXQstGW0LvRltC9JyxcbiAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LBf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyA6ICfQs9Cw0LTQt9GW0L3Rg1/Qs9Cw0LTQt9GW0L3Ri1/Qs9Cw0LTQt9GW0L0nLFxuICAgICAgICAgICAgJ2RkJzogJ9C00LfQtdC90Yxf0LTQvdGWX9C00LfRkdC9JyxcbiAgICAgICAgICAgICdNTSc6ICfQvNC10YHRj9GGX9C80LXRgdGP0YbRi1/QvNC10YHRj9GG0LDRnicsXG4gICAgICAgICAgICAneXknOiAn0LPQvtC0X9Cz0LDQtNGLX9Cz0LDQtNC+0Z4nXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstGW0LvRltC90LAnIDogJ9GF0LLRltC70ZbQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQsNC00LfRltC90LAnIDogJ9Cz0LDQtNC30ZbQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYmUnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9GB0YLRg9C00LfQtdC90Y9f0LvRjtGC0LDQs9CwX9GB0LDQutCw0LLRltC60LBf0LrRgNCw0YHQsNCy0ZbQutCwX9GC0YDQsNGe0L3Rj1/Rh9GN0YDQstC10L3Rj1/Qu9GW0L/QtdC90Y9f0LbQvdGW0Z7QvdGPX9Cy0LXRgNCw0YHQvdGPX9C60LDRgdGC0YDRi9GH0L3RltC60LBf0LvRltGB0YLQsNC/0LDQtNCwX9GB0L3QtdC20L3Rjycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRgdGC0YPQtNC30LXQvdGMX9C70Y7RgtGLX9GB0LDQutCw0LLRltC6X9C60YDQsNGB0LDQstGW0Lpf0YLRgNCw0LLQtdC90Yxf0YfRjdGA0LLQtdC90Yxf0LvRltC/0LXQvdGMX9C20L3RltCy0LXQvdGMX9Cy0LXRgNCw0YHQtdC90Yxf0LrQsNGB0YLRgNGL0YfQvdGW0Lpf0LvRltGB0YLQsNC/0LDQtF/RgdC90LXQttCw0L3RjCcuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRgdGC0YPQtF/Qu9GO0YJf0YHQsNC6X9C60YDQsNGBX9GC0YDQsNCyX9GH0Y3RgNCyX9C70ZbQv1/QttC90ZbQsl/QstC10YBf0LrQsNGB0YJf0LvRltGB0YJf0YHQvdC10LYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0L3Rj9C00LfQtdC70Y5f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNGDX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbRg1/RgdGD0LHQvtGC0YMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0L3Rj9C00LfQtdC70Y9f0L/QsNC90Y/QtNC30LXQu9Cw0Lpf0LDRntGC0L7RgNCw0Lpf0YHQtdGA0LDQtNCwX9GH0LDRhtCy0LXRgF/Qv9GP0YLQvdGW0YbQsF/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL1xcWyA/W9Cj0YPRnl0gPyg/OtC80ZbQvdGD0LvRg9GOfNC90LDRgdGC0YPQv9C90YPRjik/ID9cXF0gP2RkZGQvXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cw0YJf0YHRgF/Rh9GGX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINCzLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0LMuLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodGR0L3QvdGPINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9CX0LDRntGC0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQo9GH0L7RgNCwINGeXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW9CjXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRg9GOXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0KMg0LzRltC90YPQu9GLXSBkZGRkIFvRnl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQv9GA0LDQtyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINGC0LDQvNGDJyxcbiAgICAgICAgICAgIHMgOiAn0L3QtdC60LDQu9GM0LrRliDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQt9C10L3RjCcsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRi3zRgNCw0L3RltGG0Yt80LTQvdGPfNCy0LXRh9Cw0YDQsC8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LDRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdGW0YbRiyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQsNGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGWfNGLfNCz0LApLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAobnVtYmVyICUgMTAgPT09IDIgfHwgbnVtYmVyICUgMTAgPT09IDMpICYmIChudW1iZXIgJSAxMDAgIT09IDEyICYmIG51bWJlciAlIDEwMCAhPT0gMTMpID8gbnVtYmVyICsgJy3RlicgOiBudW1iZXIgKyAnLdGLJztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQsCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBiZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JnJywge1xuICAgICAgICBtb250aHMgOiAn0Y/QvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdGAX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9C90LXQtNC10LvRj1/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0Y/QtNCwX9GH0LXRgtCy0YrRgNGC0YrQul/Qv9C10YLRitC6X9GB0YrQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0Y9f0YfQtdGCX9C/0LXRgl/RgdGK0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JTQvdC10YEg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Cj0YLRgNC1INCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JLRh9C10YDQsCDQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQuNC30LzQuNC90LDQu9Cw0YLQsF0gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0LjQt9C80LjQvdCw0LvQuNGPXSBkZGRkIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0YHQu9C10LQgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfQv9GA0LXQtNC4ICVzJyxcbiAgICAgICAgICAgIHMgOiAn0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgbSA6ICfQvNC40L3Rg9GC0LAnLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzQuNC90YPRgtC4JyxcbiAgICAgICAgICAgIGggOiAn0YfQsNGBJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGH0LDRgdCwJyxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC00L3QuCcsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LzQtdGB0LXRhtCwJyxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5IDogJyVkINCz0L7QtNC40L3QuCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBiZztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGJtID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm0nLCB7XG4gICAgICAgIG1vbnRocyA6ICdaYW53dXlla2Fsb19GZXd1cnV5ZWthbG9fTWFyaXNpa2Fsb19Bd2lyaWxpa2Fsb19NyZtrYWxvX1p1d8mbbmthbG9fWnVsdXlla2Fsb19VdGlrYWxvX1PJm3RhbmJ1cnVrYWxvX8mUa3V0yZRidXJ1a2Fsb19Ob3dhbmJ1cnVrYWxvX0Rlc2FuYnVydWthbG8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ1phbl9GZXdfTWFyX0F3aV9NyZtfWnV3X1p1bF9VdGlfU8mbdF/JlGt1X05vd19EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0thcmlfTnTJm27Jm25fVGFyYXRhX0FyYWJhX0FsYW1pc2FfSnVtYV9TaWJpcmknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnS2FyX050yZtfVGFyX0FyYV9BbGFfSnVtX1NpYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnS2FfTnRfVGFfQXJfQWxfSnVfU2knLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZIFtsyZtyyZtdIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0JpIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbU2luaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2RvbiBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0t1bnUgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFt0yZttyZtuZW4gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMga8mUbsmUJyxcbiAgICAgICAgICAgIHBhc3QgOiAnYSBiyZsgJXMgYsmUJyxcbiAgICAgICAgICAgIHMgOiAnc2FuZ2EgZGFtYSBkYW1hJyxcbiAgICAgICAgICAgIHNzIDogJ3Nla29uZGkgJWQnLFxuICAgICAgICAgICAgbSA6ICdtaW5pdGkga2VsZW4nLFxuICAgICAgICAgICAgbW0gOiAnbWluaXRpICVkJyxcbiAgICAgICAgICAgIGggOiAnbMmbcsmbIGtlbGVuJyxcbiAgICAgICAgICAgIGhoIDogJ2zJm3LJmyAlZCcsXG4gICAgICAgICAgICBkIDogJ3RpbGUga2VsZW4nLFxuICAgICAgICAgICAgZGQgOiAndGlsZSAlZCcsXG4gICAgICAgICAgICBNIDogJ2thbG8ga2VsZW4nLFxuICAgICAgICAgICAgTU0gOiAna2FsbyAlZCcsXG4gICAgICAgICAgICB5IDogJ3NhbiBrZWxlbicsXG4gICAgICAgICAgICB5eSA6ICdzYW4gJWQnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJtO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgp6cnLFxuICAgICAgICAnMic6ICfgp6gnLFxuICAgICAgICAnMyc6ICfgp6knLFxuICAgICAgICAnNCc6ICfgp6onLFxuICAgICAgICAnNSc6ICfgp6snLFxuICAgICAgICAnNic6ICfgp6wnLFxuICAgICAgICAnNyc6ICfgp60nLFxuICAgICAgICAnOCc6ICfgp64nLFxuICAgICAgICAnOSc6ICfgp68nLFxuICAgICAgICAnMCc6ICfgp6YnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgp6cnOiAnMScsXG4gICAgICAgICfgp6gnOiAnMicsXG4gICAgICAgICfgp6knOiAnMycsXG4gICAgICAgICfgp6onOiAnNCcsXG4gICAgICAgICfgp6snOiAnNScsXG4gICAgICAgICfgp6wnOiAnNicsXG4gICAgICAgICfgp60nOiAnNycsXG4gICAgICAgICfgp64nOiAnOCcsXG4gICAgICAgICfgp68nOiAnOScsXG4gICAgICAgICfgp6YnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGJuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYm4nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgppzgpr7gpqjgp4Hgp5/gpr7gprDgp4Bf4Kar4KeH4Kas4KeN4Kaw4KeB4Kef4Ka+4Kaw4Ka/X+CmruCmvuCmsOCnjeCmml/gpo/gpqrgp43gprDgpr/gprJf4Kau4KeHX+CmnOCngeCmqF/gppzgp4HgprLgpr7gpodf4KaG4KaX4Ka44KeN4KafX+CmuOCnh+CmquCnjeCmn+Cnh+CmruCnjeCmrOCmsF/gpoXgppXgp43gpp/gp4vgpqzgprBf4Kao4Kat4KeH4Kau4KeN4Kas4KawX+CmoeCmv+CmuOCnh+CmruCnjeCmrOCmsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Kac4Ka+4Kao4KeBX+Cmq+Cnh+CmrF/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4KawX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4KayX+CmhuCml1/gprjgp4fgpqrgp43gpp9f4KaF4KaV4KeN4Kaf4KeLX+CmqOCmreCnh1/gpqHgpr/gprjgp4cnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+CmsOCmrOCmv+CmrOCmvuCmsF/gprjgp4vgpq7gpqzgpr7gprBf4Kau4KaZ4KeN4KaX4Kay4Kas4Ka+4KawX+CmrOCngeCmp+CmrOCmvuCmsF/gpqzgp4Pgprngprjgp43gpqrgpqTgpr/gpqzgpr7gprBf4Ka24KeB4KaV4KeN4Kaw4Kas4Ka+4KawX+CmtuCmqOCmv+CmrOCmvuCmsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml+Cmsl/gpqzgp4Hgpqdf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/X+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CmsOCmrOCmv1/gprjgp4vgpq5f4Kau4KaZ4KeN4KaXX+CmrOCngeCmp1/gpqzgp4PgprngpoNf4Ka24KeB4KaV4KeN4KawX+CmtuCmqOCmvycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4Ka44Kau4KefJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCmuOCmruCnnydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpobgppxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CmhuCml+CmvuCmruCngOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KaX4Kak4KaV4Ka+4KayXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4KaX4KakXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4Kaq4Kaw4KeHJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KaG4KaX4KeHJyxcbiAgICAgICAgICAgIHMgOiAn4KaV4Kef4KeH4KaVIOCmuOCnh+CmleCnh+CmqOCnjeCmoScsXG4gICAgICAgICAgICBzcyA6ICclZCDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgbSA6ICfgpo/gppUg4Kau4Ka/4Kao4Ka/4KafJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBoIDogJ+Cmj+CmlSDgppjgpqjgp43gpp/gpr4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGQgOiAn4KaP4KaVIOCmpuCmv+CmqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgTSA6ICfgpo/gppUg4Kau4Ka+4Ka4JyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCmruCmvuCmuCcsXG4gICAgICAgICAgICB5IDogJ+Cmj+CmlSDgpqzgppvgprAnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Kas4Kab4KawJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Ken4Keo4Kep4Keq4Ker4Kes4Ket4Keu4Kev4KemXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kaw4Ka+4KakfOCmuOCmleCmvuCmsnzgpqbgp4Hgpqrgp4HgprB84Kas4Ka/4KaV4Ka+4KayfOCmsOCmvuCmpC8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4Kaw4Ka+4KakJyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgICAgIChtZXJpZGllbSA9PT0gJ+CmpuCngeCmquCngeCmsCcgJiYgaG91ciA8IDUpIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4Kas4Ka/4KaV4Ka+4KayJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprjgppXgpr7gprInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmpuCngeCmquCngeCmsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kas4Ka/4KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgprDgpr7gpqQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBibjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4LyhJyxcbiAgICAgICAgJzInOiAn4LyiJyxcbiAgICAgICAgJzMnOiAn4LyjJyxcbiAgICAgICAgJzQnOiAn4LykJyxcbiAgICAgICAgJzUnOiAn4LylJyxcbiAgICAgICAgJzYnOiAn4LymJyxcbiAgICAgICAgJzcnOiAn4LynJyxcbiAgICAgICAgJzgnOiAn4LyoJyxcbiAgICAgICAgJzknOiAn4LypJyxcbiAgICAgICAgJzAnOiAn4LygJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4LyhJzogJzEnLFxuICAgICAgICAn4LyiJzogJzInLFxuICAgICAgICAn4LyjJzogJzMnLFxuICAgICAgICAn4LykJzogJzQnLFxuICAgICAgICAn4LylJzogJzUnLFxuICAgICAgICAn4LymJzogJzYnLFxuICAgICAgICAn4LynJzogJzcnLFxuICAgICAgICAn4LyoJzogJzgnLFxuICAgICAgICAn4LypJzogJzknLFxuICAgICAgICAn4LygJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBibyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JvJywge1xuICAgICAgICBtb250aHMgOiAn4L2f4L6z4LyL4L2W4LyL4L2R4L2E4LyL4L2U4L28X+C9n+C+s+C8i+C9luC8i+C9guC9ieC9suC9puC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvYLgvabgvbTgvZjgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2e4L2y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9o+C+lOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvrLgvbTgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2R4L204L2T4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9ouC+kuC+seC9keC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZHgvYLgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9heC9suC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYngvbLgvabgvIvgvZQnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+C9n+C+s+C8i+C9luC8i+C9keC9hOC8i+C9lOC9vF/gvZ/gvrPgvIvgvZbgvIvgvYLgvYngvbLgvabgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2C4L2m4L204L2Y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9nuC9suC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvaPgvpTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L6y4L204L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9keC9tOC9k+C8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvaLgvpLgvrHgvZHgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L2C4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYXgvbLgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2J4L2y4L2m4LyL4L2UJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgvYLgvZ/gvaDgvIvgvYngvbLgvIvgvZjgvItf4L2C4L2f4L2g4LyL4L2f4L6z4LyL4L2W4LyLX+C9guC9n+C9oOC8i+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvYLgvZ/gvaDgvIvgvaPgvrfgvYLgvIvgvZTgvItf4L2C4L2f4L2g4LyL4L2V4L204L2i4LyL4L2W4L20X+C9guC9n+C9oOC8i+C9lOC8i+C9puC9hOC9puC8i1/gvYLgvZ/gvaDgvIvgvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4L2J4L2y4LyL4L2Y4LyLX+C9n+C+s+C8i+C9luC8i1/gvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2j4L634L2C4LyL4L2U4LyLX+C9leC9tOC9ouC8i+C9luC9tF/gvZTgvIvgvabgvYTgvabgvItf4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgvYngvbLgvIvgvZjgvItf4L2f4L6z4LyL4L2W4LyLX+C9mOC9suC9guC8i+C9keC9mOC9ouC8i1/gvaPgvrfgvYLgvIvgvZTgvItf4L2V4L204L2i4LyL4L2W4L20X+C9lOC8i+C9puC9hOC9puC8i1/gvabgvqTgvbrgvZPgvIvgvZTgvIsnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgvZHgvbLgvIvgvaLgvbLgvYRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C9puC9hOC8i+C9ieC9suC9k10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9ouC+l+C9uuC9puC8i+C9mF0sIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+C9geC8i+C9puC9hF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+C9luC9keC9tOC9k+C8i+C9leC+suC9guC8i+C9mOC9kOC9oOC8i+C9mF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOC9o+C8iycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOC9puC+lOC9k+C8i+C9oycsXG4gICAgICAgICAgICBzIDogJ+C9o+C9mOC8i+C9puC9hCcsXG4gICAgICAgICAgICBzcyA6ICclZCDgvabgvpDgvaLgvIvgvYbgvI0nLFxuICAgICAgICAgICAgbSA6ICfgvabgvpDgvaLgvIvgvZjgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgbW0gOiAnJWQg4L2m4L6Q4L2i4LyL4L2YJyxcbiAgICAgICAgICAgIGggOiAn4L2G4L204LyL4L2a4L284L2R4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOC9huC9tOC8i+C9muC9vOC9kScsXG4gICAgICAgICAgICBkIDogJ+C9ieC9suC9k+C8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBkZCA6ICclZCDgvYngvbLgvZPgvIsnLFxuICAgICAgICAgICAgTSA6ICfgvZ/gvrPgvIvgvZbgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgTU0gOiAnJWQg4L2f4L6z4LyL4L2WJyxcbiAgICAgICAgICAgIHkgOiAn4L2j4L284LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOC9o+C9vCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+C8oeC8ouC8o+C8pOC8peC8puC8p+C8qOC8qeC8oF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C9mOC9muC9k+C8i+C9mOC9vHzgvZ7gvbzgvYLgvabgvIvgvYDgvaZ84L2J4L2y4L2T4LyL4L2C4L204L2EfOC9keC9guC9vOC9hOC8i+C9keC9gnzgvZjgvZrgvZPgvIvgvZjgvbwvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChtZXJpZGllbSA9PT0gJ+C9mOC9muC9k+C8i+C9mOC9vCcgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnICYmIGhvdXIgPCA1KSB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C9keC9guC9vOC9hOC8i+C9keC9gicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9mOC9muC9k+C8i+C9mOC9vCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2e4L284L2C4L2m4LyL4L2A4L2mJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvYngvbLgvZPgvIvgvYLgvbTgvYQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9keC9guC9vOC9hOC8i+C9keC9gic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2Y4L2a4L2T4LyL4L2Y4L28JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ21tJzogJ211bnV0ZW5uJyxcbiAgICAgICAgICAgICdNTSc6ICdtaXonLFxuICAgICAgICAgICAgJ2RkJzogJ2RldmV6aCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIG11dGF0aW9uKGZvcm1hdFtrZXldLCBudW1iZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFycyhudW1iZXIpIHtcbiAgICAgICAgc3dpdGNoIChsYXN0TnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyBibG9heic7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnIHZsb2F6JztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsYXN0TnVtYmVyKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIGxhc3ROdW1iZXIobnVtYmVyICUgMTApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG11dGF0aW9uKHRleHQsIG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gc29mdE11dGF0aW9uKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzb2Z0TXV0YXRpb24odGV4dCkge1xuICAgICAgICB2YXIgbXV0YXRpb25UYWJsZSA9IHtcbiAgICAgICAgICAgICdtJzogJ3YnLFxuICAgICAgICAgICAgJ2InOiAndicsXG4gICAgICAgICAgICAnZCc6ICd6J1xuICAgICAgICB9O1xuICAgICAgICBpZiAobXV0YXRpb25UYWJsZVt0ZXh0LmNoYXJBdCgwKV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldICsgdGV4dC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuXG4gICAgdmFyIGJyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYnInLCB7XG4gICAgICAgIG1vbnRocyA6ICdHZW52ZXJfQ1xcJ2h3ZXZyZXJfTWV1cnpoX0VicmVsX01hZV9NZXpoZXZlbl9Hb3VlcmVfRW9zdF9Hd2VuZ29sb19IZXJlX0R1X0tlcnp1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdHZW5fQ1xcJ2h3ZV9NZXVfRWJyX01hZV9FdmVfR291X0Vvc19Hd2VfSGVyX0R1X0tlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VsX0x1bl9NZXVyemhfTWVyY1xcJ2hlcl9ZYW91X0d3ZW5lcl9TYWRvcm4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VsX0x1bl9NZXVfTWVyX1lhb19Hd2VfU2FkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9MdV9NZV9NZXJfWWFfR3dfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaFtlXW1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2hbZV1tbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFthIHZpel0gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFthIHZpel0gTU1NTSBZWVlZIGhbZV1tbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbYSB2aXpdIE1NTU0gWVlZWSBoW2VdbW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIaXppdiBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbV2FyY1xcJ2hvYXpoIGRhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtkYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbRGVjXFwnaCBkYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbcGFzZXQgZGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdhLWJlbm4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBcXCd6bycsXG4gICAgICAgICAgICBzIDogJ3VuIG5lYmV1ZCBzZWdvbmRlbm5vw7knLFxuICAgICAgICAgICAgc3MgOiAnJWQgZWlsZW5uJyxcbiAgICAgICAgICAgIG0gOiAndXIgdnVudXRlbm4nLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICBoIDogJ3VuIGV1cicsXG4gICAgICAgICAgICBoaCA6ICclZCBldXInLFxuICAgICAgICAgICAgZCA6ICd1biBkZXZlemgnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICBNIDogJ3VyIG1peicsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbixcbiAgICAgICAgICAgIHkgOiAndXIgYmxvYXonLFxuICAgICAgICAgICAgeXkgOiBzcGVjaWFsTXV0YXRpb25Gb3JZZWFyc1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oYcOxfHZldCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IChudW1iZXIgPT09IDEpID8gJ2HDsScgOiAndmV0JztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEnIDogJ2plZG5lIG1pbnV0ZSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYnMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdicycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5ICA6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGldIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBjYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2NhJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ2RlIGdlbmVyX2RlIGZlYnJlcl9kZSBtYXLDp19kXFwnYWJyaWxfZGUgbWFpZ19kZSBqdW55X2RlIGp1bGlvbF9kXFwnYWdvc3RfZGUgc2V0ZW1icmVfZFxcJ29jdHVicmVfZGUgbm92ZW1icmVfZGUgZGVzZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXHMpK01NTU0vXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2dlbi5fZmVici5fbWFyw6dfYWJyLl9tYWlnX2p1bnlfanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGdfZGxfZHRfZGNfZGpfZHZfZHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBsbCA6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gW2RlXSBZWVlZIFthIGxlc10gSDptbScsXG4gICAgICAgICAgICBsbGwgOiAnRCBNTU0gWVlZWSwgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQgRCBNTU0gWVlZWSwgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F2dWkgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2RlbcOgIGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYWhpciBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2VsXSBkZGRkIFtwYXNzYXQgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZFxcJ2FxdcOtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnZmEgJXMnLFxuICAgICAgICAgICAgcyA6ICd1bnMgc2Vnb25zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ29ucycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0cycsXG4gICAgICAgICAgICBoIDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmVzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZGlhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpZXMnLFxuICAgICAgICAgICAgTSA6ICd1biBtZXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzb3MnLFxuICAgICAgICAgICAgeSA6ICd1biBhbnknLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW55cydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHJ8bnx0fMOofGEpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IChudW1iZXIgPT09IDEpID8gJ3InIDpcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSAyKSA/ICduJyA6XG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMykgPyAncicgOlxuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDQpID8gJ3QnIDogJ8OoJztcbiAgICAgICAgICAgIGlmIChwZXJpb2QgPT09ICd3JyB8fCBwZXJpb2QgPT09ICdXJykge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9ICdhJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gJ2xlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2xlZF/Dum5vX2LFmWVfZHViX2t2xJtfxI12bl/EjXZjX3NycF96w6HFmV/FmcOtal9saXNfcHJvJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9ebGVkL2ksIC9ew7puby9pLCAvXmLFmWUvaSwgL15kdWIvaSwgL15rdsSbL2ksIC9eKMSNdm58xI1lcnZlbiR8xI1lcnZuYSkvaSwgL14oxI12Y3zEjWVydmVuZWN8xI1lcnZlbmNlKS9pLCAvXnNycC9pLCAvXnrDocWZL2ksIC9exZnDrWovaSwgL15saXMvaSwgL15wcm8vaV07XG4gICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14obGVkZW58w7pub3J8YsWZZXplbnxkdWJlbnxrdsSbdGVufMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHrDocWZw618xZnDrWplbnxsaXN0b3BhZHxwcm9zaW5lY3xsZWR8w7pub3xixZllfGR1YnxrdsSbfMSNdm58xI12Y3xzcnB8esOhxZl8xZnDrWp8bGlzfHBybykvaTtcblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiAobiA+IDEpICYmIChuIDwgNSkgJiYgKH5+KG4gLyAxMCkgIT09IDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzogIC8vIGEgZmV3IHNlY29uZHMgLyBpbiBhIGZldyBzZWNvbmRzIC8gYSBmZXcgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ3DDoXIgc2VrdW5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla3VuZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzogIC8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogKGlzRnV0dXJlID8gJ21pbnV0dScgOiAnbWludXRvdScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6ICAvLyBhbiBob3VyIC8gaW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IChpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2RpbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnaG9kaW5hbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOiAgLy8gYSBkYXkgLyBpbiBhIGRheSAvIGEgZGF5IGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnZGVuJyA6ICdkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG55JyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkbnknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ00nOiAgLy8gYSBtb250aCAvIGluIGEgbW9udGggLyBhIG1vbnRoIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnbcSbc8OtYycgOiAnbcSbc8OtY2VtJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzogLy8gOSBtb250aHMgLyBpbiA5IG1vbnRocyAvIDkgbW9udGhzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbcSbc8OtY2UnIDogJ23Em3PDrWPFrycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcSbc8OtY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOiAgLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncm9rJyA6ICdyb2tlbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ2xldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbGV0eSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3MnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUmVnZXggOiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICAvLyBOT1RFOiAnxI1lcnZlbicgaXMgc3Vic3RyaW5nIG9mICfEjWVydmVuZWMnOyB0aGVyZWZvcmUgJ8SNZXJ2ZW5lYycgbXVzdCBwcmVjZWRlICfEjWVydmVuJyBpbiB0aGUgcmVnZXggdG8gYmUgZnVsbHkgbWF0Y2hlZC5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIHBhcnNlciBtYXRjaGVzICcxLiDEjWVydmVuZWMnIGFzICcxLiDEjWVydmVuJyArICdlYycuXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4IDogL14obGVkZW58bGVkbmF8w7pub3JhfMO6bm9yfGLFmWV6ZW58YsWZZXpuYXxkdWJlbnxkdWJuYXxrdsSbdGVufGt2xJt0bmF8xI1lcnZlbmVjfMSNZXJ2ZW5jZXzEjWVydmVufMSNZXJ2bmF8c3JwZW58c3JwbmF8esOhxZnDrXzFmcOtamVufMWZw61qbmF8bGlzdG9wYWR1fGxpc3RvcGFkfHByb3NpbmVjfHByb3NpbmNlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4IDogL14obGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ25lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lX3BvX8O6dF9zdF/EjXRfcMOhX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnRC4gTS4gWVlZWSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6w610cmEgdl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZlIHN0xZllZHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSDEjXR2cnRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcMOhdGVrIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgdl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSB2XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IG5lZMSbbGkgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw6ldIGRkZGQgW3ZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwxZllZCAlcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3M7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBjdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N2Jywge1xuICAgICAgICBtb250aHMgOiAn0LrTkdGA0LvQsNGHX9C90LDRgNOR0YFf0L/Rg9GIX9Cw0LrQsF/QvNCw0Llf0qvTl9GA0YLQvNC1X9GD0YLTkV/Sq9GD0YDQu9CwX9Cw0LLTkdC9X9GO0L/QsF/Rh9Oz0Lpf0YDQsNGI0YLQsNCyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfQutOR0YBf0L3QsNGAX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgF/Rg9GC05Ff0qvRg9GAX9Cw0LLQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0LLRi9GA0YHQsNGA0L3QuNC60YPQvV/RgtGD0L3RgtC40LrRg9C9X9GL0YLQu9Cw0YDQuNC60YPQvV/RjtC90LrRg9C9X9C605fSq9C90LXRgNC90LjQutGD0L1f0Y3RgNC90LXQutGD0L1f0YjTkdC80LDRgtC60YPQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQstGL0YBf0YLRg9C9X9GL0YLQu1/RjtC9X9C605fSq1/RjdGA0L1f0YjTkdC8Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQstGAX9GC0L1f0YvRgl/RjtC9X9C60qtf0Y3RgF/RiNC8Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnWVlZWSBb0qvRg9C70YXQuF0gTU1NTSBb0YPQudOR0YXTl9C9XSBEWy3QvNOX0YjTl10nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFlZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Cf0LDRj9C9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0KvRgNCw0L1dIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vTltC90LXRgF0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vSqtC40YLQtdGBXSBkZGRkIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb0JjRgNGC0L3Tl10gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKG91dHB1dCkge1xuICAgICAgICAgICAgICAgIHZhciBhZmZpeCA9IC/RgdC10YXQtdGCJC9pLmV4ZWMob3V0cHV0KSA/ICfRgNC10L0nIDogL9Kr0YPQuyQvaS5leGVjKG91dHB1dCkgPyAn0YLQsNC9JyA6ICfRgNCw0L0nO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQgKyBhZmZpeDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0IDogJyVzINC60LDRj9C70LvQsCcsXG4gICAgICAgICAgICBzIDogJ9C/05fRgC3QuNC6INKr0LXQutC60YPQvdGCJyxcbiAgICAgICAgICAgIHNzIDogJyVkINKr0LXQutC60YPQvdGCJyxcbiAgICAgICAgICAgIG0gOiAn0L/Tl9GAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoIDogJ9C/05fRgCDRgdC10YXQtdGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0LXRhdC10YInLFxuICAgICAgICAgICAgZCA6ICfQv9OX0YAg0LrRg9C9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNIDogJ9C/05fRgCDRg9C505HRhScsXG4gICAgICAgICAgICBNTSA6ICclZCDRg9C505HRhScsXG4gICAgICAgICAgICB5IDogJ9C/05fRgCDSq9GD0LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0qvRg9C7J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0t0LzTl9GILyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC3QvNOX0YgnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGN5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnY3knLCB7XG4gICAgICAgIG1vbnRoczogJ0lvbmF3cl9DaHdlZnJvcl9NYXdydGhfRWJyaWxsX01haV9NZWhlZmluX0dvcmZmZW5uYWZfQXdzdF9NZWRpX0h5ZHJlZl9UYWNod2VkZF9SaGFnZnlyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ0lvbl9DaHdlX01hd19FYnJfTWFpX01laF9Hb3JfQXdzX01lZF9IeWRfVGFjaF9SaGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5czogJ0R5ZGQgU3VsX0R5ZGQgTGx1bl9EeWRkIE1hd3J0aF9EeWRkIE1lcmNoZXJfRHlkZCBJYXVfRHlkZCBHd2VuZXJfRHlkZCBTYWR3cm4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTdWxfTGx1bl9NYXdfTWVyX0lhdV9Hd2VfU2FkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1N1X0xsX01hX01lX0lhX0d3X1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICAvLyB0aW1lIGZvcm1hdHMgYXJlIHRoZSBzYW1lIGFzIGVuLWdiXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGVkZGl3IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW1lmb3J5IGFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0Rkb2UgYW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZGl3ZXRoYWYgYW1dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdtZXduICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyB5biDDtGwnLFxuICAgICAgICAgICAgczogJ3ljaHlkaWcgZWlsaWFkYXUnLFxuICAgICAgICAgICAgc3M6ICclZCBlaWxpYWQnLFxuICAgICAgICAgICAgbTogJ211bnVkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbXVudWQnLFxuICAgICAgICAgICAgaDogJ2F3cicsXG4gICAgICAgICAgICBoaDogJyVkIGF3cicsXG4gICAgICAgICAgICBkOiAnZGl3cm5vZCcsXG4gICAgICAgICAgICBkZDogJyVkIGRpd3Jub2QnLFxuICAgICAgICAgICAgTTogJ21pcycsXG4gICAgICAgICAgICBNTTogJyVkIG1pcycsXG4gICAgICAgICAgICB5OiAnYmx3eWRkeW4nLFxuICAgICAgICAgICAgeXk6ICclZCBmbHluZWRkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZmVkfGFpbnxhZnxpbHx5ZGR8ZWR8ZWcpLyxcbiAgICAgICAgLy8gdHJhZGl0aW9uYWwgb3JkaW5hbCBudW1iZXJzIGFib3ZlIDMxIGFyZSBub3QgY29tbW9ubHkgdXNlZCBpbiBjb2xsb3F1aWFsIFdlbHNoXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICcnLFxuICAgICAgICAgICAgICAgIGxvb2t1cCA9IFtcbiAgICAgICAgICAgICAgICAgICAgJycsICdhZicsICdpbCcsICd5ZGQnLCAneWRkJywgJ2VkJywgJ2VkJywgJ2VkJywgJ2ZlZCcsICdmZWQnLCAnZmVkJywgLy8gMWFmIHRvIDEwZmVkXG4gICAgICAgICAgICAgICAgICAgICdlZycsICdmZWQnLCAnZWcnLCAnZWcnLCAnZmVkJywgJ2VnJywgJ2VnJywgJ2ZlZCcsICdlZycsICdmZWQnIC8vIDExZWcgdG8gMjBmZWRcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGIgPiAyMCkge1xuICAgICAgICAgICAgICAgIGlmIChiID09PSA0MCB8fCBiID09PSA1MCB8fCBiID09PSA2MCB8fCBiID09PSA4MCB8fCBiID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2ZlZCc7IC8vIG5vdCAzMGFpbiwgNzBhaW4gb3IgOTBhaW5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYWluJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIgPiAwKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gbG9va3VwW2JdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBkYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RhJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3PDuG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sw7hyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzw7hfbWFfdGlfb25fdG9fZnJfbMO4Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2kgZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbaSBtb3JnZW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdww6UgZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tpIGfDpXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbaV0gZGRkZFtzIGtsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2lkZW4nLFxuICAgICAgICAgICAgcyA6ICdmw6Ugc2VrdW5kZXInLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbSA6ICdldCBtaW51dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHRlcicsXG4gICAgICAgICAgICBoIDogJ2VuIHRpbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltZXInLFxuICAgICAgICAgICAgZCA6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZScsXG4gICAgICAgICAgICBNIDogJ2VuIG3DpW5lZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5IDogJ2V0IMOlcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDpXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGE7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnbSc6IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICAnaCc6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgICdkZCc6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICAnTSc6IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgICd5JzogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUF0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtYXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0rDpG4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAndm9yICVzJyxcbiAgICAgICAgICAgIHMgOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZUF0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGVDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2RlLWNoJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtJzogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgICdoJzogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgICdkJzogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgICdNJzogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgJ3knOiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGV1dGUgdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnZXN0ZXJuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0nXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ZvciAlcycsXG4gICAgICAgICAgICBzIDogJ2VpbiBwYWFyIFNla3VuZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIFNla3VuZGVuJyxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiAnJWQgTWludXRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0dW5kZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICfelt6s3oLeqt6H3qbeg96pJyxcbiAgICAgICAgJ96K3qzehN6w3oPeqt6H3qbeg96pJyxcbiAgICAgICAgJ96J3qfeg96o3pfeqicsXG4gICAgICAgICfeh96t3pXesN6D3qnejd6qJyxcbiAgICAgICAgJ96J3q0nLFxuICAgICAgICAn3pbeq96C3rAnLFxuICAgICAgICAn3pbeqt6N3qbeh96oJyxcbiAgICAgICAgJ96H3q/ejt6m3pDesN6T3qonLFxuICAgICAgICAn3pDerN6V3rDek96s3onesN6E3qbeg96qJyxcbiAgICAgICAgJ96H3q7eht6w3pPer96E3qbeg96qJyxcbiAgICAgICAgJ96C3q7eiN6s3onesN6E3qbeg96qJyxcbiAgICAgICAgJ96R3qjekN6s3onesN6E3qbeg96qJ1xuICAgIF0sIHdlZWtkYXlzID0gW1xuICAgICAgICAn3ofep96L3qjeh96w3ozepicsXG4gICAgICAgICfegN6v3onepicsXG4gICAgICAgICfeh96m3oLesN6O3qfeg96mJyxcbiAgICAgICAgJ96E3qrei96mJyxcbiAgICAgICAgJ96E3qreg96n3pDesN6K3qbejN6oJyxcbiAgICAgICAgJ96A3qreht6q3oPeqicsXG4gICAgICAgICfegN6u3oLeqN6A3qjeg96qJ1xuICAgIF07XG5cbiAgICB2YXIgZHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkdicsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfeh96n3oveqF/egN6v3onepl/eh96m3oLesF/ehN6q3ovepl/ehN6q3oPep1/egN6q3obeql/egN6u3oLeqCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG5cbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0QvTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/eid6GfN6J3oovLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ96J3oonID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6GJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfeid6KJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1veid6o3ofept6L3qpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW96J3qfei96m3onep10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1veh96o3ofesN6U3qxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1veit6n3ofeqN6M3qreiN6oXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfejN6s3oPerd6O3qbeh96oICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn3obeqt6D3qjegt6wICVzJyxcbiAgICAgICAgICAgIHMgOiAn3pDeqN6G3qregt6w3ozeqt6G3q7ehd6s3ofesCcsXG4gICAgICAgICAgICBzcyA6ICdkJSDekN6o3obeqt6C3rDejN6qJyxcbiAgICAgICAgICAgIG0gOiAn3oneqN6C3qjek96s3ofesCcsXG4gICAgICAgICAgICBtbSA6ICfeid6o3oLeqN6T3qogJWQnLFxuICAgICAgICAgICAgaCA6ICfejt6m3pHeqN6H3qjeg96s3ofesCcsXG4gICAgICAgICAgICBoaCA6ICfejt6m3pHeqN6H3qjeg96qICVkJyxcbiAgICAgICAgICAgIGQgOiAn3oveqt6I3qbegN6s3ofesCcsXG4gICAgICAgICAgICBkZCA6ICfei96q3ojept6Q3rAgJWQnLFxuICAgICAgICAgICAgTSA6ICfeid6m3oDerN6H3rAnLFxuICAgICAgICAgICAgTU0gOiAn3onept6Q3rAgJWQnLFxuICAgICAgICAgICAgeSA6ICfeh96m3oDept6D3qzeh96wJyxcbiAgICAgICAgICAgIHl5IDogJ96H3qbegN6m3oPeqiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNywgIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0IGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgICB9XG5cblxuICAgIHZhciBlbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VsJywge1xuICAgICAgICBtb250aHNOb21pbmF0aXZlRWwgOiAnzpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/Pgicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzR2VuaXRpdmVFbCA6ICfOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLPgc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/Okc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzOss+Bzq/Ov8+FJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHMgOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIC9ELy50ZXN0KGZvcm1hdC5zdWJzdHJpbmcoMCwgZm9ybWF0LmluZGV4T2YoJ01NTU0nKSkpKSB7IC8vIGlmIHRoZXJlIGlzIGEgZGF5IG51bWJlciBiZWZvcmUgJ01NTU0nXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc0dlbml0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ86ZzrHOvV/Ops61zrJfzpzOsc+BX86Rz4DPgV/OnM6xz4pfzpnOv8+Fzr1fzpnOv8+FzrtfzpHPhc6zX86jzrXPgF/On866z4Rfzp3Ov861X86UzrXOuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnzprPhc+BzrnOsc66zq5fzpTOtc+Fz4TOrc+BzrFfzqTPgc6vz4TOt1/OpM61z4TOrM+Bz4TOt1/OoM6tzrzPgM+EzrdfzqDOsc+BzrHPg866zrXPhc6uX86jzqzOss6yzrHPhM6/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ86az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnzprPhV/OlM61X86kz4FfzqTOtV/OoM61X86gzrFfzqPOsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnzrzOvCcgOiAnzpzOnCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ8+AzrwnIDogJ86gzpwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gKChpbnB1dCArICcnKS50b0xvd2VyQ2FzZSgpWzBdID09PSAnzrwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZSA6IC9bzqDOnF1cXC4/zpw/XFwuPy9pLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhckVsIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbzqPOrs68zrXPgc6xIHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vOkc+Nz4HOuc6/IHt9XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFt7fV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbzqfOuM61z4Ige31dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vPhM63zr0gz4DPgc6/zrfOs86/z43OvM61zr3Ot10gZGRkZCBbe31dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiBmdW5jdGlvbiAoa2V5LCBtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSB0aGlzLl9jYWxlbmRhckVsW2tleV0sXG4gICAgICAgICAgICAgICAgaG91cnMgPSBtb20gJiYgbW9tLmhvdXJzKCk7XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvdXRwdXQpKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmFwcGx5KG1vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoJ3t9JywgKGhvdXJzICUgMTIgPT09IDEgPyAnz4PPhM63JyA6ICfPg8+EzrnPgicpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ8+DzrUgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDPgM+BzrnOvScsXG4gICAgICAgICAgICBzIDogJ867zq/Os86xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsScsXG4gICAgICAgICAgICBzcyA6ICclZCDOtM61z4XPhM61z4HPjM67zrXPgM+EzrEnLFxuICAgICAgICAgICAgbSA6ICfOrc69zrEgzrvOtc+Az4TPjCcsXG4gICAgICAgICAgICBtbSA6ICclZCDOu861z4DPhM6sJyxcbiAgICAgICAgICAgIGggOiAnzrzOr86xIM+Oz4HOsScsXG4gICAgICAgICAgICBoaCA6ICclZCDPjs+BzrXPgicsXG4gICAgICAgICAgICBkIDogJ868zq/OsSDOvM6tz4HOsScsXG4gICAgICAgICAgICBkZCA6ICclZCDOvM6tz4HOtc+CJyxcbiAgICAgICAgICAgIE0gOiAnzq3Ovc6xz4IgzrzOrs69zrHPgicsXG4gICAgICAgICAgICBNTSA6ICclZCDOvM6uzr3Otc+CJyxcbiAgICAgICAgICAgIHkgOiAnzq3Ovc6xz4Igz4fPgc+Mzr3Ov8+CJyxcbiAgICAgICAgICAgIHl5IDogJyVkIM+Hz4HPjM69zrnOsSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9zrcvLFxuICAgICAgICBvcmRpbmFsOiAnJWTOtycsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDRzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5TRyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLVNHJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5TRztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuQXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1hdScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkF1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5DYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWNhJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBELCBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbkNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW5HYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VuLWdiJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5HYjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuSWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pZScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5JZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuSWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1pbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5JbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuTnogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1ueicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbk56O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcm9fZmVicnVhcm9fbWFydG9fYXByaWxvX21ham9fanVuaW9fanVsaW9fYcWtZ3VzdG9fc2VwdGVtYnJvX29rdG9icm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hxa1nX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGltYW7EiW9fbHVuZG9fbWFyZG9fbWVya3JlZG9fxLVhxa1kb192ZW5kcmVkb19zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltX2x1bl9tYXJkX21lcmtfxLVhxa1fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfxLVhX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnRFstYSBkZV0gTU1NTSwgWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRFstYSBkZV0gTU1NTSwgWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFtsYV0gRFstYSBkZV0gTU1NTSwgWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL1thcF1cXC50XFwubS9pLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwLnQubS4nIDogJ1AuVC5NLic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2EudC5tLicgOiAnQS5ULk0uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tIb2RpYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tNb3JnYcWtIGplXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllcmHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3Bhc2ludGFdIGRkZGQgW2plXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncG9zdCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2FudGHFrSAlcycsXG4gICAgICAgICAgICBzIDogJ3Nla3VuZG9qJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZG9qJyxcbiAgICAgICAgICAgIG0gOiAnbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b2onLFxuICAgICAgICAgICAgaCA6ICdob3JvJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcm9qJyxcbiAgICAgICAgICAgIGQgOiAndGFnbycsLy9uZSAnZGl1cm5vJywgxIlhciBlc3RhcyB1eml0YSBwb3IgcHJva3NpbXVtb1xuICAgICAgICAgICAgZGQgOiAnJWQgdGFnb2onLFxuICAgICAgICAgICAgTSA6ICdtb25hdG8nLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9uYXRvaicsXG4gICAgICAgICAgICB5IDogJ2phcm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFyb2onXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfWEvLFxuICAgICAgICBvcmRpbmFsIDogJyVkYScsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eZW5lL2ksIC9eZmViL2ksIC9ebWFyL2ksIC9eYWJyL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYWdvL2ksIC9ec2VwL2ksIC9eb2N0L2ksIC9ebm92L2ksIC9eZGljL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNEbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLWRvJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eSA6ICclZCBhw7FvcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNEbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmVuZS9pLCAvXmZlYi9pLCAvXm1hci9pLCAvXmFici9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmFnby9pLCAvXnNlcC9pLCAvXm9jdC9pLCAvXm5vdi9pLCAvXmRpYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzVXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy11cycsIHtcbiAgICAgICAgbW9udGhzIDogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzIDogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYcOxb3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzVXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydERvdCA9ICdlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgbW9udGhzUGFyc2UgPSBbL15lbmUvaSwgL15mZWIvaSwgL15tYXIvaSwgL15hYnIvaSwgL15tYXkvaSwgL15qdW4vaSwgL15qdWwvaSwgL15hZ28vaSwgL15zZXAvaSwgL15vY3QvaSwgL15ub3YvaSwgL15kaWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZXxlbmVcXC4/fGZlYlxcLj98bWFyXFwuP3xhYnJcXC4/fG1heVxcLj98anVuXFwuP3xqdWxcXC4/fGFnb1xcLj98c2VwXFwuP3xvY3RcXC4/fG5vdlxcLj98ZGljXFwuPykvaTtcblxuICAgIHZhciBlcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleCA6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4IDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4IDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbaG95IGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDsWFuYSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW2EgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbYXllciBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBbcGFzYWRvIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdlbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2hhY2UgJXMnLFxuICAgICAgICAgICAgcyA6ICd1bm9zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTSA6ICd1biBtZXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhw7FvJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGHDsW9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzJyA6IFsnbcO1bmUgc2VrdW5kaScsICdtw7VuaSBzZWt1bmQnLCAncGFhciBzZWt1bmRpdCddLFxuICAgICAgICAgICAgJ3NzJzogW251bWJlciArICdzZWt1bmRpJywgbnVtYmVyICsgJ3Nla3VuZGl0J10sXG4gICAgICAgICAgICAnbScgOiBbJ8O8aGUgbWludXRpJywgJ8O8a3MgbWludXQnXSxcbiAgICAgICAgICAgICdtbSc6IFtudW1iZXIgKyAnIG1pbnV0aScsIG51bWJlciArICcgbWludXRpdCddLFxuICAgICAgICAgICAgJ2gnIDogWyfDvGhlIHR1bm5pJywgJ3R1bmQgYWVnYScsICfDvGtzIHR1bmQnXSxcbiAgICAgICAgICAgICdoaCc6IFtudW1iZXIgKyAnIHR1bm5pJywgbnVtYmVyICsgJyB0dW5kaSddLFxuICAgICAgICAgICAgJ2QnIDogWyfDvGhlIHDDpGV2YScsICfDvGtzIHDDpGV2J10sXG4gICAgICAgICAgICAnTScgOiBbJ2t1dSBhamEnLCAna3V1IGFlZ2EnLCAnw7xrcyBrdXUnXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIGt1dScsIG51bWJlciArICcga3V1ZCddLFxuICAgICAgICAgICAgJ3knIDogWyfDvGhlIGFhc3RhJywgJ2Fhc3RhJywgJ8O8a3MgYWFzdGEnXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIGFhc3RhJywgbnVtYmVyICsgJyBhYXN0YXQnXVxuICAgICAgICB9O1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFtrZXldWzJdID8gZm9ybWF0W2tleV1bMl0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2V0Jywge1xuICAgICAgICBtb250aHMgICAgICAgIDogJ2phYW51YXJfdmVlYnJ1YXJfbcOkcnRzX2FwcmlsbF9tYWlfanV1bmlfanV1bGlfYXVndXN0X3NlcHRlbWJlcl9va3Rvb2Jlcl9ub3ZlbWJlcl9kZXRzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ICAgOiAnamFhbl92ZWVicl9tw6RydHNfYXByX21haV9qdXVuaV9qdXVsaV9hdWdfc2VwdF9va3Rfbm92X2RldHMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzICAgICAgOiAncMO8aGFww6Rldl9lc21hc3DDpGV2X3RlaXNpcMOkZXZfa29sbWFww6Rldl9uZWxqYXDDpGV2X3JlZWRlX2xhdXDDpGV2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1BfRV9UX0tfTl9SX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluICAgOiAnUF9FX1RfS19OX1JfTCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCAgIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCAgICA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMICAgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCAgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbVMOkbmEsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5ICA6ICdbSG9tbWUsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbSsOkcmdtaW5lXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tFaWxlLF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0VlbG1pbmVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHDDpHJhc3QnLFxuICAgICAgICAgICAgcGFzdCAgIDogJyVzIHRhZ2FzaScsXG4gICAgICAgICAgICBzICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3MgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG0gICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaCAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgICAgIDogJyVkIHDDpGV2YScsXG4gICAgICAgICAgICBNICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBldSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2V1Jywge1xuICAgICAgICBtb250aHMgOiAndXJ0YXJyaWxhX290c2FpbGFfbWFydHhvYV9hcGlyaWxhX21haWF0emFfZWthaW5hX3V6dGFpbGFfYWJ1enR1YV9pcmFpbGFfdXJyaWFfYXphcm9hX2FiZW5kdWEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3VydC5fb3RzLl9tYXIuX2FwaS5fbWFpLl9la2EuX3V6dC5fYWJ1Ll9pcmEuX3Vyci5fYXphLl9hYmUuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnaWdhbmRlYV9hc3RlbGVoZW5hX2FzdGVhcnRlYV9hc3RlYXprZW5hX29zdGVndW5hX29zdGlyYWxhX2xhcnVuYmF0YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdpZy5fYWwuX2FyLl9hei5fb2cuX29sLl9sci4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2lnX2FsX2FyX2F6X29nX29sX2xyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWVtrb10gTU1NTVtyZW5dIERbYV0nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZLU0tRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZW2tvXSBNTU0gRFthXScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWVtrb10gTU1NIERbYV0gSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdkZGQsIFlZWVlba29dIE1NTSBEW2FdIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW2dhdXJdIExUW2V0YW5dJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2JpaGFyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUW2V0YW5dJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2F0em9dIExUW2V0YW5dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1thdXJyZWtvXSBkZGRkIExUW2V0YW5dJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBiYXJydScsXG4gICAgICAgICAgICBwYXN0IDogJ2R1ZWxhICVzJyxcbiAgICAgICAgICAgIHMgOiAnc2VndW5kbyBiYXR6dWsnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtIDogJ21pbnV0dSBiYXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR1JyxcbiAgICAgICAgICAgIGggOiAnb3JkdSBiYXQnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JkdScsXG4gICAgICAgICAgICBkIDogJ2VndW4gYmF0JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGVndW4nLFxuICAgICAgICAgICAgTSA6ICdoaWxhYmV0ZSBiYXQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgaGlsYWJldGUnLFxuICAgICAgICAgICAgeSA6ICd1cnRlIGJhdCcsXG4gICAgICAgICAgICB5eSA6ICclZCB1cnRlJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfbsScsXG4gICAgICAgICcyJzogJ9uyJyxcbiAgICAgICAgJzMnOiAn27MnLFxuICAgICAgICAnNCc6ICfbtCcsXG4gICAgICAgICc1JzogJ9u1JyxcbiAgICAgICAgJzYnOiAn27YnLFxuICAgICAgICAnNyc6ICfbtycsXG4gICAgICAgICc4JzogJ9u4JyxcbiAgICAgICAgJzknOiAn27knLFxuICAgICAgICAnMCc6ICfbsCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfbsSc6ICcxJyxcbiAgICAgICAgJ9uyJzogJzInLFxuICAgICAgICAn27MnOiAnMycsXG4gICAgICAgICfbtCc6ICc0JyxcbiAgICAgICAgJ9u1JzogJzUnLFxuICAgICAgICAn27YnOiAnNicsXG4gICAgICAgICfbtyc6ICc3JyxcbiAgICAgICAgJ9u4JzogJzgnLFxuICAgICAgICAn27knOiAnOScsXG4gICAgICAgICfbsCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgZmEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmYScsIHtcbiAgICAgICAgbW9udGhzIDogJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9qY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn24zaqVxcdTIwMGPYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh1xcdTIwMGPYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrFxcdTIwMGPYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn24xf2K9f2LNf2oZf2b5f2Kxf2LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZgtio2YQg2KfYsiDYuNmH2LEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2LnYryDYp9iyINi42YfYsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KfZhdix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2YHYsdiv2Kcg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9iz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vYr9uM2LHZiNiyINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9iv2LEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDZvtuM2LQnLFxuICAgICAgICAgICAgcyA6ICfahtmG2K8g2KvYp9mG24zZhycsXG4gICAgICAgICAgICBzcyA6ICfYq9in2YbbjNmHIGQlJyxcbiAgICAgICAgICAgIG0gOiAn24zaqSDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLbjNmC2YcnLFxuICAgICAgICAgICAgaCA6ICfbjNqpINiz2KfYudiqJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudiqJyxcbiAgICAgICAgICAgIGQgOiAn24zaqSDYsdmI2LInLFxuICAgICAgICAgICAgZGQgOiAnJWQg2LHZiNiyJyxcbiAgICAgICAgICAgIE0gOiAn24zaqSDZhdin2YcnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2YXYp9mHJyxcbiAgICAgICAgICAgIHkgOiAn24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9mEJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b27At27ldL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3ZhS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTZhScsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbnVtYmVyc1Bhc3QgPSAnbm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqw6Qgdmlpc2kga3V1c2kgc2VpdHNlbcOkbiBrYWhkZWtzYW4geWhkZWtzw6RuJy5zcGxpdCgnICcpLFxuICAgICAgICBudW1iZXJzRnV0dXJlID0gW1xuICAgICAgICAgICAgJ25vbGxhJywgJ3loZGVuJywgJ2thaGRlbicsICdrb2xtZW4nLCAnbmVsasOkbicsICd2aWlkZW4nLCAna3V1ZGVuJyxcbiAgICAgICAgICAgIG51bWJlcnNQYXN0WzddLCBudW1iZXJzUGFzdFs4XSwgbnVtYmVyc1Bhc3RbOV1cbiAgICAgICAgXTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtdXV0YW1hbiBzZWt1bm5pbicgOiAnbXV1dGFtYSBzZWt1bnRpJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnc2VrdW5uaW4nIDogJ3Nla3VudGlhJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ21pbnV1dGluJyA6ICdtaW51dXR0aWEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGknO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3R1bm5pbicgOiAndHVudGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdww6RpdsOkbicgOiAncMOkaXbDpCc7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6TDpCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXVzaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNGdXR1cmUgPyAna3V1a2F1ZGVuJyA6ICdrdXVrYXV0dGEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvc2knO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3Z1b2RlbicgOiAndnVvdHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkgKyAnICcgKyByZXN1bHQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZlcmJhbE51bWJlcihudW1iZXIsIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgPCAxMCA/IChpc0Z1dHVyZSA/IG51bWJlcnNGdXR1cmVbbnVtYmVyXSA6IG51bWJlcnNQYXN0W251bWJlcl0pIDogbnVtYmVyO1xuICAgIH1cblxuICAgIHZhciBmaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZpJywge1xuICAgICAgICBtb250aHMgOiAndGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAndGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1X21hX3RpX2tlX3RvX3BlX2xhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tYV90aV9rZV90b19wZV9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0RvIE1NTU1bdGFdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0RvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0nLFxuICAgICAgICAgICAgbCA6ICdELk0uWVlZWScsXG4gICAgICAgICAgICBsbCA6ICdEbyBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGwgOiAnRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbdMOkbsOkw6RuXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1todW9tZW5uYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2xvXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tlaWxlbl0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgcMOkw6RzdMOkJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2l0dGVuJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmbycsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnNfYXByw61sX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVkYWd1cl9tw6FuYWRhZ3VyX3TDvXNkYWd1cl9taWt1ZGFndXJfaMOzc2RhZ3VyX2Zyw61nZ2phZGFndXJfbGV5Z2FyZGFndXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc3VuX23DoW5fdMO9c19taWtfaMOzc19mcsOtX2xleScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc3VfbcOhX3TDvV9taV9ow7NfZnJfbGUnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0sIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbw40gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbw40gbW9yZ2luIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vDjSBnasOhciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tzw63DsHN0dV0gZGRkZCBba2xdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd1bSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHPDrcOwYW5pJyxcbiAgICAgICAgICAgIHMgOiAnZsOhIHNla3VuZCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRpcicsXG4gICAgICAgICAgICBtIDogJ2VpbiBtaW51dHR1cicsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHRpcicsXG4gICAgICAgICAgICBoIDogJ2VpbiB0w61taScsXG4gICAgICAgICAgICBoaCA6ICclZCB0w61tYXInLFxuICAgICAgICAgICAgZCA6ICdlaW4gZGFndXInLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTSA6ICdlaW4gbcOhbmHDsHVyJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DoW5hw7BpcicsXG4gICAgICAgICAgICB5IDogJ2VpdHQgw6FyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGZyQ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jYScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHMgOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbSA6ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQgOiAndW4gam91cicsXG4gICAgICAgICAgICBkZCA6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNIDogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFucydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmckNhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZnJDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyLWNoJywge1xuICAgICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtIDogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8ZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGZyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnInLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzIDogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG0gOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkIDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQgOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTSA6ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhbicsXG4gICAgICAgICAgICB5eSA6ICclZCBhbnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnwpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXR1cm4gJ2UnIHdoZW4gZGF5IG9mIG1vbnRoID4gMS4gTW92ZSB0aGlzIGNhc2UgaW5zaWRlXG4gICAgICAgICAgICAgICAgLy8gYmxvY2sgZm9yIG1hc2N1bGluZSB3b3JkcyBiZWxvdy5cbiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzMzNzVcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJycpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tYWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBmeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2Z5Jywge1xuICAgICAgICBtb250aHMgOiAnamFubmV3YXJpc19mZWJyZXdhcmlzX21hYXJ0X2FwcmlsX21hYWllX2p1bnlfanVseV9hdWd1c3R1c19zZXB0aW1iZXJfb2t0b2Jlcl9ub3ZpbWJlcl9kZXNpbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnc25laW5fbW9hbmRlaV90aWlzZGVpX3dvYW5zZGVpX3RvbmdlcnNkZWlfZnJlZWRfc25lb24nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc2kuX21vLl90aS5fd28uX3RvLl9mci5fc28uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTaV9Nb19UaV9Xb19Ub19Gcl9Tbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toam9lZCBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb2FybiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tqdXN0ZXIgb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW8O0ZnLDu25lXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb2VyICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgbHluJyxcbiAgICAgICAgICAgIHMgOiAnaW4gcGVhciBzZWtvbmRlbicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRlbicsXG4gICAgICAgICAgICBtIDogJ2llbiBtaW7DunQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoIDogJ2llbiBvZXJlJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9lcmVuJyxcbiAgICAgICAgICAgIGQgOiAnaWVuIGRlaScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNIDogJ2llbiBtb2FubmUnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9hbm5lbicsXG4gICAgICAgICAgICB5IDogJ2llbiBqaWVyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGppZXJyZW4nXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwKSA/ICdzdGUnIDogJ2RlJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICdFYW7DoWlyJywgJ0ZlYWJocmEnLCAnTcOhcnRhJywgJ0FpYnJlw6FuJywgJ0JlYWx0YWluZScsICdNw6lpdGhlYW1oJywgJ0nDumlsJywgJ0zDum5hc2EnLCAnTWXDoW4gRsOzbWhhaXInLCAnRGVhaXJlYWRoIEbDs21oYWlyJywgJ1NhbWhhaW4nLCAnTm9sbGFpZydcbiAgICBdO1xuXG4gICAgdmFyIG1vbnRoc1Nob3J0ID0gWydFYW7DoScsICdGZWFiJywgJ03DoXJ0JywgJ0FpYnInLCAnQmVhbCcsICdNw6lpdCcsICdJw7ppbCcsICdMw7puYScsICdNZcOhbicsICdEZWFpJywgJ1NhbWgnLCAnTm9sbCddO1xuXG4gICAgdmFyIHdlZWtkYXlzID0gWydEw6kgRG9taG5haWdoJywgJ0TDqSBMdWFpbicsICdEw6kgTcOhaXJ0JywgJ0TDqSBDw6lhZGFvaW4nLCAnRMOpYXJkYW9pbicsICdEw6kgaEFvaW5lJywgJ0TDqSBTYXRoYXJuJ107XG5cbiAgICB2YXIgd2Vla2RheXNTaG9ydCA9IFsnRG9tJywgJ0x1YScsICdNw6FpJywgJ0PDqWEnLCAnRMOpYScsICdoQW8nLCAnU2F0J107XG5cbiAgICB2YXIgd2Vla2RheXNNaW4gPSBbJ0RvJywgJ0x1JywgJ03DoScsICdDZScsICdEw6knLCAnaEEnLCAnU2EnXTtcblxuICAgIHZhciBnYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dhJywge1xuICAgICAgICBtb250aHM6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluOiB3ZWVrZGF5c01pbixcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0lubml1IGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0Ftw6FyYWNoIGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lubsOpIGFpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtzZW8gY2FpdGVdIFthZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ2kgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIMOzIHNoaW4nLFxuICAgICAgICAgICAgczogJ2PDunBsYSBzb2ljaW5kJyxcbiAgICAgICAgICAgIHNzOiAnJWQgc29pY2luZCcsXG4gICAgICAgICAgICBtOiAnbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbsOzaW3DqWFkJyxcbiAgICAgICAgICAgIGg6ICd1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBoaDogJyVkIHVhaXIgYW4gY2hsb2lnJyxcbiAgICAgICAgICAgIGQ6ICdsw6EnLFxuICAgICAgICAgICAgZGQ6ICclZCBsw6EnLFxuICAgICAgICAgICAgTTogJ23DrScsXG4gICAgICAgICAgICBNTTogJyVkIG3DrScsXG4gICAgICAgICAgICB5OiAnYmxpYWluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgYmxpYWluJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gbnVtYmVyID09PSAxID8gJ2QnIDogbnVtYmVyICUgMTAgPT09IDIgPyAnbmEnIDogJ21oJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAnQW0gRmFvaWxsZWFjaCcsICdBbiBHZWFycmFuJywgJ0FtIE3DoHJ0JywgJ0FuIEdpYmxlYW4nLCAnQW4gQ8OoaXRlYW4nLCAnQW4gdC3DkmdtaGlvcycsICdBbiB0LUl1Y2hhcicsICdBbiBMw7luYXN0YWwnLCAnQW4gdC1TdWx0YWluJywgJ0FuIETDoG1oYWlyJywgJ0FuIHQtU2FtaGFpbicsICdBbiBEw7liaGxhY2hkJ1xuICAgIF07XG5cbiAgICB2YXIgbW9udGhzU2hvcnQgPSBbJ0Zhb2knLCAnR2VhcicsICdNw6BydCcsICdHaWJsJywgJ0PDqGl0JywgJ8OSZ21oJywgJ0l1Y2gnLCAnTMO5bicsICdTdWx0JywgJ0TDoG1oJywgJ1NhbWgnLCAnRMO5YmgnXTtcblxuICAgIHZhciB3ZWVrZGF5cyA9IFsnRGlkw7JtaG5haWNoJywgJ0RpbHVhaW4nLCAnRGltw6BpcnQnLCAnRGljaWFkYWluJywgJ0RpYXJkYW9pbicsICdEaWhhb2luZScsICdEaXNhdGhhaXJuZSddO1xuXG4gICAgdmFyIHdlZWtkYXlzU2hvcnQgPSBbJ0RpZCcsICdEaWwnLCAnRGltJywgJ0RpYycsICdEaWEnLCAnRGloJywgJ0RpcyddO1xuXG4gICAgdmFyIHdlZWtkYXlzTWluID0gWydEw7InLCAnTHUnLCAnTcOgJywgJ0NpJywgJ0FyJywgJ0hhJywgJ1NhJ107XG5cbiAgICB2YXIgZ2QgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnZCcsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRoc1Nob3J0LFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IHdlZWtkYXlzU2hvcnQsXG4gICAgICAgIHdlZWtkYXlzTWluIDogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tBbi1kaXVnaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0EtbcOgaXJlYWNoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tBbi1kw6ggYWlnXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtzZW8gY2hhaWRoXSBbYWlnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnYW5uIGFuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnYmhvIGNoaW9ubiAlcycsXG4gICAgICAgICAgICBzIDogJ2JlYWdhbiBkaW9nYW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgZGlvZ2FuJyxcbiAgICAgICAgICAgIG0gOiAnbWlvbmFpZCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW9uYWlkZWFuJyxcbiAgICAgICAgICAgIGggOiAndWFpcicsXG4gICAgICAgICAgICBoaCA6ICclZCB1YWlyZWFuJyxcbiAgICAgICAgICAgIGQgOiAnbGF0aGEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgbGF0aGEnLFxuICAgICAgICAgICAgTSA6ICdtw6xvcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6xvc2FuJyxcbiAgICAgICAgICAgIHkgOiAnYmxpYWRobmEnLFxuICAgICAgICAgICAgeXkgOiAnJWQgYmxpYWRobmEnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn0oZHxuYXxtaCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnZDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGdsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2wnLCB7XG4gICAgICAgIG1vbnRocyA6ICd4YW5laXJvX2ZlYnJlaXJvX21hcnpvX2FicmlsX21haW9feHXDsW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3hhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dcOxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9taW5nb19sdW5zX21hcnRlc19tw6lyY29yZXNfeG92ZXNfdmVucmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbcOpci5feG92Ll92ZW4uX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9tw6lfeG9fdmVfc8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveGUgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxw6EgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoXMnIDogJ8OhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFsnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb250ZSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbb10gZGRkZCBbcGFzYWRvICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6ICdhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHN0cikge1xuICAgICAgICAgICAgICAgIGlmIChzdHIuaW5kZXhPZigndW4nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ24nICsgc3RyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuICcgKyBzdHI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICdoYWkgJXMnLFxuICAgICAgICAgICAgcyA6ICd1bnMgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VuaGEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VuIGTDrWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZMOtYXMnLFxuICAgICAgICAgICAgTSA6ICd1biBtZXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhbm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5vcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2w7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAncyc6IFsndGhvZGRlIHNlY29uZGFuaW0nLCAndGhvZGRlIHNlY29uZCddLFxuICAgICAgICAgICAgJ3NzJzogW251bWJlciArICcgc2Vjb25kYW5pbScsIG51bWJlciArICcgc2Vjb25kJ10sXG4gICAgICAgICAgICAnbSc6IFsnZWthIG1pbnRhbicsICdlayBtaW51dGUnXSxcbiAgICAgICAgICAgICdtbSc6IFtudW1iZXIgKyAnIG1pbnRhbmltJywgbnVtYmVyICsgJyBtaW50YW0nXSxcbiAgICAgICAgICAgICdoJzogWydla2Egdm9yYW4nLCAnZWsgdm9yJ10sXG4gICAgICAgICAgICAnaGgnOiBbbnVtYmVyICsgJyB2b3JhbmltJywgbnVtYmVyICsgJyB2b3JhbSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VrYSBkaXNhbicsICdlayBkaXMnXSxcbiAgICAgICAgICAgICdkZCc6IFtudW1iZXIgKyAnIGRpc2FuaW0nLCBudW1iZXIgKyAnIGRpcyddLFxuICAgICAgICAgICAgJ00nOiBbJ2VrYSBtaG9pbmVhbicsICdlayBtaG9pbm8nXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIG1ob2luZWFuaW0nLCBudW1iZXIgKyAnIG1ob2luZSddLFxuICAgICAgICAgICAgJ3knOiBbJ2VrYSB2b3JzYW4nLCAnZWsgdm9yb3MnXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIHZvcnNhbmltJywgbnVtYmVyICsgJyB2b3JzYW0nXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGdvbUxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnb20tbGF0bicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVyX0ZlYnJlcl9NYXJzX0FicmlsX01haV9KdW5fSnVsYWlfQWdvc3RfU2V0ZW1icl9PdHVicl9Ob3ZlbWJyX0RlemVtYnInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbi5fRmViLl9NYXJzX0Fici5fTWFpX0p1bl9KdWwuX0Fnby5fU2V0Ll9PdHUuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ0FpdGFyX1NvbWFyX01vbmdsbGFyX0J1ZHZhcl9CcmVzdGFyX1N1a3Jhcl9Tb25cXCd2YXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQWl0Ll9Tb20uX01vbi5fQnVkLl9CcmUuX1N1ay5fU29uLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWlfU21fTW9fQnVfQnJfU3VfU24nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyBbdmF6dGFdJyxcbiAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NW2FjaGVhXSBEbywgWVlZWSwgQSBoOm1tIFt2YXp0YV0nLFxuICAgICAgICAgICAgbGxsbDogJ2RkZCwgRCBNTU0gWVlZWSwgQSBoOm1tIFt2YXp0YV0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tBaXpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRmFsZWFtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tJZXRhIHRvXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbS2FsXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tGYXRsb10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFkaW0nLFxuICAgICAgICAgICAgcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn0oZXIpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgb3JkaW5hbCAnZXInIG9ubHkgYXBwbGllcyB0byBkYXkgb2YgdGhlIG1vbnRoXG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnZXInO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcmF0aXxzb2thbGxpfGRvbnBhcmFtfHNhbmplLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3JhdGknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb2thbGxpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2RvbnBhcmFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID4gMTIgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NhbmplJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb2thbGxpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkb25wYXJhbSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2FuamUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhdGknO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ29tTGF0bjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgICAgICcxJzogJ+CrpycsXG4gICAgICAgICAgICAnMic6ICfgq6gnLFxuICAgICAgICAgICAgJzMnOiAn4KupJyxcbiAgICAgICAgICAgICc0JzogJ+CrqicsXG4gICAgICAgICAgICAnNSc6ICfgq6snLFxuICAgICAgICAgICAgJzYnOiAn4KusJyxcbiAgICAgICAgICAgICc3JzogJ+CrrScsXG4gICAgICAgICAgICAnOCc6ICfgq64nLFxuICAgICAgICAgICAgJzknOiAn4KuvJyxcbiAgICAgICAgICAgICcwJzogJ+CrpidcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAgICAgJ+Crpyc6ICcxJyxcbiAgICAgICAgICAgICfgq6gnOiAnMicsXG4gICAgICAgICAgICAn4KupJzogJzMnLFxuICAgICAgICAgICAgJ+Crqic6ICc0JyxcbiAgICAgICAgICAgICfgq6snOiAnNScsXG4gICAgICAgICAgICAn4KusJzogJzYnLFxuICAgICAgICAgICAgJ+CrrSc6ICc3JyxcbiAgICAgICAgICAgICfgq64nOiAnOCcsXG4gICAgICAgICAgICAn4KuvJzogJzknLFxuICAgICAgICAgICAgJ+Crpic6ICcwJ1xuICAgICAgICB9O1xuXG4gICAgdmFyIGd1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ3UnLCB7XG4gICAgICAgIG1vbnRoczogJ+CqnOCqvuCqqOCrjeCqr+CrgeCqhuCqsOCrgF/gqqvgq4fgqqzgq43gqrDgq4HgqobgqrDgq4Bf4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqv+Cqsl/gqq7gq4df4Kqc4KuC4KqoX+CqnOCrgeCqsuCqvuCqiF/gqpHgqpfgqrjgq43gqp9f4Kq44Kqq4KuN4Kqf4KuH4Kqu4KuN4Kqs4KqwX+CqkeCqleCrjeCqn+CrjeCqrOCqsF/gqqjgqrXgq4fgqq7gq43gqqzgqrBf4Kqh4Kq/4Kq44KuH4Kqu4KuN4Kqs4KqwJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ+CqnOCqvuCqqOCrjeCqr+CrgS5f4Kqr4KuH4Kqs4KuN4Kqw4KuBLl/gqq7gqr7gqrDgq43gqppf4KqP4Kqq4KuN4Kqw4Kq/Ll/gqq7gq4df4Kqc4KuC4KqoX+CqnOCrgeCqsuCqvi5f4KqR4KqXLl/gqrjgqqrgq43gqp/gq4cuX+CqkeCqleCrjeCqn+CrjS5f4Kqo4Kq14KuHLl/gqqHgqr/gqrjgq4cuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ+CqsOCqteCqv+CqteCqvuCqsF/gqrjgq4vgqq7gqrXgqr7gqrBf4Kqu4KqC4KqX4Kqz4Kq14Kq+4KqwX+CqrOCrgeCqp+CrjeCqteCqvuCqsF/gqpfgq4HgqrDgq4HgqrXgqr7gqrBf4Kq24KuB4KqV4KuN4Kqw4Kq14Kq+4KqwX+CqtuCqqOCqv+CqteCqvuCqsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+CqsOCqteCqv1/gqrjgq4vgqq5f4Kqu4KqC4KqX4KqzX+CqrOCrgeCqp+CrjV/gqpfgq4HgqrDgq4Ff4Kq24KuB4KqV4KuN4KqwX+CqtuCqqOCqvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfgqrBf4Kq44KuLX+CqruCqgl/gqqzgq4Ff4KqX4KuBX+CqtuCrgV/gqrYnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0EgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTFRTOiAnQSBoOm1tOnNzIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4KqG4KqcXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+CqleCqvuCqsuCrh10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+Cql+Cqh+CqleCqvuCqsuCrh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4Kqq4Kq+4Kqb4Kqy4Kq+XSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXMg4Kqu4Kq+JyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDgqqrgq4fgqrngqrLgqr4nLFxuICAgICAgICAgICAgczogJ+CqheCqruCrgeCqlSDgqqrgqrPgq4snLFxuICAgICAgICAgICAgc3M6ICclZCDgqrjgq4fgqpXgqoLgqqEnLFxuICAgICAgICAgICAgbTogJ+Cqj+CqlSDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgbW06ICclZCDgqq7gqr/gqqjgqr/gqp8nLFxuICAgICAgICAgICAgaDogJ+Cqj+CqlSDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgaGg6ICclZCDgqpXgqrLgqr7gqpUnLFxuICAgICAgICAgICAgZDogJ+Cqj+CqlSDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgZGQ6ICclZCDgqqbgqr/gqrXgqrgnLFxuICAgICAgICAgICAgTTogJ+Cqj+CqlSDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgTU06ICclZCDgqq7gqrngqr/gqqjgq4snLFxuICAgICAgICAgICAgeTogJ+Cqj+CqlSDgqrXgqrDgq43gqrcnLFxuICAgICAgICAgICAgeXk6ICclZCDgqrXgqrDgq43gqrcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgq6fgq6jgq6ngq6rgq6vgq6zgq63gq67gq6/gq6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIEd1amFyYXRpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIEd1amFyYXRpLlxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Kqw4Kq+4KqkfOCqrOCqquCri+CqsHzgqrjgqrXgqr7gqrB84Kq44Kq+4KqC4KqcLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kqw4Kq+4KqkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq14Kq+4KqwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CqrOCqquCri+CqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kq44Kq+4KqC4KqcJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kq44Kq14Kq+4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqqzgqqrgq4vgqrAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqvuCqguCqnCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqw4Kq+4KqkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNiAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBndTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGhlID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGUnLCB7XG4gICAgICAgIG1vbnRocyA6ICfXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157Xsycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9eQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9eQX9eRX9eSX9eTX9eUX9eVX9epJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBb15FdTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFvXkV1NTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIFvXkV1NTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBsbCA6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9eU15nXldedINeR1r5dTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb157Xl9eoINeR1r5dTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9eQ16rXnteV15wg15HWvl1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb15HXmdeV151dIGRkZGQgW9eU15DXl9eo15XXnyDXkdep16LXlF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9eR16LXldeTICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn15zXpNeg15kgJXMnLFxuICAgICAgICAgICAgcyA6ICfXnteh16TXqCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIHNzIDogJyVkINep16DXmdeV16onLFxuICAgICAgICAgICAgbSA6ICfXk9en15QnLFxuICAgICAgICAgICAgbW0gOiAnJWQg15PXp9eV16onLFxuICAgICAgICAgICAgaCA6ICfXqdei15QnLFxuICAgICAgICAgICAgaGggOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16LXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16LXldeqJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkIDogJ9eZ15XXnScsXG4gICAgICAgICAgICBkZCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn15nXldee15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15nXnteZ150nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE0gOiAn15fXldeT16knLFxuICAgICAgICAgICAgTU0gOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eX15XXk9ep15nXmdedJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg15fXldeT16nXmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5IDogJ9ep16DXlCcsXG4gICAgICAgICAgICB5eSA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAn16nXoNeq15nXmdedJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciAlIDEwID09PSAwICYmIG51bWJlciAhPT0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoNeUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg16nXoNeZ150nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv15DXl9eUXCLXpnzXnNek16DXlFwi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzXkdeR15XXp9eofNeR16LXqNeRL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijXkNeX15RcItemfNeQ15fXqNeZINeU16bXlNeo15nXmdedfNeR16LXqNeRKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15zXpNeg15XXqiDXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXkdeV16fXqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ9ec16TXoNeUXCLXpicgOiAn15zXpNeg15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXkNeX15RcItemJyA6ICfXkNeX16jXmSDXlNem15TXqNeZ15nXnSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn15HXoteo15EnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+ClpycsXG4gICAgICAgICcyJzogJ+ClqCcsXG4gICAgICAgICczJzogJ+ClqScsXG4gICAgICAgICc0JzogJ+ClqicsXG4gICAgICAgICc1JzogJ+ClqycsXG4gICAgICAgICc2JzogJ+ClrCcsXG4gICAgICAgICc3JzogJ+ClrScsXG4gICAgICAgICc4JzogJ+ClricsXG4gICAgICAgICc5JzogJ+ClrycsXG4gICAgICAgICcwJzogJ+ClpidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgJ+Clpic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgaGkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoaScsIHtcbiAgICAgICAgbW9udGhzIDogJ+CknOCkqOCkteCksOClgF/gpKvgpLzgpLDgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliOCksl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLjgpY3gpKRf4KS44KS/4KSk4KSu4KWN4KSs4KSwX+CkheCkleCljeCkn+ClguCkrOCksF/gpKjgpLXgpK7gpY3gpKzgpLBf4KSm4KS/4KS44KSu4KWN4KSs4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgpJzgpKguX+Ckq+CkvOCksC5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliC5f4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLIuX+CkheCkly5f4KS44KS/4KSkLl/gpIXgpJXgpY3gpJ/gpYIuX+CkqOCktS5f4KSm4KS/4KS4Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLLgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSyX+CkrOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCkvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgpJXgpLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgpK7gpYfgpIInLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgpKrgpLngpLLgpYcnLFxuICAgICAgICAgICAgcyA6ICfgpJXgpYHgpJsg4KS54KWAIOCkleCljeCkt+CkoycsXG4gICAgICAgICAgICBzcyA6ICclZCDgpLjgpYfgpJXgpILgpKEnLFxuICAgICAgICAgICAgbSA6ICfgpI/gpJUg4KSu4KS/4KSo4KSfJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCkruCkv+CkqOCknycsXG4gICAgICAgICAgICBoIDogJ+Ckj+CklSDgpJjgpILgpJ/gpL4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KSY4KSC4KSf4KWHJyxcbiAgICAgICAgICAgIGQgOiAn4KSP4KSVIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTSA6ICfgpI/gpJUg4KSu4KS54KWA4KSo4KWHJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCkruCkueClgOCkqOClhycsXG4gICAgICAgICAgICB5IDogJ+Ckj+CklSDgpLXgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4KS14KSw4KWN4KS3J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBIaW5kaSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBIaW5kaS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpHzgpLjgpYHgpKzgpLl84KSm4KWL4KSq4KS54KSwfOCktuCkvuCkri8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpYHgpKzgpLknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KWL4KSq4KS54KSwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLbgpL7gpK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KWB4KSs4KS5JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpYvgpKrgpLngpLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CktuCkvuCkric7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaGk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZG5hIG1pbnV0YScgOiAnamVkbmUgbWludXRlJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRhbiBzYXQnIDogJ2plZG5vZyBzYXRhJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2RhbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWMnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBociA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hyJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzaWplxI1uamFfdmVsamHEjWVfb8W+dWprYV90cmF2bmphX3N2aWJuamFfbGlwbmphX3NycG5qYV9rb2xvdm96YV9ydWpuYV9saXN0b3BhZGFfc3R1ZGVub2dhX3Byb3NpbmNhJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ3NpamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYycuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICdzaWouX3ZlbGouX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5ICA6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW2p1xI1lciB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWx1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Byb8WhbGldIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAncGFyIHNla3VuZGknLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB3ZWVrRW5kaW5ncyA9ICd2YXPDoXJuYXAgaMOpdGbFkW4ga2VkZGVuIHN6ZXJkw6FuIGNzw7x0w7ZydMO2a8O2biBww6ludGVrZW4gc3pvbWJhdG9uJy5zcGxpdCgnICcpO1xuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG51bSA9IG51bWJlcjtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCkgPyAnbsOpaMOhbnkgbcOhc29kcGVyYycgOiAnbsOpaMOhbnkgbcOhc29kcGVyY2UnO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCkgPyAnIG3DoXNvZHBlcmMnIDogJyBtw6Fzb2RwZXJjZSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBwZXJjJyA6ICcgcGVyY2UnKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDs3JhJyA6ICcgw7Nyw6FqYScpO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScgOiAnIMOzcsOhamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBuYXAnIDogJyBuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyBow7NuYXAnIDogJyBow7NuYXBqYScpO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZWd5JyArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDqXYnIDogJyDDqXZlJyk7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bSArIChpc0Z1dHVyZSB8fCB3aXRob3V0U3VmZml4ID8gJyDDqXYnIDogJyDDqXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3ZWVrKGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiAoaXNGdXR1cmUgPyAnJyA6ICdbbcO6bHRdICcpICsgJ1snICsgd2Vla0VuZGluZ3NbdGhpcy5kYXkoKV0gKyAnXSBMVFsta29yXSc7XG4gICAgfVxuXG4gICAgdmFyIGh1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaHUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbcOhcmNfw6Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc3plcHRfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3Zhc8Ohcm5hcF9ow6l0ZsWRX2tlZGRfc3plcmRhX2Nzw7x0w7ZydMO2a19ww6ludGVrX3N6b21iYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAndmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3ZfaF9rX3N6ZV9jc19wX3N6bycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS5NTS5ERC4nLFxuICAgICAgICAgICAgTEwgOiAnWVlZWS4gTU1NTSBELicsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWS4gTU1NTSBELiBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZGV8ZHUvaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCkgPT09ICd1JztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPT09IHRydWUgPyAnZGUnIDogJ0RFJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPT09IHRydWUgPyAnZHUnIDogJ0RVJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1ttYV0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbaG9sbmFwXSBMVFsta29yXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Vlay5jYWxsKHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW3RlZ25hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCBmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIG3Dumx2YScsXG4gICAgICAgICAgICBwYXN0IDogJyVzJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGh1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaHlBbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h5LWFtJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfVsNW41oLVttW+1aHWgNWrX9aD1aXVv9aA1b7VodaA1atf1bTVodaA1b/Vq1/VodW61oDVq9Ws1atf1bTVodW11avVvdWrX9Ww1bjWgtW21avVvdWrX9Ww1bjWgtWs1avVvdWrX9aF1aPVuNW91b/VuNW91atf1b3VpdW61b/VpdW01aLVpdaA1atf1bDVuNWv1b/VpdW01aLVpdaA1atf1bbVuNW11aXVtNWi1aXWgNWrX9Wk1aXVr9W/1aXVtNWi1aXWgNWrJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9Ww1bjWgtW21b7VodaAX9aD1aXVv9aA1b7VodaAX9W01aHWgNW/X9Wh1brWgNWr1axf1bTVodW11avVvV/VsNW41oLVttWr1b1f1bDVuNaC1azVq9W9X9aF1aPVuNW91b/VuNW9X9W91aXVutW/1aXVtNWi1aXWgF/VsNW41a/Vv9Wl1bTVotWl1oBf1bbVuNW11aXVtNWi1aXWgF/VpNWl1a/Vv9Wl1bTVotWl1oAnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn1bDVttW+X9aD1b/WgF/VtNaA1b9f1aHVutaAX9W01bXVvV/VsNW21b1f1bDVrNW9X9aF1aPVvV/VvdW61b9f1bDVr9W/X9W21bTVol/VpNWv1b8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Wv1avWgNWh1a/Vq1/VpdaA1a/VuNaC1bfVodWi1anVq1/VpdaA1aXWhNW31aHVotWp1atf1bnVuNaA1aXWhNW31aHVotWp1atf1bDVq9W21aPVt9Wh1aLVqdWrX9W41oLWgNWi1aHVqV/Vt9Wh1aLVodWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Wv1oDVr1/VpdaA1a9f1aXWgNaEX9W51oDWhF/VsNW21aNf1bjWgtaA1aJf1bfVotWpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDVttWjX9W41oLWgNWiX9W31aLVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINWpLicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg1akuLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINWpLiwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vVodW11b3WhdaAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9W+1aHVstWoXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9Wl1oDVpdWvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vVodW21oHVodWuXSBkZGRkIFvWhdaA1agg1arVodW01ahdIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDVsNWl1b/VuCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzINWh1bzVodW7JyxcbiAgICAgICAgICAgIHMgOiAn1bTVqyDWhNWh1bbVqyDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIHNzIDogJyVkINW+1aHVtdaA1a/VtdWh1bYnLFxuICAgICAgICAgICAgbSA6ICfWgNW41brVpScsXG4gICAgICAgICAgICBtbSA6ICclZCDWgNW41brVpScsXG4gICAgICAgICAgICBoIDogJ9Wq1aHVtCcsXG4gICAgICAgICAgICBoaCA6ICclZCDVqtWh1bQnLFxuICAgICAgICAgICAgZCA6ICfWhdaAJyxcbiAgICAgICAgICAgIGRkIDogJyVkINaF1oAnLFxuICAgICAgICAgICAgTSA6ICfVodW01avVvScsXG4gICAgICAgICAgICBNTSA6ICclZCDVodW01avVvScsXG4gICAgICAgICAgICB5IDogJ9W/1aHWgNWrJyxcbiAgICAgICAgICAgIHl5IDogJyVkINW/1aHWgNWrJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv1aPVq9W31aXWgNW+1aF81aHVvNWh1b7VuNW/1b7VoXzWgdWl1oDVpdWv1b7VoXzVpdaA1aXVr9W41bXVodW2LyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o1oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVtikkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVo9Wr1bfVpdaA1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aHVvNWh1b7VuNW/1b7VoSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1oHVpdaA1aXVr9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wl1oDVpdWv1bjVtdWh1bYnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn18XFxkezEsMn0tKNWr1bZ81oDVpCkvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERERvJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1avVtic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct1oDVpCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHlBbTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGlkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaWQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0FndF9TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ01pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ01nX1NuX1NsX1JiX0ttX0ptX1NiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hILm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISC5tbS5zcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2lhbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NvcmUnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2lhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb3JlJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0Jlc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbbGFsdSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbGFtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgeWFuZyBsYWx1JyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgZGV0aWsnLFxuICAgICAgICAgICAgc3MgOiAnJWQgZGV0aWsnLFxuICAgICAgICAgICAgbSA6ICdzZW1lbml0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGggOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGggOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQgOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTSA6ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHkgOiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eSA6ICclZCB0YWh1bidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaWQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIGlmIChuICUgMTAwID09PSAxMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobiAlIDEwID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ25va2tyYXIgc2Vrw7puZHVyJyA6ICdub2trcnVtIHNla8O6bmR1bSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWvDum5kdXInIDogJ3Nla8O6bmR1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla8O6bmRhJztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ23DrW7DunRhJyA6ICdtw61uw7p0dSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtw61uw7p0dXInIDogJ23DrW7DunR1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DrW7DunRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0dSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdrbHVra3VzdHVuZGlyJyA6ICdrbHVra3VzdHVuZHVtJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAna2x1a2t1c3R1bmQnO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdkYWcnIDogJ2RlZ2knO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWdhcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdkYWdhJyA6ICdkw7ZndW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkYWd1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7Bpcic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwaScgOiAnbcOhbnXDsHVtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOhbnXDsHVyJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChpc0Z1dHVyZSA/ICdtw6FudcOwJyA6ICdtw6FudcOwaScpO1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnw6FyJyA6ICfDoXJpJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FydW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGlzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXMnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW7DumFyX2ZlYnLDumFyX21hcnNfYXByw61sX21hw61fasO6bsOtX2rDumzDrV/DoWfDunN0X3NlcHRlbWJlcl9va3TDs2Jlcl9uw7N2ZW1iZXJfZGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYcOtX2rDum5fasO6bF/DoWfDul9zZXBfb2t0X27Ds3ZfZGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdW5udWRhZ3VyX23DoW51ZGFndXJfw75yacOwanVkYWd1cl9tacOwdmlrdWRhZ3VyX2ZpbW10dWRhZ3VyX2bDtnN0dWRhZ3VyX2xhdWdhcmRhZ3VyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1bl9tw6FuX8O+cmlfbWnDsF9maW1fZsO2c19sYXUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X03DoV/DnnJfTWlfRmlfRsO2X0xhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vDrSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vDoSBtb3JndW4ga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW8OtIGfDpnIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbc8Otw7Bhc3RhXSBkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdlZnRpciAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2Z5cmlyICVzIHPDrcOwYW4nLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6ICdrbHVra3VzdHVuZCcsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaXRDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0LWNoJywge1xuICAgICAgICBtb250aHMgOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKC9eWzAtOV0uKyQvKS50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyBmYScsXG4gICAgICAgICAgICBzIDogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGggOiAndW5cXCdvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQgOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNIDogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5IDogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5uaSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdENoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdpdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tX2x1bl9tYXJfbWVyX2dpb192ZW5fc2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9tZV9naV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPZ2dpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbRG9tYW5pIGFsbGVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJZXJpIGFsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCgvXlswLTldLiskLykudGVzdChzKSA/ICd0cmEnIDogJ2luJykgKyAnICcgKyBzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZmEnLFxuICAgICAgICAgICAgcyA6ICdhbGN1bmkgc2Vjb25kaScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRpJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoIDogJ3VuXFwnb3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yZScsXG4gICAgICAgICAgICBkIDogJ3VuIGdpb3JubycsXG4gICAgICAgICAgICBkZCA6ICclZCBnaW9ybmknLFxuICAgICAgICAgICAgTSA6ICd1biBtZXNlJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2knLFxuICAgICAgICAgICAgeSA6ICd1biBhbm5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFubmknXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWw6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBqYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2phJywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfml6Xmm5zml6Vf5pyI5puc5pelX+eBq+abnOaXpV/msLTmm5zml6Vf5pyo5puc5pelX+mHkeabnOaXpV/lnJ/mm5zml6UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpSBkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpShkZGQpIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5Y2I5YmNfOWNiOW+jC9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfljYjlvownO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOWJjSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2I5b6MJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vku4rml6VdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+aYjuaXpV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vdy53ZWVrKCkgPCB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vmnaXpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5pelXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53ZWVrKCkgPCBub3cud2VlaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnW+WFiOmAsV1kZGRkIExUJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ95pelLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5b6MJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICfmlbDnp5InLFxuICAgICAgICAgICAgc3MgOiAnJWTnp5InLFxuICAgICAgICAgICAgbSA6ICcx5YiGJyxcbiAgICAgICAgICAgIG1tIDogJyVk5YiGJyxcbiAgICAgICAgICAgIGggOiAnMeaZgumWkycsXG4gICAgICAgICAgICBoaCA6ICclZOaZgumWkycsXG4gICAgICAgICAgICBkIDogJzHml6UnLFxuICAgICAgICAgICAgZGQgOiAnJWTml6UnLFxuICAgICAgICAgICAgTSA6ICcx44O25pyIJyxcbiAgICAgICAgICAgIE1NIDogJyVk44O25pyIJyxcbiAgICAgICAgICAgIHkgOiAnMeW5tCcsXG4gICAgICAgICAgICB5eSA6ICclZOW5tCdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGphO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIganYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqdicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFyZXRfQXByaWxfTWVpX0p1bmlfSnVsaV9BZ3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vcGVtYmVyX0Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWVpX0p1bl9KdWxfQWdzX1NlcF9Pa3RfTm9wX0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTWluZ2d1X1NlbmVuX1NlbG9zb19SZWJ1X0tlbWlzX0plbXV3YWhfU2VwdHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTWluX1Nlbl9TZWxfUmViX0tlbV9KZW1fU2VwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdNZ19Tbl9TbF9SYl9LbV9KbV9TcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VuamluZ3xzaXlhbmd8c29udGVufG5kYWx1LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VuamluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzaXlhbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NvbnRlbicgfHwgbWVyaWRpZW0gPT09ICduZGFsdScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuamluZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpeWFuZyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbnRlbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbmRhbHUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0RpbnRlbiBwdW5pa28gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW01iZW5qYW5nIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2FsYSB3aW5naSBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBba2VwZW5na2VyIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnd29udGVuIGluZyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGluZ2thbmcga2VwZW5na2VyJyxcbiAgICAgICAgICAgIHMgOiAnc2F3ZXRhd2lzIGRldGlrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG0gOiAnc2V0dW5nZ2FsIG1lbml0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1lbml0JyxcbiAgICAgICAgICAgIGggOiAnc2V0dW5nZ2FsIGphbScsXG4gICAgICAgICAgICBoaCA6ICclZCBqYW0nLFxuICAgICAgICAgICAgZCA6ICdzZWRpbnRlbicsXG4gICAgICAgICAgICBkZCA6ICclZCBkaW50ZW4nLFxuICAgICAgICAgICAgTSA6ICdzZXd1bGFuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIHd1bGFuJyxcbiAgICAgICAgICAgIHkgOiAnc2V0YXVuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHRhdW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGp2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIga2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrYScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+GDmOGDkOGDnOGDleGDkOGDoOGDmF/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg5hf4YOb4YOQ4YOg4YOi4YOYX+GDkOGDnuGDoOGDmOGDmuGDmF/hg5vhg5Dhg5jhg6Hhg5hf4YOY4YOV4YOc4YOY4YOh4YOYX+GDmOGDleGDmuGDmOGDoeGDmF/hg5Dhg5Lhg5Xhg5jhg6Hhg6Lhg51f4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOYX+GDneGDpeGDouGDneGDm+GDkeGDlOGDoOGDmF/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dhg5hf4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOYJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgZm9ybWF0OiAn4YOY4YOQ4YOc4YOV4YOQ4YOg4YOhX+GDl+GDlOGDkeGDlOGDoOGDleGDkOGDmuGDoV/hg5vhg5Dhg6Dhg6Lhg6Ff4YOQ4YOe4YOg4YOY4YOa4YOY4YOhX+GDm+GDkOGDmOGDoeGDoV/hg5jhg5Xhg5zhg5jhg6Hhg6Ff4YOY4YOV4YOa4YOY4YOh4YOhX+GDkOGDkuGDleGDmOGDoeGDouGDoV/hg6Hhg5Thg6Xhg6Lhg5Thg5vhg5Hhg5Thg6Dhg6Ff4YOd4YOl4YOi4YOd4YOb4YOR4YOU4YOg4YOhX+GDnOGDneGDlOGDm+GDkeGDlOGDoOGDoV/hg5Phg5Thg5nhg5Thg5vhg5Hhg5Thg6Dhg6EnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4YOY4YOQ4YOcX+GDl+GDlOGDkV/hg5vhg5Dhg6Bf4YOQ4YOe4YOgX+GDm+GDkOGDmF/hg5jhg5Xhg5xf4YOY4YOV4YOaX+GDkOGDkuGDlV/hg6Hhg5Thg6Vf4YOd4YOl4YOiX+GDnOGDneGDlF/hg5Phg5Thg5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ+GDmeGDleGDmOGDoOGDkF/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDmF/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOYX+GDqOGDkOGDkeGDkOGDl+GDmCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ+GDmeGDleGDmOGDoOGDkOGDoV/hg53hg6Dhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOh4YOQ4YOb4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDneGDl+GDruGDqOGDkOGDkeGDkOGDl+GDoV/hg67hg6Phg5fhg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOe4YOQ4YOg4YOQ4YOh4YOZ4YOU4YOV4YOhX+GDqOGDkOGDkeGDkOGDl+GDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvKOGDrOGDmOGDnOGDkHzhg6jhg5Thg5vhg5Phg5Thg5IpL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+GDmeGDleGDmF/hg53hg6Dhg6hf4YOh4YOQ4YObX+GDneGDl+GDrl/hg67hg6Phg5df4YOe4YOQ4YOgX+GDqOGDkOGDkScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4YOZ4YOVX+GDneGDoF/hg6Hhg5Bf4YOd4YOXX+GDruGDo1/hg57hg5Bf4YOo4YOQJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+GDk+GDpuGDlOGDoV0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4YOu4YOV4YOQ4YOaXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vhg5Lhg6Phg6jhg5jhg5xdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vhg6jhg5Thg5vhg5Phg5Thg5JdIGRkZGQgTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+GDrOGDmOGDnOGDkF0gZGRkZCBMVC3hg5bhg5QnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKC8o4YOs4YOQ4YOb4YOYfOGDrOGDo+GDl+GDmHzhg6Hhg5Dhg5Dhg5fhg5h84YOs4YOU4YOa4YOYKS8pLnRlc3QocykgP1xuICAgICAgICAgICAgICAgICAgICBzLnJlcGxhY2UoL+GDmCQvLCAn4YOo4YOYJykgOlxuICAgICAgICAgICAgICAgICAgICBzICsgJ+GDqOGDmCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCgvKOGDrOGDkOGDm+GDmHzhg6zhg6Phg5fhg5h84YOh4YOQ4YOQ4YOX4YOYfOGDk+GDpuGDlHzhg5fhg5Xhg5QpLykudGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC8o4YOYfOGDlCkkLywgJ+GDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCgv4YOs4YOU4YOa4YOYLykudGVzdChzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC/hg6zhg5Thg5rhg5gkLywgJ+GDrOGDmuGDmOGDoSDhg6zhg5jhg5wnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcyA6ICfhg6Dhg5Dhg5vhg5Phg5Thg5zhg5jhg5vhg5Qg4YOs4YOQ4YOb4YOYJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBtIDogJ+GDrOGDo+GDl+GDmCcsXG4gICAgICAgICAgICBtbSA6ICclZCDhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgaCA6ICfhg6Hhg5Dhg5Dhg5fhg5gnLFxuICAgICAgICAgICAgaGggOiAnJWQg4YOh4YOQ4YOQ4YOX4YOYJyxcbiAgICAgICAgICAgIGQgOiAn4YOT4YOm4YOUJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOGDk+GDpuGDlCcsXG4gICAgICAgICAgICBNIDogJ+GDl+GDleGDlCcsXG4gICAgICAgICAgICBNTSA6ICclZCDhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgeSA6ICfhg6zhg5Thg5rhg5gnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4YOs4YOU4YOa4YOYJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvMHwxLeGDmuGDmHzhg5vhg5QtXFxkezEsMn18XFxkezEsMn0t4YOULyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLeGDmuGDmCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG51bWJlciA8IDIwKSB8fCAobnVtYmVyIDw9IDEwMCAmJiAobnVtYmVyICUgMjAgPT09IDApKSB8fCAobnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4YOb4YOULScgKyBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5QnO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSxcbiAgICAgICAgICAgIGRveSA6IDdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGthO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YjRlicsXG4gICAgICAgIDE6ICct0YjRlicsXG4gICAgICAgIDI6ICct0YjRlicsXG4gICAgICAgIDM6ICct0YjRlicsXG4gICAgICAgIDQ6ICct0YjRlicsXG4gICAgICAgIDU6ICct0YjRlicsXG4gICAgICAgIDY6ICct0YjRiycsXG4gICAgICAgIDc6ICct0YjRlicsXG4gICAgICAgIDg6ICct0YjRlicsXG4gICAgICAgIDk6ICct0YjRiycsXG4gICAgICAgIDEwOiAnLdGI0YsnLFxuICAgICAgICAyMDogJy3RiNGLJyxcbiAgICAgICAgMzA6ICct0YjRiycsXG4gICAgICAgIDQwOiAnLdGI0YsnLFxuICAgICAgICA1MDogJy3RiNGWJyxcbiAgICAgICAgNjA6ICct0YjRiycsXG4gICAgICAgIDcwOiAnLdGI0ZYnLFxuICAgICAgICA4MDogJy3RiNGWJyxcbiAgICAgICAgOTA6ICct0YjRiycsXG4gICAgICAgIDEwMDogJy3RiNGWJ1xuICAgIH07XG5cbiAgICB2YXIga2sgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdraycsIHtcbiAgICAgICAgbW9udGhzIDogJ9Kb0LDSo9GC0LDRgF/QsNKb0L/QsNC9X9C90LDRg9GA0YvQt1/RgdOZ0YPRltGAX9C80LDQvNGL0YBf0LzQsNGD0YHRi9C8X9GI0ZbQu9C00LVf0YLQsNC80YvQt1/Sm9GL0YDQutKv0LnQtdC6X9Kb0LDQt9Cw0L1f0pvQsNGA0LDRiNCwX9C20LXQu9GC0L7Sm9GB0LDQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0pvQsNKjX9Cw0pvQv1/QvdCw0YNf0YHTmdGDX9C80LDQvF/QvNCw0YNf0YjRltC7X9GC0LDQvF/Sm9GL0YBf0pvQsNC3X9Kb0LDRgF/QttC10LsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9C20LXQutGB0LXQvdCx0ZZf0LTSr9C50YHQtdC90LHRll/RgdC10LnRgdC10L3QsdGWX9GB05nRgNGB0LXQvdCx0ZZf0LHQtdC50YHQtdC90LHRll/QttKx0LzQsF/RgdC10L3QsdGWJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C20LXQul/QtNKv0Llf0YHQtdC5X9GB05nRgF/QsdC10Llf0LbSsdC8X9GB0LXQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0LbQul/QtNC5X9GB0Llf0YHRgF/QsdC5X9C20Lxf0YHQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0q/Qs9GW0L0g0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0JXRgNGC0LXSoyDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb06jRgtC60LXQvSDQsNC/0YLQsNC90YvSo10gZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINGW0YjRltC90LTQtScsXG4gICAgICAgICAgICBwYXN0IDogJyVzINCx0rHRgNGL0L0nLFxuICAgICAgICAgICAgcyA6ICfQsdGW0YDQvdC10YjQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG0gOiAn0LHRltGAINC80LjQvdGD0YInLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzQuNC90YPRgicsXG4gICAgICAgICAgICBoIDogJ9Cx0ZbRgCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0LDSk9Cw0YInLFxuICAgICAgICAgICAgZCA6ICfQsdGW0YAg0LrSr9C9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC60q/QvScsXG4gICAgICAgICAgICBNIDogJ9Cx0ZbRgCDQsNC5JyxcbiAgICAgICAgICAgIE1NIDogJyVkINCw0LknLFxuICAgICAgICAgICAgeSA6ICfQsdGW0YAg0LbRi9C7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINC20YvQuydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRiNGWfNGI0YspLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga2s7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+GfoScsXG4gICAgICAgICcyJzogJ+GfoicsXG4gICAgICAgICczJzogJ+GfoycsXG4gICAgICAgICc0JzogJ+GfpCcsXG4gICAgICAgICc1JzogJ+GfpScsXG4gICAgICAgICc2JzogJ+GfpicsXG4gICAgICAgICc3JzogJ+GfpycsXG4gICAgICAgICc4JzogJ+GfqCcsXG4gICAgICAgICc5JzogJ+GfqScsXG4gICAgICAgICcwJzogJ+GfoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfhn6EnOiAnMScsXG4gICAgICAgICfhn6InOiAnMicsXG4gICAgICAgICfhn6MnOiAnMycsXG4gICAgICAgICfhn6QnOiAnNCcsXG4gICAgICAgICfhn6UnOiAnNScsXG4gICAgICAgICfhn6YnOiAnNicsXG4gICAgICAgICfhn6cnOiAnNycsXG4gICAgICAgICfhn6gnOiAnOCcsXG4gICAgICAgICfhn6knOiAnOScsXG4gICAgICAgICfhn6AnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGttID0gbW9tZW50LmRlZmluZUxvY2FsZSgna20nLCB7XG4gICAgICAgIG1vbnRoczogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ+GemOGegOGemuGetl/hnoDhnrvhnpjhn5Lhnpfhn4hf4Z6Y4Z644Z6T4Z62X+GemOGfgeGen+Getl/hnqfhnp/hnpfhnrZf4Z6Y4Z634Z6Q4Z674Z6T4Z62X+GegOGegOGfkuGegOGeiuGetl/hnp/hnrjhnqDhnrZf4Z6A4Z6J4Z+S4Z6J4Z62X+Gej+Geu+Gem+Getl/hnpzhnrfhnoXhn5LhnobhnrfhnoDhnrZf4Z6S4Z+S4Z6T4Z68Jy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ+GeouGetuGekeGet+Gej+GfkuGemV/hnoXhn5DhnpPhn5LhnpFf4Z6i4Z6E4Z+S4Z6C4Z624Z6aX+GeluGeu+Gekl/hnpbhn5LhnprhnqDhnp/hn5LhnpThno/hnrfhn41f4Z6f4Z674Z6A4Z+S4Z6aX+Gen+GfheGemuGfjScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ+GeouGetl/hnoVf4Z6iX+Gell/hnpbhn5Lhnppf4Z6f4Z67X+Genycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/hnpbhn5LhnprhnrnhnoB84Z6b4Z+S4Z6E4Z624Z6FLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfhnpvhn5LhnoThnrbhnoUnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6W4Z+S4Z6a4Z654Z6AJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfhnpvhn5LhnoThnrbhnoUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vhnpDhn5LhnoThn4PhnpPhn4Hhn4cg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+Gen+GfkuGeouGfguGegCDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+GemOGfkuGen+Get+Gem+GemOGet+GeiSDhnpjhn4nhn4ThnoRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4Z6f4Z6U4Z+S4Z6P4Z624Z6g4Z+N4Z6Y4Z674Z6TXSBb4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPhnpHhn4Dhno8nLFxuICAgICAgICAgICAgcGFzdDogJyVz4Z6Y4Z674Z6TJyxcbiAgICAgICAgICAgIHM6ICfhnpThn4nhnrvhnpPhn5LhnpjhnrbhnpPhnpzhnrfhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgc3M6ICclZCDhnpzhnrfhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgbTogJ+GemOGeveGemeGek+GetuGekeGeuCcsXG4gICAgICAgICAgICBtbTogJyVkIOGek+GetuGekeGeuCcsXG4gICAgICAgICAgICBoOiAn4Z6Y4Z694Z6Z4Z6Y4Z+J4Z+E4Z6EJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4Z6Y4Z+J4Z+E4Z6EJyxcbiAgICAgICAgICAgIGQ6ICfhnpjhnr3hnpnhnpDhn5LhnoThn4MnLFxuICAgICAgICAgICAgZGQ6ICclZCDhnpDhn5LhnoThn4MnLFxuICAgICAgICAgICAgTTogJ+GemOGeveGemeGegeGfgicsXG4gICAgICAgICAgICBNTTogJyVkIOGegeGfgicsXG4gICAgICAgICAgICB5OiAn4Z6Y4Z694Z6Z4Z6G4Z+S4Z6T4Z624Z+GJyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Z6G4Z+S4Z6T4Z624Z+GJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL+GekeGeuFxcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6ICfhnpHhnrglZCcsXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vhn6Hhn6Lhn6Phn6Thn6Xhn6bhn6fhn6jhn6nhn6BdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga207XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+CzpycsXG4gICAgICAgICcyJzogJ+CzqCcsXG4gICAgICAgICczJzogJ+CzqScsXG4gICAgICAgICc0JzogJ+CzqicsXG4gICAgICAgICc1JzogJ+CzqycsXG4gICAgICAgICc2JzogJ+CzrCcsXG4gICAgICAgICc3JzogJ+CzrScsXG4gICAgICAgICc4JzogJ+CzricsXG4gICAgICAgICc5JzogJ+CzrycsXG4gICAgICAgICcwJzogJ+CzpidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Czpyc6ICcxJyxcbiAgICAgICAgJ+CzqCc6ICcyJyxcbiAgICAgICAgJ+CzqSc6ICczJyxcbiAgICAgICAgJ+Czqic6ICc0JyxcbiAgICAgICAgJ+Czqyc6ICc1JyxcbiAgICAgICAgJ+CzrCc6ICc2JyxcbiAgICAgICAgJ+CzrSc6ICc3JyxcbiAgICAgICAgJ+Czric6ICc4JyxcbiAgICAgICAgJ+Czryc6ICc5JyxcbiAgICAgICAgJ+Czpic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIga24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdrbicsIHtcbiAgICAgICAgbW9udGhzIDogJ+CynOCyqOCyteCysOCyv1/gsqvgs4bgsqzgs43gsrDgsrXgsrDgsr9f4LKu4LK+4LKw4LON4LKa4LONX+Cyj+CyquCzjeCysOCyv+CysuCzjV/gsq7gs4bgs5Vf4LKc4LOC4LKo4LONX+CynOCzgeCysuCzhuCzll/gsobgspfgsrjgs43gsp/gs41f4LK44LOG4LKq4LON4LKf4LOG4LKC4LKs4LKw4LONX+CyheCyleCzjeCyn+CzhuCzguCzleCyrOCysOCzjV/gsqjgsrXgs4bgsoLgsqzgsrDgs41f4LKh4LK/4LK44LOG4LKC4LKs4LKw4LONJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgspzgsqhf4LKr4LOG4LKs4LON4LKwX+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCygl/gsoXgspXgs43gsp/gs4bgs4Lgs5Vf4LKo4LK14LOG4LKCX+CyoeCyv+CyuOCzhuCygicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4LKt4LK+4LKo4LOB4LK14LK+4LKwX+CyuOCzhuCzguCzleCyruCyteCyvuCysF/gsq7gsoLgspfgsrPgsrXgsr7gsrBf4LKs4LOB4LKn4LK14LK+4LKwX+Cyl+CzgeCysOCzgeCyteCyvuCysF/gsrbgs4HgspXgs43gsrDgsrXgsr7gsrBf4LK24LKo4LK/4LK14LK+4LKwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CyreCyvuCyqOCzgV/gsrjgs4bgs4Lgs5Xgsq5f4LKu4LKC4LKX4LKzX+CyrOCzgeCyp1/gspfgs4HgsrDgs4Ff4LK24LOB4LKV4LON4LKwX+CytuCyqOCyvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LKt4LK+X+CyuOCzhuCzguCzlV/gsq7gsoJf4LKs4LOBX+Cyl+CzgV/gsrbgs4Ff4LK2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LKH4LKC4LKm4LOBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgsqjgsr7gsrPgs4ZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CyqOCyv+CyqOCzjeCyqOCzhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+CyleCzhuCzguCyqOCzhuCyr10gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCyqOCyguCypOCysCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCyueCyv+CyguCypuCzhicsXG4gICAgICAgICAgICBzIDogJ+CyleCzhuCysuCyteCzgSDgspXgs43gsrfgsqPgspfgsrPgs4EnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4LK44LOG4LKV4LOG4LKC4LKh4LOB4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIG0gOiAn4LKS4LKC4LKm4LOBIOCyqOCyv+CyruCyv+CytycsXG4gICAgICAgICAgICBtbSA6ICclZCDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgaCA6ICfgspLgsoLgsqbgs4Eg4LKX4LKC4LKf4LOGJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBkIDogJ+CykuCyguCypuCzgSDgsqbgsr/gsqgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4LKm4LK/4LKoJyxcbiAgICAgICAgICAgIE0gOiAn4LKS4LKC4LKm4LOBIOCypOCyv+CyguCyl+Cys+CzgScsXG4gICAgICAgICAgICBNTSA6ICclZCDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgeSA6ICfgspLgsoLgsqbgs4Eg4LK14LKw4LON4LK3JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCyteCysOCzjeCytydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Czp+CzqOCzqeCzquCzq+CzrOCzreCzruCzr+Czpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CysOCyvuCypOCzjeCysOCyv3zgsqzgs4bgsrPgsr/gspfgs43gspfgs4Z84LKu4LKn4LON4LKv4LK+4LK54LON4LKofOCyuOCyguCynOCzhi8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsrDgsr7gsqTgs43gsrDgsr8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsqzgs4bgsrPgsr/gspfgs43gspfgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsrjgsoLgspzgs4YnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsq7gsqfgs43gsq/gsr7gsrngs43gsqgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyuOCyguCynOCzhic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKw4LK+4LKk4LON4LKw4LK/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOCyqOCzhuCzlSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgsqjgs4bgs5UnO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBrbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGtvID0gbW9tZW50LmRlZmluZUxvY2FsZSgna28nLCB7XG4gICAgICAgIG1vbnRocyA6ICcx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+ydvOyalOydvF/sm5TsmpTsnbxf7ZmU7JqU7J28X+yImOyalOydvF/rqqnsmpTsnbxf6riI7JqU7J28X+2GoOyalOydvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+ydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnrhYQgTU1NTSBE7J28JyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ64WEIE1NTU0gROydvCBBIGg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ64WEIE1NTU0gROydvCBkZGRkIEEgaDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ+yYpOuKmCBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ+uCtOydvCBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAn7Ja07KCcIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ+yngOuCnOyjvCBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDtm4QnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDsoIQnLFxuICAgICAgICAgICAgcyA6ICfrqocg7LSIJyxcbiAgICAgICAgICAgIHNzIDogJyVk7LSIJyxcbiAgICAgICAgICAgIG0gOiAnMeu2hCcsXG4gICAgICAgICAgICBtbSA6ICclZOu2hCcsXG4gICAgICAgICAgICBoIDogJ+2VnCDsi5zqsIQnLFxuICAgICAgICAgICAgaGggOiAnJWTsi5zqsIQnLFxuICAgICAgICAgICAgZCA6ICftlZjro6gnLFxuICAgICAgICAgICAgZGQgOiAnJWTsnbwnLFxuICAgICAgICAgICAgTSA6ICftlZwg64usJyxcbiAgICAgICAgICAgIE1NIDogJyVk64usJyxcbiAgICAgICAgICAgIHkgOiAn7J28IOuFhCcsXG4gICAgICAgICAgICB5eSA6ICclZOuFhCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfSjsnbx87JuUfOyjvCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7J28JztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfsm5QnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+yjvCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZSA6IC/smKTsoIR87Jik7ZuELyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuID09PSAn7Jik7ZuEJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc1VwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciA8IDEyID8gJ+yYpOyghCcgOiAn7Jik7ZuEJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfZoScsXG4gICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAnNCc6ICfZpCcsXG4gICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAnNyc6ICfZpycsXG4gICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAnMCc6ICfZoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICfZoCc6ICcwJ1xuICAgIH0sXG4gICAgbW9udGhzID0gW1xuICAgICAgICAn2qnYp9mG2YjZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAn2LTZiNio2KfYqicsXG4gICAgICAgICfYptin2LLYp9ixJyxcbiAgICAgICAgJ9mG24zYs9in2YYnLFxuICAgICAgICAn2KbYp9uM2KfYsScsXG4gICAgICAgICfYrdmI2LLblduM2LHYp9mGJyxcbiAgICAgICAgJ9iq25XZhdmF2YjYsicsXG4gICAgICAgICfYptin2KgnLFxuICAgICAgICAn2KbblduM2YTZiNmI2YQnLFxuICAgICAgICAn2KrYtNix24zZhtuMINuM25XZg9uV2YUnLFxuICAgICAgICAn2KrYtNix24zZhtuMINiv2YjZiNuV2YUnLFxuICAgICAgICAn2YPYp9mG2YjZhtuMINuM25XaqduV2YUnXG4gICAgXTtcblxuXG4gICAgdmFyIGt1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3UnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogJ9uM2YfigIzZg9i02YfigIzZhdmF2YfigIxf2K/ZiNmI2LTZh+KAjNmF2YXZh+KAjF/Ys9uO2LTZh+KAjNmF2YXZh+KAjF/ahtmI2KfYsdi02YfigIzZhdmF2YfigIxf2b7bjtmG2KzYtNmH4oCM2YXZhdmH4oCMX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfbjNmH4oCM2YPYtNmH4oCM2YVf2K/ZiNmI2LTZh+KAjNmFX9iz247YtNmH4oCM2YVf2obZiNin2LHYtNmH4oCM2YVf2b7bjtmG2KzYtNmH4oCM2YVf2YfZh+KAjNuM2YbbjF/YtNmH4oCM2YXZhdmH4oCMJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfbjF/Yr1/Ys1/ahl/Zvl/Zh1/YtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2KbbjtmI2KfYsdmH4oCMfNio2YfigIzbjNin2YbbjC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC/YptuO2YjYp9ix2YfigIwvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9io2YfigIzbjNin2YbbjCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2KbbjtmI2KfYsdmH4oCMJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYptmH4oCM2YXYsduGINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vYqNmH4oCM24zYp9mG24wg2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9mD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vYr9mI247ZhtuOINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9mE2YfigIwgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcycsXG4gICAgICAgICAgICBzIDogJ9qG2YfigIzZhtivINqG2LHZg9mH4oCM24zZh+KAjNmDJyxcbiAgICAgICAgICAgIHNzIDogJ9qG2LHZg9mH4oCMICVkJyxcbiAgICAgICAgICAgIG0gOiAn24zZh+KAjNmDINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K7ZiNmE2YfigIzZgycsXG4gICAgICAgICAgICBoIDogJ9uM2YfigIzZgyDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBoaCA6ICclZCDZg9in2KramNmF247YsScsXG4gICAgICAgICAgICBkIDogJ9uM2YfigIzZgyDalduG2pgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2pXbhtqYJyxcbiAgICAgICAgICAgIE0gOiAn24zZh+KAjNmDINmF2KfZhtqvJyxcbiAgICAgICAgICAgIE1NIDogJyVkINmF2KfZhtqvJyxcbiAgICAgICAgICAgIHkgOiAn24zZh+KAjNmDINiz2KfatScsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9in2rUnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGt1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YfSrycsXG4gICAgICAgIDE6ICct0YfQuCcsXG4gICAgICAgIDI6ICct0YfQuCcsXG4gICAgICAgIDM6ICct0YfSrycsXG4gICAgICAgIDQ6ICct0YfSrycsXG4gICAgICAgIDU6ICct0YfQuCcsXG4gICAgICAgIDY6ICct0YfRiycsXG4gICAgICAgIDc6ICct0YfQuCcsXG4gICAgICAgIDg6ICct0YfQuCcsXG4gICAgICAgIDk6ICct0YfRgycsXG4gICAgICAgIDEwOiAnLdGH0YMnLFxuICAgICAgICAyMDogJy3Rh9GLJyxcbiAgICAgICAgMzA6ICct0YfRgycsXG4gICAgICAgIDQwOiAnLdGH0YsnLFxuICAgICAgICA1MDogJy3Rh9KvJyxcbiAgICAgICAgNjA6ICct0YfRiycsXG4gICAgICAgIDcwOiAnLdGH0LgnLFxuICAgICAgICA4MDogJy3Rh9C4JyxcbiAgICAgICAgOTA6ICct0YfRgycsXG4gICAgICAgIDEwMDogJy3Rh9KvJ1xuICAgIH07XG5cbiAgICB2YXIga3kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdreScsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YDRgl/QsNC/0YBf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9CW0LXQutGI0LXQvNCx0Lhf0JTSr9C50YjTqdC80LHSr1/QqNC10LnRiNC10LzQsdC4X9Co0LDRgNGI0LXQvNCx0Lhf0JHQtdC50YjQtdC80LHQuF/QltGD0LzQsF/QmNGI0LXQvNCx0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0JbQtdC6X9CU0q/QuV/QqNC10Llf0KjQsNGAX9CR0LXQuV/QltGD0Lxf0JjRiNC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQltC6X9CU0Llf0KjQuV/QqNGAX9CR0Llf0JbQvF/QmNGIJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JHSr9Cz0q/QvSDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0K3RgNGC0LXSoyDRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Ca0LXRh9GN0Y0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vTqNGC0LrTqdC9INCw0L/RgtCw0L3Ri9C9XSBkZGRkIFvQutKv0L3Sr10gW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg0LjRh9C40L3QtNC1JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0LzRg9GA0YPQvScsXG4gICAgICAgICAgICBzIDogJ9Cx0LjRgNC90LXRh9C1INGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6ICclZCDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgbSA6ICfQsdC40YAg0LzSr9C906nRgicsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNKv0L3TqdGCJyxcbiAgICAgICAgICAgIGggOiAn0LHQuNGAINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0LDQsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0LHQuNGAINC60q/QvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTSA6ICfQsdC40YAg0LDQuScsXG4gICAgICAgICAgICBNTSA6ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHkgOiAn0LHQuNGAINC20YvQuycsXG4gICAgICAgICAgICB5eSA6ICclZCDQttGL0LsnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YfQuHzRh9GLfNGH0q980YfRgykvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBreTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtJzogWydlbmcgTWludXR0JywgJ2VuZ2VyIE1pbnV0dCddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VuZyBTdG9ubicsICdlbmdlciBTdG9ubiddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VlbiBEYWcnLCAnZW5nZW0gRGFnJ10sXG4gICAgICAgICAgICAnTSc6IFsnZWUgTW91bnQnLCAnZW5nZW0gTW91bnQnXSxcbiAgICAgICAgICAgICd5JzogWydlZSBKb2VyJywgJ2VuZ2VtIEpvZXInXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NGdXR1cmVUaW1lKHN0cmluZykge1xuICAgICAgICB2YXIgbnVtYmVyID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZignICcpKTtcbiAgICAgICAgaWYgKGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2EgJyArIHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2FuICcgKyBzdHJpbmc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NQYXN0VGltZShzdHJpbmcpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7XG4gICAgICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuICd2aXJ1ICcgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd2aXJ1biAnICsgc3RyaW5nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdvcmQgYmVmb3JlIHRoZSBnaXZlbiBudW1iZXIgbG9zZXMgdGhlICctbicgZW5kaW5nLlxuICAgICAqIGUuZy4gJ2FuIDEwIERlZWcnIGJ1dCAnYSA1IERlZWcnXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbnVtYmVyIHtpbnRlZ2VyfVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpIHtcbiAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyLCAxMCk7XG4gICAgICAgIGlmIChpc05hTihudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIE5lZ2F0aXZlIE51bWJlciAtLT4gYWx3YXlzIHRydWVcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwKSB7XG4gICAgICAgICAgICAvLyBPbmx5IDEgZGlnaXRcbiAgICAgICAgICAgIGlmICg0IDw9IG51bWJlciAmJiBudW1iZXIgPD0gNykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMCkge1xuICAgICAgICAgICAgLy8gMiBkaWdpdHNcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCwgZmlyc3REaWdpdCA9IG51bWJlciAvIDEwO1xuICAgICAgICAgICAgaWYgKGxhc3REaWdpdCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIoZmlyc3REaWdpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKGxhc3REaWdpdCk7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMTAwMDApIHtcbiAgICAgICAgICAgIC8vIDMgb3IgNCBkaWdpdHMgLS0+IHJlY3Vyc2l2ZWx5IGNoZWNrIGZpcnN0IGRpZ2l0XG4gICAgICAgICAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBBbnl0aGluZyBsYXJnZXIgdGhhbiA0IGRpZ2l0czogcmVjdXJzaXZlbHkgY2hlY2sgZmlyc3Qgbi0zIGRpZ2l0c1xuICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTAwMDtcbiAgICAgICAgICAgIHJldHVybiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2xiJywge1xuICAgICAgICBtb250aHM6ICdKYW51YXJfRmVicnVhcl9Nw6RlcnpfQWJyw6tsbF9NZWVfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdKYW4uX0ZlYnIuX01yei5fQWJyLl9NZWVfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ1Nvbm5kZWdfTcOpaW5kZWdfRMOrbnNjaGRlZ19Nw6t0dHdvY2hfRG9ubmVzY2hkZWdfRnJlaWRlZ19TYW1zY2hkZWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdTby5fTcOpLl9Ew6suX03Dqy5fRG8uX0ZyLl9TYS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnU29fTcOpX0TDq19Nw6tfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0gW0F1ZXJdJyxcbiAgICAgICAgICAgIExUUzogJ0g6bW06c3MgW0F1ZXJdJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tIYXV0IHVtXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tNdWVyIHVtXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0fDq3NjaHRlciB1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgZGF0ZSBzdHJpbmcgZm9yICdEw6tuc2NoZGVnJyAoVHVlc2RheSkgYW5kICdEb25uZXNjaGRlZycgKFRodXJzZGF5KSBkdWUgdG8gcGhvbm9sb2dpY2FsIHJ1bGVcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlbl0gZGRkZCBbdW1dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW0xlc2NodGVdIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBwcm9jZXNzRnV0dXJlVGltZSxcbiAgICAgICAgICAgIHBhc3QgOiBwcm9jZXNzUGFzdFRpbWUsXG4gICAgICAgICAgICBzIDogJ2UgcHVlciBTZWtvbm5lbicsXG4gICAgICAgICAgICBzcyA6ICclZCBTZWtvbm5lbicsXG4gICAgICAgICAgICBtIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tIDogJyVkIE1pbnV0dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3Rvbm5lbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogJyVkIERlZWcnLFxuICAgICAgICAgICAgTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSA6ICclZCBNw6lpbnQnLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6ICclZCBKb2VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsOiAnJWQuJyxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBsbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2xvJywge1xuICAgICAgICBtb250aHMgOiAn4Lqh4Lqx4LqH4LqB4Lqt4LqZX+C6geC6uOC6oeC6nuC6sl/guqHgurXgupngurJf4LuA4Lqh4Lqq4LqyX+C6nuC6tuC6lOC6quC6sOC6nuC6sl/guqHgurTgupbgurjgupngurJf4LqB4LuN4Lql4Lqw4LqB4Lq74LqUX+C6quC6tOC6h+C6q+C6sl/guoHgurHgupnguo3gurJf4LqV4Lq44Lql4LqyX+C6nuC6sOC6iOC6tOC6gV/gupfgurHgupnguqfgurInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfguq3gurLgupfgurTgupRf4LqI4Lqx4LqZX+C6reC6seC6h+C6hOC6suC6mV/gup7gurjgupRf4Lqe4Lqw4Lqr4Lqx4LqUX+C6quC6uOC6gV/gu4DguqrgurvgurInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgupdf4LqIX+C6reC6hF/gup5f4Lqe4LqrX+C6quC6gV/guqonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICfguqfgurHguplkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyfOC6leC6reC6meC7geC6peC6hy8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4LqV4Lqt4LqZ4LuB4Lql4LqHJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4Dguorgurvgu4ngurInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4Lqh4Lq34LuJ4LqZ4Lq14LuJ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vguqHgurfgu4nguq3gurfgu4jgupngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vguqfgurHgupldZGRkZFvgu5zgu4ngurLgu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+C6oeC6t+C7ieC6p+C6suC6meC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+C6p+C6seC6mV1kZGRkW+C7geC6peC7ieC6p+C6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ+C6reC6teC6gSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVz4Lqc4LuI4Lqy4LqZ4Lqh4LqyJyxcbiAgICAgICAgICAgIHMgOiAn4Lqa4LuN4LuI4LuA4LqX4Lq74LuI4Lqy4LuD4LqU4Lqn4Lq04LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOC6p+C6tOC6meC6suC6l+C6tScgLFxuICAgICAgICAgICAgbSA6ICcxIOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBtbSA6ICclZCDgupngurLgupfgurUnLFxuICAgICAgICAgICAgaCA6ICcxIOC6iuC6u+C7iOC6p+C7guC6oeC6hycsXG4gICAgICAgICAgICBoaCA6ICclZCDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgZCA6ICcxIOC6oeC6t+C7iScsXG4gICAgICAgICAgICBkZCA6ICclZCDguqHgurfgu4knLFxuICAgICAgICAgICAgTSA6ICcxIOC7gOC6lOC6t+C6reC6mScsXG4gICAgICAgICAgICBNTSA6ICclZCDgu4DgupTgurfguq3gupknLFxuICAgICAgICAgICAgeSA6ICcxIOC6m+C6tScsXG4gICAgICAgICAgICB5eSA6ICclZCDgupvgurUnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC8o4LqX4Lq14LuIKVxcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAn4LqX4Lq14LuIJyArIG51bWJlcjtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgICdzcycgOiAnc2VrdW5kxJdfc2VrdW5kxb5pxbNfc2VrdW5kZXMnLFxuICAgICAgICAnbScgOiAnbWludXTEl19taW51dMSXc19taW51dMSZJyxcbiAgICAgICAgJ21tJzogJ21pbnV0xJdzX21pbnXEjWnFs19taW51dGVzJyxcbiAgICAgICAgJ2gnIDogJ3ZhbGFuZGFfdmFsYW5kb3NfdmFsYW5kxIUnLFxuICAgICAgICAnaGgnOiAndmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMnLFxuICAgICAgICAnZCcgOiAnZGllbmFfZGllbm9zX2RpZW7EhScsXG4gICAgICAgICdkZCc6ICdkaWVub3NfZGllbsWzX2RpZW5hcycsXG4gICAgICAgICdNJyA6ICdtxJdudW9fbcSXbmVzaW9fbcSXbmVzxK8nLFxuICAgICAgICAnTU0nOiAnbcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMnLFxuICAgICAgICAneScgOiAnbWV0YWlfbWV0xbNfbWV0dXMnLFxuICAgICAgICAneXknOiAnbWV0YWlfbWV0xbNfbWV0dXMnXG4gICAgfTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgcmV0dXJuICdrZWxpb3Mgc2VrdW5kxJdzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICdrZWxpxbMgc2VrdW5kxb5pxbMnIDogJ2tlbGlhcyBzZWt1bmRlcyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybXMoa2V5KVswXSA6IChpc0Z1dHVyZSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAwIHx8IChudW1iZXIgPiAxMCAmJiBudW1iZXIgPCAyMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZvcm1zKGtleSkge1xuICAgICAgICByZXR1cm4gdW5pdHNba2V5XS5zcGxpdCgnXycpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyB0cmFuc2xhdGVTaW5ndWxhcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleVswXSwgaXNGdXR1cmUpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc3BlY2lhbChudW1iZXIpID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIGZvcm1zKGtleSlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoc3BlY2lhbChudW1iZXIpID8gZm9ybXMoa2V5KVsxXSA6IGZvcm1zKGtleSlbMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBsdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x0Jywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ3NhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogL0Rbb0RdPyhcXFtbXlxcW1xcXV0qXFxdfFxccykrTU1NTT98TU1NTT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK0Rbb0RdPy9cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2VrbWFkaWVuxK9fcGlybWFkaWVuxK9fYW50cmFkaWVuxK9fdHJlxI1pYWRpZW7Er19rZXR2aXJ0YWRpZW7Er19wZW5rdGFkaWVuxK9fxaFlxaF0YWRpZW7Erycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9kZGRkIEhIOm1tL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1Nla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTX1BfQV9UX0tfUG5fxaAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW8WgaWFuZGllbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbUnl0b2pdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbVmFrYXJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tQcmHEl2p1c8SvXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwbyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ByaWXFoSAlcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlU2Vjb25kcyxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tb2ppLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLW9qaSc7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdW5pdHMgPSB7XG4gICAgICAgICdzcyc6ICdzZWt1bmRlc19zZWt1bmTEk21fc2VrdW5kZV9zZWt1bmRlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ20nOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdtbSc6ICdtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2gnOiAnc3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2hoJzogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdkJzogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ2RkJzogJ2RpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcycuc3BsaXQoJ18nKSxcbiAgICAgICAgJ00nOiAnbcSTbmXFoWFfbcSTbmXFoWllbV9txJNuZXNpc19txJNuZcWhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgJ01NJzogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgICd5JzogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgJ3l5JzogJ2dhZGFfZ2FkaWVtX2dhZHNfZ2FkaScuc3BsaXQoJ18nKVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHdpdGhvdXRTdWZmaXggYm9vbGVhbiB0cnVlID0gYSBsZW5ndGggb2YgdGltZTsgZmFsc2UgPSBiZWZvcmUvYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JtYXQoZm9ybXMsIG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVcIiwgXCIzIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICUgMTAgPT09IDEgJiYgbnVtYmVyICUgMTAwICE9PSAxMSA/IGZvcm1zWzJdIDogZm9ybXNbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFLmcuIFwiMjEgbWluxat0ZXNcIiBhcyBpbiBcInDEk2MgMjEgbWluxat0ZXNcIi5cbiAgICAgICAgICAgIC8vIEUuZy4gXCIzIG1pbsWrdMSTbVwiIGFzIGluIFwicMSTYyAzIG1pbsWrdMSTbVwiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IGZvcm1zWzFdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdCh1bml0c1trZXldLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVNlY29uZHMobnVtYmVyLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2Rhxb5hcyBzZWt1bmRlcycgOiAnZGHFvsSBbSBzZWt1bmTEk20nO1xuICAgIH1cblxuICAgIHZhciBsdiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2x2Jywge1xuICAgICAgICBtb250aHMgOiAnamFudsSBcmlzX2ZlYnJ1xIFyaXNfbWFydHNfYXByxKtsaXNfbWFpanNfasWrbmlqc19qxatsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3ZfUF9PX1RfQ19Qa19TJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVkuJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkuIFtnYWRhXSBELiBNTU1NJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbxaBvZGllbiBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbUsSrdCBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1Zha2FyIHB1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncMSTYyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3Bpcm1zICVzJyxcbiAgICAgICAgICAgIHMgOiByZWxhdGl2ZVNlY29uZHMsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGx2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ3Nla3VuZCcsICdzZWt1bmRhJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbm9nIG1pbnV0YSddLFxuICAgICAgICAgICAgbW06IFsnbWludXQnLCAnbWludXRhJywgJ21pbnV0YSddLFxuICAgICAgICAgICAgaDogWydqZWRhbiBzYXQnLCAnamVkbm9nIHNhdGEnXSxcbiAgICAgICAgICAgIGhoOiBbJ3NhdCcsICdzYXRhJywgJ3NhdGknXSxcbiAgICAgICAgICAgIGRkOiBbJ2RhbicsICdkYW5hJywgJ2RhbmEnXSxcbiAgICAgICAgICAgIE1NOiBbJ21qZXNlYycsICdtamVzZWNhJywgJ21qZXNlY2knXSxcbiAgICAgICAgICAgIHl5OiBbJ2dvZGluYScsICdnb2RpbmUnLCAnZ29kaW5hJ11cbiAgICAgICAgfSxcbiAgICAgICAgY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTogZnVuY3Rpb24gKG51bWJlciwgd29yZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciA9PT0gMSA/IHdvcmRLZXlbMF0gOiAobnVtYmVyID49IDIgJiYgbnVtYmVyIDw9IDQgPyB3b3JkS2V5WzFdIDogd29yZEtleVsyXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24gKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgICAgICB2YXIgd29yZEtleSA9IHRyYW5zbGF0b3Iud29yZHNba2V5XTtcbiAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyB3b3JkS2V5WzBdIDogd29yZEtleVsxXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHRyYW5zbGF0b3IuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShudW1iZXIsIHdvcmRLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBtZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21lJywge1xuICAgICAgICBtb250aHM6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hal9qdW5fanVsX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc2p1dHJhIHVdIExUJyxcblxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGplbGp1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3JpamVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkamVsamVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwb25lZGplbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JpamVkZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BldGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCdcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0V2Vla0RheXNbdGhpcy5kYXkoKV07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmlqZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtamVzZWMnLFxuICAgICAgICAgICAgTU0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21pJywge1xuICAgICAgICBtb250aHM6ICdLb2hpLXTEgXRlX0h1aS10YW5ndXJ1X1BvdXTFqy10ZS1yYW5naV9QYWVuZ2Etd2jEgXdoxIFfSGFyYXR1YV9QaXBpcmlfSMWNbmdvaW5nb2lfSGVyZS10dXJpLWvFjWvEgV9NYWh1cnVfV2hpcmluZ2EtxIEtbnVrdV9XaGlyaW5nYS3EgS1yYW5naV9IYWtpaGVhJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ0tvaGlfSHVpX1BvdV9QYWVfSGFyYV9QaXBpX0jFjW5nb2lfSGVyZV9NYWh1X1doaS1udV9XaGktcmFfSGFraScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDN9L2ksXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsMn0vaSxcbiAgICAgICAgd2Vla2RheXM6ICdSxIF0YXB1X01hbmVfVMWrcmVpX1dlbmVyZWlfVMSBaXRlX1BhcmFpcmVfSMSBdGFyZWknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICdUYV9NYV9UxatfV2VfVMSBaV9QYV9IxIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIFtpXSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgW2ldIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tpIHRlaWUgbWFoYW5hLCBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2Fwb3BvIGldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbaV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpbmFuYWhpIGldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbd2hha2FtdXR1bmdhIGldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpIHJvdG8gaSAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgaSBtdWEnLFxuICAgICAgICAgICAgczogJ3RlIGjEk2tvbmEgcnVhcnVhJyxcbiAgICAgICAgICAgIHNzOiAnJWQgaMSTa29uYScsXG4gICAgICAgICAgICBtOiAnaGUgbWVuZXRpJyxcbiAgICAgICAgICAgIG1tOiAnJWQgbWVuZXRpJyxcbiAgICAgICAgICAgIGg6ICd0ZSBoYW9yYScsXG4gICAgICAgICAgICBoaDogJyVkIGhhb3JhJyxcbiAgICAgICAgICAgIGQ6ICdoZSByYScsXG4gICAgICAgICAgICBkZDogJyVkIHJhJyxcbiAgICAgICAgICAgIE06ICdoZSBtYXJhbWEnLFxuICAgICAgICAgICAgTU06ICclZCBtYXJhbWEnLFxuICAgICAgICAgICAgeTogJ2hlIHRhdScsXG4gICAgICAgICAgICB5eTogJyVkIHRhdSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1pO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaycsIHtcbiAgICAgICAgbW9udGhzIDogJ9GY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GY0LDQvV/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQvdC10LTQtdC70LBf0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQvtC6X9C/0LXRgtC+0Lpf0YHQsNCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L1lX9C/b1/QstGCX9GB0YBf0YfQtV/Qv9C1X9GBYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnRC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQlNC10L3QtdGBINCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Cj0YLRgNC1INCy0L5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vQktC+XSBkZGRkIFvQstC+XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQktGH0LXRgNCwINCy0L5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQsNGC0LBdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JjQt9C80LjQvdCw0YLQuNC+0YJdIGRkZGQgW9Cy0L5dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9C/0L7RgdC70LUgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfQv9GA0LXQtCAlcycsXG4gICAgICAgICAgICBzIDogJ9C90LXQutC+0LvQutGDINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG0gOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoIDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaCA6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkIDogJ9C00LXQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQtNC10L3QsCcsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdC10YYnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LzQtdGB0LXRhtC4JyxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC00LjQvdCwJyxcbiAgICAgICAgICAgIHl5IDogJyVkINCz0L7QtNC40L3QuCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGxhc3REaWdpdCA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGxhc3QyRGlnaXRzID0gbnVtYmVyICUgMTAwO1xuICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10LInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC10L0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0MkRpZ2l0cyA+IDEwICYmIGxhc3QyRGlnaXRzIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGA0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDcgfHwgbGFzdERpZ2l0ID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LzQuCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdGC0LgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtaztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWwnLCB7XG4gICAgICAgIG1vbnRocyA6ICfgtJzgtKjgtYHgtLXgtLDgtL9f4LSr4LWG4LSs4LWN4LSw4LWB4LS14LSw4LS/X+C0ruC0vuC1vOC0muC1jeC0muC1jV/gtI/gtKrgtY3gtLDgtL/gtb1f4LSu4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYhf4LST4LSX4LS44LWN4LSx4LWN4LSx4LWNX+C0uOC1huC0quC1jeC0seC1jeC0seC0guC0rOC1vF/gtJLgtJXgtY3gtJ/gtYvgtKzgtbxf4LSo4LS14LSC4LSs4LW8X+C0oeC0v+C0uOC0guC0rOC1vCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4LSc4LSo4LWBLl/gtKvgtYbgtKzgtY3gtLDgtYEuX+C0ruC0vuC1vC5f4LSP4LSq4LWN4LSw4LS/Ll/gtK7gtYfgtK/gtY1f4LSc4LWC4LW6X+C0nOC1guC0suC1iC5f4LST4LSXLl/gtLjgtYbgtKrgtY3gtLHgtY3gtLEuX+C0kuC0leC1jeC0n+C1iy5f4LSo4LS14LSCLl/gtKHgtL/gtLjgtIIuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4LSe4LS+4LSv4LSx4LS+4LS04LWN4LSaX+C0pOC0v+C0meC1jeC0leC0s+C0vuC0tOC1jeC0ml/gtJrgtYrgtLXgtY3gtLXgtL7gtLTgtY3gtJpf4LSs4LWB4LSn4LSo4LS+4LS04LWN4LSaX+C0teC1jeC0r+C0vuC0tOC0vuC0tOC1jeC0ml/gtLXgtYbgtLPgtY3gtLPgtL/gtK/gtL7gtLTgtY3gtJpf4LS24LSo4LS/4LSv4LS+4LS04LWN4LSaJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C0nuC0vuC0r+C1vF/gtKTgtL/gtJngtY3gtJXgtb5f4LSa4LWK4LS14LWN4LS1X+C0rOC1geC0p+C1u1/gtLXgtY3gtK/gtL7gtLTgtIJf4LS14LWG4LSz4LWN4LSz4LS/X+C0tuC0qOC0vycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LSe4LS+X+C0pOC0v1/gtJrgtYpf4LSs4LWBX+C0teC1jeC0r+C0vl/gtLXgtYZf4LS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSAt4LSo4LWBJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MgLeC0qOC1gScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0gLeC0qOC1gScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0gLeC0qOC1gSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgtIfgtKjgtY3gtKjgtY1dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C0qOC0vuC0s+C1hl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LSH4LSo4LWN4LSo4LSy4LWGXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4LSV4LS04LS/4LSe4LWN4LSeXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4LSV4LS04LS/4LSe4LWN4LSe4LWNJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4LSu4LWB4LW74LSq4LWNJyxcbiAgICAgICAgICAgIHMgOiAn4LSF4LW94LSqIOC0qOC0v+C0ruC0v+C0t+C0meC1jeC0meC1vicsXG4gICAgICAgICAgICBzcyA6ICclZCDgtLjgtYbgtJXgtY3gtJXgtbvgtKHgtY0nLFxuICAgICAgICAgICAgbSA6ICfgtJLgtLDgtYEg4LSu4LS/4LSo4LS/4LSx4LWN4LSx4LWNJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOC0ruC0v+C0qOC0v+C0seC1jeC0seC1jScsXG4gICAgICAgICAgICBoIDogJ+C0kuC0sOC1gSDgtK7gtKPgtL/gtJXgtY3gtJXgtYLgtbwnLFxuICAgICAgICAgICAgaGggOiAnJWQg4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8JyxcbiAgICAgICAgICAgIGQgOiAn4LSS4LSw4LWBIOC0puC0v+C0teC0uOC0gicsXG4gICAgICAgICAgICBkZCA6ICclZCDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgTSA6ICfgtJLgtLDgtYEg4LSu4LS+4LS44LSCJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOC0ruC0vuC0uOC0gicsXG4gICAgICAgICAgICB5IDogJ+C0kuC0sOC1gSDgtLXgtbzgtLfgtIInLFxuICAgICAgICAgICAgeXkgOiAnJWQg4LS14LW84LS34LSCJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LSw4LS+4LSk4LWN4LSw4LS/fOC0sOC0vuC0teC0v+C0suC1hnzgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNfOC0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gnzgtLDgtL7gtKTgtY3gtLDgtL8vaSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobWVyaWRpZW0gPT09ICfgtLDgtL7gtKTgtY3gtLDgtL8nICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNJyB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+C0teC1iOC0leC1geC0qOC1jeC0qOC1h+C0sOC0gicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0pOC1jeC0sOC0vyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSw4LS+4LS14LS/4LSy4LWGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtIngtJrgtY3gtJog4LSV4LS04LS/4LSe4LWN4LSe4LWNJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0pOC1jeC0sOC0vyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXRjdC00YXRjdC9INGB0LXQutGD0L3QtCcgOiAn0YXRjdC00YXRjdC9INGB0LXQutGD0L3QtNGL0L0nO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YHQtdC60YPQvdC0JyA6ICcg0YHQtdC60YPQvdC00YvQvScpO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDQvNC40L3Rg9GCJyA6ICcg0LzQuNC90YPRgtGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0YbQsNCzJyA6ICcg0YbQsNCz0LjQudC9Jyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINOp0LTTqdGAJyA6ICcg06nQtNGA0LjQudC9Jyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LDRgCcgOiAnINGB0LDRgNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LbQuNC7JyA6ICcg0LbQuNC70LjQudC9Jyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbW4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtbicsIHtcbiAgICAgICAgbW9udGhzIDogJ9Cd0Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0KXQvtGR0YDQtNGD0LPQsNCw0YAg0YHQsNGAX9CT0YPRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CU06nRgNOp0LLQtNKv0LPRjdGN0YAg0YHQsNGAX9Ci0LDQstC00YPQs9Cw0LDRgCDRgdCw0YBf0JfRg9GA0LPQsNC00YPQs9Cw0LDRgCDRgdCw0YBf0JTQvtC70LTRg9Cz0LDQsNGAINGB0LDRgF/QndCw0LnQvNC00YPQs9Cw0LDRgCDRgdCw0YBf0JXRgdC00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CQ0YDQstCw0L0g0L3RjdCz0LTSr9Cz0Y3RjdGAINGB0LDRgF/QkNGA0LLQsNC9INGF0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMSDRgdCw0YBfMiDRgdCw0YBfMyDRgdCw0YBfNCDRgdCw0YBfNSDRgdCw0YBfNiDRgdCw0YBfNyDRgdCw0YBfOCDRgdCw0YBfOSDRgdCw0YBfMTAg0YHQsNGAXzExINGB0LDRgF8xMiDRgdCw0YAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQndGP0Lxf0JTQsNCy0LDQsF/QnNGP0LPQvNCw0YBf0JvRhdCw0LPQstCwX9Cf0q/RgNGN0LJf0JHQsNCw0YHQsNC9X9CR0Y/QvNCx0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0J3Rj9C8X9CU0LDQsl/QnNGP0LNf0JvRhdCwX9Cf0q/RgF/QkdCw0LBf0JHRj9C8Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQndGPX9CU0LBf0JzRj1/Qm9GFX9Cf0q9f0JHQsF/QkdGPJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCcsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWSDQvtC90YsgTU1NTdGL0L0gRCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFlZWVkg0L7QvdGLIE1NTU3Ri9C9IEQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/SrtOofNKu0KUvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn0q7QpSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0q7TqCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0q7QpSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb06jQvdOp06nQtNOp0YBdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Cc0LDRgNCz0LDQsNGIXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb0JjRgNGN0YVdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb06jRh9C40LPQtNOp0YBdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vTqNC90LPTqdGA0YHTqdC9XSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDQtNCw0YDQsNCwJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg06nQvNC906knLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDTqdC006nRgC8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg06nQtNOp0YAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4KWnJyxcbiAgICAgICAgJzInOiAn4KWoJyxcbiAgICAgICAgJzMnOiAn4KWpJyxcbiAgICAgICAgJzQnOiAn4KWqJyxcbiAgICAgICAgJzUnOiAn4KWrJyxcbiAgICAgICAgJzYnOiAn4KWsJyxcbiAgICAgICAgJzcnOiAn4KWtJyxcbiAgICAgICAgJzgnOiAn4KWuJyxcbiAgICAgICAgJzknOiAn4KWvJyxcbiAgICAgICAgJzAnOiAn4KWmJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4KWnJzogJzEnLFxuICAgICAgICAn4KWoJzogJzInLFxuICAgICAgICAn4KWpJzogJzMnLFxuICAgICAgICAn4KWqJzogJzQnLFxuICAgICAgICAn4KWrJzogJzUnLFxuICAgICAgICAn4KWsJzogJzYnLFxuICAgICAgICAn4KWtJzogJzcnLFxuICAgICAgICAn4KWuJzogJzgnLFxuICAgICAgICAn4KWvJzogJzknLFxuICAgICAgICAn4KWmJzogJzAnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZU1yKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSlcbiAgICB7XG4gICAgICAgIHZhciBvdXRwdXQgPSAnJztcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6IG91dHB1dCA9ICfgpJXgpL7gpLngpYAg4KS44KWH4KSV4KSC4KSmJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3MnOiBvdXRwdXQgPSAnJWQg4KS44KWH4KSV4KSC4KSmJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbSc6IG91dHB1dCA9ICfgpI/gpJUg4KSu4KS/4KSo4KS/4KSfJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW0nOiBvdXRwdXQgPSAnJWQg4KSu4KS/4KSo4KS/4KSf4KWHJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6IG91dHB1dCA9ICfgpI/gpJUg4KSk4KS+4KS4JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGgnOiBvdXRwdXQgPSAnJWQg4KSk4KS+4KS4JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6IG91dHB1dCA9ICfgpI/gpJUg4KSm4KS/4KS14KS4JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGQnOiBvdXRwdXQgPSAnJWQg4KSm4KS/4KS14KS4JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6IG91dHB1dCA9ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTU0nOiBvdXRwdXQgPSAnJWQg4KSu4KS54KS/4KSo4KWHJzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6IG91dHB1dCA9ICfgpI/gpJUg4KS14KSw4KWN4KS3JzsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneXknOiBvdXRwdXQgPSAnJWQg4KS14KSw4KWN4KS34KWHJzsgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOiBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOClh+CkleCkguCkpuCkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NzJzogb3V0cHV0ID0gJyVkIOCkuOClh+CkleCkguCkpuCkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkv+CkqOCkv+Ckn+Ckvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21tJzogb3V0cHV0ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+CkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpOCkvuCkuOCkvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzogb3V0cHV0ID0gJyVkIOCkpOCkvuCkuOCkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkpuCkv+CkteCkuOCkvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RkJzogb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuOCkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkruCkueCkv+CkqOCljeCkr+Ckvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ01NJzogb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOCljeCkr+CkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOiBvdXRwdXQgPSAn4KSP4KSV4KS+IOCkteCksOCljeCkt+Ckvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3l5Jzogb3V0cHV0ID0gJyVkIOCkteCksOCljeCkt+CkvuCkgic7IGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgbXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtcicsIHtcbiAgICAgICAgbW9udGhzIDogJ+CknOCkvuCkqOClh+CkteCkvuCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpL7gpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+Ckj+CkquCljeCksOCkv+Cksl/gpK7gpYdf4KSc4KWC4KSoX+CknOClgeCksuCliF/gpJHgpJfgpLjgpY3gpJ9f4KS44KSq4KWN4KSf4KWH4KSC4KSs4KSwX+CkkeCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpLXgpY3gpLngpYfgpILgpKzgpLBf4KSh4KS/4KS44KWH4KSC4KSs4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ+CknOCkvuCkqOClhy5f4KSr4KWH4KSs4KWN4KSw4KWBLl/gpK7gpL7gpLDgpY3gpJouX+Ckj+CkquCljeCksOCkvy5f4KSu4KWHLl/gpJzgpYLgpKguX+CknOClgeCksuCliC5f4KSR4KSXLl/gpLjgpKrgpY3gpJ/gpYfgpIIuX+CkkeCkleCljeCkn+Cliy5f4KSo4KWL4KS14KWN4KS54KWH4KSCLl/gpKHgpL/gpLjgpYfgpIIuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4KSw4KS14KS/4KS14KS+4KSwX+CkuOCli+CkruCkteCkvuCksF/gpK7gpILgpJfgpLPgpLXgpL7gpLBf4KSs4KWB4KSn4KS14KS+4KSwX+Ckl+ClgeCksOClguCkteCkvuCksF/gpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLBf4KS24KSo4KS/4KS14KS+4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CksOCkteCkv1/gpLjgpYvgpK5f4KSu4KSC4KSX4KSzX+CkrOClgeCkp1/gpJfgpYHgpLDgpYJf4KS24KWB4KSV4KWN4KSwX+CktuCkqOCkvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4KSwX+CkuOCli1/gpK7gpIJf4KSs4KWBX+Ckl+ClgV/gpLbgpYFf4KS2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvicsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4KS14KS+4KSc4KSk4KS+J1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4KSJ4KSm4KWN4KSv4KS+XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgpJXgpL7gpLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CkruCkvuCkl+ClgOCksl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlOiAnJXPgpK7gpKfgpY3gpK/gpYcnLFxuICAgICAgICAgICAgcGFzdDogJyVz4KSq4KWC4KSw4KWN4KS14KWAJyxcbiAgICAgICAgICAgIHM6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgc3M6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBtbTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGhoOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgZGQ6IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBNTTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5OiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHl5OiByZWxhdGl2ZVRpbWVNclxuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSk4KWN4KSw4KWAfOCkuOCkleCkvuCks+ClgHzgpKbgpYHgpKrgpL7gpLDgpYB84KS44KS+4KSv4KSC4KSV4KS+4KSz4KWALyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOCljeCksOClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkleCkvuCks+ClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpYHgpKrgpL7gpLDgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkvuCkr+CkguCkleCkvuCks+ClgCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpY3gpLDgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkleCkvuCks+ClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWB4KSq4KS+4KSw4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCljeCksOClgCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1yO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXNNeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zLW15Jywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG0gOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zTXk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21zJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0Rpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQWhfSXNfU2xfUmJfS21fSm1fU2InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3RlbmdhaGFyaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAncGV0YW5nJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RlbmdhaGFyaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3BldGFuZyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFc29rIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbS2VsbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xlcGFzIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFsYW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB5YW5nIGxlcGFzJyxcbiAgICAgICAgICAgIHMgOiAnYmViZXJhcGEgc2FhdCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzYWF0JyxcbiAgICAgICAgICAgIG0gOiAnc2VtaW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1zO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbm5hcl9GcmFyX01hcnp1X0FwcmlsX01lamp1X8SgdW5qdV9MdWxqdV9Bd3dpc3N1X1NldHRlbWJydV9PdHR1YnJ1X05vdmVtYnJ1X0RpxItlbWJydScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZyYV9NYXJfQXByX01lal/EoHVuX0x1bF9Bd3dfU2V0X090dF9Ob3ZfRGnEiycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnSWwtxKZhZGRfSXQtVG5lam5fSXQtVGxpZXRhX0wtRXJiZ8SnYV9JbC3EpmFtaXNfSWwtxKBpbWfEp2FfSXMtU2lidCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfEpmFkX1RuZV9UbGlfRXJiX8SmYW1fxKBpbV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ8SmYV9Ubl9UbF9Fcl/EpmFfxKBpX1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSWxsdW0gZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tHxKdhZGEgZmlsLV1MVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtmaWwtXUxUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0lsLWJpZXJhxKcgZmlsLV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsaSBnxKdhZGRhXSBbZmlsLV1MVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZuKAmSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGlsdScsXG4gICAgICAgICAgICBzIDogJ2Z0aXQgc2Vrb25kaScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRpJyxcbiAgICAgICAgICAgIG0gOiAnbWludXRhJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0aScsXG4gICAgICAgICAgICBoIDogJ3NpZWfEp2EnLFxuICAgICAgICAgICAgaGggOiAnJWQgc2llZ8SnYXQnLFxuICAgICAgICAgICAgZCA6ICfEoXVybmF0YScsXG4gICAgICAgICAgICBkZCA6ICclZCDEoXJhbmV0JyxcbiAgICAgICAgICAgIE0gOiAneGFoYXInLFxuICAgICAgICAgICAgTU0gOiAnJWQgeGh1cicsXG4gICAgICAgICAgICB5IDogJ3NlbmEnLFxuICAgICAgICAgICAgeXkgOiAnJWQgc25pJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG10O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfhgYEnLFxuICAgICAgICAnMic6ICfhgYInLFxuICAgICAgICAnMyc6ICfhgYMnLFxuICAgICAgICAnNCc6ICfhgYQnLFxuICAgICAgICAnNSc6ICfhgYUnLFxuICAgICAgICAnNic6ICfhgYYnLFxuICAgICAgICAnNyc6ICfhgYcnLFxuICAgICAgICAnOCc6ICfhgYgnLFxuICAgICAgICAnOSc6ICfhgYknLFxuICAgICAgICAnMCc6ICfhgYAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4YGBJzogJzEnLFxuICAgICAgICAn4YGCJzogJzInLFxuICAgICAgICAn4YGDJzogJzMnLFxuICAgICAgICAn4YGEJzogJzQnLFxuICAgICAgICAn4YGFJzogJzUnLFxuICAgICAgICAn4YGGJzogJzYnLFxuICAgICAgICAn4YGHJzogJzcnLFxuICAgICAgICAn4YGIJzogJzgnLFxuICAgICAgICAn4YGJJzogJzknLFxuICAgICAgICAn4YGAJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBteSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ215Jywge1xuICAgICAgICBtb250aHM6ICfhgIfhgJThgLrhgJThgJ3hgKvhgJvhgK5f4YCW4YCx4YCW4YCx4YCs4YC64YCd4YCr4YCb4YCuX+GAmeGAkOGAul/hgKfhgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgIfhgLDhgJzhgK3hgK/hgIThgLpf4YCe4YC84YCC4YCv4YCQ4YC6X+GAheGAgOGAuuGAkOGAhOGAuuGAmOGArF/hgKHhgLHhgKzhgIDhgLrhgJDhgK3hgK/hgJjhgKxf4YCU4YCt4YCv4YCd4YCE4YC64YCY4YCsX+GAkuGAruGAh+GAhOGAuuGAmOGArCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhgIfhgJThgLpf4YCW4YCxX+GAmeGAkOGAul/hgJXhgLzhgK5f4YCZ4YCxX+GAh+GAveGAlOGAul/hgJzhgK3hgK/hgIThgLpf4YCe4YC8X+GAheGAgOGAul/hgKHhgLHhgKzhgIDhgLpf4YCU4YCt4YCvX+GAkuGAricuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfhgJDhgJThgIThgLrhgLnhgILhgJThgL3hgLFf4YCQ4YCU4YCE4YC64YC54YCc4YCsX+GAoeGAhOGAuuGAueGAguGAq1/hgJfhgK/hgJLhgLnhgJPhgJ/hgLDhgLhf4YCA4YC84YCs4YCe4YCV4YCQ4YCx4YC4X+GAnuGAseGArOGAgOGAvOGArF/hgIXhgJThgLEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhgJThgL3hgLFf4YCc4YCsX+GAguGAq1/hgJ/hgLDhgLhf4YCA4YC84YCsX+GAnuGAseGArF/hgJThgLEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+GAmuGAlOGAsS5dIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4YCZ4YCU4YCA4YC64YCW4YC84YCU4YC6XSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhgJnhgJThgLEu4YCAXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vhgJXhgLzhgK7hgLjhgIHhgLLhgLfhgJ7hgLHhgKxdIGRkZGQgTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ+GAnOGArOGAmeGAiuGAuuGAtyAlcyDhgJnhgL7hgKwnLFxuICAgICAgICAgICAgcGFzdDogJ+GAnOGAveGAlOGAuuGAgeGAsuGAt+GAnuGAseGArCAlcyDhgIAnLFxuICAgICAgICAgICAgczogJ+GAheGAgOGAueGAgOGAlOGAui7hgKHhgJThgIrhgLrhgLjhgIThgJrhgLonLFxuICAgICAgICAgICAgc3MgOiAnJWQg4YCF4YCA4YC54YCA4YCU4YC34YC6JyxcbiAgICAgICAgICAgIG06ICfhgJDhgIXhgLrhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgbW06ICclZCDhgJnhgK3hgJThgIXhgLonLFxuICAgICAgICAgICAgaDogJ+GAkOGAheGAuuGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBoaDogJyVkIOGAlOGArOGAm+GAricsXG4gICAgICAgICAgICBkOiAn4YCQ4YCF4YC64YCb4YCA4YC6JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4YCb4YCA4YC6JyxcbiAgICAgICAgICAgIE06ICfhgJDhgIXhgLrhgJwnLFxuICAgICAgICAgICAgTU06ICclZCDhgJwnLFxuICAgICAgICAgICAgeTogJ+GAkOGAheGAuuGAlOGAvuGAheGAuicsXG4gICAgICAgICAgICB5eTogJyVkIOGAlOGAvuGAheGAuidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+GBgeGBguGBg+GBhOGBheGBhuGBh+GBiOGBieGBgF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBteTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG5iID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmInLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW4uX2ZlYi5fbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ3PDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnc8O4Ll9tYS5fdGkuX29uLl90by5fZnIuX2zDuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3PDuF9tYV90aV9vbl90b19mcl9sw7gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSBkYWcga2wuXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHMgOiAnbm9lbiBzZWt1bmRlcicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtIDogJ2V0dCBtaW51dHQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaCA6ICdlbiB0aW1lJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQgOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VyJyxcbiAgICAgICAgICAgIE0gOiAnZW4gbcOlbmVkJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DpW5lZGVyJyxcbiAgICAgICAgICAgIHkgOiAnZXR0IMOlcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDpXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+ClpycsXG4gICAgICAgICcyJzogJ+ClqCcsXG4gICAgICAgICczJzogJ+ClqScsXG4gICAgICAgICc0JzogJ+ClqicsXG4gICAgICAgICc1JzogJ+ClqycsXG4gICAgICAgICc2JzogJ+ClrCcsXG4gICAgICAgICc3JzogJ+ClrScsXG4gICAgICAgICc4JzogJ+ClricsXG4gICAgICAgICc5JzogJ+ClrycsXG4gICAgICAgICcwJzogJ+ClpidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgJ+Clpic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgbmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCduZScsIHtcbiAgICAgICAgbW9udGhzIDogJ+CknOCkqOCkteCksOClgF/gpKvgpYfgpKzgpY3gpLDgpYHgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCkv+Cksl/gpK7gpIhf4KSc4KWB4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLfgpY3gpJ9f4KS44KWH4KSq4KWN4KSf4KWH4KSu4KWN4KSs4KSwX+CkheCkleCljeCkn+Cli+CkrOCksF/gpKjgpYvgpK3gpYfgpK7gpY3gpKzgpLBf4KSh4KS/4KS44KWH4KSu4KWN4KSs4KSwJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgpJzgpKguX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCkvy5f4KSu4KSIX+CknOClgeCkqF/gpJzgpYHgpLLgpL7gpIguX+CkheCkly5f4KS44KWH4KSq4KWN4KSfLl/gpIXgpJXgpY3gpJ/gpYsuX+CkqOCli+CkreClhy5f4KSh4KS/4KS44KWHLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CkhuCkh+CkpOCkrOCkvuCksF/gpLjgpYvgpK7gpKzgpL7gpLBf4KSu4KSZ4KWN4KSX4KSy4KSs4KS+4KSwX+CkrOClgeCkp+CkrOCkvuCksF/gpKzgpL/gpLngpL/gpKzgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KSs4KS+4KSwX+CktuCkqOCkv+CkrOCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgpIbgpIfgpKQuX+CkuOCli+Ckri5f4KSu4KSZ4KWN4KSX4KSyLl/gpKzgpYHgpKcuX+CkrOCkv+CkueCkvy5f4KS24KWB4KSV4KWN4KSwLl/gpLbgpKjgpL8uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgpIYuX+CkuOCliy5f4KSu4KSCLl/gpKzgpYEuX+CkrOCkvy5f4KS24KWBLl/gpLYuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0HgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTFRTIDogJ0HgpJXgpYsgaDptbTpzcyDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhycsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4KSw4KS+4KSk4KS/fOCkrOCkv+CkueCkvuCkqHzgpKbgpL/gpIngpIHgpLjgpYt84KS44KS+4KSB4KSdLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CksOCkvuCkpOCkvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkrOCkv+CkueCkvuCkqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKbgpL/gpIngpIHgpLjgpYsnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkuOCkvuCkgeCknScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKzgpL/gpLngpL7gpKgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuCkv+CkieCkgeCkuOCliyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSB4KSdJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CkhuCknF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4KSt4KWL4KSy4KS/XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4KSG4KSJ4KSB4KSm4KWLXSBkZGRkWyxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CkueCkv+CknOCli10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+Ckl+Ckj+CkleCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPgpK7gpL4nLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgpIXgpJfgpL7gpKHgpL8nLFxuICAgICAgICAgICAgcyA6ICfgpJXgpYfgpLngpYAg4KSV4KWN4KS34KSjJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCkuOClh+CkleClh+Cko+CljeCkoScsXG4gICAgICAgICAgICBtIDogJ+Ckj+CklSDgpK7gpL/gpKjgpYfgpJ8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4KSu4KS/4KSo4KWH4KSfJyxcbiAgICAgICAgICAgIGggOiAn4KSP4KSVIOCkmOCko+CljeCkn+CkvicsXG4gICAgICAgICAgICBoaCA6ICclZCDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgZCA6ICfgpI/gpJUg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBNIDogJ+Ckj+CklSDgpK7gpLngpL/gpKjgpL4nLFxuICAgICAgICAgICAgTU0gOiAnJWQg4KSu4KS54KS/4KSo4KS+JyxcbiAgICAgICAgICAgIHkgOiAn4KSP4KSVIOCkrOCksOCljeCktycsXG4gICAgICAgICAgICB5eSA6ICclZCDgpKzgpLDgpY3gpLcnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnRXaXRoRG90cyA9ICdqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydFdpdGhvdXREb3RzID0gJ2phbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eamFuL2ksIC9eZmViL2ksIC9ebWFhcnR8bXJ0Lj8kL2ksIC9eYXByL2ksIC9ebWVpJC9pLCAvXmp1bltpLl0/JC9pLCAvXmp1bFtpLl0/JC9pLCAvXmF1Zy9pLCAvXnNlcC9pLCAvXm9rdC9pLCAvXm5vdi9pLCAvXmRlYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2k7XG5cbiAgICB2YXIgbmxCZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25sLWJlJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhvdXREb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFdpdGhEb3RzW20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGphblxcLj98ZmViXFwuP3xtcnRcXC4/fGFwclxcLj98bWVpfGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pLFxuXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgd2Vla2RheXMgOiAnem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICd6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3pvX21hX2RpX3dvX2RvX3ZyX3phJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW3ZhbmRhYWcgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dpc3RlcmVuIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1thZmdlbG9wZW5dIGRkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvdmVyICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgZ2VsZWRlbicsXG4gICAgICAgICAgICBzIDogJ2VlbiBwYWFyIHNlY29uZGVuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVuJyxcbiAgICAgICAgICAgIG0gOiAnw6nDqW4gbWludXV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaCA6ICfDqcOpbiB1dXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdXVyJyxcbiAgICAgICAgICAgIGQgOiAnw6nDqW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2VuJyxcbiAgICAgICAgICAgIE0gOiAnw6nDqW4gbWFhbmQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWFhbmRlbicsXG4gICAgICAgICAgICB5IDogJ8Opw6luIGphYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFhcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0ZXxkZSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICgobnVtYmVyID09PSAxIHx8IG51bWJlciA9PT0gOCB8fCBudW1iZXIgPj0gMjApID8gJ3N0ZScgOiAnZGUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmxCZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmphbi9pLCAvXmZlYi9pLCAvXm1hYXJ0fG1ydC4/JC9pLCAvXmFwci9pLCAvXm1laSQvaSwgL15qdW5baS5dPyQvaSwgL15qdWxbaS5dPyQvaSwgL15hdWcvaSwgL15zZXAvaSwgL15va3QvaSwgL15ub3YvaSwgL15kZWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oamFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xtZWl8anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcblxuICAgICAgICB3ZWVrZGF5cyA6ICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHMgOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbSA6ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoIDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaCA6ICclZCB1dXInLFxuICAgICAgICAgICAgZCA6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTSA6ICfDqcOpbiBtYWFuZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHkgOiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eSA6ICclZCBqYWFyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBubDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG5uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbm4nLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VuZGFnX23DpW5kYWdfdHlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sYXVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1bl9tw6VuX3R5c19vbnNfdG9yX2ZyZV9sYXUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3N1X23DpV90eV9vbl90b19mcl9sw7gnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJIGRhZyBrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSSBtb3Jnb24ga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJIGfDpXIga2xva2thXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tGw7hyZWfDpWFuZGVdIGRkZGQgW2tsb2trYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBzaWRhbicsXG4gICAgICAgICAgICBzIDogJ25va3JlIHNla3VuZCcsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmQnLFxuICAgICAgICAgICAgbSA6ICdlaXQgbWludXR0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dCcsXG4gICAgICAgICAgICBoIDogJ2VpbiB0aW1lJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRpbWFyJyxcbiAgICAgICAgICAgIGQgOiAnZWluIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdhcicsXG4gICAgICAgICAgICBNIDogJ2VpbiBtw6VuYWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeSA6ICdlaXQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBubjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4KmnJyxcbiAgICAgICAgJzInOiAn4KmoJyxcbiAgICAgICAgJzMnOiAn4KmpJyxcbiAgICAgICAgJzQnOiAn4KmqJyxcbiAgICAgICAgJzUnOiAn4KmrJyxcbiAgICAgICAgJzYnOiAn4KmsJyxcbiAgICAgICAgJzcnOiAn4KmtJyxcbiAgICAgICAgJzgnOiAn4KmuJyxcbiAgICAgICAgJzknOiAn4KmvJyxcbiAgICAgICAgJzAnOiAn4KmmJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4KmnJzogJzEnLFxuICAgICAgICAn4KmoJzogJzInLFxuICAgICAgICAn4KmpJzogJzMnLFxuICAgICAgICAn4KmqJzogJzQnLFxuICAgICAgICAn4KmrJzogJzUnLFxuICAgICAgICAn4KmsJzogJzYnLFxuICAgICAgICAn4KmtJzogJzcnLFxuICAgICAgICAn4KmuJzogJzgnLFxuICAgICAgICAn4KmvJzogJzknLFxuICAgICAgICAn4KmmJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBwYUluID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGEtaW4nLCB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSBtb250aHMgbmFtZSBhcyBwZXIgTmFuYWtzaGFoaSBDYWxlbmRhciBidXQgdGhleSBhcmUgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS5cbiAgICAgICAgbW9udGhzIDogJ+ConOCoqOCoteCosOCpgF/gqKvgqLzgqLDgqLXgqLDgqYBf4Kiu4Ki+4Kiw4KiaX+CoheCoquCpjeCosOCpiOCosl/gqK7gqIhf4Kic4KmC4KioX+ConOCpgeCosuCovuCoiF/gqIXgqJfgqLjgqKRf4Ki44Kik4Kmw4Kis4KiwX+CoheColeCopOCpguCorOCosF/gqKjgqLXgqbDgqKzgqLBf4Kim4Ki44Kmw4Kis4KiwJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgqJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOComl/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHgqLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXgqKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4KiQ4Kik4Ki14Ki+4KiwX+CouOCpi+CoruCoteCovuCosF/gqK7gqbDgqJfgqLLgqLXgqL7gqLBf4Kis4KmB4Kin4Ki14Ki+4KiwX+CoteCpgOCosOCoteCovuCosF/gqLjgqLzgqYHgqbHgqJXgqLDgqLXgqL7gqLBf4Ki44Ki84Kio4KmA4Kia4Kiw4Ki14Ki+4KiwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CokOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDgqLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4KiQ4KikX+CouOCpi+Corl/gqK7gqbDgqJfgqLJf4Kis4KmB4KinX+CoteCpgOCosF/gqLjgqLzgqYHgqJXgqLBf4Ki44Ki84Kio4KmAJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcyDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCphycsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0g4Ki14Kic4KmHJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CoheConF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4KiF4KiX4Kiy4Ki+XSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgqJXgqLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgqKrgqL/gqJvgqLLgqYddIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgqLXgqL/gqbHgqJonLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgqKrgqL/gqJvgqLLgqYcnLFxuICAgICAgICAgICAgcyA6ICfgqJXgqYHgqJ0g4Ki44KiV4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCouOColeCov+CpsOConycsXG4gICAgICAgICAgICBtIDogJ+Coh+ColSDgqK7gqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIGggOiAn4KiH4Kmx4KiVIOComOCpsOCon+CovicsXG4gICAgICAgICAgICBoaCA6ICclZCDgqJjgqbDgqJ/gqYcnLFxuICAgICAgICAgICAgZCA6ICfgqIfgqbHgqJUg4Kim4Ki/4KioJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCopuCov+CoqCcsXG4gICAgICAgICAgICBNIDogJ+Coh+CpseColSDgqK7gqLngqYDgqKjgqL4nLFxuICAgICAgICAgICAgTU0gOiAnJWQg4Kiu4Ki54KmA4Kio4KmHJyxcbiAgICAgICAgICAgIHkgOiAn4KiH4Kmx4KiVIOCouOCovuCosicsXG4gICAgICAgICAgICB5eSA6ICclZCDgqLjgqL7gqLInXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgqafgqajgqangqargqavgqazgqa3gqa7gqa/gqaZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFB1bmphYmkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gUHVuamFiaS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CosOCovuCopHzgqLjgqLXgqYfgqLB84Kim4KmB4Kiq4Ki54Ki/4KiwfOCouOCovOCovuCori8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgqLDgqL7gqKQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLXgqYfgqLAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Kim4KmB4Kiq4Ki54Ki/4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqLjgqLzgqL7gqK4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CosOCovuCopCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ki44Ki14KmH4KiwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqKbgqYHgqKrgqLngqL/gqLAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CouOCovOCovuCoric7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kiw4Ki+4KikJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGFJbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc05vbWluYXRpdmUgPSAnc3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTdWJqZWN0aXZlID0gJ3N0eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBuaWFfd3J6ZcWbbmlhX3Bhxbpkemllcm5pa2FfbGlzdG9wYWRhX2dydWRuaWEnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIChuICUgMTAgPCA1KSAmJiAobiAlIDEwID4gMSkgJiYgKCh+fihuIC8gMTApICUgMTApICE9PSAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWt1bmQnKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXTEmSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW51dHknIDogJ21pbnV0Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCAgPyAnZ29kemluYScgIDogJ2dvZHppbsSZJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2dvZHppbnknIDogJ2dvZHppbicpO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWllc2nEhWNlJyA6ICdtaWVzacSZY3knKTtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2xhdGEnIDogJ2xhdCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHBsID0gbW9tZW50LmRlZmluZUxvY2FsZSgncGwnLCB7XG4gICAgICAgIG1vbnRocyA6IGZ1bmN0aW9uIChtb21lbnRUb0Zvcm1hdCwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW1vbWVudFRvRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAvLyBIYWNrOiBpZiBmb3JtYXQgZW1wdHkgd2Uga25vdyB0aGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGVcbiAgICAgICAgICAgICAgICAvLyBSZWdFeHAgYnkgbW9tZW50LiBHaXZlIHRoZW4gYmFjayBib3RoIHZhbGlkIGZvcm1zIG9mIG1vbnRoc1xuICAgICAgICAgICAgICAgIC8vIGluIFJlZ0V4cCByZWFkeSBmb3JtYXQuXG4gICAgICAgICAgICAgICAgcmV0dXJuICcoJyArIG1vbnRoc1N1YmplY3RpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV0gKyAnfCcgKyBtb250aHNOb21pbmF0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldICsgJyknO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvRCBNTU1NLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU3ViamVjdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc05vbWluYXRpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3N0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZHpfcG9uX3d0X8Wbcl9jendfcHRfc29iJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdOZF9Qbl9XdF/FmnJfQ3pfUHRfU28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0R6acWbIG9dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbSnV0cm8gb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBuaWVkemllbMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXZSB3dG9yZWsgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgxZtyb2TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyBzb2JvdMSZIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV10gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW1djem9yYWogb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBuaWVkemllbMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCeV0gZGRkZCBbb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHRlbXUnLFxuICAgICAgICAgICAgcyA6ICdraWxrYSBzZWt1bmQnLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogJzEgZHppZcWEJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRuaScsXG4gICAgICAgICAgICBNIDogJ21pZXNpxIVjJyxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6ICdyb2snLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHB0QnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdC1icicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDYpID9cbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaMOhICVzJyxcbiAgICAgICAgICAgIHMgOiAncG91Y29zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW0gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIE0gOiAndW0gbcOqcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VtIGFubycsXG4gICAgICAgICAgICB5eSA6ICclZCBhbm9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuidcbiAgICB9KTtcblxuICAgIHJldHVybiBwdEJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgcHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDYpID9cbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaMOhICVzJyxcbiAgICAgICAgICAgIHMgOiAnc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1bSBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VtYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW0gZGlhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpYXMnLFxuICAgICAgICAgICAgTSA6ICd1bSBtw6pzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW0gYW5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFub3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICAgICAnc3MnOiAnc2VjdW5kZScsXG4gICAgICAgICAgICAgICAgJ21tJzogJ21pbnV0ZScsXG4gICAgICAgICAgICAgICAgJ2hoJzogJ29yZScsXG4gICAgICAgICAgICAgICAgJ2RkJzogJ3ppbGUnLFxuICAgICAgICAgICAgICAgICdNTSc6ICdsdW5pJyxcbiAgICAgICAgICAgICAgICAneXknOiAnYW5pJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlcGFyYXRvciA9ICcgJztcbiAgICAgICAgaWYgKG51bWJlciAlIDEwMCA+PSAyMCB8fCAobnVtYmVyID49IDEwMCAmJiBudW1iZXIgJSAxMDAgPT09IDApKSB7XG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnIGRlICc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWJlciArIHNlcGFyYXRvciArIGZvcm1hdFtrZXldO1xuICAgIH1cblxuICAgIHZhciBybyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3JvJywge1xuICAgICAgICBtb250aHMgOiAnaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnaWFuLl9mZWJyLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEdV9MdV9NYV9NaV9Kb19WaV9Tw6InLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXppIGxhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW23DomluZSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpZXJpIGxhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tmb3N0YV0gZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3Blc3RlICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgw65uIHVybcSDJyxcbiAgICAgICAgICAgIHMgOiAnY8OidGV2YSBzZWN1bmRlJyxcbiAgICAgICAgICAgIHNzIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXQnLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6ICdvIG9yxIMnLFxuICAgICAgICAgICAgaGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZCA6ICdvIHppJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE0gOiAnbyBsdW7EgycsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5IDogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBybztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiAobnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApID8gZm9ybXNbMV0gOiBmb3Jtc1syXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzcyc6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgJ21tJzogd2l0aG91dFN1ZmZpeCA/ICfQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInIDogJ9C80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgicsXG4gICAgICAgICAgICAnaGgnOiAn0YfQsNGBX9GH0LDRgdCwX9GH0LDRgdC+0LInLFxuICAgICAgICAgICAgJ2RkJzogJ9C00LXQvdGMX9C00L3Rj1/QtNC90LXQuScsXG4gICAgICAgICAgICAnTU0nOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LInLFxuICAgICAgICAgICAgJ3l5JzogJ9Cz0L7QtF/Qs9C+0LTQsF/Qu9C10YInXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwJyA6ICfQvNC40L3Rg9GC0YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9e0Y/QvdCyL2ksIC9e0YTQtdCyL2ksIC9e0LzQsNGAL2ksIC9e0LDQv9GAL2ksIC9e0LzQsFvQudGPXS9pLCAvXtC40Y7QvS9pLCAvXtC40Y7Quy9pLCAvXtCw0LLQsy9pLCAvXtGB0LXQvS9pLCAvXtC+0LrRgi9pLCAvXtC90L7Rjy9pLCAvXtC00LXQui9pXTtcblxuICAgIC8vIGh0dHA6Ly9uZXcuZ3JhbW90YS5ydS9zcHJhdmthL3J1bGVzLzEzOS1wcm9wIDogwqcgMTAzXG4gICAgLy8g0KHQvtC60YDQsNGJ0LXQvdC40Y8g0LzQtdGB0Y/RhtC10LI6IGh0dHA6Ly9uZXcuZ3JhbW90YS5ydS9zcHJhdmthL2J1cm8vc2VhcmNoLWFuc3dlcj9zPTI0MjYzN1xuICAgIC8vIENMRFIgZGF0YTogICAgICAgICAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9jbGRyL2NoYXJ0cy8yOC9zdW1tYXJ5L3J1Lmh0bWwjMTc1M1xuICAgIHZhciBydSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3J1Jywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LLQsNGA0Y9f0YTQtdCy0YDQsNC70Y9f0LzQsNGA0YLQsF/QsNC/0YDQtdC70Y9f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs9GD0YHRgtCwX9GB0LXQvdGC0Y/QsdGA0Y9f0L7QutGC0Y/QsdGA0Y9f0L3QvtGP0LHRgNGPX9C00LXQutCw0LHRgNGPJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9GP0L3QstCw0YDRjF/RhNC10LLRgNCw0LvRjF/QvNCw0YDRgl/QsNC/0YDQtdC70Yxf0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgNGMX9C+0LrRgtGP0LHRgNGMX9C90L7Rj9Cx0YDRjF/QtNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6IHtcbiAgICAgICAgICAgIC8vINC/0L4gQ0xEUiDQuNC80LXQvdC90L4gXCLQuNGO0LsuXCIg0LggXCLQuNGO0L0uXCIsINC90L4g0LrQsNC60L7QuSDRgdC80YvRgdC7INC80LXQvdGP0YLRjCDQsdGD0LrQstGDINC90LAg0YLQvtGH0LrRgyA/XG4gICAgICAgICAgICBmb3JtYXQ6ICfRj9C90LIuX9GE0LXQstGALl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGA0YJf0LDQv9GALl/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6Licuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5cyA6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbQsF/RgdGD0LHQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ9Cy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9cXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXF0gP2RkZGQvXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcblxuICAgICAgICAvLyDQv9C+0LvQvdGL0LUg0L3QsNC30LLQsNC90LjRjyDRgSDQv9Cw0LTQtdC20LDQvNC4LCDQv9C+INGC0YDQuCDQsdGD0LrQstGLLCDQtNC70Y8g0L3QtdC60L7RgtC+0YDRi9GFLCDQv9C+IDQg0LHRg9C60LLRiywg0YHQvtC60YDQsNGJ0LXQvdC40Y8g0YEg0YLQvtGH0LrQvtC5INC4INCx0LXQtyDRgtC+0YfQutC4XG4gICAgICAgIG1vbnRoc1JlZ2V4OiAvXijRj9C90LLQsNGAW9GM0Y9dfNGP0L3QslxcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1xcLj980LzQsNGA0YLQsD980LzQsNGAXFwuP3zQsNC/0YDQtdC7W9GM0Y9dfNCw0L/RgFxcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XFwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XFwuP3zQsNCy0LPRg9GB0YLQsD980LDQstCzXFwuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cXC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcXC4/fNC90L7Rj9Cx0YBb0YzRj1180L3QvtGP0LE/XFwuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XFwuPykvaSxcblxuICAgICAgICAvLyDQutC+0L/QuNGPINC/0YDQtdC00YvQtNGD0YnQtdCz0L5cbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogL14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cXC4/fNC80LDRgNGC0LA/fNC80LDRgFxcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVxcLj980LjRjtC7W9GM0Y9dfNC40Y7Qu1xcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1xcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XFwuP3zQvtC60YLRj9Cx0YBb0YzRj1180L7QutGCXFwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1xcLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulxcLj8pL2ksXG5cbiAgICAgICAgLy8g0L/QvtC70L3Ri9C1INC90LDQt9Cy0LDQvdC40Y8g0YEg0L/QsNC00LXQttCw0LzQuFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14o0Y/QvdCy0LDRgFvRj9GMXXzRhNC10LLRgNCw0Ltb0Y/RjF180LzQsNGA0YLQsD980LDQv9GA0LXQu1vRj9GMXXzQvNCwW9GP0LldfNC40Y7QvVvRj9GMXXzQuNGO0Ltb0Y/RjF180LDQstCz0YPRgdGC0LA/fNGB0LXQvdGC0Y/QsdGAW9GP0YxdfNC+0LrRgtGP0LHRgFvRj9GMXXzQvdC+0Y/QsdGAW9GP0YxdfNC00LXQutCw0LHRgFvRj9GMXSkvaSxcblxuICAgICAgICAvLyDQktGL0YDQsNC20LXQvdC40LUsINC60L7RgtC+0YDQvtC1INGB0L7QvtGC0LLQtdGB0YLQstGD0LXRgiDRgtC+0LvRjNC60L4g0YHQvtC60YDQsNGJ0ZHQvdC90YvQvCDRhNC+0YDQvNCw0LxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14o0Y/QvdCyXFwufNGE0LXQstGAP1xcLnzQvNCw0YBb0YIuXXzQsNC/0YBcXC580LzQsFvRj9C5XXzQuNGO0L1b0YzRjy5dfNC40Y7Qu1vRjNGPLl180LDQstCzXFwufNGB0LXQvdGCP1xcLnzQvtC60YJcXC580L3QvtGP0LE/XFwufNC00LXQulxcLikvaSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWSDQsy4nLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZINCzLiwgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINCzLiwgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9Ch0LXQs9C+0LTQvdGPLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQl9Cw0LLRgtGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9CS0YfQtdGA0LAsINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0LjQuV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpICE9PSB0aGlzLndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70L7QtV0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRheSgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQktC+XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSXSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfRh9C10YDQtdC3ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0L3QsNC30LDQtCcsXG4gICAgICAgICAgICBzIDogJ9C90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3MgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtbSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoIDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkIDogJ9C00LXQvdGMJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIE0gOiAn0LzQtdGB0Y/RhicsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5IDogJ9Cz0L7QtCcsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9C4fNGD0YLRgNCwfNC00L3Rj3zQstC10YfQtdGA0LAvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQtdGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YPRgtGA0LAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LXRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+fNGPKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Rjyc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcnU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICfYrNmG2YjYsdmKJyxcbiAgICAgICAgJ9mB2YrYqNix2YjYsdmKJyxcbiAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgJ9in2b7YsdmK2YQnLFxuICAgICAgICAn2YXYptmKJyxcbiAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICfYrNmI2YTYp9ih2ZAnLFxuICAgICAgICAn2KLar9iz2b0nLFxuICAgICAgICAn2LPZitm+2b3Zhdio2LEnLFxuICAgICAgICAn2KLaqtm92YjYqNixJyxcbiAgICAgICAgJ9mG2YjZhdio2LEnLFxuICAgICAgICAn2orYs9mF2KjYsSdcbiAgICBdO1xuICAgIHZhciBkYXlzID0gW1xuICAgICAgICAn2KLahtixJyxcbiAgICAgICAgJ9iz2YjZhdixJyxcbiAgICAgICAgJ9in2rHYp9ix2YgnLFxuICAgICAgICAn2KfYsdio2LknLFxuICAgICAgICAn2K7ZhdmK2LMnLFxuICAgICAgICAn2KzZhdi5JyxcbiAgICAgICAgJ9qH2Ybah9ixJ1xuICAgIF07XG5cbiAgICB2YXIgc2QgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZCcsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW4gOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZNiMIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYp9qEXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vYs9qA2Kfau9mKXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvYp9qz2YrZhiDZh9mB2KrZiiDYqtmKXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vaqtin2YTZh9mHXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb2q/Ystix2YrZhCDZh9mB2KrZil0gZGRkZCBb2KrZil0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINm+2YjYoScsXG4gICAgICAgICAgICBwYXN0IDogJyVzINin2rMnLFxuICAgICAgICAgICAgcyA6ICfahtmG2K8g2LPZitqq2YbaiicsXG4gICAgICAgICAgICBzcyA6ICclZCDYs9mK2qrZhtqKJyxcbiAgICAgICAgICAgIG0gOiAn2YfaqiDZhdmG2b0nLFxuICAgICAgICAgICAgbW0gOiAnJWQg2YXZhtm9JyxcbiAgICAgICAgICAgIGggOiAn2YfaqiDaqtmE2KfaqicsXG4gICAgICAgICAgICBoaCA6ICclZCDaqtmE2KfaqicsXG4gICAgICAgICAgICBkIDogJ9mH2qog2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBkZCA6ICclZCDaj9mK2YbZh9mGJyxcbiAgICAgICAgICAgIE0gOiAn2YfaqiDZhdmH2YrZhtmIJyxcbiAgICAgICAgICAgIE1NIDogJyVkINmF2YfZitmG2KcnLFxuICAgICAgICAgICAgeSA6ICfZh9qqINiz2KfZhCcsXG4gICAgICAgICAgICB5eSA6ICclZCDYs9in2YQnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NlJywge1xuICAgICAgICBtb250aHMgOiAnb8SRxJFhamFnZW3DoW5udV9ndW92dmFtw6FubnVfbmp1a8SNYW3DoW5udV9jdW/Fi29tw6FubnVfbWllc3NlbcOhbm51X2dlYXNzZW3DoW5udV9zdW9pZG5lbcOhbm51X2JvcmdlbcOhbm51X8SNYWvEjWFtw6FubnVfZ29sZ2dvdG3DoW5udV9za8OhYm1hbcOhbm51X2p1b3ZsYW3DoW5udScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnb8SRxJFqX2d1b3Zfbmp1a19jdW9fbWllc19nZWFzX3N1b2lfYm9yZ1/EjWFrxI1fZ29sZ19za8OhYl9qdW92Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzb3RuYWJlYWl2aV92dW9zc8OhcmdhX21hxYvFi2Viw6FyZ2FfZ2Fza2F2YWhra3VfZHVvcmFzdGF0X2JlYXJqYWRhdF9sw6F2dmFyZGF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3NvdG5fdnVvc19tYcWLX2dhc2tfZHVvcl9iZWFyX2zDoXYnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3Nfdl9tX2dfZF9iX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdNTU1NIEQuIFtiLl0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQuIFtiLl0gWVlZWSBbdGkuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW290bmUgdGldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbaWh0dGluIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2lrdGUgdGldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW292ZGRpdF0gZGRkZCBbdGldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIGdlYcW+ZXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdtYcWLaXQgJXMnLFxuICAgICAgICAgICAgcyA6ICdtb2FkZGUgc2VrdW5kZGF0JyxcbiAgICAgICAgICAgIHNzOiAnJWQgc2VrdW5kZGF0JyxcbiAgICAgICAgICAgIG0gOiAnb2t0YSBtaW51aHRhJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnVodGF0JyxcbiAgICAgICAgICAgIGggOiAnb2t0YSBkaWltbXUnLFxuICAgICAgICAgICAgaGggOiAnJWQgZGlpbW11dCcsXG4gICAgICAgICAgICBkIDogJ29rdGEgYmVhaXZpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGJlYWl2dml0JyxcbiAgICAgICAgICAgIE0gOiAnb2t0YSBtw6FubnUnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOhbnV0JyxcbiAgICAgICAgICAgIHkgOiAnb2t0YSBqYWhraScsXG4gICAgICAgICAgICB5eSA6ICclZCBqYWdpdCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgLypqc2hpbnQgLVcxMDAqL1xuICAgIHZhciBzaSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NpJywge1xuICAgICAgICBtb250aHMgOiAn4Lai4Lax4LeA4LeP4La74LeSX+C2tOC3meC2tuC2u+C3gOC3j+C2u+C3kl/gtrjgt4/gtrvgt4rgtq3gt5Rf4LaF4La04LeK4oCN4La74Lea4La94LeKX+C2uOC3kOC2uuC3kl/gtqLgt5bgtrHgt5Jf4Lai4LeW4La94LeSX+C2heC2nOC3neC3g+C3iuC2reC3lF/gt4Pgt5DgtrTgt4rgtq3gt5Dgtrjgt4rgtrbgtrvgt4pf4LaU4Laa4LeK4Lat4Led4La24La74LeKX+C2seC3nOC3gOC3kOC2uOC3iuC2tuC2u+C3il/gtq/gt5ngt4Pgt5Dgtrjgt4rgtrbgtrvgt4onLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+C2ouC2sV/gtrTgt5ngtrZf4La44LeP4La74LeKX+C2heC2tOC3il/gtrjgt5Dgtrrgt5Jf4Lai4LeW4Lax4LeSX+C2ouC3luC2veC3kl/gtoXgtpzgt51f4LeD4LeQ4La04LeKX+C2lOC2muC3il/gtrHgt5zgt4Dgt5Bf4Lav4LeZ4LeD4LeQJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgtongtrvgt5Lgtq/gt49f4LeD4Laz4LeU4Lav4LePX+C2heC2n+C3hOC2u+C3lOC3gOC3j+C2r+C3j1/gtrbgtq/gt4/gtq/gt49f4La24LeK4oCN4La74LeE4LeD4LeK4La04Lat4LeS4Lax4LeK4Lav4LePX+C3g+C3kuC2muC3lOC2u+C3j+C2r+C3j1/gt4Pgt5ngtrHgt4Pgt5Tgtrvgt4/gtq/gt48nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4LaJ4La74LeSX+C3g+C2s+C3lF/gtoXgtp9f4La24Lav4LePX+C2tuC3iuKAjeC2u+C3hF/gt4Pgt5Lgtprgt5Rf4LeD4LeZ4LaxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgtolf4LeDX+C2hV/gtrZf4La24LeK4oCN4La7X+C3g+C3kl/gt4Pgt5knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnYSBoOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdhIGg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkgTU1NTSBEJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZIE1NTU0gRCwgYSBoOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWSBNTU1NIEQgW+C3gOC3kOC2seC3kl0gZGRkZCwgYSBoOm1tOnNzJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C2heC2r10gTFRb4LanXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgt4Tgt5ngtqddIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVFvgtqddJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+C2iuC2uuC3ml0gTFRb4LanXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4La04LeD4LeU4Lac4LeS4La6XSBkZGRkIExUW+C2p10nLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz4Laa4LeS4Lax4LeKJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPgtprgtqcg4La04LeZ4La7JyxcbiAgICAgICAgICAgIHMgOiAn4Lat4Lat4LeK4La04La7IOC2muC3kuC3hOC3kuC2tOC2uicsXG4gICAgICAgICAgICBzcyA6ICfgtq3gtq3gt4rgtrTgtrsgJWQnLFxuICAgICAgICAgICAgbSA6ICfgtrjgt5LgtrHgt5Lgtq3gt4rgtq3gt5Tgt4AnLFxuICAgICAgICAgICAgbW0gOiAn4La44LeS4Lax4LeS4Lat4LeK4Lat4LeUICVkJyxcbiAgICAgICAgICAgIGggOiAn4La04LeQ4La6JyxcbiAgICAgICAgICAgIGhoIDogJ+C2tOC3kOC2uiAlZCcsXG4gICAgICAgICAgICBkIDogJ+C2r+C3kuC2seC2uicsXG4gICAgICAgICAgICBkZCA6ICfgtq/gt5LgtrEgJWQnLFxuICAgICAgICAgICAgTSA6ICfgtrjgt4/gt4PgtronLFxuICAgICAgICAgICAgTU0gOiAn4La44LeP4LeDICVkJyxcbiAgICAgICAgICAgIHkgOiAn4LeA4LeD4La7JyxcbiAgICAgICAgICAgIHl5IDogJ+C3gOC3g+C2uyAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9IOC3gOC3kOC2seC3ki8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDgt4Dgt5DgtrHgt5InO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlIDogL+C2tOC3meC2uyDgt4Dgtrvgt5R84La04LeD4LeKIOC3gOC2u+C3lHzgtrTgt5ku4LeAfOC2tC7gt4AuLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4La0LuC3gC4nIHx8IGlucHV0ID09PSAn4La04LeD4LeKIOC3gOC2u+C3lCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tC7gt4AuJyA6ICfgtrTgt4Pgt4og4LeA4La74LeUJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn4La04LeZLuC3gC4nIDogJ+C2tOC3meC2uyDgt4Dgtrvgt5QnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSAnamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgPSAnamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gcGx1cmFsKG4pIHtcbiAgICAgICAgcmV0dXJuIChuID4gMSkgJiYgKG4gPCA1KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6ICAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBmZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdww6FyIHNla8O6bmQnIDogJ3DDoXIgc2VrdW5kYW1pJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzogLy8gOSBzZWNvbmRzIC8gaW4gOSBzZWNvbmRzIC8gOSBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2Vrw7puZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnc2VrdW5kYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtJzogIC8vIGEgbWludXRlIC8gaW4gYSBtaW51dGUgLyBhIG1pbnV0ZSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW7DunRhJyA6IChpc0Z1dHVyZSA/ICdtaW7DunR1JyA6ICdtaW7DunRvdScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOiAvLyA5IG1pbnV0ZXMgLyBpbiA5IG1pbnV0ZXMgLyA5IG1pbnV0ZXMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtaW7DunR5JyA6ICdtaW7DunQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ21pbsO6dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaCc6ICAvLyBhbiBob3VyIC8gaW4gYW4gaG91ciAvIGFuIGhvdXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnaG9kaW5hJyA6IChpc0Z1dHVyZSA/ICdob2RpbnUnIDogJ2hvZGlub3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzogLy8gOSBob3VycyAvIGluIDkgaG91cnMgLyA5IGhvdXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnaG9kaW55JyA6ICdob2TDrW4nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2hvZGluYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkJzogIC8vIGEgZGF5IC8gaW4gYSBkYXkgLyBhIGRheSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ2RlxYgnIDogJ2TFiG9tJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzogLy8gOSBkYXlzIC8gaW4gOSBkYXlzIC8gOSBkYXlzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnZG5pJyA6ICdkbsOtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdkxYhhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ00nOiAgLy8gYSBtb250aCAvIGluIGEgbW9udGggLyBhIG1vbnRoIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAnbWVzaWFjJyA6ICdtZXNpYWNvbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6IC8vIDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21lc2lhY2UnIDogJ21lc2lhY292Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtZXNpYWNtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneSc6ICAvLyBhIHllYXIgLyBpbiBhIHllYXIgLyBhIHllYXIgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdyb2snIDogJ3Jva29tJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzogLy8gOSB5ZWFycyAvIGluIDkgeWVhcnMgLyA5IHllYXJzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAncm9reScgOiAncm9rb3YnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Jva21pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2sgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzaycsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRoc1Nob3J0LFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWRlxL5hX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfxaF0dnJ0b2tfcGlhdG9rX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ25lX3BvX3V0X3N0X8WhdF9waV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZG5lcyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3phanRyYSBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2byDFoXR2cnRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgcGlhdG9rIG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3bEjWVyYSBvXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO6IG5lZGXEvnUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzdHJlZHUgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw71dIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBzb2JvdHUgb10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2s7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICduZWthaiBzZWt1bmQnIDogJ25la2FqIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdzZWt1bmRvJyA6ICdzZWt1bmRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRpJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3Nla3VuZGUnIDogJ3Nla3VuZGFoJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgbWludXRhJyA6ICdlbm8gbWludXRvJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ21pbnV0YScgOiAnbWludXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtaW51dGknIDogJ21pbnV0YW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRlJyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXQnIDogJ21pbnV0YW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2VuYSB1cmEnIDogJ2VubyB1cm8nO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAndXJhJyA6ICd1cm8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ3VyaScgOiAndXJhbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmUnIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cicgOiAndXJhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gZGFuJyA6ICdlbmltIGRuZW0nO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZGFuJyA6ICdkbmVtJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RuaScgOiAnZG5ldmknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW4gbWVzZWMnIDogJ2VuaW0gbWVzZWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlYycgOiAnbWVzZWNlbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNhJyA6ICdtZXNlY2VtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjZScgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2V2JyA6ICdtZXNlY2knO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZW5vIGxldG8nIDogJ2VuaW0gbGV0b20nO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbGV0bycgOiAnbGV0b20nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGknIDogJ2xldG9tYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldGEnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldCcgOiAnbGV0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2wgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzbCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcmVjX2FwcmlsX21hal9qdW5pal9qdWxpal9hdmd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqLl9qdW4uX2p1bC5fYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1ldHJ0ZWtfcGV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ25lZC5fcG9uLl90b3IuX3NyZS5fxI1ldC5fcGV0Ll9zb2IuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb190b19zcl/EjWVfcGVfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgIDogJ1tkYW5lcyBvYl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSAgOiAnW2p1dHJpIG9iXSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbbmVkZWxqb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtzcmVkb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ZdIFtzb2JvdG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbdsSNZXJhaiBvYl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW25lZGVsam9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtzcmVkb10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qb10gW3NvYm90b10gW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ8SNZXogJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByZWQgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGggICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZCAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2w7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzcSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NxJywge1xuICAgICAgICBtb250aHMgOiAnSmFuYXJfU2hrdXJ0X01hcnNfUHJpbGxfTWFqX1FlcnNob3JfS29ycmlrX0d1c2h0X1NodGF0b3JfVGV0b3JfTsOrbnRvcl9EaGpldG9yJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fU2hrX01hcl9QcmlfTWFqX1Flcl9Lb3JfR3VzX1NodF9UZXRfTsOrbl9EaGonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0UgRGllbF9FIEjDq27Dq19FIE1hcnTDq19FIE3Dq3JrdXLDq19FIEVuanRlX0UgUHJlbXRlX0UgU2h0dW7Dqycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEaWVfSMOrbl9NYXJfTcOrcl9FbmpfUHJlX1NodCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRF9IX01hX03Dq19FX1BfU2gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9QRHxNRC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgwKSA9PT0gJ00nO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXJzIDwgMTIgPyAnUEQnIDogJ01EJztcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1NvdCBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW05lc8OrciBuw6tdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW27Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbRGplIG7Dq10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZSBrYWx1YXIgbsOrXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnbsOrICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgbcOrIHBhcsOrJyxcbiAgICAgICAgICAgIHMgOiAnZGlzYSBzZWtvbmRhJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla29uZGEnLFxuICAgICAgICAgICAgbSA6ICduasOrIG1pbnV0w6snLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRhJyxcbiAgICAgICAgICAgIGggOiAnbmrDqyBvcsOrJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yw6snLFxuICAgICAgICAgICAgZCA6ICduasOrIGRpdMOrJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRpdMOrJyxcbiAgICAgICAgICAgIE0gOiAnbmrDqyBtdWFqJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG11YWonLFxuICAgICAgICAgICAgeSA6ICduasOrIHZpdCcsXG4gICAgICAgICAgICB5eSA6ICclZCB2aXRlJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNxO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ9GB0LXQutGD0L3QtNCwJywgJ9GB0LXQutGD0L3QtNC1JywgJ9GB0LXQutGD0L3QtNC4J10sXG4gICAgICAgICAgICBtOiBbJ9GY0LXQtNCw0L0g0LzQuNC90YPRgicsICfRmNC10LTQvdC1INC80LjQvdGD0YLQtSddLFxuICAgICAgICAgICAgbW06IFsn0LzQuNC90YPRgicsICfQvNC40L3Rg9GC0LUnLCAn0LzQuNC90YPRgtCwJ10sXG4gICAgICAgICAgICBoOiBbJ9GY0LXQtNCw0L0g0YHQsNGCJywgJ9GY0LXQtNC90L7QsyDRgdCw0YLQsCddLFxuICAgICAgICAgICAgaGg6IFsn0YHQsNGCJywgJ9GB0LDRgtCwJywgJ9GB0LDRgtC4J10sXG4gICAgICAgICAgICBkZDogWyfQtNCw0L0nLCAn0LTQsNC90LAnLCAn0LTQsNC90LAnXSxcbiAgICAgICAgICAgIE1NOiBbJ9C80LXRgdC10YYnLCAn0LzQtdGB0LXRhtCwJywgJ9C80LXRgdC10YbQuCddLFxuICAgICAgICAgICAgeXk6IFsn0LPQvtC00LjQvdCwJywgJ9Cz0L7QtNC40L3QtScsICfQs9C+0LTQuNC90LAnXVxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHNyQ3lybCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyLWN5cmwnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQvNCx0LDRgF/QtNC10YbQtdC80LHQsNGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtC5f0L/QvtC9Ll/Rg9GC0L4uX9GB0YDQtS5f0YfQtdGCLl/Qv9C10YIuX9GB0YPQsS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9C00LDQvdCw0YEg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0YHRg9GC0YDQsCDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvQvdC10LTQtdGZ0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YDQtdC00YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YPQsdC+0YLRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBkZGRkIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdb0ZjRg9GH0LUg0YNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0L7QvdC10LTQtdGZ0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRg9GC0L7RgNC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YfQtdGC0LLRgNGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C10YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQnXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICfQv9GA0LUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ9C90LXQutC+0LvQuNC60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICfQtNCw0L0nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAn0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzckN5cmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0cmFuc2xhdG9yID0ge1xuICAgICAgICB3b3JkczogeyAvL0RpZmZlcmVudCBncmFtbWF0aWNhbCBjYXNlc1xuICAgICAgICAgICAgc3M6IFsnc2VrdW5kYScsICdzZWt1bmRlJywgJ3Nla3VuZGknXSxcbiAgICAgICAgICAgIG06IFsnamVkYW4gbWludXQnLCAnamVkbmUgbWludXRlJ10sXG4gICAgICAgICAgICBtbTogWydtaW51dCcsICdtaW51dGUnLCAnbWludXRhJ10sXG4gICAgICAgICAgICBoOiBbJ2plZGFuIHNhdCcsICdqZWRub2cgc2F0YSddLFxuICAgICAgICAgICAgaGg6IFsnc2F0JywgJ3NhdGEnLCAnc2F0aSddLFxuICAgICAgICAgICAgZGQ6IFsnZGFuJywgJ2RhbmEnLCAnZGFuYSddLFxuICAgICAgICAgICAgTU06IFsnbWVzZWMnLCAnbWVzZWNhJywgJ21lc2VjaSddLFxuICAgICAgICAgICAgeXk6IFsnZ29kaW5hJywgJ2dvZGluZScsICdnb2RpbmEnXVxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHNyID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3InLCB7XG4gICAgICAgIG1vbnRoczogJ2phbnVhcl9mZWJydWFyX21hcnRfYXByaWxfbWFqX2p1bl9qdWxfYXZndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ2phbi5fZmViLl9tYXIuX2Fwci5fbWFqX2p1bl9qdWxfYXZnLl9zZXAuX29rdC5fbm92Ll9kZWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGVsamFfcG9uZWRlbGpha191dG9yYWtfc3JlZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ25lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ25lX3BvX3V0X3NyX8SNZV9wZV9zdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RhbmFzIHVdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbc3V0cmEgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW25lZGVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmVkdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3N1Ym90dV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbanXEjWUgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RXZWVrRGF5cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3BvbmVkZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbxI1ldHZydGthXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUJ1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RXZWVrRGF5c1t0aGlzLmRheSgpXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCAgIDogJ3ByZSAlcycsXG4gICAgICAgICAgICBzICAgICAgOiAnbmVrb2xpa28gc2VrdW5kaScsXG4gICAgICAgICAgICBzcyAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgZCAgICAgIDogJ2RhbicsXG4gICAgICAgICAgICBkZCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gICAgICA6ICdtZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICdnb2RpbnUnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHNzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3MnLCB7XG4gICAgICAgIG1vbnRocyA6IFwiQmhpbWJpZHZ3YW5lX0luZGxvdmFuYV9JbmRsb3YnbGVua2h1bHVfTWFiYXNhX0lua2h3ZWtod2V0aV9JbmhsYWJhX0tob2x3YW5lX0luZ2NpX0lueW9uaV9JbXBoYWxhX0x3ZXRpX0luZ29uZ29uaVwiLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0JoaV9JbmFfSW51X01hYl9JbmtfSW5oX0tob19JZ2NfSW55X0ltcF9Md2VfSWdvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdMaXNvbnRmb19VbXNvbWJ1bHVrb19MZXNpYmlsaV9MZXNpdHNhdGZ1X0xlc2luZV9MZXNpaGxhbnVfVW1nY2liZWxvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0xpc19VbWJfTHNiX0xlc19Mc2lfTHNoX1VtZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTGlfVXNfTGJfTHRfTHNfTGhfVWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbTmFtdWhsYSBuZ2FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0t1c2FzYSBuZ2FdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW25nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSXRvbG8gbmdhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtsZWxpcGhlbGlsZV0gW25nYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ25nYSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3dlbnRla2EgbmdhICVzJyxcbiAgICAgICAgICAgIHMgOiAnZW1penV6d2FuYSBsb21jYW5lJyxcbiAgICAgICAgICAgIHNzIDogJyVkIG16dXp3YW5hJyxcbiAgICAgICAgICAgIG0gOiAndW16dXp1JyxcbiAgICAgICAgICAgIG1tIDogJyVkIGVtaXp1enUnLFxuICAgICAgICAgICAgaCA6ICdsaWhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgZW1haG9yYScsXG4gICAgICAgICAgICBkIDogJ2xpbGFuZ2EnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZW1hbGFuZ2EnLFxuICAgICAgICAgICAgTSA6ICdpbnlhbmdhJyxcbiAgICAgICAgICAgIE1NIDogJyVkIHRpbnlhbmdhJyxcbiAgICAgICAgICAgIHkgOiAndW1ueWFrYScsXG4gICAgICAgICAgICB5eSA6ICclZCBpbWlueWFrYSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2VrdXNlbml8ZW1pbml8ZW50c2FtYmFtYXxlYnVzdWt1LyxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdla3VzZW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW1pbmknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbnRzYW1iYW1hJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlYnVzdWt1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ2VrdXNlbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnZW1pbmknKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VudHNhbWJhbWEnIHx8IG1lcmlkaWVtID09PSAnZWJ1c3VrdScpIHtcbiAgICAgICAgICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZCcsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcmlfZmVicnVhcmlfbWFyc19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdGlfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3PDtm5fbcOlbl90aXNfb25zX3Rvcl9mcmVfbMO2cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O2X23DpV90aV9vbl90b19mcl9sw7YnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkIEQgTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJZGFnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ltb3Jnb25dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWfDpXJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnW1DDpV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tJXSBkZGRkW3NdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnZsO2ciAlcyBzZWRhbicsXG4gICAgICAgICAgICBzIDogJ27DpWdyYSBzZWt1bmRlcicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRlcicsXG4gICAgICAgICAgICBtIDogJ2VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXInLFxuICAgICAgICAgICAgaCA6ICdlbiB0aW1tZScsXG4gICAgICAgICAgICBoaCA6ICclZCB0aW1tYXInLFxuICAgICAgICAgICAgZCA6ICdlbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuYWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmFkZXInLFxuICAgICAgICAgICAgeSA6ICdldHQgw6VyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMOlcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGV8YSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICdlJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ2EnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnYScgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdlJyA6ICdlJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN2O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzdycsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcmlfRmVicnVhcmlfTWFjaGlfQXByaWxpX01laV9KdW5pX0p1bGFpX0Fnb3N0aV9TZXB0ZW1iYV9Pa3RvYmFfTm92ZW1iYV9EZXNlbWJhJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfQWdvX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnSnVtYXBpbGlfSnVtYXRhdHVfSnVtYW5uZV9KdW1hdGFub19BbGhhbWlzaV9JanVtYWFfSnVtYW1vc2knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnSnBsX0p0YXRfSm5uZV9KdGFuX0FsaF9Jam1fSm1vcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnSjJfSjNfSjRfSjVfQWxfSWpfSjEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tsZW8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1trZXNobyBzYWFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1t3aWtpIGlqYXlvXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tqYW5hXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbd2lraSBpbGl5b3BpdGFdIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBiYWFkYXllJyxcbiAgICAgICAgICAgIHBhc3QgOiAndG9rZWEgJXMnLFxuICAgICAgICAgICAgcyA6ICdoaXZpIHB1bmRlJyxcbiAgICAgICAgICAgIHNzIDogJ3Nla3VuZGUgJWQnLFxuICAgICAgICAgICAgbSA6ICdkYWtpa2EgbW9qYScsXG4gICAgICAgICAgICBtbSA6ICdkYWtpa2EgJWQnLFxuICAgICAgICAgICAgaCA6ICdzYWEgbGltb2phJyxcbiAgICAgICAgICAgIGhoIDogJ21hc2FhICVkJyxcbiAgICAgICAgICAgIGQgOiAnc2lrdSBtb2phJyxcbiAgICAgICAgICAgIGRkIDogJ21hc2lrdSAlZCcsXG4gICAgICAgICAgICBNIDogJ213ZXppIG1tb2phJyxcbiAgICAgICAgICAgIE1NIDogJ21pZXppICVkJyxcbiAgICAgICAgICAgIHkgOiAnbXdha2EgbW1vamEnLFxuICAgICAgICAgICAgeXkgOiAnbWlha2EgJWQnXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN3O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgr6cnLFxuICAgICAgICAnMic6ICfgr6gnLFxuICAgICAgICAnMyc6ICfgr6knLFxuICAgICAgICAnNCc6ICfgr6onLFxuICAgICAgICAnNSc6ICfgr6snLFxuICAgICAgICAnNic6ICfgr6wnLFxuICAgICAgICAnNyc6ICfgr60nLFxuICAgICAgICAnOCc6ICfgr64nLFxuICAgICAgICAnOSc6ICfgr68nLFxuICAgICAgICAnMCc6ICfgr6YnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4K+nJzogJzEnLFxuICAgICAgICAn4K+oJzogJzInLFxuICAgICAgICAn4K+pJzogJzMnLFxuICAgICAgICAn4K+qJzogJzQnLFxuICAgICAgICAn4K+rJzogJzUnLFxuICAgICAgICAn4K+sJzogJzYnLFxuICAgICAgICAn4K+tJzogJzcnLFxuICAgICAgICAn4K+uJzogJzgnLFxuICAgICAgICAn4K+vJzogJzknLFxuICAgICAgICAn4K+mJzogJzAnXG4gICAgfTtcblxuICAgIHZhciB0YSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RhJywge1xuICAgICAgICBtb250aHMgOiAn4K6c4K6p4K614K6w4K6/X+CuquCuv+CuquCvjeCusOCuteCusOCuv1/grq7grr7grrDgr43grprgr41f4K6P4K6q4K+N4K6w4K6y4K+NX+CuruCvh1/grpzgr4Lgrqngr41f4K6c4K+C4K6y4K+IX+CuhuCuleCuuOCvjeCun+CvjV/grprgr4bgrqrgr43grp/gr4bgrq7gr43grqrgrrDgr41f4K6F4K6V4K+N4K6f4K+H4K6+4K6q4K6w4K+NX+CuqOCuteCuruCvjeCuquCusOCvjV/grp/grr/grprgrq7gr43grqrgrrDgr40nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgrp7grr7grq/grr/grrHgr43grrHgr4HgrpXgr43grpXgrr/grrTgrq7gr4hf4K6k4K6/4K6Z4K+N4K6V4K6f4K+N4K6V4K6/4K604K6u4K+IX+CumuCvhuCuteCvjeCuteCuvuCur+CvjeCuleCuv+CutOCuruCviF/grqrgr4HgrqTgrqngr43grpXgrr/grrTgrq7gr4hf4K614K6/4K6v4K6+4K604K6V4K+N4K6V4K6/4K604K6u4K+IX+CuteCvhuCus+CvjeCus+Cuv+CuleCvjeCuleCuv+CutOCuruCviF/grprgrqngrr/grpXgr43grpXgrr/grrTgrq7gr4gnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4K6e4K6+4K6v4K6/4K6x4K+BX+CupOCuv+CumeCvjeCuleCus+CvjV/grprgr4bgrrXgr43grrXgrr7grq/gr41f4K6q4K+B4K6k4K6p4K+NX+CuteCuv+Cur+CuvuCutOCuqeCvjV/grrXgr4bgrrPgr43grrPgrr9f4K6a4K6p4K6/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgrp7grr5f4K6k4K6/X+CumuCvhl/grqrgr4Ff4K614K6/X+CuteCvhl/grponLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+Cuh+CuqeCvjeCuseCvgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4K6o4K6+4K6z4K+IXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgrqjgr4fgrrHgr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgrpXgrp/grqjgr43grqQg4K614K6+4K6w4K6u4K+NXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4K6H4K6y4K+NJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4K6u4K+B4K6p4K+NJyxcbiAgICAgICAgICAgIHMgOiAn4K6S4K6w4K+BIOCumuCuv+CusiDgrrXgrr/grqjgrr7grp/grr/grpXgrrPgr40nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4K614K6/4K6o4K6+4K6f4K6/4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIG0gOiAn4K6S4K6w4K+BIOCuqOCuv+CuruCuv+Cun+CuruCvjScsXG4gICAgICAgICAgICBtbSA6ICclZCDgrqjgrr/grq7grr/grp/grpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgaCA6ICfgrpLgrrDgr4Eg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBoaCA6ICclZCDgrq7grqPgrr8g4K6o4K+H4K6w4K6u4K+NJyxcbiAgICAgICAgICAgIGQgOiAn4K6S4K6w4K+BIOCuqOCuvuCus+CvjScsXG4gICAgICAgICAgICBkZCA6ICclZCDgrqjgrr7grp/gr43grpXgrrPgr40nLFxuICAgICAgICAgICAgTSA6ICfgrpLgrrDgr4Eg4K6u4K6+4K6k4K6u4K+NJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCuruCuvuCupOCumeCvjeCuleCus+CvjScsXG4gICAgICAgICAgICB5IDogJ+CukuCusOCvgSDgrrXgrrDgr4Hgrp/grq7gr40nLFxuICAgICAgICAgICAgeXkgOiAnJWQg4K6G4K6j4K+N4K6f4K+B4K6V4K6z4K+NJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3grrXgrqTgr4EvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfgrrXgrqTgr4EnO1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4K+n4K+o4K+p4K+q4K+r4K+s4K+t4K+u4K+v4K+mXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyByZWZlciBodHRwOi8vdGEud2lraXBlZGlhLm9yZy9zLzFlcjFcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+Cur+CuvuCuruCuruCvjXzgrrXgr4jgrpXgrrHgr4h84K6V4K6+4K6y4K+IfOCuqOCuo+CvjeCuquCuleCusuCvjXzgro7grrHgr43grqrgrr7grp/gr4F84K6u4K6+4K6y4K+ILyxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuteCviOCuleCuseCviCc7ICAvLyDgrrXgr4jgrpXgrrHgr4hcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6V4K6+4K6y4K+IJzsgLy8g4K6V4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuqOCuo+CvjeCuquCuleCusuCvjSc7IC8vIOCuqOCuo+CvjeCuquCuleCusuCvjVxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgro7grrHgr43grqrgrr7grp/gr4EnOyAvLyDgro7grrHgr43grqrgrr7grp/gr4FcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6u4K6+4K6y4K+IJzsgLy8g4K6u4K6+4K6y4K+IXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCur+CuvuCuruCuruCvjSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgrq/grr7grq7grq7gr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrrXgr4jgrpXgrrHgr4gnIHx8IG1lcmlkaWVtID09PSAn4K6V4K6+4K6y4K+IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CuqOCuo+CvjeCuquCuleCusuCvjScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZScsIHtcbiAgICAgICAgbW9udGhzIDogJ+CwnOCwqOCwteCwsOCwv1/gsKvgsL/gsKzgsY3gsLDgsLXgsLDgsL9f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwv+CwsuCxjV/gsK7gsYdf4LCc4LGC4LCo4LGNX+CwnOCxgeCwsuCxiF/gsIbgsJfgsLjgsY3gsJ/gsYFf4LC44LGG4LCq4LGN4LCf4LGG4LCC4LCs4LCw4LGNX+CwheCwleCxjeCwn+Cxi+CwrOCwsOCxjV/gsKjgsLXgsILgsKzgsLDgsY1f4LCh4LC/4LC44LGG4LCC4LCs4LCw4LGNJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgsJzgsKguX+Cwq+Cwv+CwrOCxjeCwsC5f4LCu4LC+4LCw4LGN4LCa4LC/X+Cwj+CwquCxjeCwsOCwvy5f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCXLl/gsLjgsYbgsKrgsY0uX+CwheCwleCxjeCwn+Cxiy5f4LCo4LC1Ll/gsKHgsL/gsLjgsYYuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn4LCG4LCm4LC/4LC14LC+4LCw4LCCX+CwuOCxi+CwruCwteCwvuCwsOCwgl/gsK7gsILgsJfgsLPgsLXgsL7gsLDgsIJf4LCs4LGB4LCn4LC14LC+4LCw4LCCX+Cwl+CxgeCwsOCxgeCwteCwvuCwsOCwgl/gsLbgsYHgsJXgsY3gsLDgsLXgsL7gsLDgsIJf4LC24LCo4LC/4LC14LC+4LCw4LCCJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CwhuCwpuCwv1/gsLjgsYvgsK5f4LCu4LCC4LCX4LCzX+CwrOCxgeCwp1/gsJfgsYHgsLDgsYFf4LC24LGB4LCV4LGN4LCwX+CwtuCwqOCwvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LCGX+CwuOCxi1/gsK7gsIJf4LCs4LGBX+Cwl+CxgV/gsLbgsYFf4LC2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LCo4LGH4LCh4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgsLDgsYfgsKrgsYFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+CwqOCwv+CwqOCxjeCwqF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+Cwl+CwpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCwsuCxiycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCwleCxjeCwsOCwv+CwpOCwgicsXG4gICAgICAgICAgICBzIDogJ+CwleCxiuCwqOCxjeCwqOCwvyDgsJXgsY3gsLfgsKPgsL7gsLLgsYEnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4LC44LGG4LCV4LCo4LGN4LCy4LGBJyxcbiAgICAgICAgICAgIG0gOiAn4LCS4LCVIOCwqOCwv+CwruCwv+Cwt+CwgicsXG4gICAgICAgICAgICBtbSA6ICclZCDgsKjgsL/gsK7gsL/gsLfgsL7gsLLgsYEnLFxuICAgICAgICAgICAgaCA6ICfgsJLgsJUg4LCX4LCC4LCfJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCwl+CwguCwn+CwsuCxgScsXG4gICAgICAgICAgICBkIDogJ+CwkuCwlSDgsLDgsYvgsJzgsYEnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4LCw4LGL4LCc4LGB4LCy4LGBJyxcbiAgICAgICAgICAgIE0gOiAn4LCS4LCVIOCwqOCxhuCwsicsXG4gICAgICAgICAgICBNTSA6ICclZCDgsKjgsYbgsLLgsLLgsYEnLFxuICAgICAgICAgICAgeSA6ICfgsJLgsJUg4LC44LCC4LC14LCk4LGN4LC44LCw4LCCJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwvuCwsuCxgSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfeCwtS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTgsLUnLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4LCw4LC+4LCk4LGN4LCw4LC/fOCwieCwpuCwr+CwgnzgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIJ84LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CwsOCwvuCwpOCxjeCwsOCwvycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwieCwpuCwr+CwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsIngsKbgsK/gsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwruCwp+CxjeCwr+CwvuCwueCxjeCwqOCwgic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LC44LC+4LCv4LCC4LCk4LGN4LCw4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsLDgsL7gsKTgsY3gsLDgsL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRldCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RldCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcnVfRmV2ZXJlaXJ1X01hcnN1X0FicmlsX01haXVfSnXDsXVfSnVsbHVfQWd1c3R1X1NldGVtYnJ1X091dHVicnVfTm92ZW1icnVfRGV6ZW1icnUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdEb21pbmd1X1NlZ3VuZGFfVGVyc2FfS3VhcnRhX0tpbnRhX1Nlc3RhX1NhYmFkdScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEb21fU2VnX1RlcnNfS3VhX0tpbnRfU2VzdF9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0RvX1NlZ19UZV9LdV9LaV9TZXNfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09oaW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FiYW4gaWhhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2loYV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIb3Jpc2VpayBpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VtYW5hIGtvdHVrXSBbaWhhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpaGEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBsaXViYScsXG4gICAgICAgICAgICBzIDogJ21pbnV0dSBiYWx1bicsXG4gICAgICAgICAgICBzcyA6ICdtaW51dHUgJWQnLFxuICAgICAgICAgICAgbSA6ICdtaW51dHUgaWRhJyxcbiAgICAgICAgICAgIG1tIDogJ21pbnV0dSAlZCcsXG4gICAgICAgICAgICBoIDogJ29yYXMgaWRhJyxcbiAgICAgICAgICAgIGhoIDogJ29yYXMgJWQnLFxuICAgICAgICAgICAgZCA6ICdsb3JvbiBpZGEnLFxuICAgICAgICAgICAgZGQgOiAnbG9yb24gJWQnLFxuICAgICAgICAgICAgTSA6ICdmdWxhbiBpZGEnLFxuICAgICAgICAgICAgTU0gOiAnZnVsYW4gJWQnLFxuICAgICAgICAgICAgeSA6ICd0aW5hbiBpZGEnLFxuICAgICAgICAgICAgeXkgOiAndGluYW4gJWQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDA6ICct0YPQvCcsXG4gICAgICAgIDE6ICct0YPQvCcsXG4gICAgICAgIDI6ICct0Y7QvCcsXG4gICAgICAgIDM6ICct0Y7QvCcsXG4gICAgICAgIDQ6ICct0YPQvCcsXG4gICAgICAgIDU6ICct0YPQvCcsXG4gICAgICAgIDY6ICct0YPQvCcsXG4gICAgICAgIDc6ICct0YPQvCcsXG4gICAgICAgIDg6ICct0YPQvCcsXG4gICAgICAgIDk6ICct0YPQvCcsXG4gICAgICAgIDEwOiAnLdGD0LwnLFxuICAgICAgICAxMjogJy3Rg9C8JyxcbiAgICAgICAgMTM6ICct0YPQvCcsXG4gICAgICAgIDIwOiAnLdGD0LwnLFxuICAgICAgICAzMDogJy3RjtC8JyxcbiAgICAgICAgNDA6ICct0YPQvCcsXG4gICAgICAgIDUwOiAnLdGD0LwnLFxuICAgICAgICA2MDogJy3Rg9C8JyxcbiAgICAgICAgNzA6ICct0YPQvCcsXG4gICAgICAgIDgwOiAnLdGD0LwnLFxuICAgICAgICA5MDogJy3Rg9C8JyxcbiAgICAgICAgMTAwOiAnLdGD0LwnXG4gICAgfTtcblxuICAgIHZhciB0ZyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RnJywge1xuICAgICAgICBtb250aHMgOiAn0Y/QvdCy0LDRgF/RhNC10LLRgNCw0Ltf0LzQsNGA0YJf0LDQv9GA0LXQu1/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YBf0L7QutGC0Y/QsdGAX9C90L7Rj9Cx0YBf0LTQtdC60LDQsdGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0Y/QutGI0LDQvdCx0LVf0LTRg9GI0LDQvdCx0LVf0YHQtdGI0LDQvdCx0LVf0YfQvtGA0YjQsNC90LHQtV/Qv9Cw0L3St9GI0LDQvdCx0LVf0rfRg9C80YrQsF/RiNCw0L3QsdC1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9GP0YjQsV/QtNGI0LFf0YHRiNCxX9GH0YjQsV/Qv9GI0LFf0rfRg9C8X9GI0L3QsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0Y/RiF/QtNGIX9GB0Yhf0YfRiF/Qv9GIX9K30Lxf0YjQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CY0LzRgNOv0Lcg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0J/QsNCz0L7SsyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQlNC40YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGRb0LhdIFvSs9Cw0YTRgtCw0Lgg0L7Rj9C90LTQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkW9C4XSBb0rPQsNGE0YLQsNC4INCz0YPQt9Cw0YjRgtCwINGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQsdCw0YrQtNC4ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0L/QtdGIJyxcbiAgICAgICAgICAgIHMgOiAn0Y/QutGH0LDQvdC0INGB0L7QvdC40Y8nLFxuICAgICAgICAgICAgbSA6ICfRj9C6INC00LDSm9C40pvQsCcsXG4gICAgICAgICAgICBtbSA6ICclZCDQtNCw0pvQuNKb0LAnLFxuICAgICAgICAgICAgaCA6ICfRj9C6INGB0L7QsNGCJyxcbiAgICAgICAgICAgIGhoIDogJyVkINGB0L7QsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0Y/QuiDRgNOv0LcnLFxuICAgICAgICAgICAgZGQgOiAnJWQg0YDTr9C3JyxcbiAgICAgICAgICAgIE0gOiAn0Y/QuiDQvNC+0rMnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LzQvtKzJyxcbiAgICAgICAgICAgIHkgOiAn0Y/QuiDRgdC+0LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0YHQvtC7J1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0YjQsNCxfNGB0YPQsdKzfNGA06/Qt3zQsdC10LPQvtKzLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn0YjQsNCxJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YHRg9Cx0rMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0YDTr9C3Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfQsdC10LPQvtKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YHRg9Cx0rMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA06/Qtyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LHQtdCz0L7Ssyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YjQsNCxJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRg9C8fNGO0LwpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBiID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW251bWJlcl0gfHwgc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxdGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0ZztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGgnLCB7XG4gICAgICAgIG1vbnRocyA6ICfguKHguIHguKPguLLguITguKFf4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4LihX+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITguKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4LihLuC4hC5f4LiBLuC4ni5f4Lih4Li1LuC4hC5f4LmA4LihLuC4oi5f4LieLuC4hC5f4Lih4Li0LuC4oi5f4LiBLuC4hC5f4LiqLuC4hC5f4LiBLuC4oi5f4LiVLuC4hC5f4LieLuC4oi5f4LiYLuC4hC4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+C4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKrguJrguJTguLVf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4LiqX+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksIC8vIHllcywgdGhyZWUgY2hhcmFjdGVycyBkaWZmZXJlbmNlXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C4reC4si5f4LiILl/guK0uX+C4ni5f4Lie4LikLl/guKguX+C4qi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIOC5gOC4p+C4peC4siBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAn4Lin4Lix4LiZZGRkZOC4l+C4teC5iCBEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4h3zguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C4p+C4seC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGRb4Lir4LiZ4LmJ4LiyIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4LmA4Lih4Li34LmI4Lit4Lin4Liy4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfguK3guLXguIEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+C4l+C4teC5iOC5geC4peC5ieC4pycsXG4gICAgICAgICAgICBzIDogJ+C5hOC4oeC5iOC4geC4teC5iOC4p+C4tOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBzcyA6ICclZCDguKfguLTguJnguLLguJfguLUnLFxuICAgICAgICAgICAgbSA6ICcxIOC4meC4suC4l+C4tScsXG4gICAgICAgICAgICBtbSA6ICclZCDguJnguLLguJfguLUnLFxuICAgICAgICAgICAgaCA6ICcxIOC4iuC4seC5iOC4p+C5guC4oeC4hycsXG4gICAgICAgICAgICBoaCA6ICclZCDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgZCA6ICcxIOC4p+C4seC4mScsXG4gICAgICAgICAgICBkZCA6ICclZCDguKfguLHguJknLFxuICAgICAgICAgICAgTSA6ICcxIOC5gOC4lOC4t+C4reC4mScsXG4gICAgICAgICAgICBNTSA6ICclZCDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgeSA6ICcxIOC4m+C4tScsXG4gICAgICAgICAgICB5eSA6ICclZCDguJvguLUnXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRsUGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bC1waCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0VuZXJvX1BlYnJlcm9fTWFyc29fQWJyaWxfTWF5b19IdW55b19IdWx5b19BZ29zdG9fU2V0eWVtYnJlX09rdHVicmVfTm9ieWVtYnJlX0Rpc3llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnRW5lX1BlYl9NYXJfQWJyX01heV9IdW5fSHVsX0Fnb19TZXRfT2t0X05vYl9EaXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0xpbmdnb19MdW5lc19NYXJ0ZXNfTWl5ZXJrdWxlc19IdXdlYmVzX0JpeWVybmVzX1NhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdMaW5fTHVuX01hcl9NaXlfSHV3X0JpeV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0xpX0x1X01hX01pX0h1X0JpX1NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdNTS9EL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnTU1NTSBELCBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdNTU1NIEQsIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIERELCBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdMVCBbbmdheW9uZyBhcmF3XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0J1a2FzIG5nXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xUIFtzYSBzdXN1bm9kIG5hXSBkZGRkJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdMVCBba2FoYXBvbl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdMVCBbbm9vbmcgbmFrYXJhYW5nXSBkZGRkJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3NhIGxvb2IgbmcgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhbmcgbmFrYWxpcGFzJyxcbiAgICAgICAgICAgIHMgOiAnaWxhbmcgc2VndW5kbycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvJyxcbiAgICAgICAgICAgIG0gOiAnaXNhbmcgbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0bycsXG4gICAgICAgICAgICBoIDogJ2lzYW5nIG9yYXMnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JhcycsXG4gICAgICAgICAgICBkIDogJ2lzYW5nIGFyYXcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgYXJhdycsXG4gICAgICAgICAgICBNIDogJ2lzYW5nIGJ1d2FuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIGJ1d2FuJyxcbiAgICAgICAgICAgIHkgOiAnaXNhbmcgdGFvbicsXG4gICAgICAgICAgICB5eSA6ICclZCB0YW9uJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxQaDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG51bWJlcnNOb3VucyA9ICdwYWdoX3dh4oCZX2NoYeKAmV93ZWpfbG9TX3ZhZ2hfamF2X1NvY2hfY2hvcmdoX0h1dCcuc3BsaXQoJ18nKTtcblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZUZ1dHVyZShvdXRwdXQpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7XG4gICAgICAgIHRpbWUgPSAob3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICdsZVMnIDpcbiAgICAgICAgKG91dHB1dC5pbmRleE9mKCdqYXInKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnd2FRJyA6XG4gICAgICAgIChvdXRwdXQuaW5kZXhPZignRElTJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ25lbScgOlxuICAgICAgICB0aW1lICsgJyBwSXEnO1xuICAgICAgICByZXR1cm4gdGltZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVQYXN0KG91dHB1dCkge1xuICAgICAgICB2YXIgdGltZSA9IG91dHB1dDtcbiAgICAgICAgdGltZSA9IChvdXRwdXQuaW5kZXhPZignamFqJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ0h14oCZJyA6XG4gICAgICAgIChvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dlbicgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICdiZW4nIDpcbiAgICAgICAgdGltZSArICcgcmV0JztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgbnVtYmVyTm91biA9IG51bWJlckFzTm91bihudW1iZXIpO1xuICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBsdXAnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyB0dXAnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyByZXAnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYWonO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBqYXInO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJOb3VuICsgJyBESVMnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbnVtYmVyQXNOb3VuKG51bWJlcikge1xuICAgICAgICB2YXIgaHVuZHJlZCA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMDApIC8gMTAwKSxcbiAgICAgICAgdGVuID0gTWF0aC5mbG9vcigobnVtYmVyICUgMTAwKSAvIDEwKSxcbiAgICAgICAgb25lID0gbnVtYmVyICUgMTAsXG4gICAgICAgIHdvcmQgPSAnJztcbiAgICAgICAgaWYgKGh1bmRyZWQgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9IG51bWJlcnNOb3Vuc1todW5kcmVkXSArICd2YXRsaCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbiA+IDApIHtcbiAgICAgICAgICAgIHdvcmQgKz0gKCh3b3JkICE9PSAnJykgPyAnICcgOiAnJykgKyBudW1iZXJzTm91bnNbdGVuXSArICdtYUgnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbmUgPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9ICgod29yZCAhPT0gJycpID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW29uZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh3b3JkID09PSAnJykgPyAncGFnaCcgOiB3b3JkO1xuICAgIH1cblxuICAgIHZhciB0bGggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0bGgnLCB7XG4gICAgICAgIG1vbnRocyA6ICd0ZXJh4oCZIGphciB3YeKAmV90ZXJh4oCZIGphciBjaGHigJlfdGVyYeKAmSBqYXIgd2VqX3RlcmHigJkgamFyIGxvU190ZXJh4oCZIGphciB2YWdoX3RlcmHigJkgamFyIGphdl90ZXJh4oCZIGphciBTb2NoX3RlcmHigJkgamFyIGNob3JnaF90ZXJh4oCZIGphciBIdXRfdGVyYeKAmSBqYXIgd2HigJltYUhfdGVyYeKAmSBqYXIgd2HigJltYUggd2HigJlfdGVyYeKAmSBqYXIgd2HigJltYUggY2hh4oCZJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYXIgd2HigJlfamFyIGNoYeKAmV9qYXIgd2VqX2phciBsb1NfamFyIHZhZ2hfamFyIGphdl9qYXIgU29jaF9qYXIgY2hvcmdoX2phciBIdXRfamFyIHdh4oCZbWFIX2phciB3YeKAmW1hSCB3YeKAmV9qYXIgd2HigJltYUggY2hh4oCZJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbG9qbUl0amFqX0RhU2phal9wb3ZqYWpfZ2hJdGxoamFqX2xvZ2hqYWpfYnVxamFqX2doSW5qYWonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEYUhqYWpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbd2HigJlsZVNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbd2HigJlIdeKAmV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdMTEwnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiB0cmFuc2xhdGVGdXR1cmUsXG4gICAgICAgICAgICBwYXN0IDogdHJhbnNsYXRlUGFzdCxcbiAgICAgICAgICAgIHMgOiAncHVTIGx1cCcsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiAnd2HigJkgdHVwJyxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6ICd3YeKAmSByZXAnLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogJ3dh4oCZIGphaicsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiAnd2HigJkgamFyJyxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6ICd3YeKAmSBESVMnLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0bGg7XG5cbn0pKSk7XG4iLCJcbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgc3VmZml4ZXMgPSB7XG4gICAgICAgIDE6ICdcXCdpbmNpJyxcbiAgICAgICAgNTogJ1xcJ2luY2knLFxuICAgICAgICA4OiAnXFwnaW5jaScsXG4gICAgICAgIDcwOiAnXFwnaW5jaScsXG4gICAgICAgIDgwOiAnXFwnaW5jaScsXG4gICAgICAgIDI6ICdcXCduY2knLFxuICAgICAgICA3OiAnXFwnbmNpJyxcbiAgICAgICAgMjA6ICdcXCduY2knLFxuICAgICAgICA1MDogJ1xcJ25jaScsXG4gICAgICAgIDM6ICdcXCfDvG5jw7wnLFxuICAgICAgICA0OiAnXFwnw7xuY8O8JyxcbiAgICAgICAgMTAwOiAnXFwnw7xuY8O8JyxcbiAgICAgICAgNjogJ1xcJ25jxLEnLFxuICAgICAgICA5OiAnXFwndW5jdScsXG4gICAgICAgIDEwOiAnXFwndW5jdScsXG4gICAgICAgIDMwOiAnXFwndW5jdScsXG4gICAgICAgIDYwOiAnXFwnxLFuY8SxJyxcbiAgICAgICAgOTA6ICdcXCfEsW5jxLEnXG4gICAgfTtcblxuICAgIHZhciB0ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RyJywge1xuICAgICAgICBtb250aHMgOiAnT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ09jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1BhemFyX1BhemFydGVzaV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdQYXpfUHRzX1NhbF/Dh2FyX1Blcl9DdW1fQ3RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tidWfDvG4gc2FhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbeWFyxLFuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1tnZWxlY2VrXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tkw7xuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbZ2XDp2VuXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgc29ucmEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDDtm5jZScsXG4gICAgICAgICAgICBzIDogJ2Jpcmthw6cgc2FuaXllJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNhbml5ZScsXG4gICAgICAgICAgICBtIDogJ2JpciBkYWtpa2EnLFxuICAgICAgICAgICAgbW0gOiAnJWQgZGFraWthJyxcbiAgICAgICAgICAgIGggOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGggOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkIDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTSA6ICdiaXIgYXknLFxuICAgICAgICAgICAgTU0gOiAnJWQgYXknLFxuICAgICAgICAgICAgeSA6ICdiaXIgecSxbCcsXG4gICAgICAgICAgICB5eSA6ICclZCB5xLFsJ1xuICAgICAgICB9LFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7ICAvLyBzcGVjaWFsIGNhc2UgZm9yIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnXFwnxLFuY8SxJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG51bWJlciAlIDEwMCAtIGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjID0gbnVtYmVyID49IDEwMCA/IDEwMCA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgLy8gQWZ0ZXIgdGhlIHllYXIgdGhlcmUgc2hvdWxkIGJlIGEgc2xhc2ggYW5kIHRoZSBhbW91bnQgb2YgeWVhcnMgc2luY2UgRGVjZW1iZXIgMjYsIDE5NzkgaW4gUm9tYW4gbnVtZXJhbHMuXG4gICAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdG9vIGRpZmZpY3VsdCAobWF5YmUgZXZlbiBpbXBvc3NpYmxlKSB0byBhZGQuXG4gICAgdmFyIHR6bCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcl9GZXZyYWdsaF9NYXLDp19BdnLDr3VfTWFpX0fDvG5fSnVsaWFfR3VzY2h0X1NldGVtdmFyX0xpc3RvcMOkdHNfTm9lbXZhcl9aZWNlbXZhcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0Zldl9NYXJfQXZyX01haV9Hw7xuX0p1bF9HdXNfU2V0X0xpc19Ob2VfWmVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTw7psYWRpX0zDum5lw6dpX01haXR6aV9Nw6FyY3VyaV9YaMO6YWRpX1Zpw6luZXLDp2lfU8OhdHVyaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTw7psX0zDum5fTWFpX03DoXJfWGjDul9WacOpX1PDoXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1PDul9Mw7pfTWFfTcOhX1hoX1ZpX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gW2RhbGxhc10gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgW2xpXSBELiBNTU1NIFtkYWxsYXNdIFlZWVkgSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9kXFwnb3xkXFwnYS9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ2RcXCdvJyA9PT0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnZFxcJ28nIDogJ0RcXCdPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnZFxcJ2EnIDogJ0RcXCdBJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tveGhpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tkZW3DoCDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2llaXJpIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbc8O8ciBlbF0gZGRkZCBbbGFzdGV1IMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb3NwcmVpICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnamElcycsXG4gICAgICAgICAgICBzIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAncyc6IFsndmllbnNhcyBzZWN1bmRzJywgJ1xcJ2llbnNhcyBzZWN1bmRzJ10sXG4gICAgICAgICAgICAnc3MnOiBbbnVtYmVyICsgJyBzZWN1bmRzJywgJycgKyBudW1iZXIgKyAnIHNlY3VuZHMnXSxcbiAgICAgICAgICAgICdtJzogWydcXCduIG3DrXV0JywgJ1xcJ2llbnMgbcOtdXQnXSxcbiAgICAgICAgICAgICdtbSc6IFtudW1iZXIgKyAnIG3DrXV0cycsICcnICsgbnVtYmVyICsgJyBtw611dHMnXSxcbiAgICAgICAgICAgICdoJzogWydcXCduIMO+b3JhJywgJ1xcJ2llbnNhIMO+b3JhJ10sXG4gICAgICAgICAgICAnaGgnOiBbbnVtYmVyICsgJyDDvm9yYXMnLCAnJyArIG51bWJlciArICcgw75vcmFzJ10sXG4gICAgICAgICAgICAnZCc6IFsnXFwnbiB6aXVhJywgJ1xcJ2llbnNhIHppdWEnXSxcbiAgICAgICAgICAgICdkZCc6IFtudW1iZXIgKyAnIHppdWFzJywgJycgKyBudW1iZXIgKyAnIHppdWFzJ10sXG4gICAgICAgICAgICAnTSc6IFsnXFwnbiBtZXMnLCAnXFwnaWVucyBtZXMnXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIG1lc2VuJywgJycgKyBudW1iZXIgKyAnIG1lc2VuJ10sXG4gICAgICAgICAgICAneSc6IFsnXFwnbiBhcicsICdcXCdpZW5zIGFyJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyBhcnMnLCAnJyArIG51bWJlciArICcgYXJzJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tleV1bMF0gOiAod2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0emw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0em1MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptLWxhdG4nLCB7XG4gICAgICAgIG1vbnRocyA6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdpbm5heXJfYnLLpGF5csukX21hcsukc8ukX2licmlyX21heXl3X3l3bnl3X3l3bHl3el/Jo3fFoXRfxaF3dGFuYmlyX2t0y6R3YnLLpF9ud3dhbmJpcl9kd2puYmlyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2nhuI15YXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2FzYW1hc19heW5hc19hc2luYXNfYWtyYXNfYWt3YXNfYXNpbXdhc19hc2nhuI15YXMnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbYXNka2ggZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thc2thIGddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1thc3NhbnQgZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFtnXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWRraCBzIHlhbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ3lhbiAlcycsXG4gICAgICAgICAgICBzIDogJ2ltaWsnLFxuICAgICAgICAgICAgc3MgOiAnJWQgaW1paycsXG4gICAgICAgICAgICBtIDogJ21pbnXhuI0nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludeG4jScsXG4gICAgICAgICAgICBoIDogJ3NhyZthJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRhc3NhyZtpbicsXG4gICAgICAgICAgICBkIDogJ2FzcycsXG4gICAgICAgICAgICBkZCA6ICclZCBvc3NhbicsXG4gICAgICAgICAgICBNIDogJ2F5b3dyJyxcbiAgICAgICAgICAgIE1NIDogJyVkIGl5eWlybicsXG4gICAgICAgICAgICB5IDogJ2FzZ2FzJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGlzZ2FzbidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDYsIC8vIFNhdHVyZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiAxMiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMTJ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHR6bUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0em0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0em0nLCB7XG4gICAgICAgIG1vbnRocyA6ICfitYnitY/itY/itLDitaLitZRf4rSx4rWV4rSw4rWi4rWVX+K1juK0sOK1leK1ml/itYnitLHitZTitYnitZRf4rWO4rSw4rWi4rWi4rWTX+K1ouK1k+K1j+K1ouK1k1/itaLitZPitY3itaLitZPitaNf4rWW4rWT4rWb4rWcX+K1m+K1k+K1nOK0sOK1j+K0seK1ieK1lF/itL3itZ/itZPitLHitZVf4rWP4rWT4rWh4rSw4rWP4rSx4rWJ4rWUX+K0t+K1k+K1iuK1j+K0seK1ieK1lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+K0sOK1meK0sOK1juK0sOK1mV/itLDitaLitY/itLDitZlf4rSw4rWZ4rWJ4rWP4rSw4rWZX+K0sOK0veK1lOK0sOK1mV/itLDitL3itaHitLDitZlf4rSw4rWZ4rWJ4rWO4rWh4rSw4rWZX+K0sOK1meK1ieK0ueK1ouK0sOK1mScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+K0sOK1meK0t+K1hSDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb4rSw4rWZ4rS94rSwIOK0tF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4rSw4rWa4rSw4rWP4rWcIOK0tF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvitLRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ+K0t+K0sOK0t+K1hSDitZkg4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn4rWi4rSw4rWPICVzJyxcbiAgICAgICAgICAgIHMgOiAn4rWJ4rWO4rWJ4rS9JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOK1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBtIDogJ+K1juK1ieK1j+K1k+K0uicsXG4gICAgICAgICAgICBtbSA6ICclZCDitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgaCA6ICfitZnitLDitYTitLAnLFxuICAgICAgICAgICAgaGggOiAnJWQg4rWc4rSw4rWZ4rWZ4rSw4rWE4rWJ4rWPJyxcbiAgICAgICAgICAgIGQgOiAn4rSw4rWZ4rWZJyxcbiAgICAgICAgICAgIGRkIDogJyVkIG/itZnitZnitLDitY8nLFxuICAgICAgICAgICAgTSA6ICfitLDitaJv4rWT4rWUJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOK1ieK1ouK1ouK1ieK1lOK1jycsXG4gICAgICAgICAgICB5IDogJ+K0sOK1meK0s+K0sOK1mScsXG4gICAgICAgICAgICB5eSA6ICclZCDitYnitZnitLPitLDitZnitY8nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0em07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHVnQ24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1Zy1jbicsIHtcbiAgICAgICAgbW9udGhzOiAn2YrYp9mG24vYp9ixX9mB25Dbi9ix2KfZhF/Zhdin2LHYql/Yptin2b7YsduQ2YRf2YXYp9mKX9im2YnZituH2YZf2KbZidmK24fZhF/Yptin24vYutuH2LPYql/Ys9uQ2YbYqtuV2KjZidixX9im24bZg9iq25XYqNmJ2LFf2YbZiNmK2KfYqNmJ2LFf2K/bkNmD2KfYqNmJ2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn2YrYp9mG24vYp9ixX9mB25Dbi9ix2KfZhF/Zhdin2LHYql/Yptin2b7YsduQ2YRf2YXYp9mKX9im2YnZituH2YZf2KbZidmK24fZhF/Yptin24vYutuH2LPYql/Ys9uQ2YbYqtuV2KjZidixX9im24bZg9iq25XYqNmJ2LFf2YbZiNmK2KfYqNmJ2LFf2K/bkNmD2KfYqNmJ2LEnLnNwbGl0KFxuICAgICAgICAgICAgJ18nXG4gICAgICAgICksXG4gICAgICAgIHdlZWtkYXlzOiAn2YrbldmD2LTbldmG2KjblV/Yr9uI2LTbldmG2KjblV/Ys9uV2YrYtNuV2YbYqNuVX9qG2KfYsdi025XZhtio25Vf2b7bldmK2LTbldmG2KjblV/YrNuI2YXblV/YtNuV2YbYqNuVJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn2YrblV/Yr9uIX9iz25Vf2obYp1/ZvtuVX9is24hf2LTblScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfZituVX9iv24hf2LPblV/ahtinX9m+25Vf2KzbiF/YtNuVJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTDogJ1lZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YknLFxuICAgICAgICAgICAgTExMOiAnWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZidiMIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRk2IwgWVlZWS3ZitmJ2YTZiU0t2KbYp9mK2YbZidqtRC3Zg9uI2YbZidiMIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2YrbkNix2YnZhSDZg9uQ2obblXzYs9uV2r7bldixfNqG24jYtNiq2YnZhiDYqNuH2LHbh9mGfNqG24jYtHzahtuI2LTYqtmJ2YYg2YPbkNmK2YnZhnzZg9uV2oYvLFxuICAgICAgICBtZXJpZGllbUhvdXI6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfZituQ2LHZidmFINmD25DahtuVJyB8fFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2LPbldq+25XYsScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn2obbiNi02KrZidmGINmD25DZitmJ2YYnIHx8IG1lcmlkaWVtID09PSAn2YPbldqGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mK25DYsdmJ2YUg2YPbkNqG25UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LPbldq+25XYsSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINio24fYsduH2YYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2obbiNi02KrZidmGINmD25DZitmJ2YYnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9mD25Xahic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9io24jar9uI2YYg2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vYptuV2KrblSDYs9in2KbbldiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1vZg9uQ2YTbldix2YPZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYqtuG2YbbiNqv24jZhl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb2KbYp9mE2K/ZidmG2YLZiV0gZGRkZCBb2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzINmD25DZitmJ2YYnLFxuICAgICAgICAgICAgcGFzdDogJyVzINio24fYsduH2YYnLFxuICAgICAgICAgICAgczogJ9mG25XahtqG25Ug2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIHNzOiAnJWQg2LPbkNmD2YjZhtiqJyxcbiAgICAgICAgICAgIG06ICfYqNmJ2LEg2YXZidmG24fYqicsXG4gICAgICAgICAgICBtbTogJyVkINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgaDogJ9io2YnYsSDYs9in2KbbldiqJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9im25XYqicsXG4gICAgICAgICAgICBkOiAn2KjZidixINmD24jZhicsXG4gICAgICAgICAgICBkZDogJyVkINmD24jZhicsXG4gICAgICAgICAgICBNOiAn2KjZidixINim2KfZiicsXG4gICAgICAgICAgICBNTTogJyVkINim2KfZiicsXG4gICAgICAgICAgICB5OiAn2KjZidixINmK2YnZhCcsXG4gICAgICAgICAgICB5eTogJyVkINmK2YnZhCdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oLdmD24jZhtmJfC3Yptin2Yp8Ldq+25XZvtiq25UpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdmD24jZhtmJJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct2r7bldm+2KrblSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICAvLyBHQi9UIDc0MDgtMTk5NOOAiuaVsOaNruWFg+WSjOS6pOaNouagvOW8j8K35L+h5oGv5Lqk5o2iwrfml6XmnJ/lkozml7bpl7TooajnpLrms5XjgIvkuI5JU08gODYwMToxOTg4562J5pWIXG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA3IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDFzdCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVnQ247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogKG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKSA/IGZvcm1zWzFdIDogZm9ybXNbMl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnc3MnOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNC4X9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Lhf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgICdtbSc6IHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LBf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyA6ICfRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0nLFxuICAgICAgICAgICAgJ2hoJzogd2l0aG91dFN1ZmZpeCA/ICfQs9C+0LTQuNC90LBf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nIDogJ9Cz0L7QtNC40L3Rg1/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvScsXG4gICAgICAgICAgICAnZGQnOiAn0LTQtdC90Yxf0LTQvdGWX9C00L3RltCyJyxcbiAgICAgICAgICAgICdNTSc6ICfQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyJyxcbiAgICAgICAgICAgICd5eSc6ICfRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGtleSA9PT0gJ20nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfRhdCy0LjQu9C40L3QsCcgOiAn0YXQstC40LvQuNC90YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGtleSA9PT0gJ2gnKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICfQs9C+0LTQuNC90LAnIDogJ9Cz0L7QtNC40L3Rgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3ZWVrZGF5c0Nhc2VSZXBsYWNlKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSB7XG4gICAgICAgICAgICAnbm9taW5hdGl2ZSc6ICfQvdC10LTRltC70Y9f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNCwX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRj1/RgdGD0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICAnYWNjdXNhdGl2ZSc6ICfQvdC10LTRltC70Y5f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNGDX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRjl/RgdGD0LHQvtGC0YMnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICAnZ2VuaXRpdmUnOiAn0L3QtdC00ZbQu9GWX9C/0L7QvdC10LTRltC70LrQsF/QstGW0LLRgtC+0YDQutCwX9GB0LXRgNC10LTQuF/Rh9C10YLQstC10YDQs9CwX9C/4oCZ0Y/RgtC90LjRhtGWX9GB0YPQsdC+0YLQuCcuc3BsaXQoJ18nKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChtID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXS5zbGljZSgxLCA3KS5jb25jYXQod2Vla2RheXNbJ25vbWluYXRpdmUnXS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheXNbJ25vbWluYXRpdmUnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBub3VuQ2FzZSA9ICgvKFxcW1vQktCy0KPRg11cXF0pID9kZGRkLykudGVzdChmb3JtYXQpID9cbiAgICAgICAgICAgICdhY2N1c2F0aXZlJyA6XG4gICAgICAgICAgICAoKC9cXFs/KD860LzQuNC90YPQu9C+0Zd80L3QsNGB0YLRg9C/0L3QvtGXKT8gP1xcXSA/ZGRkZC8pLnRlc3QoZm9ybWF0KSA/XG4gICAgICAgICAgICAgICAgJ2dlbml0aXZlJyA6XG4gICAgICAgICAgICAgICAgJ25vbWluYXRpdmUnKTtcbiAgICAgICAgcmV0dXJuIHdlZWtkYXlzW25vdW5DYXNlXVttLmRheSgpXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oc3RyKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyICsgJ9C+JyArICh0aGlzLmhvdXJzKCkgPT09IDExID8gJ9CxJyA6ICcnKSArICddIExUJztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgdWsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1aycsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgJ2Zvcm1hdCc6ICfRgdGW0YfQvdGPX9C70Y7RgtC+0LPQvl/QsdC10YDQtdC30L3Rj1/QutCy0ZbRgtC90Y9f0YLRgNCw0LLQvdGPX9GH0LXRgNCy0L3Rj1/Qu9C40L/QvdGPX9GB0LXRgNC/0L3Rj1/QstC10YDQtdGB0L3Rj1/QttC+0LLRgtC90Y9f0LvQuNGB0YLQvtC/0LDQtNCwX9Cz0YDRg9C00L3Rjycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgICdzdGFuZGFsb25lJzogJ9GB0ZbRh9C10L3RjF/Qu9GO0YLQuNC5X9Cx0LXRgNC10LfQtdC90Yxf0LrQstGW0YLQtdC90Yxf0YLRgNCw0LLQtdC90Yxf0YfQtdGA0LLQtdC90Yxf0LvQuNC/0LXQvdGMX9GB0LXRgNC/0LXQvdGMX9Cy0LXRgNC10YHQtdC90Yxf0LbQvtCy0YLQtdC90Yxf0LvQuNGB0YLQvtC/0LDQtF/Qs9GA0YPQtNC10L3RjCcuc3BsaXQoJ18nKVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRgdGW0Ydf0LvRjtGCX9Cx0LXRgF/QutCy0ZbRgl/RgtGA0LDQsl/Rh9C10YDQsl/Qu9C40L9f0YHQtdGA0L9f0LLQtdGAX9C20L7QstGCX9C70LjRgdGCX9Cz0YDRg9C0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6IHdlZWtkYXlzQ2FzZVJlcGxhY2UsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZINGALicsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkg0YAuLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZINGALiwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQodGM0L7Qs9C+0LTQvdGWICcpLFxuICAgICAgICAgICAgbmV4dERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQl9Cw0LLRgtGA0LAgJyksXG4gICAgICAgICAgICBsYXN0RGF5OiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9CS0YfQvtGA0LAgJyksXG4gICAgICAgICAgICBuZXh0V2VlazogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQo10gZGRkZCBbJyksXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Rl10gZGRkZCBbJykuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzSG91cnNGdW5jdGlvbignW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9C30LAgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDRgtC+0LzRgycsXG4gICAgICAgICAgICBzIDogJ9C00LXQutGW0LvRjNC60LAg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgaGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZCA6ICfQtNC10L3RjCcsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ9C80ZbRgdGP0YbRjCcsXG4gICAgICAgICAgICBNTSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICB5IDogJ9GA0ZbQuicsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTS4gRS46IHRob3NlIHR3byBhcmUgdmlydHVhbGx5IHVudXNlZCBidXQgYSB1c2VyIG1pZ2h0IHdhbnQgdG8gaW1wbGVtZW50IHRoZW0gZm9yIGhpcy9oZXIgd2Vic2l0ZSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9C90L7Rh9GWfNGA0LDQvdC60YN80LTQvdGPfNCy0LXRh9C+0YDQsC8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQvdC+0YfRlic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0YDQsNC90LrRgyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LTQvdGPJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQstC10YfQvtGA0LAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNC5fNCz0L4pLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC5JztcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LPQvic7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHMgPSBbXG4gICAgICAgICfYrNmG2YjYsduMJyxcbiAgICAgICAgJ9mB2LHZiNix24wnLFxuICAgICAgICAn2YXYp9ix2oYnLFxuICAgICAgICAn2KfZvtix24zZhCcsXG4gICAgICAgICfZhdim24wnLFxuICAgICAgICAn2KzZiNmGJyxcbiAgICAgICAgJ9is2YjZhNin2KbbjCcsXG4gICAgICAgICfYp9qv2LPYqicsXG4gICAgICAgICfYs9iq2YXYqNixJyxcbiAgICAgICAgJ9in2qnYqtmI2KjYsScsXG4gICAgICAgICfZhtmI2YXYqNixJyxcbiAgICAgICAgJ9iv2LPZhdio2LEnXG4gICAgXTtcbiAgICB2YXIgZGF5cyA9IFtcbiAgICAgICAgJ9in2KrZiNin2LEnLFxuICAgICAgICAn2b7bjNixJyxcbiAgICAgICAgJ9mF2Ybar9mEJyxcbiAgICAgICAgJ9io2K/avicsXG4gICAgICAgICfYrNmF2LnYsdin2KonLFxuICAgICAgICAn2KzZhdi524EnLFxuICAgICAgICAn24HZgdiq24EnXG4gICAgXTtcblxuICAgIHZhciB1ciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3VyJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbiA6IGRheXMsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRk2IwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Ytdio2K182LTYp9mFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtdio2K0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICfYtNin2YUnO1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9ii2Kwg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9qp2YQg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9io2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1var9iw2LTYqtuBINix2YjYsiDYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9qv2LDYtNiq24FdIGRkZGQgW9io2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg2KjYudivJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg2YLYqNmEJyxcbiAgICAgICAgICAgIHMgOiAn2obZhtivINiz24zaqdmG2ognLFxuICAgICAgICAgICAgc3MgOiAnJWQg2LPbjNqp2YbaiCcsXG4gICAgICAgICAgICBtIDogJ9in24zaqSDZhdmG2bknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2YXZhtm5JyxcbiAgICAgICAgICAgIGggOiAn2KfbjNqpINqv2r7Zhtm524EnLFxuICAgICAgICAgICAgaGggOiAnJWQg2q/avtmG2bnbkicsXG4gICAgICAgICAgICBkIDogJ9in24zaqSDYr9mGJyxcbiAgICAgICAgICAgIGRkIDogJyVkINiv2YYnLFxuICAgICAgICAgICAgTSA6ICfYp9uM2qkg2YXYp9uBJyxcbiAgICAgICAgICAgIE1NIDogJyVkINmF2KfbgScsXG4gICAgICAgICAgICB5IDogJ9in24zaqSDYs9in2YQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9mEJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdXpMYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXotbGF0bicsIHtcbiAgICAgICAgbW9udGhzIDogJ1lhbnZhcl9GZXZyYWxfTWFydF9BcHJlbF9NYXlfSXl1bl9JeXVsX0F2Z3VzdF9TZW50YWJyX09rdGFicl9Ob3lhYnJfRGVrYWJyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdZYW5fRmV2X01hcl9BcHJfTWF5X0l5dW5fSXl1bF9BdmdfU2VuX09rdF9Ob3lfRGVrJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdZYWtzaGFuYmFfRHVzaGFuYmFfU2VzaGFuYmFfQ2hvcnNoYW5iYV9QYXlzaGFuYmFfSnVtYV9TaGFuYmEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnWWFrX0R1c2hfU2VzaF9DaG9yX1BheV9KdW1fU2hhbicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnWWFfRHVfU2VfQ2hvX1BhX0p1X1NoYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0J1Z3VuIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRXJ0YWdhXSBMVCBbZGFdJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2t1bmkgc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZWNoYSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tPXFwndGdhbl0gZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdZYXFpbiAlcyBpY2hpZGEnLFxuICAgICAgICAgICAgcGFzdCA6ICdCaXIgbmVjaGEgJXMgb2xkaW4nLFxuICAgICAgICAgICAgcyA6ICdzb25peWEnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc29uaXlhJyxcbiAgICAgICAgICAgIG0gOiAnYmlyIGRhcWlxYScsXG4gICAgICAgICAgICBtbSA6ICclZCBkYXFpcWEnLFxuICAgICAgICAgICAgaCA6ICdiaXIgc29hdCcsXG4gICAgICAgICAgICBoaCA6ICclZCBzb2F0JyxcbiAgICAgICAgICAgIGQgOiAnYmlyIGt1bicsXG4gICAgICAgICAgICBkZCA6ICclZCBrdW4nLFxuICAgICAgICAgICAgTSA6ICdiaXIgb3knLFxuICAgICAgICAgICAgTU0gOiAnJWQgb3knLFxuICAgICAgICAgICAgeSA6ICdiaXIgeWlsJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHlpbCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXpMYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdXogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1eicsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cv0LrRiNCw0L3QsdCwX9CU0YPRiNCw0L3QsdCwX9Ch0LXRiNCw0L3QsdCwX9Cn0L7RgNGI0LDQvdCx0LBf0J/QsNC50YjQsNC90LHQsF/QltGD0LzQsF/QqNCw0L3QsdCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cv0LrRiF/QlNGD0Yhf0KHQtdGIX9Cn0L7RgF/Qn9Cw0Llf0JbRg9C8X9Co0LDQvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0K/Qul/QlNGDX9Ch0LVf0KfQvl/Qn9CwX9CW0YNf0KjQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ0QgTU1NTSBZWVlZLCBkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0YPQs9GD0L0g0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQrdGA0YLQsNCz0LBdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Ca0LXRh9CwINGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Cj0YLQs9Cw0L1dIGRkZGQgW9C60YPQvdC4INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9Cv0LrQuNC9ICVzINC40YfQuNC00LAnLFxuICAgICAgICAgICAgcGFzdCA6ICfQkdC40YAg0L3QtdGH0LAgJXMg0L7Qu9C00LjQvScsXG4gICAgICAgICAgICBzIDogJ9GE0YPRgNGB0LDRgicsXG4gICAgICAgICAgICBzcyA6ICclZCDRhNGD0YDRgdCw0YInLFxuICAgICAgICAgICAgbSA6ICfQsdC40YAg0LTQsNC60LjQutCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC00LDQutC40LrQsCcsXG4gICAgICAgICAgICBoIDogJ9Cx0LjRgCDRgdC+0LDRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkIDogJ9Cx0LjRgCDQutGD0L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LrRg9C9JyxcbiAgICAgICAgICAgIE0gOiAn0LHQuNGAINC+0LknLFxuICAgICAgICAgICAgTU0gOiAnJWQg0L7QuScsXG4gICAgICAgICAgICB5IDogJ9Cx0LjRgCDQudC40LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LnQuNC7J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1ejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHZpID0gbW9tZW50LmRlZmluZUxvY2FsZSgndmknLCB7XG4gICAgICAgIG1vbnRocyA6ICd0aMOhbmcgMV90aMOhbmcgMl90aMOhbmcgM190aMOhbmcgNF90aMOhbmcgNV90aMOhbmcgNl90aMOhbmcgN190aMOhbmcgOF90aMOhbmcgOV90aMOhbmcgMTBfdGjDoW5nIDExX3Row6FuZyAxMicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnVGgwMV9UaDAyX1RoMDNfVGgwNF9UaDA1X1RoMDZfVGgwN19UaDA4X1RoMDlfVGgxMF9UaDExX1RoMTInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdjaOG7pyBuaOG6rXRfdGjhu6kgaGFpX3Ro4bupIGJhX3Ro4bupIHTGsF90aOG7qSBuxINtX3Ro4bupIHPDoXVfdGjhu6kgYuG6o3knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQ05fVDJfVDNfVDRfVDVfVDZfVDcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0NOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvc2F8Y2gvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eY2gkL2kudGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ3NhJyA6ICdTQSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2NoJyA6ICdDSCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gW27Eg21dIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBbbsSDbV0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsIDogJ0REL00vWVlZWScsXG4gICAgICAgICAgICBsbCA6ICdEIE1NTSBZWVlZJyxcbiAgICAgICAgICAgIGxsbCA6ICdEIE1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBEIE1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSMO0bSBuYXkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tOZ8OgeSBtYWkgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tIw7RtIHF1YSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3R14bqnbiBy4buTaSBsw7pjXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyB04bubaScsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHRyxrDhu5tjJyxcbiAgICAgICAgICAgIHMgOiAndsOgaSBnacOieScsXG4gICAgICAgICAgICBzcyA6ICclZCBnacOieScgLFxuICAgICAgICAgICAgbSA6ICdt4buZdCBwaMO6dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBwaMO6dCcsXG4gICAgICAgICAgICBoIDogJ23hu5l0IGdp4budJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGdp4budJyxcbiAgICAgICAgICAgIGQgOiAnbeG7mXQgbmfDoHknLFxuICAgICAgICAgICAgZGQgOiAnJWQgbmfDoHknLFxuICAgICAgICAgICAgTSA6ICdt4buZdCB0aMOhbmcnLFxuICAgICAgICAgICAgTU0gOiAnJWQgdGjDoW5nJyxcbiAgICAgICAgICAgIHkgOiAnbeG7mXQgbsSDbScsXG4gICAgICAgICAgICB5eSA6ICclZCBuxINtJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0vLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB4UHNldWRvID0gbW9tZW50LmRlZmluZUxvY2FsZSgneC1wc2V1ZG8nLCB7XG4gICAgICAgIG1vbnRocyA6ICdKfsOhw7HDusOhfnLDvV9GfsOpYnLDun7DoXLDvV9+TcOhcmN+aF/DgXB+csOtbF9+TcOhw71ffkrDusOxw6l+X0rDumx+w71fw4HDun5nw7pzdH5fU8OpcH50w6ltYn7DqXJfw5N+Y3TDs2J+w6lyX8ORfsOzdsOpbX5iw6lyX35Ew6ljw6l+bWLDqXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0p+w6HDsV9+RsOpYl9+TcOhcl9+w4Fwcl9+TcOhw71ffkrDusOxX35Kw7psX37DgcO6Z19+U8OpcF9+w5NjdF9+w5HDs3ZffkTDqWMnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTfsO6w7Fkw6F+w71fTcOzfsOxZMOhw71+X1TDusOpfnNkw6HDvX5fV8OpZH7DscOpc2R+w6HDvV9UfmjDunJzfmTDocO9X35GcsOtZH7DocO9X1N+w6F0w7pyfmTDocO9Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N+w7rDsV9+TcOzw7FfflTDusOpX35Xw6lkX35UaMO6X35GcsOtX35Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTfsO6X03Ds35fVMO6X35Xw6lfVH5oX0Zyfl9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1R+w7Nkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUfsOzbcOzfnJyw7N+dyDDoXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbw51+w6lzdH7DqXJkw6F+w70gw6F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTH7DoXN0XSBkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfDrX7DsSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIMOhfmfDsycsXG4gICAgICAgICAgICBzIDogJ8OhIH5mw6l3IH5zw6ljw7N+w7FkcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzfsOpY8Ozw7F+ZHMnLFxuICAgICAgICAgICAgbSA6ICfDoSB+bcOtw7F+w7p0w6knLFxuICAgICAgICAgICAgbW0gOiAnJWQgbX7DrcOxw7p+dMOpcycsXG4gICAgICAgICAgICBoIDogJ8OhfsOxIGjDs37DunInLFxuICAgICAgICAgICAgaGggOiAnJWQgaH7Ds8O6cnMnLFxuICAgICAgICAgICAgZCA6ICfDoSB+ZMOhw70nLFxuICAgICAgICAgICAgZGQgOiAnJWQgZH7DocO9cycsXG4gICAgICAgICAgICBNIDogJ8OhIH5tw7PDsX50aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtfsOzw7F0fmhzJyxcbiAgICAgICAgICAgIHkgOiAnw6EgfsO9w6nDoXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw71+w6nDoXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0odGh8c3R8bmR8cmQpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHhQc2V1ZG87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB5byA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3lvJywge1xuICAgICAgICBtb250aHMgOiAnU+G6ucyBcuG6ucyBX0XMgHJlzIBsZcyAX+G6uHLhurnMgG5hzIBfScyAZ2JlzIFfRcyAYmliaV9PzIBrdcyAZHVfQWfhurltb19PzIBndcyBbl9Pd2V3ZV/hu4zMgHdhzIByYcyAX0JlzIFsdcyBX+G7jMyAcOG6ucyAzIAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ1PhurnMgXJfRcyAcmxf4bq4cm5fScyAZ2JfRcyAYmlfT8yAa3XMgF9BZ+G6uV9PzIBndcyBX093ZV/hu4zMgHdhzIBfQmXMgWxf4buMzIBw4bq5zIDMgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQcyAacyAa3XMgV9BamXMgV9JzIBz4bq5zIFndW5f4buMauG7jcyBcnXMgV/hu4xq4buNzIFi4buNX+G6uHRpzIBfQcyAYmHMgW3hurnMgXRhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0HMgGnMgGtfQWplzIFfScyAc+G6ucyBX+G7jGpyX+G7jGpiX+G6uHRpzIBfQcyAYmHMgScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnQcyAacyAX0FqX0nMgHNf4buMcl/hu4xiX+G6uHRfQcyAYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tPzIBuacyAIG5pXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vhu4zMgGxhIG5pXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvhu4xz4bq5zIAgdG/MgW5cXCdi4buNXSBbbmldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0HMgG5hIG5pXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFvhu4xz4bq5zIAgdG/MgWzhu43MgV0gW25pXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnbmnMgSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGvhu41qYcyBJyxcbiAgICAgICAgICAgIHMgOiAnacyAc+G6uWp1zIEgYWF5YcyBIGRpZScsXG4gICAgICAgICAgICBzcyA6J2FheWHMgSAlZCcsXG4gICAgICAgICAgICBtIDogJ2nMgHPhurlqdcyBIGthbicsXG4gICAgICAgICAgICBtbSA6ICdpzIBz4bq5anXMgSAlZCcsXG4gICAgICAgICAgICBoIDogJ3dhzIFrYXRpIGthbicsXG4gICAgICAgICAgICBoaCA6ICd3YcyBa2F0aSAlZCcsXG4gICAgICAgICAgICBkIDogJ+G7jWrhu43MgSBrYW4nLFxuICAgICAgICAgICAgZGQgOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgICAgIE0gOiAnb3N1zIAga2FuJyxcbiAgICAgICAgICAgIE1NIDogJ29zdcyAICVkJyxcbiAgICAgICAgICAgIHkgOiAn4buNZHXMgW4ga2FuJyxcbiAgICAgICAgICAgIHl5IDogJ+G7jWR1zIFuICVkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL+G7jWrhu43MgVxcc1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6ICfhu41q4buNzIEgJWQnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHlvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhDbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWNuJywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpUFo54K5bW3liIYnLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6VkZGRkQWjngrltbeWIhicsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAn5Lit5Y2IJ1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+S4i11kZGRkTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vkuIpdZGRkZExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOWRqCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+WRqCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5YaFJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICflh6Dnp5InLFxuICAgICAgICAgICAgc3MgOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG0gOiAnMSDliIbpkp8nLFxuICAgICAgICAgICAgbW0gOiAnJWQg5YiG6ZKfJyxcbiAgICAgICAgICAgIGggOiAnMSDlsI/ml7YnLFxuICAgICAgICAgICAgaGggOiAnJWQg5bCP5pe2JyxcbiAgICAgICAgICAgIGQgOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQgOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE0gOiAnMSDkuKrmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg5Liq5pyIJyxcbiAgICAgICAgICAgIHkgOiAnMSDlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg5bm0J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB6aENuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhIayA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLWhrJywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV1MVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7lpKldTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+S4i11kZGRkTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXUxUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vkuIpdZGRkZExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjml6V85pyIfOmAsSkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEJyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pelJztcbiAgICAgICAgICAgICAgICBjYXNlICdNJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnVycgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+mAsSc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdCA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+WFpycsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5bm+56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOenkicsXG4gICAgICAgICAgICBtIDogJzEg5YiG6ZCYJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOWIhumQmCcsXG4gICAgICAgICAgICBoIDogJzEg5bCP5pmCJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOWwj+aZgicsXG4gICAgICAgICAgICBkIDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOWkqScsXG4gICAgICAgICAgICBNIDogJzEg5YCL5pyIJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOWAi+aciCcsXG4gICAgICAgICAgICB5IDogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOW5tCdcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHpoSGs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB6aFR3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnemgtdHcnLCB7XG4gICAgICAgIG1vbnRocyA6ICfkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+aYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+aXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZL01NL0REJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTS9EJyxcbiAgICAgICAgICAgIGxsIDogJ1lZWVnlubRN5pyIROaXpScsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeW5tE3mnIhE5pelIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8IG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4reWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5LiL5Y2IJyB8fCBtZXJpZGllbSA9PT0gJ+aZmuS4iicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHZhciBobSA9IGhvdXIgKiAxMDAgKyBtaW51dGU7XG4gICAgICAgICAgICBpZiAoaG0gPCA2MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WHjOaZqCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgOTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfml6nkuIonO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4iuWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTIzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5Lit5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxODAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIvljYgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aZmuS4iic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb5LuK5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7lpKldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vkuItdZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vmmKjlpKldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vkuIpdZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzpgLEpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCcgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCcgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTScgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndycgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPlhacnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+WJjScsXG4gICAgICAgICAgICBzIDogJ+W5vuenkicsXG4gICAgICAgICAgICBzcyA6ICclZCDnp5InLFxuICAgICAgICAgICAgbSA6ICcxIOWIhumQmCcsXG4gICAgICAgICAgICBtbSA6ICclZCDliIbpkJgnLFxuICAgICAgICAgICAgaCA6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaCA6ICclZCDlsI/mmYInLFxuICAgICAgICAgICAgZCA6ICcxIOWkqScsXG4gICAgICAgICAgICBkZCA6ICclZCDlpKknLFxuICAgICAgICAgICAgTSA6ICcxIOWAi+aciCcsXG4gICAgICAgICAgICBNTSA6ICclZCDlgIvmnIgnLFxuICAgICAgICAgICAgeSA6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eSA6ICclZCDlubQnXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB6aFR3O1xuXG59KSkpO1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IDQyNzg2LFxuXHRcIi4vYWYuanNcIjogNDI3ODYsXG5cdFwiLi9hclwiOiAzMDg2Nyxcblx0XCIuL2FyLWR6XCI6IDE0MTMwLFxuXHRcIi4vYXItZHouanNcIjogMTQxMzAsXG5cdFwiLi9hci1rd1wiOiA5NjEzNSxcblx0XCIuL2FyLWt3LmpzXCI6IDk2MTM1LFxuXHRcIi4vYXItbHlcIjogNTY0NDAsXG5cdFwiLi9hci1seS5qc1wiOiA1NjQ0MCxcblx0XCIuL2FyLW1hXCI6IDQ3NzAyLFxuXHRcIi4vYXItbWEuanNcIjogNDc3MDIsXG5cdFwiLi9hci1zYVwiOiAxNjA0MCxcblx0XCIuL2FyLXNhLmpzXCI6IDE2MDQwLFxuXHRcIi4vYXItdG5cIjogMzcxMDAsXG5cdFwiLi9hci10bi5qc1wiOiAzNzEwMCxcblx0XCIuL2FyLmpzXCI6IDMwODY3LFxuXHRcIi4vYXpcIjogMzEwODMsXG5cdFwiLi9hei5qc1wiOiAzMTA4Myxcblx0XCIuL2JlXCI6IDk4MDgsXG5cdFwiLi9iZS5qc1wiOiA5ODA4LFxuXHRcIi4vYmdcIjogNjgzMzgsXG5cdFwiLi9iZy5qc1wiOiA2ODMzOCxcblx0XCIuL2JtXCI6IDY3NDM4LFxuXHRcIi4vYm0uanNcIjogNjc0MzgsXG5cdFwiLi9iblwiOiA4OTA1LFxuXHRcIi4vYm4uanNcIjogODkwNSxcblx0XCIuL2JvXCI6IDExNTYwLFxuXHRcIi4vYm8uanNcIjogMTE1NjAsXG5cdFwiLi9iclwiOiAxMjc4LFxuXHRcIi4vYnIuanNcIjogMTI3OCxcblx0XCIuL2JzXCI6IDgwNjIyLFxuXHRcIi4vYnMuanNcIjogODA2MjIsXG5cdFwiLi9jYVwiOiAyNDY4LFxuXHRcIi4vY2EuanNcIjogMjQ2OCxcblx0XCIuL2NzXCI6IDU4MjIsXG5cdFwiLi9jcy5qc1wiOiA1ODIyLFxuXHRcIi4vY3ZcIjogNTA4NzcsXG5cdFwiLi9jdi5qc1wiOiA1MDg3Nyxcblx0XCIuL2N5XCI6IDQ3MzczLFxuXHRcIi4vY3kuanNcIjogNDczNzMsXG5cdFwiLi9kYVwiOiAyNDc4MCxcblx0XCIuL2RhLmpzXCI6IDI0NzgwLFxuXHRcIi4vZGVcIjogNTk3NDAsXG5cdFwiLi9kZS1hdFwiOiA2MDIxNyxcblx0XCIuL2RlLWF0LmpzXCI6IDYwMjE3LFxuXHRcIi4vZGUtY2hcIjogNjA4OTQsXG5cdFwiLi9kZS1jaC5qc1wiOiA2MDg5NCxcblx0XCIuL2RlLmpzXCI6IDU5NzQwLFxuXHRcIi4vZHZcIjogNTMwMCxcblx0XCIuL2R2LmpzXCI6IDUzMDAsXG5cdFwiLi9lbFwiOiA1MDgzNyxcblx0XCIuL2VsLmpzXCI6IDUwODM3LFxuXHRcIi4vZW4tU0dcIjogODUzODMsXG5cdFwiLi9lbi1TRy5qc1wiOiA4NTM4Myxcblx0XCIuL2VuLWF1XCI6IDc4MzQ4LFxuXHRcIi4vZW4tYXUuanNcIjogNzgzNDgsXG5cdFwiLi9lbi1jYVwiOiA3NzkyNSxcblx0XCIuL2VuLWNhLmpzXCI6IDc3OTI1LFxuXHRcIi4vZW4tZ2JcIjogMjIyNDMsXG5cdFwiLi9lbi1nYi5qc1wiOiAyMjI0Myxcblx0XCIuL2VuLWllXCI6IDQ2NDM2LFxuXHRcIi4vZW4taWUuanNcIjogNDY0MzYsXG5cdFwiLi9lbi1pbFwiOiA0NzIwNyxcblx0XCIuL2VuLWlsLmpzXCI6IDQ3MjA3LFxuXHRcIi4vZW4tbnpcIjogNzYzMTksXG5cdFwiLi9lbi1uei5qc1wiOiA3NjMxOSxcblx0XCIuL2VvXCI6IDkyOTE1LFxuXHRcIi4vZW8uanNcIjogOTI5MTUsXG5cdFwiLi9lc1wiOiA1NTY1NSxcblx0XCIuL2VzLWRvXCI6IDU1MjUxLFxuXHRcIi4vZXMtZG8uanNcIjogNTUyNTEsXG5cdFwiLi9lcy11c1wiOiA3MTE0Nixcblx0XCIuL2VzLXVzLmpzXCI6IDcxMTQ2LFxuXHRcIi4vZXMuanNcIjogNTU2NTUsXG5cdFwiLi9ldFwiOiA1NjAzLFxuXHRcIi4vZXQuanNcIjogNTYwMyxcblx0XCIuL2V1XCI6IDc3NzYzLFxuXHRcIi4vZXUuanNcIjogNzc3NjMsXG5cdFwiLi9mYVwiOiA3Njk1OSxcblx0XCIuL2ZhLmpzXCI6IDc2OTU5LFxuXHRcIi4vZmlcIjogMTE4OTcsXG5cdFwiLi9maS5qc1wiOiAxMTg5Nyxcblx0XCIuL2ZvXCI6IDk0Njk0LFxuXHRcIi4vZm8uanNcIjogOTQ2OTQsXG5cdFwiLi9mclwiOiA5NDQ3MCxcblx0XCIuL2ZyLWNhXCI6IDYzMDQ5LFxuXHRcIi4vZnItY2EuanNcIjogNjMwNDksXG5cdFwiLi9mci1jaFwiOiA1MjMzMCxcblx0XCIuL2ZyLWNoLmpzXCI6IDUyMzMwLFxuXHRcIi4vZnIuanNcIjogOTQ0NzAsXG5cdFwiLi9meVwiOiA1MDQ0LFxuXHRcIi4vZnkuanNcIjogNTA0NCxcblx0XCIuL2dhXCI6IDI5Mjk1LFxuXHRcIi4vZ2EuanNcIjogMjkyOTUsXG5cdFwiLi9nZFwiOiAyMTAxLFxuXHRcIi4vZ2QuanNcIjogMjEwMSxcblx0XCIuL2dsXCI6IDM4Nzk0LFxuXHRcIi4vZ2wuanNcIjogMzg3OTQsXG5cdFwiLi9nb20tbGF0blwiOiAyMzE2OCxcblx0XCIuL2dvbS1sYXRuLmpzXCI6IDIzMTY4LFxuXHRcIi4vZ3VcIjogOTUzNDksXG5cdFwiLi9ndS5qc1wiOiA5NTM0OSxcblx0XCIuL2hlXCI6IDI0MjA2LFxuXHRcIi4vaGUuanNcIjogMjQyMDYsXG5cdFwiLi9oaVwiOiAzMDA5NCxcblx0XCIuL2hpLmpzXCI6IDMwMDk0LFxuXHRcIi4vaHJcIjogMzAzMTYsXG5cdFwiLi9oci5qc1wiOiAzMDMxNixcblx0XCIuL2h1XCI6IDIyMTM4LFxuXHRcIi4vaHUuanNcIjogMjIxMzgsXG5cdFwiLi9oeS1hbVwiOiAxMTQyMyxcblx0XCIuL2h5LWFtLmpzXCI6IDExNDIzLFxuXHRcIi4vaWRcIjogMjkyMTgsXG5cdFwiLi9pZC5qc1wiOiAyOTIxOCxcblx0XCIuL2lzXCI6IDkwMTM1LFxuXHRcIi4vaXMuanNcIjogOTAxMzUsXG5cdFwiLi9pdFwiOiA5MDYyNixcblx0XCIuL2l0LWNoXCI6IDEwMTUwLFxuXHRcIi4vaXQtY2guanNcIjogMTAxNTAsXG5cdFwiLi9pdC5qc1wiOiA5MDYyNixcblx0XCIuL2phXCI6IDM5MTgzLFxuXHRcIi4vamEuanNcIjogMzkxODMsXG5cdFwiLi9qdlwiOiAyNDI4Nixcblx0XCIuL2p2LmpzXCI6IDI0Mjg2LFxuXHRcIi4va2FcIjogMTIxMDUsXG5cdFwiLi9rYS5qc1wiOiAxMjEwNSxcblx0XCIuL2trXCI6IDQ3NzcyLFxuXHRcIi4va2suanNcIjogNDc3NzIsXG5cdFwiLi9rbVwiOiAxODc1OCxcblx0XCIuL2ttLmpzXCI6IDE4NzU4LFxuXHRcIi4va25cIjogNzkyODIsXG5cdFwiLi9rbi5qc1wiOiA3OTI4Mixcblx0XCIuL2tvXCI6IDMzNzMwLFxuXHRcIi4va28uanNcIjogMzM3MzAsXG5cdFwiLi9rdVwiOiAxNDA4LFxuXHRcIi4va3UuanNcIjogMTQwOCxcblx0XCIuL2t5XCI6IDMzMjkxLFxuXHRcIi4va3kuanNcIjogMzMyOTEsXG5cdFwiLi9sYlwiOiAzNjg0MSxcblx0XCIuL2xiLmpzXCI6IDM2ODQxLFxuXHRcIi4vbG9cIjogNTU0NjYsXG5cdFwiLi9sby5qc1wiOiA1NTQ2Nixcblx0XCIuL2x0XCI6IDU3MDEwLFxuXHRcIi4vbHQuanNcIjogNTcwMTAsXG5cdFwiLi9sdlwiOiAzNzU5NSxcblx0XCIuL2x2LmpzXCI6IDM3NTk1LFxuXHRcIi4vbWVcIjogMzk4NjEsXG5cdFwiLi9tZS5qc1wiOiAzOTg2MSxcblx0XCIuL21pXCI6IDM1NDkzLFxuXHRcIi4vbWkuanNcIjogMzU0OTMsXG5cdFwiLi9ta1wiOiA5NTk2Nixcblx0XCIuL21rLmpzXCI6IDk1OTY2LFxuXHRcIi4vbWxcIjogODczNDEsXG5cdFwiLi9tbC5qc1wiOiA4NzM0MSxcblx0XCIuL21uXCI6IDUxMTUsXG5cdFwiLi9tbi5qc1wiOiA1MTE1LFxuXHRcIi4vbXJcIjogMTAzNzAsXG5cdFwiLi9tci5qc1wiOiAxMDM3MCxcblx0XCIuL21zXCI6IDk4NDcsXG5cdFwiLi9tcy1teVwiOiA0MTIzNyxcblx0XCIuL21zLW15LmpzXCI6IDQxMjM3LFxuXHRcIi4vbXMuanNcIjogOTg0Nyxcblx0XCIuL210XCI6IDcyMTI2LFxuXHRcIi4vbXQuanNcIjogNzIxMjYsXG5cdFwiLi9teVwiOiA1NjE2NSxcblx0XCIuL215LmpzXCI6IDU2MTY1LFxuXHRcIi4vbmJcIjogNjQ5MjQsXG5cdFwiLi9uYi5qc1wiOiA2NDkyNCxcblx0XCIuL25lXCI6IDE2NzQ0LFxuXHRcIi4vbmUuanNcIjogMTY3NDQsXG5cdFwiLi9ubFwiOiA5MzkwMSxcblx0XCIuL25sLWJlXCI6IDU5ODE0LFxuXHRcIi4vbmwtYmUuanNcIjogNTk4MTQsXG5cdFwiLi9ubC5qc1wiOiA5MzkwMSxcblx0XCIuL25uXCI6IDgzODc3LFxuXHRcIi4vbm4uanNcIjogODM4NzcsXG5cdFwiLi9wYS1pblwiOiAxNTg1OCxcblx0XCIuL3BhLWluLmpzXCI6IDE1ODU4LFxuXHRcIi4vcGxcIjogNjQ0OTUsXG5cdFwiLi9wbC5qc1wiOiA2NDQ5NSxcblx0XCIuL3B0XCI6IDg5NTIwLFxuXHRcIi4vcHQtYnJcIjogNTc5NzEsXG5cdFwiLi9wdC1ici5qc1wiOiA1Nzk3MSxcblx0XCIuL3B0LmpzXCI6IDg5NTIwLFxuXHRcIi4vcm9cIjogOTY0NTksXG5cdFwiLi9yby5qc1wiOiA5NjQ1OSxcblx0XCIuL3J1XCI6IDIxNzkzLFxuXHRcIi4vcnUuanNcIjogMjE3OTMsXG5cdFwiLi9zZFwiOiA0MDk1MCxcblx0XCIuL3NkLmpzXCI6IDQwOTUwLFxuXHRcIi4vc2VcIjogMTA0OTAsXG5cdFwiLi9zZS5qc1wiOiAxMDQ5MCxcblx0XCIuL3NpXCI6IDkwMTI0LFxuXHRcIi4vc2kuanNcIjogOTAxMjQsXG5cdFwiLi9za1wiOiA2NDI0OSxcblx0XCIuL3NrLmpzXCI6IDY0MjQ5LFxuXHRcIi4vc2xcIjogMTQ5ODUsXG5cdFwiLi9zbC5qc1wiOiAxNDk4NSxcblx0XCIuL3NxXCI6IDUxMTA0LFxuXHRcIi4vc3EuanNcIjogNTExMDQsXG5cdFwiLi9zclwiOiA0OTEzMSxcblx0XCIuL3NyLWN5cmxcIjogNzk5MTUsXG5cdFwiLi9zci1jeXJsLmpzXCI6IDc5OTE1LFxuXHRcIi4vc3IuanNcIjogNDkxMzEsXG5cdFwiLi9zc1wiOiA4NTg5Myxcblx0XCIuL3NzLmpzXCI6IDg1ODkzLFxuXHRcIi4vc3ZcIjogOTg3NjAsXG5cdFwiLi9zdi5qc1wiOiA5ODc2MCxcblx0XCIuL3N3XCI6IDkxMTcyLFxuXHRcIi4vc3cuanNcIjogOTExNzIsXG5cdFwiLi90YVwiOiAyNzMzMyxcblx0XCIuL3RhLmpzXCI6IDI3MzMzLFxuXHRcIi4vdGVcIjogMjMxMTAsXG5cdFwiLi90ZS5qc1wiOiAyMzExMCxcblx0XCIuL3RldFwiOiA1MjA5NSxcblx0XCIuL3RldC5qc1wiOiA1MjA5NSxcblx0XCIuL3RnXCI6IDI3MzIxLFxuXHRcIi4vdGcuanNcIjogMjczMjEsXG5cdFwiLi90aFwiOiA5MDQxLFxuXHRcIi4vdGguanNcIjogOTA0MSxcblx0XCIuL3RsLXBoXCI6IDc1NzY4LFxuXHRcIi4vdGwtcGguanNcIjogNzU3NjgsXG5cdFwiLi90bGhcIjogODk0NDQsXG5cdFwiLi90bGguanNcIjogODk0NDQsXG5cdFwiLi90clwiOiA3MjM5Nyxcblx0XCIuL3RyLmpzXCI6IDcyMzk3LFxuXHRcIi4vdHpsXCI6IDI4MjU0LFxuXHRcIi4vdHpsLmpzXCI6IDI4MjU0LFxuXHRcIi4vdHptXCI6IDUxMTA2LFxuXHRcIi4vdHptLWxhdG5cIjogMzA2OTksXG5cdFwiLi90em0tbGF0bi5qc1wiOiAzMDY5OSxcblx0XCIuL3R6bS5qc1wiOiA1MTEwNixcblx0XCIuL3VnLWNuXCI6IDkyODgsXG5cdFwiLi91Zy1jbi5qc1wiOiA5Mjg4LFxuXHRcIi4vdWtcIjogNjc2OTEsXG5cdFwiLi91ay5qc1wiOiA2NzY5MSxcblx0XCIuL3VyXCI6IDEzNzk1LFxuXHRcIi4vdXIuanNcIjogMTM3OTUsXG5cdFwiLi91elwiOiA2NzkxLFxuXHRcIi4vdXotbGF0blwiOiA2MDU4OCxcblx0XCIuL3V6LWxhdG4uanNcIjogNjA1ODgsXG5cdFwiLi91ei5qc1wiOiA2NzkxLFxuXHRcIi4vdmlcIjogNjU2NjYsXG5cdFwiLi92aS5qc1wiOiA2NTY2Nixcblx0XCIuL3gtcHNldWRvXCI6IDE0Mzc4LFxuXHRcIi4veC1wc2V1ZG8uanNcIjogMTQzNzgsXG5cdFwiLi95b1wiOiA3NTgwNSxcblx0XCIuL3lvLmpzXCI6IDc1ODA1LFxuXHRcIi4vemgtY25cIjogODM4MzksXG5cdFwiLi96aC1jbi5qc1wiOiA4MzgzOSxcblx0XCIuL3poLWhrXCI6IDU1NzI2LFxuXHRcIi4vemgtaGsuanNcIjogNTU3MjYsXG5cdFwiLi96aC10d1wiOiA3NDE1Mixcblx0XCIuL3poLXR3LmpzXCI6IDc0MTUyXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gNDY3MDA7IiwiLyohXG4gKiBwZXJmZWN0LXNjcm9sbGJhciB2MS41LjBcbiAqIENvcHlyaWdodCAyMDIwIEh5dW5qZSBKdW4sIE1EQm9vdHN0cmFwIGFuZCBDb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVFxuICovXG5cbmZ1bmN0aW9uIGdldChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBzZXQoZWxlbWVudCwgb2JqKSB7XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICB2YXIgdmFsID0gb2JqW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWwgPSB2YWwgKyBcInB4XCI7XG4gICAgfVxuICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHZhbDtcbiAgfVxuICByZXR1cm4gZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZGl2KGNsYXNzTmFtZSkge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gIHJldHVybiBkaXY7XG59XG5cbnZhciBlbE1hdGNoZXMgPVxuICB0eXBlb2YgRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgKEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMgfHxcbiAgICBFbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcbiAgICBFbGVtZW50LnByb3RvdHlwZS5tb3pNYXRjaGVzU2VsZWN0b3IgfHxcbiAgICBFbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3Rvcik7XG5cbmZ1bmN0aW9uIG1hdGNoZXMoZWxlbWVudCwgcXVlcnkpIHtcbiAgaWYgKCFlbE1hdGNoZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgbWF0Y2hpbmcgbWV0aG9kIHN1cHBvcnRlZCcpO1xuICB9XG5cbiAgcmV0dXJuIGVsTWF0Y2hlcy5jYWxsKGVsZW1lbnQsIHF1ZXJ5KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQucmVtb3ZlKSB7XG4gICAgZWxlbWVudC5yZW1vdmUoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5Q2hpbGRyZW4oZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChlbGVtZW50LmNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIG1hdGNoZXMoY2hpbGQsIHNlbGVjdG9yKTsgfVxuICApO1xufVxuXG52YXIgY2xzID0ge1xuICBtYWluOiAncHMnLFxuICBydGw6ICdwc19fcnRsJyxcbiAgZWxlbWVudDoge1xuICAgIHRodW1iOiBmdW5jdGlvbiAoeCkgeyByZXR1cm4gKFwicHNfX3RodW1iLVwiICsgeCk7IH0sXG4gICAgcmFpbDogZnVuY3Rpb24gKHgpIHsgcmV0dXJuIChcInBzX19yYWlsLVwiICsgeCk7IH0sXG4gICAgY29uc3VtaW5nOiAncHNfX2NoaWxkLS1jb25zdW1lJyxcbiAgfSxcbiAgc3RhdGU6IHtcbiAgICBmb2N1czogJ3BzLS1mb2N1cycsXG4gICAgY2xpY2tpbmc6ICdwcy0tY2xpY2tpbmcnLFxuICAgIGFjdGl2ZTogZnVuY3Rpb24gKHgpIHsgcmV0dXJuIChcInBzLS1hY3RpdmUtXCIgKyB4KTsgfSxcbiAgICBzY3JvbGxpbmc6IGZ1bmN0aW9uICh4KSB7IHJldHVybiAoXCJwcy0tc2Nyb2xsaW5nLVwiICsgeCk7IH0sXG4gIH0sXG59O1xuXG4vKlxuICogSGVscGVyIG1ldGhvZHNcbiAqL1xudmFyIHNjcm9sbGluZ0NsYXNzVGltZW91dCA9IHsgeDogbnVsbCwgeTogbnVsbCB9O1xuXG5mdW5jdGlvbiBhZGRTY3JvbGxpbmdDbGFzcyhpLCB4KSB7XG4gIHZhciBjbGFzc0xpc3QgPSBpLmVsZW1lbnQuY2xhc3NMaXN0O1xuICB2YXIgY2xhc3NOYW1lID0gY2xzLnN0YXRlLnNjcm9sbGluZyh4KTtcblxuICBpZiAoY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsaW5nQ2xhc3NUaW1lb3V0W3hdKTtcbiAgfSBlbHNlIHtcbiAgICBjbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2Nyb2xsaW5nQ2xhc3MoaSwgeCkge1xuICBzY3JvbGxpbmdDbGFzc1RpbWVvdXRbeF0gPSBzZXRUaW1lb3V0KFxuICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGkuaXNBbGl2ZSAmJiBpLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbHMuc3RhdGUuc2Nyb2xsaW5nKHgpKTsgfSxcbiAgICBpLnNldHRpbmdzLnNjcm9sbGluZ1RocmVzaG9sZFxuICApO1xufVxuXG5mdW5jdGlvbiBzZXRTY3JvbGxpbmdDbGFzc0luc3RhbnRseShpLCB4KSB7XG4gIGFkZFNjcm9sbGluZ0NsYXNzKGksIHgpO1xuICByZW1vdmVTY3JvbGxpbmdDbGFzcyhpLCB4KTtcbn1cblxudmFyIEV2ZW50RWxlbWVudCA9IGZ1bmN0aW9uIEV2ZW50RWxlbWVudChlbGVtZW50KSB7XG4gIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIHRoaXMuaGFuZGxlcnMgPSB7fTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGlzRW1wdHk6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuRXZlbnRFbGVtZW50LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gYmluZCAoZXZlbnROYW1lLCBoYW5kbGVyKSB7XG4gIGlmICh0eXBlb2YgdGhpcy5oYW5kbGVyc1tldmVudE5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgIHRoaXMuaGFuZGxlcnNbZXZlbnROYW1lXSA9IFtdO1xuICB9XG4gIHRoaXMuaGFuZGxlcnNbZXZlbnROYW1lXS5wdXNoKGhhbmRsZXIpO1xuICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RWxlbWVudC5wcm90b3R5cGUudW5iaW5kID0gZnVuY3Rpb24gdW5iaW5kIChldmVudE5hbWUsIHRhcmdldCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHRoaXMuaGFuZGxlcnNbZXZlbnROYW1lXSA9IHRoaXMuaGFuZGxlcnNbZXZlbnROYW1lXS5maWx0ZXIoZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICBpZiAodGFyZ2V0ICYmIGhhbmRsZXIgIT09IHRhcmdldCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRoaXMkMS5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLCBmYWxzZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcbn07XG5cbkV2ZW50RWxlbWVudC5wcm90b3R5cGUudW5iaW5kQWxsID0gZnVuY3Rpb24gdW5iaW5kQWxsICgpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgdGhpcy51bmJpbmQobmFtZSk7XG4gIH1cbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5pc0VtcHR5LmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5oYW5kbGVycykuZXZlcnkoXG4gICAgZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gdGhpcyQxLmhhbmRsZXJzW2tleV0ubGVuZ3RoID09PSAwOyB9XG4gICk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggRXZlbnRFbGVtZW50LnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBFdmVudE1hbmFnZXIgPSBmdW5jdGlvbiBFdmVudE1hbmFnZXIoKSB7XG4gIHRoaXMuZXZlbnRFbGVtZW50cyA9IFtdO1xufTtcblxuRXZlbnRNYW5hZ2VyLnByb3RvdHlwZS5ldmVudEVsZW1lbnQgPSBmdW5jdGlvbiBldmVudEVsZW1lbnQgKGVsZW1lbnQpIHtcbiAgdmFyIGVlID0gdGhpcy5ldmVudEVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAoZWUpIHsgcmV0dXJuIGVlLmVsZW1lbnQgPT09IGVsZW1lbnQ7IH0pWzBdO1xuICBpZiAoIWVlKSB7XG4gICAgZWUgPSBuZXcgRXZlbnRFbGVtZW50KGVsZW1lbnQpO1xuICAgIHRoaXMuZXZlbnRFbGVtZW50cy5wdXNoKGVlKTtcbiAgfVxuICByZXR1cm4gZWU7XG59O1xuXG5FdmVudE1hbmFnZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiBiaW5kIChlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpIHtcbiAgdGhpcy5ldmVudEVsZW1lbnQoZWxlbWVudCkuYmluZChldmVudE5hbWUsIGhhbmRsZXIpO1xufTtcblxuRXZlbnRNYW5hZ2VyLnByb3RvdHlwZS51bmJpbmQgPSBmdW5jdGlvbiB1bmJpbmQgKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikge1xuICB2YXIgZWUgPSB0aGlzLmV2ZW50RWxlbWVudChlbGVtZW50KTtcbiAgZWUudW5iaW5kKGV2ZW50TmFtZSwgaGFuZGxlcik7XG5cbiAgaWYgKGVlLmlzRW1wdHkpIHtcbiAgICAvLyByZW1vdmVcbiAgICB0aGlzLmV2ZW50RWxlbWVudHMuc3BsaWNlKHRoaXMuZXZlbnRFbGVtZW50cy5pbmRleE9mKGVlKSwgMSk7XG4gIH1cbn07XG5cbkV2ZW50TWFuYWdlci5wcm90b3R5cGUudW5iaW5kQWxsID0gZnVuY3Rpb24gdW5iaW5kQWxsICgpIHtcbiAgdGhpcy5ldmVudEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudW5iaW5kQWxsKCk7IH0pO1xuICB0aGlzLmV2ZW50RWxlbWVudHMgPSBbXTtcbn07XG5cbkV2ZW50TWFuYWdlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UgKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikge1xuICB2YXIgZWUgPSB0aGlzLmV2ZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIG9uY2VIYW5kbGVyID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGVlLnVuYmluZChldmVudE5hbWUsIG9uY2VIYW5kbGVyKTtcbiAgICBoYW5kbGVyKGV2dCk7XG4gIH07XG4gIGVlLmJpbmQoZXZlbnROYW1lLCBvbmNlSGFuZGxlcik7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVFdmVudChuYW1lKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDdXN0b21FdmVudChuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgZXZ0LmluaXRDdXN0b21FdmVudChuYW1lLCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIGV2dDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzU2Nyb2xsRGlmZihcbiAgaSxcbiAgYXhpcyxcbiAgZGlmZixcbiAgdXNlU2Nyb2xsaW5nQ2xhc3MsXG4gIGZvcmNlRmlyZVJlYWNoRXZlbnRcbikge1xuICBpZiAoIHVzZVNjcm9sbGluZ0NsYXNzID09PSB2b2lkIDAgKSB1c2VTY3JvbGxpbmdDbGFzcyA9IHRydWU7XG4gIGlmICggZm9yY2VGaXJlUmVhY2hFdmVudCA9PT0gdm9pZCAwICkgZm9yY2VGaXJlUmVhY2hFdmVudCA9IGZhbHNlO1xuXG4gIHZhciBmaWVsZHM7XG4gIGlmIChheGlzID09PSAndG9wJykge1xuICAgIGZpZWxkcyA9IFtcbiAgICAgICdjb250ZW50SGVpZ2h0JyxcbiAgICAgICdjb250YWluZXJIZWlnaHQnLFxuICAgICAgJ3Njcm9sbFRvcCcsXG4gICAgICAneScsXG4gICAgICAndXAnLFxuICAgICAgJ2Rvd24nIF07XG4gIH0gZWxzZSBpZiAoYXhpcyA9PT0gJ2xlZnQnKSB7XG4gICAgZmllbGRzID0gW1xuICAgICAgJ2NvbnRlbnRXaWR0aCcsXG4gICAgICAnY29udGFpbmVyV2lkdGgnLFxuICAgICAgJ3Njcm9sbExlZnQnLFxuICAgICAgJ3gnLFxuICAgICAgJ2xlZnQnLFxuICAgICAgJ3JpZ2h0JyBdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQSBwcm9wZXIgYXhpcyBzaG91bGQgYmUgcHJvdmlkZWQnKTtcbiAgfVxuXG4gIHByb2Nlc3NTY3JvbGxEaWZmJDEoaSwgZGlmZiwgZmllbGRzLCB1c2VTY3JvbGxpbmdDbGFzcywgZm9yY2VGaXJlUmVhY2hFdmVudCk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NTY3JvbGxEaWZmJDEoXG4gIGksXG4gIGRpZmYsXG4gIHJlZixcbiAgdXNlU2Nyb2xsaW5nQ2xhc3MsXG4gIGZvcmNlRmlyZVJlYWNoRXZlbnRcbikge1xuICB2YXIgY29udGVudEhlaWdodCA9IHJlZlswXTtcbiAgdmFyIGNvbnRhaW5lckhlaWdodCA9IHJlZlsxXTtcbiAgdmFyIHNjcm9sbFRvcCA9IHJlZlsyXTtcbiAgdmFyIHkgPSByZWZbM107XG4gIHZhciB1cCA9IHJlZls0XTtcbiAgdmFyIGRvd24gPSByZWZbNV07XG4gIGlmICggdXNlU2Nyb2xsaW5nQ2xhc3MgPT09IHZvaWQgMCApIHVzZVNjcm9sbGluZ0NsYXNzID0gdHJ1ZTtcbiAgaWYgKCBmb3JjZUZpcmVSZWFjaEV2ZW50ID09PSB2b2lkIDAgKSBmb3JjZUZpcmVSZWFjaEV2ZW50ID0gZmFsc2U7XG5cbiAgdmFyIGVsZW1lbnQgPSBpLmVsZW1lbnQ7XG5cbiAgLy8gcmVzZXQgcmVhY2hcbiAgaS5yZWFjaFt5XSA9IG51bGw7XG5cbiAgLy8gMSBmb3Igc3VicGl4ZWwgcm91bmRpbmdcbiAgaWYgKGVsZW1lbnRbc2Nyb2xsVG9wXSA8IDEpIHtcbiAgICBpLnJlYWNoW3ldID0gJ3N0YXJ0JztcbiAgfVxuXG4gIC8vIDEgZm9yIHN1YnBpeGVsIHJvdW5kaW5nXG4gIGlmIChlbGVtZW50W3Njcm9sbFRvcF0gPiBpW2NvbnRlbnRIZWlnaHRdIC0gaVtjb250YWluZXJIZWlnaHRdIC0gMSkge1xuICAgIGkucmVhY2hbeV0gPSAnZW5kJztcbiAgfVxuXG4gIGlmIChkaWZmKSB7XG4gICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KChcInBzLXNjcm9sbC1cIiArIHkpKSk7XG5cbiAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChjcmVhdGVFdmVudCgoXCJwcy1zY3JvbGwtXCIgKyB1cCkpKTtcbiAgICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoY3JlYXRlRXZlbnQoKFwicHMtc2Nyb2xsLVwiICsgZG93bikpKTtcbiAgICB9XG5cbiAgICBpZiAodXNlU2Nyb2xsaW5nQ2xhc3MpIHtcbiAgICAgIHNldFNjcm9sbGluZ0NsYXNzSW5zdGFudGx5KGksIHkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpLnJlYWNoW3ldICYmIChkaWZmIHx8IGZvcmNlRmlyZVJlYWNoRXZlbnQpKSB7XG4gICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KChcInBzLVwiICsgeSArIFwiLXJlYWNoLVwiICsgKGkucmVhY2hbeV0pKSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvSW50KHgpIHtcbiAgcmV0dXJuIHBhcnNlSW50KHgsIDEwKSB8fCAwO1xufVxuXG5mdW5jdGlvbiBpc0VkaXRhYmxlKGVsKSB7XG4gIHJldHVybiAoXG4gICAgbWF0Y2hlcyhlbCwgJ2lucHV0LFtjb250ZW50ZWRpdGFibGVdJykgfHxcbiAgICBtYXRjaGVzKGVsLCAnc2VsZWN0LFtjb250ZW50ZWRpdGFibGVdJykgfHxcbiAgICBtYXRjaGVzKGVsLCAndGV4dGFyZWEsW2NvbnRlbnRlZGl0YWJsZV0nKSB8fFxuICAgIG1hdGNoZXMoZWwsICdidXR0b24sW2NvbnRlbnRlZGl0YWJsZV0nKVxuICApO1xufVxuXG5mdW5jdGlvbiBvdXRlcldpZHRoKGVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlcyA9IGdldChlbGVtZW50KTtcbiAgcmV0dXJuIChcbiAgICB0b0ludChzdHlsZXMud2lkdGgpICtcbiAgICB0b0ludChzdHlsZXMucGFkZGluZ0xlZnQpICtcbiAgICB0b0ludChzdHlsZXMucGFkZGluZ1JpZ2h0KSArXG4gICAgdG9JbnQoc3R5bGVzLmJvcmRlckxlZnRXaWR0aCkgK1xuICAgIHRvSW50KHN0eWxlcy5ib3JkZXJSaWdodFdpZHRoKVxuICApO1xufVxuXG52YXIgZW52ID0ge1xuICBpc1dlYktpdDpcbiAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgJ1dlYmtpdEFwcGVhcmFuY2UnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxcbiAgc3VwcG9ydHNUb3VjaDpcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHxcbiAgICAgICgnbWF4VG91Y2hQb2ludHMnIGluIHdpbmRvdy5uYXZpZ2F0b3IgJiZcbiAgICAgICAgd2luZG93Lm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDApIHx8XG4gICAgICAod2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiB3aW5kb3cuRG9jdW1lbnRUb3VjaCkpLFxuICBzdXBwb3J0c0llUG9pbnRlcjpcbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxcbiAgaXNDaHJvbWU6XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvQ2hyb21lL2kudGVzdChuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCksXG59O1xuXG5mdW5jdGlvbiB1cGRhdGVHZW9tZXRyeShpKSB7XG4gIHZhciBlbGVtZW50ID0gaS5lbGVtZW50O1xuICB2YXIgcm91bmRlZFNjcm9sbFRvcCA9IE1hdGguZmxvb3IoZWxlbWVudC5zY3JvbGxUb3ApO1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgaS5jb250YWluZXJXaWR0aCA9IE1hdGguY2VpbChyZWN0LndpZHRoKTtcbiAgaS5jb250YWluZXJIZWlnaHQgPSBNYXRoLmNlaWwocmVjdC5oZWlnaHQpO1xuICBpLmNvbnRlbnRXaWR0aCA9IGVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gIGkuY29udGVudEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuXG4gIGlmICghZWxlbWVudC5jb250YWlucyhpLnNjcm9sbGJhclhSYWlsKSkge1xuICAgIC8vIGNsZWFuIHVwIGFuZCBhcHBlbmRcbiAgICBxdWVyeUNoaWxkcmVuKGVsZW1lbnQsIGNscy5lbGVtZW50LnJhaWwoJ3gnKSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHJlbW92ZShlbCk7IH1cbiAgICApO1xuICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoaS5zY3JvbGxiYXJYUmFpbCk7XG4gIH1cbiAgaWYgKCFlbGVtZW50LmNvbnRhaW5zKGkuc2Nyb2xsYmFyWVJhaWwpKSB7XG4gICAgLy8gY2xlYW4gdXAgYW5kIGFwcGVuZFxuICAgIHF1ZXJ5Q2hpbGRyZW4oZWxlbWVudCwgY2xzLmVsZW1lbnQucmFpbCgneScpKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gcmVtb3ZlKGVsKTsgfVxuICAgICk7XG4gICAgZWxlbWVudC5hcHBlbmRDaGlsZChpLnNjcm9sbGJhcllSYWlsKTtcbiAgfVxuXG4gIGlmIChcbiAgICAhaS5zZXR0aW5ncy5zdXBwcmVzc1Njcm9sbFggJiZcbiAgICBpLmNvbnRhaW5lcldpZHRoICsgaS5zZXR0aW5ncy5zY3JvbGxYTWFyZ2luT2Zmc2V0IDwgaS5jb250ZW50V2lkdGhcbiAgKSB7XG4gICAgaS5zY3JvbGxiYXJYQWN0aXZlID0gdHJ1ZTtcbiAgICBpLnJhaWxYV2lkdGggPSBpLmNvbnRhaW5lcldpZHRoIC0gaS5yYWlsWE1hcmdpbldpZHRoO1xuICAgIGkucmFpbFhSYXRpbyA9IGkuY29udGFpbmVyV2lkdGggLyBpLnJhaWxYV2lkdGg7XG4gICAgaS5zY3JvbGxiYXJYV2lkdGggPSBnZXRUaHVtYlNpemUoXG4gICAgICBpLFxuICAgICAgdG9JbnQoKGkucmFpbFhXaWR0aCAqIGkuY29udGFpbmVyV2lkdGgpIC8gaS5jb250ZW50V2lkdGgpXG4gICAgKTtcbiAgICBpLnNjcm9sbGJhclhMZWZ0ID0gdG9JbnQoXG4gICAgICAoKGkubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ICsgZWxlbWVudC5zY3JvbGxMZWZ0KSAqXG4gICAgICAgIChpLnJhaWxYV2lkdGggLSBpLnNjcm9sbGJhclhXaWR0aCkpIC9cbiAgICAgICAgKGkuY29udGVudFdpZHRoIC0gaS5jb250YWluZXJXaWR0aClcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGkuc2Nyb2xsYmFyWEFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICFpLnNldHRpbmdzLnN1cHByZXNzU2Nyb2xsWSAmJlxuICAgIGkuY29udGFpbmVySGVpZ2h0ICsgaS5zZXR0aW5ncy5zY3JvbGxZTWFyZ2luT2Zmc2V0IDwgaS5jb250ZW50SGVpZ2h0XG4gICkge1xuICAgIGkuc2Nyb2xsYmFyWUFjdGl2ZSA9IHRydWU7XG4gICAgaS5yYWlsWUhlaWdodCA9IGkuY29udGFpbmVySGVpZ2h0IC0gaS5yYWlsWU1hcmdpbkhlaWdodDtcbiAgICBpLnJhaWxZUmF0aW8gPSBpLmNvbnRhaW5lckhlaWdodCAvIGkucmFpbFlIZWlnaHQ7XG4gICAgaS5zY3JvbGxiYXJZSGVpZ2h0ID0gZ2V0VGh1bWJTaXplKFxuICAgICAgaSxcbiAgICAgIHRvSW50KChpLnJhaWxZSGVpZ2h0ICogaS5jb250YWluZXJIZWlnaHQpIC8gaS5jb250ZW50SGVpZ2h0KVxuICAgICk7XG4gICAgaS5zY3JvbGxiYXJZVG9wID0gdG9JbnQoXG4gICAgICAocm91bmRlZFNjcm9sbFRvcCAqIChpLnJhaWxZSGVpZ2h0IC0gaS5zY3JvbGxiYXJZSGVpZ2h0KSkgL1xuICAgICAgICAoaS5jb250ZW50SGVpZ2h0IC0gaS5jb250YWluZXJIZWlnaHQpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBpLnNjcm9sbGJhcllBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpLnNjcm9sbGJhclhMZWZ0ID49IGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoKSB7XG4gICAgaS5zY3JvbGxiYXJYTGVmdCA9IGkucmFpbFhXaWR0aCAtIGkuc2Nyb2xsYmFyWFdpZHRoO1xuICB9XG4gIGlmIChpLnNjcm9sbGJhcllUb3AgPj0gaS5yYWlsWUhlaWdodCAtIGkuc2Nyb2xsYmFyWUhlaWdodCkge1xuICAgIGkuc2Nyb2xsYmFyWVRvcCA9IGkucmFpbFlIZWlnaHQgLSBpLnNjcm9sbGJhcllIZWlnaHQ7XG4gIH1cblxuICB1cGRhdGVDc3MoZWxlbWVudCwgaSk7XG5cbiAgaWYgKGkuc2Nyb2xsYmFyWEFjdGl2ZSkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbHMuc3RhdGUuYWN0aXZlKCd4JykpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbHMuc3RhdGUuYWN0aXZlKCd4JykpO1xuICAgIGkuc2Nyb2xsYmFyWFdpZHRoID0gMDtcbiAgICBpLnNjcm9sbGJhclhMZWZ0ID0gMDtcbiAgICBlbGVtZW50LnNjcm9sbExlZnQgPSBpLmlzUnRsID09PSB0cnVlID8gaS5jb250ZW50V2lkdGggOiAwO1xuICB9XG4gIGlmIChpLnNjcm9sbGJhcllBY3RpdmUpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xzLnN0YXRlLmFjdGl2ZSgneScpKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xzLnN0YXRlLmFjdGl2ZSgneScpKTtcbiAgICBpLnNjcm9sbGJhcllIZWlnaHQgPSAwO1xuICAgIGkuc2Nyb2xsYmFyWVRvcCA9IDA7XG4gICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRodW1iU2l6ZShpLCB0aHVtYlNpemUpIHtcbiAgaWYgKGkuc2V0dGluZ3MubWluU2Nyb2xsYmFyTGVuZ3RoKSB7XG4gICAgdGh1bWJTaXplID0gTWF0aC5tYXgodGh1bWJTaXplLCBpLnNldHRpbmdzLm1pblNjcm9sbGJhckxlbmd0aCk7XG4gIH1cbiAgaWYgKGkuc2V0dGluZ3MubWF4U2Nyb2xsYmFyTGVuZ3RoKSB7XG4gICAgdGh1bWJTaXplID0gTWF0aC5taW4odGh1bWJTaXplLCBpLnNldHRpbmdzLm1heFNjcm9sbGJhckxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIHRodW1iU2l6ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ3NzKGVsZW1lbnQsIGkpIHtcbiAgdmFyIHhSYWlsT2Zmc2V0ID0geyB3aWR0aDogaS5yYWlsWFdpZHRoIH07XG4gIHZhciByb3VuZGVkU2Nyb2xsVG9wID0gTWF0aC5mbG9vcihlbGVtZW50LnNjcm9sbFRvcCk7XG5cbiAgaWYgKGkuaXNSdGwpIHtcbiAgICB4UmFpbE9mZnNldC5sZWZ0ID1cbiAgICAgIGkubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ICtcbiAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCArXG4gICAgICBpLmNvbnRhaW5lcldpZHRoIC1cbiAgICAgIGkuY29udGVudFdpZHRoO1xuICB9IGVsc2Uge1xuICAgIHhSYWlsT2Zmc2V0LmxlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7XG4gIH1cbiAgaWYgKGkuaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20pIHtcbiAgICB4UmFpbE9mZnNldC5ib3R0b20gPSBpLnNjcm9sbGJhclhCb3R0b20gLSByb3VuZGVkU2Nyb2xsVG9wO1xuICB9IGVsc2Uge1xuICAgIHhSYWlsT2Zmc2V0LnRvcCA9IGkuc2Nyb2xsYmFyWFRvcCArIHJvdW5kZWRTY3JvbGxUb3A7XG4gIH1cbiAgc2V0KGkuc2Nyb2xsYmFyWFJhaWwsIHhSYWlsT2Zmc2V0KTtcblxuICB2YXIgeVJhaWxPZmZzZXQgPSB7IHRvcDogcm91bmRlZFNjcm9sbFRvcCwgaGVpZ2h0OiBpLnJhaWxZSGVpZ2h0IH07XG4gIGlmIChpLmlzU2Nyb2xsYmFyWVVzaW5nUmlnaHQpIHtcbiAgICBpZiAoaS5pc1J0bCkge1xuICAgICAgeVJhaWxPZmZzZXQucmlnaHQgPVxuICAgICAgICBpLmNvbnRlbnRXaWR0aCAtXG4gICAgICAgIChpLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCArIGVsZW1lbnQuc2Nyb2xsTGVmdCkgLVxuICAgICAgICBpLnNjcm9sbGJhcllSaWdodCAtXG4gICAgICAgIGkuc2Nyb2xsYmFyWU91dGVyV2lkdGggLVxuICAgICAgICA5O1xuICAgIH0gZWxzZSB7XG4gICAgICB5UmFpbE9mZnNldC5yaWdodCA9IGkuc2Nyb2xsYmFyWVJpZ2h0IC0gZWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaS5pc1J0bCkge1xuICAgICAgeVJhaWxPZmZzZXQubGVmdCA9XG4gICAgICAgIGkubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ICtcbiAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ICtcbiAgICAgICAgaS5jb250YWluZXJXaWR0aCAqIDIgLVxuICAgICAgICBpLmNvbnRlbnRXaWR0aCAtXG4gICAgICAgIGkuc2Nyb2xsYmFyWUxlZnQgLVxuICAgICAgICBpLnNjcm9sbGJhcllPdXRlcldpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB5UmFpbE9mZnNldC5sZWZ0ID0gaS5zY3JvbGxiYXJZTGVmdCArIGVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH1cbiAgc2V0KGkuc2Nyb2xsYmFyWVJhaWwsIHlSYWlsT2Zmc2V0KTtcblxuICBzZXQoaS5zY3JvbGxiYXJYLCB7XG4gICAgbGVmdDogaS5zY3JvbGxiYXJYTGVmdCxcbiAgICB3aWR0aDogaS5zY3JvbGxiYXJYV2lkdGggLSBpLnJhaWxCb3JkZXJYV2lkdGgsXG4gIH0pO1xuICBzZXQoaS5zY3JvbGxiYXJZLCB7XG4gICAgdG9wOiBpLnNjcm9sbGJhcllUb3AsXG4gICAgaGVpZ2h0OiBpLnNjcm9sbGJhcllIZWlnaHQgLSBpLnJhaWxCb3JkZXJZV2lkdGgsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjbGlja1JhaWwoaSkge1xuICB2YXIgZWxlbWVudCA9IGkuZWxlbWVudDtcblxuICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJZLCAnbW91c2Vkb3duJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pO1xuICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJZUmFpbCwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHBvc2l0aW9uVG9wID1cbiAgICAgIGUucGFnZVkgLVxuICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IC1cbiAgICAgIGkuc2Nyb2xsYmFyWVJhaWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgIHZhciBkaXJlY3Rpb24gPSBwb3NpdGlvblRvcCA+IGkuc2Nyb2xsYmFyWVRvcCA/IDEgOiAtMTtcblxuICAgIGkuZWxlbWVudC5zY3JvbGxUb3AgKz0gZGlyZWN0aW9uICogaS5jb250YWluZXJIZWlnaHQ7XG4gICAgdXBkYXRlR2VvbWV0cnkoaSk7XG5cbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9KTtcblxuICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJYLCAnbW91c2Vkb3duJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pO1xuICBpLmV2ZW50LmJpbmQoaS5zY3JvbGxiYXJYUmFpbCwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHBvc2l0aW9uTGVmdCA9XG4gICAgICBlLnBhZ2VYIC1cbiAgICAgIHdpbmRvdy5wYWdlWE9mZnNldCAtXG4gICAgICBpLnNjcm9sbGJhclhSYWlsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgdmFyIGRpcmVjdGlvbiA9IHBvc2l0aW9uTGVmdCA+IGkuc2Nyb2xsYmFyWExlZnQgPyAxIDogLTE7XG5cbiAgICBpLmVsZW1lbnQuc2Nyb2xsTGVmdCArPSBkaXJlY3Rpb24gKiBpLmNvbnRhaW5lcldpZHRoO1xuICAgIHVwZGF0ZUdlb21ldHJ5KGkpO1xuXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGRyYWdUaHVtYihpKSB7XG4gIGJpbmRNb3VzZVNjcm9sbEhhbmRsZXIoaSwgW1xuICAgICdjb250YWluZXJXaWR0aCcsXG4gICAgJ2NvbnRlbnRXaWR0aCcsXG4gICAgJ3BhZ2VYJyxcbiAgICAncmFpbFhXaWR0aCcsXG4gICAgJ3Njcm9sbGJhclgnLFxuICAgICdzY3JvbGxiYXJYV2lkdGgnLFxuICAgICdzY3JvbGxMZWZ0JyxcbiAgICAneCcsXG4gICAgJ3Njcm9sbGJhclhSYWlsJyBdKTtcbiAgYmluZE1vdXNlU2Nyb2xsSGFuZGxlcihpLCBbXG4gICAgJ2NvbnRhaW5lckhlaWdodCcsXG4gICAgJ2NvbnRlbnRIZWlnaHQnLFxuICAgICdwYWdlWScsXG4gICAgJ3JhaWxZSGVpZ2h0JyxcbiAgICAnc2Nyb2xsYmFyWScsXG4gICAgJ3Njcm9sbGJhcllIZWlnaHQnLFxuICAgICdzY3JvbGxUb3AnLFxuICAgICd5JyxcbiAgICAnc2Nyb2xsYmFyWVJhaWwnIF0pO1xufVxuXG5mdW5jdGlvbiBiaW5kTW91c2VTY3JvbGxIYW5kbGVyKFxuICBpLFxuICByZWZcbikge1xuICB2YXIgY29udGFpbmVySGVpZ2h0ID0gcmVmWzBdO1xuICB2YXIgY29udGVudEhlaWdodCA9IHJlZlsxXTtcbiAgdmFyIHBhZ2VZID0gcmVmWzJdO1xuICB2YXIgcmFpbFlIZWlnaHQgPSByZWZbM107XG4gIHZhciBzY3JvbGxiYXJZID0gcmVmWzRdO1xuICB2YXIgc2Nyb2xsYmFyWUhlaWdodCA9IHJlZls1XTtcbiAgdmFyIHNjcm9sbFRvcCA9IHJlZls2XTtcbiAgdmFyIHkgPSByZWZbN107XG4gIHZhciBzY3JvbGxiYXJZUmFpbCA9IHJlZls4XTtcblxuICB2YXIgZWxlbWVudCA9IGkuZWxlbWVudDtcblxuICB2YXIgc3RhcnRpbmdTY3JvbGxUb3AgPSBudWxsO1xuICB2YXIgc3RhcnRpbmdNb3VzZVBhZ2VZID0gbnVsbDtcbiAgdmFyIHNjcm9sbEJ5ID0gbnVsbDtcblxuICBmdW5jdGlvbiBtb3VzZU1vdmVIYW5kbGVyKGUpIHtcbiAgICBpZiAoZS50b3VjaGVzICYmIGUudG91Y2hlc1swXSkge1xuICAgICAgZVtwYWdlWV0gPSBlLnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgfVxuICAgIGVsZW1lbnRbc2Nyb2xsVG9wXSA9XG4gICAgICBzdGFydGluZ1Njcm9sbFRvcCArIHNjcm9sbEJ5ICogKGVbcGFnZVldIC0gc3RhcnRpbmdNb3VzZVBhZ2VZKTtcbiAgICBhZGRTY3JvbGxpbmdDbGFzcyhpLCB5KTtcbiAgICB1cGRhdGVHZW9tZXRyeShpKTtcblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW91c2VVcEhhbmRsZXIoKSB7XG4gICAgcmVtb3ZlU2Nyb2xsaW5nQ2xhc3MoaSwgeSk7XG4gICAgaVtzY3JvbGxiYXJZUmFpbF0uY2xhc3NMaXN0LnJlbW92ZShjbHMuc3RhdGUuY2xpY2tpbmcpO1xuICAgIGkuZXZlbnQudW5iaW5kKGkub3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gYmluZE1vdmVzKGUsIHRvdWNoTW9kZSkge1xuICAgIHN0YXJ0aW5nU2Nyb2xsVG9wID0gZWxlbWVudFtzY3JvbGxUb3BdO1xuICAgIGlmICh0b3VjaE1vZGUgJiYgZS50b3VjaGVzKSB7XG4gICAgICBlW3BhZ2VZXSA9IGUudG91Y2hlc1swXS5wYWdlWTtcbiAgICB9XG4gICAgc3RhcnRpbmdNb3VzZVBhZ2VZID0gZVtwYWdlWV07XG4gICAgc2Nyb2xsQnkgPVxuICAgICAgKGlbY29udGVudEhlaWdodF0gLSBpW2NvbnRhaW5lckhlaWdodF0pIC9cbiAgICAgIChpW3JhaWxZSGVpZ2h0XSAtIGlbc2Nyb2xsYmFyWUhlaWdodF0pO1xuICAgIGlmICghdG91Y2hNb2RlKSB7XG4gICAgICBpLmV2ZW50LmJpbmQoaS5vd25lckRvY3VtZW50LCAnbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gICAgICBpLmV2ZW50Lm9uY2UoaS5vd25lckRvY3VtZW50LCAnbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaS5ldmVudC5iaW5kKGkub3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIGlbc2Nyb2xsYmFyWVJhaWxdLmNsYXNzTGlzdC5hZGQoY2xzLnN0YXRlLmNsaWNraW5nKTtcblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBpLmV2ZW50LmJpbmQoaVtzY3JvbGxiYXJZXSwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgYmluZE1vdmVzKGUpO1xuICB9KTtcbiAgaS5ldmVudC5iaW5kKGlbc2Nyb2xsYmFyWV0sICd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKGUpIHtcbiAgICBiaW5kTW92ZXMoZSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBrZXlib2FyZChpKSB7XG4gIHZhciBlbGVtZW50ID0gaS5lbGVtZW50O1xuXG4gIHZhciBlbGVtZW50SG92ZXJlZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgJzpob3ZlcicpOyB9O1xuICB2YXIgc2Nyb2xsYmFyRm9jdXNlZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hdGNoZXMoaS5zY3JvbGxiYXJYLCAnOmZvY3VzJykgfHwgbWF0Y2hlcyhpLnNjcm9sbGJhclksICc6Zm9jdXMnKTsgfTtcblxuICBmdW5jdGlvbiBzaG91bGRQcmV2ZW50RGVmYXVsdChkZWx0YVgsIGRlbHRhWSkge1xuICAgIHZhciBzY3JvbGxUb3AgPSBNYXRoLmZsb29yKGVsZW1lbnQuc2Nyb2xsVG9wKTtcbiAgICBpZiAoZGVsdGFYID09PSAwKSB7XG4gICAgICBpZiAoIWkuc2Nyb2xsYmFyWUFjdGl2ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIChzY3JvbGxUb3AgPT09IDAgJiYgZGVsdGFZID4gMCkgfHxcbiAgICAgICAgKHNjcm9sbFRvcCA+PSBpLmNvbnRlbnRIZWlnaHQgLSBpLmNvbnRhaW5lckhlaWdodCAmJiBkZWx0YVkgPCAwKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAhaS5zZXR0aW5ncy53aGVlbFByb3BhZ2F0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzY3JvbGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIGlmIChkZWx0YVkgPT09IDApIHtcbiAgICAgIGlmICghaS5zY3JvbGxiYXJYQWN0aXZlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKHNjcm9sbExlZnQgPT09IDAgJiYgZGVsdGFYIDwgMCkgfHxcbiAgICAgICAgKHNjcm9sbExlZnQgPj0gaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoICYmIGRlbHRhWCA+IDApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuICFpLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb247XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaS5ldmVudC5iaW5kKGkub3duZXJEb2N1bWVudCwgJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgIGlmIChcbiAgICAgIChlLmlzRGVmYXVsdFByZXZlbnRlZCAmJiBlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB8fFxuICAgICAgZS5kZWZhdWx0UHJldmVudGVkXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFlbGVtZW50SG92ZXJlZCgpICYmICFzY3JvbGxiYXJGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcbiAgICAgID8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgOiBpLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ0lGUkFNRScpIHtcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBnbyBkZWVwZXIgaWYgZWxlbWVudCBpcyBhIHdlYmNvbXBvbmVudFxuICAgICAgICB3aGlsZSAoYWN0aXZlRWxlbWVudC5zaGFkb3dSb290KSB7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNFZGl0YWJsZShhY3RpdmVFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlbHRhWCA9IDA7XG4gICAgdmFyIGRlbHRhWSA9IDA7XG5cbiAgICBzd2l0Y2ggKGUud2hpY2gpIHtcbiAgICAgIGNhc2UgMzc6IC8vIGxlZnRcbiAgICAgICAgaWYgKGUubWV0YUtleSkge1xuICAgICAgICAgIGRlbHRhWCA9IC1pLmNvbnRlbnRXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChlLmFsdEtleSkge1xuICAgICAgICAgIGRlbHRhWCA9IC1pLmNvbnRhaW5lcldpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbHRhWCA9IC0zMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzg6IC8vIHVwXG4gICAgICAgIGlmIChlLm1ldGFLZXkpIHtcbiAgICAgICAgICBkZWx0YVkgPSBpLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5hbHRLZXkpIHtcbiAgICAgICAgICBkZWx0YVkgPSBpLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWx0YVkgPSAzMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6IC8vIHJpZ2h0XG4gICAgICAgIGlmIChlLm1ldGFLZXkpIHtcbiAgICAgICAgICBkZWx0YVggPSBpLmNvbnRlbnRXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChlLmFsdEtleSkge1xuICAgICAgICAgIGRlbHRhWCA9IGkuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsdGFYID0gMzA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQwOiAvLyBkb3duXG4gICAgICAgIGlmIChlLm1ldGFLZXkpIHtcbiAgICAgICAgICBkZWx0YVkgPSAtaS5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2UgaWYgKGUuYWx0S2V5KSB7XG4gICAgICAgICAgZGVsdGFZID0gLWkuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbHRhWSA9IC0zMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzI6IC8vIHNwYWNlIGJhclxuICAgICAgICBpZiAoZS5zaGlmdEtleSkge1xuICAgICAgICAgIGRlbHRhWSA9IGkuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbHRhWSA9IC1pLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzM6IC8vIHBhZ2UgdXBcbiAgICAgICAgZGVsdGFZID0gaS5jb250YWluZXJIZWlnaHQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzNDogLy8gcGFnZSBkb3duXG4gICAgICAgIGRlbHRhWSA9IC1pLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM2OiAvLyBob21lXG4gICAgICAgIGRlbHRhWSA9IGkuY29udGVudEhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM1OiAvLyBlbmRcbiAgICAgICAgZGVsdGFZID0gLWkuY29udGVudEhlaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGkuc2V0dGluZ3Muc3VwcHJlc3NTY3JvbGxYICYmIGRlbHRhWCAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaS5zZXR0aW5ncy5zdXBwcmVzc1Njcm9sbFkgJiYgZGVsdGFZICE9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zY3JvbGxUb3AgLT0gZGVsdGFZO1xuICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCArPSBkZWx0YVg7XG4gICAgdXBkYXRlR2VvbWV0cnkoaSk7XG5cbiAgICBpZiAoc2hvdWxkUHJldmVudERlZmF1bHQoZGVsdGFYLCBkZWx0YVkpKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gd2hlZWwoaSkge1xuICB2YXIgZWxlbWVudCA9IGkuZWxlbWVudDtcblxuICBmdW5jdGlvbiBzaG91bGRQcmV2ZW50RGVmYXVsdChkZWx0YVgsIGRlbHRhWSkge1xuICAgIHZhciByb3VuZGVkU2Nyb2xsVG9wID0gTWF0aC5mbG9vcihlbGVtZW50LnNjcm9sbFRvcCk7XG4gICAgdmFyIGlzVG9wID0gZWxlbWVudC5zY3JvbGxUb3AgPT09IDA7XG4gICAgdmFyIGlzQm90dG9tID1cbiAgICAgIHJvdW5kZWRTY3JvbGxUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCA9PT0gZWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgdmFyIGlzTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdCA9PT0gMDtcbiAgICB2YXIgaXNSaWdodCA9XG4gICAgICBlbGVtZW50LnNjcm9sbExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoID09PSBlbGVtZW50LnNjcm9sbFdpZHRoO1xuXG4gICAgdmFyIGhpdHNCb3VuZDtcblxuICAgIC8vIHBpY2sgYXhpcyB3aXRoIHByaW1hcnkgZGlyZWN0aW9uXG4gICAgaWYgKE1hdGguYWJzKGRlbHRhWSkgPiBNYXRoLmFicyhkZWx0YVgpKSB7XG4gICAgICBoaXRzQm91bmQgPSBpc1RvcCB8fCBpc0JvdHRvbTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGl0c0JvdW5kID0gaXNMZWZ0IHx8IGlzUmlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhpdHNCb3VuZCA/ICFpLnNldHRpbmdzLndoZWVsUHJvcGFnYXRpb24gOiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGVsdGFGcm9tRXZlbnQoZSkge1xuICAgIHZhciBkZWx0YVggPSBlLmRlbHRhWDtcbiAgICB2YXIgZGVsdGFZID0gLTEgKiBlLmRlbHRhWTtcblxuICAgIGlmICh0eXBlb2YgZGVsdGFYID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZGVsdGFZID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gT1MgWCBTYWZhcmlcbiAgICAgIGRlbHRhWCA9ICgtMSAqIGUud2hlZWxEZWx0YVgpIC8gNjtcbiAgICAgIGRlbHRhWSA9IGUud2hlZWxEZWx0YVkgLyA2O1xuICAgIH1cblxuICAgIGlmIChlLmRlbHRhTW9kZSAmJiBlLmRlbHRhTW9kZSA9PT0gMSkge1xuICAgICAgLy8gRmlyZWZveCBpbiBkZWx0YU1vZGUgMTogTGluZSBzY3JvbGxpbmdcbiAgICAgIGRlbHRhWCAqPSAxMDtcbiAgICAgIGRlbHRhWSAqPSAxMDtcbiAgICB9XG5cbiAgICBpZiAoZGVsdGFYICE9PSBkZWx0YVggJiYgZGVsdGFZICE9PSBkZWx0YVkgLyogTmFOIGNoZWNrcyAqLykge1xuICAgICAgLy8gSUUgaW4gc29tZSBtb3VzZSBkcml2ZXJzXG4gICAgICBkZWx0YVggPSAwO1xuICAgICAgZGVsdGFZID0gZS53aGVlbERlbHRhO1xuICAgIH1cblxuICAgIGlmIChlLnNoaWZ0S2V5KSB7XG4gICAgICAvLyByZXZlcnNlIGF4aXMgd2l0aCBzaGlmdCBrZXlcbiAgICAgIHJldHVybiBbLWRlbHRhWSwgLWRlbHRhWF07XG4gICAgfVxuICAgIHJldHVybiBbZGVsdGFYLCBkZWx0YVldO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkQmVDb25zdW1lZEJ5Q2hpbGQodGFyZ2V0LCBkZWx0YVgsIGRlbHRhWSkge1xuICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgPHNlbGVjdD4gaXNzdWUgaW4gRkYgYW5kIElFICM1NzFcbiAgICBpZiAoIWVudi5pc1dlYktpdCAmJiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NlbGVjdDpmb2N1cycpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBjdXJzb3IgPSB0YXJnZXQ7XG5cbiAgICB3aGlsZSAoY3Vyc29yICYmIGN1cnNvciAhPT0gZWxlbWVudCkge1xuICAgICAgaWYgKGN1cnNvci5jbGFzc0xpc3QuY29udGFpbnMoY2xzLmVsZW1lbnQuY29uc3VtaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0eWxlID0gZ2V0KGN1cnNvcik7XG5cbiAgICAgIC8vIGlmIGRlbHRhWSAmJiB2ZXJ0aWNhbCBzY3JvbGxhYmxlXG4gICAgICBpZiAoZGVsdGFZICYmIHN0eWxlLm92ZXJmbG93WS5tYXRjaCgvKHNjcm9sbHxhdXRvKS8pKSB7XG4gICAgICAgIHZhciBtYXhTY3JvbGxUb3AgPSBjdXJzb3Iuc2Nyb2xsSGVpZ2h0IC0gY3Vyc29yLmNsaWVudEhlaWdodDtcbiAgICAgICAgaWYgKG1heFNjcm9sbFRvcCA+IDApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY3Vyc29yLnNjcm9sbFRvcCA+IDAgJiYgZGVsdGFZIDwgMCkgfHxcbiAgICAgICAgICAgIChjdXJzb3Iuc2Nyb2xsVG9wIDwgbWF4U2Nyb2xsVG9wICYmIGRlbHRhWSA+IDApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGlmIGRlbHRhWCAmJiBob3Jpem9udGFsIHNjcm9sbGFibGVcbiAgICAgIGlmIChkZWx0YVggJiYgc3R5bGUub3ZlcmZsb3dYLm1hdGNoKC8oc2Nyb2xsfGF1dG8pLykpIHtcbiAgICAgICAgdmFyIG1heFNjcm9sbExlZnQgPSBjdXJzb3Iuc2Nyb2xsV2lkdGggLSBjdXJzb3IuY2xpZW50V2lkdGg7XG4gICAgICAgIGlmIChtYXhTY3JvbGxMZWZ0ID4gMCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChjdXJzb3Iuc2Nyb2xsTGVmdCA+IDAgJiYgZGVsdGFYIDwgMCkgfHxcbiAgICAgICAgICAgIChjdXJzb3Iuc2Nyb2xsTGVmdCA8IG1heFNjcm9sbExlZnQgJiYgZGVsdGFYID4gMClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjdXJzb3IgPSBjdXJzb3IucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZXdoZWVsSGFuZGxlcihlKSB7XG4gICAgdmFyIHJlZiA9IGdldERlbHRhRnJvbUV2ZW50KGUpO1xuICAgIHZhciBkZWx0YVggPSByZWZbMF07XG4gICAgdmFyIGRlbHRhWSA9IHJlZlsxXTtcblxuICAgIGlmIChzaG91bGRCZUNvbnN1bWVkQnlDaGlsZChlLnRhcmdldCwgZGVsdGFYLCBkZWx0YVkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZFByZXZlbnQgPSBmYWxzZTtcbiAgICBpZiAoIWkuc2V0dGluZ3MudXNlQm90aFdoZWVsQXhlcykge1xuICAgICAgLy8gZGVsdGFYIHdpbGwgb25seSBiZSB1c2VkIGZvciBob3Jpem9udGFsIHNjcm9sbGluZyBhbmQgZGVsdGFZIHdpbGxcbiAgICAgIC8vIG9ubHkgYmUgdXNlZCBmb3IgdmVydGljYWwgc2Nyb2xsaW5nIC0gdGhpcyBpcyB0aGUgZGVmYXVsdFxuICAgICAgZWxlbWVudC5zY3JvbGxUb3AgLT0gZGVsdGFZICogaS5zZXR0aW5ncy53aGVlbFNwZWVkO1xuICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ICs9IGRlbHRhWCAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZDtcbiAgICB9IGVsc2UgaWYgKGkuc2Nyb2xsYmFyWUFjdGl2ZSAmJiAhaS5zY3JvbGxiYXJYQWN0aXZlKSB7XG4gICAgICAvLyBvbmx5IHZlcnRpY2FsIHNjcm9sbGJhciBpcyBhY3RpdmUgYW5kIHVzZUJvdGhXaGVlbEF4ZXMgb3B0aW9uIGlzXG4gICAgICAvLyBhY3RpdmUsIHNvIGxldCdzIHNjcm9sbCB2ZXJ0aWNhbCBiYXIgdXNpbmcgYm90aCBtb3VzZSB3aGVlbCBheGVzXG4gICAgICBpZiAoZGVsdGFZKSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wIC09IGRlbHRhWSAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wICs9IGRlbHRhWCAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZDtcbiAgICAgIH1cbiAgICAgIHNob3VsZFByZXZlbnQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaS5zY3JvbGxiYXJYQWN0aXZlICYmICFpLnNjcm9sbGJhcllBY3RpdmUpIHtcbiAgICAgIC8vIHVzZUJvdGhXaGVlbEF4ZXMgYW5kIG9ubHkgaG9yaXpvbnRhbCBiYXIgaXMgYWN0aXZlLCBzbyB1c2UgYm90aFxuICAgICAgLy8gd2hlZWwgYXhlcyBmb3IgaG9yaXpvbnRhbCBiYXJcbiAgICAgIGlmIChkZWx0YVgpIHtcbiAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ICs9IGRlbHRhWCAqIGkuc2V0dGluZ3Mud2hlZWxTcGVlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCAtPSBkZWx0YVkgKiBpLnNldHRpbmdzLndoZWVsU3BlZWQ7XG4gICAgICB9XG4gICAgICBzaG91bGRQcmV2ZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVHZW9tZXRyeShpKTtcblxuICAgIHNob3VsZFByZXZlbnQgPSBzaG91bGRQcmV2ZW50IHx8IHNob3VsZFByZXZlbnREZWZhdWx0KGRlbHRhWCwgZGVsdGFZKTtcbiAgICBpZiAoc2hvdWxkUHJldmVudCAmJiAhZS5jdHJsS2V5KSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygd2luZG93Lm9ud2hlZWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICd3aGVlbCcsIG1vdXNld2hlZWxIYW5kbGVyKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93Lm9ubW91c2V3aGVlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ21vdXNld2hlZWwnLCBtb3VzZXdoZWVsSGFuZGxlcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG91Y2goaSkge1xuICBpZiAoIWVudi5zdXBwb3J0c1RvdWNoICYmICFlbnYuc3VwcG9ydHNJZVBvaW50ZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZWxlbWVudCA9IGkuZWxlbWVudDtcblxuICBmdW5jdGlvbiBzaG91bGRQcmV2ZW50KGRlbHRhWCwgZGVsdGFZKSB7XG4gICAgdmFyIHNjcm9sbFRvcCA9IE1hdGguZmxvb3IoZWxlbWVudC5zY3JvbGxUb3ApO1xuICAgIHZhciBzY3JvbGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIHZhciBtYWduaXR1ZGVYID0gTWF0aC5hYnMoZGVsdGFYKTtcbiAgICB2YXIgbWFnbml0dWRlWSA9IE1hdGguYWJzKGRlbHRhWSk7XG5cbiAgICBpZiAobWFnbml0dWRlWSA+IG1hZ25pdHVkZVgpIHtcbiAgICAgIC8vIHVzZXIgaXMgcGVyaGFwcyB0cnlpbmcgdG8gc3dpcGUgdXAvZG93biB0aGUgcGFnZVxuXG4gICAgICBpZiAoXG4gICAgICAgIChkZWx0YVkgPCAwICYmIHNjcm9sbFRvcCA9PT0gaS5jb250ZW50SGVpZ2h0IC0gaS5jb250YWluZXJIZWlnaHQpIHx8XG4gICAgICAgIChkZWx0YVkgPiAwICYmIHNjcm9sbFRvcCA9PT0gMClcbiAgICAgICkge1xuICAgICAgICAvLyBzZXQgcHJldmVudCBmb3IgbW9iaWxlIENocm9tZSByZWZyZXNoXG4gICAgICAgIHJldHVybiB3aW5kb3cuc2Nyb2xsWSA9PT0gMCAmJiBkZWx0YVkgPiAwICYmIGVudi5pc0Nocm9tZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1hZ25pdHVkZVggPiBtYWduaXR1ZGVZKSB7XG4gICAgICAvLyB1c2VyIGlzIHBlcmhhcHMgdHJ5aW5nIHRvIHN3aXBlIGxlZnQvcmlnaHQgYWNyb3NzIHRoZSBwYWdlXG5cbiAgICAgIGlmIChcbiAgICAgICAgKGRlbHRhWCA8IDAgJiYgc2Nyb2xsTGVmdCA9PT0gaS5jb250ZW50V2lkdGggLSBpLmNvbnRhaW5lcldpZHRoKSB8fFxuICAgICAgICAoZGVsdGFYID4gMCAmJiBzY3JvbGxMZWZ0ID09PSAwKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHlUb3VjaE1vdmUoZGlmZmVyZW5jZVgsIGRpZmZlcmVuY2VZKSB7XG4gICAgZWxlbWVudC5zY3JvbGxUb3AgLT0gZGlmZmVyZW5jZVk7XG4gICAgZWxlbWVudC5zY3JvbGxMZWZ0IC09IGRpZmZlcmVuY2VYO1xuXG4gICAgdXBkYXRlR2VvbWV0cnkoaSk7XG4gIH1cblxuICB2YXIgc3RhcnRPZmZzZXQgPSB7fTtcbiAgdmFyIHN0YXJ0VGltZSA9IDA7XG4gIHZhciBzcGVlZCA9IHt9O1xuICB2YXIgZWFzaW5nTG9vcCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gZ2V0VG91Y2goZSkge1xuICAgIGlmIChlLnRhcmdldFRvdWNoZXMpIHtcbiAgICAgIHJldHVybiBlLnRhcmdldFRvdWNoZXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1heWJlIElFIHBvaW50ZXJcbiAgICAgIHJldHVybiBlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZEhhbmRsZShlKSB7XG4gICAgaWYgKGUucG9pbnRlclR5cGUgJiYgZS5wb2ludGVyVHlwZSA9PT0gJ3BlbicgJiYgZS5idXR0b25zID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChlLnRhcmdldFRvdWNoZXMgJiYgZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGUucG9pbnRlclR5cGUgJiZcbiAgICAgIGUucG9pbnRlclR5cGUgIT09ICdtb3VzZScgJiZcbiAgICAgIGUucG9pbnRlclR5cGUgIT09IGUuTVNQT0lOVEVSX1RZUEVfTU9VU0VcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaFN0YXJ0KGUpIHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZShlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0b3VjaCA9IGdldFRvdWNoKGUpO1xuXG4gICAgc3RhcnRPZmZzZXQucGFnZVggPSB0b3VjaC5wYWdlWDtcbiAgICBzdGFydE9mZnNldC5wYWdlWSA9IHRvdWNoLnBhZ2VZO1xuXG4gICAgc3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICBpZiAoZWFzaW5nTG9vcCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChlYXNpbmdMb29wKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRCZUNvbnN1bWVkQnlDaGlsZCh0YXJnZXQsIGRlbHRhWCwgZGVsdGFZKSB7XG4gICAgaWYgKCFlbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgY3Vyc29yID0gdGFyZ2V0O1xuXG4gICAgd2hpbGUgKGN1cnNvciAmJiBjdXJzb3IgIT09IGVsZW1lbnQpIHtcbiAgICAgIGlmIChjdXJzb3IuY2xhc3NMaXN0LmNvbnRhaW5zKGNscy5lbGVtZW50LmNvbnN1bWluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdHlsZSA9IGdldChjdXJzb3IpO1xuXG4gICAgICAvLyBpZiBkZWx0YVkgJiYgdmVydGljYWwgc2Nyb2xsYWJsZVxuICAgICAgaWYgKGRlbHRhWSAmJiBzdHlsZS5vdmVyZmxvd1kubWF0Y2goLyhzY3JvbGx8YXV0bykvKSkge1xuICAgICAgICB2YXIgbWF4U2Nyb2xsVG9wID0gY3Vyc29yLnNjcm9sbEhlaWdodCAtIGN1cnNvci5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGlmIChtYXhTY3JvbGxUb3AgPiAwKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGN1cnNvci5zY3JvbGxUb3AgPiAwICYmIGRlbHRhWSA8IDApIHx8XG4gICAgICAgICAgICAoY3Vyc29yLnNjcm9sbFRvcCA8IG1heFNjcm9sbFRvcCAmJiBkZWx0YVkgPiAwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBpZiBkZWx0YVggJiYgaG9yaXpvbnRhbCBzY3JvbGxhYmxlXG4gICAgICBpZiAoZGVsdGFYICYmIHN0eWxlLm92ZXJmbG93WC5tYXRjaCgvKHNjcm9sbHxhdXRvKS8pKSB7XG4gICAgICAgIHZhciBtYXhTY3JvbGxMZWZ0ID0gY3Vyc29yLnNjcm9sbFdpZHRoIC0gY3Vyc29yLmNsaWVudFdpZHRoO1xuICAgICAgICBpZiAobWF4U2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY3Vyc29yLnNjcm9sbExlZnQgPiAwICYmIGRlbHRhWCA8IDApIHx8XG4gICAgICAgICAgICAoY3Vyc29yLnNjcm9sbExlZnQgPCBtYXhTY3JvbGxMZWZ0ICYmIGRlbHRhWCA+IDApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY3Vyc29yID0gY3Vyc29yLnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hNb3ZlKGUpIHtcbiAgICBpZiAoc2hvdWxkSGFuZGxlKGUpKSB7XG4gICAgICB2YXIgdG91Y2ggPSBnZXRUb3VjaChlKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB7IHBhZ2VYOiB0b3VjaC5wYWdlWCwgcGFnZVk6IHRvdWNoLnBhZ2VZIH07XG5cbiAgICAgIHZhciBkaWZmZXJlbmNlWCA9IGN1cnJlbnRPZmZzZXQucGFnZVggLSBzdGFydE9mZnNldC5wYWdlWDtcbiAgICAgIHZhciBkaWZmZXJlbmNlWSA9IGN1cnJlbnRPZmZzZXQucGFnZVkgLSBzdGFydE9mZnNldC5wYWdlWTtcblxuICAgICAgaWYgKHNob3VsZEJlQ29uc3VtZWRCeUNoaWxkKGUudGFyZ2V0LCBkaWZmZXJlbmNlWCwgZGlmZmVyZW5jZVkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBwbHlUb3VjaE1vdmUoZGlmZmVyZW5jZVgsIGRpZmZlcmVuY2VZKTtcbiAgICAgIHN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldDtcblxuICAgICAgdmFyIGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgIHZhciB0aW1lR2FwID0gY3VycmVudFRpbWUgLSBzdGFydFRpbWU7XG4gICAgICBpZiAodGltZUdhcCA+IDApIHtcbiAgICAgICAgc3BlZWQueCA9IGRpZmZlcmVuY2VYIC8gdGltZUdhcDtcbiAgICAgICAgc3BlZWQueSA9IGRpZmZlcmVuY2VZIC8gdGltZUdhcDtcbiAgICAgICAgc3RhcnRUaW1lID0gY3VycmVudFRpbWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRQcmV2ZW50KGRpZmZlcmVuY2VYLCBkaWZmZXJlbmNlWSkpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB0b3VjaEVuZCgpIHtcbiAgICBpZiAoaS5zZXR0aW5ncy5zd2lwZUVhc2luZykge1xuICAgICAgY2xlYXJJbnRlcnZhbChlYXNpbmdMb29wKTtcbiAgICAgIGVhc2luZ0xvb3AgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKGkuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoZWFzaW5nTG9vcCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzcGVlZC54ICYmICFzcGVlZC55KSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChlYXNpbmdMb29wKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoTWF0aC5hYnMoc3BlZWQueCkgPCAwLjAxICYmIE1hdGguYWJzKHNwZWVkLnkpIDwgMC4wMSkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoZWFzaW5nTG9vcCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHlUb3VjaE1vdmUoc3BlZWQueCAqIDMwLCBzcGVlZC55ICogMzApO1xuXG4gICAgICAgIHNwZWVkLnggKj0gMC44O1xuICAgICAgICBzcGVlZC55ICo9IDAuODtcbiAgICAgIH0sIDEwKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW52LnN1cHBvcnRzVG91Y2gpIHtcbiAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3RvdWNoc3RhcnQnLCB0b3VjaFN0YXJ0KTtcbiAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3RvdWNobW92ZScsIHRvdWNoTW92ZSk7XG4gICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICd0b3VjaGVuZCcsIHRvdWNoRW5kKTtcbiAgfSBlbHNlIGlmIChlbnYuc3VwcG9ydHNJZVBvaW50ZXIpIHtcbiAgICBpZiAod2luZG93LlBvaW50ZXJFdmVudCkge1xuICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdwb2ludGVyZG93bicsIHRvdWNoU3RhcnQpO1xuICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdwb2ludGVybW92ZScsIHRvdWNoTW92ZSk7XG4gICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ3BvaW50ZXJ1cCcsIHRvdWNoRW5kKTtcbiAgICB9IGVsc2UgaWYgKHdpbmRvdy5NU1BvaW50ZXJFdmVudCkge1xuICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdNU1BvaW50ZXJEb3duJywgdG91Y2hTdGFydCk7XG4gICAgICBpLmV2ZW50LmJpbmQoZWxlbWVudCwgJ01TUG9pbnRlck1vdmUnLCB0b3VjaE1vdmUpO1xuICAgICAgaS5ldmVudC5iaW5kKGVsZW1lbnQsICdNU1BvaW50ZXJVcCcsIHRvdWNoRW5kKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGRlZmF1bHRTZXR0aW5ncyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gIGhhbmRsZXJzOiBbJ2NsaWNrLXJhaWwnLCAnZHJhZy10aHVtYicsICdrZXlib2FyZCcsICd3aGVlbCcsICd0b3VjaCddLFxuICBtYXhTY3JvbGxiYXJMZW5ndGg6IG51bGwsXG4gIG1pblNjcm9sbGJhckxlbmd0aDogbnVsbCxcbiAgc2Nyb2xsaW5nVGhyZXNob2xkOiAxMDAwLFxuICBzY3JvbGxYTWFyZ2luT2Zmc2V0OiAwLFxuICBzY3JvbGxZTWFyZ2luT2Zmc2V0OiAwLFxuICBzdXBwcmVzc1Njcm9sbFg6IGZhbHNlLFxuICBzdXBwcmVzc1Njcm9sbFk6IGZhbHNlLFxuICBzd2lwZUVhc2luZzogdHJ1ZSxcbiAgdXNlQm90aFdoZWVsQXhlczogZmFsc2UsXG4gIHdoZWVsUHJvcGFnYXRpb246IHRydWUsXG4gIHdoZWVsU3BlZWQ6IDEsXG59KTsgfTtcblxudmFyIGhhbmRsZXJzID0ge1xuICAnY2xpY2stcmFpbCc6IGNsaWNrUmFpbCxcbiAgJ2RyYWctdGh1bWInOiBkcmFnVGh1bWIsXG4gIGtleWJvYXJkOiBrZXlib2FyZCxcbiAgd2hlZWw6IHdoZWVsLFxuICB0b3VjaDogdG91Y2gsXG59O1xuXG52YXIgUGVyZmVjdFNjcm9sbGJhciA9IGZ1bmN0aW9uIFBlcmZlY3RTY3JvbGxiYXIoZWxlbWVudCwgdXNlclNldHRpbmdzKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzO1xuICBpZiAoIHVzZXJTZXR0aW5ncyA9PT0gdm9pZCAwICkgdXNlclNldHRpbmdzID0ge307XG5cbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xuICB9XG5cbiAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50Lm5vZGVOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBlbGVtZW50IGlzIHNwZWNpZmllZCB0byBpbml0aWFsaXplIFBlcmZlY3RTY3JvbGxiYXInKTtcbiAgfVxuXG4gIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNscy5tYWluKTtcblxuICB0aGlzLnNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzKCk7XG4gIGZvciAodmFyIGtleSBpbiB1c2VyU2V0dGluZ3MpIHtcbiAgICB0aGlzLnNldHRpbmdzW2tleV0gPSB1c2VyU2V0dGluZ3Nba2V5XTtcbiAgfVxuXG4gIHRoaXMuY29udGFpbmVyV2lkdGggPSBudWxsO1xuICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IG51bGw7XG4gIHRoaXMuY29udGVudFdpZHRoID0gbnVsbDtcbiAgdGhpcy5jb250ZW50SGVpZ2h0ID0gbnVsbDtcblxuICB2YXIgZm9jdXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xzLnN0YXRlLmZvY3VzKTsgfTtcbiAgdmFyIGJsdXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xzLnN0YXRlLmZvY3VzKTsgfTtcblxuICB0aGlzLmlzUnRsID0gZ2V0KGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG4gIGlmICh0aGlzLmlzUnRsID09PSB0cnVlKSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNscy5ydGwpO1xuICB9XG4gIHRoaXMuaXNOZWdhdGl2ZVNjcm9sbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9yaWdpbmFsU2Nyb2xsTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICBlbGVtZW50LnNjcm9sbExlZnQgPSAtMTtcbiAgICByZXN1bHQgPSBlbGVtZW50LnNjcm9sbExlZnQgPCAwO1xuICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IG9yaWdpbmFsU2Nyb2xsTGVmdDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KSgpO1xuICB0aGlzLm5lZ2F0aXZlU2Nyb2xsQWRqdXN0bWVudCA9IHRoaXMuaXNOZWdhdGl2ZVNjcm9sbFxuICAgID8gZWxlbWVudC5zY3JvbGxXaWR0aCAtIGVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICA6IDA7XG4gIHRoaXMuZXZlbnQgPSBuZXcgRXZlbnRNYW5hZ2VyKCk7XG4gIHRoaXMub3duZXJEb2N1bWVudCA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcblxuICB0aGlzLnNjcm9sbGJhclhSYWlsID0gZGl2KGNscy5lbGVtZW50LnJhaWwoJ3gnKSk7XG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zY3JvbGxiYXJYUmFpbCk7XG4gIHRoaXMuc2Nyb2xsYmFyWCA9IGRpdihjbHMuZWxlbWVudC50aHVtYigneCcpKTtcbiAgdGhpcy5zY3JvbGxiYXJYUmFpbC5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGJhclgpO1xuICB0aGlzLnNjcm9sbGJhclguc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApO1xuICB0aGlzLmV2ZW50LmJpbmQodGhpcy5zY3JvbGxiYXJYLCAnZm9jdXMnLCBmb2N1cyk7XG4gIHRoaXMuZXZlbnQuYmluZCh0aGlzLnNjcm9sbGJhclgsICdibHVyJywgYmx1cik7XG4gIHRoaXMuc2Nyb2xsYmFyWEFjdGl2ZSA9IG51bGw7XG4gIHRoaXMuc2Nyb2xsYmFyWFdpZHRoID0gbnVsbDtcbiAgdGhpcy5zY3JvbGxiYXJYTGVmdCA9IG51bGw7XG4gIHZhciByYWlsWFN0eWxlID0gZ2V0KHRoaXMuc2Nyb2xsYmFyWFJhaWwpO1xuICB0aGlzLnNjcm9sbGJhclhCb3R0b20gPSBwYXJzZUludChyYWlsWFN0eWxlLmJvdHRvbSwgMTApO1xuICBpZiAoaXNOYU4odGhpcy5zY3JvbGxiYXJYQm90dG9tKSkge1xuICAgIHRoaXMuaXNTY3JvbGxiYXJYVXNpbmdCb3R0b20gPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbGJhclhUb3AgPSB0b0ludChyYWlsWFN0eWxlLnRvcCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5pc1Njcm9sbGJhclhVc2luZ0JvdHRvbSA9IHRydWU7XG4gIH1cbiAgdGhpcy5yYWlsQm9yZGVyWFdpZHRoID1cbiAgICB0b0ludChyYWlsWFN0eWxlLmJvcmRlckxlZnRXaWR0aCkgKyB0b0ludChyYWlsWFN0eWxlLmJvcmRlclJpZ2h0V2lkdGgpO1xuICAvLyBTZXQgcmFpbCB0byBkaXNwbGF5OmJsb2NrIHRvIGNhbGN1bGF0ZSBtYXJnaW5zXG4gIHNldCh0aGlzLnNjcm9sbGJhclhSYWlsLCB7IGRpc3BsYXk6ICdibG9jaycgfSk7XG4gIHRoaXMucmFpbFhNYXJnaW5XaWR0aCA9XG4gICAgdG9JbnQocmFpbFhTdHlsZS5tYXJnaW5MZWZ0KSArIHRvSW50KHJhaWxYU3R5bGUubWFyZ2luUmlnaHQpO1xuICBzZXQodGhpcy5zY3JvbGxiYXJYUmFpbCwgeyBkaXNwbGF5OiAnJyB9KTtcbiAgdGhpcy5yYWlsWFdpZHRoID0gbnVsbDtcbiAgdGhpcy5yYWlsWFJhdGlvID0gbnVsbDtcblxuICB0aGlzLnNjcm9sbGJhcllSYWlsID0gZGl2KGNscy5lbGVtZW50LnJhaWwoJ3knKSk7XG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zY3JvbGxiYXJZUmFpbCk7XG4gIHRoaXMuc2Nyb2xsYmFyWSA9IGRpdihjbHMuZWxlbWVudC50aHVtYigneScpKTtcbiAgdGhpcy5zY3JvbGxiYXJZUmFpbC5hcHBlbmRDaGlsZCh0aGlzLnNjcm9sbGJhclkpO1xuICB0aGlzLnNjcm9sbGJhclkuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApO1xuICB0aGlzLmV2ZW50LmJpbmQodGhpcy5zY3JvbGxiYXJZLCAnZm9jdXMnLCBmb2N1cyk7XG4gIHRoaXMuZXZlbnQuYmluZCh0aGlzLnNjcm9sbGJhclksICdibHVyJywgYmx1cik7XG4gIHRoaXMuc2Nyb2xsYmFyWUFjdGl2ZSA9IG51bGw7XG4gIHRoaXMuc2Nyb2xsYmFyWUhlaWdodCA9IG51bGw7XG4gIHRoaXMuc2Nyb2xsYmFyWVRvcCA9IG51bGw7XG4gIHZhciByYWlsWVN0eWxlID0gZ2V0KHRoaXMuc2Nyb2xsYmFyWVJhaWwpO1xuICB0aGlzLnNjcm9sbGJhcllSaWdodCA9IHBhcnNlSW50KHJhaWxZU3R5bGUucmlnaHQsIDEwKTtcbiAgaWYgKGlzTmFOKHRoaXMuc2Nyb2xsYmFyWVJpZ2h0KSkge1xuICAgIHRoaXMuaXNTY3JvbGxiYXJZVXNpbmdSaWdodCA9IGZhbHNlO1xuICAgIHRoaXMuc2Nyb2xsYmFyWUxlZnQgPSB0b0ludChyYWlsWVN0eWxlLmxlZnQpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNTY3JvbGxiYXJZVXNpbmdSaWdodCA9IHRydWU7XG4gIH1cbiAgdGhpcy5zY3JvbGxiYXJZT3V0ZXJXaWR0aCA9IHRoaXMuaXNSdGwgPyBvdXRlcldpZHRoKHRoaXMuc2Nyb2xsYmFyWSkgOiBudWxsO1xuICB0aGlzLnJhaWxCb3JkZXJZV2lkdGggPVxuICAgIHRvSW50KHJhaWxZU3R5bGUuYm9yZGVyVG9wV2lkdGgpICsgdG9JbnQocmFpbFlTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCk7XG4gIHNldCh0aGlzLnNjcm9sbGJhcllSYWlsLCB7IGRpc3BsYXk6ICdibG9jaycgfSk7XG4gIHRoaXMucmFpbFlNYXJnaW5IZWlnaHQgPVxuICAgIHRvSW50KHJhaWxZU3R5bGUubWFyZ2luVG9wKSArIHRvSW50KHJhaWxZU3R5bGUubWFyZ2luQm90dG9tKTtcbiAgc2V0KHRoaXMuc2Nyb2xsYmFyWVJhaWwsIHsgZGlzcGxheTogJycgfSk7XG4gIHRoaXMucmFpbFlIZWlnaHQgPSBudWxsO1xuICB0aGlzLnJhaWxZUmF0aW8gPSBudWxsO1xuXG4gIHRoaXMucmVhY2ggPSB7XG4gICAgeDpcbiAgICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA8PSAwXG4gICAgICAgID8gJ3N0YXJ0J1xuICAgICAgICA6IGVsZW1lbnQuc2Nyb2xsTGVmdCA+PSB0aGlzLmNvbnRlbnRXaWR0aCAtIHRoaXMuY29udGFpbmVyV2lkdGhcbiAgICAgICAgPyAnZW5kJ1xuICAgICAgICA6IG51bGwsXG4gICAgeTpcbiAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wIDw9IDBcbiAgICAgICAgPyAnc3RhcnQnXG4gICAgICAgIDogZWxlbWVudC5zY3JvbGxUb3AgPj0gdGhpcy5jb250ZW50SGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHRcbiAgICAgICAgPyAnZW5kJ1xuICAgICAgICA6IG51bGwsXG4gIH07XG5cbiAgdGhpcy5pc0FsaXZlID0gdHJ1ZTtcblxuICB0aGlzLnNldHRpbmdzLmhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24gKGhhbmRsZXJOYW1lKSB7IHJldHVybiBoYW5kbGVyc1toYW5kbGVyTmFtZV0odGhpcyQxKTsgfSk7XG5cbiAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gTWF0aC5mbG9vcihlbGVtZW50LnNjcm9sbFRvcCk7IC8vIGZvciBvblNjcm9sbCBvbmx5XG4gIHRoaXMubGFzdFNjcm9sbExlZnQgPSBlbGVtZW50LnNjcm9sbExlZnQ7IC8vIGZvciBvblNjcm9sbCBvbmx5XG4gIHRoaXMuZXZlbnQuYmluZCh0aGlzLmVsZW1lbnQsICdzY3JvbGwnLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcyQxLm9uU2Nyb2xsKGUpOyB9KTtcbiAgdXBkYXRlR2VvbWV0cnkodGhpcyk7XG59O1xuXG5QZXJmZWN0U2Nyb2xsYmFyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICBpZiAoIXRoaXMuaXNBbGl2ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFJlY2FsY3VhdGUgbmVnYXRpdmUgc2Nyb2xsTGVmdCBhZGp1c3RtZW50XG4gIHRoaXMubmVnYXRpdmVTY3JvbGxBZGp1c3RtZW50ID0gdGhpcy5pc05lZ2F0aXZlU2Nyb2xsXG4gICAgPyB0aGlzLmVsZW1lbnQuc2Nyb2xsV2lkdGggLSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICA6IDA7XG5cbiAgLy8gUmVjYWxjdWxhdGUgcmFpbCBtYXJnaW5zXG4gIHNldCh0aGlzLnNjcm9sbGJhclhSYWlsLCB7IGRpc3BsYXk6ICdibG9jaycgfSk7XG4gIHNldCh0aGlzLnNjcm9sbGJhcllSYWlsLCB7IGRpc3BsYXk6ICdibG9jaycgfSk7XG4gIHRoaXMucmFpbFhNYXJnaW5XaWR0aCA9XG4gICAgdG9JbnQoZ2V0KHRoaXMuc2Nyb2xsYmFyWFJhaWwpLm1hcmdpbkxlZnQpICtcbiAgICB0b0ludChnZXQodGhpcy5zY3JvbGxiYXJYUmFpbCkubWFyZ2luUmlnaHQpO1xuICB0aGlzLnJhaWxZTWFyZ2luSGVpZ2h0ID1cbiAgICB0b0ludChnZXQodGhpcy5zY3JvbGxiYXJZUmFpbCkubWFyZ2luVG9wKSArXG4gICAgdG9JbnQoZ2V0KHRoaXMuc2Nyb2xsYmFyWVJhaWwpLm1hcmdpbkJvdHRvbSk7XG5cbiAgLy8gSGlkZSBzY3JvbGxiYXJzIG5vdCB0byBhZmZlY3Qgc2Nyb2xsV2lkdGggYW5kIHNjcm9sbEhlaWdodFxuICBzZXQodGhpcy5zY3JvbGxiYXJYUmFpbCwgeyBkaXNwbGF5OiAnbm9uZScgfSk7XG4gIHNldCh0aGlzLnNjcm9sbGJhcllSYWlsLCB7IGRpc3BsYXk6ICdub25lJyB9KTtcblxuICB1cGRhdGVHZW9tZXRyeSh0aGlzKTtcblxuICBwcm9jZXNzU2Nyb2xsRGlmZih0aGlzLCAndG9wJywgMCwgZmFsc2UsIHRydWUpO1xuICBwcm9jZXNzU2Nyb2xsRGlmZih0aGlzLCAnbGVmdCcsIDAsIGZhbHNlLCB0cnVlKTtcblxuICBzZXQodGhpcy5zY3JvbGxiYXJYUmFpbCwgeyBkaXNwbGF5OiAnJyB9KTtcbiAgc2V0KHRoaXMuc2Nyb2xsYmFyWVJhaWwsIHsgZGlzcGxheTogJycgfSk7XG59O1xuXG5QZXJmZWN0U2Nyb2xsYmFyLnByb3RvdHlwZS5vblNjcm9sbCA9IGZ1bmN0aW9uIG9uU2Nyb2xsIChlKSB7XG4gIGlmICghdGhpcy5pc0FsaXZlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdXBkYXRlR2VvbWV0cnkodGhpcyk7XG4gIHByb2Nlc3NTY3JvbGxEaWZmKHRoaXMsICd0b3AnLCB0aGlzLmVsZW1lbnQuc2Nyb2xsVG9wIC0gdGhpcy5sYXN0U2Nyb2xsVG9wKTtcbiAgcHJvY2Vzc1Njcm9sbERpZmYoXG4gICAgdGhpcyxcbiAgICAnbGVmdCcsXG4gICAgdGhpcy5lbGVtZW50LnNjcm9sbExlZnQgLSB0aGlzLmxhc3RTY3JvbGxMZWZ0XG4gICk7XG5cbiAgdGhpcy5sYXN0U2Nyb2xsVG9wID0gTWF0aC5mbG9vcih0aGlzLmVsZW1lbnQuc2Nyb2xsVG9wKTtcbiAgdGhpcy5sYXN0U2Nyb2xsTGVmdCA9IHRoaXMuZWxlbWVudC5zY3JvbGxMZWZ0O1xufTtcblxuUGVyZmVjdFNjcm9sbGJhci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIGRlc3Ryb3kgKCkge1xuICBpZiAoIXRoaXMuaXNBbGl2ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuZXZlbnQudW5iaW5kQWxsKCk7XG4gIHJlbW92ZSh0aGlzLnNjcm9sbGJhclgpO1xuICByZW1vdmUodGhpcy5zY3JvbGxiYXJZKTtcbiAgcmVtb3ZlKHRoaXMuc2Nyb2xsYmFyWFJhaWwpO1xuICByZW1vdmUodGhpcy5zY3JvbGxiYXJZUmFpbCk7XG4gIHRoaXMucmVtb3ZlUHNDbGFzc2VzKCk7XG5cbiAgLy8gdW5zZXQgZWxlbWVudHNcbiAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgdGhpcy5zY3JvbGxiYXJYID0gbnVsbDtcbiAgdGhpcy5zY3JvbGxiYXJZID0gbnVsbDtcbiAgdGhpcy5zY3JvbGxiYXJYUmFpbCA9IG51bGw7XG4gIHRoaXMuc2Nyb2xsYmFyWVJhaWwgPSBudWxsO1xuXG4gIHRoaXMuaXNBbGl2ZSA9IGZhbHNlO1xufTtcblxuUGVyZmVjdFNjcm9sbGJhci5wcm90b3R5cGUucmVtb3ZlUHNDbGFzc2VzID0gZnVuY3Rpb24gcmVtb3ZlUHNDbGFzc2VzICgpIHtcbiAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9IHRoaXMuZWxlbWVudC5jbGFzc05hbWVcbiAgICAuc3BsaXQoJyAnKVxuICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuICFuYW1lLm1hdGNoKC9ecHMoWy1fXS4rfCkkLyk7IH0pXG4gICAgLmpvaW4oJyAnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFBlcmZlY3RTY3JvbGxiYXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wZXJmZWN0LXNjcm9sbGJhci5lc20uanMubWFwXG4iLCIhZnVuY3Rpb24obil7dmFyIGk9e307ZnVuY3Rpb24gcihlKXtpZihpW2VdKXJldHVybiBpW2VdLmV4cG9ydHM7dmFyIHQ9aVtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh0LmV4cG9ydHMsdCx0LmV4cG9ydHMsciksdC5sPSEwLHQuZXhwb3J0c31yLm09bixyLmM9aSxyLmQ9ZnVuY3Rpb24oZSx0LG4pe3IubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpufSl9LHIucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxyLnQ9ZnVuY3Rpb24odCxlKXtpZigxJmUmJih0PXIodCkpLDgmZSlyZXR1cm4gdDtpZig0JmUmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZihyLnIobiksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pLDImZSYmXCJzdHJpbmdcIiE9dHlwZW9mIHQpZm9yKHZhciBpIGluIHQpci5kKG4saSxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0uYmluZChudWxsLGkpKTtyZXR1cm4gbn0sci5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQodCxcImFcIix0KSx0fSxyLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LHIucD1cIlwiLHIoci5zPTYpfShbZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbihlKXt0LmV4cG9ydHM9ZS5qUXVlcnk9big4KX0pLmNhbGwodGhpcyxuKDEpKX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX12YXIgaT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtpPWl8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7XCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6bih3aW5kb3cpKSYmKGk9d2luZG93KX1lLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihzKXt2YXIgYT1uKDUpO3QuYT1mdW5jdGlvbigpe3MoXCIuY3VzdG9tLWZpbGUtaW5wdXRcIikub24oXCJjaGFuZ2VcIixmdW5jdGlvbigpe3ZhciBlLHQsbixpLHI9cyh0aGlzKSxvPXJbMF0uZmlsZXM7ci5uZXh0KFwibGFiZWxcIikudGV4dCgoZT1vLHQ9ci5kYXRhKFwibXVsdGlwbGVGaWxlc1RleHRcIiksbj1yLmF0dHIoXCJkYXRhLWxvY2FsZVwiKSwxPT09KGk9ZS5sZW5ndGgpP2VbMF0ubmFtZToobmV3IGEuYSkudHJhbnNDaG9pY2UodCxpLHtjb3VudDppfSxuKSkpfSl9fSkuY2FsbCh0aGlzLG4oMCkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZnVuY3Rpb24oaSl7ZnVuY3Rpb24gZSgpe3ZhciBlPWMudmFsdWUucmVwbGFjZSgvWy4sXS9nLFwiLlwiKTtmPXBhcnNlSW50KGUsMTApfXZhciByPU51bWJlcihpLmRhdGFzZXQubWluKSxvPU51bWJlcihpLmRhdGFzZXQubWF4KSxzPWkuZGF0YXNldC5sYWJlbE1pbixhPWkuZGF0YXNldC5sYWJlbE1heCxsPWkuZGF0YXNldC5sYWJlbE5hbix0PWkucXVlcnlTZWxlY3RvcihcIi5wcy1udW1iZXItaW5jcmVtZW50XCIpLG49aS5xdWVyeVNlbGVjdG9yKFwiLnBzLW51bWJlci1kZWNyZW1lbnRcIiksYz1pLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSx1PWkucXVlcnlTZWxlY3RvcihcIi5pbnZhbGlkLWZlZWRiYWNrXCIpLGY9Yy52YWx1ZTtlKCk7ZnVuY3Rpb24gZCgpe3ZhciBlPW88Zix0PWY8cixuPU51bWJlci5pc05hTihmKTtyZXR1cm4gZXx8dHx8bj8odS5jbGFzc0xpc3QuY29udGFpbnMoXCJzaG93XCIpfHxjLmNsYXNzTGlzdC5jb250YWlucyhcImlzLWludmFsaWRcIil8fCh1LmNsYXNzTGlzdC5hZGQoXCJzaG93XCIpLGkuY2xhc3NMaXN0LmFkZChcImhhcy1kYW5nZXJcIiksYy5jbGFzc0xpc3QuYWRkKFwiaXMtaW52YWxpZFwiKSksdS5pbm5lckhUTUw9bj9sOlwiXCIuY29uY2F0KGU/YTpzLFwiIFwiKS5jb25jYXQoZT9vOnIsXCIuXCIpLCExKToodS5jbGFzc0xpc3QucmVtb3ZlKFwic2hvd1wiKSxjLmNsYXNzTGlzdC5yZW1vdmUoXCJpcy1pbnZhbGlkXCIpLGkuY2xhc3NMaXN0LnJlbW92ZShcImhhcy1kYW5nZXJcIiksITApfWZ1bmN0aW9uIGgoZSl7TnVtYmVyLmlzTmFOKGYpP2Y9MDplP2YrPTE6LS1mLGMudmFsdWU9ZixkKCl9dCYmbiYmKHQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZnVuY3Rpb24oKXtoKCEwKX0pLG4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZnVuY3Rpb24oKXtoKCExKX0pKSxjLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixmdW5jdGlvbigpe2UoKSxkKCl9KSxjLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLGZ1bmN0aW9uKCl7ZSgpLGQoKX0pLGMuYWRkRXZlbnRMaXN0ZW5lcihcImN1dFwiLGZ1bmN0aW9uKCl7ZSgpLGQoKX0pLGMuYWRkRXZlbnRMaXN0ZW5lcihcInBhc3RlXCIsZnVuY3Rpb24oKXtlKCksZCgpfSl9O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG8oZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG8oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbyhlLHQpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBvKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAsaT1uZXcgQXJyYXkodCk7bjx0O24rKylpW25dPWVbbl07cmV0dXJuIGl9dC5hPWZ1bmN0aW9uKGUpe3JldHVybiByKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gaShlKX0pfX0sZnVuY3Rpb24oZSxlZSx0KXtcInVzZSBzdHJpY3RcIjt0LnIoZWUpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQsbj1bXCJFZGdlXCIsXCJUcmlkZW50XCIsXCJGaXJlZm94XCJdLGk9MCxyPTA7cjxuLmxlbmd0aDtyKz0xKWlmKHQmJjA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihuW3JdKSl7aT0xO2JyZWFrfXZhciBvPXQmJndpbmRvdy5Qcm9taXNlP2Z1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLHdpbmRvdy5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7dD0hMSxlKCl9KSl9fTpmdW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dD0hMSxlKCl9LGkpKX19O2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJlwiW29iamVjdCBGdW5jdGlvbl1cIj09PXt9LnRvU3RyaW5nLmNhbGwoZSl9ZnVuY3Rpb24gYihlLHQpe2lmKDEhPT1lLm5vZGVUeXBlKXJldHVybltdO3ZhciBuPWdldENvbXB1dGVkU3R5bGUoZSxudWxsKTtyZXR1cm4gdD9uW3RdOm59ZnVuY3Rpb24gaChlKXtyZXR1cm5cIkhUTUxcIj09PWUubm9kZU5hbWU/ZTplLnBhcmVudE5vZGV8fGUuaG9zdH1mdW5jdGlvbiBnKGUpe2lmKCFlKXJldHVybiBkb2N1bWVudC5ib2R5O3N3aXRjaChlLm5vZGVOYW1lKXtjYXNlXCJIVE1MXCI6Y2FzZVwiQk9EWVwiOnJldHVybiBlLm93bmVyRG9jdW1lbnQuYm9keTtjYXNlXCIjZG9jdW1lbnRcIjpyZXR1cm4gZS5ib2R5fXZhciB0PWIoZSksbj10Lm92ZXJmbG93LGk9dC5vdmVyZmxvd1gscj10Lm92ZXJmbG93WTtyZXR1cm4vKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG4rcitpKT9lOmcoaChlKSl9dmFyIGE9e30sbT1mdW5jdGlvbihlKXt2YXIgdD0odD0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWU/ZTpcImFsbFwiKS50b1N0cmluZygpO2lmKGEuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGFbdF07c3dpdGNoKHQpe2Nhc2VcIjExXCI6YVt0XT0tMSE9PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIlRyaWRlbnRcIik7YnJlYWs7Y2FzZVwiMTBcIjphW3RdPS0xIT09bmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1TSUUgMTBcIik7YnJlYWs7Y2FzZVwiYWxsXCI6YVt0XT0tMSE9PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIlRyaWRlbnRcIil8fC0xIT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRVwiKX1yZXR1cm4gYS5hbGw9YS5hbGx8fE9iamVjdC5rZXlzKGEpLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGFbZV19KSxhW3RdfTtmdW5jdGlvbiB5KGUpe2lmKCFlKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciB0PW0oMTApP2RvY3VtZW50LmJvZHk6bnVsbCxuPWUub2Zmc2V0UGFyZW50O249PT10JiZlLm5leHRFbGVtZW50U2libGluZzspbj0oZT1lLm5leHRFbGVtZW50U2libGluZykub2Zmc2V0UGFyZW50O3ZhciBpPW4mJm4ubm9kZU5hbWU7cmV0dXJuIGkmJlwiQk9EWVwiIT09aSYmXCJIVE1MXCIhPT1pPy0xIT09W1wiVERcIixcIlRBQkxFXCJdLmluZGV4T2Yobi5ub2RlTmFtZSkmJlwic3RhdGljXCI9PT1iKG4sXCJwb3NpdGlvblwiKT95KG4pOm46ZT9lLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiB1KGUpe3JldHVybiBudWxsIT09ZS5wYXJlbnROb2RlP3UoZS5wYXJlbnROb2RlKTplfWZ1bmN0aW9uIHAoZSx0KXtpZighKGUmJmUubm9kZVR5cGUmJnQmJnQubm9kZVR5cGUpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIG49ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyxpPW4/ZTp0LHI9bj90OmUsbz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO28uc2V0U3RhcnQoaSwwKSxvLnNldEVuZChyLDApO3ZhciBzLGEsbD1vLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO2lmKGUhPT1sJiZ0IT09bHx8aS5jb250YWlucyhyKSlyZXR1cm5cIkJPRFlcIj09PShhPShzPWwpLm5vZGVOYW1lKXx8XCJIVE1MXCIhPT1hJiZ5KHMuZmlyc3RFbGVtZW50Q2hpbGQpIT09cz95KGwpOmw7dmFyIGM9dShlKTtyZXR1cm4gYy5ob3N0P3AoYy5ob3N0LHQpOnAoZSx1KHQpLmhvc3QpfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj1cInRvcFwiPT09KDE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dD90OlwidG9wXCIpP1wic2Nyb2xsVG9wXCI6XCJzY3JvbGxMZWZ0XCIsaT1lLm5vZGVOYW1lO2lmKFwiQk9EWVwiIT09aSYmXCJIVE1MXCIhPT1pKXJldHVybiBlW25dO3ZhciByPWUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuKGUub3duZXJEb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50fHxyKVtuXX1mdW5jdGlvbiBmKGUsdCl7dmFyIG49XCJ4XCI9PT10P1wiTGVmdFwiOlwiVG9wXCIsaT1cIkxlZnRcIj09bj9cIlJpZ2h0XCI6XCJCb3R0b21cIjtyZXR1cm4gcGFyc2VGbG9hdChlW1wiYm9yZGVyXCIrbitcIldpZHRoXCJdLDEwKStwYXJzZUZsb2F0KGVbXCJib3JkZXJcIitpK1wiV2lkdGhcIl0sMTApfWZ1bmN0aW9uIGwoZSx0LG4saSl7cmV0dXJuIE1hdGgubWF4KHRbXCJvZmZzZXRcIitlXSx0W1wic2Nyb2xsXCIrZV0sbltcImNsaWVudFwiK2VdLG5bXCJvZmZzZXRcIitlXSxuW1wic2Nyb2xsXCIrZV0sbSgxMCk/bltcIm9mZnNldFwiK2VdK2lbXCJtYXJnaW5cIisoXCJIZWlnaHRcIj09PWU/XCJUb3BcIjpcIkxlZnRcIildK2lbXCJtYXJnaW5cIisoXCJIZWlnaHRcIj09PWU/XCJCb3R0b21cIjpcIlJpZ2h0XCIpXTowKX1mdW5jdGlvbiBfKCl7dmFyIGU9ZG9jdW1lbnQuYm9keSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPW0oMTApJiZnZXRDb21wdXRlZFN0eWxlKHQpO3JldHVybntoZWlnaHQ6bChcIkhlaWdodFwiLGUsdCxuKSx3aWR0aDpsKFwiV2lkdGhcIixlLHQsbil9fXZhciBjPWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0sZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJncoZS5wcm90b3R5cGUsdCksbiYmdyhlLG4pLGV9O2Z1bmN0aW9uIHcoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fWZ1bmN0aW9uIEUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciB4PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmKGVbaV09bltpXSl9cmV0dXJuIGV9O2Z1bmN0aW9uIEMoZSl7cmV0dXJuIHgoe30sZSx7cmlnaHQ6ZS5sZWZ0K2Uud2lkdGgsYm90dG9tOmUudG9wK2UuaGVpZ2h0fSl9ZnVuY3Rpb24gVChlKXt2YXIgdCxuLGk9e307dHJ5e20oMTApPyhpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD12KGUsXCJ0b3BcIiksbj12KGUsXCJsZWZ0XCIpLGkudG9wKz10LGkubGVmdCs9bixpLmJvdHRvbSs9dCxpLnJpZ2h0Kz1uKTppPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7fXZhciByLG89e2xlZnQ6aS5sZWZ0LHRvcDppLnRvcCx3aWR0aDppLnJpZ2h0LWkubGVmdCxoZWlnaHQ6aS5ib3R0b20taS50b3B9LHM9XCJIVE1MXCI9PT1lLm5vZGVOYW1lP18oKTp7fSxhPXMud2lkdGh8fGUuY2xpZW50V2lkdGh8fG8ucmlnaHQtby5sZWZ0LGw9cy5oZWlnaHR8fGUuY2xpZW50SGVpZ2h0fHxvLmJvdHRvbS1vLnRvcCxjPWUub2Zmc2V0V2lkdGgtYSx1PWUub2Zmc2V0SGVpZ2h0LWw7cmV0dXJuKGN8fHUpJiYoYy09ZihyPWIoZSksXCJ4XCIpLHUtPWYocixcInlcIiksby53aWR0aC09YyxvLmhlaWdodC09dSksQyhvKX1mdW5jdGlvbiBBKGUsdCxuKXt2YXIgaT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PW4mJm4scj1tKDEwKSxvPVwiSFRNTFwiPT09dC5ub2RlTmFtZSxzPVQoZSksYT1UKHQpLGw9ZyhlKSxjPWIodCksdT1wYXJzZUZsb2F0KGMuYm9yZGVyVG9wV2lkdGgsMTApLGY9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCwxMCk7aSYmXCJIVE1MXCI9PT10Lm5vZGVOYW1lJiYoYS50b3A9TWF0aC5tYXgoYS50b3AsMCksYS5sZWZ0PU1hdGgubWF4KGEubGVmdCwwKSk7dmFyIGQsaCxwPUMoe3RvcDpzLnRvcC1hLnRvcC11LGxlZnQ6cy5sZWZ0LWEubGVmdC1mLHdpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSk7cmV0dXJuIHAubWFyZ2luVG9wPTAscC5tYXJnaW5MZWZ0PTAsIXImJm8mJihkPXBhcnNlRmxvYXQoYy5tYXJnaW5Ub3AsMTApLGg9cGFyc2VGbG9hdChjLm1hcmdpbkxlZnQsMTApLHAudG9wLT11LWQscC5ib3R0b20tPXUtZCxwLmxlZnQtPWYtaCxwLnJpZ2h0LT1mLWgscC5tYXJnaW5Ub3A9ZCxwLm1hcmdpbkxlZnQ9aCksKHImJiFpP3QuY29udGFpbnMobCk6dD09PWwmJlwiQk9EWVwiIT09bC5ub2RlTmFtZSkmJihwPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PW4mJm4scj12KHQsXCJ0b3BcIiksbz12KHQsXCJsZWZ0XCIpLHM9aT8tMToxO3JldHVybiBlLnRvcCs9cipzLGUuYm90dG9tKz1yKnMsZS5sZWZ0Kz1vKnMsZS5yaWdodCs9bypzLGV9KHAsdCkpLHB9ZnVuY3Rpb24gUyhlKXtpZighZXx8IWUucGFyZW50RWxlbWVudHx8bSgpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciB0PWUucGFyZW50RWxlbWVudDt0JiZcIm5vbmVcIj09PWIodCxcInRyYW5zZm9ybVwiKTspdD10LnBhcmVudEVsZW1lbnQ7cmV0dXJuIHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBEKGUsdCxuLGkscil7dmFyIG8scyxhLGwsYyx1PTQ8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09ciYmcixmPXt0b3A6MCxsZWZ0OjB9LGQ9dT9TKGUpOnAoZSx0KTtyZXR1cm5cInZpZXdwb3J0XCI9PT1pP2Y9ZnVuY3Rpb24oZSx0KXt2YXIgbj0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PXQmJnQsaT1lLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9QShlLGkpLG89TWF0aC5tYXgoaS5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCkscz1NYXRoLm1heChpLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApLGE9bj8wOnYoaSksbD1uPzA6dihpLFwibGVmdFwiKTtyZXR1cm4gQyh7dG9wOmEtci50b3Arci5tYXJnaW5Ub3AsbGVmdDpsLXIubGVmdCtyLm1hcmdpbkxlZnQsd2lkdGg6byxoZWlnaHQ6c30pfShkLHUpOihvPXZvaWQgMCxcInNjcm9sbFBhcmVudFwiPT09aT9cIkJPRFlcIj09PShvPWcoaCh0KSkpLm5vZGVOYW1lJiYobz1lLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTpvPVwid2luZG93XCI9PT1pP2Uub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6aSxzPUEobyxkLHUpLFwiSFRNTFwiIT09by5ub2RlTmFtZXx8ZnVuY3Rpb24gZSh0KXt2YXIgbj10Lm5vZGVOYW1lO3JldHVyblwiQk9EWVwiIT09biYmXCJIVE1MXCIhPT1uJiYoXCJmaXhlZFwiPT09Yih0LFwicG9zaXRpb25cIil8fGUoaCh0KSkpfShkKT9mPXM6KGw9KGE9XygpKS5oZWlnaHQsYz1hLndpZHRoLGYudG9wKz1zLnRvcC1zLm1hcmdpblRvcCxmLmJvdHRvbT1sK3MudG9wLGYubGVmdCs9cy5sZWZ0LXMubWFyZ2luTGVmdCxmLnJpZ2h0PWMrcy5sZWZ0KSksZi5sZWZ0Kz1uLGYudG9wKz1uLGYucmlnaHQtPW4sZi5ib3R0b20tPW4sZn1mdW5jdGlvbiBPKGUsdCxpLG4scixvKXt2YXIgcz01PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PW8/bzowO2lmKC0xPT09ZS5pbmRleE9mKFwiYXV0b1wiKSlyZXR1cm4gZTt2YXIgYT1EKGksbixzLHIpLGw9e3RvcDp7d2lkdGg6YS53aWR0aCxoZWlnaHQ6dC50b3AtYS50b3B9LHJpZ2h0Ont3aWR0aDphLnJpZ2h0LXQucmlnaHQsaGVpZ2h0OmEuaGVpZ2h0fSxib3R0b206e3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuYm90dG9tLXQuYm90dG9tfSxsZWZ0Ont3aWR0aDp0LmxlZnQtYS5sZWZ0LGhlaWdodDphLmhlaWdodH19LGM9T2JqZWN0LmtleXMobCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4KHtrZXk6ZX0sbFtlXSx7YXJlYToodD1sW2VdKS53aWR0aCp0LmhlaWdodH0pO3ZhciB0fSkuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiB0LmFyZWEtZS5hcmVhfSksdT1jLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgdD1lLndpZHRoLG49ZS5oZWlnaHQ7cmV0dXJuIHQ+PWkuY2xpZW50V2lkdGgmJm4+PWkuY2xpZW50SGVpZ2h0fSksZj0wPHUubGVuZ3RoP3VbMF0ua2V5OmNbMF0ua2V5LGQ9ZS5zcGxpdChcIi1cIilbMV07cmV0dXJuIGYrKGQ/XCItXCIrZDpcIlwiKX1mdW5jdGlvbiBrKGUsdCxuLGkpe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09aT9pOm51bGw7cmV0dXJuIEEobixyP1ModCk6cCh0LG4pLHIpfWZ1bmN0aW9uIEkoZSl7dmFyIHQ9Z2V0Q29tcHV0ZWRTdHlsZShlKSxuPXBhcnNlRmxvYXQodC5tYXJnaW5Ub3ApK3BhcnNlRmxvYXQodC5tYXJnaW5Cb3R0b20pLGk9cGFyc2VGbG9hdCh0Lm1hcmdpbkxlZnQpK3BhcnNlRmxvYXQodC5tYXJnaW5SaWdodCk7cmV0dXJue3dpZHRoOmUub2Zmc2V0V2lkdGgraSxoZWlnaHQ6ZS5vZmZzZXRIZWlnaHQrbn19ZnVuY3Rpb24gaihlKXt2YXIgdD17bGVmdDpcInJpZ2h0XCIscmlnaHQ6XCJsZWZ0XCIsYm90dG9tOlwidG9wXCIsdG9wOlwiYm90dG9tXCJ9O3JldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9ZnVuY3Rpb24gTihlLHQsbil7bj1uLnNwbGl0KFwiLVwiKVswXTt2YXIgaT1JKGUpLHI9e3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxvPS0xIT09W1wicmlnaHRcIixcImxlZnRcIl0uaW5kZXhPZihuKSxzPW8/XCJ0b3BcIjpcImxlZnRcIixhPW8/XCJsZWZ0XCI6XCJ0b3BcIixsPW8/XCJoZWlnaHRcIjpcIndpZHRoXCIsYz1vP1wid2lkdGhcIjpcImhlaWdodFwiO3JldHVybiByW3NdPXRbc10rdFtsXS8yLWlbbF0vMixyW2FdPW49PT1hP3RbYV0taVtjXTp0W2ooYSldLHJ9ZnVuY3Rpb24gTChlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmluZD9lLmZpbmQodCk6ZS5maWx0ZXIodClbMF19ZnVuY3Rpb24gUChlLG4sdCl7cmV0dXJuKHZvaWQgMD09PXQ/ZTplLnNsaWNlKDAsZnVuY3Rpb24oZSx0LG4pe2lmKEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpcmV0dXJuIGUuZmluZEluZGV4KGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdPT09bn0pO3ZhciBpPUwoZSxmdW5jdGlvbihlKXtyZXR1cm4gZVt0XT09PW59KTtyZXR1cm4gZS5pbmRleE9mKGkpfShlLFwibmFtZVwiLHQpKSkuZm9yRWFjaChmdW5jdGlvbihlKXtlLmZ1bmN0aW9uO3ZhciB0PWUuZnVuY3Rpb258fGUuZm47ZS5lbmFibGVkJiZzKHQpJiYobi5vZmZzZXRzLnBvcHBlcj1DKG4ub2Zmc2V0cy5wb3BwZXIpLG4ub2Zmc2V0cy5yZWZlcmVuY2U9QyhuLm9mZnNldHMucmVmZXJlbmNlKSxuPXQobixlKSl9KSxufWZ1bmN0aW9uICQoZSxuKXtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGUpe3ZhciB0PWUubmFtZTtyZXR1cm4gZS5lbmFibGVkJiZ0PT09bn0pfWZ1bmN0aW9uIE0oZSl7Zm9yKHZhciB0PVshMSxcIm1zXCIsXCJXZWJraXRcIixcIk1velwiLFwiT1wiXSxuPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciByPXRbaV0sbz1yP1wiXCIrcituOmU7aWYodm9pZCAwIT09ZG9jdW1lbnQuYm9keS5zdHlsZVtvXSlyZXR1cm4gb31yZXR1cm4gbnVsbH1mdW5jdGlvbiBxKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gdD90LmRlZmF1bHRWaWV3OndpbmRvd31mdW5jdGlvbiBIKGUsdCxuLGkpe24udXBkYXRlQm91bmQ9aSxxKGUpLmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixuLnVwZGF0ZUJvdW5kLHtwYXNzaXZlOiEwfSk7dmFyIHI9ZyhlKTtyZXR1cm4gZnVuY3Rpb24gZSh0LG4saSxyKXt2YXIgbz1cIkJPRFlcIj09PXQubm9kZU5hbWUscz1vP3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp0O3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxvfHxlKGcocy5wYXJlbnROb2RlKSxuLGksciksci5wdXNoKHMpfShyLFwic2Nyb2xsXCIsbi51cGRhdGVCb3VuZCxuLnNjcm9sbFBhcmVudHMpLG4uc2Nyb2xsRWxlbWVudD1yLG4uZXZlbnRzRW5hYmxlZD0hMCxufWZ1bmN0aW9uIFIoKXt2YXIgZSx0O3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpLHRoaXMuc3RhdGU9KGU9dGhpcy5yZWZlcmVuY2UsdD10aGlzLnN0YXRlLHEoZSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHQudXBkYXRlQm91bmQpLHQuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQudXBkYXRlQm91bmQpfSksdC51cGRhdGVCb3VuZD1udWxsLHQuc2Nyb2xsUGFyZW50cz1bXSx0LnNjcm9sbEVsZW1lbnQ9bnVsbCx0LmV2ZW50c0VuYWJsZWQ9ITEsdCkpfWZ1bmN0aW9uIFcoZSl7cmV0dXJuXCJcIiE9PWUmJiFpc05hTihwYXJzZUZsb2F0KGUpKSYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gQihuLGkpe09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjstMSE9PVtcIndpZHRoXCIsXCJoZWlnaHRcIixcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwibGVmdFwiXS5pbmRleE9mKGUpJiZXKGlbZV0pJiYodD1cInB4XCIpLG4uc3R5bGVbZV09aVtlXSt0fSl9ZnVuY3Rpb24gRihlLHQsbil7dmFyIGk9TChlLGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkscj0hIWkmJmUuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lPT09biYmZS5lbmFibGVkJiZlLm9yZGVyPGkub3JkZXJ9KTtyZXR1cm4gcnx8MCxyfXZhciBVPVtcImF1dG8tc3RhcnRcIixcImF1dG9cIixcImF1dG8tZW5kXCIsXCJ0b3Atc3RhcnRcIixcInRvcFwiLFwidG9wLWVuZFwiLFwicmlnaHQtc3RhcnRcIixcInJpZ2h0XCIsXCJyaWdodC1lbmRcIixcImJvdHRvbS1lbmRcIixcImJvdHRvbVwiLFwiYm90dG9tLXN0YXJ0XCIsXCJsZWZ0LWVuZFwiLFwibGVmdFwiLFwibGVmdC1zdGFydFwiXSxRPVUuc2xpY2UoMyk7ZnVuY3Rpb24geihlLHQpe3ZhciBuPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dCYmdCxpPVEuaW5kZXhPZihlKSxyPVEuc2xpY2UoaSsxKS5jb25jYXQoUS5zbGljZSgwLGkpKTtyZXR1cm4gbj9yLnJldmVyc2UoKTpyfXZhciBLPVwiZmxpcFwiLFk9XCJjbG9ja3dpc2VcIixWPVwiY291bnRlcmNsb2Nrd2lzZVwiO2Z1bmN0aW9uIEcoZSxyLG8sdCl7dmFyIHM9WzAsMF0sYT0tMSE9PVtcInJpZ2h0XCIsXCJsZWZ0XCJdLmluZGV4T2YodCksbj1lLnNwbGl0KC8oXFwrfFxcLSkvKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSksaT1uLmluZGV4T2YoTChuLGZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5zZWFyY2goLyx8XFxzLyl9KSk7bltpXSYmbltpXS5pbmRleE9mKFwiLFwiKTt2YXIgbD0vXFxzKixcXHMqfFxccysvO3JldHVybigtMSE9PWk/W24uc2xpY2UoMCxpKS5jb25jYXQoW25baV0uc3BsaXQobClbMF1dKSxbbltpXS5zcGxpdChsKVsxXV0uY29uY2F0KG4uc2xpY2UoaSsxKSldOltuXSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49KDE9PT10PyFhOmEpP1wiaGVpZ2h0XCI6XCJ3aWR0aFwiLGk9ITE7cmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJcIj09PWVbZS5sZW5ndGgtMV0mJi0xIT09W1wiK1wiLFwiLVwiXS5pbmRleE9mKHQpPyhlW2UubGVuZ3RoLTFdPXQsaT0hMCxlKTppPyhlW2UubGVuZ3RoLTFdKz10LGk9ITEsZSk6ZS5jb25jYXQodCl9LFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByPWUubWF0Y2goLygoPzpcXC18XFwrKT9cXGQqXFwuP1xcZCopKC4qKS8pLG89K3JbMV0scz1yWzJdO2lmKCFvKXJldHVybiBlO2lmKDAhPT1zLmluZGV4T2YoXCIlXCIpKXJldHVyblwidmhcIiE9PXMmJlwidndcIiE9PXM/bzooXCJ2aFwiPT09cz9NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LHdpbmRvdy5pbm5lckhlaWdodHx8MCk6TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKSkvMTAwKm87dmFyIGE9dm9pZCAwO3N3aXRjaChzKXtjYXNlXCIlcFwiOmE9bjticmVhaztjYXNlXCIlXCI6Y2FzZVwiJXJcIjpkZWZhdWx0OmE9aX1yZXR1cm4gQyhhKVt0XS8xMDAqb30oZSxuLHIsbyl9KX0pLmZvckVhY2goZnVuY3Rpb24obixpKXtuLmZvckVhY2goZnVuY3Rpb24oZSx0KXtXKGUpJiYoc1tpXSs9ZSooXCItXCI9PT1uW3QtMV0/LTE6MSkpfSl9KSxzfXZhciBYPXtwbGFjZW1lbnQ6XCJib3R0b21cIixwb3NpdGlvbkZpeGVkOiExLGV2ZW50c0VuYWJsZWQ6ITAscmVtb3ZlT25EZXN0cm95OiExLG9uQ3JlYXRlOmZ1bmN0aW9uKCl7fSxvblVwZGF0ZTpmdW5jdGlvbigpe30sbW9kaWZpZXJzOntzaGlmdDp7b3JkZXI6MTAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHIsbyxzLGEsbD1lLnBsYWNlbWVudCxjPWwuc3BsaXQoXCItXCIpWzBdLHU9bC5zcGxpdChcIi1cIilbMV07cmV0dXJuIHUmJihuPSh0PWUub2Zmc2V0cykucmVmZXJlbmNlLGk9dC5wb3BwZXIscz0ocj0tMSE9PVtcImJvdHRvbVwiLFwidG9wXCJdLmluZGV4T2YoYykpP1wid2lkdGhcIjpcImhlaWdodFwiLGE9e3N0YXJ0OkUoe30sbz1yP1wibGVmdFwiOlwidG9wXCIsbltvXSksZW5kOkUoe30sbyxuW29dK25bc10taVtzXSl9LGUub2Zmc2V0cy5wb3BwZXI9eCh7fSxpLGFbdV0pKSxlfX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQub2Zmc2V0LGk9ZS5wbGFjZW1lbnQscj1lLm9mZnNldHMsbz1yLnBvcHBlcixzPXIucmVmZXJlbmNlLGE9aS5zcGxpdChcIi1cIilbMF0sbD12b2lkIDAsbD1XKCtuKT9bK24sMF06RyhuLG8scyxhKTtyZXR1cm5cImxlZnRcIj09PWE/KG8udG9wKz1sWzBdLG8ubGVmdC09bFsxXSk6XCJyaWdodFwiPT09YT8oby50b3ArPWxbMF0sby5sZWZ0Kz1sWzFdKTpcInRvcFwiPT09YT8oby5sZWZ0Kz1sWzBdLG8udG9wLT1sWzFdKTpcImJvdHRvbVwiPT09YSYmKG8ubGVmdCs9bFswXSxvLnRvcCs9bFsxXSksZS5wb3BwZXI9byxlfSxvZmZzZXQ6MH0scHJldmVudE92ZXJmbG93OntvcmRlcjozMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlLGkpe3ZhciB0PWkuYm91bmRhcmllc0VsZW1lbnR8fHkoZS5pbnN0YW5jZS5wb3BwZXIpO2UuaW5zdGFuY2UucmVmZXJlbmNlPT09dCYmKHQ9eSh0KSk7dmFyIHI9RChlLmluc3RhbmNlLnBvcHBlcixlLmluc3RhbmNlLnJlZmVyZW5jZSxpLnBhZGRpbmcsdCxlLnBvc2l0aW9uRml4ZWQpO2kuYm91bmRhcmllcz1yO3ZhciBuPWkucHJpb3JpdHksbz1lLm9mZnNldHMucG9wcGVyLHM9e3ByaW1hcnk6ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTtyZXR1cm4gb1tlXTxyW2VdJiYhaS5lc2NhcGVXaXRoUmVmZXJlbmNlJiYodD1NYXRoLm1heChvW2VdLHJbZV0pKSxFKHt9LGUsdCl9LHNlY29uZGFyeTpmdW5jdGlvbihlKXt2YXIgdD1cInJpZ2h0XCI9PT1lP1wibGVmdFwiOlwidG9wXCIsbj1vW3RdO3JldHVybiBvW2VdPnJbZV0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWluKG9bdF0scltlXS0oXCJyaWdodFwiPT09ZT9vLndpZHRoOm8uaGVpZ2h0KSkpLEUoe30sdCxuKX19O3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9LTEhPT1bXCJsZWZ0XCIsXCJ0b3BcIl0uaW5kZXhPZihlKT9cInByaW1hcnlcIjpcInNlY29uZGFyeVwiO289eCh7fSxvLHNbdF0oZSkpfSksZS5vZmZzZXRzLnBvcHBlcj1vLGV9LHByaW9yaXR5OltcImxlZnRcIixcInJpZ2h0XCIsXCJ0b3BcIixcImJvdHRvbVwiXSxwYWRkaW5nOjUsYm91bmRhcmllc0VsZW1lbnQ6XCJzY3JvbGxQYXJlbnRcIn0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlKXt2YXIgdD1lLm9mZnNldHMsbj10LnBvcHBlcixpPXQucmVmZXJlbmNlLHI9ZS5wbGFjZW1lbnQuc3BsaXQoXCItXCIpWzBdLG89TWF0aC5mbG9vcixzPS0xIT09W1widG9wXCIsXCJib3R0b21cIl0uaW5kZXhPZihyKSxhPXM/XCJyaWdodFwiOlwiYm90dG9tXCIsbD1zP1wibGVmdFwiOlwidG9wXCIsYz1zP1wid2lkdGhcIjpcImhlaWdodFwiO3JldHVybiBuW2FdPG8oaVtsXSkmJihlLm9mZnNldHMucG9wcGVyW2xdPW8oaVtsXSktbltjXSksbltsXT5vKGlbYV0pJiYoZS5vZmZzZXRzLnBvcHBlcltsXT1vKGlbYV0pKSxlfX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoIUYoZS5pbnN0YW5jZS5tb2RpZmllcnMsXCJhcnJvd1wiLFwia2VlcFRvZ2V0aGVyXCIpKXJldHVybiBlO3ZhciBpPXQuZWxlbWVudDtpZihcInN0cmluZ1wiPT10eXBlb2YgaSl7aWYoIShpPWUuaW5zdGFuY2UucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoaSkpKXJldHVybiBlfWVsc2UgaWYoIWUuaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGkpKXJldHVybiBlO3ZhciByPWUucGxhY2VtZW50LnNwbGl0KFwiLVwiKVswXSxvPWUub2Zmc2V0cyxzPW8ucG9wcGVyLGE9by5yZWZlcmVuY2UsbD0tMSE9PVtcImxlZnRcIixcInJpZ2h0XCJdLmluZGV4T2YociksYz1sP1wiaGVpZ2h0XCI6XCJ3aWR0aFwiLHU9bD9cIlRvcFwiOlwiTGVmdFwiLGY9dS50b0xvd2VyQ2FzZSgpLGQ9bD9cImxlZnRcIjpcInRvcFwiLGg9bD9cImJvdHRvbVwiOlwicmlnaHRcIixwPUkoaSlbY107YVtoXS1wPHNbZl0mJihlLm9mZnNldHMucG9wcGVyW2ZdLT1zW2ZdLShhW2hdLXApKSxhW2ZdK3A+c1toXSYmKGUub2Zmc2V0cy5wb3BwZXJbZl0rPWFbZl0rcC1zW2hdKSxlLm9mZnNldHMucG9wcGVyPUMoZS5vZmZzZXRzLnBvcHBlcik7dmFyIGc9YVtmXSthW2NdLzItcC8yLG09YihlLmluc3RhbmNlLnBvcHBlciksdj1wYXJzZUZsb2F0KG1bXCJtYXJnaW5cIit1XSwxMCkseT1wYXJzZUZsb2F0KG1bXCJib3JkZXJcIit1K1wiV2lkdGhcIl0sMTApLF89Zy1lLm9mZnNldHMucG9wcGVyW2ZdLXYteSxfPU1hdGgubWF4KE1hdGgubWluKHNbY10tcCxfKSwwKTtyZXR1cm4gZS5hcnJvd0VsZW1lbnQ9aSxlLm9mZnNldHMuYXJyb3c9KEUobj17fSxmLE1hdGgucm91bmQoXykpLEUobixkLFwiXCIpLG4pLGV9LGVsZW1lbnQ6XCJbeC1hcnJvd11cIn0sZmxpcDp7b3JkZXI6NjAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24ocCxnKXtpZigkKHAuaW5zdGFuY2UubW9kaWZpZXJzLFwiaW5uZXJcIikpcmV0dXJuIHA7aWYocC5mbGlwcGVkJiZwLnBsYWNlbWVudD09PXAub3JpZ2luYWxQbGFjZW1lbnQpcmV0dXJuIHA7dmFyIG09RChwLmluc3RhbmNlLnBvcHBlcixwLmluc3RhbmNlLnJlZmVyZW5jZSxnLnBhZGRpbmcsZy5ib3VuZGFyaWVzRWxlbWVudCxwLnBvc2l0aW9uRml4ZWQpLHY9cC5wbGFjZW1lbnQuc3BsaXQoXCItXCIpWzBdLHk9aih2KSxfPXAucGxhY2VtZW50LnNwbGl0KFwiLVwiKVsxXXx8XCJcIixiPVtdO3N3aXRjaChnLmJlaGF2aW9yKXtjYXNlIEs6Yj1bdix5XTticmVhaztjYXNlIFk6Yj16KHYpO2JyZWFrO2Nhc2UgVjpiPXoodiwhMCk7YnJlYWs7ZGVmYXVsdDpiPWcuYmVoYXZpb3J9cmV0dXJuIGIuZm9yRWFjaChmdW5jdGlvbihlLHQpe2lmKHYhPT1lfHxiLmxlbmd0aD09PXQrMSlyZXR1cm4gcDt2PXAucGxhY2VtZW50LnNwbGl0KFwiLVwiKVswXSx5PWoodik7dmFyIG4saT1wLm9mZnNldHMucG9wcGVyLHI9cC5vZmZzZXRzLnJlZmVyZW5jZSxvPU1hdGguZmxvb3Iscz1cImxlZnRcIj09PXYmJm8oaS5yaWdodCk+byhyLmxlZnQpfHxcInJpZ2h0XCI9PT12JiZvKGkubGVmdCk8byhyLnJpZ2h0KXx8XCJ0b3BcIj09PXYmJm8oaS5ib3R0b20pPm8oci50b3ApfHxcImJvdHRvbVwiPT09diYmbyhpLnRvcCk8byhyLmJvdHRvbSksYT1vKGkubGVmdCk8byhtLmxlZnQpLGw9byhpLnJpZ2h0KT5vKG0ucmlnaHQpLGM9byhpLnRvcCk8byhtLnRvcCksdT1vKGkuYm90dG9tKT5vKG0uYm90dG9tKSxmPVwibGVmdFwiPT09diYmYXx8XCJyaWdodFwiPT09diYmbHx8XCJ0b3BcIj09PXYmJmN8fFwiYm90dG9tXCI9PT12JiZ1LGQ9LTEhPT1bXCJ0b3BcIixcImJvdHRvbVwiXS5pbmRleE9mKHYpLGg9ISFnLmZsaXBWYXJpYXRpb25zJiYoZCYmXCJzdGFydFwiPT09XyYmYXx8ZCYmXCJlbmRcIj09PV8mJmx8fCFkJiZcInN0YXJ0XCI9PT1fJiZjfHwhZCYmXCJlbmRcIj09PV8mJnUpOyhzfHxmfHxoKSYmKHAuZmxpcHBlZD0hMCwoc3x8ZikmJih2PWJbdCsxXSksaCYmKF89XCJlbmRcIj09PShuPV8pP1wic3RhcnRcIjpcInN0YXJ0XCI9PT1uP1wiZW5kXCI6bikscC5wbGFjZW1lbnQ9disoXz9cIi1cIitfOlwiXCIpLHAub2Zmc2V0cy5wb3BwZXI9eCh7fSxwLm9mZnNldHMucG9wcGVyLE4ocC5pbnN0YW5jZS5wb3BwZXIscC5vZmZzZXRzLnJlZmVyZW5jZSxwLnBsYWNlbWVudCkpLHA9UChwLmluc3RhbmNlLm1vZGlmaWVycyxwLFwiZmxpcFwiKSl9KSxwfSxiZWhhdmlvcjpcImZsaXBcIixwYWRkaW5nOjUsYm91bmRhcmllc0VsZW1lbnQ6XCJ2aWV3cG9ydFwifSxpbm5lcjp7b3JkZXI6NzAwLGVuYWJsZWQ6ITEsZm46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wbGFjZW1lbnQsbj10LnNwbGl0KFwiLVwiKVswXSxpPWUub2Zmc2V0cyxyPWkucG9wcGVyLG89aS5yZWZlcmVuY2Uscz0tMSE9PVtcImxlZnRcIixcInJpZ2h0XCJdLmluZGV4T2YobiksYT0tMT09PVtcInRvcFwiLFwibGVmdFwiXS5pbmRleE9mKG4pO3JldHVybiByW3M/XCJsZWZ0XCI6XCJ0b3BcIl09b1tuXS0oYT9yW3M/XCJ3aWR0aFwiOlwiaGVpZ2h0XCJdOjApLGUucGxhY2VtZW50PWoodCksZS5vZmZzZXRzLnBvcHBlcj1DKHIpLGV9fSxoaWRlOntvcmRlcjo4MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlKXtpZighRihlLmluc3RhbmNlLm1vZGlmaWVycyxcImhpZGVcIixcInByZXZlbnRPdmVyZmxvd1wiKSlyZXR1cm4gZTt2YXIgdD1lLm9mZnNldHMucmVmZXJlbmNlLG49TChlLmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbihlKXtyZXR1cm5cInByZXZlbnRPdmVyZmxvd1wiPT09ZS5uYW1lfSkuYm91bmRhcmllcztpZih0LmJvdHRvbTxuLnRvcHx8dC5sZWZ0Pm4ucmlnaHR8fHQudG9wPm4uYm90dG9tfHx0LnJpZ2h0PG4ubGVmdCl7aWYoITA9PT1lLmhpZGUpcmV0dXJuIGU7ZS5oaWRlPSEwLGUuYXR0cmlidXRlc1tcIngtb3V0LW9mLWJvdW5kYXJpZXNcIl09XCJcIn1lbHNle2lmKCExPT09ZS5oaWRlKXJldHVybiBlO2UuaGlkZT0hMSxlLmF0dHJpYnV0ZXNbXCJ4LW91dC1vZi1ib3VuZGFyaWVzXCJdPSExfXJldHVybiBlfX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbihlLHQpe3ZhciBuLGkscj10Lngsbz10Lnkscz1lLm9mZnNldHMucG9wcGVyLGE9TChlLmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbihlKXtyZXR1cm5cImFwcGx5U3R5bGVcIj09PWUubmFtZX0pLmdwdUFjY2VsZXJhdGlvbixsPXZvaWQgMCE9PWE/YTp0LmdwdUFjY2VsZXJhdGlvbixjPVQoeShlLmluc3RhbmNlLnBvcHBlcikpLHU9e3Bvc2l0aW9uOnMucG9zaXRpb259LGY9e2xlZnQ6TWF0aC5mbG9vcihzLmxlZnQpLHRvcDpNYXRoLmZsb29yKHMudG9wKSxib3R0b206TWF0aC5mbG9vcihzLmJvdHRvbSkscmlnaHQ6TWF0aC5mbG9vcihzLnJpZ2h0KX0sZD1cImJvdHRvbVwiPT09cj9cInRvcFwiOlwiYm90dG9tXCIsaD1cInJpZ2h0XCI9PT1vP1wibGVmdFwiOlwicmlnaHRcIixwPU0oXCJ0cmFuc2Zvcm1cIiksZz12b2lkIDAsbT12b2lkIDAsbT1cImJvdHRvbVwiPT1kPy1jLmhlaWdodCtmLmJvdHRvbTpmLnRvcCxnPVwicmlnaHRcIj09aD8tYy53aWR0aCtmLnJpZ2h0OmYubGVmdDtsJiZwPyh1W3BdPVwidHJhbnNsYXRlM2QoXCIrZytcInB4LCBcIittK1wicHgsIDApXCIsdVtkXT0wLHVbaF09MCx1LndpbGxDaGFuZ2U9XCJ0cmFuc2Zvcm1cIik6KG49XCJib3R0b21cIj09ZD8tMToxLGk9XCJyaWdodFwiPT1oPy0xOjEsdVtkXT1tKm4sdVtoXT1nKmksdS53aWxsQ2hhbmdlPWQrXCIsIFwiK2gpO3ZhciB2PXtcIngtcGxhY2VtZW50XCI6ZS5wbGFjZW1lbnR9O3JldHVybiBlLmF0dHJpYnV0ZXM9eCh7fSx2LGUuYXR0cmlidXRlcyksZS5zdHlsZXM9eCh7fSx1LGUuc3R5bGVzKSxlLmFycm93U3R5bGVzPXgoe30sZS5vZmZzZXRzLmFycm93LGUuYXJyb3dTdHlsZXMpLGV9LGdwdUFjY2VsZXJhdGlvbjohMCx4OlwiYm90dG9tXCIseTpcInJpZ2h0XCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuIEIoZS5pbnN0YW5jZS5wb3BwZXIsZS5zdHlsZXMpLHQ9ZS5pbnN0YW5jZS5wb3BwZXIsbj1lLmF0dHJpYnV0ZXMsT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXshMSE9PW5bZV0/dC5zZXRBdHRyaWJ1dGUoZSxuW2VdKTp0LnJlbW92ZUF0dHJpYnV0ZShlKX0pLGUuYXJyb3dFbGVtZW50JiZPYmplY3Qua2V5cyhlLmFycm93U3R5bGVzKS5sZW5ndGgmJkIoZS5hcnJvd0VsZW1lbnQsZS5hcnJvd1N0eWxlcyksZX0sb25Mb2FkOmZ1bmN0aW9uKGUsdCxuLGkscil7dmFyIG89ayhyLHQsZSxuLnBvc2l0aW9uRml4ZWQpLHM9TyhuLnBsYWNlbWVudCxvLHQsZSxuLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKFwieC1wbGFjZW1lbnRcIixzKSxCKHQse3Bvc2l0aW9uOm4ucG9zaXRpb25GaXhlZD9cImZpeGVkXCI6XCJhYnNvbHV0ZVwifSksbn0sZ3B1QWNjZWxlcmF0aW9uOnZvaWQgMH19fSxKPShkKFosW3trZXk6XCJ1cGRhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlO3RoaXMuc3RhdGUuaXNEZXN0cm95ZWR8fCgoZT17aW5zdGFuY2U6dGhpcyxzdHlsZXM6e30sYXJyb3dTdHlsZXM6e30sYXR0cmlidXRlczp7fSxmbGlwcGVkOiExLG9mZnNldHM6e319KS5vZmZzZXRzLnJlZmVyZW5jZT1rKHRoaXMuc3RhdGUsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQpLGUucGxhY2VtZW50PU8odGhpcy5vcHRpb25zLnBsYWNlbWVudCxlLm9mZnNldHMucmVmZXJlbmNlLHRoaXMucG9wcGVyLHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCx0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAucGFkZGluZyksZS5vcmlnaW5hbFBsYWNlbWVudD1lLnBsYWNlbWVudCxlLnBvc2l0aW9uRml4ZWQ9dGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQsZS5vZmZzZXRzLnBvcHBlcj1OKHRoaXMucG9wcGVyLGUub2Zmc2V0cy5yZWZlcmVuY2UsZS5wbGFjZW1lbnQpLGUub2Zmc2V0cy5wb3BwZXIucG9zaXRpb249dGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQ/XCJmaXhlZFwiOlwiYWJzb2x1dGVcIixlPVAodGhpcy5tb2RpZmllcnMsZSksdGhpcy5zdGF0ZS5pc0NyZWF0ZWQ/dGhpcy5vcHRpb25zLm9uVXBkYXRlKGUpOih0aGlzLnN0YXRlLmlzQ3JlYXRlZD0hMCx0aGlzLm9wdGlvbnMub25DcmVhdGUoZSkpKX0uY2FsbCh0aGlzKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZD0hMCwkKHRoaXMubW9kaWZpZXJzLFwiYXBwbHlTdHlsZVwiKSYmKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZShcIngtcGxhY2VtZW50XCIpLHRoaXMucG9wcGVyLnN0eWxlLnBvc2l0aW9uPVwiXCIsdGhpcy5wb3BwZXIuc3R5bGUudG9wPVwiXCIsdGhpcy5wb3BwZXIuc3R5bGUubGVmdD1cIlwiLHRoaXMucG9wcGVyLnN0eWxlLnJpZ2h0PVwiXCIsdGhpcy5wb3BwZXIuc3R5bGUuYm90dG9tPVwiXCIsdGhpcy5wb3BwZXIuc3R5bGUud2lsbENoYW5nZT1cIlwiLHRoaXMucG9wcGVyLnN0eWxlW00oXCJ0cmFuc2Zvcm1cIildPVwiXCIpLHRoaXMuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5vcHRpb25zLnJlbW92ZU9uRGVzdHJveSYmdGhpcy5wb3BwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBvcHBlciksdGhpc30uY2FsbCh0aGlzKX19LHtrZXk6XCJlbmFibGVFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkfHwodGhpcy5zdGF0ZT1IKHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucyx0aGlzLnN0YXRlLHRoaXMuc2NoZWR1bGVVcGRhdGUpKX0uY2FsbCh0aGlzKX19LHtrZXk6XCJkaXNhYmxlRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBSLmNhbGwodGhpcyl9fV0pLFopO2Z1bmN0aW9uIFooZSx0KXt2YXIgbj10aGlzLGk9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9O2ModGhpcyxaKSx0aGlzLnNjaGVkdWxlVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShuLnVwZGF0ZSl9LHRoaXMudXBkYXRlPW8odGhpcy51cGRhdGUuYmluZCh0aGlzKSksdGhpcy5vcHRpb25zPXgoe30sWi5EZWZhdWx0cyxpKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9ZSYmZS5qcXVlcnk/ZVswXTplLHRoaXMucG9wcGVyPXQmJnQuanF1ZXJ5P3RbMF06dCx0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKHgoe30sWi5EZWZhdWx0cy5tb2RpZmllcnMsaS5tb2RpZmllcnMpKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24ub3B0aW9ucy5tb2RpZmllcnNbZV09eCh7fSxaLkRlZmF1bHRzLm1vZGlmaWVyc1tlXXx8e30saS5tb2RpZmllcnM/aS5tb2RpZmllcnNbZV06e30pfSksdGhpcy5tb2RpZmllcnM9T2JqZWN0LmtleXModGhpcy5vcHRpb25zLm1vZGlmaWVycykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4KHtuYW1lOmV9LG4ub3B0aW9ucy5tb2RpZmllcnNbZV0pfSkuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLm9yZGVyLXQub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZW5hYmxlZCYmcyhlLm9uTG9hZCkmJmUub25Mb2FkKG4ucmVmZXJlbmNlLG4ucG9wcGVyLG4ub3B0aW9ucyxlLG4uc3RhdGUpfSksdGhpcy51cGRhdGUoKTt2YXIgcj10aGlzLm9wdGlvbnMuZXZlbnRzRW5hYmxlZDtyJiZ0aGlzLmVuYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkPXJ9Si5VdGlscz0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6ZSkuUG9wcGVyVXRpbHMsSi5wbGFjZW1lbnRzPVUsSi5EZWZhdWx0cz1YLGVlLmRlZmF1bHQ9Sn0uY2FsbCh0aGlzLHQoMSkpfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYyhlKXtyZXR1cm5cIi1JbmZcIj09PWU/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOlwiK0luZlwiPT09ZXx8XCJJbmZcIj09PWU/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOnBhcnNlSW50KGUsMTApfWZ1bmN0aW9uIGkoKXt9dmFyIHU9L14oe1xccyooXFwtP1xcZCsoXFwuXFxkKyk/W1xccyosXFxzKlxcLT9cXGQrKFxcLlxcZCspP10qKVxccyp9KXwoW1xcW1xcXV0pXFxzKigtSW5mfFxcKnxcXC0/XFxkKyhcXC5cXGQrKT8pXFxzKixcXHMqKFxcKz9JbmZ8XFwqfFxcLT9cXGQrKFxcLlxcZCspPylcXHMqKFtcXFtcXF1dKSQvLGY9Lyh7XFxzKihcXC0/XFxkKyhcXC5cXGQrKT9bXFxzKixcXHMqXFwtP1xcZCsoXFwuXFxkKyk/XSopXFxzKn0pfChbXFxbXFxdXSlcXHMqKC1JbmZ8XFwqfFxcLT9cXGQrKFxcLlxcZCspPylcXHMqLFxccyooXFwrP0luZnxcXCp8XFwtP1xcZCsoXFwuXFxkKyk/KVxccyooW1xcW1xcXV0pLyxkPVwiZW5cIjtpLnByb3RvdHlwZS50cmFuc0Nob2ljZT1mdW5jdGlvbihlLHQsbixpKXsobj12b2lkIDAhPT1uP246e30pLmNvdW50PXQ7Zm9yKHZhciByLG89ZS5zcGxpdChcInxcIikscz1bXSxhPTA7YTxvLmxlbmd0aDthKyspe29bYV09b1thXS50cmltKCksZi50ZXN0KG9bYV0pJiYocj1vW2FdLnNwbGl0KC9cXHMvKSxzLnB1c2goci5zaGlmdCgpKSxvW2FdPXIuam9pbihcIiBcIikpfWlmKGk9aXx8ZCwxPT09by5sZW5ndGgpcmV0dXJuIHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhlLG4pO2Zvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKWlmKHRoaXMudGVzdEludGVydmFsKHQsc1tsXSkpcmV0dXJuIHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhvW2xdLG4pO3ZhciBjPXRoaXMuZ2V0UGx1cmFsRm9ybSh0LGkpO3JldHVybiB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMob1tjXSxuKX0saS5wcm90b3R5cGUucmVwbGFjZVBsYWNlaG9sZGVycz1mdW5jdGlvbihlLHQpe3ZhciBuO2ZvcihuIGluIHQpe3ZhciBpLHI9bmV3IFJlZ0V4cChcIiVcIituK1wiJVwiLFwiZ1wiKTtyLnRlc3QoZSkmJihpPVN0cmluZyh0W25dKS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcJFwiLFwiZ1wiKSxcIiQkJCRcIiksZT1lLnJlcGxhY2UocixpKSl9cmV0dXJuIGV9LGkucHJvdG90eXBlLnRlc3RJbnRlcnZhbD1mdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93XCJJbnZhbGlkIGludGVydmFsOiBzaG91bGQgYmUgYSBzdHJpbmcuXCI7dmFyIG49KHQ9dC50cmltKCkpLm1hdGNoKHUpO2lmKCFuKXRocm93XCJJbnZhbGlkIGludGVydmFsOiBcIit0O2lmKCFuWzJdKXt2YXIgaT0obj1uLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSlbMV0scj1jKG5bMl0pO3I9PT0xLzAmJihyPS0xLzApO3ZhciBvPWMoblszXSkscz1uWzRdO3JldHVybihcIltcIj09PWk/cjw9ZTpyPGUpJiYoXCJdXCI9PT1zP2U8PW86ZTxvKX1mb3IodmFyIGE9blsyXS5zcGxpdChcIixcIiksbD0wO2w8YS5sZW5ndGg7bCsrKWlmKHBhcnNlSW50KGFbbF0sMTApPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saS5wcm90b3R5cGUuZ2V0UGx1cmFsRm9ybT1mdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlXCJhelwiOmNhc2VcImJvXCI6Y2FzZVwiZHpcIjpjYXNlXCJpZFwiOmNhc2VcImphXCI6Y2FzZVwianZcIjpjYXNlXCJrYVwiOmNhc2VcImttXCI6Y2FzZVwia25cIjpjYXNlXCJrb1wiOmNhc2VcIm1zXCI6Y2FzZVwidGhcIjpjYXNlXCJ0clwiOmNhc2VcInZpXCI6Y2FzZVwiemhcIjpyZXR1cm4gMDtjYXNlXCJhZlwiOmNhc2VcImJuXCI6Y2FzZVwiYmdcIjpjYXNlXCJjYVwiOmNhc2VcImRhXCI6Y2FzZVwiZGVcIjpjYXNlXCJlbFwiOmNhc2VcImVuXCI6Y2FzZVwiZW9cIjpjYXNlXCJlc1wiOmNhc2VcImV0XCI6Y2FzZVwiZXVcIjpjYXNlXCJmYVwiOmNhc2VcImZpXCI6Y2FzZVwiZm9cIjpjYXNlXCJmdXJcIjpjYXNlXCJmeVwiOmNhc2VcImdsXCI6Y2FzZVwiZ3VcIjpjYXNlXCJoYVwiOmNhc2VcImhlXCI6Y2FzZVwiaHVcIjpjYXNlXCJpc1wiOmNhc2VcIml0XCI6Y2FzZVwia3VcIjpjYXNlXCJsYlwiOmNhc2VcIm1sXCI6Y2FzZVwibW5cIjpjYXNlXCJtclwiOmNhc2VcIm5haFwiOmNhc2VcIm5iXCI6Y2FzZVwibmVcIjpjYXNlXCJubFwiOmNhc2VcIm5uXCI6Y2FzZVwibm9cIjpjYXNlXCJvbVwiOmNhc2VcIm9yXCI6Y2FzZVwicGFcIjpjYXNlXCJwYXBcIjpjYXNlXCJwc1wiOmNhc2VcInB0XCI6Y2FzZVwic29cIjpjYXNlXCJzcVwiOmNhc2VcInN2XCI6Y2FzZVwic3dcIjpjYXNlXCJ0YVwiOmNhc2VcInRlXCI6Y2FzZVwidGtcIjpjYXNlXCJ1clwiOmNhc2VcInp1XCI6cmV0dXJuIDE9PWU/MDoxO2Nhc2VcImFtXCI6Y2FzZVwiYmhcIjpjYXNlXCJmaWxcIjpjYXNlXCJmclwiOmNhc2VcImd1blwiOmNhc2VcImhpXCI6Y2FzZVwiaHlcIjpjYXNlXCJsblwiOmNhc2VcIm1nXCI6Y2FzZVwibnNvXCI6Y2FzZVwieGJyXCI6Y2FzZVwidGlcIjpjYXNlXCJ3YVwiOnJldHVybiAwPT09ZXx8MT09PWU/MDoxO2Nhc2VcImJlXCI6Y2FzZVwiYnNcIjpjYXNlXCJoclwiOmNhc2VcInJ1XCI6Y2FzZVwic3JcIjpjYXNlXCJ1a1wiOnJldHVybiBlJTEwPT0xJiZlJTEwMCE9MTE/MDoyPD1lJTEwJiZlJTEwPD00JiYoZSUxMDA8MTB8fDIwPD1lJTEwMCk/MToyO2Nhc2VcImNzXCI6Y2FzZVwic2tcIjpyZXR1cm4gMT09ZT8wOjI8PWUmJmU8PTQ/MToyO2Nhc2VcImdhXCI6cmV0dXJuIDE9PWU/MDoyPT1lPzE6MjtjYXNlXCJsdFwiOnJldHVybiBlJTEwPT0xJiZlJTEwMCE9MTE/MDoyPD1lJTEwJiYoZSUxMDA8MTB8fDIwPD1lJTEwMCk/MToyO2Nhc2VcInNsXCI6cmV0dXJuIGUlMTAwPT0xPzA6ZSUxMDA9PTI/MTplJTEwMD09M3x8ZSUxMDA9PTQ/MjozO2Nhc2VcIm1rXCI6cmV0dXJuIGUlMTA9PTE/MDoxO2Nhc2VcIm10XCI6cmV0dXJuIDE9PWU/MDowPT09ZXx8MTxlJTEwMCYmZSUxMDA8MTE/MToxMDxlJTEwMCYmZSUxMDA8MjA/MjozO2Nhc2VcImx2XCI6cmV0dXJuIDA9PT1lPzA6ZSUxMD09MSYmZSUxMDAhPTExPzE6MjtjYXNlXCJwbFwiOnJldHVybiAxPT1lPzA6Mjw9ZSUxMCYmZSUxMDw9NCYmKGUlMTAwPDEyfHwxNDxlJTEwMCk/MToyO2Nhc2VcImN5XCI6cmV0dXJuIDE9PWU/MDoyPT1lPzE6OD09ZXx8MTE9PWU/MjozO2Nhc2VcInJvXCI6cmV0dXJuIDE9PWU/MDowPT09ZXx8MDxlJTEwMCYmZSUxMDA8MjA/MToyO2Nhc2VcImFyXCI6cmV0dXJuIDA9PT1lPzA6MT09ZT8xOjI9PWU/MjozPD1lJTEwMCYmZSUxMDA8PTEwPzM6MTE8PWUlMTAwJiZlJTEwMDw9OTk/NDo1O2RlZmF1bHQ6cmV0dXJuIDB9fSx0LmE9aX0sZnVuY3Rpb24oZSx0LG4pe24oNyksZS5leHBvcnRzPW4oMTkpfSxmdW5jdGlvbihtb2R1bGUsX193ZWJwYWNrX2V4cG9ydHNfXyxfX3dlYnBhY2tfcmVxdWlyZV9fKXtcInVzZSBzdHJpY3RcIjtfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyksZnVuY3Rpb24oJCl7dmFyIF91dGlsc19taWdyYXRlX211dGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKDEwKSxfdXRpbHNfbWlncmF0ZV9tdXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX3V0aWxzX21pZ3JhdGVfbXV0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKSxqcXVlcnlfbWlncmF0ZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fPV9fd2VicGFja19yZXF1aXJlX18oMTEpLGpxdWVyeV9taWdyYXRlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oanF1ZXJ5X21pZ3JhdGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyksdGV0aGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX189X193ZWJwYWNrX3JlcXVpcmVfXygxMiksdGV0aGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4odGV0aGVyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18pLGJvb3RzdHJhcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fPV9fd2VicGFja19yZXF1aXJlX18oMTUpLGJvb3RzdHJhcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGJvb3RzdHJhcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fKSxzZWxlY3QyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X189X193ZWJwYWNrX3JlcXVpcmVfXygxNiksc2VsZWN0Ml9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKHNlbGVjdDJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyksanF1ZXJ5X2dyb3dsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X189X193ZWJwYWNrX3JlcXVpcmVfXygxNyksanF1ZXJ5X2dyb3dsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oanF1ZXJ5X2dyb3dsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18pLHBzdGFnZ2VyX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X189X193ZWJwYWNrX3JlcXVpcmVfXygxOCkscHN0YWdnZXJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihwc3RhZ2dlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fKSxfY29tcG9uZW50c19maWxlX2lucHV0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X189X193ZWJwYWNrX3JlcXVpcmVfXygyKSxfY29tcG9uZW50c19wc19udW1iZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X189X193ZWJwYWNrX3JlcXVpcmVfXygzKTskLmZuLnBzdG9vbHRpcD0kLmZuLnRvb2x0aXAsZnVuY3Rpb24oZ2xvYmFsLGpRdWVyeSl7dm9pZCAwPT09Z2xvYmFsJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYoZ2xvYmFsPXdpbmRvdyk7dmFyIGluaXRTZWxlY3QyPWZ1bmN0aW9uIGluaXRTZWxlY3QyKCl7alF1ZXJ5KCdbZGF0YS10b2dnbGU9XCJzZWxlY3QyXCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBuZXdPYmo9e21pbmltdW1SZXN1bHRzRm9yU2VhcmNoOi0xfTtmb3IodmFyIGF0dHIgaW4gJCh0aGlzKS5kYXRhKCkpYXR0ci5sb2NhbGVDb21wYXJlKFwidGVtcGxhdGVyZXN1bHRcIik/YXR0ci5sb2NhbGVDb21wYXJlKFwidGVtcGxhdGVzZWxlY3Rpb25cIik/YXR0ci5sb2NhbGVDb21wYXJlKFwibWluaW11bXJlc3VsdHNmb3JzZWFyY2hcIik/YXR0ci5sb2NhbGVDb21wYXJlKFwidG9nZ2xlXCIpJiYobmV3T2JqW2F0dHJdPSQodGhpcykuZGF0YSgpW2F0dHJdKTpuZXdPYmoubWluaW11bVJlc3VsdHNGb3JTZWFyY2g9JCh0aGlzKS5kYXRhKClbYXR0cl06bmV3T2JqLnRlbXBsYXRlU2VsZWN0aW9uPWV2YWwoJCh0aGlzKS5kYXRhKClbYXR0cl0pOm5ld09iai50ZW1wbGF0ZVJlc3VsdD1ldmFsKCQodGhpcykuZGF0YSgpW2F0dHJdKTtqUXVlcnkodGhpcykuc2VsZWN0MihuZXdPYmopfSl9LF9pbml0VG9nZ2xlQnV0dG9ucz1mdW5jdGlvbigpe2pRdWVyeSgnW2RhdGEtdG9nZ2xlPVwic3dpdGNoXCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQsbj1qUXVlcnkodGhpcyk7bnVsbD09bi5kYXRhKFwiYWN0aXZhdGVkXCIpJiYobi5kYXRhKFwiYWN0aXZhdGVkXCIsITApLGU9bi5wcm9wKFwiY2hlY2tlZFwiKT9cIi1jaGVja2VkXCI6XCJcIixuLndyYXAoJzxkaXYgY2xhc3M9XCJzd2l0Y2gtaW5wdXQgJytlKydcIj48L2Rpdj4nKSwodD1uLnBhcmVudCgpKS5hZGRDbGFzcyhuLmF0dHIoXCJjbGFzc1wiKSksbi5vbihcImNoYW5nZVwiLGZ1bmN0aW9uKCl7dC50b2dnbGVDbGFzcyhcIi1jaGVja2VkXCIsbi5wcm9wKFwiY2hlY2tlZFwiKSl9KSx0LmNsaWNrKGZ1bmN0aW9uKGUpe2lmKGUuc3JjRWxlbWVudD09dFswXXx8bnVsbD09ZS5zcmNFbGVtZW50KXJldHVybiBuLnByb3AoXCJjaGVja2VkXCIsIW4ucHJvcChcImNoZWNrZWRcIikpLCExfSkpfSl9LF9pbml0QWxlcnRzPWZ1bmN0aW9uKCl7alF1ZXJ5KFwiLmFsZXJ0LXRleHRcIikuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9alF1ZXJ5KHRoaXMpLG49dC5oZWlnaHQoKS9wYXJzZUZsb2F0KHQuY3NzKFwibGluZUhlaWdodFwiKSk7NTxNYXRoLmNlaWwobikmJihlPXQuaHRtbCgpLHQucGFyZW50KCkuYXR0cihcImNsYXNzXCIpLHQucGFyZW50KCkuYWRkQ2xhc3MoXCJhbGVydC1kcm9wXCIpLHZvaWQgMCE9PXQuZGF0YShcInRpdGxlXCIpJiZcIlwiIT09dC5kYXRhKFwidGl0bGVcIik/dC5odG1sKFwiPGI+XCIrdC5kYXRhKFwidGl0bGVcIikrXCI8L2I+XCIpOnQuaHRtbChcIjxiPlJlYWQgTW9yZTwvYj5cIiksdC5jc3MoXCJjdXJzb3JcIixcInBvaW50ZXJcIiksdC5wYXJlbnQoKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJhbGVydC1kb3duXCIgcm9sZT1cImFsZXJ0XCI+PHAgY2xhc3M9XCJhbGVydC1kb3duLXRleHRcIj48L3A+PC9kaXY+JyksdC5wYXJlbnQoKS5maW5kKFwiLmFsZXJ0LWRvd25cIikuc2xpZGVVcCgwKSx0LnBhcmVudCgpLmZpbmQoXCIuYWxlcnQtZG93bi10ZXh0XCIpLmh0bWwoZSkpfSksJChcIi5hbGVydC1kcm9wXCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1qUXVlcnkodGhpcyk7ZS5jbGljayhmdW5jdGlvbigpeyQoXCIuYWxlcnQtZG93blwiLGUpLnNsaWRlVG9nZ2xlKDQwMCl9KX0pfSxfaW5pdFRvb2xUaXBzPWZ1bmN0aW9uKCl7alF1ZXJ5KFwiLnRvb2x0aXAtZXJyb3JcIikucHN0b29sdGlwKHt0ZW1wbGF0ZTonPGRpdiBjbGFzcz1cInBzdG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJ0b29sdGlwLWVycm9yXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PjwvZGl2Pid9KSxqUXVlcnkoJ1tkYXRhLXRvZ2dsZT1cInBzdG9vbHRpcFwiXScpLnBzdG9vbHRpcCh7Y29udGFpbmVyOlwiYm9keVwiLGJvdW5kYXJ5Olwid2luZG93XCJ9KSxqUXVlcnkoJ1tkYXRhLXRvZ2dsZT1cInBvcG92ZXJcIl0nKS5wb3BvdmVyKCl9LF9pbml0U2VhcmNoQmFyPWZ1bmN0aW9uKCl7JChcIi5qcy1mb3JtLXNlYXJjaFwiKS5vbihcImZvY3VzaW5cIixmdW5jdGlvbigpeyQoXCIuanMtZHJvcGRvd24tZm9ybVwiKS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpfHwkKFwiLmpzLWRyb3Bkb3duLWZvcm1cIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKX0pfTtnbG9iYWwucHJlc3RhU2hvcFVpS2l0PXtpbml0OmZ1bmN0aW9uKCl7alF1ZXJ5KGZ1bmN0aW9uKCl7alF1ZXJ5LnByb3BIb29rcy5jaGVja2VkPXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWVbbl09dDtyZXR1cm4gJChlKS50cmlnZ2VyKFwiY2hhbmdlXCIpLGl9fSxqUXVlcnkuZm4uc2VsZWN0Mi5kZWZhdWx0cy5zZXQoXCJ0aGVtZVwiLFwiYm9vdHN0cmFwXCIpLGpRdWVyeS5mbi5zZWxlY3QyLmRlZmF1bHRzLnNldChcIndpZHRoXCIsXCJhdXRvXCIpLGluaXRTZWxlY3QyKCksX2luaXRUb2dnbGVCdXR0b25zKCksX2luaXRBbGVydHMoKSxfaW5pdFRvb2xUaXBzKCksX2luaXRTZWFyY2hCYXIoKSxPYmplY3QoX2NvbXBvbmVudHNfZmlsZV9pbnB1dF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fLmEpKCksT2JqZWN0KF9jb21wb25lbnRzX3BzX251bWJlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXy5hKShcIi5wcy1udW1iZXItaW5wdXRcIil9KX0saW5pdFNlbGVjdHM6ZnVuY3Rpb24oKXtpbml0U2VsZWN0MigpfSxpbml0VG9vbFRpcHM6ZnVuY3Rpb24oKXtfaW5pdFRvb2xUaXBzKCl9LGluaXRUb2dnbGVCdXR0b25zOmZ1bmN0aW9uKCl7X2luaXRUb2dnbGVCdXR0b25zKCl9LGluaXRBbGVydHM6ZnVuY3Rpb24oKXtfaW5pdEFsZXJ0cygpfSxpbml0U2VhcmNoQmFyOmZ1bmN0aW9uKCl7X2luaXRTZWFyY2hCYXIoKX0saW5pdElucHV0RmlsZTpmdW5jdGlvbigpe09iamVjdChfY29tcG9uZW50c19maWxlX2lucHV0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18uYSkoKX0saW5pdE51bWJlcnM6ZnVuY3Rpb24oKXtPYmplY3QoX2NvbXBvbmVudHNfcHNfbnVtYmVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fLmEpKFwiLnBzLW51bWJlci1pbnB1dFwiKX19LGdsb2JhbC5wcmVzdGFTaG9wVWlLaXQuaW5pdCgpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAsJCksJChmdW5jdGlvbigpeyQuZm4ucHNkd2w9ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsLGk9dGhpczsobj1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiB0KWUuaGFzT3duUHJvcGVydHkoaSk/bltpXT1lW2ldOm5baV09dFtpXTtyZXR1cm4gbn0oZSx7aG92ZXI6XCJpbnN0YWxsXCIsdmFsaWRhdGU6JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jaGVjazwvaT4nLHRleHQ6XCJkZWZhdWx0XCIsdGltZTozZTMsZGVmYXVsdDohMH0pKS5kZWZhdWx0JiYodD1pLmF0dHIoXCJjbGFzc1wiKS5yZXBsYWNlKC8oYnRuLVxcdyspLyxcIiQxLXJldmVyc2VcIiksaS5hdHRyKFwiY2xhc3NcIix0KSksdm9pZCAwIT09JChpLnNlbGVjdG9yKS5odG1sKCkmJlwiXCIhPT0kKGkuc2VsZWN0b3IpLmh0bWwoKSYmKG4udGV4dD0kKGkuc2VsZWN0b3IpLnRleHQoKSksaS5odG1sKG4uaG92ZXIpO3ZhciByPXRoaXMuY3NzKFwid2lkdGhcIik7aS5odG1sKG4udGV4dCk7dmFyIG89dGhpcy5jc3MoXCJ3aWR0aFwiKSxzPXBhcnNlSW50KG8sMTApPHBhcnNlSW50KHIsMTApP3I6byxzPXBhcnNlSW50KHMsMTApPDk1P1wiOTVweFwiOnM7aS5jc3MoXCJ3aWR0aFwiLHMpLGkuaG92ZXIoZnVuY3Rpb24oKXtpLmh0bWwobi5ob3Zlcil9LGZ1bmN0aW9uKCl7aS5odG1sKG4udGV4dCl9KSxpLmNsaWNrKGZ1bmN0aW9uKCl7aS5jc3MoXCJib3JkZXItbGVmdC1jb2xvclwiLGkuY3NzKFwiYm9yZGVyLWNvbG9yXCIpKSxpLmFkZENsYXNzKFwib25jbGlja1wiKSxpLnVuYmluZChcIm1vdXNlZW50ZXJcIikudW5iaW5kKFwibW91c2VsZWF2ZVwiKS51bmJpbmQoXCJjbGlja1wiKTt2YXIgZT1wYXJzZUludChzLDEwKTtpLmNzcyh7d2lkdGg6XCJcIixcIm1hcmdpbi1sZWZ0XCI6ZS80LFwibWFyZ2luLXJpZ2h0XCI6ZS80fSksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlO2kucmVtb3ZlQ2xhc3MoXCJvbmNsaWNrXCIpLGkuY3NzKHtcIm1hcmdpbi1sZWZ0XCI6XCJcIixcIm1hcmdpbi1yaWdodFwiOlwiXCIsd2lkdGg6cyxcImJvcmRlci1sZWZ0LWNvbG9yXCI6XCJcIn0pLGkuaHRtbChuLnZhbGlkYXRlKSxuLmRlZmF1bHQmJihlPWkuYXR0cihcImNsYXNzXCIpLnJlcGxhY2UoXCItcmV2ZXJzZVwiLFwiXCIpLGkuYXR0cihcImNsYXNzXCIsZSkpfSxuLnRpbWUpfSl9fSl9LmNhbGwodGhpcyxfX3dlYnBhY2tfcmVxdWlyZV9fKDApKX0sZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbihlKXt0LmV4cG9ydHM9ZS4kPW4oOSl9KS5jYWxsKHRoaXMsbigxKSl9LGZ1bmN0aW9uKHNuLGFuLGUpe3ZhciBsbjshZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjtcIm9iamVjdFwiPT10eXBlb2Ygc24uZXhwb3J0cz9zbi5leHBvcnRzPWUuZG9jdW1lbnQ/dChlLCEwKTpmdW5jdGlvbihlKXtpZighZS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIpO3JldHVybiB0KGUpfTp0KGUpfShcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKHgsZSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fXZhciB0PVtdLGk9T2JqZWN0LmdldFByb3RvdHlwZU9mLGE9dC5zbGljZSxtPXQuZmxhdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5mbGF0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmNhdC5hcHBseShbXSxlKX0sbD10LnB1c2gscj10LmluZGV4T2Ysbj17fSxvPW4udG9TdHJpbmcsdj1uLmhhc093blByb3BlcnR5LHM9di50b1N0cmluZyxjPXMuY2FsbChPYmplY3QpLHk9e30sXz1mdW5jdGlvbihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZcIm51bWJlclwiIT10eXBlb2YgZS5ub2RlVHlwZX0sQz14LmRvY3VtZW50LHU9e3R5cGU6ITAsc3JjOiEwLG5vbmNlOiEwLG5vTW9kdWxlOiEwfTtmdW5jdGlvbiBiKGUsdCxuKXt2YXIgaSxyLG89KG49bnx8QykuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtpZihvLnRleHQ9ZSx0KWZvcihpIGluIHUpKHI9dFtpXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKGkpKSYmby5zZXRBdHRyaWJ1dGUoaSxyKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrXCJcIjpcIm9iamVjdFwiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZT9uW28uY2FsbChlKV18fFwib2JqZWN0XCI6dHlwZW9mIGV9dmFyIFQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFQuZm4uaW5pdChlLHQpfTtmdW5jdGlvbiBmKGUpe3ZhciB0PSEhZSYmXCJsZW5ndGhcImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hXyhlKSYmIWcoZSkmJihcImFycmF5XCI9PT1ufHwwPT09dHx8XCJudW1iZXJcIj09dHlwZW9mIHQmJjA8dCYmdC0xIGluIGUpfVQuZm49VC5wcm90b3R5cGU9e2pxdWVyeTpcIjMuNS4xXCIsY29uc3RydWN0b3I6VCxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP2EuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9VC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFQuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6bCxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFQuZXh0ZW5kPVQuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLGkscixvLHM9YXJndW1lbnRzWzBdfHx7fSxhPTEsbD1hcmd1bWVudHMubGVuZ3RoLGM9ITE7Zm9yKFwiYm9vbGVhblwiPT10eXBlb2YgcyYmKGM9cyxzPWFyZ3VtZW50c1thXXx8e30sYSsrKSxcIm9iamVjdFwiPT10eXBlb2Ygc3x8XyhzKXx8KHM9e30pLGE9PT1sJiYocz10aGlzLGEtLSk7YTxsO2ErKylpZihudWxsIT0oZT1hcmd1bWVudHNbYV0pKWZvcih0IGluIGUpaT1lW3RdLFwiX19wcm90b19fXCIhPT10JiZzIT09aSYmKGMmJmkmJihULmlzUGxhaW5PYmplY3QoaSl8fChyPUFycmF5LmlzQXJyYXkoaSkpKT8obj1zW3RdLG89ciYmIUFycmF5LmlzQXJyYXkobik/W106cnx8VC5pc1BsYWluT2JqZWN0KG4pP246e30scj0hMSxzW3RdPVQuZXh0ZW5kKGMsbyxpKSk6dm9pZCAwIT09aSYmKHNbdF09aSkpO3JldHVybiBzfSxULmV4dGVuZCh7ZXhwYW5kbzpcImpRdWVyeVwiKyhcIjMuNS4xXCIrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXFxEL2csXCJcIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4hKCFlfHxcIltvYmplY3QgT2JqZWN0XVwiIT09by5jYWxsKGUpKSYmKCEodD1pKGUpKXx8XCJmdW5jdGlvblwiPT10eXBlb2Yobj12LmNhbGwodCxcImNvbnN0cnVjdG9yXCIpJiZ0LmNvbnN0cnVjdG9yKSYmcy5jYWxsKG4pPT09Yyl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1cm4hMH0sZ2xvYmFsRXZhbDpmdW5jdGlvbihlLHQsbil7YihlLHtub25jZTp0JiZ0Lm5vbmNlfSxuKX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLGk9MDtpZihmKGUpKWZvcihuPWUubGVuZ3RoO2k8biYmITEhPT10LmNhbGwoZVtpXSxpLGVbaV0pO2krKyk7ZWxzZSBmb3IoaSBpbiBlKWlmKCExPT09dC5jYWxsKGVbaV0saSxlW2ldKSlicmVhaztyZXR1cm4gZX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihmKE9iamVjdChlKSk/VC5tZXJnZShuLFwic3RyaW5nXCI9PXR5cGVvZiBlP1tlXTplKTpsLmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6ci5jYWxsKHQsZSxuKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLGk9MCxyPWUubGVuZ3RoO2k8bjtpKyspZVtyKytdPXRbaV07cmV0dXJuIGUubGVuZ3RoPXIsZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpPVtdLHI9MCxvPWUubGVuZ3RoLHM9IW47cjxvO3IrKykhdChlW3JdLHIpIT1zJiZpLnB1c2goZVtyXSk7cmV0dXJuIGl9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIGkscixvPTAscz1bXTtpZihmKGUpKWZvcihpPWUubGVuZ3RoO288aTtvKyspbnVsbCE9KHI9dChlW29dLG8sbikpJiZzLnB1c2gocik7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShyPXQoZVtvXSxvLG4pKSYmcy5wdXNoKHIpO3JldHVybiBtKHMpfSxndWlkOjEsc3VwcG9ydDp5fSksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoVC5mbltTeW1ib2wuaXRlcmF0b3JdPXRbU3ltYm9sLml0ZXJhdG9yXSksVC5lYWNoKFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdChcIiBcIiksZnVuY3Rpb24oZSx0KXtuW1wiW29iamVjdCBcIit0K1wiXVwiXT10LnRvTG93ZXJDYXNlKCl9KTt2YXIgZD1mdW5jdGlvbihuKXtmdW5jdGlvbiBmKGUsdCl7dmFyIG49XCIweFwiK2Uuc2xpY2UoMSktNjU1MzY7cmV0dXJuIHR8fChuPDA/U3RyaW5nLmZyb21DaGFyQ29kZSg2NTUzNituKTpTdHJpbmcuZnJvbUNoYXJDb2RlKG4+PjEwfDU1Mjk2LDEwMjMmbnw1NjMyMCkpfWZ1bmN0aW9uIHIoKXtFKCl9dmFyIGUsaCxiLG8scyxwLGQsZyx3LGwsYyxFLHgsYSxDLG0sdSx2LHksVD1cInNpenpsZVwiKyArbmV3IERhdGUsXz1uLmRvY3VtZW50LEE9MCxpPTAsUz1sZSgpLEQ9bGUoKSxPPWxlKCksaz1sZSgpLEk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJihjPSEwKSwwfSxqPXt9Lmhhc093blByb3BlcnR5LHQ9W10sTj10LnBvcCxMPXQucHVzaCxQPXQucHVzaCwkPXQuc2xpY2UsTT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKylpZihlW25dPT09dClyZXR1cm4gbjtyZXR1cm4tMX0scT1cImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkXCIsSD1cIltcXFxceDIwXFxcXHRcXFxcclxcXFxuXFxcXGZdXCIsUj1cIig/OlxcXFxcXFxcW1xcXFxkYS1mQS1GXXsxLDZ9XCIrSCtcIj98XFxcXFxcXFxbXlxcXFxyXFxcXG5cXFxcZl18W1xcXFx3LV18W15cXDAtXFxcXHg3Zl0pK1wiLFc9XCJcXFxcW1wiK0grXCIqKFwiK1IrXCIpKD86XCIrSCtcIiooWypeJHwhfl0/PSlcIitIK1wiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIrUitcIikpfClcIitIK1wiKlxcXFxdXCIsQj1cIjooXCIrUitcIikoPzpcXFxcKCgoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXwoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIrVytcIikqKXwuKilcXFxcKXwpXCIsRj1uZXcgUmVnRXhwKEgrXCIrXCIsXCJnXCIpLFU9bmV3IFJlZ0V4cChcIl5cIitIK1wiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIitIK1wiKyRcIixcImdcIiksUT1uZXcgUmVnRXhwKFwiXlwiK0grXCIqLFwiK0grXCIqXCIpLHo9bmV3IFJlZ0V4cChcIl5cIitIK1wiKihbPit+XXxcIitIK1wiKVwiK0grXCIqXCIpLEs9bmV3IFJlZ0V4cChIK1wifD5cIiksWT1uZXcgUmVnRXhwKEIpLFY9bmV3IFJlZ0V4cChcIl5cIitSK1wiJFwiKSxHPXtJRDpuZXcgUmVnRXhwKFwiXiMoXCIrUitcIilcIiksQ0xBU1M6bmV3IFJlZ0V4cChcIl5cXFxcLihcIitSK1wiKVwiKSxUQUc6bmV3IFJlZ0V4cChcIl4oXCIrUitcInxbKl0pXCIpLEFUVFI6bmV3IFJlZ0V4cChcIl5cIitXKSxQU0VVRE86bmV3IFJlZ0V4cChcIl5cIitCKSxDSElMRDpuZXcgUmVnRXhwKFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIitIK1wiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIrSCtcIiooPzooWystXXwpXCIrSCtcIiooXFxcXGQrKXwpKVwiK0grXCIqXFxcXCl8KVwiLFwiaVwiKSxib29sOm5ldyBSZWdFeHAoXCJeKD86XCIrcStcIikkXCIsXCJpXCIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKFwiXlwiK0grXCIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXFxcKFwiK0grXCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiK0grXCIqXFxcXCl8KSg/PVteLV18JClcIixcImlcIil9LFg9L0hUTUwkL2ksSj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFo9L15oXFxkJC9pLGVlPS9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sdGU9L14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sbmU9L1srfl0vLGllPW5ldyBSZWdFeHAoXCJcXFxcXFxcXFtcXFxcZGEtZkEtRl17MSw2fVwiK0grXCI/fFxcXFxcXFxcKFteXFxcXHJcXFxcblxcXFxmXSlcIixcImdcIikscmU9LyhbXFwwLVxceDFmXFx4N2ZdfF4tP1xcZCl8Xi0kfFteXFwwLVxceDFmXFx4N2YtXFx1RkZGRlxcdy1dL2csb2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9cIlxcMFwiPT09ZT9cIu+/vVwiOmUuc2xpY2UoMCwtMSkrXCJcXFxcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KStcIiBcIjpcIlxcXFxcIitlfSxzZT15ZShmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWQmJlwiZmllbGRzZXRcIj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0se2RpcjpcInBhcmVudE5vZGVcIixuZXh0OlwibGVnZW5kXCJ9KTt0cnl7UC5hcHBseSh0PSQuY2FsbChfLmNoaWxkTm9kZXMpLF8uY2hpbGROb2RlcyksdFtfLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtQPXthcHBseTp0Lmxlbmd0aD9mdW5jdGlvbihlLHQpe0wuYXBwbHkoZSwkLmNhbGwodCkpfTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxpPTA7ZVtuKytdPXRbaSsrXTspO2UubGVuZ3RoPW4tMX19fWZ1bmN0aW9uIGFlKHQsZSxuLGkpe3ZhciByLG8scyxhLGwsYyx1LGY9ZSYmZS5vd25lckRvY3VtZW50LGQ9ZT9lLm5vZGVUeXBlOjk7aWYobj1ufHxbXSxcInN0cmluZ1wiIT10eXBlb2YgdHx8IXR8fDEhPT1kJiY5IT09ZCYmMTEhPT1kKXJldHVybiBuO2lmKCFpJiYoRShlKSxlPWV8fHgsQykpe2lmKDExIT09ZCYmKGw9dGUuZXhlYyh0KSkpaWYocj1sWzFdKXtpZig5PT09ZCl7aWYoIShzPWUuZ2V0RWxlbWVudEJ5SWQocikpKXJldHVybiBuO2lmKHMuaWQ9PT1yKXJldHVybiBuLnB1c2gocyksbn1lbHNlIGlmKGYmJihzPWYuZ2V0RWxlbWVudEJ5SWQocikpJiZ5KGUscykmJnMuaWQ9PT1yKXJldHVybiBuLnB1c2gocyksbn1lbHNle2lmKGxbMl0pcmV0dXJuIFAuYXBwbHkobixlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpKSxuO2lmKChyPWxbM10pJiZoLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gUC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShyKSksbn1pZihoLnFzYSYmIWtbdCtcIiBcIl0mJighbXx8IW0udGVzdCh0KSkmJigxIT09ZHx8XCJvYmplY3RcIiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpe2lmKHU9dCxmPWUsMT09PWQmJihLLnRlc3QodCl8fHoudGVzdCh0KSkpe2ZvcigoZj1uZS50ZXN0KHQpJiZnZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmguc2NvcGV8fCgoYT1lLmdldEF0dHJpYnV0ZShcImlkXCIpKT9hPWEucmVwbGFjZShyZSxvZSk6ZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLGE9VCkpLG89KGM9cCh0KSkubGVuZ3RoO28tLTspY1tvXT0oYT9cIiNcIithOlwiOnNjb3BlXCIpK1wiIFwiK3ZlKGNbb10pO3U9Yy5qb2luKFwiLFwiKX10cnl7cmV0dXJuIFAuYXBwbHkobixmLnF1ZXJ5U2VsZWN0b3JBbGwodSkpLG59Y2F0Y2goZSl7ayh0LCEwKX1maW5hbGx5e2E9PT1UJiZlLnJlbW92ZUF0dHJpYnV0ZShcImlkXCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKFUsXCIkMVwiKSxlLG4saSl9ZnVuY3Rpb24gbGUoKXt2YXIgbj1bXTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIG4ucHVzaChlK1wiIFwiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgaVtuLnNoaWZ0KCldLGlbZStcIiBcIl09dH1yZXR1cm4gaX1mdW5jdGlvbiBjZShlKXtyZXR1cm4gZVtUXT0hMCxlfWZ1bmN0aW9uIHVlKGUpe3ZhciB0PXguY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7Zm9yKHZhciBuPWUuc3BsaXQoXCJ8XCIpLGk9bi5sZW5ndGg7aS0tOyliLmF0dHJIYW5kbGVbbltpXV09dH1mdW5jdGlvbiBkZShlLHQpe3ZhciBuPXQmJmUsaT1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJmUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDtpZihpKXJldHVybiBpO2lmKG4pZm9yKDtuPW4ubmV4dFNpYmxpbmc7KWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gaGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVyblwiZm9ybVwiaW4gZT9lLnBhcmVudE5vZGUmJiExPT09ZS5kaXNhYmxlZD9cImxhYmVsXCJpbiBlP1wibGFiZWxcImluIGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT10OmUuZGlzYWJsZWQ9PT10OmUuaXNEaXNhYmxlZD09PXR8fGUuaXNEaXNhYmxlZCE9PSF0JiZzZShlKT09PXQ6ZS5kaXNhYmxlZD09PXQ6XCJsYWJlbFwiaW4gZSYmZS5kaXNhYmxlZD09PXR9fWZ1bmN0aW9uIHBlKHMpe3JldHVybiBjZShmdW5jdGlvbihvKXtyZXR1cm4gbz0rbyxjZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixpPXMoW10sZS5sZW5ndGgsbykscj1pLmxlbmd0aDtyLS07KWVbbj1pW3JdXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIGUmJnZvaWQgMCE9PWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9Zm9yKGUgaW4gaD1hZS5zdXBwb3J0PXt9LHM9YWUuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lc3BhY2VVUkksbj0oZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVgudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHxcIkhUTUxcIil9LEU9YWUuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixpPWU/ZS5vd25lckRvY3VtZW50fHxlOl87cmV0dXJuIGkhPXgmJjk9PT1pLm5vZGVUeXBlJiZpLmRvY3VtZW50RWxlbWVudCYmKGE9KHg9aSkuZG9jdW1lbnRFbGVtZW50LEM9IXMoeCksXyE9eCYmKG49eC5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIixyLCExKTpuLmF0dGFjaEV2ZW50JiZuLmF0dGFjaEV2ZW50KFwib251bmxvYWRcIixyKSksaC5zY29wZT11ZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh4LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLHZvaWQgMCE9PWUucXVlcnlTZWxlY3RvckFsbCYmIWUucXVlcnlTZWxlY3RvckFsbChcIjpzY29wZSBmaWVsZHNldCBkaXZcIikubGVuZ3RofSksaC5hdHRyaWJ1dGVzPXVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTmFtZT1cImlcIiwhZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIil9KSxoLmdldEVsZW1lbnRzQnlUYWdOYW1lPXVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKHguY3JlYXRlQ29tbWVudChcIlwiKSksIWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aH0pLGguZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1lZS50ZXN0KHguZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksaC5nZXRCeUlkPXVlKGZ1bmN0aW9uKGUpe3JldHVybiBhLmFwcGVuZENoaWxkKGUpLmlkPVQsIXguZ2V0RWxlbWVudHNCeU5hbWV8fCF4LmdldEVsZW1lbnRzQnlOYW1lKFQpLmxlbmd0aH0pLGguZ2V0QnlJZD8oYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGllLGYpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJpZFwiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10LmdldEVsZW1lbnRCeUlkJiZDKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKGllLGYpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD12b2lkIDAhPT1lLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQuZ2V0RWxlbWVudEJ5SWQmJkMpe3ZhciBuLGkscixvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107Zm9yKHI9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxpPTA7bz1yW2krK107KWlmKChuPW8uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9aC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDAhPT10LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6aC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixpPVtdLHI9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoXCIqXCIhPT1lKXJldHVybiBvO2Zvcig7bj1vW3IrK107KTE9PT1uLm5vZGVUeXBlJiZpLnB1c2gobik7cmV0dXJuIGl9LGIuZmluZC5DTEFTUz1oLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwIT09dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZDKXJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LHU9W10sbT1bXSwoaC5xc2E9ZWUudGVzdCh4LnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKHVlKGZ1bmN0aW9uKGUpe3ZhciB0O2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPVwiPGEgaWQ9J1wiK1QrXCInPjwvYT48c2VsZWN0IGlkPSdcIitUK1wiLVxcclxcXFwnIG1zYWxsb3djYXB0dXJlPScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCIsZS5xdWVyeVNlbGVjdG9yQWxsKFwiW21zYWxsb3djYXB0dXJlXj0nJ11cIikubGVuZ3RoJiZtLnB1c2goXCJbKl4kXT1cIitIK1wiKig/OicnfFxcXCJcXFwiKVwiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aHx8bS5wdXNoKFwiXFxcXFtcIitIK1wiKig/OnZhbHVlfFwiK3ErXCIpXCIpLGUucXVlcnlTZWxlY3RvckFsbChcIltpZH49XCIrVCtcIi1dXCIpLmxlbmd0aHx8bS5wdXNoKFwifj1cIiksKHQ9eC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIikpLnNldEF0dHJpYnV0ZShcIm5hbWVcIixcIlwiKSxlLmFwcGVuZENoaWxkKHQpLGUucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPScnXVwiKS5sZW5ndGh8fG0ucHVzaChcIlxcXFxbXCIrSCtcIipuYW1lXCIrSCtcIio9XCIrSCtcIiooPzonJ3xcXFwiXFxcIilcIiksZS5xdWVyeVNlbGVjdG9yQWxsKFwiOmNoZWNrZWRcIikubGVuZ3RofHxtLnB1c2goXCI6Y2hlY2tlZFwiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhI1wiK1QrXCIrKlwiKS5sZW5ndGh8fG0ucHVzaChcIi4jLitbK35dXCIpLGUucXVlcnlTZWxlY3RvckFsbChcIlxcXFxcXGZcIiksbS5wdXNoKFwiW1xcXFxyXFxcXG5cXFxcZl1cIil9KSx1ZShmdW5jdGlvbihlKXtlLmlubmVySFRNTD1cIjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO3ZhciB0PXguY3JlYXRlRWxlbWVudChcImlucHV0XCIpO3Quc2V0QXR0cmlidXRlKFwidHlwZVwiLFwiaGlkZGVuXCIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKFwibmFtZVwiLFwiRFwiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGgmJm0ucHVzaChcIm5hbWVcIitIK1wiKlsqXiR8IX5dPz1cIiksMiE9PWUucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCYmbS5wdXNoKFwiOmVuYWJsZWRcIixcIjpkaXNhYmxlZFwiKSxhLmFwcGVuZENoaWxkKGUpLmRpc2FibGVkPSEwLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZGlzYWJsZWRcIikubGVuZ3RoJiZtLnB1c2goXCI6ZW5hYmxlZFwiLFwiOmRpc2FibGVkXCIpLGUucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIiksbS5wdXNoKFwiLC4qOlwiKX0pKSwoaC5tYXRjaGVzU2VsZWN0b3I9ZWUudGVzdCh2PWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmdWUoZnVuY3Rpb24oZSl7aC5kaXNjb25uZWN0ZWRNYXRjaD12LmNhbGwoZSxcIipcIiksdi5jYWxsKGUsXCJbcyE9JyddOnhcIiksdS5wdXNoKFwiIT1cIixCKX0pLG09bS5sZW5ndGgmJm5ldyBSZWdFeHAobS5qb2luKFwifFwiKSksdT11Lmxlbmd0aCYmbmV3IFJlZ0V4cCh1LmpvaW4oXCJ8XCIpKSx0PWVlLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxlZS50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxpPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PWl8fCEoIWl8fDEhPT1pLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhpKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGkpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodClmb3IoO3Q9dC5wYXJlbnROb2RlOylpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sST10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGM9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFoLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09eHx8ZS5vd25lckRvY3VtZW50PT1fJiZ5KF8sZSk/LTE6dD09eHx8dC5vd25lckRvY3VtZW50PT1fJiZ5KF8sdCk/MTpsP00obCxlKS1NKGwsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGM9ITAsMDt2YXIgbixpPTAscj1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUscz1bZV0sYT1bdF07aWYoIXJ8fCFvKXJldHVybiBlPT14Py0xOnQ9PXg/MTpyPy0xOm8/MTpsP00obCxlKS1NKGwsdCk6MDtpZihyPT09bylyZXR1cm4gZGUoZSx0KTtmb3Iobj1lO249bi5wYXJlbnROb2RlOylzLnVuc2hpZnQobik7Zm9yKG49dDtuPW4ucGFyZW50Tm9kZTspYS51bnNoaWZ0KG4pO2Zvcig7c1tpXT09PWFbaV07KWkrKztyZXR1cm4gaT9kZShzW2ldLGFbaV0pOnNbaV09PV8/LTE6YVtpXT09Xz8xOjB9KSx4fSxhZS5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFlKGUsbnVsbCxudWxsLHQpfSxhZS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZSx0KXtpZihFKGUpLGgubWF0Y2hlc1NlbGVjdG9yJiZDJiYha1t0K1wiIFwiXSYmKCF1fHwhdS50ZXN0KHQpKSYmKCFtfHwhbS50ZXN0KHQpKSl0cnl7dmFyIG49di5jYWxsKGUsdCk7aWYobnx8aC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe2sodCwhMCl9cmV0dXJuIDA8YWUodCx4LG51bGwsW2VdKS5sZW5ndGh9LGFlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPXgmJkUoZSkseShlLHQpfSxhZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPXgmJkUoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0saT1uJiZqLmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUMpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09aT9pOmguYXR0cmlidXRlc3x8IUM/ZS5nZXRBdHRyaWJ1dGUodCk6KGk9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmaS5zcGVjaWZpZWQ/aS52YWx1ZTpudWxsfSxhZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrXCJcIikucmVwbGFjZShyZSxvZSl9LGFlLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiK2UpfSxhZS51bmlxdWVTb3J0PWZ1bmN0aW9uKGUpe3ZhciB0LG49W10saT0wLHI9MDtpZihjPSFoLmRldGVjdER1cGxpY2F0ZXMsbD0haC5zb3J0U3RhYmxlJiZlLnNsaWNlKDApLGUuc29ydChJKSxjKXtmb3IoO3Q9ZVtyKytdOyl0PT09ZVtyXSYmKGk9bi5wdXNoKHIpKTtmb3IoO2ktLTspZS5zcGxpY2UobltpXSwxKX1yZXR1cm4gbD1udWxsLGV9LG89YWUuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdCxuPVwiXCIsaT0wLHI9ZS5ub2RlVHlwZTtpZihyKXtpZigxPT09cnx8OT09PXJ8fDExPT09cil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUudGV4dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPW8oZSl9ZWxzZSBpZigzPT09cnx8ND09PXIpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2UgZm9yKDt0PWVbaSsrXTspbis9byh0KTtyZXR1cm4gbn0sKGI9YWUuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86Y2UsbWF0Y2g6RyxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6e1wiPlwiOntkaXI6XCJwYXJlbnROb2RlXCIsZmlyc3Q6ITB9LFwiIFwiOntkaXI6XCJwYXJlbnROb2RlXCJ9LFwiK1wiOntkaXI6XCJwcmV2aW91c1NpYmxpbmdcIixmaXJzdDohMH0sXCJ+XCI6e2RpcjpcInByZXZpb3VzU2libGluZ1wifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZShpZSxmKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHxcIlwiKS5yZXBsYWNlKGllLGYpLFwifj1cIj09PWVbMl0mJihlWzNdPVwiIFwiK2VbM10rXCIgXCIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLFwibnRoXCI9PT1lWzFdLnNsaWNlKDAsMyk/KGVbM118fGFlLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKFwiZXZlblwiPT09ZVszXXx8XCJvZGRcIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHxcIm9kZFwiPT09ZVszXSkpOmVbM10mJmFlLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBHLkNISUxELnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVbNV18fFwiXCI6biYmWS50ZXN0KG4pJiYodD1wKG4sITApKSYmKHQ9bi5pbmRleE9mKFwiKVwiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKGllLGYpLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCIqXCI9PT1lP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10fX0sQ0xBU1M6ZnVuY3Rpb24oZSl7dmFyIHQ9U1tlK1wiIFwiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cChcIihefFwiK0grXCIpXCIrZStcIihcIitIK1wifCQpXCIpKSYmUyhlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoXCJzdHJpbmdcIj09dHlwZW9mIGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZXx8dm9pZCAwIT09ZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCIpfSl9LEFUVFI6ZnVuY3Rpb24obixpLHIpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1hZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/XCIhPVwiPT09aTohaXx8KHQrPVwiXCIsXCI9XCI9PT1pP3Q9PT1yOlwiIT1cIj09PWk/dCE9PXI6XCJePVwiPT09aT9yJiYwPT09dC5pbmRleE9mKHIpOlwiKj1cIj09PWk/ciYmLTE8dC5pbmRleE9mKHIpOlwiJD1cIj09PWk/ciYmdC5zbGljZSgtci5sZW5ndGgpPT09cjpcIn49XCI9PT1pPy0xPChcIiBcIit0LnJlcGxhY2UoRixcIiBcIikrXCIgXCIpLmluZGV4T2Yocik6XCJ8PVwiPT09aSYmKHQ9PT1yfHx0LnNsaWNlKDAsci5sZW5ndGgrMSk9PT1yK1wiLVwiKSl9fSxDSElMRDpmdW5jdGlvbihwLGUsdCxnLG0pe3ZhciB2PVwibnRoXCIhPT1wLnNsaWNlKDAsMykseT1cImxhc3RcIiE9PXAuc2xpY2UoLTQpLF89XCJvZi10eXBlXCI9PT1lO3JldHVybiAxPT09ZyYmMD09PW0/ZnVuY3Rpb24oZSl7cmV0dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLG8scyxhLGwsYz12IT15P1wibmV4dFNpYmxpbmdcIjpcInByZXZpb3VzU2libGluZ1wiLHU9ZS5wYXJlbnROb2RlLGY9XyYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGQ9IW4mJiFfLGg9ITE7aWYodSl7aWYodil7Zm9yKDtjOyl7Zm9yKHM9ZTtzPXNbY107KWlmKF8/cy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09cy5ub2RlVHlwZSlyZXR1cm4hMTtsPWM9XCJvbmx5XCI9PT1wJiYhbCYmXCJuZXh0U2libGluZ1wifXJldHVybiEwfWlmKGw9W3k/dS5maXJzdENoaWxkOnUubGFzdENoaWxkXSx5JiZkKXtmb3IoaD0oYT0oaT0ocj0obz0ocz11KVtUXXx8KHNbVF09e30pKVtzLnVuaXF1ZUlEXXx8KG9bcy51bmlxdWVJRF09e30pKVtwXXx8W10pWzBdPT09QSYmaVsxXSkmJmlbMl0scz1hJiZ1LmNoaWxkTm9kZXNbYV07cz0rK2EmJnMmJnNbY118fChoPWE9MCl8fGwucG9wKCk7KWlmKDE9PT1zLm5vZGVUeXBlJiYrK2gmJnM9PT1lKXtyW3BdPVtBLGEsaF07YnJlYWt9fWVsc2UgaWYoZCYmKGg9YT0oaT0ocj0obz0ocz1lKVtUXXx8KHNbVF09e30pKVtzLnVuaXF1ZUlEXXx8KG9bcy51bmlxdWVJRF09e30pKVtwXXx8W10pWzBdPT09QSYmaVsxXSksITE9PT1oKWZvcig7KHM9KythJiZzJiZzW2NdfHwoaD1hPTApfHxsLnBvcCgpKSYmKChfP3Mubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PWY6MSE9PXMubm9kZVR5cGUpfHwhKytofHwoZCYmKChyPShvPXNbVF18fChzW1RdPXt9KSlbcy51bmlxdWVJRF18fChvW3MudW5pcXVlSURdPXt9KSlbcF09W0EsaF0pLHMhPT1lKSk7KTtyZXR1cm4oaC09bSk9PT1nfHxoJWc9PTAmJjA8PWgvZ319fSxQU0VVRE86ZnVuY3Rpb24oZSxvKXt2YXIgdCxzPWIucHNldWRvc1tlXXx8Yi5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fGFlLmVycm9yKFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIitlKTtyZXR1cm4gc1tUXT9zKG8pOjE8cy5sZW5ndGg/KHQ9W2UsZSxcIlwiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2NlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLGk9cyhlLG8pLHI9aS5sZW5ndGg7ci0tOyllW249TShlLGlbcl0pXT0hKHRbbl09aVtyXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlLDAsdCl9KTpzfX0scHNldWRvczp7bm90OmNlKGZ1bmN0aW9uKGUpe3ZhciBpPVtdLHI9W10sYT1kKGUucmVwbGFjZShVLFwiJDFcIikpO3JldHVybiBhW1RdP2NlKGZ1bmN0aW9uKGUsdCxuLGkpe2Zvcih2YXIgcixvPWEoZSxudWxsLGksW10pLHM9ZS5sZW5ndGg7cy0tOykocj1vW3NdKSYmKGVbc109ISh0W3NdPXIpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaVswXT1lLGEoaSxudWxsLG4sciksaVswXT1udWxsLCFyLnBvcCgpfX0pLGhhczpjZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8YWUodCxlKS5sZW5ndGh9fSksY29udGFpbnM6Y2UoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKGllLGYpLGZ1bmN0aW9uKGUpe3JldHVybi0xPChlLnRleHRDb250ZW50fHxvKGUpKS5pbmRleE9mKHQpfX0pLGxhbmc6Y2UoZnVuY3Rpb24obil7cmV0dXJuIFYudGVzdChufHxcIlwiKXx8YWUuZXJyb3IoXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIituKSxuPW4ucmVwbGFjZShpZSxmKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGUpe3ZhciB0O2Rve2lmKHQ9Qz9lLmxhbmc6ZS5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKXx8ZS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rXCItXCIpfXdoaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5sb2NhdGlvbiYmbi5sb2NhdGlvbi5oYXNoO3JldHVybiB0JiZ0LnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWF9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09eC5hY3RpdmVFbGVtZW50JiYoIXguaGFzRm9jdXN8fHguaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVuYWJsZWQ6aGUoITEpLGRpc2FibGVkOmhlKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT10JiYhIWUuY2hlY2tlZHx8XCJvcHRpb25cIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBaLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09dCYmXCJidXR0b25cIj09PWUudHlwZXx8XCJidXR0b25cIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuXCJpbnB1dFwiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZcInRleHRcIj09PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSl8fFwidGV4dFwiPT09dC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGUoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTpwZShmdW5jdGlvbihlLHQsbil7cmV0dXJuW248MD9uK3Q6bl19KSxldmVuOnBlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksb2RkOnBlKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6cGUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgaT1uPDA/bit0OnQ8bj90Om47MDw9LS1pOyllLnB1c2goaSk7cmV0dXJuIGV9KSxndDpwZShmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpPW48MD9uK3Q6bjsrK2k8dDspZS5wdXNoKGkpO3JldHVybiBlfSl9fSkucHNldWRvcy5udGg9Yi5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSliLnBzZXVkb3NbZV09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVyblwiaW5wdXRcIj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19KGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKFwiaW5wdXRcIj09PXR8fFwiYnV0dG9uXCI9PT10KSYmZS50eXBlPT09bn19KGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHZlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgsaT1cIlwiO3Q8bjt0KyspaSs9ZVt0XS52YWx1ZTtyZXR1cm4gaX1mdW5jdGlvbiB5ZShhLGUsdCl7dmFyIGw9ZS5kaXIsYz1lLm5leHQsdT1jfHxsLGY9dCYmXCJwYXJlbnROb2RlXCI9PT11LGQ9aSsrO3JldHVybiBlLmZpcnN0P2Z1bmN0aW9uKGUsdCxuKXtmb3IoO2U9ZVtsXTspaWYoMT09PWUubm9kZVR5cGV8fGYpcmV0dXJuIGEoZSx0LG4pO3JldHVybiExfTpmdW5jdGlvbihlLHQsbil7dmFyIGkscixvLHM9W0EsZF07aWYobil7Zm9yKDtlPWVbbF07KWlmKCgxPT09ZS5ub2RlVHlwZXx8ZikmJmEoZSx0LG4pKXJldHVybiEwfWVsc2UgZm9yKDtlPWVbbF07KWlmKDE9PT1lLm5vZGVUeXBlfHxmKWlmKHI9KG89ZVtUXXx8KGVbVF09e30pKVtlLnVuaXF1ZUlEXXx8KG9bZS51bmlxdWVJRF09e30pLGMmJmM9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpZT1lW2xdfHxlO2Vsc2V7aWYoKGk9clt1XSkmJmlbMF09PT1BJiZpWzFdPT09ZClyZXR1cm4gc1syXT1pWzJdO2lmKChyW3VdPXMpWzJdPWEoZSx0LG4pKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiBfZShyKXtyZXR1cm4gMTxyLmxlbmd0aD9mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpPXIubGVuZ3RoO2ktLTspaWYoIXJbaV0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTpyWzBdfWZ1bmN0aW9uIGJlKGUsdCxuLGkscil7Zm9yKHZhciBvLHM9W10sYT0wLGw9ZS5sZW5ndGgsYz1udWxsIT10O2E8bDthKyspKG89ZVthXSkmJihuJiYhbihvLGkscil8fChzLnB1c2gobyksYyYmdC5wdXNoKGEpKSk7cmV0dXJuIHN9ZnVuY3Rpb24gd2UoaCxwLGcsbSx2LGUpe3JldHVybiBtJiYhbVtUXSYmKG09d2UobSkpLHYmJiF2W1RdJiYodj13ZSh2LGUpKSxjZShmdW5jdGlvbihlLHQsbixpKXt2YXIgcixvLHMsYT1bXSxsPVtdLGM9dC5sZW5ndGgsdT1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKWFlKGUsdFtpXSxuKTtyZXR1cm4gbn0ocHx8XCIqXCIsbi5ub2RlVHlwZT9bbl06bixbXSksZj0haHx8IWUmJnA/dTpiZSh1LGEsaCxuLGkpLGQ9Zz92fHwoZT9oOmN8fG0pP1tdOnQ6ZjtpZihnJiZnKGYsZCxuLGkpLG0pZm9yKHI9YmUoZCxsKSxtKHIsW10sbixpKSxvPXIubGVuZ3RoO28tLTspKHM9cltvXSkmJihkW2xbb11dPSEoZltsW29dXT1zKSk7aWYoZSl7aWYodnx8aCl7aWYodil7Zm9yKHI9W10sbz1kLmxlbmd0aDtvLS07KShzPWRbb10pJiZyLnB1c2goZltvXT1zKTt2KG51bGwsZD1bXSxyLGkpfWZvcihvPWQubGVuZ3RoO28tLTspKHM9ZFtvXSkmJi0xPChyPXY/TShlLHMpOmFbb10pJiYoZVtyXT0hKHRbcl09cykpfX1lbHNlIGQ9YmUoZD09PXQ/ZC5zcGxpY2UoYyxkLmxlbmd0aCk6ZCksdj92KG51bGwsdCxkLGkpOlAuYXBwbHkodCxkKX0pfWZ1bmN0aW9uIEVlKG0sdil7ZnVuY3Rpb24gZShlLHQsbixpLHIpe3ZhciBvLHMsYSxsPTAsYz1cIjBcIix1PWUmJltdLGY9W10sZD13LGg9ZXx8XyYmYi5maW5kLlRBRyhcIipcIixyKSxwPUErPW51bGw9PWQ/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWgubGVuZ3RoO2ZvcihyJiYodz10PT14fHx0fHxyKTtjIT09ZyYmbnVsbCE9KG89aFtjXSk7YysrKXtpZihfJiZvKXtmb3Iocz0wLHR8fG8ub3duZXJEb2N1bWVudD09eHx8KEUobyksbj0hQyk7YT1tW3MrK107KWlmKGEobyx0fHx4LG4pKXtpLnB1c2gobyk7YnJlYWt9ciYmKEE9cCl9eSYmKChvPSFhJiZvKSYmbC0tLGUmJnUucHVzaChvKSl9aWYobCs9Yyx5JiZjIT09bCl7Zm9yKHM9MDthPXZbcysrXTspYSh1LGYsdCxuKTtpZihlKXtpZigwPGwpZm9yKDtjLS07KXVbY118fGZbY118fChmW2NdPU4uY2FsbChpKSk7Zj1iZShmKX1QLmFwcGx5KGksZiksciYmIWUmJjA8Zi5sZW5ndGgmJjE8bCt2Lmxlbmd0aCYmYWUudW5pcXVlU29ydChpKX1yZXR1cm4gciYmKEE9cCx3PWQpLHV9dmFyIHk9MDx2Lmxlbmd0aCxfPTA8bS5sZW5ndGg7cmV0dXJuIHk/Y2UoZSk6ZX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxwPWFlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxyLG8scyxhLGwsYz1EW2UrXCIgXCJdO2lmKGMpcmV0dXJuIHQ/MDpjLnNsaWNlKDApO2ZvcihzPWUsYT1bXSxsPWIucHJlRmlsdGVyO3M7KXtmb3IobyBpbiBuJiYhKGk9US5leGVjKHMpKXx8KGkmJihzPXMuc2xpY2UoaVswXS5sZW5ndGgpfHxzKSxhLnB1c2gocj1bXSkpLG49ITEsKGk9ei5leGVjKHMpKSYmKG49aS5zaGlmdCgpLHIucHVzaCh7dmFsdWU6bix0eXBlOmlbMF0ucmVwbGFjZShVLFwiIFwiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEoaT1HW29dLmV4ZWMocykpfHxsW29dJiYhKGk9bFtvXShpKSl8fChuPWkuc2hpZnQoKSxyLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6aX0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P3MubGVuZ3RoOnM/YWUuZXJyb3IoZSk6RChlLGEpLnNsaWNlKDApfSxkPWFlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixpPVtdLHI9W10sbz1PW2UrXCIgXCJdO2lmKCFvKXtmb3Iobj0odD10fHxwKGUpKS5sZW5ndGg7bi0tOykobz1mdW5jdGlvbiBlKHQpe2Zvcih2YXIgcixuLGksbz10Lmxlbmd0aCxzPWIucmVsYXRpdmVbdFswXS50eXBlXSxhPXN8fGIucmVsYXRpdmVbXCIgXCJdLGw9cz8xOjAsYz15ZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PXJ9LGEsITApLHU9eWUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8TShyLGUpfSxhLCEwKSxmPVtmdW5jdGlvbihlLHQsbil7dmFyIGk9IXMmJihufHx0IT09dyl8fCgocj10KS5ub2RlVHlwZT9jOnUpKGUsdCxuKTtyZXR1cm4gcj1udWxsLGl9XTtsPG87bCsrKWlmKG49Yi5yZWxhdGl2ZVt0W2xdLnR5cGVdKWY9W3llKF9lKGYpLG4pXTtlbHNle2lmKChuPWIuZmlsdGVyW3RbbF0udHlwZV0uYXBwbHkobnVsbCx0W2xdLm1hdGNoZXMpKVtUXSl7Zm9yKGk9KytsO2k8byYmIWIucmVsYXRpdmVbdFtpXS50eXBlXTtpKyspO3JldHVybiB3ZSgxPGwmJl9lKGYpLDE8bCYmdmUodC5zbGljZSgwLGwtMSkuY29uY2F0KHt2YWx1ZTpcIiBcIj09PXRbbC0yXS50eXBlP1wiKlwiOlwiXCJ9KSkucmVwbGFjZShVLFwiJDFcIiksbixsPGkmJmUodC5zbGljZShsLGkpKSxpPG8mJmUodD10LnNsaWNlKGkpKSxpPG8mJnZlKHQpKX1mLnB1c2gobil9cmV0dXJuIF9lKGYpfSh0W25dKSlbVF0/aS5wdXNoKG8pOnIucHVzaChvKTsobz1PKGUsRWUocixpKSkpLnNlbGVjdG9yPWV9cmV0dXJuIG99LGc9YWUuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByLG8scyxhLGwsYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlLHU9IWkmJnAoZT1jLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT11Lmxlbmd0aCl7aWYoMjwobz11WzBdPXVbMF0uc2xpY2UoMCkpLmxlbmd0aCYmXCJJRFwiPT09KHM9b1swXSkudHlwZSYmOT09PXQubm9kZVR5cGUmJkMmJmIucmVsYXRpdmVbb1sxXS50eXBlXSl7aWYoISh0PShiLmZpbmQuSUQocy5tYXRjaGVzWzBdLnJlcGxhY2UoaWUsZiksdCl8fFtdKVswXSkpcmV0dXJuIG47YyYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKHI9Ry5uZWVkc0NvbnRleHQudGVzdChlKT8wOm8ubGVuZ3RoO3ItLSYmKHM9b1tyXSwhYi5yZWxhdGl2ZVthPXMudHlwZV0pOylpZigobD1iLmZpbmRbYV0pJiYoaT1sKHMubWF0Y2hlc1swXS5yZXBsYWNlKGllLGYpLG5lLnRlc3Qob1swXS50eXBlKSYmZ2UodC5wYXJlbnROb2RlKXx8dCkpKXtpZihvLnNwbGljZShyLDEpLCEoZT1pLmxlbmd0aCYmdmUobykpKXJldHVybiBQLmFwcGx5KG4saSksbjticmVha319cmV0dXJuKGN8fGQoZSx1KSkoaSx0LCFDLG4sIXR8fG5lLnRlc3QoZSkmJmdlKHQucGFyZW50Tm9kZSl8fHQpLG59LGguc29ydFN0YWJsZT1ULnNwbGl0KFwiXCIpLnNvcnQoSSkuam9pbihcIlwiKT09PVQsaC5kZXRlY3REdXBsaWNhdGVzPSEhYyxFKCksaC5zb3J0RGV0YWNoZWQ9dWUoZnVuY3Rpb24oZSl7cmV0dXJuIDEmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih4LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKSl9KSx1ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9XCI8YSBocmVmPScjJz48L2E+XCIsXCIjXCI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKX0pfHxmZShcInR5cGV8aHJlZnxoZWlnaHR8d2lkdGhcIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsXCJ0eXBlXCI9PT10LnRvTG93ZXJDYXNlKCk/MToyKX0pLGguYXR0cmlidXRlcyYmdWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPVwiPGlucHV0Lz5cIixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiKSxcIlwiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpfSl8fGZlKFwidmFsdWVcIixmdW5jdGlvbihlLHQsbil7aWYoIW4mJlwiaW5wdXRcIj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSx1ZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKX0pfHxmZShxLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaTtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihpPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJmkuc3BlY2lmaWVkP2kudmFsdWU6bnVsbH0pLGFlfSh4KTtULmZpbmQ9ZCxULmV4cHI9ZC5zZWxlY3RvcnMsVC5leHByW1wiOlwiXT1ULmV4cHIucHNldWRvcyxULnVuaXF1ZVNvcnQ9VC51bmlxdWU9ZC51bmlxdWVTb3J0LFQudGV4dD1kLmdldFRleHQsVC5pc1hNTERvYz1kLmlzWE1MLFQuY29udGFpbnM9ZC5jb250YWlucyxULmVzY2FwZVNlbGVjdG9yPWQuZXNjYXBlO2Z1bmN0aW9uIGgoZSx0LG4pe2Zvcih2YXIgaT1bXSxyPXZvaWQgMCE9PW47KGU9ZVt0XSkmJjkhPT1lLm5vZGVUeXBlOylpZigxPT09ZS5ub2RlVHlwZSl7aWYociYmVChlKS5pcyhuKSlicmVhaztpLnB1c2goZSl9cmV0dXJuIGl9ZnVuY3Rpb24gcChlLHQpe2Zvcih2YXIgbj1bXTtlO2U9ZS5uZXh0U2libGluZykxPT09ZS5ub2RlVHlwZSYmZSE9PXQmJm4ucHVzaChlKTtyZXR1cm4gbn12YXIgRT1ULmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O2Z1bmN0aW9uIEEoZSx0KXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpfXZhciBTPS9ePChbYS16XVteXFwvXFwwPjpcXHgyMFxcdFxcclxcblxcZl0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFwvPz4oPzo8XFwvXFwxPnwpJC9pO2Z1bmN0aW9uIEQoZSxuLGkpe3JldHVybiBfKG4pP1QuZ3JlcChlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuISFuLmNhbGwoZSx0LGUpIT09aX0pOm4ubm9kZVR5cGU/VC5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1uIT09aX0pOlwic3RyaW5nXCIhPXR5cGVvZiBuP1QuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPHIuY2FsbChuLGUpIT09aX0pOlQuZmlsdGVyKG4sZSxpKX1ULmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIGk9dFswXTtyZXR1cm4gbiYmKGU9XCI6bm90KFwiK2UrXCIpXCIpLDE9PT10Lmxlbmd0aCYmMT09PWkubm9kZVR5cGU/VC5maW5kLm1hdGNoZXNTZWxlY3RvcihpLGUpP1tpXTpbXTpULmZpbmQubWF0Y2hlcyhlLFQuZ3JlcCh0LGZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZX0pKX0sVC5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixpPXRoaXMubGVuZ3RoLHI9dGhpcztpZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soVChlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8aTt0KyspaWYoVC5jb250YWlucyhyW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxpO3QrKylULmZpbmQoZSxyW3RdLG4pO3JldHVybiAxPGk/VC51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhRCh0aGlzLFwic3RyaW5nXCI9PXR5cGVvZiBlJiZFLnRlc3QoZSk/VChlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBPLGs9L14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKykpJC87KFQuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIGkscjtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fE8sXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOl8oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoVCk6VC5tYWtlQXJyYXkoZSx0aGlzKTtpZighKGk9XCI8XCI9PT1lWzBdJiZcIj5cIj09PWVbZS5sZW5ndGgtMV0mJjM8PWUubGVuZ3RoP1tudWxsLGUsbnVsbF06ay5leGVjKGUpKXx8IWlbMV0mJnQpcmV0dXJuIXR8fHQuanF1ZXJ5Pyh0fHxuKS5maW5kKGUpOnRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTtpZihpWzFdKXtpZih0PXQgaW5zdGFuY2VvZiBUP3RbMF06dCxULm1lcmdlKHRoaXMsVC5wYXJzZUhUTUwoaVsxXSx0JiZ0Lm5vZGVUeXBlP3Qub3duZXJEb2N1bWVudHx8dDpDLCEwKSksUy50ZXN0KGlbMV0pJiZULmlzUGxhaW5PYmplY3QodCkpZm9yKGkgaW4gdClfKHRoaXNbaV0pP3RoaXNbaV0odFtpXSk6dGhpcy5hdHRyKGksdFtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuKHI9Qy5nZXRFbGVtZW50QnlJZChpWzJdKSkmJih0aGlzWzBdPXIsdGhpcy5sZW5ndGg9MSksdGhpc30pLnByb3RvdHlwZT1ULmZuLE89VChDKTt2YXIgST0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxqPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIE4oZSx0KXtmb3IoOyhlPWVbdF0pJiYxIT09ZS5ub2RlVHlwZTspO3JldHVybiBlfVQuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9VChlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihULmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLGk9MCxyPXRoaXMubGVuZ3RoLG89W10scz1cInN0cmluZ1wiIT10eXBlb2YgZSYmVChlKTtpZighRS50ZXN0KGUpKWZvcig7aTxyO2krKylmb3Iobj10aGlzW2ldO24mJm4hPT10O249bi5wYXJlbnROb2RlKWlmKG4ubm9kZVR5cGU8MTEmJihzPy0xPHMuaW5kZXgobik6MT09PW4ubm9kZVR5cGUmJlQuZmluZC5tYXRjaGVzU2VsZWN0b3IobixlKSkpe28ucHVzaChuKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soMTxvLmxlbmd0aD9ULnVuaXF1ZVNvcnQobyk6byl9LGluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBlP1wic3RyaW5nXCI9PXR5cGVvZiBlP3IuY2FsbChUKGUpLHRoaXNbMF0pOnIuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVC51bmlxdWVTb3J0KFQubWVyZ2UodGhpcy5nZXQoKSxUKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFQuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLFwicGFyZW50Tm9kZVwiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLFwicGFyZW50Tm9kZVwiLG4pfSxuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBOKGUsXCJuZXh0U2libGluZ1wiKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTihlLFwicHJldmlvdXNTaWJsaW5nXCIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsXCJuZXh0U2libGluZ1wiKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLFwicHJldmlvdXNTaWJsaW5nXCIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsXCJuZXh0U2libGluZ1wiLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsXCJwcmV2aW91c1NpYmxpbmdcIixuKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIHAoKGUucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsZSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGUpe3JldHVybiBwKGUuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lLmNvbnRlbnREb2N1bWVudCYmaShlLmNvbnRlbnREb2N1bWVudCk/ZS5jb250ZW50RG9jdW1lbnQ6KEEoZSxcInRlbXBsYXRlXCIpJiYoZT1lLmNvbnRlbnR8fGUpLFQubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihpLHIpe1QuZm5baV09ZnVuY3Rpb24oZSx0KXt2YXIgbj1ULm1hcCh0aGlzLHIsZSk7cmV0dXJuXCJVbnRpbFwiIT09aS5zbGljZSgtNSkmJih0PWUpLHQmJlwic3RyaW5nXCI9PXR5cGVvZiB0JiYobj1ULmZpbHRlcih0LG4pKSwxPHRoaXMubGVuZ3RoJiYoaltpXXx8VC51bmlxdWVTb3J0KG4pLEkudGVzdChpKSYmbi5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciBMPS9bXlxceDIwXFx0XFxyXFxuXFxmXSsvZztmdW5jdGlvbiBQKGUpe3JldHVybiBlfWZ1bmN0aW9uICQoZSl7dGhyb3cgZX1mdW5jdGlvbiBNKGUsdCxuLGkpe3ZhciByO3RyeXtlJiZfKHI9ZS5wcm9taXNlKT9yLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJl8ocj1lLnRoZW4pP3IuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKGkpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1ULkNhbGxiYWNrcz1mdW5jdGlvbihpKXt2YXIgZSxuO2k9XCJzdHJpbmdcIj09dHlwZW9mIGk/KGU9aSxuPXt9LFQuZWFjaChlLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTpULmV4dGVuZCh7fSxpKTtmdW5jdGlvbiByKCl7Zm9yKGE9YXx8aS5vbmNlLHM9bz0hMDtjLmxlbmd0aDt1PS0xKWZvcih0PWMuc2hpZnQoKTsrK3U8bC5sZW5ndGg7KSExPT09bFt1XS5hcHBseSh0WzBdLHRbMV0pJiZpLnN0b3BPbkZhbHNlJiYodT1sLmxlbmd0aCx0PSExKTtpLm1lbW9yeXx8KHQ9ITEpLG89ITEsYSYmKGw9dD9bXTpcIlwiKX12YXIgbyx0LHMsYSxsPVtdLGM9W10sdT0tMSxmPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbCYmKHQmJiFvJiYodT1sLmxlbmd0aC0xLGMucHVzaCh0KSksZnVuY3Rpb24gbihlKXtULmVhY2goZSxmdW5jdGlvbihlLHQpe18odCk/aS51bmlxdWUmJmYuaGFzKHQpfHxsLnB1c2godCk6dCYmdC5sZW5ndGgmJlwic3RyaW5nXCIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIW8mJnIoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFQuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXtmb3IodmFyIG47LTE8KG49VC5pbkFycmF5KHQsbCxuKSk7KWwuc3BsaWNlKG4sMSksbjw9dSYmdS0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPFQuaW5BcnJheShlLGwpOjA8bC5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIGw9bCYmW10sdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPWM9W10sbD10PVwiXCIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hbH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPWM9W10sdHx8b3x8KGw9dD1cIlwiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWF9LGZpcmVXaXRoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGF8fCh0PVtlLCh0PXR8fFtdKS5zbGljZT90LnNsaWNlKCk6dF0sYy5wdXNoKHQpLG98fHIoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBmLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhc319O3JldHVybiBmfSxULmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7dmFyIG89W1tcIm5vdGlmeVwiLFwicHJvZ3Jlc3NcIixULkNhbGxiYWNrcyhcIm1lbW9yeVwiKSxULkNhbGxiYWNrcyhcIm1lbW9yeVwiKSwyXSxbXCJyZXNvbHZlXCIsXCJkb25lXCIsVC5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxULkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLDAsXCJyZXNvbHZlZFwiXSxbXCJyZWplY3RcIixcImZhaWxcIixULkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLFQuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksMSxcInJlamVjdGVkXCJdXSxyPVwicGVuZGluZ1wiLHM9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBhLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sY2F0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHMudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzO3JldHVybiBULkRlZmVycmVkKGZ1bmN0aW9uKGkpe1QuZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49XyhyW3RbNF1dKSYmclt0WzRdXTthW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmXyhlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKGkubm90aWZ5KS5kb25lKGkucmVzb2x2ZSkuZmFpbChpLnJlamVjdCk6aVt0WzBdK1wiV2l0aFwiXSh0aGlzLG4/W2VdOmFyZ3VtZW50cyl9KX0pLHI9bnVsbH0pLnByb21pc2UoKX0sdGhlbjpmdW5jdGlvbih0LG4saSl7dmFyIGw9MDtmdW5jdGlvbiBjKHIsbyxzLGEpe3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgZSx0O2lmKCEocjxsKSl7aWYoKGU9cy5hcHBseShuLGkpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb25cIik7dD1lJiYoXCJvYmplY3RcIj09dHlwZW9mIGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpJiZlLnRoZW4sXyh0KT9hP3QuY2FsbChlLGMobCxvLFAsYSksYyhsLG8sJCxhKSk6KGwrKyx0LmNhbGwoZSxjKGwsbyxQLGEpLGMobCxvLCQsYSksYyhsLG8sUCxvLm5vdGlmeVdpdGgpKSk6KHMhPT1QJiYobj12b2lkIDAsaT1bZV0pLChhfHxvLnJlc29sdmVXaXRoKShuLGkpKX19dmFyIG49dGhpcyxpPWFyZ3VtZW50cyx0PWE/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7VC5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZULkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLGw8PXIrMSYmKHMhPT0kJiYobj12b2lkIDAsaT1bZV0pLG8ucmVqZWN0V2l0aChuLGkpKX19O3I/dCgpOihULkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1ULkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSx4LnNldFRpbWVvdXQodCkpfX1yZXR1cm4gVC5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChjKDAsZSxfKGkpP2k6UCxlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChjKDAsZSxfKHQpP3Q6UCkpLG9bMl1bM10uYWRkKGMoMCxlLF8obik/bjokKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/VC5leHRlbmQoZSxzKTpzfX0sYT17fTtyZXR1cm4gVC5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLGk9dFs1XTtzW3RbMV1dPW4uYWRkLGkmJm4uYWRkKGZ1bmN0aW9uKCl7cj1pfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLGFbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gYVt0WzBdK1wiV2l0aFwiXSh0aGlzPT09YT92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LGFbdFswXStcIldpdGhcIl09bi5maXJlV2l0aH0pLHMucHJvbWlzZShhKSxlJiZlLmNhbGwoYSxhKSxhfSx3aGVuOmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxvW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9hLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8cy5yZXNvbHZlV2l0aChyLG8pfX12YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bixyPUFycmF5KGkpLG89YS5jYWxsKGFyZ3VtZW50cykscz1ULkRlZmVycmVkKCk7aWYobjw9MSYmKE0oZSxzLmRvbmUodChpKSkucmVzb2x2ZSxzLnJlamVjdCwhbiksXCJwZW5kaW5nXCI9PT1zLnN0YXRlKCl8fF8ob1tpXSYmb1tpXS50aGVuKSkpcmV0dXJuIHMudGhlbigpO2Zvcig7aS0tOylNKG9baV0sdChpKSxzLnJlamVjdCk7cmV0dXJuIHMucHJvbWlzZSgpfX0pO3ZhciBxPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1QuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe3guY29uc29sZSYmeC5jb25zb2xlLndhcm4mJmUmJnEudGVzdChlLm5hbWUpJiZ4LmNvbnNvbGUud2FybihcImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246IFwiK2UubWVzc2FnZSxlLnN0YWNrLHQpfSxULnJlYWR5RXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3guc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX07dmFyIEg9VC5EZWZlcnJlZCgpO2Z1bmN0aW9uIFIoKXtDLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsUikseC5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLFIpLFQucmVhZHkoKX1ULmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBILnRoZW4oZSkuY2F0Y2goZnVuY3Rpb24oZSl7VC5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LFQuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1ULnJlYWR5V2FpdDpULmlzUmVhZHkpfHwoVC5pc1JlYWR5PSEwKSE9PWUmJjA8LS1ULnJlYWR5V2FpdHx8SC5yZXNvbHZlV2l0aChDLFtUXSl9fSksVC5yZWFkeS50aGVuPUgudGhlbixcImNvbXBsZXRlXCI9PT1DLnJlYWR5U3RhdGV8fFwibG9hZGluZ1wiIT09Qy5yZWFkeVN0YXRlJiYhQy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/eC5zZXRUaW1lb3V0KFQucmVhZHkpOihDLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsUikseC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLFIpKTt2YXIgVz1mdW5jdGlvbihlLHQsbixpLHIsbyxzKXt2YXIgYT0wLGw9ZS5sZW5ndGgsYz1udWxsPT1uO2lmKFwib2JqZWN0XCI9PT13KG4pKWZvcihhIGluIHI9ITAsbilXKGUsdCxhLG5bYV0sITAsbyxzKTtlbHNlIGlmKHZvaWQgMCE9PWkmJihyPSEwLF8oaSl8fChzPSEwKSxjJiYodD1zPyh0LmNhbGwoZSxpKSxudWxsKTooYz10LGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYy5jYWxsKFQoZSksbil9KSksdCkpZm9yKDthPGw7YSsrKXQoZVthXSxuLHM/aTppLmNhbGwoZVthXSxhLHQoZVthXSxuKSkpO3JldHVybiByP2U6Yz90LmNhbGwoZSk6bD90KGVbMF0sbik6b30sQj0vXi1tcy0vLEY9Ly0oW2Etel0pL2c7ZnVuY3Rpb24gVShlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gUShlKXtyZXR1cm4gZS5yZXBsYWNlKEIsXCJtcy1cIikucmVwbGFjZShGLFUpfWZ1bmN0aW9uIHooZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfWZ1bmN0aW9uIEsoKXt0aGlzLmV4cGFuZG89VC5leHBhbmRvK0sudWlkKyt9Sy51aWQ9MSxLLnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVt0aGlzLmV4cGFuZG9dO3JldHVybiB0fHwodD17fSx6KGUpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dDpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0aGlzLmV4cGFuZG8se3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwfSkpKSx0fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9dGhpcy5jYWNoZShlKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyW1EodCldPW47ZWxzZSBmb3IoaSBpbiB0KXJbUShpKV09dFtpXTtyZXR1cm4gcn0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtRKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmXCJzdHJpbmdcIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4saT1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09aSl7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFEpOih0PVEodCkpaW4gaT9bdF06dC5tYXRjaChMKXx8W10pLmxlbmd0aDtmb3IoO24tLTspZGVsZXRlIGlbdFtuXV19dm9pZCAwIT09dCYmIVQuaXNFbXB0eU9iamVjdChpKXx8KGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgZVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT10JiYhVC5pc0VtcHR5T2JqZWN0KHQpfX07dmFyIFk9bmV3IEssVj1uZXcgSyxHPS9eKD86XFx7W1xcd1xcV10qXFx9fFxcW1tcXHdcXFddKlxcXSkkLyxYPS9bQS1aXS9nO2Z1bmN0aW9uIEooZSx0LG4pe3ZhciBpLHI7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYoaT1cImRhdGEtXCIrdC5yZXBsYWNlKFgsXCItJCZcIikudG9Mb3dlckNhc2UoKSxcInN0cmluZ1wiPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShpKSkpe3RyeXtuPVwidHJ1ZVwiPT09KHI9bil8fFwiZmFsc2VcIiE9PXImJihcIm51bGxcIj09PXI/bnVsbDpyPT09K3IrXCJcIj8rcjpHLnRlc3Qocik/SlNPTi5wYXJzZShyKTpyKX1jYXRjaChlKXt9Vi5zZXQoZSx0LG4pfWVsc2Ugbj12b2lkIDA7cmV0dXJuIG59VC5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIFYuaGFzRGF0YShlKXx8WS5oYXNEYXRhKGUpfSxkYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVi5hY2Nlc3MoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7Vi5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBZLmFjY2VzcyhlLHQsbil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7WS5yZW1vdmUoZSx0KX19KSxULmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihuLGUpe3ZhciB0LGkscixvPXRoaXNbMF0scz1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwIT09bilyZXR1cm5cIm9iamVjdFwiPT10eXBlb2Ygbj90aGlzLmVhY2goZnVuY3Rpb24oKXtWLnNldCh0aGlzLG4pfSk6Vyh0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBvJiZ2b2lkIDA9PT1lP3ZvaWQgMCE9PSh0PVYuZ2V0KG8sbikpfHx2b2lkIDAhPT0odD1KKG8sbikpP3Q6dm9pZCAwOnZvaWQgdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Vi5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCk7aWYodGhpcy5sZW5ndGgmJihyPVYuZ2V0KG8pLDE9PT1vLm5vZGVUeXBlJiYhWS5nZXQobyxcImhhc0RhdGFBdHRyc1wiKSkpe2Zvcih0PXMubGVuZ3RoO3QtLTspc1t0XSYmMD09PShpPXNbdF0ubmFtZSkuaW5kZXhPZihcImRhdGEtXCIpJiYoaT1RKGkuc2xpY2UoNSkpLEoobyxpLHJbaV0pKTtZLnNldChvLFwiaGFzRGF0YUF0dHJzXCIsITApfXJldHVybiByfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtWLnJlbW92ZSh0aGlzLGUpfSl9fSksVC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaTtpZihlKXJldHVybiB0PSh0fHxcImZ4XCIpK1wicXVldWVcIixpPVkuZ2V0KGUsdCksbiYmKCFpfHxBcnJheS5pc0FycmF5KG4pP2k9WS5hY2Nlc3MoZSx0LFQubWFrZUFycmF5KG4pKTppLnB1c2gobikpLGl8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGUsdCl7dD10fHxcImZ4XCI7dmFyIG49VC5xdWV1ZShlLHQpLGk9bi5sZW5ndGgscj1uLnNoaWZ0KCksbz1ULl9xdWV1ZUhvb2tzKGUsdCk7XCJpbnByb2dyZXNzXCI9PT1yJiYocj1uLnNoaWZ0KCksaS0tKSxyJiYoXCJmeFwiPT09dCYmbi51bnNoaWZ0KFwiaW5wcm9ncmVzc1wiKSxkZWxldGUgby5zdG9wLHIuY2FsbChlLGZ1bmN0aW9uKCl7VC5kZXF1ZXVlKGUsdCl9LG8pKSwhaSYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCtcInF1ZXVlSG9va3NcIjtyZXR1cm4gWS5nZXQoZSxuKXx8WS5hY2Nlc3MoZSxuLHtlbXB0eTpULkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLmFkZChmdW5jdGlvbigpe1kucmVtb3ZlKGUsW3QrXCJxdWV1ZVwiLG5dKX0pfSl9fSksVC5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmKG49dCx0PVwiZnhcIixlLS0pLGFyZ3VtZW50cy5sZW5ndGg8ZT9ULnF1ZXVlKHRoaXNbMF0sdCk6dm9pZCAwPT09bj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVQucXVldWUodGhpcyx0LG4pO1QuX3F1ZXVlSG9va3ModGhpcyx0KSxcImZ4XCI9PT10JiZcImlucHJvZ3Jlc3NcIiE9PWVbMF0mJlQuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1QuZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8XCJmeFwiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXstLXJ8fG8ucmVzb2x2ZVdpdGgocyxbc10pfXZhciBpLHI9MSxvPVQuRGVmZXJyZWQoKSxzPXRoaXMsYT10aGlzLmxlbmd0aDtmb3IoXCJzdHJpbmdcIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8XCJmeFwiO2EtLTspKGk9WS5nZXQoc1thXSxlK1wicXVldWVIb29rc1wiKSkmJmkuZW1wdHkmJihyKyssaS5lbXB0eS5hZGQobikpO3JldHVybiBuKCksby5wcm9taXNlKHQpfX0pO3ZhciBaPS9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvLnNvdXJjZSxlZT1uZXcgUmVnRXhwKFwiXig/OihbKy1dKT18KShcIitaK1wiKShbYS16JV0qKSRcIixcImlcIiksdGU9W1wiVG9wXCIsXCJSaWdodFwiLFwiQm90dG9tXCIsXCJMZWZ0XCJdLG5lPUMuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBULmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0scmU9e2NvbXBvc2VkOiEwfTtuZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBULmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShyZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgb2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIm5vbmVcIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fFwiXCI9PT1lLnN0eWxlLmRpc3BsYXkmJmllKGUpJiZcIm5vbmVcIj09PVQuY3NzKGUsXCJkaXNwbGF5XCIpfTtmdW5jdGlvbiBzZShlLHQsbixpKXt2YXIgcixvLHM9MjAsYT1pP2Z1bmN0aW9uKCl7cmV0dXJuIGkuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIFQuY3NzKGUsdCxcIlwiKX0sbD1hKCksYz1uJiZuWzNdfHwoVC5jc3NOdW1iZXJbdF0/XCJcIjpcInB4XCIpLHU9ZS5ub2RlVHlwZSYmKFQuY3NzTnVtYmVyW3RdfHxcInB4XCIhPT1jJiYrbCkmJmVlLmV4ZWMoVC5jc3MoZSx0KSk7aWYodSYmdVszXSE9PWMpe2ZvcihsLz0yLGM9Y3x8dVszXSx1PStsfHwxO3MtLTspVC5zdHlsZShlLHQsdStjKSwoMS1vKSooMS0obz1hKCkvbHx8LjUpKTw9MCYmKHM9MCksdS89bzt1Kj0yLFQuc3R5bGUoZSx0LHUrYyksbj1ufHxbXX1yZXR1cm4gbiYmKHU9K3V8fCtsfHwwLHI9blsxXT91KyhuWzFdKzEpKm5bMl06K25bMl0saSYmKGkudW5pdD1jLGkuc3RhcnQ9dSxpLmVuZD1yKSkscn12YXIgYWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4saSxyLG8scyxhLGwsYz1bXSx1PTAsZj1lLmxlbmd0aDt1PGY7dSsrKShpPWVbdV0pLnN0eWxlJiYobj1pLnN0eWxlLmRpc3BsYXksdD8oXCJub25lXCI9PT1uJiYoY1t1XT1ZLmdldChpLFwiZGlzcGxheVwiKXx8bnVsbCxjW3VdfHwoaS5zdHlsZS5kaXNwbGF5PVwiXCIpKSxcIlwiPT09aS5zdHlsZS5kaXNwbGF5JiZvZShpKSYmKGNbdV09KGw9cz1vPXZvaWQgMCxzPShyPWkpLm93bmVyRG9jdW1lbnQsYT1yLm5vZGVOYW1lLChsPWFlW2FdKXx8KG89cy5ib2R5LmFwcGVuZENoaWxkKHMuY3JlYXRlRWxlbWVudChhKSksbD1ULmNzcyhvLFwiZGlzcGxheVwiKSxvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobyksXCJub25lXCI9PT1sJiYobD1cImJsb2NrXCIpLGFlW2FdPWwpKSkpOlwibm9uZVwiIT09biYmKGNbdV09XCJub25lXCIsWS5zZXQoaSxcImRpc3BsYXlcIixuKSkpO2Zvcih1PTA7dTxmO3UrKyludWxsIT1jW3VdJiYoZVt1XS5zdHlsZS5kaXNwbGF5PWNbdV0pO3JldHVybiBlfVQuZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIGxlKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlP2U/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7b2UodGhpcyk/VCh0aGlzKS5zaG93KCk6VCh0aGlzKS5oaWRlKCl9KX19KTt2YXIgY2UsdWUsZmU9L14oPzpjaGVja2JveHxyYWRpbykkL2ksZGU9LzwoW2Etel1bXlxcL1xcMD5cXHgyMFxcdFxcclxcblxcZl0qKS9pLGhlPS9eJHxebW9kdWxlJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9Qy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSwodWU9Qy5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIikpLnNldEF0dHJpYnV0ZShcInR5cGVcIixcInJhZGlvXCIpLHVlLnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIixcImNoZWNrZWRcIiksdWUuc2V0QXR0cmlidXRlKFwibmFtZVwiLFwidFwiKSxjZS5hcHBlbmRDaGlsZCh1ZSkseS5jaGVja0Nsb25lPWNlLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxjZS5pbm5lckhUTUw9XCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9XCI8b3B0aW9uPjwvb3B0aW9uPlwiLHkub3B0aW9uPSEhY2UubGFzdENoaWxkO3ZhciBwZT17dGhlYWQ6WzEsXCI8dGFibGU+XCIsXCI8L3RhYmxlPlwiXSxjb2w6WzIsXCI8dGFibGU+PGNvbGdyb3VwPlwiLFwiPC9jb2xncm91cD48L3RhYmxlPlwiXSx0cjpbMixcIjx0YWJsZT48dGJvZHk+XCIsXCI8L3Rib2R5PjwvdGFibGU+XCJdLHRkOlszLFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIl0sX2RlZmF1bHQ6WzAsXCJcIixcIlwiXX07ZnVuY3Rpb24gZ2UoZSx0KXt2YXIgbj12b2lkIDAhPT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUodHx8XCIqXCIpOnZvaWQgMCE9PWUucXVlcnlTZWxlY3RvckFsbD9lLnF1ZXJ5U2VsZWN0b3JBbGwodHx8XCIqXCIpOltdO3JldHVybiB2b2lkIDA9PT10fHx0JiZBKGUsdCk/VC5tZXJnZShbZV0sbik6bn1mdW5jdGlvbiBtZShlLHQpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKylZLnNldChlW25dLFwiZ2xvYmFsRXZhbFwiLCF0fHxZLmdldCh0W25dLFwiZ2xvYmFsRXZhbFwiKSl9cGUudGJvZHk9cGUudGZvb3Q9cGUuY29sZ3JvdXA9cGUuY2FwdGlvbj1wZS50aGVhZCxwZS50aD1wZS50ZCx5Lm9wdGlvbnx8KHBlLm9wdGdyb3VwPXBlLm9wdGlvbj1bMSxcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIixcIjwvc2VsZWN0PlwiXSk7dmFyIHZlPS88fCYjP1xcdys7LztmdW5jdGlvbiB5ZShlLHQsbixpLHIpe2Zvcih2YXIgbyxzLGEsbCxjLHUsZj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxkPVtdLGg9MCxwPWUubGVuZ3RoO2g8cDtoKyspaWYoKG89ZVtoXSl8fDA9PT1vKWlmKFwib2JqZWN0XCI9PT13KG8pKVQubWVyZ2UoZCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKHZlLnRlc3Qobykpe2ZvcihzPXN8fGYuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSxhPShkZS5leGVjKG8pfHxbXCJcIixcIlwiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXBlW2FdfHxwZS5fZGVmYXVsdCxzLmlubmVySFRNTD1sWzFdK1QuaHRtbFByZWZpbHRlcihvKStsWzJdLHU9bFswXTt1LS07KXM9cy5sYXN0Q2hpbGQ7VC5tZXJnZShkLHMuY2hpbGROb2RlcyksKHM9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD1cIlwifWVsc2UgZC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2ZvcihmLnRleHRDb250ZW50PVwiXCIsaD0wO289ZFtoKytdOylpZihpJiYtMTxULmluQXJyYXkobyxpKSlyJiZyLnB1c2gobyk7ZWxzZSBpZihjPWllKG8pLHM9Z2UoZi5hcHBlbmRDaGlsZChvKSxcInNjcmlwdFwiKSxjJiZtZShzKSxuKWZvcih1PTA7bz1zW3UrK107KWhlLnRlc3Qoby50eXBlfHxcIlwiKSYmbi5wdXNoKG8pO3JldHVybiBmfXZhciBfZT0vXmtleS8sYmU9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHdlPS9eKFteLl0qKSg/OlxcLiguKyl8KS87ZnVuY3Rpb24gRWUoKXtyZXR1cm4hMH1mdW5jdGlvbiB4ZSgpe3JldHVybiExfWZ1bmN0aW9uIENlKGUsdCl7cmV0dXJuIGU9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gQy5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319KCk9PShcImZvY3VzXCI9PT10KX1mdW5jdGlvbiBUZShlLHQsbixpLHIsbyl7dmFyIHMsYTtpZihcIm9iamVjdFwiPT10eXBlb2YgdCl7Zm9yKGEgaW5cInN0cmluZ1wiIT10eXBlb2YgbiYmKGk9aXx8bixuPXZvaWQgMCksdClUZShlLGEsbixpLHRbYV0sbyk7cmV0dXJuIGV9aWYobnVsbD09aSYmbnVsbD09cj8ocj1uLGk9bj12b2lkIDApOm51bGw9PXImJihcInN0cmluZ1wiPT10eXBlb2Ygbj8ocj1pLGk9dm9pZCAwKToocj1pLGk9bixuPXZvaWQgMCkpLCExPT09cilyPXhlO2Vsc2UgaWYoIXIpcmV0dXJuIGU7cmV0dXJuIDE9PT1vJiYocz1yLChyPWZ1bmN0aW9uKGUpe3JldHVybiBUKCkub2ZmKGUpLHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkuZ3VpZD1zLmd1aWR8fChzLmd1aWQ9VC5ndWlkKyspKSxlLmVhY2goZnVuY3Rpb24oKXtULmV2ZW50LmFkZCh0aGlzLHQscixpLG4pfSl9ZnVuY3Rpb24gQWUoZSxyLG8pe28/KFkuc2V0KGUsciwhMSksVC5ldmVudC5hZGQoZSxyLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdCxuLGk9WS5nZXQodGhpcyxyKTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW3JdKXtpZihpLmxlbmd0aCkoVC5ldmVudC5zcGVjaWFsW3JdfHx7fSkuZGVsZWdhdGVUeXBlJiZlLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoaT1hLmNhbGwoYXJndW1lbnRzKSxZLnNldCh0aGlzLHIsaSksdD1vKHRoaXMsciksdGhpc1tyXSgpLGkhPT0obj1ZLmdldCh0aGlzLHIpKXx8dD9ZLnNldCh0aGlzLHIsITEpOm49e30saSE9PW4pcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLG4udmFsdWV9ZWxzZSBpLmxlbmd0aCYmKFkuc2V0KHRoaXMscix7dmFsdWU6VC5ldmVudC50cmlnZ2VyKFQuZXh0ZW5kKGlbMF0sVC5FdmVudC5wcm90b3R5cGUpLGkuc2xpY2UoMSksdGhpcyl9KSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19KSk6dm9pZCAwPT09WS5nZXQoZSxyKSYmVC5ldmVudC5hZGQoZSxyLEVlKX1ULmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG8scyxhLGwsYyx1LGYsZCxoLHAsZyxtPVkuZ2V0KHQpO2lmKHoodCkpZm9yKG4uaGFuZGxlciYmKG49KG89bikuaGFuZGxlcixyPW8uc2VsZWN0b3IpLHImJlQuZmluZC5tYXRjaGVzU2VsZWN0b3IobmUsciksbi5ndWlkfHwobi5ndWlkPVQuZ3VpZCsrKSwobD1tLmV2ZW50cyl8fChsPW0uZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChzPW0uaGFuZGxlKXx8KHM9bS5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PVQmJlQuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1QuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGM9KGU9KGV8fFwiXCIpLm1hdGNoKEwpfHxbXCJcIl0pLmxlbmd0aDtjLS07KWg9Zz0oYT13ZS5leGVjKGVbY10pfHxbXSlbMV0scD0oYVsyXXx8XCJcIikuc3BsaXQoXCIuXCIpLnNvcnQoKSxoJiYoZj1ULmV2ZW50LnNwZWNpYWxbaF18fHt9LGg9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGgsZj1ULmV2ZW50LnNwZWNpYWxbaF18fHt9LHU9VC5leHRlbmQoe3R5cGU6aCxvcmlnVHlwZTpnLGRhdGE6aSxoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6cixuZWVkc0NvbnRleHQ6ciYmVC5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KHIpLG5hbWVzcGFjZTpwLmpvaW4oXCIuXCIpfSxvKSwoZD1sW2hdKXx8KChkPWxbaF09W10pLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiYhMSE9PWYuc2V0dXAuY2FsbCh0LGkscCxzKXx8dC5hZGRFdmVudExpc3RlbmVyJiZ0LmFkZEV2ZW50TGlzdGVuZXIoaCxzKSksZi5hZGQmJihmLmFkZC5jYWxsKHQsdSksdS5oYW5kbGVyLmd1aWR8fCh1LmhhbmRsZXIuZ3VpZD1uLmd1aWQpKSxyP2Quc3BsaWNlKGQuZGVsZWdhdGVDb3VudCsrLDAsdSk6ZC5wdXNoKHUpLFQuZXZlbnQuZ2xvYmFsW2hdPSEwKX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCxuLGkscil7dmFyIG8scyxhLGwsYyx1LGYsZCxoLHAsZyxtPVkuaGFzRGF0YShlKSYmWS5nZXQoZSk7aWYobSYmKGw9bS5ldmVudHMpKXtmb3IoYz0odD0odHx8XCJcIikubWF0Y2goTCl8fFtcIlwiXSkubGVuZ3RoO2MtLTspaWYoaD1nPShhPXdlLmV4ZWModFtjXSl8fFtdKVsxXSxwPShhWzJdfHxcIlwiKS5zcGxpdChcIi5cIikuc29ydCgpLGgpe2ZvcihmPVQuZXZlbnQuc3BlY2lhbFtoXXx8e30sZD1sW2g9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGhdfHxbXSxhPWFbMl0mJm5ldyBSZWdFeHAoXCIoXnxcXFxcLilcIitwLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKSxzPW89ZC5sZW5ndGg7by0tOyl1PWRbb10sIXImJmchPT11Lm9yaWdUeXBlfHxuJiZuLmd1aWQhPT11Lmd1aWR8fGEmJiFhLnRlc3QodS5uYW1lc3BhY2UpfHxpJiZpIT09dS5zZWxlY3RvciYmKFwiKipcIiE9PWl8fCF1LnNlbGVjdG9yKXx8KGQuc3BsaWNlKG8sMSksdS5zZWxlY3RvciYmZC5kZWxlZ2F0ZUNvdW50LS0sZi5yZW1vdmUmJmYucmVtb3ZlLmNhbGwoZSx1KSk7cyYmIWQubGVuZ3RoJiYoZi50ZWFyZG93biYmITEhPT1mLnRlYXJkb3duLmNhbGwoZSxwLG0uaGFuZGxlKXx8VC5yZW1vdmVFdmVudChlLGgsbS5oYW5kbGUpLGRlbGV0ZSBsW2hdKX1lbHNlIGZvcihoIGluIGwpVC5ldmVudC5yZW1vdmUoZSxoK3RbY10sbixpLCEwKTtULmlzRW1wdHlPYmplY3QobCkmJlkucmVtb3ZlKGUsXCJoYW5kbGUgZXZlbnRzXCIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHIsbyxzLGE9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGw9VC5ldmVudC5maXgoZSksYz0oWS5nZXQodGhpcyxcImV2ZW50c1wiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbbC50eXBlXXx8W10sdT1ULmV2ZW50LnNwZWNpYWxbbC50eXBlXXx8e307Zm9yKGFbMF09bCx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylhW3RdPWFyZ3VtZW50c1t0XTtpZihsLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIXUucHJlRGlzcGF0Y2h8fCExIT09dS5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsbCkpe2ZvcihzPVQuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGwsYyksdD0wOyhyPXNbdCsrXSkmJiFsLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWZvcihsLmN1cnJlbnRUYXJnZXQ9ci5lbGVtLG49MDsobz1yLmhhbmRsZXJzW24rK10pJiYhbC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpOylsLnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiFsLnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fChsLmhhbmRsZU9iaj1vLGwuZGF0YT1vLmRhdGEsdm9pZCAwIT09KGk9KChULmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoci5lbGVtLGEpKSYmITE9PT0obC5yZXN1bHQ9aSkmJihsLnByZXZlbnREZWZhdWx0KCksbC5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiB1LnBvc3REaXNwYXRjaCYmdS5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGwpLGwucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHIsbyxzLGE9W10sbD10LmRlbGVnYXRlQ291bnQsYz1lLnRhcmdldDtpZihsJiZjLm5vZGVUeXBlJiYhKFwiY2xpY2tcIj09PWUudHlwZSYmMTw9ZS5idXR0b24pKWZvcig7YyE9PXRoaXM7Yz1jLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWMubm9kZVR5cGUmJihcImNsaWNrXCIhPT1lLnR5cGV8fCEwIT09Yy5kaXNhYmxlZCkpe2ZvcihvPVtdLHM9e30sbj0wO248bDtuKyspdm9pZCAwPT09c1tyPShpPXRbbl0pLnNlbGVjdG9yK1wiIFwiXSYmKHNbcl09aS5uZWVkc0NvbnRleHQ/LTE8VChyLHRoaXMpLmluZGV4KGMpOlQuZmluZChyLHRoaXMsbnVsbCxbY10pLmxlbmd0aCksc1tyXSYmby5wdXNoKGkpO28ubGVuZ3RoJiZhLnB1c2goe2VsZW06YyxoYW5kbGVyczpvfSl9cmV0dXJuIGM9dGhpcyxsPHQubGVuZ3RoJiZhLnB1c2goe2VsZW06YyxoYW5kbGVyczp0LnNsaWNlKGwpfSksYX0sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShULkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6XyhlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbVC5leHBhbmRvXT9lOm5ldyBULkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIGZlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LFwiaW5wdXRcIikmJkFlKHQsXCJjbGlja1wiLEVlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBmZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCxcImlucHV0XCIpJiZBZSh0LFwiY2xpY2tcIiksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3JldHVybiBmZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCxcImlucHV0XCIpJiZZLmdldCh0LFwiY2xpY2tcIil8fEEodCxcImFcIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihlKXt2b2lkIDAhPT1lLnJlc3VsdCYmZS5vcmlnaW5hbEV2ZW50JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWUucmVzdWx0KX19fX0sVC5yZW1vdmVFdmVudD1mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0sVC5FdmVudD1mdW5jdGlvbihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFQuRXZlbnQpKXJldHVybiBuZXcgVC5FdmVudChlLHQpO2UmJmUudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWUsdGhpcy50eXBlPWUudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1lLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWUuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1lLnJldHVyblZhbHVlP0VlOnhlLHRoaXMudGFyZ2V0PWUudGFyZ2V0JiYzPT09ZS50YXJnZXQubm9kZVR5cGU/ZS50YXJnZXQucGFyZW50Tm9kZTplLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9ZS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1lLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1lLHQmJlQuZXh0ZW5kKHRoaXMsdCksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fERhdGUubm93KCksdGhpc1tULmV4cGFuZG9dPSEwfSxULkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6VC5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6eGUsaXNQcm9wYWdhdGlvblN0b3BwZWQ6eGUsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6eGUsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9RWUsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUucHJldmVudERlZmF1bHQoKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9RWUsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPUVlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxULmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsY2hhcjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYnV0dG9uO3JldHVybiBudWxsPT1lLndoaWNoJiZfZS50ZXN0KGUudHlwZSk/bnVsbCE9ZS5jaGFyQ29kZT9lLmNoYXJDb2RlOmUua2V5Q29kZTohZS53aGljaCYmdm9pZCAwIT09dCYmYmUudGVzdChlLnR5cGUpPzEmdD8xOjImdD8zOjQmdD8yOjA6ZS53aGljaH19LFQuZXZlbnQuYWRkUHJvcCksVC5lYWNoKHtmb2N1czpcImZvY3VzaW5cIixibHVyOlwiZm9jdXNvdXRcIn0sZnVuY3Rpb24oZSx0KXtULmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIEFlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gQWUodGhpcyxlKSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksVC5lYWNoKHttb3VzZWVudGVyOlwibW91c2VvdmVyXCIsbW91c2VsZWF2ZTpcIm1vdXNlb3V0XCIscG9pbnRlcmVudGVyOlwicG9pbnRlcm92ZXJcIixwb2ludGVybGVhdmU6XCJwb2ludGVyb3V0XCJ9LGZ1bmN0aW9uKGUscil7VC5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6cixiaW5kVHlwZTpyLGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdCxuPWUucmVsYXRlZFRhcmdldCxpPWUuaGFuZGxlT2JqO3JldHVybiBuJiYobj09PXRoaXN8fFQuY29udGFpbnModGhpcyxuKSl8fChlLnR5cGU9aS5vcmlnVHlwZSx0PWkuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPXIpLHR9fX0pLFQuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gVGUodGhpcyxlLHQsbixpKX0sb25lOmZ1bmN0aW9uKGUsdCxuLGkpe3JldHVybiBUZSh0aGlzLGUsdCxuLGksMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIGkscjtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gaT1lLmhhbmRsZU9iaixUKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlK1wiLlwiK2kubmFtZXNwYWNlOmkub3JpZ1R5cGUsaS5zZWxlY3RvcixpLmhhbmRsZXIpLHRoaXM7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUpcmV0dXJuITEhPT10JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHwobj10LHQ9dm9pZCAwKSwhMT09PW4mJihuPXhlKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtULmV2ZW50LnJlbW92ZSh0aGlzLGUsbix0KX0pO2ZvcihyIGluIGUpdGhpcy5vZmYocix0LGVbcl0pO3JldHVybiB0aGlzfX0pO3ZhciBTZT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxEZT0vY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLE9lPS9eXFxzKjwhKD86XFxbQ0RBVEFcXFt8LS0pfCg/OlxcXVxcXXwtLSk+XFxzKiQvZztmdW5jdGlvbiBrZShlLHQpe3JldHVybiBBKGUsXCJ0YWJsZVwiKSYmQSgxMSE9PXQubm9kZVR5cGU/dDp0LmZpcnN0Q2hpbGQsXCJ0clwiKSYmVChlKS5jaGlsZHJlbihcInRib2R5XCIpWzBdfHxlfWZ1bmN0aW9uIEllKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZShcInR5cGVcIikpK1wiL1wiK2UudHlwZSxlfWZ1bmN0aW9uIGplKGUpe3JldHVyblwidHJ1ZS9cIj09PShlLnR5cGV8fFwiXCIpLnNsaWNlKDAsNSk/ZS50eXBlPWUudHlwZS5zbGljZSg1KTplLnJlbW92ZUF0dHJpYnV0ZShcInR5cGVcIiksZX1mdW5jdGlvbiBOZShlLHQpe3ZhciBuLGkscixvLHMsYTtpZigxPT09dC5ub2RlVHlwZSl7aWYoWS5oYXNEYXRhKGUpJiYoYT1ZLmdldChlKS5ldmVudHMpKWZvcihyIGluIFkucmVtb3ZlKHQsXCJoYW5kbGUgZXZlbnRzXCIpLGEpZm9yKG49MCxpPWFbcl0ubGVuZ3RoO248aTtuKyspVC5ldmVudC5hZGQodCxyLGFbcl1bbl0pO1YuaGFzRGF0YShlKSYmKG89Vi5hY2Nlc3MoZSkscz1ULmV4dGVuZCh7fSxvKSxWLnNldCh0LHMpKX19ZnVuY3Rpb24gTGUobixpLHIsbyl7aT1tKGkpO3ZhciBlLHQscyxhLGwsYyx1PTAsZj1uLmxlbmd0aCxkPWYtMSxoPWlbMF0scD1fKGgpO2lmKHB8fDE8ZiYmXCJzdHJpbmdcIj09dHlwZW9mIGgmJiF5LmNoZWNrQ2xvbmUmJkRlLnRlc3QoaCkpcmV0dXJuIG4uZWFjaChmdW5jdGlvbihlKXt2YXIgdD1uLmVxKGUpO3AmJihpWzBdPWguY2FsbCh0aGlzLGUsdC5odG1sKCkpKSxMZSh0LGkscixvKX0pO2lmKGYmJih0PShlPXllKGksblswXS5vd25lckRvY3VtZW50LCExLG4sbykpLmZpcnN0Q2hpbGQsMT09PWUuY2hpbGROb2Rlcy5sZW5ndGgmJihlPXQpLHR8fG8pKXtmb3IoYT0ocz1ULm1hcChnZShlLFwic2NyaXB0XCIpLEllKSkubGVuZ3RoO3U8Zjt1KyspbD1lLHUhPT1kJiYobD1ULmNsb25lKGwsITAsITApLGEmJlQubWVyZ2UocyxnZShsLFwic2NyaXB0XCIpKSksci5jYWxsKG5bdV0sbCx1KTtpZihhKWZvcihjPXNbcy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxULm1hcChzLGplKSx1PTA7dTxhO3UrKylsPXNbdV0saGUudGVzdChsLnR5cGV8fFwiXCIpJiYhWS5hY2Nlc3MobCxcImdsb2JhbEV2YWxcIikmJlQuY29udGFpbnMoYyxsKSYmKGwuc3JjJiZcIm1vZHVsZVwiIT09KGwudHlwZXx8XCJcIikudG9Mb3dlckNhc2UoKT9ULl9ldmFsVXJsJiYhbC5ub01vZHVsZSYmVC5fZXZhbFVybChsLnNyYyx7bm9uY2U6bC5ub25jZXx8bC5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKX0sYyk6YihsLnRleHRDb250ZW50LnJlcGxhY2UoT2UsXCJcIiksbCxjKSl9cmV0dXJuIG59ZnVuY3Rpb24gUGUoZSx0LG4pe2Zvcih2YXIgaSxyPXQ/VC5maWx0ZXIodCxlKTplLG89MDtudWxsIT0oaT1yW29dKTtvKyspbnx8MSE9PWkubm9kZVR5cGV8fFQuY2xlYW5EYXRhKGdlKGkpKSxpLnBhcmVudE5vZGUmJihuJiZpZShpKSYmbWUoZ2UoaSxcInNjcmlwdFwiKSksaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKTtyZXR1cm4gZX1ULmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIsbyxzLGEsbCxjLHU9ZS5jbG9uZU5vZGUoITApLGY9aWUoZSk7aWYoISh5Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxULmlzWE1MRG9jKGUpKSlmb3Iocz1nZSh1KSxpPTAscj0obz1nZShlKSkubGVuZ3RoO2k8cjtpKyspYT1vW2ldLGw9c1tpXSxcImlucHV0XCI9PT0oYz1sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZmZS50ZXN0KGEudHlwZSk/bC5jaGVja2VkPWEuY2hlY2tlZDpcImlucHV0XCIhPT1jJiZcInRleHRhcmVhXCIhPT1jfHwobC5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpO2lmKHQpaWYobilmb3Iobz1vfHxnZShlKSxzPXN8fGdlKHUpLGk9MCxyPW8ubGVuZ3RoO2k8cjtpKyspTmUob1tpXSxzW2ldKTtlbHNlIE5lKGUsdSk7cmV0dXJuIDA8KHM9Z2UodSxcInNjcmlwdFwiKSkubGVuZ3RoJiZtZShzLCFmJiZnZShlLFwic2NyaXB0XCIpKSx1fSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4saSxyPVQuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKHoobikpe2lmKHQ9bltZLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IoaSBpbiB0LmV2ZW50cylyW2ldP1QuZXZlbnQucmVtb3ZlKG4saSk6VC5yZW1vdmVFdmVudChuLGksdC5oYW5kbGUpO25bWS5leHBhbmRvXT12b2lkIDB9bltWLmV4cGFuZG9dJiYobltWLmV4cGFuZG9dPXZvaWQgMCl9fX0pLFQuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFBlKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gUGUodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP1QudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1lKX0pfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBMZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8a2UodGhpcyxlKS5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIExlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0OzEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodD1rZSh0aGlzLGUpKS5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBMZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBMZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoVC5jbGVhbkRhdGEoZ2UoZSwhMSkpLGUudGV4dENvbnRlbnQ9XCJcIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIFQuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAsaT10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJiFTZS50ZXN0KGUpJiYhcGVbKGRlLmV4ZWMoZSl8fFtcIlwiLFwiXCJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1ULmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxpO24rKykxPT09KHQ9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoVC5jbGVhbkRhdGEoZ2UodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gTGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO1QuaW5BcnJheSh0aGlzLG4pPDAmJihULmNsZWFuRGF0YShnZSh0aGlzKSksdCYmdC5yZXBsYWNlQ2hpbGQoZSx0aGlzKSl9LG4pfX0pLFQuZWFjaCh7YXBwZW5kVG86XCJhcHBlbmRcIixwcmVwZW5kVG86XCJwcmVwZW5kXCIsaW5zZXJ0QmVmb3JlOlwiYmVmb3JlXCIsaW5zZXJ0QWZ0ZXI6XCJhZnRlclwiLHJlcGxhY2VBbGw6XCJyZXBsYWNlV2l0aFwifSxmdW5jdGlvbihlLHMpe1QuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10saT1UKGUpLHI9aS5sZW5ndGgtMSxvPTA7bzw9cjtvKyspdD1vPT09cj90aGlzOnRoaXMuY2xvbmUoITApLFQoaVtvXSlbc10odCksbC5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTtmdW5jdGlvbiAkZShlLHQsbil7dmFyIGkscixvPXt9O2ZvcihyIGluIHQpb1tyXT1lLnN0eWxlW3JdLGUuc3R5bGVbcl09dFtyXTtmb3IociBpbiBpPW4uY2FsbChlKSx0KWUuc3R5bGVbcl09b1tyXTtyZXR1cm4gaX12YXIgTWUscWUsSGUsUmUsV2UsQmUsRmUsVWUsUWU9bmV3IFJlZ0V4cChcIl4oXCIrWitcIikoPyFweClbYS16JV0rJFwiLFwiaVwiKSx6ZT1mdW5jdGlvbihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIHQmJnQub3BlbmVyfHwodD14KSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LEtlPW5ldyBSZWdFeHAodGUuam9pbihcInxcIiksXCJpXCIpO2Z1bmN0aW9uIFllKCl7dmFyIGU7VWUmJihGZS5zdHlsZS5jc3NUZXh0PVwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MFwiLFVlLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElXCIsbmUuYXBwZW5kQ2hpbGQoRmUpLmFwcGVuZENoaWxkKFVlKSxlPXguZ2V0Q29tcHV0ZWRTdHlsZShVZSksTWU9XCIxJVwiIT09ZS50b3AsQmU9MTI9PT1WZShlLm1hcmdpbkxlZnQpLFVlLnN0eWxlLnJpZ2h0PVwiNjAlXCIsUmU9MzY9PT1WZShlLnJpZ2h0KSxxZT0zNj09PVZlKGUud2lkdGgpLFVlLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixIZT0xMj09PVZlKFVlLm9mZnNldFdpZHRoLzMpLG5lLnJlbW92ZUNoaWxkKEZlKSxVZT1udWxsKX1mdW5jdGlvbiBWZShlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKX1mdW5jdGlvbiBHZShlLHQsbil7dmFyIGkscixvLHMsYT1lLnN0eWxlO3JldHVybihuPW58fHplKGUpKSYmKFwiXCIhPT0ocz1uLmdldFByb3BlcnR5VmFsdWUodCl8fG5bdF0pfHxpZShlKXx8KHM9VC5zdHlsZShlLHQpKSwheS5waXhlbEJveFN0eWxlcygpJiZRZS50ZXN0KHMpJiZLZS50ZXN0KHQpJiYoaT1hLndpZHRoLHI9YS5taW5XaWR0aCxvPWEubWF4V2lkdGgsYS5taW5XaWR0aD1hLm1heFdpZHRoPWEud2lkdGg9cyxzPW4ud2lkdGgsYS53aWR0aD1pLGEubWluV2lkdGg9cixhLm1heFdpZHRoPW8pKSx2b2lkIDAhPT1zP3MrXCJcIjpzfWZ1bmN0aW9uIFhlKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX1GZT1DLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksKFVlPUMuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuc3R5bGUmJihVZS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD1cImNvbnRlbnQtYm94XCIsVWUuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD1cIlwiLHkuY2xlYXJDbG9uZVN0eWxlPVwiY29udGVudC1ib3hcIj09PVVlLnN0eWxlLmJhY2tncm91bmRDbGlwLFQuZXh0ZW5kKHkse2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIFllKCkscWV9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIFllKCksUmV9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gWWUoKSxNZX0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIFllKCksQmV9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gWWUoKSxIZX0scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZSx0LG4saTtyZXR1cm4gbnVsbD09V2UmJihlPUMuY3JlYXRlRWxlbWVudChcInRhYmxlXCIpLHQ9Qy5jcmVhdGVFbGVtZW50KFwidHJcIiksbj1DLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS5zdHlsZS5jc3NUZXh0PVwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweFwiLHQuc3R5bGUuaGVpZ2h0PVwiMXB4XCIsbi5zdHlsZS5oZWlnaHQ9XCI5cHhcIixuZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxpPXguZ2V0Q29tcHV0ZWRTdHlsZSh0KSxXZT0zPHBhcnNlSW50KGkuaGVpZ2h0KSxuZS5yZW1vdmVDaGlsZChlKSksV2V9fSkpO3ZhciBKZT1bXCJXZWJraXRcIixcIk1velwiLFwibXNcIl0sWmU9Qy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLGV0PXt9O2Z1bmN0aW9uIHR0KGUpe3ZhciB0PVQuY3NzUHJvcHNbZV18fGV0W2VdO3JldHVybiB0fHwoZSBpbiBaZT9lOmV0W2VdPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPUplLmxlbmd0aDtuLS07KWlmKChlPUplW25dK3QpaW4gWmUpcmV0dXJuIGV9KGUpfHxlKX12YXIgbnQ9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLGl0PS9eLS0vLHJ0PXtwb3NpdGlvbjpcImFic29sdXRlXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLGRpc3BsYXk6XCJibG9ja1wifSxvdD17bGV0dGVyU3BhY2luZzpcIjBcIixmb250V2VpZ2h0OlwiNDAwXCJ9O2Z1bmN0aW9uIHN0KGUsdCxuKXt2YXIgaT1lZS5leGVjKHQpO3JldHVybiBpP01hdGgubWF4KDAsaVsyXS0obnx8MCkpKyhpWzNdfHxcInB4XCIpOnR9ZnVuY3Rpb24gYXQoZSx0LG4saSxyLG8pe3ZhciBzPVwid2lkdGhcIj09PXQ/MTowLGE9MCxsPTA7aWYobj09PShpP1wiYm9yZGVyXCI6XCJjb250ZW50XCIpKXJldHVybiAwO2Zvcig7czw0O3MrPTIpXCJtYXJnaW5cIj09PW4mJihsKz1ULmNzcyhlLG4rdGVbc10sITAscikpLGk/KFwiY29udGVudFwiPT09biYmKGwtPVQuY3NzKGUsXCJwYWRkaW5nXCIrdGVbc10sITAscikpLFwibWFyZ2luXCIhPT1uJiYobC09VC5jc3MoZSxcImJvcmRlclwiK3RlW3NdK1wiV2lkdGhcIiwhMCxyKSkpOihsKz1ULmNzcyhlLFwicGFkZGluZ1wiK3RlW3NdLCEwLHIpLFwicGFkZGluZ1wiIT09bj9sKz1ULmNzcyhlLFwiYm9yZGVyXCIrdGVbc10rXCJXaWR0aFwiLCEwLHIpOmErPVQuY3NzKGUsXCJib3JkZXJcIit0ZVtzXStcIldpZHRoXCIsITAscikpO3JldHVybiFpJiYwPD1vJiYobCs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVtcIm9mZnNldFwiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpXS1vLWwtYS0uNSkpfHwwKSxsfWZ1bmN0aW9uIGx0KGUsdCxuKXt2YXIgaT16ZShlKSxyPSgheS5ib3hTaXppbmdSZWxpYWJsZSgpfHxuKSYmXCJib3JkZXItYm94XCI9PT1ULmNzcyhlLFwiYm94U2l6aW5nXCIsITEsaSksbz1yLHM9R2UoZSx0LGkpLGE9XCJvZmZzZXRcIit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtpZihRZS50ZXN0KHMpKXtpZighbilyZXR1cm4gcztzPVwiYXV0b1wifXJldHVybigheS5ib3hTaXppbmdSZWxpYWJsZSgpJiZyfHwheS5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZBKGUsXCJ0clwiKXx8XCJhdXRvXCI9PT1zfHwhcGFyc2VGbG9hdChzKSYmXCJpbmxpbmVcIj09PVQuY3NzKGUsXCJkaXNwbGF5XCIsITEsaSkpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYocj1cImJvcmRlci1ib3hcIj09PVQuY3NzKGUsXCJib3hTaXppbmdcIiwhMSxpKSwobz1hIGluIGUpJiYocz1lW2FdKSksKHM9cGFyc2VGbG9hdChzKXx8MCkrYXQoZSx0LG58fChyP1wiYm9yZGVyXCI6XCJjb250ZW50XCIpLG8saSxzKStcInB4XCJ9ZnVuY3Rpb24gY3QoZSx0LG4saSxyKXtyZXR1cm4gbmV3IGN0LnByb3RvdHlwZS5pbml0KGUsdCxuLGkscil9VC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1HZShlLFwib3BhY2l0eVwiKTtyZXR1cm5cIlwiPT09bj9cIjFcIjpufX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihlLHQsbixpKXtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciByLG8scyxhPVEodCksbD1pdC50ZXN0KHQpLGM9ZS5zdHlsZTtpZihsfHwodD10dChhKSkscz1ULmNzc0hvb2tzW3RdfHxULmNzc0hvb2tzW2FdLHZvaWQgMD09PW4pcmV0dXJuIHMmJlwiZ2V0XCJpbiBzJiZ2b2lkIDAhPT0ocj1zLmdldChlLCExLGkpKT9yOmNbdF07XCJzdHJpbmdcIj09PShvPXR5cGVvZiBuKSYmKHI9ZWUuZXhlYyhuKSkmJnJbMV0mJihuPXNlKGUsdCxyKSxvPVwibnVtYmVyXCIpLG51bGwhPW4mJm49PW4mJihcIm51bWJlclwiIT09b3x8bHx8KG4rPXImJnJbM118fChULmNzc051bWJlclthXT9cIlwiOlwicHhcIikpLHkuY2xlYXJDbG9uZVN0eWxlfHxcIlwiIT09bnx8MCE9PXQuaW5kZXhPZihcImJhY2tncm91bmRcIil8fChjW3RdPVwiaW5oZXJpdFwiKSxzJiZcInNldFwiaW4gcyYmdm9pZCAwPT09KG49cy5zZXQoZSxuLGkpKXx8KGw/Yy5zZXRQcm9wZXJ0eSh0LG4pOmNbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByLG8scyxhPVEodCk7cmV0dXJuIGl0LnRlc3QodCl8fCh0PXR0KGEpKSwocz1ULmNzc0hvb2tzW3RdfHxULmNzc0hvb2tzW2FdKSYmXCJnZXRcImluIHMmJihyPXMuZ2V0KGUsITAsbikpLHZvaWQgMD09PXImJihyPUdlKGUsdCxpKSksXCJub3JtYWxcIj09PXImJnQgaW4gb3QmJihyPW90W3RdKSxcIlwiPT09bnx8bj8obz1wYXJzZUZsb2F0KHIpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDpyKTpyfX0pLFQuZWFjaChbXCJoZWlnaHRcIixcIndpZHRoXCJdLGZ1bmN0aW9uKGUsbCl7VC5jc3NIb29rc1tsXT17Z2V0OmZ1bmN0aW9uKGUsdCxuKXtpZih0KXJldHVybiFudC50ZXN0KFQuY3NzKGUsXCJkaXNwbGF5XCIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9sdChlLGwsbik6JGUoZSxydCxmdW5jdGlvbigpe3JldHVybiBsdChlLGwsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyPXplKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiZcImFic29sdXRlXCI9PT1yLnBvc2l0aW9uLHM9KG98fG4pJiZcImJvcmRlci1ib3hcIj09PVQuY3NzKGUsXCJib3hTaXppbmdcIiwhMSxyKSxhPW4/YXQoZSxsLG4scyxyKTowO3JldHVybiBzJiZvJiYoYS09TWF0aC5jZWlsKGVbXCJvZmZzZXRcIitsWzBdLnRvVXBwZXJDYXNlKCkrbC5zbGljZSgxKV0tcGFyc2VGbG9hdChyW2xdKS1hdChlLGwsXCJib3JkZXJcIiwhMSxyKS0uNSkpLGEmJihpPWVlLmV4ZWModCkpJiZcInB4XCIhPT0oaVszXXx8XCJweFwiKSYmKGUuc3R5bGVbbF09dCx0PVQuY3NzKGUsbCkpLHN0KDAsdCxhKX19fSksVC5jc3NIb29rcy5tYXJnaW5MZWZ0PVhlKHkucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChHZShlLFwibWFyZ2luTGVmdFwiKSl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC0kZShlLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKStcInB4XCJ9KSxULmVhY2goe21hcmdpbjpcIlwiLHBhZGRpbmc6XCJcIixib3JkZXI6XCJXaWR0aFwifSxmdW5jdGlvbihyLG8pe1QuY3NzSG9va3NbcitvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30saT1cInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiIFwiKTpbZV07dDw0O3QrKyluW3IrdGVbdF0rb109aVt0XXx8aVt0LTJdfHxpWzBdO3JldHVybiBufX0sXCJtYXJnaW5cIiE9PXImJihULmNzc0hvb2tzW3Irb10uc2V0PXN0KX0pLFQuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLG89e30scz0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihpPXplKGUpLHI9dC5sZW5ndGg7czxyO3MrKylvW3Rbc11dPVQuY3NzKGUsdFtzXSwhMSxpKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9ULnN0eWxlKGUsdCxuKTpULmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoVC5Ud2Vlbj1jdCkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjdCxpbml0OmZ1bmN0aW9uKGUsdCxuLGkscixvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1yfHxULmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9aSx0aGlzLnVuaXQ9b3x8KFQuY3NzTnVtYmVyW25dP1wiXCI6XCJweFwiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9Y3QucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOmN0LnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPWN0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1ULmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6Y3QucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sY3QucHJvdG90eXBlLmluaXQucHJvdG90eXBlPWN0LnByb3RvdHlwZSxjdC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1ULmNzcyhlLmVsZW0sZS5wcm9wLFwiXCIpKSYmXCJhdXRvXCIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1QuZnguc3RlcFtlLnByb3BdP1QuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFULmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt0dChlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpULnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSxjdC5wcm9wSG9va3Muc2Nyb2xsVG9wPWN0LnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFQuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6XCJzd2luZ1wifSxULmZ4PWN0LnByb3RvdHlwZS5pbml0LFQuZnguc3RlcD17fTt2YXIgdXQsZnQsZHQsaHQscHQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGd0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gbXQoKXtmdCYmKCExPT09Qy5oaWRkZW4mJngucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3gucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG10KTp4LnNldFRpbWVvdXQobXQsVC5meC5pbnRlcnZhbCksVC5meC50aWNrKCkpfWZ1bmN0aW9uIHZ0KCl7cmV0dXJuIHguc2V0VGltZW91dChmdW5jdGlvbigpe3V0PXZvaWQgMH0pLHV0PURhdGUubm93KCl9ZnVuY3Rpb24geXQoZSx0KXt2YXIgbixpPTAscj17aGVpZ2h0OmV9O2Zvcih0PXQ/MTowO2k8NDtpKz0yLXQpcltcIm1hcmdpblwiKyhuPXRlW2ldKV09cltcInBhZGRpbmdcIituXT1lO3JldHVybiB0JiYoci5vcGFjaXR5PXIud2lkdGg9ZSkscn1mdW5jdGlvbiBfdChlLHQsbil7Zm9yKHZhciBpLHI9KGJ0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGJ0LnR3ZWVuZXJzW1wiKlwiXSksbz0wLHM9ci5sZW5ndGg7bzxzO28rKylpZihpPXJbb10uY2FsbChuLHQsZSkpcmV0dXJuIGl9ZnVuY3Rpb24gYnQobyxlLHQpe3ZhciBuLHMsaT0wLHI9YnQucHJlZmlsdGVycy5sZW5ndGgsYT1ULkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGwuZWxlbX0pLGw9ZnVuY3Rpb24oKXtpZihzKXJldHVybiExO2Zvcih2YXIgZT11dHx8dnQoKSx0PU1hdGgubWF4KDAsYy5zdGFydFRpbWUrYy5kdXJhdGlvbi1lKSxuPTEtKHQvYy5kdXJhdGlvbnx8MCksaT0wLHI9Yy50d2VlbnMubGVuZ3RoO2k8cjtpKyspYy50d2VlbnNbaV0ucnVuKG4pO3JldHVybiBhLm5vdGlmeVdpdGgobyxbYyxuLHRdKSxuPDEmJnI/dDoocnx8YS5ub3RpZnlXaXRoKG8sW2MsMSwwXSksYS5yZXNvbHZlV2l0aChvLFtjXSksITEpfSxjPWEucHJvbWlzZSh7ZWxlbTpvLHByb3BzOlQuZXh0ZW5kKHt9LGUpLG9wdHM6VC5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOlQuZWFzaW5nLl9kZWZhdWx0fSx0KSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6dCxzdGFydFRpbWU6dXR8fHZ0KCksZHVyYXRpb246dC5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1ULlR3ZWVuKG8sYy5vcHRzLGUsdCxjLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8Yy5vcHRzLmVhc2luZyk7cmV0dXJuIGMudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9jLnR3ZWVucy5sZW5ndGg6MDtpZihzKXJldHVybiB0aGlzO2ZvcihzPSEwO3Q8bjt0KyspYy50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhhLm5vdGlmeVdpdGgobyxbYywxLDBdKSxhLnJlc29sdmVXaXRoKG8sW2MsZV0pKTphLnJlamVjdFdpdGgobyxbYyxlXSksdGhpc319KSx1PWMucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLGkscixvLHM7Zm9yKG4gaW4gZSlpZihyPXRbaT1RKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKHI9b1sxXSxvPWVbbl09b1swXSksbiE9PWkmJihlW2ldPW8sZGVsZXRlIGVbbl0pLChzPVQuY3NzSG9va3NbaV0pJiZcImV4cGFuZFwiaW4gcylmb3IobiBpbiBvPXMuZXhwYW5kKG8pLGRlbGV0ZSBlW2ldLG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09cik7ZWxzZSB0W2ldPXJ9KHUsYy5vcHRzLnNwZWNpYWxFYXNpbmcpO2k8cjtpKyspaWYobj1idC5wcmVmaWx0ZXJzW2ldLmNhbGwoYyxvLHUsYy5vcHRzKSlyZXR1cm4gXyhuLnN0b3ApJiYoVC5fcXVldWVIb29rcyhjLmVsZW0sYy5vcHRzLnF1ZXVlKS5zdG9wPW4uc3RvcC5iaW5kKG4pKSxuO3JldHVybiBULm1hcCh1LF90LGMpLF8oYy5vcHRzLnN0YXJ0KSYmYy5vcHRzLnN0YXJ0LmNhbGwobyxjKSxjLnByb2dyZXNzKGMub3B0cy5wcm9ncmVzcykuZG9uZShjLm9wdHMuZG9uZSxjLm9wdHMuY29tcGxldGUpLmZhaWwoYy5vcHRzLmZhaWwpLmFsd2F5cyhjLm9wdHMuYWx3YXlzKSxULmZ4LnRpbWVyKFQuZXh0ZW5kKGwse2VsZW06byxhbmltOmMscXVldWU6Yy5vcHRzLnF1ZXVlfSkpLGN9VC5BbmltYXRpb249VC5leHRlbmQoYnQse3R3ZWVuZXJzOntcIipcIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLGVlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLGk9MCxyPShlPV8oZSk/KHQ9ZSxbXCIqXCJdKTplLm1hdGNoKEwpKS5sZW5ndGg7aTxyO2krKyluPWVbaV0sYnQudHdlZW5lcnNbbl09YnQudHdlZW5lcnNbbl18fFtdLGJ0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLG8scyxhLGwsYyx1LGY9XCJ3aWR0aFwiaW4gdHx8XCJoZWlnaHRcImluIHQsZD10aGlzLGg9e30scD1lLnN0eWxlLGc9ZS5ub2RlVHlwZSYmb2UoZSksbT1ZLmdldChlLFwiZnhzaG93XCIpO2ZvcihpIGluIG4ucXVldWV8fChudWxsPT0ocz1ULl9xdWV1ZUhvb2tzKGUsXCJmeFwiKSkudW5xdWV1ZWQmJihzLnVucXVldWVkPTAsYT1zLmVtcHR5LmZpcmUscy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7cy51bnF1ZXVlZHx8YSgpfSkscy51bnF1ZXVlZCsrLGQuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5hbHdheXMoZnVuY3Rpb24oKXtzLnVucXVldWVkLS0sVC5xdWV1ZShlLFwiZnhcIikubGVuZ3RofHxzLmVtcHR5LmZpcmUoKX0pfSkpLHQpaWYocj10W2ldLHB0LnRlc3Qocikpe2lmKGRlbGV0ZSB0W2ldLG89b3x8XCJ0b2dnbGVcIj09PXIscj09PShnP1wiaGlkZVwiOlwic2hvd1wiKSl7aWYoXCJzaG93XCIhPT1yfHwhbXx8dm9pZCAwPT09bVtpXSljb250aW51ZTtnPSEwfWhbaV09bSYmbVtpXXx8VC5zdHlsZShlLGkpfWlmKChsPSFULmlzRW1wdHlPYmplY3QodCkpfHwhVC5pc0VtcHR5T2JqZWN0KGgpKWZvcihpIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0sbnVsbD09KGM9bSYmbS5kaXNwbGF5KSYmKGM9WS5nZXQoZSxcImRpc3BsYXlcIikpLFwibm9uZVwiPT09KHU9VC5jc3MoZSxcImRpc3BsYXlcIikpJiYoYz91PWM6KGxlKFtlXSwhMCksYz1lLnN0eWxlLmRpc3BsYXl8fGMsdT1ULmNzcyhlLFwiZGlzcGxheVwiKSxsZShbZV0pKSksKFwiaW5saW5lXCI9PT11fHxcImlubGluZS1ibG9ja1wiPT09dSYmbnVsbCE9YykmJlwibm9uZVwiPT09VC5jc3MoZSxcImZsb2F0XCIpJiYobHx8KGQuZG9uZShmdW5jdGlvbigpe3AuZGlzcGxheT1jfSksbnVsbD09YyYmKHU9cC5kaXNwbGF5LGM9XCJub25lXCI9PT11P1wiXCI6dSkpLHAuZGlzcGxheT1cImlubGluZS1ibG9ja1wiKSksbi5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9XCJoaWRkZW5cIixkLmFsd2F5cyhmdW5jdGlvbigpe3Aub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxwLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLHAub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksbD0hMSxoKWx8fChtP1wiaGlkZGVuXCJpbiBtJiYoZz1tLmhpZGRlbik6bT1ZLmFjY2VzcyhlLFwiZnhzaG93XCIse2Rpc3BsYXk6Y30pLG8mJihtLmhpZGRlbj0hZyksZyYmbGUoW2VdLCEwKSxkLmRvbmUoZnVuY3Rpb24oKXtmb3IoaSBpbiBnfHxsZShbZV0pLFkucmVtb3ZlKGUsXCJmeHNob3dcIiksaClULnN0eWxlKGUsaSxoW2ldKX0pKSxsPV90KGc/bVtpXTowLGksZCksaSBpbiBtfHwobVtpXT1sLnN0YXJ0LGcmJihsLmVuZD1sLnN0YXJ0LGwuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9idC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6YnQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFQuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlP1QuZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8XyhlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhXyh0KSYmdH07cmV0dXJuIFQuZngub2ZmP2kuZHVyYXRpb249MDpcIm51bWJlclwiIT10eXBlb2YgaS5kdXJhdGlvbiYmKGkuZHVyYXRpb24gaW4gVC5meC5zcGVlZHM/aS5kdXJhdGlvbj1ULmZ4LnNwZWVkc1tpLmR1cmF0aW9uXTppLmR1cmF0aW9uPVQuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1pLnF1ZXVlJiYhMCE9PWkucXVldWV8fChpLnF1ZXVlPVwiZnhcIiksaS5vbGQ9aS5jb21wbGV0ZSxpLmNvbXBsZXRlPWZ1bmN0aW9uKCl7XyhpLm9sZCkmJmkub2xkLmNhbGwodGhpcyksaS5xdWV1ZSYmVC5kZXF1ZXVlKHRoaXMsaS5xdWV1ZSl9LGl9LFQuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIHRoaXMuZmlsdGVyKG9lKS5jc3MoXCJvcGFjaXR5XCIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLGkpfSxhbmltYXRlOmZ1bmN0aW9uKHQsZSxuLGkpe2Z1bmN0aW9uIHIoKXt2YXIgZT1idCh0aGlzLFQuZXh0ZW5kKHt9LHQpLHMpOyhvfHxZLmdldCh0aGlzLFwiZmluaXNoXCIpKSYmZS5zdG9wKCEwKX12YXIgbz1ULmlzRW1wdHlPYmplY3QodCkscz1ULnNwZWVkKGUsbixpKTtyZXR1cm4gci5maW5pc2g9cixvfHwhMT09PXMucXVldWU/dGhpcy5lYWNoKHIpOnRoaXMucXVldWUocy5xdWV1ZSxyKX0sc3RvcDpmdW5jdGlvbihyLGUsbyl7ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG8pfXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiByJiYobz1lLGU9cixyPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShyfHxcImZ4XCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPSEwLHQ9bnVsbCE9ciYmcitcInF1ZXVlSG9va3NcIixuPVQudGltZXJzLGk9WS5nZXQodGhpcyk7aWYodClpW3RdJiZpW3RdLnN0b3AmJnMoaVt0XSk7ZWxzZSBmb3IodCBpbiBpKWlbdF0mJmlbdF0uc3RvcCYmZ3QudGVzdCh0KSYmcyhpW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPXImJm5bdF0ucXVldWUhPT1yfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8VC5kZXF1ZXVlKHRoaXMscil9KX0sZmluaXNoOmZ1bmN0aW9uKHMpe3JldHVybiExIT09cyYmKHM9c3x8XCJmeFwiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFtzK1wicXVldWVcIl0saT10W3MrXCJxdWV1ZUhvb2tzXCJdLHI9VC50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLFQucXVldWUodGhpcyxzLFtdKSxpJiZpLnN0b3AmJmkuc3RvcC5jYWxsKHRoaXMsITApLGU9ci5sZW5ndGg7ZS0tOylyW2VdLmVsZW09PT10aGlzJiZyW2VdLnF1ZXVlPT09cyYmKHJbZV0uYW5pbS5zdG9wKCEwKSxyLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksVC5lYWNoKFtcInRvZ2dsZVwiLFwic2hvd1wiLFwiaGlkZVwiXSxmdW5jdGlvbihlLGkpe3ZhciByPVQuZm5baV07VC5mbltpXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fFwiYm9vbGVhblwiPT10eXBlb2YgZT9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoeXQoaSwhMCksZSx0LG4pfX0pLFQuZWFjaCh7c2xpZGVEb3duOnl0KFwic2hvd1wiKSxzbGlkZVVwOnl0KFwiaGlkZVwiKSxzbGlkZVRvZ2dsZTp5dChcInRvZ2dsZVwiKSxmYWRlSW46e29wYWNpdHk6XCJzaG93XCJ9LGZhZGVPdXQ6e29wYWNpdHk6XCJoaWRlXCJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6XCJ0b2dnbGVcIn19LGZ1bmN0aW9uKGUsaSl7VC5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShpLGUsdCxuKX19KSxULnRpbWVycz1bXSxULmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1ULnRpbWVycztmb3IodXQ9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxULmZ4LnN0b3AoKSx1dD12b2lkIDB9LFQuZngudGltZXI9ZnVuY3Rpb24oZSl7VC50aW1lcnMucHVzaChlKSxULmZ4LnN0YXJ0KCl9LFQuZnguaW50ZXJ2YWw9MTMsVC5meC5zdGFydD1mdW5jdGlvbigpe2Z0fHwoZnQ9ITAsbXQoKSl9LFQuZnguc3RvcD1mdW5jdGlvbigpe2Z0PW51bGx9LFQuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFQuZm4uZGVsYXk9ZnVuY3Rpb24oaSxlKXtyZXR1cm4gaT1ULmZ4JiZULmZ4LnNwZWVkc1tpXXx8aSxlPWV8fFwiZnhcIix0aGlzLnF1ZXVlKGUsZnVuY3Rpb24oZSx0KXt2YXIgbj14LnNldFRpbWVvdXQoZSxpKTt0LnN0b3A9ZnVuY3Rpb24oKXt4LmNsZWFyVGltZW91dChuKX19KX0sZHQ9Qy5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiksaHQ9Qy5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIpLmFwcGVuZENoaWxkKEMuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiKSksZHQudHlwZT1cImNoZWNrYm94XCIseS5jaGVja09uPVwiXCIhPT1kdC52YWx1ZSx5Lm9wdFNlbGVjdGVkPWh0LnNlbGVjdGVkLChkdD1DLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSkudmFsdWU9XCJ0XCIsZHQudHlwZT1cInJhZGlvXCIseS5yYWRpb1ZhbHVlPVwidFwiPT09ZHQudmFsdWU7dmFyIHd0LEV0PVQuZXhwci5hdHRySGFuZGxlO1QuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFcodGhpcyxULmF0dHIsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1QucmVtb3ZlQXR0cih0aGlzLGUpfSl9fSksVC5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIsbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuIHZvaWQgMD09PWUuZ2V0QXR0cmlidXRlP1QucHJvcChlLHQsbik6KDE9PT1vJiZULmlzWE1MRG9jKGUpfHwocj1ULmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoVC5leHByLm1hdGNoLmJvb2wudGVzdCh0KT93dDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgVC5yZW1vdmVBdHRyKGUsdCk6ciYmXCJzZXRcImluIHImJnZvaWQgMCE9PShpPXIuc2V0KGUsbix0KSk/aTooZS5zZXRBdHRyaWJ1dGUodCxuK1wiXCIpLG4pOiEociYmXCJnZXRcImluIHImJm51bGwhPT0oaT1yLmdldChlLHQpKSkmJm51bGw9PShpPVQuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDppKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiZcInJhZGlvXCI9PT10JiZBKGUsXCJpbnB1dFwiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLGk9MCxyPXQmJnQubWF0Y2goTCk7aWYociYmMT09PWUubm9kZVR5cGUpZm9yKDtuPXJbaSsrXTspZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksd3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1QucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFQuZWFjaChULmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1xcdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgcz1FdFt0XXx8VC5maW5kLmF0dHI7RXRbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIsbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChyPUV0W29dLEV0W29dPWksaT1udWxsIT1zKGUsdCxuKT9vOm51bGwsRXRbb109ciksaX19KTt2YXIgeHQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxDdD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24gVHQoZSl7cmV0dXJuKGUubWF0Y2goTCl8fFtdKS5qb2luKFwiIFwiKX1mdW5jdGlvbiBBdChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCJ9ZnVuY3Rpb24gU3QoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpcInN0cmluZ1wiPT10eXBlb2YgZSYmZS5tYXRjaChMKXx8W119VC5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVyh0aGlzLFQucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbVC5wcm9wRml4W2VdfHxlXX0pfX0pLFQuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmVC5pc1hNTERvYyhlKXx8KHQ9VC5wcm9wRml4W3RdfHx0LHI9VC5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/ciYmXCJzZXRcImluIHImJnZvaWQgMCE9PShpPXIuc2V0KGUsbix0KSk/aTplW3RdPW46ciYmXCJnZXRcImluIHImJm51bGwhPT0oaT1yLmdldChlLHQpKT9pOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1ULmZpbmQuYXR0cihlLFwidGFiaW5kZXhcIik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6eHQudGVzdChlLm5vZGVOYW1lKXx8Q3QudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7Zm9yOlwiaHRtbEZvclwiLGNsYXNzOlwiY2xhc3NOYW1lXCJ9fSkseS5vcHRTZWxlY3RlZHx8KFQucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxULmVhY2goW1widGFiSW5kZXhcIixcInJlYWRPbmx5XCIsXCJtYXhMZW5ndGhcIixcImNlbGxTcGFjaW5nXCIsXCJjZWxsUGFkZGluZ1wiLFwicm93U3BhblwiLFwiY29sU3BhblwiLFwidXNlTWFwXCIsXCJmcmFtZUJvcmRlclwiLFwiY29udGVudEVkaXRhYmxlXCJdLGZ1bmN0aW9uKCl7VC5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLFQuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLHMsYSxsPTA7aWYoXyh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1QodGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsZSxBdCh0aGlzKSkpfSk7aWYoKGU9U3QodCkpLmxlbmd0aClmb3IoO249dGhpc1tsKytdOylpZihyPUF0KG4pLGk9MT09PW4ubm9kZVR5cGUmJlwiIFwiK1R0KHIpK1wiIFwiKXtmb3Iocz0wO289ZVtzKytdOylpLmluZGV4T2YoXCIgXCIrbytcIiBcIik8MCYmKGkrPW8rXCIgXCIpO3IhPT0oYT1UdChpKSkmJm4uc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxzLGEsbD0wO2lmKF8odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtUKHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUsQXQodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoXCJjbGFzc1wiLFwiXCIpO2lmKChlPVN0KHQpKS5sZW5ndGgpZm9yKDtuPXRoaXNbbCsrXTspaWYocj1BdChuKSxpPTE9PT1uLm5vZGVUeXBlJiZcIiBcIitUdChyKStcIiBcIil7Zm9yKHM9MDtvPWVbcysrXTspZm9yKDstMTxpLmluZGV4T2YoXCIgXCIrbytcIiBcIik7KWk9aS5yZXBsYWNlKFwiIFwiK28rXCIgXCIsXCIgXCIpO3IhPT0oYT1UdChpKSkmJm4uc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24ocix0KXt2YXIgbz10eXBlb2YgcixzPVwic3RyaW5nXCI9PW98fEFycmF5LmlzQXJyYXkocik7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiB0JiZzP3Q/dGhpcy5hZGRDbGFzcyhyKTp0aGlzLnJlbW92ZUNsYXNzKHIpOl8ocik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1QodGhpcykudG9nZ2xlQ2xhc3Moci5jYWxsKHRoaXMsZSxBdCh0aGlzKSx0KSx0KX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQsbixpO2lmKHMpZm9yKHQ9MCxuPVQodGhpcyksaT1TdChyKTtlPWlbdCsrXTspbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSk7ZWxzZSB2b2lkIDAhPT1yJiZcImJvb2xlYW5cIiE9b3x8KChlPUF0KHRoaXMpKSYmWS5zZXQodGhpcyxcIl9fY2xhc3NOYW1lX19cIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCFlJiYhMSE9PXImJlkuZ2V0KHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIpfHxcIlwiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MCxpPVwiIFwiK2UrXCIgXCI7dD10aGlzW24rK107KWlmKDE9PT10Lm5vZGVUeXBlJiYtMTwoXCIgXCIrVHQoQXQodCkpK1wiIFwiKS5pbmRleE9mKGkpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBEdD0vXFxyL2c7VC5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihuKXt2YXIgaSxlLHIsdD10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPV8obiksdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0OzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KHQ9cj9uLmNhbGwodGhpcyxlLFQodGhpcykudmFsKCkpOm4pP3Q9XCJcIjpcIm51bWJlclwiPT10eXBlb2YgdD90Kz1cIlwiOkFycmF5LmlzQXJyYXkodCkmJih0PVQubWFwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/XCJcIjplK1wiXCJ9KSksKGk9VC52YWxIb29rc1t0aGlzLnR5cGVdfHxULnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiZcInNldFwiaW4gaSYmdm9pZCAwIT09aS5zZXQodGhpcyx0LFwidmFsdWVcIil8fCh0aGlzLnZhbHVlPXQpKX0pKTp0PyhpPVQudmFsSG9va3NbdC50eXBlXXx8VC52YWxIb29rc1t0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmXCJnZXRcImluIGkmJnZvaWQgMCE9PShlPWkuZ2V0KHQsXCJ2YWx1ZVwiKSk/ZTpcInN0cmluZ1wiPT10eXBlb2YoZT10LnZhbHVlKT9lLnJlcGxhY2UoRHQsXCJcIik6bnVsbD09ZT9cIlwiOmU6dm9pZCAwfX0pLFQuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9VC5maW5kLmF0dHIoZSxcInZhbHVlXCIpO3JldHVybiBudWxsIT10P3Q6VHQoVC50ZXh0KGUpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLGk9ZS5vcHRpb25zLHI9ZS5zZWxlY3RlZEluZGV4LG89XCJzZWxlY3Qtb25lXCI9PT1lLnR5cGUscz1vP251bGw6W10sYT1vP3IrMTppLmxlbmd0aCxsPXI8MD9hOm8/cjowO2w8YTtsKyspaWYoKChuPWlbbF0pLnNlbGVjdGVkfHxsPT09cikmJiFuLmRpc2FibGVkJiYoIW4ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUEobi5wYXJlbnROb2RlLFwib3B0Z3JvdXBcIikpKXtpZih0PVQobikudmFsKCksbylyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixpLHI9ZS5vcHRpb25zLG89VC5tYWtlQXJyYXkodCkscz1yLmxlbmd0aDtzLS07KSgoaT1yW3NdKS5zZWxlY3RlZD0tMTxULmluQXJyYXkoVC52YWxIb29rcy5vcHRpb24uZ2V0KGkpLG8pKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksVC5lYWNoKFtcInJhZGlvXCIsXCJjaGVja2JveFwiXSxmdW5jdGlvbigpe1QudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxULmluQXJyYXkoVChlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFQudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKT9cIm9uXCI6ZS52YWx1ZX0pfSkseS5mb2N1c2luPVwib25mb2N1c2luXCJpbiB4O2Z1bmN0aW9uIE90KGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9dmFyIGt0PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLztULmV4dGVuZChULmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByLG8scyxhLGwsYyx1LGY9W258fENdLGQ9di5jYWxsKGUsXCJ0eXBlXCIpP2UudHlwZTplLGg9di5jYWxsKGUsXCJuYW1lc3BhY2VcIik/ZS5uYW1lc3BhY2Uuc3BsaXQoXCIuXCIpOltdLHA9dT1vPW49bnx8QztpZigzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFrdC50ZXN0KGQrVC5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKFwiLlwiKSYmKGQ9KGg9ZC5zcGxpdChcIi5cIikpLnNoaWZ0KCksaC5zb3J0KCkpLGE9ZC5pbmRleE9mKFwiOlwiKTwwJiZcIm9uXCIrZCwoZT1lW1QuZXhwYW5kb10/ZTpuZXcgVC5FdmVudChkLFwib2JqZWN0XCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPWk/MjozLGUubmFtZXNwYWNlPWguam9pbihcIi5cIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoXCIoXnxcXFxcLilcIitoLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PW4pLHQ9bnVsbD09dD9bZV06VC5tYWtlQXJyYXkodCxbZV0pLGM9VC5ldmVudC5zcGVjaWFsW2RdfHx7fSxpfHwhYy50cmlnZ2VyfHwhMSE9PWMudHJpZ2dlci5hcHBseShuLHQpKSl7aWYoIWkmJiFjLm5vQnViYmxlJiYhZyhuKSl7Zm9yKHM9Yy5kZWxlZ2F0ZVR5cGV8fGQsa3QudGVzdChzK2QpfHwocD1wLnBhcmVudE5vZGUpO3A7cD1wLnBhcmVudE5vZGUpZi5wdXNoKHApLG89cDtvPT09KG4ub3duZXJEb2N1bWVudHx8QykmJmYucHVzaChvLmRlZmF1bHRWaWV3fHxvLnBhcmVudFdpbmRvd3x8eCl9Zm9yKHI9MDsocD1mW3IrK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyl1PXAsZS50eXBlPTE8cj9zOmMuYmluZFR5cGV8fGQsKGw9KFkuZ2V0KHAsXCJldmVudHNcIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KHAsXCJoYW5kbGVcIikpJiZsLmFwcGx5KHAsdCksKGw9YSYmcFthXSkmJmwuYXBwbHkmJnoocCkmJihlLnJlc3VsdD1sLmFwcGx5KHAsdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQsaXx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KGYucG9wKCksdCl8fCF6KG4pfHxhJiZfKG5bZF0pJiYhZyhuKSYmKChvPW5bYV0pJiYoblthXT1udWxsKSxULmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmdS5hZGRFdmVudExpc3RlbmVyKGQsT3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJnUucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLE90KSxULmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbyYmKG5bYV09bykpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPVQuZXh0ZW5kKG5ldyBULkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO1QuZXZlbnQudHJpZ2dlcihpLG51bGwsdCl9fSksVC5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7VC5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gVC5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx5LmZvY3VzaW58fFQuZWFjaCh7Zm9jdXM6XCJmb2N1c2luXCIsYmx1cjpcImZvY3Vzb3V0XCJ9LGZ1bmN0aW9uKG4saSl7ZnVuY3Rpb24gcihlKXtULmV2ZW50LnNpbXVsYXRlKGksZS50YXJnZXQsVC5ldmVudC5maXgoZSkpfVQuZXZlbnQuc3BlY2lhbFtpXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLGkpO3R8fGUuYWRkRXZlbnRMaXN0ZW5lcihuLHIsITApLFkuYWNjZXNzKGUsaSwodHx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9WS5hY2Nlc3MoZSxpKS0xO3Q/WS5hY2Nlc3MoZSxpLHQpOihlLnJlbW92ZUV2ZW50TGlzdGVuZXIobixyLCEwKSxZLnJlbW92ZShlLGkpKX19fSk7dmFyIEl0PXgubG9jYXRpb24sanQ9e2d1aWQ6RGF0ZS5ub3coKX0sTnQ9L1xcPy87VC5wYXJzZVhNTD1mdW5jdGlvbihlKXt2YXIgdDtpZighZXx8XCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyB4LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsXCJ0ZXh0L3htbFwiKX1jYXRjaChlKXt0PXZvaWQgMH1yZXR1cm4gdCYmIXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJwYXJzZXJlcnJvclwiKS5sZW5ndGh8fFQuZXJyb3IoXCJJbnZhbGlkIFhNTDogXCIrZSksdH07dmFyIEx0PS9cXFtcXF0kLyxQdD0vXFxyP1xcbi9nLCR0PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxNdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7VC5wYXJhbT1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1fKHQpP3QoKTp0O3Jbci5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj9cIlwiOm4pfXZhciBpLHI9W107aWYobnVsbD09ZSlyZXR1cm5cIlwiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhVC5pc1BsYWluT2JqZWN0KGUpKVQuZWFjaChlLGZ1bmN0aW9uKCl7bih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihpIGluIGUpIWZ1bmN0aW9uIG4oaSxlLHIsbyl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShlKSlULmVhY2goZSxmdW5jdGlvbihlLHQpe3J8fEx0LnRlc3QoaSk/byhpLHQpOm4oaStcIltcIisoXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPXQ/ZTpcIlwiKStcIl1cIix0LHIsbyl9KTtlbHNlIGlmKHJ8fFwib2JqZWN0XCIhPT13KGUpKW8oaSxlKTtlbHNlIGZvcih0IGluIGUpbihpK1wiW1wiK3QrXCJdXCIsZVt0XSxyLG8pfShpLGVbaV0sdCxuKTtyZXR1cm4gci5qb2luKFwiJlwiKX0sVC5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBULnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9VC5wcm9wKHRoaXMsXCJlbGVtZW50c1wiKTtyZXR1cm4gZT9ULm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFUKHRoaXMpLmlzKFwiOmRpc2FibGVkXCIpJiZNdC50ZXN0KHRoaXMubm9kZU5hbWUpJiYhJHQudGVzdChlKSYmKHRoaXMuY2hlY2tlZHx8IWZlLnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49VCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/VC5tYXAobixmdW5jdGlvbihlKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKFB0LFwiXFxyXFxuXCIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoUHQsXCJcXHJcXG5cIil9fSkuZ2V0KCl9fSk7dmFyIHF0PS8lMjAvZyxIdD0vIy4qJC8sUnQ9LyhbPyZdKV89W14mXSovLFd0PS9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvZ20sQnQ9L14oPzpHRVR8SEVBRCkkLyxGdD0vXlxcL1xcLy8sVXQ9e30sUXQ9e30senQ9XCIqL1wiLmNvbmNhdChcIipcIiksS3Q9Qy5jcmVhdGVFbGVtZW50KFwiYVwiKTtmdW5jdGlvbiBZdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtcInN0cmluZ1wiIT10eXBlb2YgZSYmKHQ9ZSxlPVwiKlwiKTt2YXIgbixpPTAscj1lLnRvTG93ZXJDYXNlKCkubWF0Y2goTCl8fFtdO2lmKF8odCkpZm9yKDtuPXJbaSsrXTspXCIrXCI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fFwiKlwiLChvW25dPW9bbl18fFtdKS51bnNoaWZ0KHQpKToob1tuXT1vW25dfHxbXSkucHVzaCh0KX19ZnVuY3Rpb24gVnQodCxyLG8scyl7dmFyIGE9e30sbD10PT09UXQ7ZnVuY3Rpb24gYyhlKXt2YXIgaTtyZXR1cm4gYVtlXT0hMCxULmVhY2godFtlXXx8W10sZnVuY3Rpb24oZSx0KXt2YXIgbj10KHIsbyxzKTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2Ygbnx8bHx8YVtuXT9sPyEoaT1uKTp2b2lkIDA6KHIuZGF0YVR5cGVzLnVuc2hpZnQobiksYyhuKSwhMSl9KSxpfXJldHVybiBjKHIuZGF0YVR5cGVzWzBdKXx8IWFbXCIqXCJdJiZjKFwiKlwiKX1mdW5jdGlvbiBHdChlLHQpe3ZhciBuLGkscj1ULmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKG4gaW4gdCl2b2lkIDAhPT10W25dJiYoKHJbbl0/ZTppPWl8fHt9KVtuXT10W25dKTtyZXR1cm4gaSYmVC5leHRlbmQoITAsZSxpKSxlfUt0LmhyZWY9SXQuaHJlZixULmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6SXQuaHJlZix0eXBlOlwiR0VUXCIsaXNMb2NhbDovXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEl0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixhY2NlcHRzOntcIipcIjp6dCx0ZXh0OlwidGV4dC9wbGFpblwiLGh0bWw6XCJ0ZXh0L2h0bWxcIix4bWw6XCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsanNvbjpcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwifSxjb250ZW50czp7eG1sOi9cXGJ4bWxcXGIvLGh0bWw6L1xcYmh0bWwvLGpzb246L1xcYmpzb25cXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOlwicmVzcG9uc2VYTUxcIix0ZXh0OlwicmVzcG9uc2VUZXh0XCIsanNvbjpcInJlc3BvbnNlSlNPTlwifSxjb252ZXJ0ZXJzOntcIiogdGV4dFwiOlN0cmluZyxcInRleHQgaHRtbFwiOiEwLFwidGV4dCBqc29uXCI6SlNPTi5wYXJzZSxcInRleHQgeG1sXCI6VC5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/R3QoR3QoZSxULmFqYXhTZXR0aW5ncyksdCk6R3QoVC5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6WXQoVXQpLGFqYXhUcmFuc3BvcnQ6WXQoUXQpLGFqYXg6ZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksdD10fHx7fTt2YXIgdSxmLGQsbixoLGkscCxnLHIsbyxtPVQuYWpheFNldHVwKHt9LHQpLHY9bS5jb250ZXh0fHxtLHk9bS5jb250ZXh0JiYodi5ub2RlVHlwZXx8di5qcXVlcnkpP1Qodik6VC5ldmVudCxfPVQuRGVmZXJyZWQoKSxiPVQuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksdz1tLnN0YXR1c0NvZGV8fHt9LHM9e30sYT17fSxsPVwiY2FuY2VsZWRcIixFPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYocCl7aWYoIW4pZm9yKG49e307dD1XdC5leGVjKGQpOyluW3RbMV0udG9Mb3dlckNhc2UoKStcIiBcIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpK1wiIFwiXXx8W10pLmNvbmNhdCh0WzJdKTt0PW5bZS50b0xvd2VyQ2FzZSgpK1wiIFwiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbihcIiwgXCIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcD9kOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09cCYmKGU9YVtlLnRvTG93ZXJDYXNlKCldPWFbZS50b0xvd2VyQ2FzZSgpXXx8ZSxzW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PXAmJihtLm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihwKUUuYWx3YXlzKGVbRS5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8bDtyZXR1cm4gdSYmdS5hYm9ydCh0KSxjKDAsdCksdGhpc319O2lmKF8ucHJvbWlzZShFKSxtLnVybD0oKGV8fG0udXJsfHxJdC5ocmVmKStcIlwiKS5yZXBsYWNlKEZ0LEl0LnByb3RvY29sK1wiLy9cIiksbS50eXBlPXQubWV0aG9kfHx0LnR5cGV8fG0ubWV0aG9kfHxtLnR5cGUsbS5kYXRhVHlwZXM9KG0uZGF0YVR5cGV8fFwiKlwiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEwpfHxbXCJcIl0sbnVsbD09bS5jcm9zc0RvbWFpbil7aT1DLmNyZWF0ZUVsZW1lbnQoXCJhXCIpO3RyeXtpLmhyZWY9bS51cmwsaS5ocmVmLG0uY3Jvc3NEb21haW49S3QucHJvdG9jb2wrXCIvL1wiK0t0Lmhvc3QhPWkucHJvdG9jb2wrXCIvL1wiK2kuaG9zdH1jYXRjaChlKXttLmNyb3NzRG9tYWluPSEwfX1pZihtLmRhdGEmJm0ucHJvY2Vzc0RhdGEmJlwic3RyaW5nXCIhPXR5cGVvZiBtLmRhdGEmJihtLmRhdGE9VC5wYXJhbShtLmRhdGEsbS50cmFkaXRpb25hbCkpLFZ0KFV0LG0sdCxFKSxwKXJldHVybiBFO2ZvcihyIGluKGc9VC5ldmVudCYmbS5nbG9iYWwpJiYwPT1ULmFjdGl2ZSsrJiZULmV2ZW50LnRyaWdnZXIoXCJhamF4U3RhcnRcIiksbS50eXBlPW0udHlwZS50b1VwcGVyQ2FzZSgpLG0uaGFzQ29udGVudD0hQnQudGVzdChtLnR5cGUpLGY9bS51cmwucmVwbGFjZShIdCxcIlwiKSxtLmhhc0NvbnRlbnQ/bS5kYXRhJiZtLnByb2Nlc3NEYXRhJiYwPT09KG0uY29udGVudFR5cGV8fFwiXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikmJihtLmRhdGE9bS5kYXRhLnJlcGxhY2UocXQsXCIrXCIpKToobz1tLnVybC5zbGljZShmLmxlbmd0aCksbS5kYXRhJiYobS5wcm9jZXNzRGF0YXx8XCJzdHJpbmdcIj09dHlwZW9mIG0uZGF0YSkmJihmKz0oTnQudGVzdChmKT9cIiZcIjpcIj9cIikrbS5kYXRhLGRlbGV0ZSBtLmRhdGEpLCExPT09bS5jYWNoZSYmKGY9Zi5yZXBsYWNlKFJ0LFwiJDFcIiksbz0oTnQudGVzdChmKT9cIiZcIjpcIj9cIikrXCJfPVwiK2p0Lmd1aWQrKytvKSxtLnVybD1mK28pLG0uaWZNb2RpZmllZCYmKFQubGFzdE1vZGlmaWVkW2ZdJiZFLnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Nb2RpZmllZC1TaW5jZVwiLFQubGFzdE1vZGlmaWVkW2ZdKSxULmV0YWdbZl0mJkUuc2V0UmVxdWVzdEhlYWRlcihcIklmLU5vbmUtTWF0Y2hcIixULmV0YWdbZl0pKSwobS5kYXRhJiZtLmhhc0NvbnRlbnQmJiExIT09bS5jb250ZW50VHlwZXx8dC5jb250ZW50VHlwZSkmJkUuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLG0uY29udGVudFR5cGUpLEUuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLG0uZGF0YVR5cGVzWzBdJiZtLmFjY2VwdHNbbS5kYXRhVHlwZXNbMF1dP20uYWNjZXB0c1ttLmRhdGFUeXBlc1swXV0rKFwiKlwiIT09bS5kYXRhVHlwZXNbMF0/XCIsIFwiK3p0K1wiOyBxPTAuMDFcIjpcIlwiKTptLmFjY2VwdHNbXCIqXCJdKSxtLmhlYWRlcnMpRS5zZXRSZXF1ZXN0SGVhZGVyKHIsbS5oZWFkZXJzW3JdKTtpZihtLmJlZm9yZVNlbmQmJighMT09PW0uYmVmb3JlU2VuZC5jYWxsKHYsRSxtKXx8cCkpcmV0dXJuIEUuYWJvcnQoKTtpZihsPVwiYWJvcnRcIixiLmFkZChtLmNvbXBsZXRlKSxFLmRvbmUobS5zdWNjZXNzKSxFLmZhaWwobS5lcnJvciksdT1WdChRdCxtLHQsRSkpe2lmKEUucmVhZHlTdGF0ZT0xLGcmJnkudHJpZ2dlcihcImFqYXhTZW5kXCIsW0UsbV0pLHApcmV0dXJuIEU7bS5hc3luYyYmMDxtLnRpbWVvdXQmJihoPXguc2V0VGltZW91dChmdW5jdGlvbigpe0UuYWJvcnQoXCJ0aW1lb3V0XCIpfSxtLnRpbWVvdXQpKTt0cnl7cD0hMSx1LnNlbmQocyxjKX1jYXRjaChlKXtpZihwKXRocm93IGU7YygtMSxlKX19ZWxzZSBjKC0xLFwiTm8gVHJhbnNwb3J0XCIpO2Z1bmN0aW9uIGMoZSx0LG4saSl7dmFyIHIsbyxzLGEsbCxjPXQ7cHx8KHA9ITAsaCYmeC5jbGVhclRpbWVvdXQoaCksdT12b2lkIDAsZD1pfHxcIlwiLEUucmVhZHlTdGF0ZT0wPGU/NDowLHI9MjAwPD1lJiZlPDMwMHx8MzA0PT09ZSxuJiYoYT1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpLHIsbyxzLGE9ZS5jb250ZW50cyxsPWUuZGF0YVR5cGVzO1wiKlwiPT09bFswXTspbC5zaGlmdCgpLHZvaWQgMD09PWkmJihpPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIikpO2lmKGkpZm9yKHIgaW4gYSlpZihhW3JdJiZhW3JdLnRlc3QoaSkpe2wudW5zaGlmdChyKTticmVha31pZihsWzBdaW4gbilvPWxbMF07ZWxzZXtmb3IociBpbiBuKXtpZighbFswXXx8ZS5jb252ZXJ0ZXJzW3IrXCIgXCIrbFswXV0pe289cjticmVha31zPXN8fHJ9bz1vfHxzfWlmKG8pcmV0dXJuIG8hPT1sWzBdJiZsLnVuc2hpZnQobyksbltvXX0obSxFLG4pKSwhciYmLTE8VC5pbkFycmF5KFwic2NyaXB0XCIsbS5kYXRhVHlwZXMpJiYobS5jb252ZXJ0ZXJzW1widGV4dCBzY3JpcHRcIl09ZnVuY3Rpb24oKXt9KSxhPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByLG8scyxhLGwsYz17fSx1PWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYodVsxXSlmb3IocyBpbiBlLmNvbnZlcnRlcnMpY1tzLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1tzXTtmb3Iobz11LnNoaWZ0KCk7bzspaWYoZS5yZXNwb25zZUZpZWxkc1tvXSYmKG5bZS5yZXNwb25zZUZpZWxkc1tvXV09dCksIWwmJmkmJmUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkpLGw9byxvPXUuc2hpZnQoKSlpZihcIipcIj09PW8pbz1sO2Vsc2UgaWYoXCIqXCIhPT1sJiZsIT09byl7aWYoIShzPWNbbCtcIiBcIitvXXx8Y1tcIiogXCIrb10pKWZvcihyIGluIGMpaWYoKGE9ci5zcGxpdChcIiBcIikpWzFdPT09byYmKHM9Y1tsK1wiIFwiK2FbMF1dfHxjW1wiKiBcIithWzBdXSkpeyEwPT09cz9zPWNbcl06ITAhPT1jW3JdJiYobz1hWzBdLHUudW5zaGlmdChhWzFdKSk7YnJlYWt9aWYoITAhPT1zKWlmKHMmJmUudGhyb3dzKXQ9cyh0KTtlbHNlIHRyeXt0PXModCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOlwicGFyc2VyZXJyb3JcIixlcnJvcjpzP2U6XCJObyBjb252ZXJzaW9uIGZyb20gXCIrbCtcIiB0byBcIitvfX19cmV0dXJue3N0YXRlOlwic3VjY2Vzc1wiLGRhdGE6dH19KG0sYSxFLHIpLHI/KG0uaWZNb2RpZmllZCYmKChsPUUuZ2V0UmVzcG9uc2VIZWFkZXIoXCJMYXN0LU1vZGlmaWVkXCIpKSYmKFQubGFzdE1vZGlmaWVkW2ZdPWwpLChsPUUuZ2V0UmVzcG9uc2VIZWFkZXIoXCJldGFnXCIpKSYmKFQuZXRhZ1tmXT1sKSksMjA0PT09ZXx8XCJIRUFEXCI9PT1tLnR5cGU/Yz1cIm5vY29udGVudFwiOjMwND09PWU/Yz1cIm5vdG1vZGlmaWVkXCI6KGM9YS5zdGF0ZSxvPWEuZGF0YSxyPSEocz1hLmVycm9yKSkpOihzPWMsIWUmJmN8fChjPVwiZXJyb3JcIixlPDAmJihlPTApKSksRS5zdGF0dXM9ZSxFLnN0YXR1c1RleHQ9KHR8fGMpK1wiXCIscj9fLnJlc29sdmVXaXRoKHYsW28sYyxFXSk6Xy5yZWplY3RXaXRoKHYsW0UsYyxzXSksRS5zdGF0dXNDb2RlKHcpLHc9dm9pZCAwLGcmJnkudHJpZ2dlcihyP1wiYWpheFN1Y2Nlc3NcIjpcImFqYXhFcnJvclwiLFtFLG0scj9vOnNdKSxiLmZpcmVXaXRoKHYsW0UsY10pLGcmJih5LnRyaWdnZXIoXCJhamF4Q29tcGxldGVcIixbRSxtXSksLS1ULmFjdGl2ZXx8VC5ldmVudC50cmlnZ2VyKFwiYWpheFN0b3BcIikpKX1yZXR1cm4gRX0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFQuZ2V0KGUsdCxuLFwianNvblwiKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFQuZ2V0KGUsdm9pZCAwLHQsXCJzY3JpcHRcIil9fSksVC5lYWNoKFtcImdldFwiLFwicG9zdFwiXSxmdW5jdGlvbihlLHIpe1Rbcl09ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIF8odCkmJihpPWl8fG4sbj10LHQ9dm9pZCAwKSxULmFqYXgoVC5leHRlbmQoe3VybDplLHR5cGU6cixkYXRhVHlwZTppLGRhdGE6dCxzdWNjZXNzOm59LFQuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLFQuYWpheFByZWZpbHRlcihmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlLmhlYWRlcnMpXCJjb250ZW50LXR5cGVcIj09PXQudG9Mb3dlckNhc2UoKSYmKGUuY29udGVudFR5cGU9ZS5oZWFkZXJzW3RdfHxcIlwiKX0pLFQuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBULmFqYXgoe3VybDplLHR5cGU6XCJHRVRcIixkYXRhVHlwZTpcInNjcmlwdFwiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSxjb252ZXJ0ZXJzOntcInRleHQgc2NyaXB0XCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1QuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFQuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYoXyhlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVQoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXM7ZS5maXJzdEVsZW1lbnRDaGlsZDspZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24obil7cmV0dXJuIF8obik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1QodGhpcykud3JhcElubmVyKG4uY2FsbCh0aGlzLGUpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPVQodGhpcyksdD1lLmNvbnRlbnRzKCk7dC5sZW5ndGg/dC53cmFwQWxsKG4pOmUuYXBwZW5kKG4pfSl9LHdyYXA6ZnVuY3Rpb24odCl7dmFyIG49Xyh0KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1QodGhpcykud3JhcEFsbChuP3QuY2FsbCh0aGlzLGUpOnQpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KFwiYm9keVwiKS5lYWNoKGZ1bmN0aW9uKCl7VCh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxULmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIVQuZXhwci5wc2V1ZG9zLnZpc2libGUoZSl9LFQuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oZSl7cmV0dXJuISEoZS5vZmZzZXRXaWR0aHx8ZS5vZmZzZXRIZWlnaHR8fGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxULmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyB4LlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGUpe319O3ZhciBYdD17MDoyMDAsMTIyMzoyMDR9LEp0PVQuYWpheFNldHRpbmdzLnhocigpO3kuY29ycz0hIUp0JiZcIndpdGhDcmVkZW50aWFsc1wiaW4gSnQseS5hamF4PUp0PSEhSnQsVC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKHIpe3ZhciBvLHM7aWYoeS5jb3JzfHxKdCYmIXIuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixpPXIueGhyKCk7aWYoaS5vcGVuKHIudHlwZSxyLnVybCxyLmFzeW5jLHIudXNlcm5hbWUsci5wYXNzd29yZCksci54aHJGaWVsZHMpZm9yKG4gaW4gci54aHJGaWVsZHMpaVtuXT1yLnhockZpZWxkc1tuXTtmb3IobiBpbiByLm1pbWVUeXBlJiZpLm92ZXJyaWRlTWltZVR5cGUmJmkub3ZlcnJpZGVNaW1lVHlwZShyLm1pbWVUeXBlKSxyLmNyb3NzRG9tYWlufHxlW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXXx8KGVbXCJYLVJlcXVlc3RlZC1XaXRoXCJdPVwiWE1MSHR0cFJlcXVlc3RcIiksZSlpLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPXM9aS5vbmxvYWQ9aS5vbmVycm9yPWkub25hYm9ydD1pLm9udGltZW91dD1pLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLFwiYWJvcnRcIj09PWU/aS5hYm9ydCgpOlwiZXJyb3JcIj09PWU/XCJudW1iZXJcIiE9dHlwZW9mIGkuc3RhdHVzP3QoMCxcImVycm9yXCIpOnQoaS5zdGF0dXMsaS5zdGF0dXNUZXh0KTp0KFh0W2kuc3RhdHVzXXx8aS5zdGF0dXMsaS5zdGF0dXNUZXh0LFwidGV4dFwiIT09KGkucmVzcG9uc2VUeXBlfHxcInRleHRcIil8fFwic3RyaW5nXCIhPXR5cGVvZiBpLnJlc3BvbnNlVGV4dD97YmluYXJ5OmkucmVzcG9uc2V9Ont0ZXh0OmkucmVzcG9uc2VUZXh0fSxpLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxpLm9ubG9hZD1vKCkscz1pLm9uZXJyb3I9aS5vbnRpbWVvdXQ9byhcImVycm9yXCIpLHZvaWQgMCE9PWkub25hYm9ydD9pLm9uYWJvcnQ9czppLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1pLnJlYWR5U3RhdGUmJnguc2V0VGltZW91dChmdW5jdGlvbigpe28mJnMoKX0pfSxvPW8oXCJhYm9ydFwiKTt0cnl7aS5zZW5kKHIuaGFzQ29udGVudCYmci5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksVC5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxULmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OlwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHRcIn0sY29udGVudHM6e3NjcmlwdDovXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi99LGNvbnZlcnRlcnM6e1widGV4dCBzY3JpcHRcIjpmdW5jdGlvbihlKXtyZXR1cm4gVC5nbG9iYWxFdmFsKGUpLGV9fX0pLFQuYWpheFByZWZpbHRlcihcInNjcmlwdFwiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPVwiR0VUXCIpfSksVC5hamF4VHJhbnNwb3J0KFwic2NyaXB0XCIsZnVuY3Rpb24obil7dmFyIGkscjtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7aT1UKFwiPHNjcmlwdD5cIikuYXR0cihuLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDpuLnNjcmlwdENoYXJzZXQsc3JjOm4udXJsfSkub24oXCJsb2FkIGVycm9yXCIscj1mdW5jdGlvbihlKXtpLnJlbW92ZSgpLHI9bnVsbCxlJiZ0KFwiZXJyb3JcIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxDLmhlYWQuYXBwZW5kQ2hpbGQoaVswXSl9LGFib3J0OmZ1bmN0aW9uKCl7ciYmcigpfX19KTt2YXIgWnQsZW49W10sdG49Lyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztULmFqYXhTZXR1cCh7anNvbnA6XCJjYWxsYmFja1wiLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1lbi5wb3AoKXx8VC5leHBhbmRvK1wiX1wiK2p0Lmd1aWQrKztyZXR1cm4gdGhpc1tlXT0hMCxlfX0pLFQuYWpheFByZWZpbHRlcihcImpzb24ganNvbnBcIixmdW5jdGlvbihlLHQsbil7dmFyIGkscixvLHM9ITEhPT1lLmpzb25wJiYodG4udGVzdChlLnVybCk/XCJ1cmxcIjpcInN0cmluZ1wiPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fFwiXCIpLmluZGV4T2YoXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIikmJnRuLnRlc3QoZS5kYXRhKSYmXCJkYXRhXCIpO2lmKHN8fFwianNvbnBcIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiBpPWUuanNvbnBDYWxsYmFjaz1fKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLHM/ZVtzXT1lW3NdLnJlcGxhY2UodG4sXCIkMVwiK2kpOiExIT09ZS5qc29ucCYmKGUudXJsKz0oTnQudGVzdChlLnVybCk/XCImXCI6XCI/XCIpK2UuanNvbnArXCI9XCIraSksZS5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl09ZnVuY3Rpb24oKXtyZXR1cm4gb3x8VC5lcnJvcihpK1wiIHdhcyBub3QgY2FsbGVkXCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPVwianNvblwiLHI9eFtpXSx4W2ldPWZ1bmN0aW9uKCl7bz1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09cj9UKHgpLnJlbW92ZVByb3AoaSk6eFtpXT1yLGVbaV0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLGVuLnB1c2goaSkpLG8mJl8ocikmJnIob1swXSksbz1yPXZvaWQgMH0pLFwic2NyaXB0XCJ9KSx5LmNyZWF0ZUhUTUxEb2N1bWVudD0oKFp0PUMuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KFwiXCIpLmJvZHkpLmlubmVySFRNTD1cIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCIsMj09PVp0LmNoaWxkTm9kZXMubGVuZ3RoKSxULnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGU/W106KFwiYm9vbGVhblwiPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChpPSh0PUMuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KFwiXCIpKS5jcmVhdGVFbGVtZW50KFwiYmFzZVwiKSkuaHJlZj1DLmxvY2F0aW9uLmhyZWYsdC5oZWFkLmFwcGVuZENoaWxkKGkpKTp0PUMpLG89IW4mJltdLChyPVMuZXhlYyhlKSk/W3QuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9eWUoW2VdLHQsbyksbyYmby5sZW5ndGgmJlQobykucmVtb3ZlKCksVC5tZXJnZShbXSxyLmNoaWxkTm9kZXMpKSk7dmFyIGkscixvfSxULmZuLmxvYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIsbyxzPXRoaXMsYT1lLmluZGV4T2YoXCIgXCIpO3JldHVybi0xPGEmJihpPVR0KGUuc2xpY2UoYSkpLGU9ZS5zbGljZSgwLGEpKSxfKHQpPyhuPXQsdD12b2lkIDApOnQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiYocj1cIlBPU1RcIiksMDxzLmxlbmd0aCYmVC5hamF4KHt1cmw6ZSx0eXBlOnJ8fFwiR0VUXCIsZGF0YVR5cGU6XCJodG1sXCIsZGF0YTp0fSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxzLmh0bWwoaT9UKFwiPGRpdj5cIikuYXBwZW5kKFQucGFyc2VIVE1MKGUpKS5maW5kKGkpOmUpfSkuYWx3YXlzKG4mJmZ1bmN0aW9uKGUsdCl7cy5lYWNoKGZ1bmN0aW9uKCl7bi5hcHBseSh0aGlzLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pfSksdGhpc30sVC5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIFQuZ3JlcChULnRpbWVycyxmdW5jdGlvbihlKXtyZXR1cm4gdD09PWUuZWxlbX0pLmxlbmd0aH0sVC5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIGkscixvLHMsYSxsLGM9VC5jc3MoZSxcInBvc2l0aW9uXCIpLHU9VChlKSxmPXt9O1wic3RhdGljXCI9PT1jJiYoZS5zdHlsZS5wb3NpdGlvbj1cInJlbGF0aXZlXCIpLGE9dS5vZmZzZXQoKSxvPVQuY3NzKGUsXCJ0b3BcIiksbD1ULmNzcyhlLFwibGVmdFwiKSxyPShcImFic29sdXRlXCI9PT1jfHxcImZpeGVkXCI9PT1jKSYmLTE8KG8rbCkuaW5kZXhPZihcImF1dG9cIik/KHM9KGk9dS5wb3NpdGlvbigpKS50b3AsaS5sZWZ0KToocz1wYXJzZUZsb2F0KG8pfHwwLHBhcnNlRmxvYXQobCl8fDApLF8odCkmJih0PXQuY2FsbChlLG4sVC5leHRlbmQoe30sYSkpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLWEudG9wK3MpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtYS5sZWZ0K3IpLFwidXNpbmdcImluIHQ/dC51c2luZy5jYWxsKGUsZik6KFwibnVtYmVyXCI9PXR5cGVvZiBmLnRvcCYmKGYudG9wKz1cInB4XCIpLFwibnVtYmVyXCI9PXR5cGVvZiBmLmxlZnQmJihmLmxlZnQrPVwicHhcIiksdS5jc3MoZikpfX0sVC5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLGk9dGhpc1swXTtyZXR1cm4gaT9pLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1pLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLGk9dGhpc1swXSxyPXt0b3A6MCxsZWZ0OjB9O2lmKFwiZml4ZWRcIj09PVQuY3NzKGksXCJwb3NpdGlvblwiKSl0PWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXtmb3IodD10aGlzLm9mZnNldCgpLG49aS5vd25lckRvY3VtZW50LGU9aS5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O2UmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiZcInN0YXRpY1wiPT09VC5jc3MoZSxcInBvc2l0aW9uXCIpOyllPWUucGFyZW50Tm9kZTtlJiZlIT09aSYmMT09PWUubm9kZVR5cGUmJigocj1UKGUpLm9mZnNldCgpKS50b3ArPVQuY3NzKGUsXCJib3JkZXJUb3BXaWR0aFwiLCEwKSxyLmxlZnQrPVQuY3NzKGUsXCJib3JkZXJMZWZ0V2lkdGhcIiwhMCkpfXJldHVybnt0b3A6dC50b3Atci50b3AtVC5jc3MoaSxcIm1hcmdpblRvcFwiLCEwKSxsZWZ0OnQubGVmdC1yLmxlZnQtVC5jc3MoaSxcIm1hcmdpbkxlZnRcIiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMub2Zmc2V0UGFyZW50O2UmJlwic3RhdGljXCI9PT1ULmNzcyhlLFwicG9zaXRpb25cIik7KWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fG5lfSl9fSksVC5lYWNoKHtzY3JvbGxMZWZ0OlwicGFnZVhPZmZzZXRcIixzY3JvbGxUb3A6XCJwYWdlWU9mZnNldFwifSxmdW5jdGlvbih0LHIpe3ZhciBvPVwicGFnZVlPZmZzZXRcIj09PXI7VC5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaTtyZXR1cm4gZyhlKT9pPWU6OT09PWUubm9kZVR5cGUmJihpPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PW4/aT9pW3JdOmVbdF06dm9pZChpP2kuc2Nyb2xsVG8obz9pLnBhZ2VYT2Zmc2V0Om4sbz9uOmkucGFnZVlPZmZzZXQpOmVbdF09bil9LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxULmVhY2goW1widG9wXCIsXCJsZWZ0XCJdLGZ1bmN0aW9uKGUsbil7VC5jc3NIb29rc1tuXT1YZSh5LnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0PUdlKGUsbiksUWUudGVzdCh0KT9UKGUpLnBvc2l0aW9uKClbbl0rXCJweFwiOnR9KX0pLFQuZWFjaCh7SGVpZ2h0OlwiaGVpZ2h0XCIsV2lkdGg6XCJ3aWR0aFwifSxmdW5jdGlvbihzLGEpe1QuZWFjaCh7cGFkZGluZzpcImlubmVyXCIrcyxjb250ZW50OmEsXCJcIjpcIm91dGVyXCIrc30sZnVuY3Rpb24oaSxvKXtULmZuW29dPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCYmKGl8fFwiYm9vbGVhblwiIT10eXBlb2YgZSkscj1pfHwoITA9PT1lfHwhMD09PXQ/XCJtYXJnaW5cIjpcImJvcmRlclwiKTtyZXR1cm4gVyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaTtyZXR1cm4gZyhlKT8wPT09by5pbmRleE9mKFwib3V0ZXJcIik/ZVtcImlubmVyXCIrc106ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbXCJjbGllbnRcIitzXTo5PT09ZS5ub2RlVHlwZT8oaT1lLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlLmJvZHlbXCJzY3JvbGxcIitzXSxpW1wic2Nyb2xsXCIrc10sZS5ib2R5W1wib2Zmc2V0XCIrc10saVtcIm9mZnNldFwiK3NdLGlbXCJjbGllbnRcIitzXSkpOnZvaWQgMD09PW4/VC5jc3MoZSx0LHIpOlQuc3R5bGUoZSx0LG4scil9LGEsbj9lOnZvaWQgMCxuKX19KX0pLFQuZWFjaChbXCJhamF4U3RhcnRcIixcImFqYXhTdG9wXCIsXCJhamF4Q29tcGxldGVcIixcImFqYXhFcnJvclwiLFwiYWpheFN1Y2Nlc3NcIixcImFqYXhTZW5kXCJdLGZ1bmN0aW9uKGUsdCl7VC5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLFQuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIHRoaXMub24odCxlLG4saSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLFwiKipcIik6dGhpcy5vZmYodCxlfHxcIioqXCIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFQuZWFjaChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnVcIi5zcGxpdChcIiBcIiksZnVuY3Rpb24oZSxuKXtULmZuW25dPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKG4sbnVsbCxlLHQpOnRoaXMudHJpZ2dlcihuKX19KTt2YXIgbm49L15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1QucHJveHk9ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHI7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksXyhlKSlyZXR1cm4gaT1hLmNhbGwoYXJndW1lbnRzLDIpLChyPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxpLmNvbmNhdChhLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxULmd1aWQrKyxyfSxULmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1QucmVhZHlXYWl0Kys6VC5yZWFkeSghMCl9LFQuaXNBcnJheT1BcnJheS5pc0FycmF5LFQucGFyc2VKU09OPUpTT04ucGFyc2UsVC5ub2RlTmFtZT1BLFQuaXNGdW5jdGlvbj1fLFQuaXNXaW5kb3c9ZyxULmNhbWVsQ2FzZT1RLFQudHlwZT13LFQubm93PURhdGUubm93LFQuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVQudHlwZShlKTtyZXR1cm4oXCJudW1iZXJcIj09PXR8fFwic3RyaW5nXCI9PT10KSYmIWlzTmFOKGUtcGFyc2VGbG9hdChlKSl9LFQudHJpbT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9cIlwiOihlK1wiXCIpLnJlcGxhY2Uobm4sXCJcIil9LHZvaWQgMD09PShsbj1mdW5jdGlvbigpe3JldHVybiBUfS5hcHBseShhbixbXSkpfHwoc24uZXhwb3J0cz1sbik7dmFyIHJuPXgualF1ZXJ5LG9uPXguJDtyZXR1cm4gVC5ub0NvbmZsaWN0PWZ1bmN0aW9uKGUpe3JldHVybiB4LiQ9PT1UJiYoeC4kPW9uKSxlJiZ4LmpRdWVyeT09PVQmJih4LmpRdWVyeT1ybiksVH0sdm9pZCAwPT09ZSYmKHgualF1ZXJ5PXguJD1UKSxUfSl9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7dm9pZCAwPT09ZS5taWdyYXRlTXV0ZSYmdm9pZCAwIT09d2luZG93LnByZXN0YXNob3AmJnZvaWQgMCE9PXdpbmRvdy5wcmVzdGFzaG9wLmRlYnVnJiYoZS5taWdyYXRlTXV0ZT0hd2luZG93LnByZXN0YXNob3AuZGVidWcsZS5taWdyYXRlVHJhY2U9ITEpfSkuY2FsbCh0aGlzLG4oMCkpfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscjtmdW5jdGlvbiBGKGUpe3JldHVybihGPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9KShlKX0hZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtpPVtuKDApXSx2b2lkIDA9PT0ocj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oYSxpKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiB0KGUsdCl7dmFyIG4saT0vXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKS8scj1pLmV4ZWMoZSl8fFtdLG89aS5leGVjKHQpfHxbXTtmb3Iobj0xO248PTM7bisrKXtpZigrcltuXT4rb1tuXSl7cmV0dXJuIDF9aWYoK3Jbbl08K29bbl0pe3JldHVybi0xfX1yZXR1cm4gMH1mdW5jdGlvbiBlKGUpe3JldHVybiB0KGEuZm4uanF1ZXJ5LGUpPj0wfWEubWlncmF0ZVZlcnNpb249XCIzLjMuMlwiLGZ1bmN0aW9uKCl7aWYoIWkuY29uc29sZXx8IWkuY29uc29sZS5sb2cpe3JldHVybn1pZighYXx8IWUoXCIzLjAuMFwiKSl7aS5jb25zb2xlLmxvZyhcIkpRTUlHUkFURTogalF1ZXJ5IDMuMC4wKyBSRVFVSVJFRFwiKX1pZihhLm1pZ3JhdGVXYXJuaW5ncyl7aS5jb25zb2xlLmxvZyhcIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzXCIpfWkuY29uc29sZS5sb2coXCJKUU1JR1JBVEU6IE1pZ3JhdGUgaXMgaW5zdGFsbGVkXCIrKGEubWlncmF0ZU11dGU/XCJcIjpcIiB3aXRoIGxvZ2dpbmcgYWN0aXZlXCIpK1wiLCB2ZXJzaW9uIFwiK2EubWlncmF0ZVZlcnNpb24pfSgpO3ZhciBuPXt9O2lmKGEubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3M9dHJ1ZSxhLm1pZ3JhdGVXYXJuaW5ncz1bXSxhLm1pZ3JhdGVUcmFjZT09PXVuZGVmaW5lZCl7YS5taWdyYXRlVHJhY2U9dHJ1ZX1mdW5jdGlvbiBsKGUpe3ZhciB0PWkuY29uc29sZTtpZighYS5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5nc3x8IW5bZV0pe25bZV09dHJ1ZTthLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKGUpO2lmKHQmJnQud2FybiYmIWEubWlncmF0ZU11dGUpe3Qud2FybihcIkpRTUlHUkFURTogXCIrZSk7aWYoYS5taWdyYXRlVHJhY2UmJnQudHJhY2Upe3QudHJhY2UoKX19fX1mdW5jdGlvbiByKGUsdCxuLGkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTp0cnVlLGVudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24gZSgpe2woaSk7cmV0dXJuIG59LHNldDpmdW5jdGlvbiBlKHQpe2woaSk7bj10fX0pfWZ1bmN0aW9uIG8oZSx0LG4saSl7ZVt0XT1mdW5jdGlvbigpe2woaSk7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1pZihhLm1pZ3JhdGVSZXNldD1mdW5jdGlvbigpe249e307YS5taWdyYXRlV2FybmluZ3MubGVuZ3RoPTB9LGkuZG9jdW1lbnQuY29tcGF0TW9kZT09PVwiQmFja0NvbXBhdFwiKXtsKFwialF1ZXJ5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggUXVpcmtzIE1vZGVcIil9dmFyIHMsYz17fSx1PWEuZm4uaW5pdCxmPWEuZmluZCxkPS9cXFsoXFxzKlstXFx3XStcXHMqKShbfnxeJCpdPz0pXFxzKihbLVxcdyNdKj8jWy1cXHcjXSopXFxzKlxcXS8saD0vXFxbKFxccypbLVxcd10rXFxzKikoW358XiQqXT89KVxccyooWy1cXHcjXSo/I1stXFx3I10qKVxccypcXF0vZyxwPS9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZztmb3IocyBpbiBhLmZuLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZih0eXBlb2YgZT09PVwic3RyaW5nXCImJmU9PT1cIiNcIil7bChcImpRdWVyeSggJyMnICkgaXMgbm90IGEgdmFsaWQgc2VsZWN0b3JcIik7dFswXT1bXX1yZXR1cm4gdS5hcHBseSh0aGlzLHQpfSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm4sYS5maW5kPWZ1bmN0aW9uKHQpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiJiZkLnRlc3QodCkpe3RyeXtpLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCl9Y2F0Y2goZSl7dD10LnJlcGxhY2UoaCxmdW5jdGlvbihlLHQsbixpKXtyZXR1cm5cIltcIit0K24rJ1wiJytpKydcIl0nfSk7dHJ5e2kuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTtsKFwiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIG11c3QgYmUgcXVvdGVkOiBcIituWzBdKTtuWzBdPXR9Y2F0Y2goZSl7bChcIkF0dHJpYnV0ZSBzZWxlY3RvciB3aXRoICcjJyB3YXMgbm90IGZpeGVkOiBcIituWzBdKX19fXJldHVybiBmLmFwcGx5KHRoaXMsbil9LGYpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHMpKXthLmZpbmRbc109ZltzXX19aWYobyhhLmZuLFwic2l6ZVwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxcImpRdWVyeS5mbi5zaXplKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDsgdXNlIHRoZSAubGVuZ3RoIHByb3BlcnR5XCIpLG8oYSxcInBhcnNlSlNPTlwiLGZ1bmN0aW9uKCl7cmV0dXJuIEpTT04ucGFyc2UuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxcImpRdWVyeS5wYXJzZUpTT04gaXMgZGVwcmVjYXRlZDsgdXNlIEpTT04ucGFyc2VcIiksbyhhLFwiaG9sZFJlYWR5XCIsYS5ob2xkUmVhZHksXCJqUXVlcnkuaG9sZFJlYWR5IGlzIGRlcHJlY2F0ZWRcIiksbyhhLFwidW5pcXVlXCIsYS51bmlxdWVTb3J0LFwialF1ZXJ5LnVuaXF1ZSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LnVuaXF1ZVNvcnRcIikscihhLmV4cHIsXCJmaWx0ZXJzXCIsYS5leHByLnBzZXVkb3MsXCJqUXVlcnkuZXhwci5maWx0ZXJzIGlzIGRlcHJlY2F0ZWQ7IHVzZSBqUXVlcnkuZXhwci5wc2V1ZG9zXCIpLHIoYS5leHByLFwiOlwiLGEuZXhwci5wc2V1ZG9zLFwialF1ZXJ5LmV4cHJbJzonXSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LmV4cHIucHNldWRvc1wiKSxlKFwiMy4xLjFcIikpe28oYSxcInRyaW1cIixmdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbD9cIlwiOihlK1wiXCIpLnJlcGxhY2UocCxcIlwiKX0sXCJqUXVlcnkudHJpbSBpcyBkZXByZWNhdGVkOyB1c2UgU3RyaW5nLnByb3RvdHlwZS50cmltXCIpfWlmKGUoXCIzLjIuMFwiKSl7byhhLFwibm9kZU5hbWVcIixmdW5jdGlvbihlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9LFwialF1ZXJ5Lm5vZGVOYW1lIGlzIGRlcHJlY2F0ZWRcIik7byhhLFwiaXNBcnJheVwiLEFycmF5LmlzQXJyYXksXCJqUXVlcnkuaXNBcnJheSBpcyBkZXByZWNhdGVkOyB1c2UgQXJyYXkuaXNBcnJheVwiKX1pZihlKFwiMy4zLjBcIikpe28oYSxcImlzTnVtZXJpY1wiLGZ1bmN0aW9uKGUpe3ZhciB0PUYoZSk7cmV0dXJuKHQ9PT1cIm51bWJlclwifHx0PT09XCJzdHJpbmdcIikmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSxcImpRdWVyeS5pc051bWVyaWMoKSBpcyBkZXByZWNhdGVkXCIpO2EuZWFjaChcIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sXCIuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKGUsdCl7Y1tcIltvYmplY3QgXCIrdCtcIl1cIl09dC50b0xvd2VyQ2FzZSgpfSk7byhhLFwidHlwZVwiLGZ1bmN0aW9uKGUpe2lmKGU9PW51bGwpe3JldHVybiBlK1wiXCJ9cmV0dXJuIEYoZSk9PT1cIm9iamVjdFwifHx0eXBlb2YgZT09PVwiZnVuY3Rpb25cIj9jW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKV18fFwib2JqZWN0XCI6RihlKX0sXCJqUXVlcnkudHlwZSBpcyBkZXByZWNhdGVkXCIpO28oYSxcImlzRnVuY3Rpb25cIixmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT1cImZ1bmN0aW9uXCJ9LFwialF1ZXJ5LmlzRnVuY3Rpb24oKSBpcyBkZXByZWNhdGVkXCIpO28oYSxcImlzV2luZG93XCIsZnVuY3Rpb24oZSl7cmV0dXJuIGUhPW51bGwmJmU9PT1lLndpbmRvd30sXCJqUXVlcnkuaXNXaW5kb3coKSBpcyBkZXByZWNhdGVkXCIpfWlmKGEuYWpheCl7dmFyIGc9YS5hamF4LG09Lyg9KVxcPyg/PSZ8JCl8XFw/XFw/LzthLmFqYXg9ZnVuY3Rpb24oKXt2YXIgZT1nLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihlLnByb21pc2Upe28oZSxcInN1Y2Nlc3NcIixlLmRvbmUsXCJqUVhIUi5zdWNjZXNzIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWRcIik7byhlLFwiZXJyb3JcIixlLmZhaWwsXCJqUVhIUi5lcnJvciBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkXCIpO28oZSxcImNvbXBsZXRlXCIsZS5hbHdheXMsXCJqUVhIUi5jb21wbGV0ZSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkXCIpfXJldHVybiBlfTtpZighZShcIjQuMC4wXCIpKXthLmFqYXhQcmVmaWx0ZXIoXCIranNvblwiLGZ1bmN0aW9uKGUpe2lmKGUuanNvbnAhPT1mYWxzZSYmKG0udGVzdChlLnVybCl8fHR5cGVvZiBlLmRhdGE9PT1cInN0cmluZ1wiJiYoZS5jb250ZW50VHlwZXx8XCJcIikuaW5kZXhPZihcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiKT09PTAmJm0udGVzdChlLmRhdGEpKSl7bChcIkpTT04tdG8tSlNPTlAgYXV0by1wcm9tb3Rpb24gaXMgZGVwcmVjYXRlZFwiKX19KX19dmFyIHY9YS5mbi5yZW1vdmVBdHRyLHk9YS5mbi50b2dnbGVDbGFzcyxfPS9cXFMrL2c7ZnVuY3Rpb24gYihlKXtyZXR1cm4gZS5yZXBsYWNlKC8tKFthLXpdKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfWEuZm4ucmVtb3ZlQXR0cj1mdW5jdGlvbihlKXt2YXIgbj10aGlzO2EuZWFjaChlLm1hdGNoKF8pLGZ1bmN0aW9uKGUsdCl7aWYoYS5leHByLm1hdGNoLmJvb2wudGVzdCh0KSl7bChcImpRdWVyeS5mbi5yZW1vdmVBdHRyIG5vIGxvbmdlciBzZXRzIGJvb2xlYW4gcHJvcGVydGllczogXCIrdCk7bi5wcm9wKHQsZmFsc2UpfX0pO3JldHVybiB2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYS5mbi50b2dnbGVDbGFzcz1mdW5jdGlvbih0KXtpZih0IT09dW5kZWZpbmVkJiZ0eXBlb2YgdCE9PVwiYm9vbGVhblwiKXtyZXR1cm4geS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9bChcImpRdWVyeS5mbi50b2dnbGVDbGFzcyggYm9vbGVhbiApIGlzIGRlcHJlY2F0ZWRcIik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlJiZ0aGlzLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpfHxcIlwiO2lmKGUpe2EuZGF0YSh0aGlzLFwiX19jbGFzc05hbWVfX1wiLGUpfWlmKHRoaXMuc2V0QXR0cmlidXRlKXt0aGlzLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsZXx8dD09PWZhbHNlP1wiXCI6YS5kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIpfHxcIlwiKX19KX07dmFyIHcsRT1mYWxzZSx4PS9eW2Etel0vLEM9L14oPzpCb3JkZXIoPzpUb3B8UmlnaHR8Qm90dG9tfExlZnQpPyg/OldpZHRofCl8KD86TWFyZ2lufFBhZGRpbmcpPyg/OlRvcHxSaWdodHxCb3R0b218TGVmdCk/fCg/Ok1pbnxNYXgpPyg/OldpZHRofEhlaWdodCkpJC87aWYoYS5zd2FwKXthLmVhY2goW1wiaGVpZ2h0XCIsXCJ3aWR0aFwiLFwicmVsaWFibGVNYXJnaW5SaWdodFwiXSxmdW5jdGlvbihlLHQpe3ZhciBuPWEuY3NzSG9va3NbdF0mJmEuY3NzSG9va3NbdF0uZ2V0O2lmKG4pe2EuY3NzSG9va3NbdF0uZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7RT10cnVlO2U9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7RT1mYWxzZTtyZXR1cm4gZX19fSl9aWYoYS5zd2FwPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByLG8scz17fTtpZighRSl7bChcImpRdWVyeS5zd2FwKCkgaXMgdW5kb2N1bWVudGVkIGFuZCBkZXByZWNhdGVkXCIpfWZvcihvIGluIHQpe3Nbb109ZS5zdHlsZVtvXTtlLnN0eWxlW29dPXRbb119cj1uLmFwcGx5KGUsaXx8W10pO2ZvcihvIGluIHQpe2Uuc3R5bGVbb109c1tvXX1yZXR1cm4gcn0sZShcIjMuNC4wXCIpJiZ0eXBlb2YgUHJveHkhPT1cInVuZGVmaW5lZFwiKXthLmNzc1Byb3BzPW5ldyBQcm94eShhLmNzc1Byb3BzfHx7fSx7c2V0OmZ1bmN0aW9uIGUoKXtsKFwiSlFNSUdSQVRFOiBqUXVlcnkuY3NzUHJvcHMgaXMgZGVwcmVjYXRlZFwiKTtyZXR1cm4gUmVmbGVjdC5zZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pfWlmKCFhLmNzc051bWJlcil7YS5jc3NOdW1iZXI9e319ZnVuY3Rpb24gVChlKXtyZXR1cm4geC50ZXN0KGUpJiZDLnRlc3QoZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSkpfXc9YS5mbi5jc3MsYS5mbi5jc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbixpPXRoaXM7aWYoZSYmRihlKT09PVwib2JqZWN0XCImJiFBcnJheS5pc0FycmF5KGUpKXthLmVhY2goZSxmdW5jdGlvbihlLHQpe2EuZm4uY3NzLmNhbGwoaSxlLHQpfSk7cmV0dXJuIHRoaXN9aWYodHlwZW9mIHQ9PT1cIm51bWJlclwiKXtuPWIoZSk7aWYoIVQobikmJiFhLmNzc051bWJlcltuXSl7bCgnTnVtYmVyLXR5cGVkIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBmb3IgalF1ZXJ5LmZuLmNzcyggXCInK2UrJ1wiLCB2YWx1ZSApJyl9fXJldHVybiB3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIEE9YS5kYXRhO2lmKGEuZGF0YT1mdW5jdGlvbihlLHQsbil7dmFyIGkscixvO2lmKHQmJkYodCk9PT1cIm9iamVjdFwiJiZhcmd1bWVudHMubGVuZ3RoPT09Mil7aT1hLmhhc0RhdGEoZSkmJkEuY2FsbCh0aGlzLGUpO3I9e307Zm9yKG8gaW4gdCl7aWYobyE9PWIobykpe2woXCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogXCIrbyk7aVtvXT10W29dfWVsc2V7cltvXT10W29dfX1BLmNhbGwodGhpcyxlLHIpO3JldHVybiB0fWlmKHQmJnR5cGVvZiB0PT09XCJzdHJpbmdcIiYmdCE9PWIodCkpe2k9YS5oYXNEYXRhKGUpJiZBLmNhbGwodGhpcyxlKTtpZihpJiZ0IGluIGkpe2woXCJqUXVlcnkuZGF0YSgpIGFsd2F5cyBzZXRzL2dldHMgY2FtZWxDYXNlZCBuYW1lczogXCIrdCk7aWYoYXJndW1lbnRzLmxlbmd0aD4yKXtpW3RdPW59cmV0dXJuIGlbdF19fXJldHVybiBBLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYS5meCl7dmFyIFMsRCxPPWEuVHdlZW4ucHJvdG90eXBlLnJ1bixrPWZ1bmN0aW9uIGUodCl7cmV0dXJuIHR9O2EuVHdlZW4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKGEuZWFzaW5nW3RoaXMuZWFzaW5nXS5sZW5ndGg+MSl7bChcIidqUXVlcnkuZWFzaW5nLlwiK3RoaXMuZWFzaW5nLnRvU3RyaW5nKCkrXCInIHNob3VsZCB1c2Ugb25seSBvbmUgYXJndW1lbnRcIik7YS5lYXNpbmdbdGhpcy5lYXNpbmddPWt9Ty5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O1M9YS5meC5pbnRlcnZhbHx8MTM7RD1cImpRdWVyeS5meC5pbnRlcnZhbCBpcyBkZXByZWNhdGVkXCI7aWYoaS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLmZ4LFwiaW50ZXJ2YWxcIix7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbiBlKCl7aWYoIWkuZG9jdW1lbnQuaGlkZGVuKXtsKEQpfXJldHVybiBTfSxzZXQ6ZnVuY3Rpb24gZSh0KXtsKEQpO1M9dH19KX19dmFyIEk9YS5mbi5sb2FkLGo9YS5ldmVudC5hZGQsTj1hLmV2ZW50LmZpeDthLmV2ZW50LnByb3BzPVtdLGEuZXZlbnQuZml4SG9va3M9e30scihhLmV2ZW50LnByb3BzLFwiY29uY2F0XCIsYS5ldmVudC5wcm9wcy5jb25jYXQsXCJqUXVlcnkuZXZlbnQucHJvcHMuY29uY2F0KCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZFwiKSxhLmV2ZW50LmZpeD1mdW5jdGlvbihlKXt2YXIgdCxuPWUudHlwZSxpPXRoaXMuZml4SG9va3Nbbl0scj1hLmV2ZW50LnByb3BzO2lmKHIubGVuZ3RoKXtsKFwialF1ZXJ5LmV2ZW50LnByb3BzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiBcIityLmpvaW4oKSk7d2hpbGUoci5sZW5ndGgpe2EuZXZlbnQuYWRkUHJvcChyLnBvcCgpKX19aWYoaSYmIWkuX21pZ3JhdGVkXyl7aS5fbWlncmF0ZWRfPXRydWU7bChcImpRdWVyeS5ldmVudC5maXhIb29rcyBhcmUgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDogXCIrbik7aWYoKHI9aS5wcm9wcykmJnIubGVuZ3RoKXt3aGlsZShyLmxlbmd0aCl7YS5ldmVudC5hZGRQcm9wKHIucG9wKCkpfX19dD1OLmNhbGwodGhpcyxlKTtyZXR1cm4gaSYmaS5maWx0ZXI/aS5maWx0ZXIodCxlKTp0fSxhLmV2ZW50LmFkZD1mdW5jdGlvbihlLHQpe2lmKGU9PT1pJiZ0PT09XCJsb2FkXCImJmkuZG9jdW1lbnQucmVhZHlTdGF0ZT09PVwiY29tcGxldGVcIil7bChcImpRdWVyeSh3aW5kb3cpLm9uKCdsb2FkJy4uLikgY2FsbGVkIGFmdGVyIGxvYWQgZXZlbnQgb2NjdXJyZWRcIil9cmV0dXJuIGouYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLmVhY2goW1wibG9hZFwiLFwidW5sb2FkXCIsXCJlcnJvclwiXSxmdW5jdGlvbihlLHQpe2EuZm5bdF09ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7aWYodD09PVwibG9hZFwiJiZ0eXBlb2YgZVswXT09PVwic3RyaW5nXCIpe3JldHVybiBJLmFwcGx5KHRoaXMsZSl9bChcImpRdWVyeS5mbi5cIit0K1wiKCkgaXMgZGVwcmVjYXRlZFwiKTtlLnNwbGljZSgwLDAsdCk7aWYoYXJndW1lbnRzLmxlbmd0aCl7cmV0dXJuIHRoaXMub24uYXBwbHkodGhpcyxlKX10aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsZSk7cmV0dXJuIHRoaXN9fSksYS5lYWNoKChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiK1wibW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgXCIrXCJjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51XCIpLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihlLG4pe2EuZm5bbl09ZnVuY3Rpb24oZSx0KXtsKFwialF1ZXJ5LmZuLlwiK24rXCIoKSBldmVudCBzaG9ydGhhbmQgaXMgZGVwcmVjYXRlZFwiKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pLGEoZnVuY3Rpb24oKXthKGkuZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKFwicmVhZHlcIil9KSxhLmV2ZW50LnNwZWNpYWwucmVhZHk9e3NldHVwOmZ1bmN0aW9uIGUoKXtpZih0aGlzPT09aS5kb2N1bWVudCl7bChcIidyZWFkeScgZXZlbnQgaXMgZGVwcmVjYXRlZFwiKX19fSxhLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbiBlKHQsbixpKXtsKFwialF1ZXJ5LmZuLmJpbmQoKSBpcyBkZXByZWNhdGVkXCIpO3JldHVybiB0aGlzLm9uKHQsbnVsbCxuLGkpfSx1bmJpbmQ6ZnVuY3Rpb24gZSh0LG4pe2woXCJqUXVlcnkuZm4udW5iaW5kKCkgaXMgZGVwcmVjYXRlZFwiKTtyZXR1cm4gdGhpcy5vZmYodCxudWxsLG4pfSxkZWxlZ2F0ZTpmdW5jdGlvbiBlKHQsbixpLHIpe2woXCJqUXVlcnkuZm4uZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkXCIpO3JldHVybiB0aGlzLm9uKG4sdCxpLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uIGUodCxuLGkpe2woXCJqUXVlcnkuZm4udW5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWRcIik7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3RoaXMub2ZmKHQsXCIqKlwiKTp0aGlzLm9mZihuLHR8fFwiKipcIixpKX0saG92ZXI6ZnVuY3Rpb24gZSh0LG4pe2woXCJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkXCIpO3JldHVybiB0aGlzLm9uKFwibW91c2VlbnRlclwiLHQpLm9uKFwibW91c2VsZWF2ZVwiLG58fHQpfX0pO3ZhciBMPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cXC9cXDA+XFx4MjBcXHRcXHJcXG5cXGZdKilbXj5dKilcXC8+L2dpLFA9YS5odG1sUHJlZmlsdGVyLCQ9ZnVuY3Rpb24gZSh0KXt2YXIgbj1pLmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudChcIlwiKTtuLmJvZHkuaW5uZXJIVE1MPXQ7cmV0dXJuIG4uYm9keSYmbi5ib2R5LmlubmVySFRNTH0sTT1mdW5jdGlvbiBlKHQpe3ZhciBuPXQucmVwbGFjZShMLFwiPCQxPjwvJDI+XCIpO2lmKG4hPT10JiYkKHQpIT09JChuKSl7bChcIkhUTUwgdGFncyBtdXN0IGJlIHByb3Blcmx5IG5lc3RlZCBhbmQgY2xvc2VkOiBcIit0KX19O2EuVU5TQUZFX3Jlc3RvcmVMZWdhY3lIdG1sUHJlZmlsdGVyPWZ1bmN0aW9uKCl7YS5odG1sUHJlZmlsdGVyPWZ1bmN0aW9uKGUpe00oZSk7cmV0dXJuIGUucmVwbGFjZShMLFwiPCQxPjwvJDI+XCIpfX0sYS5odG1sUHJlZmlsdGVyPWZ1bmN0aW9uKGUpe00oZSk7cmV0dXJuIFAoZSl9O3ZhciBxPWEuZm4ub2Zmc2V0O2lmKGEuZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpc1swXTtpZihlJiYoIWUubm9kZVR5cGV8fCFlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkpe2woXCJqUXVlcnkuZm4ub2Zmc2V0KCkgcmVxdWlyZXMgYSB2YWxpZCBET00gZWxlbWVudFwiKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzOnVuZGVmaW5lZH1yZXR1cm4gcS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGEuYWpheCl7dmFyIEg9YS5wYXJhbTthLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG49YS5hamF4U2V0dGluZ3MmJmEuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsO2lmKHQ9PT11bmRlZmluZWQmJm4pe2woXCJqUXVlcnkucGFyYW0oKSBubyBsb25nZXIgdXNlcyBqUXVlcnkuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsXCIpO3Q9bn1yZXR1cm4gSC5jYWxsKHRoaXMsZSx0KX19dmFyIFI9YS5mbi5hbmRTZWxmfHxhLmZuLmFkZEJhY2s7aWYoYS5mbi5hbmRTZWxmPWZ1bmN0aW9uKCl7bChcImpRdWVyeS5mbi5hbmRTZWxmKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCwgdXNlIGpRdWVyeS5mbi5hZGRCYWNrKClcIik7cmV0dXJuIFIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLkRlZmVycmVkKXt2YXIgVz1hLkRlZmVycmVkLEI9W1tcInJlc29sdmVcIixcImRvbmVcIixhLkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLGEuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXCJyZXNvbHZlZFwiXSxbXCJyZWplY3RcIixcImZhaWxcIixhLkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLGEuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksXCJyZWplY3RlZFwiXSxbXCJub3RpZnlcIixcInByb2dyZXNzXCIsYS5DYWxsYmFja3MoXCJtZW1vcnlcIiksYS5DYWxsYmFja3MoXCJtZW1vcnlcIildXTthLkRlZmVycmVkPWZ1bmN0aW9uKGUpe3ZhciBvPVcoKSxzPW8ucHJvbWlzZSgpO28ucGlwZT1zLnBpcGU9ZnVuY3Rpb24oKXt2YXIgcj1hcmd1bWVudHM7bChcImRlZmVycmVkLnBpcGUoKSBpcyBkZXByZWNhdGVkXCIpO3JldHVybiBhLkRlZmVycmVkKGZ1bmN0aW9uKGkpe2EuZWFjaChCLGZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIHJbZV09PT1cImZ1bmN0aW9uXCImJnJbZV07b1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKGUmJnR5cGVvZiBlLnByb21pc2U9PT1cImZ1bmN0aW9uXCIpe2UucHJvbWlzZSgpLmRvbmUoaS5yZXNvbHZlKS5mYWlsKGkucmVqZWN0KS5wcm9ncmVzcyhpLm5vdGlmeSl9ZWxzZXtpW3RbMF0rXCJXaXRoXCJdKHRoaXM9PT1zP2kucHJvbWlzZSgpOnRoaXMsbj9bZV06YXJndW1lbnRzKX19KX0pO3I9bnVsbH0pLnByb21pc2UoKX07aWYoZSl7ZS5jYWxsKG8sbyl9cmV0dXJuIG99O2EuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1XLmV4Y2VwdGlvbkhvb2t9cmV0dXJuIGF9KGUsd2luZG93KX0uYXBwbHkodCxpKSl8fChlLmV4cG9ydHM9cil9KCl9LGZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24oZSl7dC5leHBvcnRzPWUudGV0aGVyPW4oMTMpfSkuY2FsbCh0aGlzLG4oMSkpfSxmdW5jdGlvbih0LGUsbil7KGZ1bmN0aW9uKGUpe3QuZXhwb3J0cz1lLlRldGhlcj1uKDE0KX0pLmNhbGwodGhpcyxuKDEpKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI7dm9pZCAwPT09KHI9XCJmdW5jdGlvblwiPT10eXBlb2YoaT1mdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ZmFsc2U7aS5jb25maWd1cmFibGU9dHJ1ZTtpZihcInZhbHVlXCJpbiBpKWkud3JpdGFibGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtpZih0KWkoZS5wcm90b3R5cGUsdCk7aWYobilpKGUsbik7cmV0dXJuIGV9fSgpO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX19dmFyIHg9dW5kZWZpbmVkO2lmKHR5cGVvZiB4PT09XCJ1bmRlZmluZWRcIil7eD17bW9kdWxlczpbXX19dmFyIG89bnVsbDtmdW5jdGlvbiBzKGUpe3ZhciB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIG49e307Zm9yKHZhciBpIGluIHQpe25baV09dFtpXX1pZihlLm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudCl7dmFyIHI9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudDtpZihyKXt2YXIgbz1zKHIpO24udG9wKz1vLnRvcDtuLmJvdHRvbSs9by50b3A7bi5sZWZ0Kz1vLmxlZnQ7bi5yaWdodCs9by5sZWZ0fX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUpe3ZhciB0PWdldENvbXB1dGVkU3R5bGUoZSl8fHt9O3ZhciBuPXQucG9zaXRpb247dmFyIGk9W107aWYobj09PVwiZml4ZWRcIil7cmV0dXJuW2VdfXZhciByPWU7d2hpbGUoKHI9ci5wYXJlbnROb2RlKSYmciYmci5ub2RlVHlwZT09PTEpe3ZhciBvPXVuZGVmaW5lZDt0cnl7bz1nZXRDb21wdXRlZFN0eWxlKHIpfWNhdGNoKGUpe31pZih0eXBlb2Ygbz09PVwidW5kZWZpbmVkXCJ8fG89PT1udWxsKXtpLnB1c2gocik7cmV0dXJuIGl9dmFyIHM9bzt2YXIgYT1zLm92ZXJmbG93O3ZhciBsPXMub3ZlcmZsb3dYO3ZhciBjPXMub3ZlcmZsb3dZO2lmKC8oYXV0b3xzY3JvbGx8b3ZlcmxheSkvLnRlc3QoYStjK2wpKXtpZihuIT09XCJhYnNvbHV0ZVwifHxbXCJyZWxhdGl2ZVwiLFwiYWJzb2x1dGVcIixcImZpeGVkXCJdLmluZGV4T2Yoby5wb3NpdGlvbik+PTApe2kucHVzaChyKX19fWkucHVzaChlLm93bmVyRG9jdW1lbnQuYm9keSk7aWYoZS5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpe2kucHVzaChlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpfXJldHVybiBpfXZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4rK2V9fSgpLGw9e30sdT1mdW5jdGlvbiBlKCl7dmFyIHQ9bztpZighdHx8IWRvY3VtZW50LmJvZHkuY29udGFpbnModCkpe3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LnNldEF0dHJpYnV0ZShcImRhdGEtdGV0aGVyLWlkXCIsYSgpKTtFKHQuc3R5bGUse3RvcDowLGxlZnQ6MCxwb3NpdGlvbjpcImFic29sdXRlXCJ9KTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO289dH12YXIgbj10LmdldEF0dHJpYnV0ZShcImRhdGEtdGV0aGVyLWlkXCIpO2lmKHR5cGVvZiBsW25dPT09XCJ1bmRlZmluZWRcIil7bFtuXT1zKHQpO0QoZnVuY3Rpb24oKXtkZWxldGUgbFtuXX0pfXJldHVybiBsW25dfTtmdW5jdGlvbiBmKCl7aWYobyl7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvKX1vPW51bGx9ZnVuY3Rpb24gQyhlKXt2YXIgdD11bmRlZmluZWQ7aWYoZT09PWRvY3VtZW50KXt0PWRvY3VtZW50O2U9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fWVsc2V7dD1lLm93bmVyRG9jdW1lbnR9dmFyIG49dC5kb2N1bWVudEVsZW1lbnQ7dmFyIGk9cyhlKTt2YXIgcj11KCk7aS50b3AtPXIudG9wO2kubGVmdC09ci5sZWZ0O2lmKHR5cGVvZiBpLndpZHRoPT09XCJ1bmRlZmluZWRcIil7aS53aWR0aD1kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoLWkubGVmdC1pLnJpZ2h0fWlmKHR5cGVvZiBpLmhlaWdodD09PVwidW5kZWZpbmVkXCIpe2kuaGVpZ2h0PWRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LWkudG9wLWkuYm90dG9tfWkudG9wPWkudG9wLW4uY2xpZW50VG9wO2kubGVmdD1pLmxlZnQtbi5jbGllbnRMZWZ0O2kucmlnaHQ9dC5ib2R5LmNsaWVudFdpZHRoLWkud2lkdGgtaS5sZWZ0O2kuYm90dG9tPXQuYm9keS5jbGllbnRIZWlnaHQtaS5oZWlnaHQtaS50b3A7cmV0dXJuIGl9ZnVuY3Rpb24gVChlKXtyZXR1cm4gZS5vZmZzZXRQYXJlbnR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH12YXIgZD1udWxsO2Z1bmN0aW9uIEEoKXtpZihkKXtyZXR1cm4gZH12YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2Uuc3R5bGUud2lkdGg9XCIxMDAlXCI7ZS5zdHlsZS5oZWlnaHQ9XCIyMDBweFwiO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7RSh0LnN0eWxlLHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOjAsbGVmdDowLHBvaW50ZXJFdmVudHM6XCJub25lXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLHdpZHRoOlwiMjAwcHhcIixoZWlnaHQ6XCIxNTBweFwiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KTt0LmFwcGVuZENoaWxkKGUpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7dmFyIG49ZS5vZmZzZXRXaWR0aDt0LnN0eWxlLm92ZXJmbG93PVwic2Nyb2xsXCI7dmFyIGk9ZS5vZmZzZXRXaWR0aDtpZihuPT09aSl7aT10LmNsaWVudFdpZHRofWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCk7dmFyIHI9bi1pO2Q9e3dpZHRoOnIsaGVpZ2h0OnJ9O3JldHVybiBkfWZ1bmN0aW9uIEUoKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPD0wfHxhcmd1bWVudHNbMF09PT11bmRlZmluZWQ/e306YXJndW1lbnRzWzBdO3ZhciBlPVtdO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUsYXJndW1lbnRzKTtlLnNsaWNlKDEpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7Zm9yKHZhciB0IGluIGUpe2lmKHt9Lmhhc093blByb3BlcnR5LmNhbGwoZSx0KSl7blt0XT1lW3RdfX19fSk7cmV0dXJuIG59ZnVuY3Rpb24gaCh0LGUpe2lmKHR5cGVvZiB0LmNsYXNzTGlzdCE9PVwidW5kZWZpbmVkXCIpe2Uuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS50cmltKCkpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX19KX1lbHNle3ZhciBuPW5ldyBSZWdFeHAoXCIoXnwgKVwiK2Uuc3BsaXQoXCIgXCIpLmpvaW4oXCJ8XCIpK1wiKCB8JClcIixcImdpXCIpO3ZhciBpPW0odCkucmVwbGFjZShuLFwiIFwiKTt2KHQsaSl9fWZ1bmN0aW9uIHAodCxlKXtpZih0eXBlb2YgdC5jbGFzc0xpc3QhPT1cInVuZGVmaW5lZFwiKXtlLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUudHJpbSgpKXt0LmNsYXNzTGlzdC5hZGQoZSl9fSl9ZWxzZXtoKHQsZSk7dmFyIG49bSh0KSsoXCIgXCIrZSk7dih0LG4pfX1mdW5jdGlvbiBnKGUsdCl7aWYodHlwZW9mIGUuY2xhc3NMaXN0IT09XCJ1bmRlZmluZWRcIil7cmV0dXJuIGUuY2xhc3NMaXN0LmNvbnRhaW5zKHQpfXZhciBuPW0oZSk7cmV0dXJuIG5ldyBSZWdFeHAoXCIoXnwgKVwiK3QrXCIoIHwkKVwiLFwiZ2lcIikudGVzdChuKX1mdW5jdGlvbiBtKGUpe2lmKGUuY2xhc3NOYW1lIGluc3RhbmNlb2YgZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LlNWR0FuaW1hdGVkU3RyaW5nKXtyZXR1cm4gZS5jbGFzc05hbWUuYmFzZVZhbH1yZXR1cm4gZS5jbGFzc05hbWV9ZnVuY3Rpb24gdihlLHQpe2Uuc2V0QXR0cmlidXRlKFwiY2xhc3NcIix0KX1mdW5jdGlvbiBTKHQsbixlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7aWYobi5pbmRleE9mKGUpPT09LTEmJmcodCxlKSl7aCh0LGUpfX0pO24uZm9yRWFjaChmdW5jdGlvbihlKXtpZighZyh0LGUpKXtwKHQsZSl9fSl9dmFyIHk9W10sRD1mdW5jdGlvbiBlKHQpe3kucHVzaCh0KX0sTz1mdW5jdGlvbiBlKCl7dmFyIHQ9dW5kZWZpbmVkO3doaWxlKHQ9eS5wb3AoKSl7dCgpfX0sXz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyKHRoaXMsZSl9aShlLFt7a2V5Olwib25cIix2YWx1ZTpmdW5jdGlvbiBlKHQsbixpKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPD0zfHxhcmd1bWVudHNbM109PT11bmRlZmluZWQ/ZmFsc2U6YXJndW1lbnRzWzNdO2lmKHR5cGVvZiB0aGlzLmJpbmRpbmdzPT09XCJ1bmRlZmluZWRcIil7dGhpcy5iaW5kaW5ncz17fX1pZih0eXBlb2YgdGhpcy5iaW5kaW5nc1t0XT09PVwidW5kZWZpbmVkXCIpe3RoaXMuYmluZGluZ3NbdF09W119dGhpcy5iaW5kaW5nc1t0XS5wdXNoKHtoYW5kbGVyOm4sY3R4Omksb25jZTpyfSl9fSx7a2V5Olwib25jZVwiLHZhbHVlOmZ1bmN0aW9uIGUodCxuLGkpe3RoaXMub24odCxuLGksdHJ1ZSl9fSx7a2V5Olwib2ZmXCIsdmFsdWU6ZnVuY3Rpb24gZSh0LG4pe2lmKHR5cGVvZiB0aGlzLmJpbmRpbmdzPT09XCJ1bmRlZmluZWRcInx8dHlwZW9mIHRoaXMuYmluZGluZ3NbdF09PT1cInVuZGVmaW5lZFwiKXtyZXR1cm59aWYodHlwZW9mIG49PT1cInVuZGVmaW5lZFwiKXtkZWxldGUgdGhpcy5iaW5kaW5nc1t0XX1lbHNle3ZhciBpPTA7d2hpbGUoaTx0aGlzLmJpbmRpbmdzW3RdLmxlbmd0aCl7aWYodGhpcy5iaW5kaW5nc1t0XVtpXS5oYW5kbGVyPT09bil7dGhpcy5iaW5kaW5nc1t0XS5zcGxpY2UoaSwxKX1lbHNleysraX19fX19LHtrZXk6XCJ0cmlnZ2VyXCIsdmFsdWU6ZnVuY3Rpb24gZSh0KXtpZih0eXBlb2YgdGhpcy5iaW5kaW5ncyE9PVwidW5kZWZpbmVkXCImJnRoaXMuYmluZGluZ3NbdF0pe3ZhciBuPTA7Zm9yKHZhciBpPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShpPjE/aS0xOjApLG89MTtvPGk7bysrKXtyW28tMV09YXJndW1lbnRzW29dfXdoaWxlKG48dGhpcy5iaW5kaW5nc1t0XS5sZW5ndGgpe3ZhciBzPXRoaXMuYmluZGluZ3NbdF1bbl07dmFyIGE9cy5oYW5kbGVyO3ZhciBsPXMuY3R4O3ZhciBjPXMub25jZTt2YXIgdT1sO2lmKHR5cGVvZiB1PT09XCJ1bmRlZmluZWRcIil7dT10aGlzfWEuYXBwbHkodSxyKTtpZihjKXt0aGlzLmJpbmRpbmdzW3RdLnNwbGljZShuLDEpfWVsc2V7KytufX19fX1dKTtyZXR1cm4gZX0oKTt4LlV0aWxzPXtnZXRBY3R1YWxCb3VuZGluZ0NsaWVudFJlY3Q6cyxnZXRTY3JvbGxQYXJlbnRzOmMsZ2V0Qm91bmRzOkMsZ2V0T2Zmc2V0UGFyZW50OlQsZXh0ZW5kOkUsYWRkQ2xhc3M6cCxyZW1vdmVDbGFzczpoLGhhc0NsYXNzOmcsdXBkYXRlQ2xhc3NlczpTLGRlZmVyOkQsZmx1c2g6Tyx1bmlxdWVJZDphLEV2ZW50ZWQ6XyxnZXRTY3JvbGxCYXJTaXplOkEscmVtb3ZlVXRpbEVsZW1lbnRzOmZ9O3ZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPVtdO3ZhciBpPXRydWU7dmFyIHI9ZmFsc2U7dmFyIG89dW5kZWZpbmVkO3RyeXtmb3IodmFyIHM9ZVtTeW1ib2wuaXRlcmF0b3JdKCksYTshKGk9KGE9cy5uZXh0KCkpLmRvbmUpO2k9dHJ1ZSl7bi5wdXNoKGEudmFsdWUpO2lmKHQmJm4ubGVuZ3RoPT09dClicmVha319Y2F0Y2goZSl7cj10cnVlO289ZX1maW5hbGx5e3RyeXtpZighaSYmc1tcInJldHVyblwiXSlzW1wicmV0dXJuXCJdKCl9ZmluYWxseXtpZihyKXRocm93IG99fXJldHVybiBufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpe3JldHVybiBlfWVsc2UgaWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSl7cmV0dXJuIG4oZSx0KX1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfX19KCksaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHxmYWxzZTtpLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIGkpaS53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2lmKHQpaShlLnByb3RvdHlwZSx0KTtpZihuKWkoZSxuKTtyZXR1cm4gZX19KCksYj1mdW5jdGlvbiBlKHQsbixpKXt2YXIgcj10cnVlO2U6d2hpbGUocil7dmFyIG89dCxzPW4sYT1pO3I9ZmFsc2U7aWYobz09PW51bGwpbz1GdW5jdGlvbi5wcm90b3R5cGU7dmFyIGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLHMpO2lmKGw9PT11bmRlZmluZWQpe3ZhciBjPU9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtpZihjPT09bnVsbCl7cmV0dXJuIHVuZGVmaW5lZH1lbHNle3Q9YztuPXM7aT1hO3I9dHJ1ZTtsPWM9dW5kZWZpbmVkO2NvbnRpbnVlIGV9fWVsc2UgaWYoXCJ2YWx1ZVwiaW4gbCl7cmV0dXJuIGwudmFsdWV9ZWxzZXt2YXIgdT1sLmdldDtpZih1PT09dW5kZWZpbmVkKXtyZXR1cm4gdW5kZWZpbmVkfXJldHVybiB1LmNhbGwoYSl9fX07ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfX1mdW5jdGlvbiB3KGUsdCl7aWYodHlwZW9mIHQhPT1cImZ1bmN0aW9uXCImJnQhPT1udWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgdCl9ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pO2lmKHQpT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXR9aWYodHlwZW9mIHg9PT1cInVuZGVmaW5lZFwiKXt0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBpbmNsdWRlIHRoZSB1dGlscy5qcyBmaWxlIGJlZm9yZSB0ZXRoZXIuanNcIil9dmFyIEk9eC5VdGlscyxjPUkuZ2V0U2Nyb2xsUGFyZW50cyxDPUkuZ2V0Qm91bmRzLFQ9SS5nZXRPZmZzZXRQYXJlbnQsRT1JLmV4dGVuZCxwPUkuYWRkQ2xhc3MsaD1JLnJlbW92ZUNsYXNzLFM9SS51cGRhdGVDbGFzc2VzLEQ9SS5kZWZlcixPPUkuZmx1c2gsQT1JLmdldFNjcm9sbEJhclNpemUsZj1JLnJlbW92ZVV0aWxFbGVtZW50cztmdW5jdGlvbiBqKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDw9Mnx8YXJndW1lbnRzWzJdPT09dW5kZWZpbmVkPzE6YXJndW1lbnRzWzJdO3JldHVybiBlK24+PXQmJnQ+PWUtbn12YXIgTj1mdW5jdGlvbigpe2lmKHR5cGVvZiBkb2N1bWVudD09PVwidW5kZWZpbmVkXCIpe3JldHVyblwiXCJ9dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt2YXIgdD1bXCJ0cmFuc2Zvcm1cIixcIldlYmtpdFRyYW5zZm9ybVwiLFwiT1RyYW5zZm9ybVwiLFwiTW96VHJhbnNmb3JtXCIsXCJtc1RyYW5zZm9ybVwiXTtmb3IodmFyIG49MDtuPHQubGVuZ3RoOysrbil7dmFyIGk9dFtuXTtpZihlLnN0eWxlW2ldIT09dW5kZWZpbmVkKXtyZXR1cm4gaX19fSgpLEw9W10sUD1mdW5jdGlvbiBlKCl7TC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucG9zaXRpb24oZmFsc2UpfSk7TygpfTtmdW5jdGlvbiAkKCl7aWYodHlwZW9mIHBlcmZvcm1hbmNlPT09XCJvYmplY3RcIiYmdHlwZW9mIHBlcmZvcm1hbmNlLm5vdz09PVwiZnVuY3Rpb25cIil7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfXJldHVybituZXcgRGF0ZX0oZnVuY3Rpb24oKXt2YXIgdD1udWxsO3ZhciBuPW51bGw7dmFyIGk9bnVsbDt2YXIgcj1mdW5jdGlvbiBlKCl7aWYodHlwZW9mIG4hPT1cInVuZGVmaW5lZFwiJiZuPjE2KXtuPU1hdGgubWluKG4tMTYsMjUwKTtpPXNldFRpbWVvdXQoZSwyNTApO3JldHVybn1pZih0eXBlb2YgdCE9PVwidW5kZWZpbmVkXCImJiQoKS10PDEwKXtyZXR1cm59aWYoaSE9bnVsbCl7Y2xlYXJUaW1lb3V0KGkpO2k9bnVsbH10PSQoKTtQKCk7bj0kKCktdH07aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCImJnR5cGVvZiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciE9PVwidW5kZWZpbmVkXCIpe1tcInJlc2l6ZVwiLFwic2Nyb2xsXCIsXCJ0b3VjaG1vdmVcIl0uZm9yRWFjaChmdW5jdGlvbihlKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihlLHIpfSl9fSkoKTt2YXIgTT17Y2VudGVyOlwiY2VudGVyXCIsbGVmdDpcInJpZ2h0XCIscmlnaHQ6XCJsZWZ0XCJ9LHE9e21pZGRsZTpcIm1pZGRsZVwiLHRvcDpcImJvdHRvbVwiLGJvdHRvbTpcInRvcFwifSxIPXt0b3A6MCxsZWZ0OjAsbWlkZGxlOlwiNTAlXCIsY2VudGVyOlwiNTAlXCIsYm90dG9tOlwiMTAwJVwiLHJpZ2h0OlwiMTAwJVwifSxSPWZ1bmN0aW9uIGUodCxuKXt2YXIgaT10LmxlZnQ7dmFyIHI9dC50b3A7aWYoaT09PVwiYXV0b1wiKXtpPU1bbi5sZWZ0XX1pZihyPT09XCJhdXRvXCIpe3I9cVtuLnRvcF19cmV0dXJue2xlZnQ6aSx0b3A6cn19LFc9ZnVuY3Rpb24gZSh0KXt2YXIgbj10LmxlZnQ7dmFyIGk9dC50b3A7aWYodHlwZW9mIEhbdC5sZWZ0XSE9PVwidW5kZWZpbmVkXCIpe249SFt0LmxlZnRdfWlmKHR5cGVvZiBIW3QudG9wXSE9PVwidW5kZWZpbmVkXCIpe2k9SFt0LnRvcF19cmV0dXJue2xlZnQ6bix0b3A6aX19O2Z1bmN0aW9uIEIoKXt2YXIgaT17dG9wOjAsbGVmdDowfTtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXt0W25dPWFyZ3VtZW50c1tuXX10LmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b3A7dmFyIG49ZS5sZWZ0O2lmKHR5cGVvZiB0PT09XCJzdHJpbmdcIil7dD1wYXJzZUZsb2F0KHQsMTApfWlmKHR5cGVvZiBuPT09XCJzdHJpbmdcIil7bj1wYXJzZUZsb2F0KG4sMTApfWkudG9wKz10O2kubGVmdCs9bn0pO3JldHVybiBpfWZ1bmN0aW9uIEYoZSx0KXtpZih0eXBlb2YgZS5sZWZ0PT09XCJzdHJpbmdcIiYmZS5sZWZ0LmluZGV4T2YoXCIlXCIpIT09LTEpe2UubGVmdD1wYXJzZUZsb2F0KGUubGVmdCwxMCkvMTAwKnQud2lkdGh9aWYodHlwZW9mIGUudG9wPT09XCJzdHJpbmdcIiYmZS50b3AuaW5kZXhPZihcIiVcIikhPT0tMSl7ZS50b3A9cGFyc2VGbG9hdChlLnRvcCwxMCkvMTAwKnQuaGVpZ2h0fXJldHVybiBlfXZhciBVPWZ1bmN0aW9uIGUodCl7dmFyIG49dC5zcGxpdChcIiBcIik7dmFyIGk9ayhuLDIpO3ZhciByPWlbMF07dmFyIG89aVsxXTtyZXR1cm57dG9wOnIsbGVmdDpvfX0sUT1VLHo9ZnVuY3Rpb24oZSl7dyhuLGUpO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9dGhpcztyKHRoaXMsbik7YihPYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpLFwiY29uc3RydWN0b3JcIix0aGlzKS5jYWxsKHRoaXMpO3RoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbi5iaW5kKHRoaXMpO0wucHVzaCh0aGlzKTt0aGlzLmhpc3Rvcnk9W107dGhpcy5zZXRPcHRpb25zKGUsZmFsc2UpO3gubW9kdWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlLmluaXRpYWxpemUhPT1cInVuZGVmaW5lZFwiKXtlLmluaXRpYWxpemUuY2FsbCh0KX19KTt0aGlzLnBvc2l0aW9uKCl9aShuLFt7a2V5OlwiZ2V0Q2xhc3NcIix2YWx1ZTpmdW5jdGlvbiBlKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDw9MHx8YXJndW1lbnRzWzBdPT09dW5kZWZpbmVkP1wiXCI6YXJndW1lbnRzWzBdO3ZhciBuPXRoaXMub3B0aW9ucy5jbGFzc2VzO2lmKHR5cGVvZiBuIT09XCJ1bmRlZmluZWRcIiYmblt0XSl7cmV0dXJuIHRoaXMub3B0aW9ucy5jbGFzc2VzW3RdfWVsc2UgaWYodGhpcy5vcHRpb25zLmNsYXNzUHJlZml4KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNsYXNzUHJlZml4K1wiLVwiK3R9ZWxzZXtyZXR1cm4gdH19fSx7a2V5Olwic2V0T3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uIGUodCl7dmFyIG49dGhpczt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPD0xfHxhcmd1bWVudHNbMV09PT11bmRlZmluZWQ/dHJ1ZTphcmd1bWVudHNbMV07dmFyIHI9e29mZnNldDpcIjAgMFwiLHRhcmdldE9mZnNldDpcIjAgMFwiLHRhcmdldEF0dGFjaG1lbnQ6XCJhdXRvIGF1dG9cIixjbGFzc1ByZWZpeDpcInRldGhlclwifTt0aGlzLm9wdGlvbnM9RShyLHQpO3ZhciBvPXRoaXMub3B0aW9uczt2YXIgcz1vLmVsZW1lbnQ7dmFyIGE9by50YXJnZXQ7dmFyIGw9by50YXJnZXRNb2RpZmllcjt0aGlzLmVsZW1lbnQ9czt0aGlzLnRhcmdldD1hO3RoaXMudGFyZ2V0TW9kaWZpZXI9bDtpZih0aGlzLnRhcmdldD09PVwidmlld3BvcnRcIil7dGhpcy50YXJnZXQ9ZG9jdW1lbnQuYm9keTt0aGlzLnRhcmdldE1vZGlmaWVyPVwidmlzaWJsZVwifWVsc2UgaWYodGhpcy50YXJnZXQ9PT1cInNjcm9sbC1oYW5kbGVcIil7dGhpcy50YXJnZXQ9ZG9jdW1lbnQuYm9keTt0aGlzLnRhcmdldE1vZGlmaWVyPVwic2Nyb2xsLWhhbmRsZVwifVtcImVsZW1lbnRcIixcInRhcmdldFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBuW2VdPT09XCJ1bmRlZmluZWRcIil7dGhyb3cgbmV3IEVycm9yKFwiVGV0aGVyIEVycm9yOiBCb3RoIGVsZW1lbnQgYW5kIHRhcmdldCBtdXN0IGJlIGRlZmluZWRcIil9aWYodHlwZW9mIG5bZV0uanF1ZXJ5IT09XCJ1bmRlZmluZWRcIil7bltlXT1uW2VdWzBdfWVsc2UgaWYodHlwZW9mIG5bZV09PT1cInN0cmluZ1wiKXtuW2VdPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobltlXSl9fSk7cCh0aGlzLmVsZW1lbnQsdGhpcy5nZXRDbGFzcyhcImVsZW1lbnRcIikpO2lmKCEodGhpcy5vcHRpb25zLmFkZFRhcmdldENsYXNzZXM9PT1mYWxzZSkpe3AodGhpcy50YXJnZXQsdGhpcy5nZXRDbGFzcyhcInRhcmdldFwiKSl9aWYoIXRoaXMub3B0aW9ucy5hdHRhY2htZW50KXt0aHJvdyBuZXcgRXJyb3IoXCJUZXRoZXIgRXJyb3I6IFlvdSBtdXN0IHByb3ZpZGUgYW4gYXR0YWNobWVudFwiKX10aGlzLnRhcmdldEF0dGFjaG1lbnQ9USh0aGlzLm9wdGlvbnMudGFyZ2V0QXR0YWNobWVudCk7dGhpcy5hdHRhY2htZW50PVEodGhpcy5vcHRpb25zLmF0dGFjaG1lbnQpO3RoaXMub2Zmc2V0PVUodGhpcy5vcHRpb25zLm9mZnNldCk7dGhpcy50YXJnZXRPZmZzZXQ9VSh0aGlzLm9wdGlvbnMudGFyZ2V0T2Zmc2V0KTtpZih0eXBlb2YgdGhpcy5zY3JvbGxQYXJlbnRzIT09XCJ1bmRlZmluZWRcIil7dGhpcy5kaXNhYmxlKCl9aWYodGhpcy50YXJnZXRNb2RpZmllcj09PVwic2Nyb2xsLWhhbmRsZVwiKXt0aGlzLnNjcm9sbFBhcmVudHM9W3RoaXMudGFyZ2V0XX1lbHNle3RoaXMuc2Nyb2xsUGFyZW50cz1jKHRoaXMudGFyZ2V0KX1pZighKHRoaXMub3B0aW9ucy5lbmFibGVkPT09ZmFsc2UpKXt0aGlzLmVuYWJsZShpKX19fSx7a2V5OlwiZ2V0VGFyZ2V0Qm91bmRzXCIsdmFsdWU6ZnVuY3Rpb24gZSgpe2lmKHR5cGVvZiB0aGlzLnRhcmdldE1vZGlmaWVyIT09XCJ1bmRlZmluZWRcIil7aWYodGhpcy50YXJnZXRNb2RpZmllcj09PVwidmlzaWJsZVwiKXtpZih0aGlzLnRhcmdldD09PWRvY3VtZW50LmJvZHkpe3JldHVybnt0b3A6cGFnZVlPZmZzZXQsbGVmdDpwYWdlWE9mZnNldCxoZWlnaHQ6aW5uZXJIZWlnaHQsd2lkdGg6aW5uZXJXaWR0aH19ZWxzZXt2YXIgdD1DKHRoaXMudGFyZ2V0KTt2YXIgbj17aGVpZ2h0OnQuaGVpZ2h0LHdpZHRoOnQud2lkdGgsdG9wOnQudG9wLGxlZnQ6dC5sZWZ0fTtuLmhlaWdodD1NYXRoLm1pbihuLmhlaWdodCx0LmhlaWdodC0ocGFnZVlPZmZzZXQtdC50b3ApKTtuLmhlaWdodD1NYXRoLm1pbihuLmhlaWdodCx0LmhlaWdodC0odC50b3ArdC5oZWlnaHQtKHBhZ2VZT2Zmc2V0K2lubmVySGVpZ2h0KSkpO24uaGVpZ2h0PU1hdGgubWluKGlubmVySGVpZ2h0LG4uaGVpZ2h0KTtuLmhlaWdodC09MjtuLndpZHRoPU1hdGgubWluKG4ud2lkdGgsdC53aWR0aC0ocGFnZVhPZmZzZXQtdC5sZWZ0KSk7bi53aWR0aD1NYXRoLm1pbihuLndpZHRoLHQud2lkdGgtKHQubGVmdCt0LndpZHRoLShwYWdlWE9mZnNldCtpbm5lcldpZHRoKSkpO24ud2lkdGg9TWF0aC5taW4oaW5uZXJXaWR0aCxuLndpZHRoKTtuLndpZHRoLT0yO2lmKG4udG9wPHBhZ2VZT2Zmc2V0KXtuLnRvcD1wYWdlWU9mZnNldH1pZihuLmxlZnQ8cGFnZVhPZmZzZXQpe24ubGVmdD1wYWdlWE9mZnNldH1yZXR1cm4gbn19ZWxzZSBpZih0aGlzLnRhcmdldE1vZGlmaWVyPT09XCJzY3JvbGwtaGFuZGxlXCIpe3ZhciB0PXVuZGVmaW5lZDt2YXIgaT10aGlzLnRhcmdldDtpZihpPT09ZG9jdW1lbnQuYm9keSl7aT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dD17bGVmdDpwYWdlWE9mZnNldCx0b3A6cGFnZVlPZmZzZXQsaGVpZ2h0OmlubmVySGVpZ2h0LHdpZHRoOmlubmVyV2lkdGh9fWVsc2V7dD1DKGkpfXZhciByPWdldENvbXB1dGVkU3R5bGUoaSk7dmFyIG89aS5zY3JvbGxXaWR0aD5pLmNsaWVudFdpZHRofHxbci5vdmVyZmxvdyxyLm92ZXJmbG93WF0uaW5kZXhPZihcInNjcm9sbFwiKT49MHx8dGhpcy50YXJnZXQhPT1kb2N1bWVudC5ib2R5O3ZhciBzPTA7aWYobyl7cz0xNX12YXIgYT10LmhlaWdodC1wYXJzZUZsb2F0KHIuYm9yZGVyVG9wV2lkdGgpLXBhcnNlRmxvYXQoci5ib3JkZXJCb3R0b21XaWR0aCktczt2YXIgbj17d2lkdGg6MTUsaGVpZ2h0OmEqLjk3NSooYS9pLnNjcm9sbEhlaWdodCksbGVmdDp0LmxlZnQrdC53aWR0aC1wYXJzZUZsb2F0KHIuYm9yZGVyTGVmdFdpZHRoKS0xNX07dmFyIGw9MDtpZihhPDQwOCYmdGhpcy50YXJnZXQ9PT1kb2N1bWVudC5ib2R5KXtsPS0xMWUtNSpNYXRoLnBvdyhhLDIpLS4wMDcyNyphKzIyLjU4fWlmKHRoaXMudGFyZ2V0IT09ZG9jdW1lbnQuYm9keSl7bi5oZWlnaHQ9TWF0aC5tYXgobi5oZWlnaHQsMjQpfXZhciBjPXRoaXMudGFyZ2V0LnNjcm9sbFRvcC8oaS5zY3JvbGxIZWlnaHQtYSk7bi50b3A9YyooYS1uLmhlaWdodC1sKSt0LnRvcCtwYXJzZUZsb2F0KHIuYm9yZGVyVG9wV2lkdGgpO2lmKHRoaXMudGFyZ2V0PT09ZG9jdW1lbnQuYm9keSl7bi5oZWlnaHQ9TWF0aC5tYXgobi5oZWlnaHQsMjQpfXJldHVybiBufX1lbHNle3JldHVybiBDKHRoaXMudGFyZ2V0KX19fSx7a2V5OlwiY2xlYXJDYWNoZVwiLHZhbHVlOmZ1bmN0aW9uIGUoKXt0aGlzLl9jYWNoZT17fX19LHtrZXk6XCJjYWNoZVwiLHZhbHVlOmZ1bmN0aW9uIGUodCxuKXtpZih0eXBlb2YgdGhpcy5fY2FjaGU9PT1cInVuZGVmaW5lZFwiKXt0aGlzLl9jYWNoZT17fX1pZih0eXBlb2YgdGhpcy5fY2FjaGVbdF09PT1cInVuZGVmaW5lZFwiKXt0aGlzLl9jYWNoZVt0XT1uLmNhbGwodGhpcyl9cmV0dXJuIHRoaXMuX2NhY2hlW3RdfX0se2tleTpcImVuYWJsZVwiLHZhbHVlOmZ1bmN0aW9uIGUoKXt2YXIgdD10aGlzO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8PTB8fGFyZ3VtZW50c1swXT09PXVuZGVmaW5lZD90cnVlOmFyZ3VtZW50c1swXTtpZighKHRoaXMub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzPT09ZmFsc2UpKXtwKHRoaXMudGFyZ2V0LHRoaXMuZ2V0Q2xhc3MoXCJlbmFibGVkXCIpKX1wKHRoaXMuZWxlbWVudCx0aGlzLmdldENsYXNzKFwiZW5hYmxlZFwiKSk7dGhpcy5lbmFibGVkPXRydWU7dGhpcy5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSE9PXQudGFyZ2V0Lm93bmVyRG9jdW1lbnQpe2UuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQucG9zaXRpb24pfX0pO2lmKG4pe3RoaXMucG9zaXRpb24oKX19fSx7a2V5OlwiZGlzYWJsZVwiLHZhbHVlOmZ1bmN0aW9uIGUoKXt2YXIgdD10aGlzO2godGhpcy50YXJnZXQsdGhpcy5nZXRDbGFzcyhcImVuYWJsZWRcIikpO2godGhpcy5lbGVtZW50LHRoaXMuZ2V0Q2xhc3MoXCJlbmFibGVkXCIpKTt0aGlzLmVuYWJsZWQ9ZmFsc2U7aWYodHlwZW9mIHRoaXMuc2Nyb2xsUGFyZW50cyE9PVwidW5kZWZpbmVkXCIpe3RoaXMuc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHQucG9zaXRpb24pfSl9fX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbiBlKCl7dmFyIG49dGhpczt0aGlzLmRpc2FibGUoKTtMLmZvckVhY2goZnVuY3Rpb24oZSx0KXtpZihlPT09bil7TC5zcGxpY2UodCwxKX19KTtpZihMLmxlbmd0aD09PTApe2YoKX19fSx7a2V5OlwidXBkYXRlQXR0YWNoQ2xhc3Nlc1wiLHZhbHVlOmZ1bmN0aW9uIGUodCxuKXt2YXIgaT10aGlzO3Q9dHx8dGhpcy5hdHRhY2htZW50O249bnx8dGhpcy50YXJnZXRBdHRhY2htZW50O3ZhciByPVtcImxlZnRcIixcInRvcFwiLFwiYm90dG9tXCIsXCJyaWdodFwiLFwibWlkZGxlXCIsXCJjZW50ZXJcIl07aWYodHlwZW9mIHRoaXMuX2FkZEF0dGFjaENsYXNzZXMhPT1cInVuZGVmaW5lZFwiJiZ0aGlzLl9hZGRBdHRhY2hDbGFzc2VzLmxlbmd0aCl7dGhpcy5fYWRkQXR0YWNoQ2xhc3Nlcy5zcGxpY2UoMCx0aGlzLl9hZGRBdHRhY2hDbGFzc2VzLmxlbmd0aCl9aWYodHlwZW9mIHRoaXMuX2FkZEF0dGFjaENsYXNzZXM9PT1cInVuZGVmaW5lZFwiKXt0aGlzLl9hZGRBdHRhY2hDbGFzc2VzPVtdfXZhciBvPXRoaXMuX2FkZEF0dGFjaENsYXNzZXM7aWYodC50b3Ape28ucHVzaCh0aGlzLmdldENsYXNzKFwiZWxlbWVudC1hdHRhY2hlZFwiKStcIi1cIit0LnRvcCl9aWYodC5sZWZ0KXtvLnB1c2godGhpcy5nZXRDbGFzcyhcImVsZW1lbnQtYXR0YWNoZWRcIikrXCItXCIrdC5sZWZ0KX1pZihuLnRvcCl7by5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJ0YXJnZXQtYXR0YWNoZWRcIikrXCItXCIrbi50b3ApfWlmKG4ubGVmdCl7by5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJ0YXJnZXQtYXR0YWNoZWRcIikrXCItXCIrbi5sZWZ0KX12YXIgcz1bXTtyLmZvckVhY2goZnVuY3Rpb24oZSl7cy5wdXNoKGkuZ2V0Q2xhc3MoXCJlbGVtZW50LWF0dGFjaGVkXCIpK1wiLVwiK2UpO3MucHVzaChpLmdldENsYXNzKFwidGFyZ2V0LWF0dGFjaGVkXCIpK1wiLVwiK2UpfSk7RChmdW5jdGlvbigpe2lmKCEodHlwZW9mIGkuX2FkZEF0dGFjaENsYXNzZXMhPT1cInVuZGVmaW5lZFwiKSl7cmV0dXJufVMoaS5lbGVtZW50LGkuX2FkZEF0dGFjaENsYXNzZXMscyk7aWYoIShpLm9wdGlvbnMuYWRkVGFyZ2V0Q2xhc3Nlcz09PWZhbHNlKSl7UyhpLnRhcmdldCxpLl9hZGRBdHRhY2hDbGFzc2VzLHMpfWRlbGV0ZSBpLl9hZGRBdHRhY2hDbGFzc2VzfSl9fSx7a2V5OlwicG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbiBlKCl7dmFyIGE9dGhpczt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0wfHxhcmd1bWVudHNbMF09PT11bmRlZmluZWQ/dHJ1ZTphcmd1bWVudHNbMF07aWYoIXRoaXMuZW5hYmxlZCl7cmV0dXJufXRoaXMuY2xlYXJDYWNoZSgpO3ZhciBuPVIodGhpcy50YXJnZXRBdHRhY2htZW50LHRoaXMuYXR0YWNobWVudCk7dGhpcy51cGRhdGVBdHRhY2hDbGFzc2VzKHRoaXMuYXR0YWNobWVudCxuKTt2YXIgaT10aGlzLmNhY2hlKFwiZWxlbWVudC1ib3VuZHNcIixmdW5jdGlvbigpe3JldHVybiBDKGEuZWxlbWVudCl9KTt2YXIgcj1pLndpZHRoO3ZhciBvPWkuaGVpZ2h0O2lmKHI9PT0wJiZvPT09MCYmdHlwZW9mIHRoaXMubGFzdFNpemUhPT1cInVuZGVmaW5lZFwiKXt2YXIgcz10aGlzLmxhc3RTaXplO3I9cy53aWR0aDtvPXMuaGVpZ2h0fWVsc2V7dGhpcy5sYXN0U2l6ZT17d2lkdGg6cixoZWlnaHQ6b319dmFyIGw9dGhpcy5jYWNoZShcInRhcmdldC1ib3VuZHNcIixmdW5jdGlvbigpe3JldHVybiBhLmdldFRhcmdldEJvdW5kcygpfSk7dmFyIGM9bDt2YXIgdT1GKFcodGhpcy5hdHRhY2htZW50KSx7d2lkdGg6cixoZWlnaHQ6b30pO3ZhciBmPUYoVyhuKSxjKTt2YXIgZD1GKHRoaXMub2Zmc2V0LHt3aWR0aDpyLGhlaWdodDpvfSk7dmFyIGg9Rih0aGlzLnRhcmdldE9mZnNldCxjKTt1PUIodSxkKTtmPUIoZixoKTt2YXIgcD1sLmxlZnQrZi5sZWZ0LXUubGVmdDt2YXIgZz1sLnRvcCtmLnRvcC11LnRvcDtmb3IodmFyIG09MDttPHgubW9kdWxlcy5sZW5ndGg7KyttKXt2YXIgdj14Lm1vZHVsZXNbbV07dmFyIHk9di5wb3NpdGlvbi5jYWxsKHRoaXMse2xlZnQ6cCx0b3A6Zyx0YXJnZXRBdHRhY2htZW50Om4sdGFyZ2V0UG9zOmwsZWxlbWVudFBvczppLG9mZnNldDp1LHRhcmdldE9mZnNldDpmLG1hbnVhbE9mZnNldDpkLG1hbnVhbFRhcmdldE9mZnNldDpoLHNjcm9sbGJhclNpemU6RSxhdHRhY2htZW50OnRoaXMuYXR0YWNobWVudH0pO2lmKHk9PT1mYWxzZSl7cmV0dXJuIGZhbHNlfWVsc2UgaWYodHlwZW9mIHk9PT1cInVuZGVmaW5lZFwifHx0eXBlb2YgeSE9PVwib2JqZWN0XCIpe2NvbnRpbnVlfWVsc2V7Zz15LnRvcDtwPXkubGVmdH19dmFyIF89e3BhZ2U6e3RvcDpnLGxlZnQ6cH0sdmlld3BvcnQ6e3RvcDpnLXBhZ2VZT2Zmc2V0LGJvdHRvbTpwYWdlWU9mZnNldC1nLW8raW5uZXJIZWlnaHQsbGVmdDpwLXBhZ2VYT2Zmc2V0LHJpZ2h0OnBhZ2VYT2Zmc2V0LXAtcitpbm5lcldpZHRofX07dmFyIGI9dGhpcy50YXJnZXQub3duZXJEb2N1bWVudDt2YXIgdz1iLmRlZmF1bHRWaWV3O3ZhciBFPXVuZGVmaW5lZDtpZih3LmlubmVySGVpZ2h0PmIuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCl7RT10aGlzLmNhY2hlKFwic2Nyb2xsYmFyLXNpemVcIixBKTtfLnZpZXdwb3J0LmJvdHRvbS09RS5oZWlnaHR9aWYody5pbm5lcldpZHRoPmIuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKXtFPXRoaXMuY2FjaGUoXCJzY3JvbGxiYXItc2l6ZVwiLEEpO18udmlld3BvcnQucmlnaHQtPUUud2lkdGh9aWYoW1wiXCIsXCJzdGF0aWNcIl0uaW5kZXhPZihiLmJvZHkuc3R5bGUucG9zaXRpb24pPT09LTF8fFtcIlwiLFwic3RhdGljXCJdLmluZGV4T2YoYi5ib2R5LnBhcmVudEVsZW1lbnQuc3R5bGUucG9zaXRpb24pPT09LTEpe18ucGFnZS5ib3R0b209Yi5ib2R5LnNjcm9sbEhlaWdodC1nLW87Xy5wYWdlLnJpZ2h0PWIuYm9keS5zY3JvbGxXaWR0aC1wLXJ9aWYodHlwZW9mIHRoaXMub3B0aW9ucy5vcHRpbWl6YXRpb25zIT09XCJ1bmRlZmluZWRcIiYmdGhpcy5vcHRpb25zLm9wdGltaXphdGlvbnMubW92ZUVsZW1lbnQhPT1mYWxzZSYmISh0eXBlb2YgdGhpcy50YXJnZXRNb2RpZmllciE9PVwidW5kZWZpbmVkXCIpKXsoZnVuY3Rpb24oKXt2YXIgZT1hLmNhY2hlKFwidGFyZ2V0LW9mZnNldHBhcmVudFwiLGZ1bmN0aW9uKCl7cmV0dXJuIFQoYS50YXJnZXQpfSk7dmFyIHQ9YS5jYWNoZShcInRhcmdldC1vZmZzZXRwYXJlbnQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gQyhlKX0pO3ZhciBuPWdldENvbXB1dGVkU3R5bGUoZSk7dmFyIGk9dDt2YXIgcj17fTtbXCJUb3BcIixcIkxlZnRcIixcIkJvdHRvbVwiLFwiUmlnaHRcIl0uZm9yRWFjaChmdW5jdGlvbihlKXtyW2UudG9Mb3dlckNhc2UoKV09cGFyc2VGbG9hdChuW1wiYm9yZGVyXCIrZStcIldpZHRoXCJdKX0pO3QucmlnaHQ9Yi5ib2R5LnNjcm9sbFdpZHRoLXQubGVmdC1pLndpZHRoK3IucmlnaHQ7dC5ib3R0b209Yi5ib2R5LnNjcm9sbEhlaWdodC10LnRvcC1pLmhlaWdodCtyLmJvdHRvbTtpZihfLnBhZ2UudG9wPj10LnRvcCtyLnRvcCYmXy5wYWdlLmJvdHRvbT49dC5ib3R0b20pe2lmKF8ucGFnZS5sZWZ0Pj10LmxlZnQrci5sZWZ0JiZfLnBhZ2UucmlnaHQ+PXQucmlnaHQpe3ZhciBvPWUuc2Nyb2xsVG9wO3ZhciBzPWUuc2Nyb2xsTGVmdDtfLm9mZnNldD17dG9wOl8ucGFnZS50b3AtdC50b3Arby1yLnRvcCxsZWZ0Ol8ucGFnZS5sZWZ0LXQubGVmdCtzLXIubGVmdH19fX0pKCl9dGhpcy5tb3ZlKF8pO3RoaXMuaGlzdG9yeS51bnNoaWZ0KF8pO2lmKHRoaXMuaGlzdG9yeS5sZW5ndGg+Myl7dGhpcy5oaXN0b3J5LnBvcCgpfWlmKHQpe08oKX1yZXR1cm4gdHJ1ZX19LHtrZXk6XCJtb3ZlXCIsdmFsdWU6ZnVuY3Rpb24gZSh0KXt2YXIgbD10aGlzO2lmKCEodHlwZW9mIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlIT09XCJ1bmRlZmluZWRcIikpe3JldHVybn12YXIgbj17fTtmb3IodmFyIGkgaW4gdCl7bltpXT17fTtmb3IodmFyIHIgaW4gdFtpXSl7dmFyIG89ZmFsc2U7Zm9yKHZhciBzPTA7czx0aGlzLmhpc3RvcnkubGVuZ3RoOysrcyl7dmFyIGE9dGhpcy5oaXN0b3J5W3NdO2lmKHR5cGVvZiBhW2ldIT09XCJ1bmRlZmluZWRcIiYmIWooYVtpXVtyXSx0W2ldW3JdKSl7bz10cnVlO2JyZWFrfX1pZighbyl7bltpXVtyXT10cnVlfX19dmFyIGM9e3RvcDpcIlwiLGxlZnQ6XCJcIixyaWdodDpcIlwiLGJvdHRvbTpcIlwifTt2YXIgdT1mdW5jdGlvbiBlKHQsbil7dmFyIGk9dHlwZW9mIGwub3B0aW9ucy5vcHRpbWl6YXRpb25zIT09XCJ1bmRlZmluZWRcIjt2YXIgcj1pP2wub3B0aW9ucy5vcHRpbWl6YXRpb25zLmdwdTpudWxsO2lmKHIhPT1mYWxzZSl7dmFyIG89dW5kZWZpbmVkLHM9dW5kZWZpbmVkO2lmKHQudG9wKXtjLnRvcD0wO289bi50b3B9ZWxzZXtjLmJvdHRvbT0wO289LW4uYm90dG9tfWlmKHQubGVmdCl7Yy5sZWZ0PTA7cz1uLmxlZnR9ZWxzZXtjLnJpZ2h0PTA7cz0tbi5yaWdodH1pZih3aW5kb3cubWF0Y2hNZWRpYSl7dmFyIGE9d2luZG93Lm1hdGNoTWVkaWEoXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxLjNkcHB4KVwiKS5tYXRjaGVzfHx3aW5kb3cubWF0Y2hNZWRpYShcIm9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjMpXCIpLm1hdGNoZXM7aWYoIWEpe3M9TWF0aC5yb3VuZChzKTtvPU1hdGgucm91bmQobyl9fWNbTl09XCJ0cmFuc2xhdGVYKFwiK3MrXCJweCkgdHJhbnNsYXRlWShcIitvK1wicHgpXCI7aWYoTiE9PVwibXNUcmFuc2Zvcm1cIil7Y1tOXSs9XCIgdHJhbnNsYXRlWigwKVwifX1lbHNle2lmKHQudG9wKXtjLnRvcD1uLnRvcCtcInB4XCJ9ZWxzZXtjLmJvdHRvbT1uLmJvdHRvbStcInB4XCJ9aWYodC5sZWZ0KXtjLmxlZnQ9bi5sZWZ0K1wicHhcIn1lbHNle2MucmlnaHQ9bi5yaWdodCtcInB4XCJ9fX07dmFyIGY9ZmFsc2U7aWYoKG4ucGFnZS50b3B8fG4ucGFnZS5ib3R0b20pJiYobi5wYWdlLmxlZnR8fG4ucGFnZS5yaWdodCkpe2MucG9zaXRpb249XCJhYnNvbHV0ZVwiO3Uobi5wYWdlLHQucGFnZSl9ZWxzZSBpZigobi52aWV3cG9ydC50b3B8fG4udmlld3BvcnQuYm90dG9tKSYmKG4udmlld3BvcnQubGVmdHx8bi52aWV3cG9ydC5yaWdodCkpe2MucG9zaXRpb249XCJmaXhlZFwiO3Uobi52aWV3cG9ydCx0LnZpZXdwb3J0KX1lbHNlIGlmKHR5cGVvZiBuLm9mZnNldCE9PVwidW5kZWZpbmVkXCImJm4ub2Zmc2V0LnRvcCYmbi5vZmZzZXQubGVmdCl7KGZ1bmN0aW9uKCl7Yy5wb3NpdGlvbj1cImFic29sdXRlXCI7dmFyIGU9bC5jYWNoZShcInRhcmdldC1vZmZzZXRwYXJlbnRcIixmdW5jdGlvbigpe3JldHVybiBUKGwudGFyZ2V0KX0pO2lmKFQobC5lbGVtZW50KSE9PWUpe0QoZnVuY3Rpb24oKXtsLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsLmVsZW1lbnQpO2UuYXBwZW5kQ2hpbGQobC5lbGVtZW50KX0pfXUobi5vZmZzZXQsdC5vZmZzZXQpO2Y9dHJ1ZX0pKCl9ZWxzZXtjLnBvc2l0aW9uPVwiYWJzb2x1dGVcIjt1KHt0b3A6dHJ1ZSxsZWZ0OnRydWV9LHQucGFnZSl9aWYoIWYpe2lmKHRoaXMub3B0aW9ucy5ib2R5RWxlbWVudCl7aWYodGhpcy5lbGVtZW50LnBhcmVudE5vZGUhPT10aGlzLm9wdGlvbnMuYm9keUVsZW1lbnQpe3RoaXMub3B0aW9ucy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpfX1lbHNle3ZhciBkPXRydWU7dmFyIGg9dGhpcy5lbGVtZW50LnBhcmVudE5vZGU7d2hpbGUoaCYmaC5ub2RlVHlwZT09PTEmJmgudGFnTmFtZSE9PVwiQk9EWVwiKXtpZihnZXRDb21wdXRlZFN0eWxlKGgpLnBvc2l0aW9uIT09XCJzdGF0aWNcIil7ZD1mYWxzZTticmVha31oPWgucGFyZW50Tm9kZX1pZighZCl7dGhpcy5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCl9fX12YXIgcD17fTt2YXIgZz1mYWxzZTtmb3IodmFyIHIgaW4gYyl7dmFyIG09Y1tyXTt2YXIgdj10aGlzLmVsZW1lbnQuc3R5bGVbcl07aWYodiE9PW0pe2c9dHJ1ZTtwW3JdPW19fWlmKGcpe0QoZnVuY3Rpb24oKXtFKGwuZWxlbWVudC5zdHlsZSxwKTtsLnRyaWdnZXIoXCJyZXBvc2l0aW9uZWRcIil9KX19fV0pO3JldHVybiBufShfKTt6Lm1vZHVsZXM9W10seC5wb3NpdGlvbj1QO3ZhciBLPUUoeix4KTtcInVzZSBzdHJpY3RcIjt2YXIgaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1bXTt2YXIgaT10cnVlO3ZhciByPWZhbHNlO3ZhciBvPXVuZGVmaW5lZDt0cnl7Zm9yKHZhciBzPWVbU3ltYm9sLml0ZXJhdG9yXSgpLGE7IShpPShhPXMubmV4dCgpKS5kb25lKTtpPXRydWUpe24ucHVzaChhLnZhbHVlKTtpZih0JiZuLmxlbmd0aD09PXQpYnJlYWt9fWNhdGNoKGUpe3I9dHJ1ZTtvPWV9ZmluYWxseXt0cnl7aWYoIWkmJnNbXCJyZXR1cm5cIl0pc1tcInJldHVyblwiXSgpfWZpbmFsbHl7aWYocil0aHJvdyBvfX1yZXR1cm4gbn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXtyZXR1cm4gZX1lbHNlIGlmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpe3JldHVybiBuKGUsdCl9ZWxzZXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKX19fSgpLEksQz0oST14LlV0aWxzKS5nZXRCb3VuZHMsRT1JLmV4dGVuZCxTPUkudXBkYXRlQ2xhc3NlcyxEPUkuZGVmZXIsWT1bXCJsZWZ0XCIsXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIl07ZnVuY3Rpb24gVihlLG8pe2lmKG89PT1cInNjcm9sbFBhcmVudFwiKXtvPWUuc2Nyb2xsUGFyZW50c1swXX1lbHNlIGlmKG89PT1cIndpbmRvd1wiKXtvPVtwYWdlWE9mZnNldCxwYWdlWU9mZnNldCxpbm5lcldpZHRoK3BhZ2VYT2Zmc2V0LGlubmVySGVpZ2h0K3BhZ2VZT2Zmc2V0XX1pZihvPT09ZG9jdW1lbnQpe289by5kb2N1bWVudEVsZW1lbnR9aWYodHlwZW9mIG8ubm9kZVR5cGUhPT1cInVuZGVmaW5lZFwiKXsoZnVuY3Rpb24oKXt2YXIgZT1vO3ZhciB0PUMobyk7dmFyIG49dDt2YXIgaT1nZXRDb21wdXRlZFN0eWxlKG8pO289W24ubGVmdCxuLnRvcCx0LndpZHRoK24ubGVmdCx0LmhlaWdodCtuLnRvcF07aWYoZS5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpe3ZhciByPWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztvWzBdKz1yLnBhZ2VYT2Zmc2V0O29bMV0rPXIucGFnZVlPZmZzZXQ7b1syXSs9ci5wYWdlWE9mZnNldDtvWzNdKz1yLnBhZ2VZT2Zmc2V0fVkuZm9yRWFjaChmdW5jdGlvbihlLHQpe2U9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc3Vic3RyKDEpO2lmKGU9PT1cIlRvcFwifHxlPT09XCJMZWZ0XCIpe29bdF0rPXBhcnNlRmxvYXQoaVtcImJvcmRlclwiK2UrXCJXaWR0aFwiXSl9ZWxzZXtvW3RdLT1wYXJzZUZsb2F0KGlbXCJib3JkZXJcIitlK1wiV2lkdGhcIl0pfX0pfSkoKX1yZXR1cm4gb314Lm1vZHVsZXMucHVzaCh7cG9zaXRpb246ZnVuY3Rpb24gZSh0KXt2YXIgZj10aGlzO3ZhciBkPXQudG9wO3ZhciBoPXQubGVmdDt2YXIgcD10LnRhcmdldEF0dGFjaG1lbnQ7aWYoIXRoaXMub3B0aW9ucy5jb25zdHJhaW50cyl7cmV0dXJuIHRydWV9dmFyIG49dGhpcy5jYWNoZShcImVsZW1lbnQtYm91bmRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gQyhmLmVsZW1lbnQpfSk7dmFyIGc9bi5oZWlnaHQ7dmFyIG09bi53aWR0aDtpZihtPT09MCYmZz09PTAmJnR5cGVvZiB0aGlzLmxhc3RTaXplIT09XCJ1bmRlZmluZWRcIil7dmFyIGk9dGhpcy5sYXN0U2l6ZTttPWkud2lkdGg7Zz1pLmhlaWdodH12YXIgcj10aGlzLmNhY2hlKFwidGFyZ2V0LWJvdW5kc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGYuZ2V0VGFyZ2V0Qm91bmRzKCl9KTt2YXIgdj1yLmhlaWdodDt2YXIgeT1yLndpZHRoO3ZhciBvPVt0aGlzLmdldENsYXNzKFwicGlubmVkXCIpLHRoaXMuZ2V0Q2xhc3MoXCJvdXQtb2YtYm91bmRzXCIpXTt0aGlzLm9wdGlvbnMuY29uc3RyYWludHMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLm91dE9mQm91bmRzQ2xhc3M7dmFyIG49ZS5waW5uZWRDbGFzcztpZih0KXtvLnB1c2godCl9aWYobil7by5wdXNoKG4pfX0pO28uZm9yRWFjaChmdW5jdGlvbih0KXtbXCJsZWZ0XCIsXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIl0uZm9yRWFjaChmdW5jdGlvbihlKXtvLnB1c2godCtcIi1cIitlKX0pfSk7dmFyIF89W107dmFyIGI9RSh7fSxwKTt2YXIgdz1FKHt9LHRoaXMuYXR0YWNobWVudCk7dGhpcy5vcHRpb25zLmNvbnN0cmFpbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS50bzt2YXIgbj1lLmF0dGFjaG1lbnQ7dmFyIGk9ZS5waW47aWYodHlwZW9mIG49PT1cInVuZGVmaW5lZFwiKXtuPVwiXCJ9dmFyIHI9dW5kZWZpbmVkLG89dW5kZWZpbmVkO2lmKG4uaW5kZXhPZihcIiBcIik+PTApe3ZhciBzPW4uc3BsaXQoXCIgXCIpO3ZhciBhPWsocywyKTtvPWFbMF07cj1hWzFdfWVsc2V7cj1vPW59dmFyIGw9VihmLHQpO2lmKG89PT1cInRhcmdldFwifHxvPT09XCJib3RoXCIpe2lmKGQ8bFsxXSYmYi50b3A9PT1cInRvcFwiKXtkKz12O2IudG9wPVwiYm90dG9tXCJ9aWYoZCtnPmxbM10mJmIudG9wPT09XCJib3R0b21cIil7ZC09djtiLnRvcD1cInRvcFwifX1pZihvPT09XCJ0b2dldGhlclwiKXtpZihiLnRvcD09PVwidG9wXCIpe2lmKHcudG9wPT09XCJib3R0b21cIiYmZDxsWzFdKXtkKz12O2IudG9wPVwiYm90dG9tXCI7ZCs9Zzt3LnRvcD1cInRvcFwifWVsc2UgaWYody50b3A9PT1cInRvcFwiJiZkK2c+bFszXSYmZC0oZy12KT49bFsxXSl7ZC09Zy12O2IudG9wPVwiYm90dG9tXCI7dy50b3A9XCJib3R0b21cIn19aWYoYi50b3A9PT1cImJvdHRvbVwiKXtpZih3LnRvcD09PVwidG9wXCImJmQrZz5sWzNdKXtkLT12O2IudG9wPVwidG9wXCI7ZC09Zzt3LnRvcD1cImJvdHRvbVwifWVsc2UgaWYody50b3A9PT1cImJvdHRvbVwiJiZkPGxbMV0mJmQrKGcqMi12KTw9bFszXSl7ZCs9Zy12O2IudG9wPVwidG9wXCI7dy50b3A9XCJ0b3BcIn19aWYoYi50b3A9PT1cIm1pZGRsZVwiKXtpZihkK2c+bFszXSYmdy50b3A9PT1cInRvcFwiKXtkLT1nO3cudG9wPVwiYm90dG9tXCJ9ZWxzZSBpZihkPGxbMV0mJncudG9wPT09XCJib3R0b21cIil7ZCs9Zzt3LnRvcD1cInRvcFwifX19aWYocj09PVwidGFyZ2V0XCJ8fHI9PT1cImJvdGhcIil7aWYoaDxsWzBdJiZiLmxlZnQ9PT1cImxlZnRcIil7aCs9eTtiLmxlZnQ9XCJyaWdodFwifWlmKGgrbT5sWzJdJiZiLmxlZnQ9PT1cInJpZ2h0XCIpe2gtPXk7Yi5sZWZ0PVwibGVmdFwifX1pZihyPT09XCJ0b2dldGhlclwiKXtpZihoPGxbMF0mJmIubGVmdD09PVwibGVmdFwiKXtpZih3LmxlZnQ9PT1cInJpZ2h0XCIpe2grPXk7Yi5sZWZ0PVwicmlnaHRcIjtoKz1tO3cubGVmdD1cImxlZnRcIn1lbHNlIGlmKHcubGVmdD09PVwibGVmdFwiKXtoKz15O2IubGVmdD1cInJpZ2h0XCI7aC09bTt3LmxlZnQ9XCJyaWdodFwifX1lbHNlIGlmKGgrbT5sWzJdJiZiLmxlZnQ9PT1cInJpZ2h0XCIpe2lmKHcubGVmdD09PVwibGVmdFwiKXtoLT15O2IubGVmdD1cImxlZnRcIjtoLT1tO3cubGVmdD1cInJpZ2h0XCJ9ZWxzZSBpZih3LmxlZnQ9PT1cInJpZ2h0XCIpe2gtPXk7Yi5sZWZ0PVwibGVmdFwiO2grPW07dy5sZWZ0PVwibGVmdFwifX1lbHNlIGlmKGIubGVmdD09PVwiY2VudGVyXCIpe2lmKGgrbT5sWzJdJiZ3LmxlZnQ9PT1cImxlZnRcIil7aC09bTt3LmxlZnQ9XCJyaWdodFwifWVsc2UgaWYoaDxsWzBdJiZ3LmxlZnQ9PT1cInJpZ2h0XCIpe2grPW07dy5sZWZ0PVwibGVmdFwifX19aWYobz09PVwiZWxlbWVudFwifHxvPT09XCJib3RoXCIpe2lmKGQ8bFsxXSYmdy50b3A9PT1cImJvdHRvbVwiKXtkKz1nO3cudG9wPVwidG9wXCJ9aWYoZCtnPmxbM10mJncudG9wPT09XCJ0b3BcIil7ZC09Zzt3LnRvcD1cImJvdHRvbVwifX1pZihyPT09XCJlbGVtZW50XCJ8fHI9PT1cImJvdGhcIil7aWYoaDxsWzBdKXtpZih3LmxlZnQ9PT1cInJpZ2h0XCIpe2grPW07dy5sZWZ0PVwibGVmdFwifWVsc2UgaWYody5sZWZ0PT09XCJjZW50ZXJcIil7aCs9bS8yO3cubGVmdD1cImxlZnRcIn19aWYoaCttPmxbMl0pe2lmKHcubGVmdD09PVwibGVmdFwiKXtoLT1tO3cubGVmdD1cInJpZ2h0XCJ9ZWxzZSBpZih3LmxlZnQ9PT1cImNlbnRlclwiKXtoLT1tLzI7dy5sZWZ0PVwicmlnaHRcIn19fWlmKHR5cGVvZiBpPT09XCJzdHJpbmdcIil7aT1pLnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSl9ZWxzZSBpZihpPT09dHJ1ZSl7aT1bXCJ0b3BcIixcImxlZnRcIixcInJpZ2h0XCIsXCJib3R0b21cIl19aT1pfHxbXTt2YXIgYz1bXTt2YXIgdT1bXTtpZihkPGxbMV0pe2lmKGkuaW5kZXhPZihcInRvcFwiKT49MCl7ZD1sWzFdO2MucHVzaChcInRvcFwiKX1lbHNle3UucHVzaChcInRvcFwiKX19aWYoZCtnPmxbM10pe2lmKGkuaW5kZXhPZihcImJvdHRvbVwiKT49MCl7ZD1sWzNdLWc7Yy5wdXNoKFwiYm90dG9tXCIpfWVsc2V7dS5wdXNoKFwiYm90dG9tXCIpfX1pZihoPGxbMF0pe2lmKGkuaW5kZXhPZihcImxlZnRcIik+PTApe2g9bFswXTtjLnB1c2goXCJsZWZ0XCIpfWVsc2V7dS5wdXNoKFwibGVmdFwiKX19aWYoaCttPmxbMl0pe2lmKGkuaW5kZXhPZihcInJpZ2h0XCIpPj0wKXtoPWxbMl0tbTtjLnB1c2goXCJyaWdodFwiKX1lbHNle3UucHVzaChcInJpZ2h0XCIpfX1pZihjLmxlbmd0aCl7KGZ1bmN0aW9uKCl7dmFyIHQ9dW5kZWZpbmVkO2lmKHR5cGVvZiBmLm9wdGlvbnMucGlubmVkQ2xhc3MhPT1cInVuZGVmaW5lZFwiKXt0PWYub3B0aW9ucy5waW5uZWRDbGFzc31lbHNle3Q9Zi5nZXRDbGFzcyhcInBpbm5lZFwiKX1fLnB1c2godCk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGUpe18ucHVzaCh0K1wiLVwiK2UpfSl9KSgpfWlmKHUubGVuZ3RoKXsoZnVuY3Rpb24oKXt2YXIgdD11bmRlZmluZWQ7aWYodHlwZW9mIGYub3B0aW9ucy5vdXRPZkJvdW5kc0NsYXNzIT09XCJ1bmRlZmluZWRcIil7dD1mLm9wdGlvbnMub3V0T2ZCb3VuZHNDbGFzc31lbHNle3Q9Zi5nZXRDbGFzcyhcIm91dC1vZi1ib3VuZHNcIil9Xy5wdXNoKHQpO3UuZm9yRWFjaChmdW5jdGlvbihlKXtfLnB1c2godCtcIi1cIitlKX0pfSkoKX1pZihjLmluZGV4T2YoXCJsZWZ0XCIpPj0wfHxjLmluZGV4T2YoXCJyaWdodFwiKT49MCl7dy5sZWZ0PWIubGVmdD1mYWxzZX1pZihjLmluZGV4T2YoXCJ0b3BcIik+PTB8fGMuaW5kZXhPZihcImJvdHRvbVwiKT49MCl7dy50b3A9Yi50b3A9ZmFsc2V9aWYoYi50b3AhPT1wLnRvcHx8Yi5sZWZ0IT09cC5sZWZ0fHx3LnRvcCE9PWYuYXR0YWNobWVudC50b3B8fHcubGVmdCE9PWYuYXR0YWNobWVudC5sZWZ0KXtmLnVwZGF0ZUF0dGFjaENsYXNzZXModyxiKTtmLnRyaWdnZXIoXCJ1cGRhdGVcIix7YXR0YWNobWVudDp3LHRhcmdldEF0dGFjaG1lbnQ6Yn0pfX0pO0QoZnVuY3Rpb24oKXtpZighKGYub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzPT09ZmFsc2UpKXtTKGYudGFyZ2V0LF8sbyl9UyhmLmVsZW1lbnQsXyxvKX0pO3JldHVybnt0b3A6ZCxsZWZ0Omh9fX0pO3ZhciBJLEM9KEk9eC5VdGlscykuZ2V0Qm91bmRzLFM9SS51cGRhdGVDbGFzc2VzLEQ9SS5kZWZlcjt4Lm1vZHVsZXMucHVzaCh7cG9zaXRpb246ZnVuY3Rpb24gZSh0KXt2YXIgbj10aGlzO3ZhciBpPXQudG9wO3ZhciByPXQubGVmdDt2YXIgbz10aGlzLmNhY2hlKFwiZWxlbWVudC1ib3VuZHNcIixmdW5jdGlvbigpe3JldHVybiBDKG4uZWxlbWVudCl9KTt2YXIgcz1vLmhlaWdodDt2YXIgYT1vLndpZHRoO3ZhciBsPXRoaXMuZ2V0VGFyZ2V0Qm91bmRzKCk7dmFyIGM9aStzO3ZhciB1PXIrYTt2YXIgZj1bXTtpZihpPD1sLmJvdHRvbSYmYz49bC50b3Ape1tcImxlZnRcIixcInJpZ2h0XCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bFtlXTtpZih0PT09cnx8dD09PXUpe2YucHVzaChlKX19KX1pZihyPD1sLnJpZ2h0JiZ1Pj1sLmxlZnQpe1tcInRvcFwiLFwiYm90dG9tXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bFtlXTtpZih0PT09aXx8dD09PWMpe2YucHVzaChlKX19KX12YXIgZD1bXTt2YXIgaD1bXTt2YXIgcD1bXCJsZWZ0XCIsXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIl07ZC5wdXNoKHRoaXMuZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpKTtwLmZvckVhY2goZnVuY3Rpb24oZSl7ZC5wdXNoKG4uZ2V0Q2xhc3MoXCJhYnV0dGVkXCIpK1wiLVwiK2UpfSk7aWYoZi5sZW5ndGgpe2gucHVzaCh0aGlzLmdldENsYXNzKFwiYWJ1dHRlZFwiKSl9Zi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2gucHVzaChuLmdldENsYXNzKFwiYWJ1dHRlZFwiKStcIi1cIitlKX0pO0QoZnVuY3Rpb24oKXtpZighKG4ub3B0aW9ucy5hZGRUYXJnZXRDbGFzc2VzPT09ZmFsc2UpKXtTKG4udGFyZ2V0LGgsZCl9UyhuLmVsZW1lbnQsaCxkKX0pO3JldHVybiB0cnVlfX0pO3ZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPVtdO3ZhciBpPXRydWU7dmFyIHI9ZmFsc2U7dmFyIG89dW5kZWZpbmVkO3RyeXtmb3IodmFyIHM9ZVtTeW1ib2wuaXRlcmF0b3JdKCksYTshKGk9KGE9cy5uZXh0KCkpLmRvbmUpO2k9dHJ1ZSl7bi5wdXNoKGEudmFsdWUpO2lmKHQmJm4ubGVuZ3RoPT09dClicmVha319Y2F0Y2goZSl7cj10cnVlO289ZX1maW5hbGx5e3RyeXtpZighaSYmc1tcInJldHVyblwiXSlzW1wicmV0dXJuXCJdKCl9ZmluYWxseXtpZihyKXRocm93IG99fXJldHVybiBufXJldHVybiBmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpe3JldHVybiBlfWVsc2UgaWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSl7cmV0dXJuIG4oZSx0KX1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpfX19KCk7cmV0dXJuIHgubW9kdWxlcy5wdXNoKHtwb3NpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1lLnRvcCxuPWUubGVmdDtpZih0aGlzLm9wdGlvbnMuc2hpZnQpe3ZhciBpPXRoaXMub3B0aW9ucy5zaGlmdDtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuc2hpZnQmJihpPXRoaXMub3B0aW9ucy5zaGlmdC5jYWxsKHRoaXMse3RvcDp0LGxlZnQ6bn0pKTt2YXIgcixvPXZvaWQgMCxzPXZvaWQgMDtyZXR1cm4gcz1cInN0cmluZ1wiPT10eXBlb2YgaT8oKGk9aS5zcGxpdChcIiBcIikpWzFdPWlbMV18fGlbMF0sbz0ocj1rKGksMikpWzBdLHM9clsxXSxvPXBhcnNlRmxvYXQobywxMCkscGFyc2VGbG9hdChzLDEwKSk6KG89aS50b3AsaS5sZWZ0KSx7dG9wOnQrPW8sbGVmdDpuKz1zfX19fSksS30pP2kuY2FsbCh0LG4sdCxlKTppKXx8KGUuZXhwb3J0cz1yKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHIsbyxzO2Z1bmN0aW9uIGFpKGUpe3JldHVybihhaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSkoZSl9cz1mdW5jdGlvbihlLHAsZil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIHQmJmkoZS5wcm90b3R5cGUsdCksbiYmaShlLG4pLGV9ZnVuY3Rpb24gdCh0LGUpe3ZhciBuLGk9T2JqZWN0LmtleXModCk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCksZSYmKG49bi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpLGkucHVzaC5hcHBseShpLG4pKSxpfWZ1bmN0aW9uIGwocil7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG89bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/dChPYmplY3QobyksITApLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbixpO3Q9cixpPW9bbj1lXSxuIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbbl09aX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnQoT2JqZWN0KG8pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvLGUpKX0pfXJldHVybiByfXA9cCYmcC5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRcIik/cC5kZWZhdWx0OnAsZj1mJiZmLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFwiKT9mLmRlZmF1bHQ6Zjt2YXIgbj1cInRyYW5zaXRpb25lbmRcIjtmdW5jdGlvbiByKGUpe3ZhciB0PXRoaXMsbj0hMTtyZXR1cm4gcCh0aGlzKS5vbmUoZy5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe249ITB9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bnx8Zy50cmlnZ2VyVHJhbnNpdGlvbkVuZCh0KX0sZSksdGhpc312YXIgZz17VFJBTlNJVElPTl9FTkQ6XCJic1RyYW5zaXRpb25FbmRcIixnZXRVSUQ6ZnVuY3Rpb24oZSl7Zm9yKDtlKz1+figxZTYqTWF0aC5yYW5kb20oKSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7KTtyZXR1cm4gZX0sZ2V0U2VsZWN0b3JGcm9tRWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdCxuPWUuZ2V0QXR0cmlidXRlKFwiZGF0YS10YXJnZXRcIik7biYmXCIjXCIhPT1ufHwobj0odD1lLmdldEF0dHJpYnV0ZShcImhyZWZcIikpJiZcIiNcIiE9PXQ/dC50cmltKCk6XCJcIik7dHJ5e3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pP246bnVsbH1jYXRjaChlKXtyZXR1cm4gbnVsbH19LGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50OmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiAwO3ZhciB0PXAoZSkuY3NzKFwidHJhbnNpdGlvbi1kdXJhdGlvblwiKSxuPXAoZSkuY3NzKFwidHJhbnNpdGlvbi1kZWxheVwiKSxpPXBhcnNlRmxvYXQodCkscj1wYXJzZUZsb2F0KG4pO3JldHVybiBpfHxyPyh0PXQuc3BsaXQoXCIsXCIpWzBdLG49bi5zcGxpdChcIixcIilbMF0sMWUzKihwYXJzZUZsb2F0KHQpK3BhcnNlRmxvYXQobikpKTowfSxyZWZsb3c6ZnVuY3Rpb24oZSl7cmV0dXJuIGUub2Zmc2V0SGVpZ2h0fSx0cmlnZ2VyVHJhbnNpdGlvbkVuZDpmdW5jdGlvbihlKXtwKGUpLnRyaWdnZXIobil9LHN1cHBvcnRzVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKG4pfSxpc0VsZW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuKGVbMF18fGUpLm5vZGVUeXBlfSx0eXBlQ2hlY2tDb25maWc6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgaSBpbiBuKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGkpKXt2YXIgcj1uW2ldLG89dFtpXSxzPW8mJmcuaXNFbGVtZW50KG8pP1wiZWxlbWVudFwiOihhPW8se30udG9TdHJpbmcuY2FsbChhKS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKSk7aWYoIW5ldyBSZWdFeHAocikudGVzdChzKSl0aHJvdyBuZXcgRXJyb3IoZS50b1VwcGVyQ2FzZSgpKyc6IE9wdGlvbiBcIicraSsnXCIgcHJvdmlkZWQgdHlwZSBcIicrcysnXCIgYnV0IGV4cGVjdGVkIHR5cGUgXCInK3IrJ1wiLicpfXZhciBhfSxmaW5kU2hhZG93Um9vdDpmdW5jdGlvbihlKXtpZighZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dGFjaFNoYWRvdylyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLmdldFJvb3ROb2RlKXJldHVybiBlIGluc3RhbmNlb2YgU2hhZG93Um9vdD9lOmUucGFyZW50Tm9kZT9nLmZpbmRTaGFkb3dSb290KGUucGFyZW50Tm9kZSk6bnVsbDt2YXIgdD1lLmdldFJvb3ROb2RlKCk7cmV0dXJuIHQgaW5zdGFuY2VvZiBTaGFkb3dSb290P3Q6bnVsbH0salF1ZXJ5RGV0ZWN0aW9uOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkuIGpRdWVyeSBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSBCb290c3RyYXAncyBKYXZhU2NyaXB0LlwiKTt2YXIgZT1wLmZuLmpxdWVyeS5zcGxpdChcIiBcIilbMF0uc3BsaXQoXCIuXCIpO2lmKGVbMF08MiYmZVsxXTw5fHwxPT09ZVswXSYmOT09PWVbMV0mJmVbMl08MXx8NDw9ZVswXSl0aHJvdyBuZXcgRXJyb3IoXCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGF0IGxlYXN0IGpRdWVyeSB2MS45LjEgYnV0IGxlc3MgdGhhbiB2NC4wLjBcIil9fTtnLmpRdWVyeURldGVjdGlvbigpLHAuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9cixwLmV2ZW50LnNwZWNpYWxbZy5UUkFOU0lUSU9OX0VORF09e2JpbmRUeXBlOm4sZGVsZWdhdGVUeXBlOm4saGFuZGxlOmZ1bmN0aW9uKGUpe2lmKHAoZS50YXJnZXQpLmlzKHRoaXMpKXJldHVybiBlLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O3ZhciBvPVwiYWxlcnRcIixhPVwiYnMuYWxlcnRcIixjPVwiLlwiK2EsdT1wLmZuW29dLGQ9e0NMT1NFOlwiY2xvc2VcIitjLENMT1NFRDpcImNsb3NlZFwiK2MsQ0xJQ0tfREFUQV9BUEk6XCJjbGlja1wiK2MrXCIuZGF0YS1hcGlcIn0saD1cImFsZXJ0XCIsbT1cImZhZGVcIix2PVwic2hvd1wiLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKGUpe3RoaXMuX2VsZW1lbnQ9ZX12YXIgZT1pLnByb3RvdHlwZTtyZXR1cm4gZS5jbG9zZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9lbGVtZW50O2UmJih0PXRoaXMuX2dldFJvb3RFbGVtZW50KGUpKSx0aGlzLl90cmlnZ2VyQ2xvc2VFdmVudCh0KS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8dGhpcy5fcmVtb3ZlRWxlbWVudCh0KX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsYSksdGhpcy5fZWxlbWVudD1udWxsfSxlLl9nZXRSb290RWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD1nLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSksbj0hMTtyZXR1cm4gdCYmKG49ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KSksbj1ufHxwKGUpLmNsb3Nlc3QoXCIuXCIraClbMF19LGUuX3RyaWdnZXJDbG9zZUV2ZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXAuRXZlbnQoZC5DTE9TRSk7cmV0dXJuIHAoZSkudHJpZ2dlcih0KSx0fSxlLl9yZW1vdmVFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcztwKHQpLnJlbW92ZUNsYXNzKHYpLHAodCkuaGFzQ2xhc3MobSk/KGU9Zy5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0KSxwKHQpLm9uZShnLlRSQU5TSVRJT05fRU5ELGZ1bmN0aW9uKGUpe3JldHVybiBuLl9kZXN0cm95RWxlbWVudCh0LGUpfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZSkpOnRoaXMuX2Rlc3Ryb3lFbGVtZW50KHQpfSxlLl9kZXN0cm95RWxlbWVudD1mdW5jdGlvbihlKXtwKGUpLmRldGFjaCgpLnRyaWdnZXIoZC5DTE9TRUQpLnJlbW92ZSgpfSxpLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLmRhdGEoYSk7dHx8KHQ9bmV3IGkodGhpcyksZS5kYXRhKGEsdCkpLFwiY2xvc2VcIj09PW4mJnRbbl0odGhpcyl9KX0saS5faGFuZGxlRGlzbWlzcz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHQuY2xvc2UodGhpcyl9fSxzKGksbnVsbCxbe2tleTpcIlZFUlNJT05cIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIjQuNC4xXCJ9fV0pLGl9KCk7cChkb2N1bWVudCkub24oZC5DTElDS19EQVRBX0FQSSwnW2RhdGEtZGlzbWlzcz1cImFsZXJ0XCJdJyx5Ll9oYW5kbGVEaXNtaXNzKG5ldyB5KSkscC5mbltvXT15Ll9qUXVlcnlJbnRlcmZhY2UscC5mbltvXS5Db25zdHJ1Y3Rvcj15LHAuZm5bb10ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBwLmZuW29dPXUseS5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgXz1cImJ1dHRvblwiLGI9XCJicy5idXR0b25cIix3PVwiLlwiK2IsRT1cIi5kYXRhLWFwaVwiLHg9cC5mbltfXSxDPVwiYWN0aXZlXCIsVD1cImJ0blwiLEE9XCJmb2N1c1wiLFM9J1tkYXRhLXRvZ2dsZV49XCJidXR0b25cIl0nLEQ9J1tkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0nLE89J1tkYXRhLXRvZ2dsZT1cImJ1dHRvblwiXScsaz0nW2RhdGEtdG9nZ2xlPVwiYnV0dG9uc1wiXSAuYnRuJyxJPSdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pJyxqPVwiLmFjdGl2ZVwiLE49XCIuYnRuXCIsTD17Q0xJQ0tfREFUQV9BUEk6XCJjbGlja1wiK3crRSxGT0NVU19CTFVSX0RBVEFfQVBJOlwiZm9jdXNcIit3K0UrXCIgYmx1clwiK3crRSxMT0FEX0RBVEFfQVBJOlwibG9hZFwiK3crRX0sUD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSl7dGhpcy5fZWxlbWVudD1lfXZhciBlPW4ucHJvdG90eXBlO3JldHVybiBlLnRvZ2dsZT1mdW5jdGlvbigpe3ZhciBlLHQsbj0hMCxpPSEwLHI9cCh0aGlzLl9lbGVtZW50KS5jbG9zZXN0KEQpWzBdOyFyfHwoZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoSSkpJiYoXCJyYWRpb1wiPT09ZS50eXBlP2UuY2hlY2tlZCYmdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQyk/bj0hMToodD1yLnF1ZXJ5U2VsZWN0b3IoaikpJiZwKHQpLnJlbW92ZUNsYXNzKEMpOihcImNoZWNrYm94XCIhPT1lLnR5cGV8fFwiTEFCRUxcIj09PXRoaXMuX2VsZW1lbnQudGFnTmFtZSYmZS5jaGVja2VkPT09dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQykpJiYobj0hMSksbiYmKGUuY2hlY2tlZD0hdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQykscChlKS50cmlnZ2VyKFwiY2hhbmdlXCIpKSxlLmZvY3VzKCksaT0hMSksdGhpcy5fZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKXx8dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJkaXNhYmxlZFwiKXx8KGkmJnRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKEMpKSxuJiZwKHRoaXMuX2VsZW1lbnQpLnRvZ2dsZUNsYXNzKEMpKX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsYiksdGhpcy5fZWxlbWVudD1udWxsfSxuLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcykuZGF0YShiKTtlfHwoZT1uZXcgbih0aGlzKSxwKHRoaXMpLmRhdGEoYixlKSksXCJ0b2dnbGVcIj09PXQmJmVbdF0oKX0pfSxzKG4sbnVsbCxbe2tleTpcIlZFUlNJT05cIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIjQuNC4xXCJ9fV0pLG59KCk7cChkb2N1bWVudCkub24oTC5DTElDS19EQVRBX0FQSSxTLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O2lmKHAodCkuaGFzQ2xhc3MoVCl8fCh0PXAodCkuY2xvc2VzdChOKVswXSksIXR8fHQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIil8fHQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZGlzYWJsZWRcIikpZS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dmFyIG49dC5xdWVyeVNlbGVjdG9yKEkpO2lmKG4mJihuLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpfHxuLmNsYXNzTGlzdC5jb250YWlucyhcImRpc2FibGVkXCIpKSlyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7UC5falF1ZXJ5SW50ZXJmYWNlLmNhbGwocCh0KSxcInRvZ2dsZVwiKX19KS5vbihMLkZPQ1VTX0JMVVJfREFUQV9BUEksUyxmdW5jdGlvbihlKXt2YXIgdD1wKGUudGFyZ2V0KS5jbG9zZXN0KE4pWzBdO3AodCkudG9nZ2xlQ2xhc3MoQSwvXmZvY3VzKGluKT8kLy50ZXN0KGUudHlwZSkpfSkscCh3aW5kb3cpLm9uKEwuTE9BRF9EQVRBX0FQSSxmdW5jdGlvbigpe2Zvcih2YXIgZT1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoaykpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe3ZhciBpPWVbdF0scj1pLnF1ZXJ5U2VsZWN0b3IoSSk7ci5jaGVja2VkfHxyLmhhc0F0dHJpYnV0ZShcImNoZWNrZWRcIik/aS5jbGFzc0xpc3QuYWRkKEMpOmkuY2xhc3NMaXN0LnJlbW92ZShDKX1mb3IodmFyIG89MCxzPShlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChPKSkpLmxlbmd0aDtvPHM7bysrKXt2YXIgYT1lW29dO1widHJ1ZVwiPT09YS5nZXRBdHRyaWJ1dGUoXCJhcmlhLXByZXNzZWRcIik/YS5jbGFzc0xpc3QuYWRkKEMpOmEuY2xhc3NMaXN0LnJlbW92ZShDKX19KSxwLmZuW19dPVAuX2pRdWVyeUludGVyZmFjZSxwLmZuW19dLkNvbnN0cnVjdG9yPVAscC5mbltfXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHAuZm5bX109eCxQLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciAkPVwiY2Fyb3VzZWxcIixNPVwiYnMuY2Fyb3VzZWxcIixxPVwiLlwiK00sSD1cIi5kYXRhLWFwaVwiLFI9cC5mblskXSxXPXtpbnRlcnZhbDo1ZTMsa2V5Ym9hcmQ6ITAsc2xpZGU6ITEscGF1c2U6XCJob3ZlclwiLHdyYXA6ITAsdG91Y2g6ITB9LEI9e2ludGVydmFsOlwiKG51bWJlcnxib29sZWFuKVwiLGtleWJvYXJkOlwiYm9vbGVhblwiLHNsaWRlOlwiKGJvb2xlYW58c3RyaW5nKVwiLHBhdXNlOlwiKHN0cmluZ3xib29sZWFuKVwiLHdyYXA6XCJib29sZWFuXCIsdG91Y2g6XCJib29sZWFuXCJ9LEY9XCJuZXh0XCIsVT1cInByZXZcIixRPVwibGVmdFwiLHo9XCJyaWdodFwiLEs9e1NMSURFOlwic2xpZGVcIitxLFNMSUQ6XCJzbGlkXCIrcSxLRVlET1dOOlwia2V5ZG93blwiK3EsTU9VU0VFTlRFUjpcIm1vdXNlZW50ZXJcIitxLE1PVVNFTEVBVkU6XCJtb3VzZWxlYXZlXCIrcSxUT1VDSFNUQVJUOlwidG91Y2hzdGFydFwiK3EsVE9VQ0hNT1ZFOlwidG91Y2htb3ZlXCIrcSxUT1VDSEVORDpcInRvdWNoZW5kXCIrcSxQT0lOVEVSRE9XTjpcInBvaW50ZXJkb3duXCIrcSxQT0lOVEVSVVA6XCJwb2ludGVydXBcIitxLERSQUdfU1RBUlQ6XCJkcmFnc3RhcnRcIitxLExPQURfREFUQV9BUEk6XCJsb2FkXCIrcStILENMSUNLX0RBVEFfQVBJOlwiY2xpY2tcIitxK0h9LFk9XCJjYXJvdXNlbFwiLFY9XCJhY3RpdmVcIixHPVwic2xpZGVcIixYPVwiY2Fyb3VzZWwtaXRlbS1yaWdodFwiLEo9XCJjYXJvdXNlbC1pdGVtLWxlZnRcIixaPVwiY2Fyb3VzZWwtaXRlbS1uZXh0XCIsZWU9XCJjYXJvdXNlbC1pdGVtLXByZXZcIix0ZT1cInBvaW50ZXItZXZlbnRcIixuZT1cIi5hY3RpdmVcIixpZT1cIi5hY3RpdmUuY2Fyb3VzZWwtaXRlbVwiLHJlPVwiLmNhcm91c2VsLWl0ZW1cIixvZT1cIi5jYXJvdXNlbC1pdGVtIGltZ1wiLHNlPVwiLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldlwiLGFlPVwiLmNhcm91c2VsLWluZGljYXRvcnNcIixsZT1cIltkYXRhLXNsaWRlXSwgW2RhdGEtc2xpZGUtdG9dXCIsY2U9J1tkYXRhLXJpZGU9XCJjYXJvdXNlbFwiXScsdWU9e1RPVUNIOlwidG91Y2hcIixQRU46XCJwZW5cIn0sZmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGUsdCl7dGhpcy5faXRlbXM9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9pc1NsaWRpbmc9ITEsdGhpcy50b3VjaFRpbWVvdXQ9bnVsbCx0aGlzLnRvdWNoU3RhcnRYPTAsdGhpcy50b3VjaERlbHRhWD0wLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy5fZWxlbWVudD1lLHRoaXMuX2luZGljYXRvcnNFbGVtZW50PXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihhZSksdGhpcy5fdG91Y2hTdXBwb3J0ZWQ9XCJvbnRvdWNoc3RhcnRcImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8MDxuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMsdGhpcy5fcG9pbnRlckV2ZW50PUJvb2xlYW4od2luZG93LlBvaW50ZXJFdmVudHx8d2luZG93Lk1TUG9pbnRlckV2ZW50KSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciBlPW8ucHJvdG90eXBlO3JldHVybiBlLm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9pc1NsaWRpbmd8fHRoaXMuX3NsaWRlKEYpfSxlLm5leHRXaGVuVmlzaWJsZT1mdW5jdGlvbigpeyFkb2N1bWVudC5oaWRkZW4mJnAodGhpcy5fZWxlbWVudCkuaXMoXCI6dmlzaWJsZVwiKSYmXCJoaWRkZW5cIiE9PXAodGhpcy5fZWxlbWVudCkuY3NzKFwidmlzaWJpbGl0eVwiKSYmdGhpcy5uZXh0KCl9LGUucHJldj1mdW5jdGlvbigpe3RoaXMuX2lzU2xpZGluZ3x8dGhpcy5fc2xpZGUoVSl9LGUucGF1c2U9ZnVuY3Rpb24oZSl7ZXx8KHRoaXMuX2lzUGF1c2VkPSEwKSx0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2UpJiYoZy50cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KSx0aGlzLmN5Y2xlKCEwKSksY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbH0sZS5jeWNsZT1mdW5jdGlvbihlKXtlfHwodGhpcy5faXNQYXVzZWQ9ITEpLHRoaXMuX2ludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbCksdGhpcy5fY29uZmlnLmludGVydmFsJiYhdGhpcy5faXNQYXVzZWQmJih0aGlzLl9pbnRlcnZhbD1zZXRJbnRlcnZhbCgoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3RoaXMubmV4dFdoZW5WaXNpYmxlOnRoaXMubmV4dCkuYmluZCh0aGlzKSx0aGlzLl9jb25maWcuaW50ZXJ2YWwpKX0sZS50bz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuX2FjdGl2ZUVsZW1lbnQ9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKGllKTt2YXIgbj10aGlzLl9nZXRJdGVtSW5kZXgodGhpcy5fYWN0aXZlRWxlbWVudCk7aWYoIShlPnRoaXMuX2l0ZW1zLmxlbmd0aC0xfHxlPDApKWlmKHRoaXMuX2lzU2xpZGluZylwKHRoaXMuX2VsZW1lbnQpLm9uZShLLlNMSUQsZnVuY3Rpb24oKXtyZXR1cm4gdC50byhlKX0pO2Vsc2V7aWYobj09PWUpcmV0dXJuIHRoaXMucGF1c2UoKSx2b2lkIHRoaXMuY3ljbGUoKTt2YXIgaT1uPGU/RjpVO3RoaXMuX3NsaWRlKGksdGhpcy5faXRlbXNbZV0pfX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cCh0aGlzLl9lbGVtZW50KS5vZmYocSkscC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsTSksdGhpcy5faXRlbXM9bnVsbCx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5faW50ZXJ2YWw9bnVsbCx0aGlzLl9pc1BhdXNlZD1udWxsLHRoaXMuX2lzU2xpZGluZz1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pbmRpY2F0b3JzRWxlbWVudD1udWxsfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bCh7fSxXLHt9LGUpLGcudHlwZUNoZWNrQ29uZmlnKCQsZSxCKSxlfSxlLl9oYW5kbGVTd2lwZT1mdW5jdGlvbigpe3ZhciBlLHQ9TWF0aC5hYnModGhpcy50b3VjaERlbHRhWCk7dDw9NDB8fChlPXQvdGhpcy50b3VjaERlbHRhWCwodGhpcy50b3VjaERlbHRhWD0wKTxlJiZ0aGlzLnByZXYoKSxlPDAmJnRoaXMubmV4dCgpKX0sZS5fYWRkRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2NvbmZpZy5rZXlib2FyZCYmcCh0aGlzLl9lbGVtZW50KS5vbihLLktFWURPV04sZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2tleWRvd24oZSl9KSxcImhvdmVyXCI9PT10aGlzLl9jb25maWcucGF1c2UmJnAodGhpcy5fZWxlbWVudCkub24oSy5NT1VTRUVOVEVSLGZ1bmN0aW9uKGUpe3JldHVybiB0LnBhdXNlKGUpfSkub24oSy5NT1VTRUxFQVZFLGZ1bmN0aW9uKGUpe3JldHVybiB0LmN5Y2xlKGUpfSksdGhpcy5fY29uZmlnLnRvdWNoJiZ0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCl9LGUuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpczt0aGlzLl90b3VjaFN1cHBvcnRlZCYmKGU9ZnVuY3Rpb24oZSl7bi5fcG9pbnRlckV2ZW50JiZ1ZVtlLm9yaWdpbmFsRXZlbnQucG9pbnRlclR5cGUudG9VcHBlckNhc2UoKV0/bi50b3VjaFN0YXJ0WD1lLm9yaWdpbmFsRXZlbnQuY2xpZW50WDpuLl9wb2ludGVyRXZlbnR8fChuLnRvdWNoU3RhcnRYPWUub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLmNsaWVudFgpfSx0PWZ1bmN0aW9uKGUpe24uX3BvaW50ZXJFdmVudCYmdWVbZS5vcmlnaW5hbEV2ZW50LnBvaW50ZXJUeXBlLnRvVXBwZXJDYXNlKCldJiYobi50b3VjaERlbHRhWD1lLm9yaWdpbmFsRXZlbnQuY2xpZW50WC1uLnRvdWNoU3RhcnRYKSxuLl9oYW5kbGVTd2lwZSgpLFwiaG92ZXJcIj09PW4uX2NvbmZpZy5wYXVzZSYmKG4ucGF1c2UoKSxuLnRvdWNoVGltZW91dCYmY2xlYXJUaW1lb3V0KG4udG91Y2hUaW1lb3V0KSxuLnRvdWNoVGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKGUpe3JldHVybiBuLmN5Y2xlKGUpfSw1MDArbi5fY29uZmlnLmludGVydmFsKSl9LHAodGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKG9lKSkub24oSy5EUkFHX1NUQVJULGZ1bmN0aW9uKGUpe3JldHVybiBlLnByZXZlbnREZWZhdWx0KCl9KSx0aGlzLl9wb2ludGVyRXZlbnQ/KHAodGhpcy5fZWxlbWVudCkub24oSy5QT0lOVEVSRE9XTixlKSxwKHRoaXMuX2VsZW1lbnQpLm9uKEsuUE9JTlRFUlVQLHQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0ZSkpOihwKHRoaXMuX2VsZW1lbnQpLm9uKEsuVE9VQ0hTVEFSVCxlKSxwKHRoaXMuX2VsZW1lbnQpLm9uKEsuVE9VQ0hNT1ZFLGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PWUpLm9yaWdpbmFsRXZlbnQudG91Y2hlcyYmMTx0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGg/bi50b3VjaERlbHRhWD0wOm4udG91Y2hEZWx0YVg9dC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WC1uLnRvdWNoU3RhcnRYfSkscCh0aGlzLl9lbGVtZW50KS5vbihLLlRPVUNIRU5ELHQpKSl9LGUuX2tleWRvd249ZnVuY3Rpb24oZSl7aWYoIS9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkpc3dpdGNoKGUud2hpY2gpe2Nhc2UgMzc6ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucHJldigpO2JyZWFrO2Nhc2UgMzk6ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmV4dCgpfX0sZS5fZ2V0SXRlbUluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pdGVtcz1lJiZlLnBhcmVudE5vZGU/W10uc2xpY2UuY2FsbChlLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChyZSkpOltdLHRoaXMuX2l0ZW1zLmluZGV4T2YoZSl9LGUuX2dldEl0ZW1CeURpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPWU9PT1GLGk9ZT09PVUscj10aGlzLl9nZXRJdGVtSW5kZXgodCksbz10aGlzLl9pdGVtcy5sZW5ndGgtMTtpZigoaSYmMD09PXJ8fG4mJnI9PT1vKSYmIXRoaXMuX2NvbmZpZy53cmFwKXJldHVybiB0O3ZhciBzPShyKyhlPT09VT8tMToxKSkldGhpcy5faXRlbXMubGVuZ3RoO3JldHVybi0xPT1zP3RoaXMuX2l0ZW1zW3RoaXMuX2l0ZW1zLmxlbmd0aC0xXTp0aGlzLl9pdGVtc1tzXX0sZS5fdHJpZ2dlclNsaWRlRXZlbnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9nZXRJdGVtSW5kZXgoZSksaT10aGlzLl9nZXRJdGVtSW5kZXgodGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKGllKSkscj1wLkV2ZW50KEsuU0xJREUse3JlbGF0ZWRUYXJnZXQ6ZSxkaXJlY3Rpb246dCxmcm9tOmksdG86bn0pO3JldHVybiBwKHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIocikscn0sZS5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdCxuO3RoaXMuX2luZGljYXRvcnNFbGVtZW50JiYodD1bXS5zbGljZS5jYWxsKHRoaXMuX2luZGljYXRvcnNFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwobmUpKSxwKHQpLnJlbW92ZUNsYXNzKFYpLChuPXRoaXMuX2luZGljYXRvcnNFbGVtZW50LmNoaWxkcmVuW3RoaXMuX2dldEl0ZW1JbmRleChlKV0pJiZwKG4pLmFkZENsYXNzKFYpKX0sZS5fc2xpZGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHIsbyxzLGE9dGhpcyxsPXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcihpZSksYz10aGlzLl9nZXRJdGVtSW5kZXgobCksdT10fHxsJiZ0aGlzLl9nZXRJdGVtQnlEaXJlY3Rpb24oZSxsKSxmPXRoaXMuX2dldEl0ZW1JbmRleCh1KSxkPUJvb2xlYW4odGhpcy5faW50ZXJ2YWwpLGg9ZT09PUY/KG49SixpPVosUSk6KG49WCxpPWVlLHopO3UmJnAodSkuaGFzQ2xhc3MoVik/dGhpcy5faXNTbGlkaW5nPSExOnRoaXMuX3RyaWdnZXJTbGlkZUV2ZW50KHUsaCkuaXNEZWZhdWx0UHJldmVudGVkKCl8fGwmJnUmJih0aGlzLl9pc1NsaWRpbmc9ITAsZCYmdGhpcy5wYXVzZSgpLHRoaXMuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQodSkscj1wLkV2ZW50KEsuU0xJRCx7cmVsYXRlZFRhcmdldDp1LGRpcmVjdGlvbjpoLGZyb206Yyx0bzpmfSkscCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhHKT8ocCh1KS5hZGRDbGFzcyhpKSxnLnJlZmxvdyh1KSxwKGwpLmFkZENsYXNzKG4pLHAodSkuYWRkQ2xhc3MobiksKG89cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWludGVydmFsXCIpLDEwKSk/KHRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWw9dGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbHx8dGhpcy5fY29uZmlnLmludGVydmFsLHRoaXMuX2NvbmZpZy5pbnRlcnZhbD1vKTp0aGlzLl9jb25maWcuaW50ZXJ2YWw9dGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbHx8dGhpcy5fY29uZmlnLmludGVydmFsLHM9Zy5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudChsKSxwKGwpLm9uZShnLlRSQU5TSVRJT05fRU5ELGZ1bmN0aW9uKCl7cCh1KS5yZW1vdmVDbGFzcyhuK1wiIFwiK2kpLmFkZENsYXNzKFYpLHAobCkucmVtb3ZlQ2xhc3MoVitcIiBcIitpK1wiIFwiK24pLGEuX2lzU2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHAoYS5fZWxlbWVudCkudHJpZ2dlcihyKX0sMCl9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChzKSk6KHAobCkucmVtb3ZlQ2xhc3MoVikscCh1KS5hZGRDbGFzcyhWKSx0aGlzLl9pc1NsaWRpbmc9ITEscCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKHIpKSxkJiZ0aGlzLmN5Y2xlKCkpfSxvLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcykuZGF0YShNKSx0PWwoe30sVyx7fSxwKHRoaXMpLmRhdGEoKSk7XCJvYmplY3RcIj09PWFpKGkpJiYodD1sKHt9LHQse30saSkpO3ZhciBuPVwic3RyaW5nXCI9PXR5cGVvZiBpP2k6dC5zbGlkZTtpZihlfHwoZT1uZXcgbyh0aGlzLHQpLHAodGhpcykuZGF0YShNLGUpKSxcIm51bWJlclwiPT10eXBlb2YgaSllLnRvKGkpO2Vsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIG4pe2lmKHZvaWQgMD09PWVbbl0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkIFwiJytuKydcIicpO2Vbbl0oKX1lbHNlIHQuaW50ZXJ2YWwmJnQucmlkZSYmKGUucGF1c2UoKSxlLmN5Y2xlKCkpfSl9LG8uX2RhdGFBcGlDbGlja0hhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHI9Zy5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpOyFyfHwodD1wKHIpWzBdKSYmcCh0KS5oYXNDbGFzcyhZKSYmKG49bCh7fSxwKHQpLmRhdGEoKSx7fSxwKHRoaXMpLmRhdGEoKSksKGk9dGhpcy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNsaWRlLXRvXCIpKSYmKG4uaW50ZXJ2YWw9ITEpLG8uX2pRdWVyeUludGVyZmFjZS5jYWxsKHAodCksbiksaSYmcCh0KS5kYXRhKE0pLnRvKGkpLGUucHJldmVudERlZmF1bHQoKSl9LHMobyxudWxsLFt7a2V5OlwiVkVSU0lPTlwiLGdldDpmdW5jdGlvbigpe3JldHVyblwiNC40LjFcIn19LHtrZXk6XCJEZWZhdWx0XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFd9fV0pLG99KCk7cChkb2N1bWVudCkub24oSy5DTElDS19EQVRBX0FQSSxsZSxmZS5fZGF0YUFwaUNsaWNrSGFuZGxlcikscCh3aW5kb3cpLm9uKEsuTE9BRF9EQVRBX0FQSSxmdW5jdGlvbigpe2Zvcih2YXIgZT1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoY2UpKSx0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXt2YXIgaT1wKGVbdF0pO2ZlLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChpLGkuZGF0YSgpKX19KSxwLmZuWyRdPWZlLl9qUXVlcnlJbnRlcmZhY2UscC5mblskXS5Db25zdHJ1Y3Rvcj1mZSxwLmZuWyRdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gcC5mblskXT1SLGZlLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciBkZT1cImNvbGxhcHNlXCIsaGU9XCJicy5jb2xsYXBzZVwiLHBlPVwiLlwiK2hlLGdlPXAuZm5bZGVdLG1lPXt0b2dnbGU6ITAscGFyZW50OlwiXCJ9LHZlPXt0b2dnbGU6XCJib29sZWFuXCIscGFyZW50OlwiKHN0cmluZ3xlbGVtZW50KVwifSx5ZT17U0hPVzpcInNob3dcIitwZSxTSE9XTjpcInNob3duXCIrcGUsSElERTpcImhpZGVcIitwZSxISURERU46XCJoaWRkZW5cIitwZSxDTElDS19EQVRBX0FQSTpcImNsaWNrXCIrcGUrXCIuZGF0YS1hcGlcIn0sX2U9XCJzaG93XCIsYmU9XCJjb2xsYXBzZVwiLHdlPVwiY29sbGFwc2luZ1wiLEVlPVwiY29sbGFwc2VkXCIseGU9XCJ3aWR0aFwiLENlPVwiaGVpZ2h0XCIsVGU9XCIuc2hvdywgLmNvbGxhcHNpbmdcIixBZT0nW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl0nLFNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSh0LGUpe3RoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9lbGVtZW50PXQsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl90cmlnZ2VyQXJyYXk9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXVtocmVmPVwiIycrdC5pZCsnXCJdLFtkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCJdW2RhdGEtdGFyZ2V0PVwiIycrdC5pZCsnXCJdJykpO2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoQWUpKSxpPTAscj1uLmxlbmd0aDtpPHI7aSsrKXt2YXIgbz1uW2ldLHM9Zy5nZXRTZWxlY3RvckZyb21FbGVtZW50KG8pLGE9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHMpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSk7bnVsbCE9PXMmJjA8YS5sZW5ndGgmJih0aGlzLl9zZWxlY3Rvcj1zLHRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKG8pKX10aGlzLl9wYXJlbnQ9dGhpcy5fY29uZmlnLnBhcmVudD90aGlzLl9nZXRQYXJlbnQoKTpudWxsLHRoaXMuX2NvbmZpZy5wYXJlbnR8fHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl9lbGVtZW50LHRoaXMuX3RyaWdnZXJBcnJheSksdGhpcy5fY29uZmlnLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX12YXIgZT1hLnByb3RvdHlwZTtyZXR1cm4gZS50b2dnbGU9ZnVuY3Rpb24oKXtwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKF9lKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX0sZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGUsdCxuLGkscixvLHM9dGhpczt0aGlzLl9pc1RyYW5zaXRpb25pbmd8fHAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoX2UpfHwodGhpcy5fcGFyZW50JiYwPT09KGU9W10uc2xpY2UuY2FsbCh0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChUZSkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygcy5fY29uZmlnLnBhcmVudD9lLmdldEF0dHJpYnV0ZShcImRhdGEtcGFyZW50XCIpPT09cy5fY29uZmlnLnBhcmVudDplLmNsYXNzTGlzdC5jb250YWlucyhiZSl9KSkubGVuZ3RoJiYoZT1udWxsKSxlJiYodD1wKGUpLm5vdCh0aGlzLl9zZWxlY3RvcikuZGF0YShoZSkpJiZ0Ll9pc1RyYW5zaXRpb25pbmd8fChuPXAuRXZlbnQoeWUuU0hPVykscCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG4pLG4uaXNEZWZhdWx0UHJldmVudGVkKCl8fChlJiYoYS5falF1ZXJ5SW50ZXJmYWNlLmNhbGwocChlKS5ub3QodGhpcy5fc2VsZWN0b3IpLFwiaGlkZVwiKSx0fHxwKGUpLmRhdGEoaGUsbnVsbCkpLGk9dGhpcy5fZ2V0RGltZW5zaW9uKCkscCh0aGlzLl9lbGVtZW50KS5yZW1vdmVDbGFzcyhiZSkuYWRkQ2xhc3Mod2UpLHRoaXMuX2VsZW1lbnQuc3R5bGVbaV09MCx0aGlzLl90cmlnZ2VyQXJyYXkubGVuZ3RoJiZwKHRoaXMuX3RyaWdnZXJBcnJheSkucmVtb3ZlQ2xhc3MoRWUpLmF0dHIoXCJhcmlhLWV4cGFuZGVkXCIsITApLHRoaXMuc2V0VHJhbnNpdGlvbmluZyghMCkscj1cInNjcm9sbFwiKyhpWzBdLnRvVXBwZXJDYXNlKCkraS5zbGljZSgxKSksbz1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpLHAodGhpcy5fZWxlbWVudCkub25lKGcuVFJBTlNJVElPTl9FTkQsZnVuY3Rpb24oKXtwKHMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKHdlKS5hZGRDbGFzcyhiZSkuYWRkQ2xhc3MoX2UpLHMuX2VsZW1lbnQuc3R5bGVbaV09XCJcIixzLnNldFRyYW5zaXRpb25pbmcoITEpLHAocy5fZWxlbWVudCkudHJpZ2dlcih5ZS5TSE9XTil9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChvKSx0aGlzLl9lbGVtZW50LnN0eWxlW2ldPXRoaXMuX2VsZW1lbnRbcl0rXCJweFwiKSkpfSxlLmhpZGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLl9pc1RyYW5zaXRpb25pbmcmJnAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoX2UpKXt2YXIgdD1wLkV2ZW50KHllLkhJREUpO2lmKHAodGhpcy5fZWxlbWVudCkudHJpZ2dlcih0KSwhdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIG49dGhpcy5fZ2V0RGltZW5zaW9uKCk7dGhpcy5fZWxlbWVudC5zdHlsZVtuXT10aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW25dK1wicHhcIixnLnJlZmxvdyh0aGlzLl9lbGVtZW50KSxwKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKHdlKS5yZW1vdmVDbGFzcyhiZSkucmVtb3ZlQ2xhc3MoX2UpO3ZhciBpPXRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg7aWYoMDxpKWZvcih2YXIgcj0wO3I8aTtyKyspe3ZhciBvPXRoaXMuX3RyaWdnZXJBcnJheVtyXSxzPWcuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudChvKTtudWxsIT09cyYmKHAoW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHMpKSkuaGFzQ2xhc3MoX2UpfHxwKG8pLmFkZENsYXNzKEVlKS5hdHRyKFwiYXJpYS1leHBhbmRlZFwiLCExKSl9dGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt0aGlzLl9lbGVtZW50LnN0eWxlW25dPVwiXCI7dmFyIGE9Zy5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtwKHRoaXMuX2VsZW1lbnQpLm9uZShnLlRSQU5TSVRJT05fRU5ELGZ1bmN0aW9uKCl7ZS5zZXRUcmFuc2l0aW9uaW5nKCExKSxwKGUuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKHdlKS5hZGRDbGFzcyhiZSkudHJpZ2dlcih5ZS5ISURERU4pfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYSl9fX0sZS5zZXRUcmFuc2l0aW9uaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX2lzVHJhbnNpdGlvbmluZz1lfSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxoZSksdGhpcy5fY29uZmlnPW51bGwsdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX3RyaWdnZXJBcnJheT1udWxsLHRoaXMuX2lzVHJhbnNpdGlvbmluZz1udWxsfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9bCh7fSxtZSx7fSxlKSkudG9nZ2xlPUJvb2xlYW4oZS50b2dnbGUpLGcudHlwZUNoZWNrQ29uZmlnKGRlLGUsdmUpLGV9LGUuX2dldERpbWVuc2lvbj1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKHhlKT94ZTpDZX0sZS5fZ2V0UGFyZW50PWZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzO2cuaXNFbGVtZW50KHRoaXMuX2NvbmZpZy5wYXJlbnQpPyhlPXRoaXMuX2NvbmZpZy5wYXJlbnQsdm9pZCAwIT09dGhpcy5fY29uZmlnLnBhcmVudC5qcXVlcnkmJihlPXRoaXMuX2NvbmZpZy5wYXJlbnRbMF0pKTplPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5fY29uZmlnLnBhcmVudCk7dmFyIHQ9J1tkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCJdW2RhdGEtcGFyZW50PVwiJyt0aGlzLl9jb25maWcucGFyZW50KydcIl0nLGk9W10uc2xpY2UuY2FsbChlLnF1ZXJ5U2VsZWN0b3JBbGwodCkpO3JldHVybiBwKGkpLmVhY2goZnVuY3Rpb24oZSx0KXtuLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoYS5fZ2V0VGFyZ2V0RnJvbUVsZW1lbnQodCksW3RdKX0pLGV9LGUuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXAoZSkuaGFzQ2xhc3MoX2UpO3QubGVuZ3RoJiZwKHQpLnRvZ2dsZUNsYXNzKEVlLCFuKS5hdHRyKFwiYXJpYS1leHBhbmRlZFwiLG4pfSxhLl9nZXRUYXJnZXRGcm9tRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD1nLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIHQ/ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTpudWxsfSxhLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLmRhdGEoaGUpLG49bCh7fSxtZSx7fSxlLmRhdGEoKSx7fSxcIm9iamVjdFwiPT09YWkoaSkmJmk/aTp7fSk7aWYoIXQmJm4udG9nZ2xlJiYvc2hvd3xoaWRlLy50ZXN0KGkpJiYobi50b2dnbGU9ITEpLHR8fCh0PW5ldyBhKHRoaXMsbiksZS5kYXRhKGhlLHQpKSxcInN0cmluZ1wiPT10eXBlb2YgaSl7aWYodm9pZCAwPT09dFtpXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgXCInK2krJ1wiJyk7dFtpXSgpfX0pfSxzKGEsbnVsbCxbe2tleTpcIlZFUlNJT05cIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIjQuNC4xXCJ9fSx7a2V5OlwiRGVmYXVsdFwiLGdldDpmdW5jdGlvbigpe3JldHVybiBtZX19XSksYX0oKTtwKGRvY3VtZW50KS5vbih5ZS5DTElDS19EQVRBX0FQSSxBZSxmdW5jdGlvbihlKXtcIkFcIj09PWUuY3VycmVudFRhcmdldC50YWdOYW1lJiZlLnByZXZlbnREZWZhdWx0KCk7dmFyIG49cCh0aGlzKSx0PWcuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKSxpPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KSk7cChpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9cCh0aGlzKSx0PWUuZGF0YShoZSk/XCJ0b2dnbGVcIjpuLmRhdGEoKTtTZS5falF1ZXJ5SW50ZXJmYWNlLmNhbGwoZSx0KX0pfSkscC5mbltkZV09U2UuX2pRdWVyeUludGVyZmFjZSxwLmZuW2RlXS5Db25zdHJ1Y3Rvcj1TZSxwLmZuW2RlXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHAuZm5bZGVdPWdlLFNlLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciBEZT1cImRyb3Bkb3duXCIsT2U9XCJicy5kcm9wZG93blwiLGtlPVwiLlwiK09lLEllPVwiLmRhdGEtYXBpXCIsamU9cC5mbltEZV0sTmU9bmV3IFJlZ0V4cChcIjM4fDQwfDI3XCIpLExlPXtISURFOlwiaGlkZVwiK2tlLEhJRERFTjpcImhpZGRlblwiK2tlLFNIT1c6XCJzaG93XCIra2UsU0hPV046XCJzaG93blwiK2tlLENMSUNLOlwiY2xpY2tcIitrZSxDTElDS19EQVRBX0FQSTpcImNsaWNrXCIra2UrSWUsS0VZRE9XTl9EQVRBX0FQSTpcImtleWRvd25cIitrZStJZSxLRVlVUF9EQVRBX0FQSTpcImtleXVwXCIra2UrSWV9LFBlPVwiZGlzYWJsZWRcIiwkZT1cInNob3dcIixNZT1cImRyb3B1cFwiLHFlPVwiZHJvcHJpZ2h0XCIsSGU9XCJkcm9wbGVmdFwiLFJlPVwiZHJvcGRvd24tbWVudS1yaWdodFwiLFdlPVwicG9zaXRpb24tc3RhdGljXCIsQmU9J1tkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJdJyxGZT1cIi5kcm9wZG93biBmb3JtXCIsVWU9XCIuZHJvcGRvd24tbWVudVwiLFFlPVwiLm5hdmJhci1uYXZcIix6ZT1cIi5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpXCIsS2U9XCJ0b3Atc3RhcnRcIixZZT1cInRvcC1lbmRcIixWZT1cImJvdHRvbS1zdGFydFwiLEdlPVwiYm90dG9tLWVuZFwiLFhlPVwicmlnaHQtc3RhcnRcIixKZT1cImxlZnQtc3RhcnRcIixaZT17b2Zmc2V0OjAsZmxpcDohMCxib3VuZGFyeTpcInNjcm9sbFBhcmVudFwiLHJlZmVyZW5jZTpcInRvZ2dsZVwiLGRpc3BsYXk6XCJkeW5hbWljXCIscG9wcGVyQ29uZmlnOm51bGx9LGV0PXtvZmZzZXQ6XCIobnVtYmVyfHN0cmluZ3xmdW5jdGlvbilcIixmbGlwOlwiYm9vbGVhblwiLGJvdW5kYXJ5OlwiKHN0cmluZ3xlbGVtZW50KVwiLHJlZmVyZW5jZTpcIihzdHJpbmd8ZWxlbWVudClcIixkaXNwbGF5Olwic3RyaW5nXCIscG9wcGVyQ29uZmlnOlwiKG51bGx8b2JqZWN0KVwifSx0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoZSx0KXt0aGlzLl9lbGVtZW50PWUsdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyh0KSx0aGlzLl9tZW51PXRoaXMuX2dldE1lbnVFbGVtZW50KCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX12YXIgZT1jLnByb3RvdHlwZTtyZXR1cm4gZS50b2dnbGU9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9lbGVtZW50LmRpc2FibGVkfHxwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKFBlKXx8KGU9cCh0aGlzLl9tZW51KS5oYXNDbGFzcygkZSksYy5fY2xlYXJNZW51cygpLGV8fHRoaXMuc2hvdyghMCkpfSxlLnNob3c9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLCEodGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhQZSl8fHAodGhpcy5fbWVudSkuaGFzQ2xhc3MoJGUpKSl7dmFyIHQ9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0sbj1wLkV2ZW50KExlLlNIT1csdCksaT1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtpZihwKGkpLnRyaWdnZXIobiksIW4uaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKCF0aGlzLl9pbk5hdmJhciYmZSl7aWYodm9pZCAwPT09Zil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQm9vdHN0cmFwJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcvKVwiKTt2YXIgcj10aGlzLl9lbGVtZW50O1wicGFyZW50XCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP3I9aTpnLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSYmKHI9dGhpcy5fY29uZmlnLnJlZmVyZW5jZSx2b2lkIDAhPT10aGlzLl9jb25maWcucmVmZXJlbmNlLmpxdWVyeSYmKHI9dGhpcy5fY29uZmlnLnJlZmVyZW5jZVswXSkpLFwic2Nyb2xsUGFyZW50XCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnAoaSkuYWRkQ2xhc3MoV2UpLHRoaXMuX3BvcHBlcj1uZXcgZihyLHRoaXMuX21lbnUsdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKCkpfVwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJjA9PT1wKGkpLmNsb3Nlc3QoUWUpLmxlbmd0aCYmcChkb2N1bWVudC5ib2R5KS5jaGlsZHJlbigpLm9uKFwibW91c2VvdmVyXCIsbnVsbCxwLm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIiwhMCkscCh0aGlzLl9tZW51KS50b2dnbGVDbGFzcygkZSkscChpKS50b2dnbGVDbGFzcygkZSkudHJpZ2dlcihwLkV2ZW50KExlLlNIT1dOLHQpKX19fSxlLmhpZGU9ZnVuY3Rpb24oKXt2YXIgZSx0LG47dGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhQZSl8fCFwKHRoaXMuX21lbnUpLmhhc0NsYXNzKCRlKXx8KGU9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0sdD1wLkV2ZW50KExlLkhJREUsZSksbj1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KSxwKG4pLnRyaWdnZXIodCksdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHRoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSxwKHRoaXMuX21lbnUpLnRvZ2dsZUNsYXNzKCRlKSxwKG4pLnRvZ2dsZUNsYXNzKCRlKS50cmlnZ2VyKHAuRXZlbnQoTGUuSElEREVOLGUpKSkpfSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxPZSkscCh0aGlzLl9lbGVtZW50KS5vZmYoa2UpLHRoaXMuX2VsZW1lbnQ9bnVsbCwodGhpcy5fbWVudT1udWxsKSE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSxlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSxlLl9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cCh0aGlzLl9lbGVtZW50KS5vbihMZS5DTElDSyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LnRvZ2dsZSgpfSl9LGUuX2dldENvbmZpZz1mdW5jdGlvbihlKXtyZXR1cm4gZT1sKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCx7fSxwKHRoaXMuX2VsZW1lbnQpLmRhdGEoKSx7fSxlKSxnLnR5cGVDaGVja0NvbmZpZyhEZSxlLHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLGV9LGUuX2dldE1lbnVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHRoaXMuX21lbnV8fChlPWMuX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpKSYmKHRoaXMuX21lbnU9ZS5xdWVyeVNlbGVjdG9yKFVlKSksdGhpcy5fbWVudX0sZS5fZ2V0UGxhY2VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9cCh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUpLHQ9VmU7cmV0dXJuIGUuaGFzQ2xhc3MoTWUpPyh0PUtlLHAodGhpcy5fbWVudSkuaGFzQ2xhc3MoUmUpJiYodD1ZZSkpOmUuaGFzQ2xhc3MocWUpP3Q9WGU6ZS5oYXNDbGFzcyhIZSk/dD1KZTpwKHRoaXMuX21lbnUpLmhhc0NsYXNzKFJlKSYmKHQ9R2UpLHR9LGUuX2RldGVjdE5hdmJhcj1mdW5jdGlvbigpe3JldHVybiAwPHAodGhpcy5fZWxlbWVudCkuY2xvc2VzdChcIi5uYXZiYXJcIikubGVuZ3RofSxlLl9nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5fY29uZmlnLm9mZnNldD9lLmZuPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldHM9bCh7fSxlLm9mZnNldHMse30sdC5fY29uZmlnLm9mZnNldChlLm9mZnNldHMsdC5fZWxlbWVudCl8fHt9KSxlfTplLm9mZnNldD10aGlzLl9jb25maWcub2Zmc2V0LGV9LGUuX2dldFBvcHBlckNvbmZpZz1mdW5jdGlvbigpe3ZhciBlPXtwbGFjZW1lbnQ6dGhpcy5fZ2V0UGxhY2VtZW50KCksbW9kaWZpZXJzOntvZmZzZXQ6dGhpcy5fZ2V0T2Zmc2V0KCksZmxpcDp7ZW5hYmxlZDp0aGlzLl9jb25maWcuZmxpcH0scHJldmVudE92ZXJmbG93Ontib3VuZGFyaWVzRWxlbWVudDp0aGlzLl9jb25maWcuYm91bmRhcnl9fX07cmV0dXJuXCJzdGF0aWNcIj09PXRoaXMuX2NvbmZpZy5kaXNwbGF5JiYoZS5tb2RpZmllcnMuYXBwbHlTdHlsZT17ZW5hYmxlZDohMX0pLGwoe30sZSx7fSx0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKX0sYy5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMpLmRhdGEoT2UpLHQ9XCJvYmplY3RcIj09PWFpKG4pP246bnVsbDtpZihlfHwoZT1uZXcgYyh0aGlzLHQpLHAodGhpcykuZGF0YShPZSxlKSksXCJzdHJpbmdcIj09dHlwZW9mIG4pe2lmKHZvaWQgMD09PWVbbl0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkIFwiJytuKydcIicpO2Vbbl0oKX19KX0sYy5fY2xlYXJNZW51cz1mdW5jdGlvbihlKXtpZighZXx8MyE9PWUud2hpY2gmJihcImtleXVwXCIhPT1lLnR5cGV8fDk9PT1lLndoaWNoKSlmb3IodmFyIHQ9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKEJlKSksbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7dmFyIHIsbyxzPWMuX2dldFBhcmVudEZyb21FbGVtZW50KHRbbl0pLGE9cCh0W25dKS5kYXRhKE9lKSxsPXtyZWxhdGVkVGFyZ2V0OnRbbl19O2UmJlwiY2xpY2tcIj09PWUudHlwZSYmKGwuY2xpY2tFdmVudD1lKSxhJiYocj1hLl9tZW51LHAocykuaGFzQ2xhc3MoJGUpJiYoZSYmKFwiY2xpY2tcIj09PWUudHlwZSYmL2lucHV0fHRleHRhcmVhL2kudGVzdChlLnRhcmdldC50YWdOYW1lKXx8XCJrZXl1cFwiPT09ZS50eXBlJiY5PT09ZS53aGljaCkmJnAuY29udGFpbnMocyxlLnRhcmdldCl8fChvPXAuRXZlbnQoTGUuSElERSxsKSxwKHMpLnRyaWdnZXIobyksby5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnAoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oKS5vZmYoXCJtb3VzZW92ZXJcIixudWxsLHAubm9vcCksdFtuXS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsXCJmYWxzZVwiKSxhLl9wb3BwZXImJmEuX3BvcHBlci5kZXN0cm95KCkscChyKS5yZW1vdmVDbGFzcygkZSkscChzKS5yZW1vdmVDbGFzcygkZSkudHJpZ2dlcihwLkV2ZW50KExlLkhJRERFTixsKSkpKSkpfX0sYy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1nLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7cmV0dXJuIG4mJih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobikpLHR8fGUucGFyZW50Tm9kZX0sYy5fZGF0YUFwaUtleWRvd25IYW5kbGVyPWZ1bmN0aW9uKGUpe2lmKCgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpPyEoMzI9PT1lLndoaWNofHwyNyE9PWUud2hpY2gmJig0MCE9PWUud2hpY2gmJjM4IT09ZS53aGljaHx8cChlLnRhcmdldCkuY2xvc2VzdChVZSkubGVuZ3RoKSk6TmUudGVzdChlLndoaWNoKSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSwhdGhpcy5kaXNhYmxlZCYmIXAodGhpcykuaGFzQ2xhc3MoUGUpKSl7dmFyIHQsbj1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzKSxpPXAobikuaGFzQ2xhc3MoJGUpO2lmKGl8fDI3IT09ZS53aGljaCl7aWYoIWl8fGkmJigyNz09PWUud2hpY2h8fDMyPT09ZS53aGljaCkpcmV0dXJuIDI3PT09ZS53aGljaCYmKHQ9bi5xdWVyeVNlbGVjdG9yKEJlKSxwKHQpLnRyaWdnZXIoXCJmb2N1c1wiKSksdm9pZCBwKHRoaXMpLnRyaWdnZXIoXCJjbGlja1wiKTt2YXIgcixvPVtdLnNsaWNlLmNhbGwobi5xdWVyeVNlbGVjdG9yQWxsKHplKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpLmlzKFwiOnZpc2libGVcIil9KTswIT09by5sZW5ndGgmJihyPW8uaW5kZXhPZihlLnRhcmdldCksMzg9PT1lLndoaWNoJiYwPHImJnItLSw0MD09PWUud2hpY2gmJnI8by5sZW5ndGgtMSYmcisrLHI8MCYmKHI9MCksb1tyXS5mb2N1cygpKX19fSxzKGMsbnVsbCxbe2tleTpcIlZFUlNJT05cIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIjQuNC4xXCJ9fSx7a2V5OlwiRGVmYXVsdFwiLGdldDpmdW5jdGlvbigpe3JldHVybiBaZX19LHtrZXk6XCJEZWZhdWx0VHlwZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBldH19XSksY30oKTtwKGRvY3VtZW50KS5vbihMZS5LRVlET1dOX0RBVEFfQVBJLEJlLHR0Ll9kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLm9uKExlLktFWURPV05fREFUQV9BUEksVWUsdHQuX2RhdGFBcGlLZXlkb3duSGFuZGxlcikub24oTGUuQ0xJQ0tfREFUQV9BUEkrXCIgXCIrTGUuS0VZVVBfREFUQV9BUEksdHQuX2NsZWFyTWVudXMpLm9uKExlLkNMSUNLX0RBVEFfQVBJLEJlLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHR0Ll9qUXVlcnlJbnRlcmZhY2UuY2FsbChwKHRoaXMpLFwidG9nZ2xlXCIpfSkub24oTGUuQ0xJQ0tfREFUQV9BUEksRmUsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLHAuZm5bRGVdPXR0Ll9qUXVlcnlJbnRlcmZhY2UscC5mbltEZV0uQ29uc3RydWN0b3I9dHQscC5mbltEZV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBwLmZuW0RlXT1qZSx0dC5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgbnQ9XCJtb2RhbFwiLGl0PVwiYnMubW9kYWxcIixydD1cIi5cIitpdCxvdD1wLmZuW250XSxzdD17YmFja2Ryb3A6ITAsa2V5Ym9hcmQ6ITAsZm9jdXM6ITAsc2hvdzohMH0sYXQ9e2JhY2tkcm9wOlwiKGJvb2xlYW58c3RyaW5nKVwiLGtleWJvYXJkOlwiYm9vbGVhblwiLGZvY3VzOlwiYm9vbGVhblwiLHNob3c6XCJib29sZWFuXCJ9LGx0PXtISURFOlwiaGlkZVwiK3J0LEhJREVfUFJFVkVOVEVEOlwiaGlkZVByZXZlbnRlZFwiK3J0LEhJRERFTjpcImhpZGRlblwiK3J0LFNIT1c6XCJzaG93XCIrcnQsU0hPV046XCJzaG93blwiK3J0LEZPQ1VTSU46XCJmb2N1c2luXCIrcnQsUkVTSVpFOlwicmVzaXplXCIrcnQsQ0xJQ0tfRElTTUlTUzpcImNsaWNrLmRpc21pc3NcIitydCxLRVlET1dOX0RJU01JU1M6XCJrZXlkb3duLmRpc21pc3NcIitydCxNT1VTRVVQX0RJU01JU1M6XCJtb3VzZXVwLmRpc21pc3NcIitydCxNT1VTRURPV05fRElTTUlTUzpcIm1vdXNlZG93bi5kaXNtaXNzXCIrcnQsQ0xJQ0tfREFUQV9BUEk6XCJjbGlja1wiK3J0K1wiLmRhdGEtYXBpXCJ9LGN0PVwibW9kYWwtZGlhbG9nLXNjcm9sbGFibGVcIix1dD1cIm1vZGFsLXNjcm9sbGJhci1tZWFzdXJlXCIsZnQ9XCJtb2RhbC1iYWNrZHJvcFwiLGR0PVwibW9kYWwtb3BlblwiLGh0PVwiZmFkZVwiLHB0PVwic2hvd1wiLGd0PVwibW9kYWwtc3RhdGljXCIsbXQ9XCIubW9kYWwtZGlhbG9nXCIsdnQ9XCIubW9kYWwtYm9keVwiLHl0PSdbZGF0YS10b2dnbGU9XCJtb2RhbFwiXScsX3Q9J1tkYXRhLWRpc21pc3M9XCJtb2RhbFwiXScsYnQ9XCIuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wXCIsd3Q9XCIuc3RpY2t5LXRvcFwiLEV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe3RoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy5fZWxlbWVudD1lLHRoaXMuX2RpYWxvZz1lLnF1ZXJ5U2VsZWN0b3IobXQpLHRoaXMuX2JhY2tkcm9wPW51bGwsdGhpcy5faXNTaG93bj0hMSx0aGlzLl9pc0JvZHlPdmVyZmxvd2luZz0hMSx0aGlzLl9pZ25vcmVCYWNrZHJvcENsaWNrPSExLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9zY3JvbGxiYXJXaWR0aD0wfXZhciBlPXIucHJvdG90eXBlO3JldHVybiBlLnRvZ2dsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coZSl9LGUuc2hvdz1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXM7dGhpcy5faXNTaG93bnx8dGhpcy5faXNUcmFuc2l0aW9uaW5nfHwocCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhodCkmJih0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITApLHQ9cC5FdmVudChsdC5TSE9XLHtyZWxhdGVkVGFyZ2V0OmV9KSxwKHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIodCksdGhpcy5faXNTaG93bnx8dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHRoaXMuX2lzU2hvd249ITAsdGhpcy5fY2hlY2tTY3JvbGxiYXIoKSx0aGlzLl9zZXRTY3JvbGxiYXIoKSx0aGlzLl9hZGp1c3REaWFsb2coKSx0aGlzLl9zZXRFc2NhcGVFdmVudCgpLHRoaXMuX3NldFJlc2l6ZUV2ZW50KCkscCh0aGlzLl9lbGVtZW50KS5vbihsdC5DTElDS19ESVNNSVNTLF90LGZ1bmN0aW9uKGUpe3JldHVybiBuLmhpZGUoZSl9KSxwKHRoaXMuX2RpYWxvZykub24obHQuTU9VU0VET1dOX0RJU01JU1MsZnVuY3Rpb24oKXtwKG4uX2VsZW1lbnQpLm9uZShsdC5NT1VTRVVQX0RJU01JU1MsZnVuY3Rpb24oZSl7cChlLnRhcmdldCkuaXMobi5fZWxlbWVudCkmJihuLl9pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5fc2hvd0JhY2tkcm9wKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX3Nob3dFbGVtZW50KGUpfSkpKX0sZS5oaWRlPWZ1bmN0aW9uKGUpe3ZhciB0LG4saSxyPXRoaXM7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2lzU2hvd24mJiF0aGlzLl9pc1RyYW5zaXRpb25pbmcmJih0PXAuRXZlbnQobHQuSElERSkscCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKHQpLHRoaXMuX2lzU2hvd24mJiF0LmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5faXNTaG93bj0hMSwobj1wKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGh0KSkmJih0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITApLHRoaXMuX3NldEVzY2FwZUV2ZW50KCksdGhpcy5fc2V0UmVzaXplRXZlbnQoKSxwKGRvY3VtZW50KS5vZmYobHQuRk9DVVNJTikscCh0aGlzLl9lbGVtZW50KS5yZW1vdmVDbGFzcyhwdCkscCh0aGlzLl9lbGVtZW50KS5vZmYobHQuQ0xJQ0tfRElTTUlTUykscCh0aGlzLl9kaWFsb2cpLm9mZihsdC5NT1VTRURPV05fRElTTUlTUyksbj8oaT1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpLHAodGhpcy5fZWxlbWVudCkub25lKGcuVFJBTlNJVElPTl9FTkQsZnVuY3Rpb24oZSl7cmV0dXJuIHIuX2hpZGVNb2RhbChlKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGkpKTp0aGlzLl9oaWRlTW9kYWwoKSkpfSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtbd2luZG93LHRoaXMuX2VsZW1lbnQsdGhpcy5fZGlhbG9nXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBwKGUpLm9mZihydCl9KSxwKGRvY3VtZW50KS5vZmYobHQuRk9DVVNJTikscC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsaXQpLHRoaXMuX2NvbmZpZz1udWxsLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9kaWFsb2c9bnVsbCx0aGlzLl9iYWNrZHJvcD1udWxsLHRoaXMuX2lzU2hvd249bnVsbCx0aGlzLl9pc0JvZHlPdmVyZmxvd2luZz1udWxsLHRoaXMuX2lnbm9yZUJhY2tkcm9wQ2xpY2s9bnVsbCx0aGlzLl9pc1RyYW5zaXRpb25pbmc9bnVsbCx0aGlzLl9zY3JvbGxiYXJXaWR0aD1udWxsfSxlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2FkanVzdERpYWxvZygpfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bCh7fSxzdCx7fSxlKSxnLnR5cGVDaGVja0NvbmZpZyhudCxlLGF0KSxlfSxlLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZihcInN0YXRpY1wiPT09dGhpcy5fY29uZmlnLmJhY2tkcm9wKXt2YXIgdD1wLkV2ZW50KGx0LkhJREVfUFJFVkVOVEVEKTtpZihwKHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIodCksdC5kZWZhdWx0UHJldmVudGVkKXJldHVybjt0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoZ3QpO3ZhciBuPWcuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7cCh0aGlzLl9lbGVtZW50KS5vbmUoZy5UUkFOU0lUSU9OX0VORCxmdW5jdGlvbigpe2UuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShndCl9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChuKSx0aGlzLl9lbGVtZW50LmZvY3VzKCl9ZWxzZSB0aGlzLmhpZGUoKX0sZS5fc2hvd0VsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoaHQpLGk9dGhpcy5fZGlhbG9nP3RoaXMuX2RpYWxvZy5xdWVyeVNlbGVjdG9yKHZ0KTpudWxsO3RoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV8fGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIix0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1tb2RhbFwiLCEwKSxwKHRoaXMuX2RpYWxvZykuaGFzQ2xhc3MoY3QpJiZpP2kuc2Nyb2xsVG9wPTA6dGhpcy5fZWxlbWVudC5zY3JvbGxUb3A9MCxuJiZnLnJlZmxvdyh0aGlzLl9lbGVtZW50KSxwKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKHB0KSx0aGlzLl9jb25maWcuZm9jdXMmJnRoaXMuX2VuZm9yY2VGb2N1cygpO2Z1bmN0aW9uIHIoKXt0Ll9jb25maWcuZm9jdXMmJnQuX2VsZW1lbnQuZm9jdXMoKSx0Ll9pc1RyYW5zaXRpb25pbmc9ITEscCh0Ll9lbGVtZW50KS50cmlnZ2VyKHMpfXZhciBvLHM9cC5FdmVudChsdC5TSE9XTix7cmVsYXRlZFRhcmdldDplfSk7bj8obz1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2RpYWxvZykscCh0aGlzLl9kaWFsb2cpLm9uZShnLlRSQU5TSVRJT05fRU5ELHIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKG8pKTpyKCl9LGUuX2VuZm9yY2VGb2N1cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cChkb2N1bWVudCkub2ZmKGx0LkZPQ1VTSU4pLm9uKGx0LkZPQ1VTSU4sZnVuY3Rpb24oZSl7ZG9jdW1lbnQhPT1lLnRhcmdldCYmdC5fZWxlbWVudCE9PWUudGFyZ2V0JiYwPT09cCh0Ll9lbGVtZW50KS5oYXMoZS50YXJnZXQpLmxlbmd0aCYmdC5fZWxlbWVudC5mb2N1cygpfSl9LGUuX3NldEVzY2FwZUV2ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9pc1Nob3duJiZ0aGlzLl9jb25maWcua2V5Ym9hcmQ/cCh0aGlzLl9lbGVtZW50KS5vbihsdC5LRVlET1dOX0RJU01JU1MsZnVuY3Rpb24oZSl7Mjc9PT1lLndoaWNoJiZ0Ll90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCl9KTp0aGlzLl9pc1Nob3dufHxwKHRoaXMuX2VsZW1lbnQpLm9mZihsdC5LRVlET1dOX0RJU01JU1MpfSxlLl9zZXRSZXNpemVFdmVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5faXNTaG93bj9wKHdpbmRvdykub24obHQuUkVTSVpFLGZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZVVwZGF0ZShlKX0pOnAod2luZG93KS5vZmYobHQuUkVTSVpFKX0sZS5faGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXk9XCJub25lXCIsdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCEwKSx0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtbW9kYWxcIiksdGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX3Nob3dCYWNrZHJvcChmdW5jdGlvbigpe3AoZG9jdW1lbnQuYm9keSkucmVtb3ZlQ2xhc3MoZHQpLGUuX3Jlc2V0QWRqdXN0bWVudHMoKSxlLl9yZXNldFNjcm9sbGJhcigpLHAoZS5fZWxlbWVudCkudHJpZ2dlcihsdC5ISURERU4pfSl9LGUuX3JlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy5fYmFja2Ryb3AmJihwKHRoaXMuX2JhY2tkcm9wKS5yZW1vdmUoKSx0aGlzLl9iYWNrZHJvcD1udWxsKX0sZS5fc2hvd0JhY2tkcm9wPWZ1bmN0aW9uKGUpe3ZhciB0LG4saT10aGlzLHI9cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhodCk/aHQ6XCJcIjtpZih0aGlzLl9pc1Nob3duJiZ0aGlzLl9jb25maWcuYmFja2Ryb3Ape2lmKHRoaXMuX2JhY2tkcm9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5fYmFja2Ryb3AuY2xhc3NOYW1lPWZ0LHImJnRoaXMuX2JhY2tkcm9wLmNsYXNzTGlzdC5hZGQocikscCh0aGlzLl9iYWNrZHJvcCkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkscCh0aGlzLl9lbGVtZW50KS5vbihsdC5DTElDS19ESVNNSVNTLGZ1bmN0aW9uKGUpe2kuX2lnbm9yZUJhY2tkcm9wQ2xpY2s/aS5faWdub3JlQmFja2Ryb3BDbGljaz0hMTplLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmaS5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpfSksciYmZy5yZWZsb3codGhpcy5fYmFja2Ryb3ApLHAodGhpcy5fYmFja2Ryb3ApLmFkZENsYXNzKHB0KSwhZSlyZXR1cm47aWYoIXIpcmV0dXJuIHZvaWQgZSgpO3ZhciBvPWcuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fYmFja2Ryb3ApO3AodGhpcy5fYmFja2Ryb3ApLm9uZShnLlRSQU5TSVRJT05fRU5ELGUpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKG8pfWVsc2V7IXRoaXMuX2lzU2hvd24mJnRoaXMuX2JhY2tkcm9wPyhwKHRoaXMuX2JhY2tkcm9wKS5yZW1vdmVDbGFzcyhwdCksdD1mdW5jdGlvbigpe2kuX3JlbW92ZUJhY2tkcm9wKCksZSYmZSgpfSxwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKGh0KT8obj1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2JhY2tkcm9wKSxwKHRoaXMuX2JhY2tkcm9wKS5vbmUoZy5UUkFOU0lUSU9OX0VORCx0KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChuKSk6dCgpKTplJiZlKCl9fSxlLl9hZGp1c3REaWFsb2c9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OyF0aGlzLl9pc0JvZHlPdmVyZmxvd2luZyYmZSYmKHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQ9dGhpcy5fc2Nyb2xsYmFyV2lkdGgrXCJweFwiKSx0aGlzLl9pc0JvZHlPdmVyZmxvd2luZyYmIWUmJih0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodD10aGlzLl9zY3JvbGxiYXJXaWR0aCtcInB4XCIpfSxlLl9yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdD1cIlwiLHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PVwiXCJ9LGUuX2NoZWNrU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLl9pc0JvZHlPdmVyZmxvd2luZz1lLmxlZnQrZS5yaWdodDx3aW5kb3cuaW5uZXJXaWR0aCx0aGlzLl9zY3JvbGxiYXJXaWR0aD10aGlzLl9nZXRTY3JvbGxiYXJXaWR0aCgpfSxlLl9zZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgZSx0LG4saSxyPXRoaXM7dGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcmJihlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChidCkpLHQ9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHd0KSkscChlKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zdHlsZS5wYWRkaW5nUmlnaHQsaT1wKHQpLmNzcyhcInBhZGRpbmctcmlnaHRcIik7cCh0KS5kYXRhKFwicGFkZGluZy1yaWdodFwiLG4pLmNzcyhcInBhZGRpbmctcmlnaHRcIixwYXJzZUZsb2F0KGkpK3IuX3Njcm9sbGJhcldpZHRoK1wicHhcIil9KSxwKHQpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj10LnN0eWxlLm1hcmdpblJpZ2h0LGk9cCh0KS5jc3MoXCJtYXJnaW4tcmlnaHRcIik7cCh0KS5kYXRhKFwibWFyZ2luLXJpZ2h0XCIsbikuY3NzKFwibWFyZ2luLXJpZ2h0XCIscGFyc2VGbG9hdChpKS1yLl9zY3JvbGxiYXJXaWR0aCtcInB4XCIpfSksbj1kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCxpPXAoZG9jdW1lbnQuYm9keSkuY3NzKFwicGFkZGluZy1yaWdodFwiKSxwKGRvY3VtZW50LmJvZHkpLmRhdGEoXCJwYWRkaW5nLXJpZ2h0XCIsbikuY3NzKFwicGFkZGluZy1yaWdodFwiLHBhcnNlRmxvYXQoaSkrdGhpcy5fc2Nyb2xsYmFyV2lkdGgrXCJweFwiKSkscChkb2N1bWVudC5ib2R5KS5hZGRDbGFzcyhkdCl9LGUuX3Jlc2V0U2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGU9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGJ0KSk7cChlKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49cCh0KS5kYXRhKFwicGFkZGluZy1yaWdodFwiKTtwKHQpLnJlbW92ZURhdGEoXCJwYWRkaW5nLXJpZ2h0XCIpLHQuc3R5bGUucGFkZGluZ1JpZ2h0PW58fFwiXCJ9KTt2YXIgdD1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJcIit3dCkpO3AodCkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPXAodCkuZGF0YShcIm1hcmdpbi1yaWdodFwiKTt2b2lkIDAhPT1uJiZwKHQpLmNzcyhcIm1hcmdpbi1yaWdodFwiLG4pLnJlbW92ZURhdGEoXCJtYXJnaW4tcmlnaHRcIil9KTt2YXIgbj1wKGRvY3VtZW50LmJvZHkpLmRhdGEoXCJwYWRkaW5nLXJpZ2h0XCIpO3AoZG9jdW1lbnQuYm9keSkucmVtb3ZlRGF0YShcInBhZGRpbmctcmlnaHRcIiksZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9bnx8XCJcIn0sZS5fZ2V0U2Nyb2xsYmFyV2lkdGg9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuY2xhc3NOYW1lPXV0LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC1lLmNsaWVudFdpZHRoO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpLHR9LHIuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihuLGkpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMpLmRhdGEoaXQpLHQ9bCh7fSxzdCx7fSxwKHRoaXMpLmRhdGEoKSx7fSxcIm9iamVjdFwiPT09YWkobikmJm4/bjp7fSk7aWYoZXx8KGU9bmV3IHIodGhpcyx0KSxwKHRoaXMpLmRhdGEoaXQsZSkpLFwic3RyaW5nXCI9PXR5cGVvZiBuKXtpZih2b2lkIDA9PT1lW25dKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCBcIicrbisnXCInKTtlW25dKGkpfWVsc2UgdC5zaG93JiZlLnNob3coaSl9KX0scyhyLG51bGwsW3trZXk6XCJWRVJTSU9OXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCI0LjQuMVwifX0se2tleTpcIkRlZmF1bHRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc3R9fV0pLHJ9KCk7cChkb2N1bWVudCkub24obHQuQ0xJQ0tfREFUQV9BUEkseXQsZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLGk9Zy5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpO2kmJih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaSkpO3ZhciByPXAodCkuZGF0YShpdCk/XCJ0b2dnbGVcIjpsKHt9LHAodCkuZGF0YSgpLHt9LHAodGhpcykuZGF0YSgpKTtcIkFcIiE9PXRoaXMudGFnTmFtZSYmXCJBUkVBXCIhPT10aGlzLnRhZ05hbWV8fGUucHJldmVudERlZmF1bHQoKTt2YXIgbz1wKHQpLm9uZShsdC5TSE9XLGZ1bmN0aW9uKGUpe2UuaXNEZWZhdWx0UHJldmVudGVkKCl8fG8ub25lKGx0LkhJRERFTixmdW5jdGlvbigpe3AobikuaXMoXCI6dmlzaWJsZVwiKSYmbi5mb2N1cygpfSl9KTtFdC5falF1ZXJ5SW50ZXJmYWNlLmNhbGwocCh0KSxyLHRoaXMpfSkscC5mbltudF09RXQuX2pRdWVyeUludGVyZmFjZSxwLmZuW250XS5Db25zdHJ1Y3Rvcj1FdCxwLmZuW250XS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHAuZm5bbnRdPW90LEV0Ll9qUXVlcnlJbnRlcmZhY2V9O3ZhciB4dD1bXCJiYWNrZ3JvdW5kXCIsXCJjaXRlXCIsXCJocmVmXCIsXCJpdGVtdHlwZVwiLFwibG9uZ2Rlc2NcIixcInBvc3RlclwiLFwic3JjXCIsXCJ4bGluazpocmVmXCJdLEN0PXtcIipcIjpbXCJjbGFzc1wiLFwiZGlyXCIsXCJpZFwiLFwibGFuZ1wiLFwicm9sZVwiLC9eYXJpYS1bXFx3LV0qJC9pXSxhOltcInRhcmdldFwiLFwiaHJlZlwiLFwidGl0bGVcIixcInJlbFwiXSxhcmVhOltdLGI6W10sYnI6W10sY29sOltdLGNvZGU6W10sZGl2OltdLGVtOltdLGhyOltdLGgxOltdLGgyOltdLGgzOltdLGg0OltdLGg1OltdLGg2OltdLGk6W10saW1nOltcInNyY1wiLFwiYWx0XCIsXCJ0aXRsZVwiLFwid2lkdGhcIixcImhlaWdodFwiXSxsaTpbXSxvbDpbXSxwOltdLHByZTpbXSxzOltdLHNtYWxsOltdLHNwYW46W10sc3ViOltdLHN1cDpbXSxzdHJvbmc6W10sdTpbXSx1bDpbXX0sVHQ9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8ZmlsZSk6fFteJjovPyNdKig/OlsvPyNdfCQpKS9naSxBdD0vXmRhdGE6KD86aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnApfHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXFwvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbYS16MC05Ky9dKz0qJC9pO2Z1bmN0aW9uIFN0KGUsbyx0KXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7aWYodCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gdChlKTtmb3IodmFyIG49KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSxcInRleHQvaHRtbFwiKSxzPU9iamVjdC5rZXlzKG8pLGE9W10uc2xpY2UuY2FsbChuLmJvZHkucXVlcnlTZWxlY3RvckFsbChcIipcIikpLGk9ZnVuY3Rpb24oZSl7dmFyIHQ9YVtlXSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigtMT09PXMuaW5kZXhPZih0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXJldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksXCJjb250aW51ZVwiO3ZhciBpPVtdLnNsaWNlLmNhbGwodC5hdHRyaWJ1dGVzKSxyPVtdLmNvbmNhdChvW1wiKlwiXXx8W10sb1tuXXx8W10pO2kuZm9yRWFjaChmdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoLTEhPT10LmluZGV4T2YobikpcmV0dXJuLTE9PT14dC5pbmRleE9mKG4pfHxCb29sZWFuKGUubm9kZVZhbHVlLm1hdGNoKFR0KXx8ZS5ub2RlVmFsdWUubWF0Y2goQXQpKTtmb3IodmFyIGk9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWdFeHB9KSxyPTAsbz1pLmxlbmd0aDtyPG87cisrKWlmKG4ubWF0Y2goaVtyXSkpcmV0dXJuIDF9KGUscikmJnQucmVtb3ZlQXR0cmlidXRlKGUubm9kZU5hbWUpfSl9LHI9MCxsPWEubGVuZ3RoO3I8bDtyKyspaShyKTtyZXR1cm4gbi5ib2R5LmlubmVySFRNTH12YXIgRHQ9XCJ0b29sdGlwXCIsT3Q9XCJicy50b29sdGlwXCIsa3Q9XCIuXCIrT3QsSXQ9cC5mbltEdF0sanQ9XCJicy10b29sdGlwXCIsTnQ9bmV3IFJlZ0V4cChcIihefFxcXFxzKVwiK2p0K1wiXFxcXFMrXCIsXCJnXCIpLEx0PVtcInNhbml0aXplXCIsXCJ3aGl0ZUxpc3RcIixcInNhbml0aXplRm5cIl0sUHQ9e2FuaW1hdGlvbjpcImJvb2xlYW5cIix0ZW1wbGF0ZTpcInN0cmluZ1wiLHRpdGxlOlwiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKVwiLHRyaWdnZXI6XCJzdHJpbmdcIixkZWxheTpcIihudW1iZXJ8b2JqZWN0KVwiLGh0bWw6XCJib29sZWFuXCIsc2VsZWN0b3I6XCIoc3RyaW5nfGJvb2xlYW4pXCIscGxhY2VtZW50OlwiKHN0cmluZ3xmdW5jdGlvbilcIixvZmZzZXQ6XCIobnVtYmVyfHN0cmluZ3xmdW5jdGlvbilcIixjb250YWluZXI6XCIoc3RyaW5nfGVsZW1lbnR8Ym9vbGVhbilcIixmYWxsYmFja1BsYWNlbWVudDpcIihzdHJpbmd8YXJyYXkpXCIsYm91bmRhcnk6XCIoc3RyaW5nfGVsZW1lbnQpXCIsc2FuaXRpemU6XCJib29sZWFuXCIsc2FuaXRpemVGbjpcIihudWxsfGZ1bmN0aW9uKVwiLHdoaXRlTGlzdDpcIm9iamVjdFwiLHBvcHBlckNvbmZpZzpcIihudWxsfG9iamVjdClcIn0sJHQ9e0FVVE86XCJhdXRvXCIsVE9QOlwidG9wXCIsUklHSFQ6XCJyaWdodFwiLEJPVFRPTTpcImJvdHRvbVwiLExFRlQ6XCJsZWZ0XCJ9LE10PXthbmltYXRpb246ITAsdGVtcGxhdGU6JzxkaXYgY2xhc3M9XCJ0b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwiYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjpcImhvdmVyIGZvY3VzXCIsdGl0bGU6XCJcIixkZWxheTowLGh0bWw6ITEsc2VsZWN0b3I6ITEscGxhY2VtZW50OlwidG9wXCIsb2Zmc2V0OjAsY29udGFpbmVyOiExLGZhbGxiYWNrUGxhY2VtZW50OlwiZmxpcFwiLGJvdW5kYXJ5Olwic2Nyb2xsUGFyZW50XCIsc2FuaXRpemU6ITAsc2FuaXRpemVGbjpudWxsLHdoaXRlTGlzdDpDdCxwb3BwZXJDb25maWc6bnVsbH0scXQ9XCJzaG93XCIsSHQ9XCJvdXRcIixSdD17SElERTpcImhpZGVcIitrdCxISURERU46XCJoaWRkZW5cIitrdCxTSE9XOlwic2hvd1wiK2t0LFNIT1dOOlwic2hvd25cIitrdCxJTlNFUlRFRDpcImluc2VydGVkXCIra3QsQ0xJQ0s6XCJjbGlja1wiK2t0LEZPQ1VTSU46XCJmb2N1c2luXCIra3QsRk9DVVNPVVQ6XCJmb2N1c291dFwiK2t0LE1PVVNFRU5URVI6XCJtb3VzZWVudGVyXCIra3QsTU9VU0VMRUFWRTpcIm1vdXNlbGVhdmVcIitrdH0sV3Q9XCJmYWRlXCIsQnQ9XCJzaG93XCIsRnQ9XCIudG9vbHRpcC1pbm5lclwiLFV0PVwiLmFycm93XCIsUXQ9XCJob3ZlclwiLHp0PVwiZm9jdXNcIixLdD1cImNsaWNrXCIsWXQ9XCJtYW51YWxcIixWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGkoZSx0KXtpZih2b2lkIDA9PT1mKXRocm93IG5ldyBUeXBlRXJyb3IoXCJCb290c3RyYXAncyB0b29sdGlwcyByZXF1aXJlIFBvcHBlci5qcyAoaHR0cHM6Ly9wb3BwZXIuanMub3JnLylcIik7dGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9ob3ZlclN0YXRlPVwiXCIsdGhpcy5fYWN0aXZlVHJpZ2dlcj17fSx0aGlzLl9wb3BwZXI9bnVsbCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLmNvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy50aXA9bnVsbCx0aGlzLl9zZXRMaXN0ZW5lcnMoKX12YXIgZT1pLnByb3RvdHlwZTtyZXR1cm4gZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLl9pc0VuYWJsZWQ9ITB9LGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuX2lzRW5hYmxlZD0hMX0sZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5faXNFbmFibGVkPSF0aGlzLl9pc0VuYWJsZWR9LGUudG9nZ2xlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2lzRW5hYmxlZClpZihlKXt2YXIgdD10aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLG49cChlLmN1cnJlbnRUYXJnZXQpLmRhdGEodCk7bnx8KG49bmV3IHRoaXMuY29uc3RydWN0b3IoZS5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLHAoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKHQsbikpLG4uX2FjdGl2ZVRyaWdnZXIuY2xpY2s9IW4uX2FjdGl2ZVRyaWdnZXIuY2xpY2ssbi5faXNXaXRoQWN0aXZlVHJpZ2dlcigpP24uX2VudGVyKG51bGwsbik6bi5fbGVhdmUobnVsbCxuKX1lbHNle2lmKHAodGhpcy5nZXRUaXBFbGVtZW50KCkpLmhhc0NsYXNzKEJ0KSlyZXR1cm4gdm9pZCB0aGlzLl9sZWF2ZShudWxsLHRoaXMpO3RoaXMuX2VudGVyKG51bGwsdGhpcyl9fSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCkscC5yZW1vdmVEYXRhKHRoaXMuZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSxwKHRoaXMuZWxlbWVudCkub2ZmKHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKSxwKHRoaXMuZWxlbWVudCkuY2xvc2VzdChcIi5tb2RhbFwiKS5vZmYoXCJoaWRlLmJzLm1vZGFsXCIsdGhpcy5faGlkZU1vZGFsSGFuZGxlciksdGhpcy50aXAmJnAodGhpcy50aXApLnJlbW92ZSgpLHRoaXMuX2lzRW5hYmxlZD1udWxsLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9ob3ZlclN0YXRlPW51bGwsdGhpcy5fYWN0aXZlVHJpZ2dlcj1udWxsLHRoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSx0aGlzLl9wb3BwZXI9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCx0aGlzLmNvbmZpZz1udWxsLHRoaXMudGlwPW51bGx9LGUuc2hvdz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoXCJub25lXCI9PT1wKHRoaXMuZWxlbWVudCkuY3NzKFwiZGlzcGxheVwiKSl0aHJvdyBuZXcgRXJyb3IoXCJQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50c1wiKTt2YXIgZT1wLkV2ZW50KHRoaXMuY29uc3RydWN0b3IuRXZlbnQuU0hPVyk7aWYodGhpcy5pc1dpdGhDb250ZW50KCkmJnRoaXMuX2lzRW5hYmxlZCl7cCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIoZSk7dmFyIG49Zy5maW5kU2hhZG93Um9vdCh0aGlzLmVsZW1lbnQpLGk9cC5jb250YWlucyhudWxsIT09bj9uOnRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLmVsZW1lbnQpO2lmKGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fCFpKXJldHVybjt2YXIgcj10aGlzLmdldFRpcEVsZW1lbnQoKSxvPWcuZ2V0VUlEKHRoaXMuY29uc3RydWN0b3IuTkFNRSk7ci5zZXRBdHRyaWJ1dGUoXCJpZFwiLG8pLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIsbyksdGhpcy5zZXRDb250ZW50KCksdGhpcy5jb25maWcuYW5pbWF0aW9uJiZwKHIpLmFkZENsYXNzKFd0KTt2YXIgcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmNvbmZpZy5wbGFjZW1lbnQ/dGhpcy5jb25maWcucGxhY2VtZW50LmNhbGwodGhpcyxyLHRoaXMuZWxlbWVudCk6dGhpcy5jb25maWcucGxhY2VtZW50LGE9dGhpcy5fZ2V0QXR0YWNobWVudChzKTt0aGlzLmFkZEF0dGFjaG1lbnRDbGFzcyhhKTt2YXIgbD10aGlzLl9nZXRDb250YWluZXIoKTtwKHIpLmRhdGEodGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSx0aGlzKSxwLmNvbnRhaW5zKHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLnRpcCl8fHAocikuYXBwZW5kVG8obCkscCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIodGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5JTlNFUlRFRCksdGhpcy5fcG9wcGVyPW5ldyBmKHRoaXMuZWxlbWVudCxyLHRoaXMuX2dldFBvcHBlckNvbmZpZyhhKSkscChyKS5hZGRDbGFzcyhCdCksXCJvbnRvdWNoc3RhcnRcImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmcChkb2N1bWVudC5ib2R5KS5jaGlsZHJlbigpLm9uKFwibW91c2VvdmVyXCIsbnVsbCxwLm5vb3ApO3ZhciBjLHU9ZnVuY3Rpb24oKXt0LmNvbmZpZy5hbmltYXRpb24mJnQuX2ZpeFRyYW5zaXRpb24oKTt2YXIgZT10Ll9ob3ZlclN0YXRlO3QuX2hvdmVyU3RhdGU9bnVsbCxwKHQuZWxlbWVudCkudHJpZ2dlcih0LmNvbnN0cnVjdG9yLkV2ZW50LlNIT1dOKSxlPT09SHQmJnQuX2xlYXZlKG51bGwsdCl9O3AodGhpcy50aXApLmhhc0NsYXNzKFd0KT8oYz1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMudGlwKSxwKHRoaXMudGlwKS5vbmUoZy5UUkFOU0lUSU9OX0VORCx1KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjKSk6dSgpfX0sZS5oaWRlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtpLl9ob3ZlclN0YXRlIT09cXQmJnIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpLGkuX2NsZWFuVGlwQ2xhc3MoKSxpLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiKSxwKGkuZWxlbWVudCkudHJpZ2dlcihpLmNvbnN0cnVjdG9yLkV2ZW50LkhJRERFTiksbnVsbCE9PWkuX3BvcHBlciYmaS5fcG9wcGVyLmRlc3Ryb3koKSxlJiZlKCl9dmFyIG4saT10aGlzLHI9dGhpcy5nZXRUaXBFbGVtZW50KCksbz1wLkV2ZW50KHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElERSk7cCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIobyksby5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHAocikucmVtb3ZlQ2xhc3MoQnQpLFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJnAoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oKS5vZmYoXCJtb3VzZW92ZXJcIixudWxsLHAubm9vcCksdGhpcy5fYWN0aXZlVHJpZ2dlcltLdF09ITEsdGhpcy5fYWN0aXZlVHJpZ2dlclt6dF09ITEsdGhpcy5fYWN0aXZlVHJpZ2dlcltRdF09ITEscCh0aGlzLnRpcCkuaGFzQ2xhc3MoV3QpPyhuPWcuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQocikscChyKS5vbmUoZy5UUkFOU0lUSU9OX0VORCx0KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChuKSk6dCgpLHRoaXMuX2hvdmVyU3RhdGU9XCJcIil9LGUudXBkYXRlPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLnNjaGVkdWxlVXBkYXRlKCl9LGUuaXNXaXRoQ29udGVudD1mdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuZ2V0VGl0bGUoKSl9LGUuYWRkQXR0YWNobWVudENsYXNzPWZ1bmN0aW9uKGUpe3AodGhpcy5nZXRUaXBFbGVtZW50KCkpLmFkZENsYXNzKGp0K1wiLVwiK2UpfSxlLmdldFRpcEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aXA9dGhpcy50aXB8fHAodGhpcy5jb25maWcudGVtcGxhdGUpWzBdLHRoaXMudGlwfSxlLnNldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFRpcEVsZW1lbnQoKTt0aGlzLnNldEVsZW1lbnRDb250ZW50KHAoZS5xdWVyeVNlbGVjdG9yQWxsKEZ0KSksdGhpcy5nZXRUaXRsZSgpKSxwKGUpLnJlbW92ZUNsYXNzKFd0K1wiIFwiK0J0KX0sZS5zZXRFbGVtZW50Q29udGVudD1mdW5jdGlvbihlLHQpe1wib2JqZWN0XCIhPT1haSh0KXx8IXQubm9kZVR5cGUmJiF0LmpxdWVyeT90aGlzLmNvbmZpZy5odG1sPyh0aGlzLmNvbmZpZy5zYW5pdGl6ZSYmKHQ9U3QodCx0aGlzLmNvbmZpZy53aGl0ZUxpc3QsdGhpcy5jb25maWcuc2FuaXRpemVGbikpLGUuaHRtbCh0KSk6ZS50ZXh0KHQpOnRoaXMuY29uZmlnLmh0bWw/cCh0KS5wYXJlbnQoKS5pcyhlKXx8ZS5lbXB0eSgpLmFwcGVuZCh0KTplLnRleHQocCh0KS50ZXh0KCkpfSxlLmdldFRpdGxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLW9yaWdpbmFsLXRpdGxlXCIpfHwoXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5jb25maWcudGl0bGU/dGhpcy5jb25maWcudGl0bGUuY2FsbCh0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnRpdGxlKX0sZS5fZ2V0UG9wcGVyQ29uZmlnPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGwoe30se3BsYWNlbWVudDplLG1vZGlmaWVyczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpLGZsaXA6e2JlaGF2aW9yOnRoaXMuY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50fSxhcnJvdzp7ZWxlbWVudDpVdH0scHJldmVudE92ZXJmbG93Ontib3VuZGFyaWVzRWxlbWVudDp0aGlzLmNvbmZpZy5ib3VuZGFyeX19LG9uQ3JlYXRlOmZ1bmN0aW9uKGUpe2Uub3JpZ2luYWxQbGFjZW1lbnQhPT1lLnBsYWNlbWVudCYmdC5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKGUpfSxvblVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKGUpfX0se30sdGhpcy5jb25maWcucG9wcGVyQ29uZmlnKX0sZS5fZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXt9O3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuY29uZmlnLm9mZnNldD9lLmZuPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldHM9bCh7fSxlLm9mZnNldHMse30sdC5jb25maWcub2Zmc2V0KGUub2Zmc2V0cyx0LmVsZW1lbnQpfHx7fSksZX06ZS5vZmZzZXQ9dGhpcy5jb25maWcub2Zmc2V0LGV9LGUuX2dldENvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5jb25maWcuY29udGFpbmVyP2RvY3VtZW50LmJvZHk6Zy5pc0VsZW1lbnQodGhpcy5jb25maWcuY29udGFpbmVyKT9wKHRoaXMuY29uZmlnLmNvbnRhaW5lcik6cChkb2N1bWVudCkuZmluZCh0aGlzLmNvbmZpZy5jb250YWluZXIpfSxlLl9nZXRBdHRhY2htZW50PWZ1bmN0aW9uKGUpe3JldHVybiAkdFtlLnRvVXBwZXJDYXNlKCldfSxlLl9zZXRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgaT10aGlzO3RoaXMuY29uZmlnLnRyaWdnZXIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQsbjtcImNsaWNrXCI9PT1lP3AoaS5lbGVtZW50KS5vbihpLmNvbnN0cnVjdG9yLkV2ZW50LkNMSUNLLGkuY29uZmlnLnNlbGVjdG9yLGZ1bmN0aW9uKGUpe3JldHVybiBpLnRvZ2dsZShlKX0pOmUhPT1ZdCYmKHQ9ZT09PVF0P2kuY29uc3RydWN0b3IuRXZlbnQuTU9VU0VFTlRFUjppLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTSU4sbj1lPT09UXQ/aS5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUxFQVZFOmkuY29uc3RydWN0b3IuRXZlbnQuRk9DVVNPVVQscChpLmVsZW1lbnQpLm9uKHQsaS5jb25maWcuc2VsZWN0b3IsZnVuY3Rpb24oZSl7cmV0dXJuIGkuX2VudGVyKGUpfSkub24obixpLmNvbmZpZy5zZWxlY3RvcixmdW5jdGlvbihlKXtyZXR1cm4gaS5fbGVhdmUoZSl9KSl9KSx0aGlzLl9oaWRlTW9kYWxIYW5kbGVyPWZ1bmN0aW9uKCl7aS5lbGVtZW50JiZpLmhpZGUoKX0scCh0aGlzLmVsZW1lbnQpLmNsb3Nlc3QoXCIubW9kYWxcIikub24oXCJoaWRlLmJzLm1vZGFsXCIsdGhpcy5faGlkZU1vZGFsSGFuZGxlciksdGhpcy5jb25maWcuc2VsZWN0b3I/dGhpcy5jb25maWc9bCh7fSx0aGlzLmNvbmZpZyx7dHJpZ2dlcjpcIm1hbnVhbFwiLHNlbGVjdG9yOlwiXCJ9KTp0aGlzLl9maXhUaXRsZSgpfSxlLl9maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBlPWFpKHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLW9yaWdpbmFsLXRpdGxlXCIpKTshdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShcInRpdGxlXCIpJiZcInN0cmluZ1wiPT09ZXx8KHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLW9yaWdpbmFsLXRpdGxlXCIsdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShcInRpdGxlXCIpfHxcIlwiKSx0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKFwidGl0bGVcIixcIlwiKSl9LGUuX2VudGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWTsodD10fHxwKGUuY3VycmVudFRhcmdldCkuZGF0YShuKSl8fCh0PW5ldyB0aGlzLmNvbnN0cnVjdG9yKGUuY3VycmVudFRhcmdldCx0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKSxwKGUuY3VycmVudFRhcmdldCkuZGF0YShuLHQpKSxlJiYodC5fYWN0aXZlVHJpZ2dlcltcImZvY3VzaW5cIj09PWUudHlwZT96dDpRdF09ITApLHAodC5nZXRUaXBFbGVtZW50KCkpLmhhc0NsYXNzKEJ0KXx8dC5faG92ZXJTdGF0ZT09PXF0P3QuX2hvdmVyU3RhdGU9cXQ6KGNsZWFyVGltZW91dCh0Ll90aW1lb3V0KSx0Ll9ob3ZlclN0YXRlPXF0LHQuY29uZmlnLmRlbGF5JiZ0LmNvbmZpZy5kZWxheS5zaG93P3QuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3QuX2hvdmVyU3RhdGU9PT1xdCYmdC5zaG93KCl9LHQuY29uZmlnLmRlbGF5LnNob3cpOnQuc2hvdygpKX0sZS5fbGVhdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZOyh0PXR8fHAoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKG4pKXx8KHQ9bmV3IHRoaXMuY29uc3RydWN0b3IoZS5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLHAoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKG4sdCkpLGUmJih0Ll9hY3RpdmVUcmlnZ2VyW1wiZm9jdXNvdXRcIj09PWUudHlwZT96dDpRdF09ITEpLHQuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKXx8KGNsZWFyVGltZW91dCh0Ll90aW1lb3V0KSx0Ll9ob3ZlclN0YXRlPUh0LHQuY29uZmlnLmRlbGF5JiZ0LmNvbmZpZy5kZWxheS5oaWRlP3QuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3QuX2hvdmVyU3RhdGU9PT1IdCYmdC5oaWRlKCl9LHQuY29uZmlnLmRlbGF5LmhpZGUpOnQuaGlkZSgpKX0sZS5faXNXaXRoQWN0aXZlVHJpZ2dlcj1mdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLl9hY3RpdmVUcmlnZ2VyKWlmKHRoaXMuX2FjdGl2ZVRyaWdnZXJbZV0pcmV0dXJuITA7cmV0dXJuITF9LGUuX2dldENvbmZpZz1mdW5jdGlvbihlKXt2YXIgdD1wKHRoaXMuZWxlbWVudCkuZGF0YSgpO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUpey0xIT09THQuaW5kZXhPZihlKSYmZGVsZXRlIHRbZV19KSxcIm51bWJlclwiPT10eXBlb2YoZT1sKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCx7fSx0LHt9LFwib2JqZWN0XCI9PT1haShlKSYmZT9lOnt9KSkuZGVsYXkmJihlLmRlbGF5PXtzaG93OmUuZGVsYXksaGlkZTplLmRlbGF5fSksXCJudW1iZXJcIj09dHlwZW9mIGUudGl0bGUmJihlLnRpdGxlPWUudGl0bGUudG9TdHJpbmcoKSksXCJudW1iZXJcIj09dHlwZW9mIGUuY29udGVudCYmKGUuY29udGVudD1lLmNvbnRlbnQudG9TdHJpbmcoKSksZy50eXBlQ2hlY2tDb25maWcoRHQsZSx0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSxlLnNhbml0aXplJiYoZS50ZW1wbGF0ZT1TdChlLnRlbXBsYXRlLGUud2hpdGVMaXN0LGUuc2FuaXRpemVGbikpLGV9LGUuX2dldERlbGVnYXRlQ29uZmlnPWZ1bmN0aW9uKCl7dmFyIGU9e307aWYodGhpcy5jb25maWcpZm9yKHZhciB0IGluIHRoaXMuY29uZmlnKXRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFt0XSE9PXRoaXMuY29uZmlnW3RdJiYoZVt0XT10aGlzLmNvbmZpZ1t0XSk7cmV0dXJuIGV9LGUuX2NsZWFuVGlwQ2xhc3M9ZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMuZ2V0VGlwRWxlbWVudCgpKSx0PWUuYXR0cihcImNsYXNzXCIpLm1hdGNoKE50KTtudWxsIT09dCYmdC5sZW5ndGgmJmUucmVtb3ZlQ2xhc3ModC5qb2luKFwiXCIpKX0sZS5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5zdGFuY2U7dGhpcy50aXA9dC5wb3BwZXIsdGhpcy5fY2xlYW5UaXBDbGFzcygpLHRoaXMuYWRkQXR0YWNobWVudENsYXNzKHRoaXMuX2dldEF0dGFjaG1lbnQoZS5wbGFjZW1lbnQpKX0sZS5fZml4VHJhbnNpdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0VGlwRWxlbWVudCgpLHQ9dGhpcy5jb25maWcuYW5pbWF0aW9uO251bGw9PT1lLmdldEF0dHJpYnV0ZShcIngtcGxhY2VtZW50XCIpJiYocChlKS5yZW1vdmVDbGFzcyhXdCksdGhpcy5jb25maWcuYW5pbWF0aW9uPSExLHRoaXMuaGlkZSgpLHRoaXMuc2hvdygpLHRoaXMuY29uZmlnLmFuaW1hdGlvbj10KX0saS5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMpLmRhdGEoT3QpLHQ9XCJvYmplY3RcIj09PWFpKG4pJiZuO2lmKChlfHwhL2Rpc3Bvc2V8aGlkZS8udGVzdChuKSkmJihlfHwoZT1uZXcgaSh0aGlzLHQpLHAodGhpcykuZGF0YShPdCxlKSksXCJzdHJpbmdcIj09dHlwZW9mIG4pKXtpZih2b2lkIDA9PT1lW25dKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCBcIicrbisnXCInKTtlW25dKCl9fSl9LHMoaSxudWxsLFt7a2V5OlwiVkVSU0lPTlwiLGdldDpmdW5jdGlvbigpe3JldHVyblwiNC40LjFcIn19LHtrZXk6XCJEZWZhdWx0XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE10fX0se2tleTpcIk5BTUVcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRHR9fSx7a2V5OlwiREFUQV9LRVlcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT3R9fSx7a2V5OlwiRXZlbnRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUnR9fSx7a2V5OlwiRVZFTlRfS0VZXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGt0fX0se2tleTpcIkRlZmF1bHRUeXBlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFB0fX1dKSxpfSgpO3AuZm5bRHRdPVZ0Ll9qUXVlcnlJbnRlcmZhY2UscC5mbltEdF0uQ29uc3RydWN0b3I9VnQscC5mbltEdF0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBwLmZuW0R0XT1JdCxWdC5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgR3Q9XCJwb3BvdmVyXCIsWHQ9XCJicy5wb3BvdmVyXCIsSnQ9XCIuXCIrWHQsWnQ9cC5mbltHdF0sZW49XCJicy1wb3BvdmVyXCIsdG49bmV3IFJlZ0V4cChcIihefFxcXFxzKVwiK2VuK1wiXFxcXFMrXCIsXCJnXCIpLG5uPWwoe30sVnQuRGVmYXVsdCx7cGxhY2VtZW50OlwicmlnaHRcIix0cmlnZ2VyOlwiY2xpY2tcIixjb250ZW50OlwiXCIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9XCJwb3BvdmVyXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwiYXJyb3dcIj48L2Rpdj48aDMgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPjwvaDM+PGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjwvZGl2PjwvZGl2Pid9KSxybj1sKHt9LFZ0LkRlZmF1bHRUeXBlLHtjb250ZW50OlwiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKVwifSksb249XCJmYWRlXCIsc249XCJzaG93XCIsYW49XCIucG9wb3Zlci1oZWFkZXJcIixsbj1cIi5wb3BvdmVyLWJvZHlcIixjbj17SElERTpcImhpZGVcIitKdCxISURERU46XCJoaWRkZW5cIitKdCxTSE9XOlwic2hvd1wiK0p0LFNIT1dOOlwic2hvd25cIitKdCxJTlNFUlRFRDpcImluc2VydGVkXCIrSnQsQ0xJQ0s6XCJjbGlja1wiK0p0LEZPQ1VTSU46XCJmb2N1c2luXCIrSnQsRk9DVVNPVVQ6XCJmb2N1c291dFwiK0p0LE1PVVNFRU5URVI6XCJtb3VzZWVudGVyXCIrSnQsTU9VU0VMRUFWRTpcIm1vdXNlbGVhdmVcIitKdH0sdW49ZnVuY3Rpb24oZSl7dmFyIHQsbjtmdW5jdGlvbiBpKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfW49ZSwodD1pKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksKHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQpLl9fcHJvdG9fXz1uO3ZhciByPWkucHJvdG90eXBlO3JldHVybiByLmlzV2l0aENvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLl9nZXRDb250ZW50KCl9LHIuYWRkQXR0YWNobWVudENsYXNzPWZ1bmN0aW9uKGUpe3AodGhpcy5nZXRUaXBFbGVtZW50KCkpLmFkZENsYXNzKGVuK1wiLVwiK2UpfSxyLmdldFRpcEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aXA9dGhpcy50aXB8fHAodGhpcy5jb25maWcudGVtcGxhdGUpWzBdLHRoaXMudGlwfSxyLnNldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMuZ2V0VGlwRWxlbWVudCgpKTt0aGlzLnNldEVsZW1lbnRDb250ZW50KGUuZmluZChhbiksdGhpcy5nZXRUaXRsZSgpKTt2YXIgdD10aGlzLl9nZXRDb250ZW50KCk7XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9dC5jYWxsKHRoaXMuZWxlbWVudCkpLHRoaXMuc2V0RWxlbWVudENvbnRlbnQoZS5maW5kKGxuKSx0KSxlLnJlbW92ZUNsYXNzKG9uK1wiIFwiK3NuKX0sci5fZ2V0Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1jb250ZW50XCIpfHx0aGlzLmNvbmZpZy5jb250ZW50fSxyLl9jbGVhblRpcENsYXNzPWZ1bmN0aW9uKCl7dmFyIGU9cCh0aGlzLmdldFRpcEVsZW1lbnQoKSksdD1lLmF0dHIoXCJjbGFzc1wiKS5tYXRjaCh0bik7bnVsbCE9PXQmJjA8dC5sZW5ndGgmJmUucmVtb3ZlQ2xhc3ModC5qb2luKFwiXCIpKX0saS5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1wKHRoaXMpLmRhdGEoWHQpLHQ9XCJvYmplY3RcIj09PWFpKG4pP246bnVsbDtpZigoZXx8IS9kaXNwb3NlfGhpZGUvLnRlc3QobikpJiYoZXx8KGU9bmV3IGkodGhpcyx0KSxwKHRoaXMpLmRhdGEoWHQsZSkpLFwic3RyaW5nXCI9PXR5cGVvZiBuKSl7aWYodm9pZCAwPT09ZVtuXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgXCInK24rJ1wiJyk7ZVtuXSgpfX0pfSxzKGksbnVsbCxbe2tleTpcIlZFUlNJT05cIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIjQuNC4xXCJ9fSx7a2V5OlwiRGVmYXVsdFwiLGdldDpmdW5jdGlvbigpe3JldHVybiBubn19LHtrZXk6XCJOQU1FXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEd0fX0se2tleTpcIkRBVEFfS0VZXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFh0fX0se2tleTpcIkV2ZW50XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNufX0se2tleTpcIkVWRU5UX0tFWVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBKdH19LHtrZXk6XCJEZWZhdWx0VHlwZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiBybn19XSksaX0oVnQpO3AuZm5bR3RdPXVuLl9qUXVlcnlJbnRlcmZhY2UscC5mbltHdF0uQ29uc3RydWN0b3I9dW4scC5mbltHdF0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBwLmZuW0d0XT1adCx1bi5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgZm49XCJzY3JvbGxzcHlcIixkbj1cImJzLnNjcm9sbHNweVwiLGhuPVwiLlwiK2RuLHBuPXAuZm5bZm5dLGduPXtvZmZzZXQ6MTAsbWV0aG9kOlwiYXV0b1wiLHRhcmdldDpcIlwifSxtbj17b2Zmc2V0OlwibnVtYmVyXCIsbWV0aG9kOlwic3RyaW5nXCIsdGFyZ2V0OlwiKHN0cmluZ3xlbGVtZW50KVwifSx2bj17QUNUSVZBVEU6XCJhY3RpdmF0ZVwiK2huLFNDUk9MTDpcInNjcm9sbFwiK2huLExPQURfREFUQV9BUEk6XCJsb2FkXCIraG4rXCIuZGF0YS1hcGlcIn0seW49XCJkcm9wZG93bi1pdGVtXCIsX249XCJhY3RpdmVcIixibj0nW2RhdGEtc3B5PVwic2Nyb2xsXCJdJyx3bj1cIi5uYXYsIC5saXN0LWdyb3VwXCIsRW49XCIubmF2LWxpbmtcIix4bj1cIi5uYXYtaXRlbVwiLENuPVwiLmxpc3QtZ3JvdXAtaXRlbVwiLFRuPVwiLmRyb3Bkb3duXCIsQW49XCIuZHJvcGRvd24taXRlbVwiLFNuPVwiLmRyb3Bkb3duLXRvZ2dsZVwiLERuPVwib2Zmc2V0XCIsT249XCJwb3NpdGlvblwiLGtuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXRoaXM7dGhpcy5fZWxlbWVudD1lLHRoaXMuX3Njcm9sbEVsZW1lbnQ9XCJCT0RZXCI9PT1lLnRhZ05hbWU/d2luZG93OmUsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyh0KSx0aGlzLl9zZWxlY3Rvcj10aGlzLl9jb25maWcudGFyZ2V0K1wiIFwiK0VuK1wiLFwiK3RoaXMuX2NvbmZpZy50YXJnZXQrXCIgXCIrQ24rXCIsXCIrdGhpcy5fY29uZmlnLnRhcmdldCtcIiBcIitBbix0aGlzLl9vZmZzZXRzPVtdLHRoaXMuX3RhcmdldHM9W10sdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5fc2Nyb2xsSGVpZ2h0PTAscCh0aGlzLl9zY3JvbGxFbGVtZW50KS5vbih2bi5TQ1JPTEwsZnVuY3Rpb24oZSl7cmV0dXJuIG4uX3Byb2Nlc3MoZSl9KSx0aGlzLnJlZnJlc2goKSx0aGlzLl9wcm9jZXNzKCl9dmFyIGU9aS5wcm90b3R5cGU7cmV0dXJuIGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9zY3JvbGxFbGVtZW50PT09dGhpcy5fc2Nyb2xsRWxlbWVudC53aW5kb3c/RG46T24scj1cImF1dG9cIj09PXRoaXMuX2NvbmZpZy5tZXRob2Q/ZTp0aGlzLl9jb25maWcubWV0aG9kLG89cj09PU9uP3RoaXMuX2dldFNjcm9sbFRvcCgpOjA7dGhpcy5fb2Zmc2V0cz1bXSx0aGlzLl90YXJnZXRzPVtdLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSxbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5fc2VsZWN0b3IpKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQsbj1nLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZSk7aWYobiYmKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuKSksdCl7dmFyIGk9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihpLndpZHRofHxpLmhlaWdodClyZXR1cm5bcCh0KVtyXSgpLnRvcCtvLG5dfXJldHVybiBudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlWzBdLXRbMF19KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QuX29mZnNldHMucHVzaChlWzBdKSx0Ll90YXJnZXRzLnB1c2goZVsxXSl9KX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7cC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsZG4pLHAodGhpcy5fc2Nyb2xsRWxlbWVudCkub2ZmKGhuKSx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5fc2Nyb2xsRWxlbWVudD1udWxsLHRoaXMuX2NvbmZpZz1udWxsLHRoaXMuX3NlbGVjdG9yPW51bGwsdGhpcy5fb2Zmc2V0cz1udWxsLHRoaXMuX3RhcmdldHM9bnVsbCx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9zY3JvbGxIZWlnaHQ9bnVsbH0sZS5fZ2V0Q29uZmlnPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVyblwic3RyaW5nXCIhPXR5cGVvZihlPWwoe30sZ24se30sXCJvYmplY3RcIj09PWFpKGUpJiZlP2U6e30pKS50YXJnZXQmJigodD1wKGUudGFyZ2V0KS5hdHRyKFwiaWRcIikpfHwodD1nLmdldFVJRChmbikscChlLnRhcmdldCkuYXR0cihcImlkXCIsdCkpLGUudGFyZ2V0PVwiI1wiK3QpLGcudHlwZUNoZWNrQ29uZmlnKGZuLGUsbW4pLGV9LGUuX2dldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3RoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQ6dGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3B9LGUuX2dldFNjcm9sbEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodHx8TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCl9LGUuX2dldE9mZnNldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0sZS5fcHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2dldFNjcm9sbFRvcCgpK3RoaXMuX2NvbmZpZy5vZmZzZXQsdD10aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSxuPXRoaXMuX2NvbmZpZy5vZmZzZXQrdC10aGlzLl9nZXRPZmZzZXRIZWlnaHQoKTtpZih0aGlzLl9zY3JvbGxIZWlnaHQhPT10JiZ0aGlzLnJlZnJlc2goKSxuPD1lKXt2YXIgaT10aGlzLl90YXJnZXRzW3RoaXMuX3RhcmdldHMubGVuZ3RoLTFdO3RoaXMuX2FjdGl2ZVRhcmdldCE9PWkmJnRoaXMuX2FjdGl2YXRlKGkpfWVsc2V7aWYodGhpcy5fYWN0aXZlVGFyZ2V0JiZlPHRoaXMuX29mZnNldHNbMF0mJjA8dGhpcy5fb2Zmc2V0c1swXSlyZXR1cm4gdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdm9pZCB0aGlzLl9jbGVhcigpO2Zvcih2YXIgcj10aGlzLl9vZmZzZXRzLmxlbmd0aDtyLS07KXt0aGlzLl9hY3RpdmVUYXJnZXQhPT10aGlzLl90YXJnZXRzW3JdJiZlPj10aGlzLl9vZmZzZXRzW3JdJiYodm9pZCAwPT09dGhpcy5fb2Zmc2V0c1tyKzFdfHxlPHRoaXMuX29mZnNldHNbcisxXSkmJnRoaXMuX2FjdGl2YXRlKHRoaXMuX3RhcmdldHNbcl0pfX19LGUuX2FjdGl2YXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZVRhcmdldD10LHRoaXMuX2NsZWFyKCk7dmFyIGU9dGhpcy5fc2VsZWN0b3Iuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSsnW2RhdGEtdGFyZ2V0PVwiJyt0KydcIl0sJytlKydbaHJlZj1cIicrdCsnXCJdJ30pLG49cChbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZS5qb2luKFwiLFwiKSkpKTtuLmhhc0NsYXNzKHluKT8obi5jbG9zZXN0KFRuKS5maW5kKFNuKS5hZGRDbGFzcyhfbiksbi5hZGRDbGFzcyhfbikpOihuLmFkZENsYXNzKF9uKSxuLnBhcmVudHMod24pLnByZXYoRW4rXCIsIFwiK0NuKS5hZGRDbGFzcyhfbiksbi5wYXJlbnRzKHduKS5wcmV2KHhuKS5jaGlsZHJlbihFbikuYWRkQ2xhc3MoX24pKSxwKHRoaXMuX3Njcm9sbEVsZW1lbnQpLnRyaWdnZXIodm4uQUNUSVZBVEUse3JlbGF0ZWRUYXJnZXQ6dH0pfSxlLl9jbGVhcj1mdW5jdGlvbigpe1tdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9zZWxlY3RvcikpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc0xpc3QuY29udGFpbnMoX24pfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKF9uKX0pfSxpLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcykuZGF0YShkbiksdD1cIm9iamVjdFwiPT09YWkobikmJm47aWYoZXx8KGU9bmV3IGkodGhpcyx0KSxwKHRoaXMpLmRhdGEoZG4sZSkpLFwic3RyaW5nXCI9PXR5cGVvZiBuKXtpZih2b2lkIDA9PT1lW25dKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCBcIicrbisnXCInKTtlW25dKCl9fSl9LHMoaSxudWxsLFt7a2V5OlwiVkVSU0lPTlwiLGdldDpmdW5jdGlvbigpe3JldHVyblwiNC40LjFcIn19LHtrZXk6XCJEZWZhdWx0XCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGdufX1dKSxpfSgpO3Aod2luZG93KS5vbih2bi5MT0FEX0RBVEFfQVBJLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChibikpLHQ9ZS5sZW5ndGg7dC0tOyl7dmFyIG49cChlW3RdKTtrbi5falF1ZXJ5SW50ZXJmYWNlLmNhbGwobixuLmRhdGEoKSl9fSkscC5mbltmbl09a24uX2pRdWVyeUludGVyZmFjZSxwLmZuW2ZuXS5Db25zdHJ1Y3Rvcj1rbixwLmZuW2ZuXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHAuZm5bZm5dPXBuLGtuLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciBJbj1cImJzLnRhYlwiLGpuPVwiLlwiK0luLE5uPXAuZm4udGFiLExuPXtISURFOlwiaGlkZVwiK2puLEhJRERFTjpcImhpZGRlblwiK2puLFNIT1c6XCJzaG93XCIram4sU0hPV046XCJzaG93blwiK2puLENMSUNLX0RBVEFfQVBJOlwiY2xpY2tcIitqbitcIi5kYXRhLWFwaVwifSxQbj1cImRyb3Bkb3duLW1lbnVcIiwkbj1cImFjdGl2ZVwiLE1uPVwiZGlzYWJsZWRcIixxbj1cImZhZGVcIixIbj1cInNob3dcIixSbj1cIi5kcm9wZG93blwiLFduPVwiLm5hdiwgLmxpc3QtZ3JvdXBcIixCbj1cIi5hY3RpdmVcIixGbj1cIj4gbGkgPiAuYWN0aXZlXCIsVW49J1tkYXRhLXRvZ2dsZT1cInRhYlwiXSwgW2RhdGEtdG9nZ2xlPVwicGlsbFwiXSwgW2RhdGEtdG9nZ2xlPVwibGlzdFwiXScsUW49XCIuZHJvcGRvd24tdG9nZ2xlXCIsem49XCI+IC5kcm9wZG93bi1tZW51IC5hY3RpdmVcIixLbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGkoZSl7dGhpcy5fZWxlbWVudD1lfXZhciBlPWkucHJvdG90eXBlO3JldHVybiBlLnNob3c9ZnVuY3Rpb24oKXt2YXIgZSx0LG4saSxyLG8scyxhLGw9dGhpczt0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKCRuKXx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhNbil8fCh0PXAodGhpcy5fZWxlbWVudCkuY2xvc2VzdChXbilbMF0sbj1nLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCksdCYmKGk9XCJVTFwiPT09dC5ub2RlTmFtZXx8XCJPTFwiPT09dC5ub2RlTmFtZT9GbjpCbixyPShyPXAubWFrZUFycmF5KHAodCkuZmluZChpKSkpW3IubGVuZ3RoLTFdKSxvPXAuRXZlbnQoTG4uSElERSx7cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fSkscz1wLkV2ZW50KExuLlNIT1cse3JlbGF0ZWRUYXJnZXQ6cn0pLHImJnAocikudHJpZ2dlcihvKSxwKHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIocykscy5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8by5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KG4mJihlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobikpLHRoaXMuX2FjdGl2YXRlKHRoaXMuX2VsZW1lbnQsdCksYT1mdW5jdGlvbigpe3ZhciBlPXAuRXZlbnQoTG4uSElEREVOLHtyZWxhdGVkVGFyZ2V0OmwuX2VsZW1lbnR9KSx0PXAuRXZlbnQoTG4uU0hPV04se3JlbGF0ZWRUYXJnZXQ6cn0pO3AocikudHJpZ2dlcihlKSxwKGwuX2VsZW1lbnQpLnRyaWdnZXIodCl9LGU/dGhpcy5fYWN0aXZhdGUoZSxlLnBhcmVudE5vZGUsYSk6YSgpKSl9LGUuZGlzcG9zZT1mdW5jdGlvbigpe3AucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LEluKSx0aGlzLl9lbGVtZW50PW51bGx9LGUuX2FjdGl2YXRlPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG8uX3RyYW5zaXRpb25Db21wbGV0ZShlLHMsbil9dmFyIHIsbz10aGlzLHM9KCF0fHxcIlVMXCIhPT10Lm5vZGVOYW1lJiZcIk9MXCIhPT10Lm5vZGVOYW1lP3AodCkuY2hpbGRyZW4oQm4pOnAodCkuZmluZChGbikpWzBdLGE9biYmcyYmcChzKS5oYXNDbGFzcyhxbik7cyYmYT8ocj1nLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHMpLHAocykucmVtb3ZlQ2xhc3MoSG4pLm9uZShnLlRSQU5TSVRJT05fRU5ELGkpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHIpKTppKCl9LGUuX3RyYW5zaXRpb25Db21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIGkscixvO3QmJihwKHQpLnJlbW92ZUNsYXNzKCRuKSwoaT1wKHQucGFyZW50Tm9kZSkuZmluZCh6bilbMF0pJiZwKGkpLnJlbW92ZUNsYXNzKCRuKSxcInRhYlwiPT09dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpJiZ0LnNldEF0dHJpYnV0ZShcImFyaWEtc2VsZWN0ZWRcIiwhMSkpLHAoZSkuYWRkQ2xhc3MoJG4pLFwidGFiXCI9PT1lLmdldEF0dHJpYnV0ZShcInJvbGVcIikmJmUuc2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiLCEwKSxnLnJlZmxvdyhlKSxlLmNsYXNzTGlzdC5jb250YWlucyhxbikmJmUuY2xhc3NMaXN0LmFkZChIbiksZS5wYXJlbnROb2RlJiZwKGUucGFyZW50Tm9kZSkuaGFzQ2xhc3MoUG4pJiYoKHI9cChlKS5jbG9zZXN0KFJuKVswXSkmJihvPVtdLnNsaWNlLmNhbGwoci5xdWVyeVNlbGVjdG9yQWxsKFFuKSkscChvKS5hZGRDbGFzcygkbikpLGUuc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLCEwKSksbiYmbigpfSxpLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLmRhdGEoSW4pO2lmKHR8fCh0PW5ldyBpKHRoaXMpLGUuZGF0YShJbix0KSksXCJzdHJpbmdcIj09dHlwZW9mIG4pe2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkIFwiJytuKydcIicpO3Rbbl0oKX19KX0scyhpLG51bGwsW3trZXk6XCJWRVJTSU9OXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCI0LjQuMVwifX1dKSxpfSgpO3AoZG9jdW1lbnQpLm9uKExuLkNMSUNLX0RBVEFfQVBJLFVuLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxLbi5falF1ZXJ5SW50ZXJmYWNlLmNhbGwocCh0aGlzKSxcInNob3dcIil9KSxwLmZuLnRhYj1Lbi5falF1ZXJ5SW50ZXJmYWNlLHAuZm4udGFiLkNvbnN0cnVjdG9yPUtuLHAuZm4udGFiLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gcC5mbi50YWI9Tm4sS24uX2pRdWVyeUludGVyZmFjZX07dmFyIFluPVwidG9hc3RcIixWbj1cImJzLnRvYXN0XCIsR249XCIuXCIrVm4sWG49cC5mbltZbl0sSm49e0NMSUNLX0RJU01JU1M6XCJjbGljay5kaXNtaXNzXCIrR24sSElERTpcImhpZGVcIitHbixISURERU46XCJoaWRkZW5cIitHbixTSE9XOlwic2hvd1wiK0duLFNIT1dOOlwic2hvd25cIitHbn0sWm49XCJmYWRlXCIsZWk9XCJoaWRlXCIsdGk9XCJzaG93XCIsbmk9XCJzaG93aW5nXCIsaWk9e2FuaW1hdGlvbjpcImJvb2xlYW5cIixhdXRvaGlkZTpcImJvb2xlYW5cIixkZWxheTpcIm51bWJlclwifSxyaT17YW5pbWF0aW9uOiEwLGF1dG9oaWRlOiEwLGRlbGF5OjUwMH0sb2k9J1tkYXRhLWRpc21pc3M9XCJ0b2FzdFwiXScsc2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7dGhpcy5fZWxlbWVudD1lLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy5fdGltZW91dD1udWxsLHRoaXMuX3NldExpc3RlbmVycygpfXZhciBlPXIucHJvdG90eXBlO3JldHVybiBlLnNob3c9ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcyxpPXAuRXZlbnQoSm4uU0hPVyk7cCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGkpLGkuaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLl9jb25maWcuYW5pbWF0aW9uJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoWm4pLGU9ZnVuY3Rpb24oKXtuLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUobmkpLG4uX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aSkscChuLl9lbGVtZW50KS50cmlnZ2VyKEpuLlNIT1dOKSxuLl9jb25maWcuYXV0b2hpZGUmJihuLl90aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLmhpZGUoKX0sbi5fY29uZmlnLmRlbGF5KSl9LHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShlaSksZy5yZWZsb3codGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKG5pKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uPyh0PWcuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCkscCh0aGlzLl9lbGVtZW50KS5vbmUoZy5UUkFOU0lUSU9OX0VORCxlKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCh0KSk6ZSgpKX0sZS5oaWRlPWZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModGkpJiYoZT1wLkV2ZW50KEpuLkhJREUpLHAodGhpcy5fZWxlbWVudCkudHJpZ2dlcihlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHx0aGlzLl9jbG9zZSgpKX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0aSkmJnRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aSkscCh0aGlzLl9lbGVtZW50KS5vZmYoSm4uQ0xJQ0tfRElTTUlTUykscC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsVm4pLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9jb25maWc9bnVsbH0sZS5fZ2V0Q29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiBlPWwoe30scmkse30scCh0aGlzLl9lbGVtZW50KS5kYXRhKCkse30sXCJvYmplY3RcIj09PWFpKGUpJiZlP2U6e30pLGcudHlwZUNoZWNrQ29uZmlnKFluLGUsdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0VHlwZSksZX0sZS5fc2V0TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztwKHRoaXMuX2VsZW1lbnQpLm9uKEpuLkNMSUNLX0RJU01JU1Msb2ksZnVuY3Rpb24oKXtyZXR1cm4gZS5oaWRlKCl9KX0sZS5fY2xvc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7bi5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGVpKSxwKG4uX2VsZW1lbnQpLnRyaWdnZXIoSm4uSElEREVOKX12YXIgdCxuPXRoaXM7dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRpKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uPyh0PWcuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCkscCh0aGlzLl9lbGVtZW50KS5vbmUoZy5UUkFOU0lUSU9OX0VORCxlKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCh0KSk6ZSgpfSxyLl9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oaSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXAodGhpcyksdD1lLmRhdGEoVm4pLG49XCJvYmplY3RcIj09PWFpKGkpJiZpO2lmKHR8fCh0PW5ldyByKHRoaXMsbiksZS5kYXRhKFZuLHQpKSxcInN0cmluZ1wiPT10eXBlb2YgaSl7aWYodm9pZCAwPT09dFtpXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgXCInK2krJ1wiJyk7dFtpXSh0aGlzKX19KX0scyhyLG51bGwsW3trZXk6XCJWRVJTSU9OXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCI0LjQuMVwifX0se2tleTpcIkRlZmF1bHRUeXBlXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGlpfX0se2tleTpcIkRlZmF1bHRcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcml9fV0pLHJ9KCk7cC5mbltZbl09c2kuX2pRdWVyeUludGVyZmFjZSxwLmZuW1luXS5Db25zdHJ1Y3Rvcj1zaSxwLmZuW1luXS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHAuZm5bWW5dPVhuLHNpLl9qUXVlcnlJbnRlcmZhY2V9LGUuQWxlcnQ9eSxlLkJ1dHRvbj1QLGUuQ2Fyb3VzZWw9ZmUsZS5Db2xsYXBzZT1TZSxlLkRyb3Bkb3duPXR0LGUuTW9kYWw9RXQsZS5Qb3BvdmVyPXVuLGUuU2Nyb2xsc3B5PWtuLGUuVGFiPUtuLGUuVG9hc3Q9c2ksZS5Ub29sdGlwPVZ0LGUuVXRpbD1nLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxcIm9iamVjdFwiPT09YWkodCkmJnZvaWQgMCE9PWU/cyh0LG4oMCksbig0KSk6KHI9W3QsbigwKSxuKDQpXSx2b2lkIDA9PT0obz1cImZ1bmN0aW9uXCI9PXR5cGVvZihpPXMpP2kuYXBwbHkodCxyKTppKXx8KGUuZXhwb3J0cz1vKSl9LGZ1bmN0aW9uKHIsbyxzKXsoZnVuY3Rpb24oaSl7dmFyIGUsdCxuO2Z1bmN0aW9uIFMoZSl7cmV0dXJuKFM9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0pKGUpfXQ9W3MoMCldLHZvaWQgMD09PShuPVwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtpZih0JiZ0LmZuJiZ0LmZuLnNlbGVjdDImJnQuZm4uc2VsZWN0Mi5hbWQpe3ZhciBuPXQuZm4uc2VsZWN0Mi5hbWR9dmFyIG47KGZ1bmN0aW9uKCl7aWYoIW58fCFuLnJlcXVpcmVqcyl7aWYoIW4pe249e319ZWxzZXt0PW59dmFyIGUsdCxvOyhmdW5jdGlvbihwKXt2YXIgcyxhLGcsbSx2PXt9LHk9e30sXz17fSxiPXt9LG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPVtdLnNsaWNlLHc9L1xcLmpzJC87ZnVuY3Rpb24gRShlLHQpe3JldHVybiBuLmNhbGwoZSx0KX1mdW5jdGlvbiBsKGUsdCl7dmFyIG4saSxyLG8scyxhLGwsYyx1LGYsZCxoLHA9dCYmdC5zcGxpdChcIi9cIiksZz1fLm1hcCxtPWcmJmdbXCIqXCJdfHx7fTtpZihlKXtlPWUuc3BsaXQoXCIvXCIpO3M9ZS5sZW5ndGgtMTtpZihfLm5vZGVJZENvbXBhdCYmdy50ZXN0KGVbc10pKXtlW3NdPWVbc10ucmVwbGFjZSh3LFwiXCIpfWlmKGVbMF0uY2hhckF0KDApPT09XCIuXCImJnApe2g9cC5zbGljZSgwLHAubGVuZ3RoLTEpO2U9aC5jb25jYXQoZSl9Zm9yKHU9MDt1PGUubGVuZ3RoO3UrKyl7ZD1lW3VdO2lmKGQ9PT1cIi5cIil7ZS5zcGxpY2UodSwxKTt1LT0xfWVsc2UgaWYoZD09PVwiLi5cIil7aWYodT09PTB8fHU9PT0xJiZlWzJdPT09XCIuLlwifHxlW3UtMV09PT1cIi4uXCIpe2NvbnRpbnVlfWVsc2UgaWYodT4wKXtlLnNwbGljZSh1LTEsMik7dS09Mn19fWU9ZS5qb2luKFwiL1wiKX1pZigocHx8bSkmJmcpe249ZS5zcGxpdChcIi9cIik7Zm9yKHU9bi5sZW5ndGg7dT4wO3UtPTEpe2k9bi5zbGljZSgwLHUpLmpvaW4oXCIvXCIpO2lmKHApe2ZvcihmPXAubGVuZ3RoO2Y+MDtmLT0xKXtyPWdbcC5zbGljZSgwLGYpLmpvaW4oXCIvXCIpXTtpZihyKXtyPXJbaV07aWYocil7bz1yO2E9dTticmVha319fX1pZihvKXticmVha31pZighbCYmbSYmbVtpXSl7bD1tW2ldO2M9dX19aWYoIW8mJmwpe289bDthPWN9aWYobyl7bi5zcGxpY2UoMCxhLG8pO2U9bi5qb2luKFwiL1wiKX19cmV0dXJuIGV9ZnVuY3Rpb24geCh0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWkuY2FsbChhcmd1bWVudHMsMCk7aWYodHlwZW9mIGVbMF0hPT1cInN0cmluZ1wiJiZlLmxlbmd0aD09PTEpe2UucHVzaChudWxsKX1yZXR1cm4gYS5hcHBseShwLGUuY29uY2F0KFt0LG5dKSl9fWZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBsKGUsdCl9fWZ1bmN0aW9uIEModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZbdF09ZX19ZnVuY3Rpb24gVChlKXtpZihFKHksZSkpe3ZhciB0PXlbZV07ZGVsZXRlIHlbZV07YltlXT10cnVlO3MuYXBwbHkocCx0KX1pZighRSh2LGUpJiYhRShiLGUpKXt0aHJvdyBuZXcgRXJyb3IoXCJObyBcIitlKX1yZXR1cm4gdltlXX1mdW5jdGlvbiB1KGUpe3ZhciB0LG49ZT9lLmluZGV4T2YoXCIhXCIpOi0xO2lmKG4+LTEpe3Q9ZS5zdWJzdHJpbmcoMCxuKTtlPWUuc3Vic3RyaW5nKG4rMSxlLmxlbmd0aCl9cmV0dXJuW3QsZV19ZnVuY3Rpb24gQShlKXtyZXR1cm4gZT91KGUpOltdfWc9ZnVuY3Rpb24gZSh0LG4pe3ZhciBpLHI9dSh0KSxvPXJbMF0scz1uWzFdO3Q9clsxXTtpZihvKXtvPWwobyxzKTtpPVQobyl9aWYobyl7aWYoaSYmaS5ub3JtYWxpemUpe3Q9aS5ub3JtYWxpemUodCxjKHMpKX1lbHNle3Q9bCh0LHMpfX1lbHNle3Q9bCh0LHMpO3I9dSh0KTtvPXJbMF07dD1yWzFdO2lmKG8pe2k9VChvKX19cmV0dXJue2Y6bz9vK1wiIVwiK3Q6dCxuOnQscHI6byxwOml9fTtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfJiZfLmNvbmZpZyYmXy5jb25maWdbZV18fHt9fX1tPXtyZXF1aXJlOmZ1bmN0aW9uIGUodCl7cmV0dXJuIHgodCl9LGV4cG9ydHM6ZnVuY3Rpb24gZSh0KXt2YXIgbj12W3RdO2lmKHR5cGVvZiBuIT09XCJ1bmRlZmluZWRcIil7cmV0dXJuIG59ZWxzZXtyZXR1cm4gdlt0XT17fX19LG1vZHVsZTpmdW5jdGlvbiBlKHQpe3JldHVybntpZDp0LHVyaTpcIlwiLGV4cG9ydHM6dlt0XSxjb25maWc6cih0KX19fTtzPWZ1bmN0aW9uIGUodCxuLGkscil7dmFyIG8scyxhLGwsYyx1LGY9W10sZD1TKGkpLGg7cj1yfHx0O3U9QShyKTtpZihkPT09XCJ1bmRlZmluZWRcInx8ZD09PVwiZnVuY3Rpb25cIil7bj0hbi5sZW5ndGgmJmkubGVuZ3RoP1tcInJlcXVpcmVcIixcImV4cG9ydHNcIixcIm1vZHVsZVwiXTpuO2ZvcihjPTA7YzxuLmxlbmd0aDtjKz0xKXtsPWcobltjXSx1KTtzPWwuZjtpZihzPT09XCJyZXF1aXJlXCIpe2ZbY109bS5yZXF1aXJlKHQpfWVsc2UgaWYocz09PVwiZXhwb3J0c1wiKXtmW2NdPW0uZXhwb3J0cyh0KTtoPXRydWV9ZWxzZSBpZihzPT09XCJtb2R1bGVcIil7bz1mW2NdPW0ubW9kdWxlKHQpfWVsc2UgaWYoRSh2LHMpfHxFKHkscyl8fEUoYixzKSl7ZltjXT1UKHMpfWVsc2UgaWYobC5wKXtsLnAubG9hZChsLm4seChyLHRydWUpLEMocykse30pO2ZbY109dltzXX1lbHNle3Rocm93IG5ldyBFcnJvcih0K1wiIG1pc3NpbmcgXCIrcyl9fWE9aT9pLmFwcGx5KHZbdF0sZik6dW5kZWZpbmVkO2lmKHQpe2lmKG8mJm8uZXhwb3J0cyE9PXAmJm8uZXhwb3J0cyE9PXZbdF0pe3ZbdF09by5leHBvcnRzfWVsc2UgaWYoYSE9PXB8fCFoKXt2W3RdPWF9fX1lbHNlIGlmKHQpe3ZbdF09aX19O2U9dD1hPWZ1bmN0aW9uIGUodCxuLGkscixvKXtpZih0eXBlb2YgdD09PVwic3RyaW5nXCIpe2lmKG1bdF0pe3JldHVybiBtW3RdKG4pfXJldHVybiBUKGcodCxBKG4pKS5mKX1lbHNlIGlmKCF0LnNwbGljZSl7Xz10O2lmKF8uZGVwcyl7YShfLmRlcHMsXy5jYWxsYmFjayl9aWYoIW4pe3JldHVybn1pZihuLnNwbGljZSl7dD1uO249aTtpPW51bGx9ZWxzZXt0PXB9fW49bnx8ZnVuY3Rpb24oKXt9O2lmKHR5cGVvZiBpPT09XCJmdW5jdGlvblwiKXtpPXI7cj1vfWlmKHIpe3MocCx0LG4saSl9ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cyhwLHQsbixpKX0sNCl9cmV0dXJuIGF9O2EuY29uZmlnPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfTtlLl9kZWZpbmVkPXY7bz1mdW5jdGlvbiBlKHQsbixpKXtpZih0eXBlb2YgdCE9PVwic3RyaW5nXCIpe3Rocm93IG5ldyBFcnJvcihcIlNlZSBhbG1vbmQgUkVBRE1FOiBpbmNvcnJlY3QgbW9kdWxlIGJ1aWxkLCBubyBtb2R1bGUgbmFtZVwiKX1pZighbi5zcGxpY2Upe2k9bjtuPVtdfWlmKCFFKHYsdCkmJiFFKHksdCkpe3lbdF09W3QsbixpXX19O28uYW1kPXtqUXVlcnk6dHJ1ZX19KSgpO24ucmVxdWlyZWpzPWU7bi5yZXF1aXJlPXQ7bi5kZWZpbmU9b319KSgpO24uZGVmaW5lKFwiYWxtb25kXCIsZnVuY3Rpb24oKXt9KTtuLmRlZmluZShcImpxdWVyeVwiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9dHx8aTtpZihlPT1udWxsJiZjb25zb2xlJiZjb25zb2xlLmVycm9yKXtjb25zb2xlLmVycm9yKFwiU2VsZWN0MjogQW4gaW5zdGFuY2Ugb2YgalF1ZXJ5IG9yIGEgalF1ZXJ5LWNvbXBhdGlibGUgbGlicmFyeSB3YXMgbm90IFwiK1wiZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyIFwiK1wid2ViIHBhZ2UuXCIpfXJldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL3V0aWxzXCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKG8pe3ZhciByPXt9O3IuRXh0ZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX1mb3IodmFyIHIgaW4gdCl7aWYobi5jYWxsKHQscikpe2Vbcl09dFtyXX19aS5wcm90b3R5cGU9dC5wcm90b3R5cGU7ZS5wcm90b3R5cGU9bmV3IGk7ZS5fX3N1cGVyX189dC5wcm90b3R5cGU7cmV0dXJuIGV9O2Z1bmN0aW9uIGYoZSl7dmFyIHQ9ZS5wcm90b3R5cGU7dmFyIG49W107Zm9yKHZhciBpIGluIHQpe3ZhciByPXRbaV07aWYodHlwZW9mIHIhPT1cImZ1bmN0aW9uXCIpe2NvbnRpbnVlfWlmKGk9PT1cImNvbnN0cnVjdG9yXCIpe2NvbnRpbnVlfW4ucHVzaChpKX1yZXR1cm4gbn1yLkRlY29yYXRlPWZ1bmN0aW9uKGkscil7dmFyIGU9ZihyKTt2YXIgdD1mKGkpO2Z1bmN0aW9uIG8oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUudW5zaGlmdDt2YXIgdD1yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGg7dmFyIG49aS5wcm90b3R5cGUuY29uc3RydWN0b3I7aWYodD4wKXtlLmNhbGwoYXJndW1lbnRzLGkucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtuPXIucHJvdG90eXBlLmNvbnN0cnVjdG9yfW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXIuZGlzcGxheU5hbWU9aS5kaXNwbGF5TmFtZTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1vfW8ucHJvdG90eXBlPW5ldyBuO2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgYT10W3NdO28ucHJvdG90eXBlW2FdPWkucHJvdG90eXBlW2FdfXZhciBsPWZ1bmN0aW9uIGUodCl7dmFyIG49ZnVuY3Rpb24gZSgpe307aWYodCBpbiBvLnByb3RvdHlwZSl7bj1vLnByb3RvdHlwZVt0XX12YXIgaT1yLnByb3RvdHlwZVt0XTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUudW5zaGlmdDtlLmNhbGwoYXJndW1lbnRzLG4pO3JldHVybiBpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O2Zvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgdT1lW2NdO28ucHJvdG90eXBlW3VdPWwodSl9cmV0dXJuIG99O3ZhciBlPWZ1bmN0aW9uIGUoKXt0aGlzLmxpc3RlbmVycz17fX07ZS5wcm90b3R5cGUub249ZnVuY3Rpb24oZSx0KXt0aGlzLmxpc3RlbmVycz10aGlzLmxpc3RlbmVyc3x8e307aWYoZSBpbiB0aGlzLmxpc3RlbmVycyl7dGhpcy5saXN0ZW5lcnNbZV0ucHVzaCh0KX1lbHNle3RoaXMubGlzdGVuZXJzW2VdPVt0XX19O2UucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO3ZhciBuPXQuY2FsbChhcmd1bWVudHMsMSk7dGhpcy5saXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnN8fHt9O2lmKG49PW51bGwpe249W119aWYobi5sZW5ndGg9PT0wKXtuLnB1c2goe30pfW5bMF0uX3R5cGU9ZTtpZihlIGluIHRoaXMubGlzdGVuZXJzKXt0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tlXSx0LmNhbGwoYXJndW1lbnRzLDEpKX1pZihcIipcImluIHRoaXMubGlzdGVuZXJzKXt0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1tcIipcIl0sYXJndW1lbnRzKX19O2UucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl7ZVtuXS5hcHBseSh0aGlzLHQpfX07ci5PYnNlcnZhYmxlPWU7ci5nZW5lcmF0ZUNoYXJzPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuPTA7bjxlO24rKyl7dmFyIGk9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjM2KTt0Kz1pLnRvU3RyaW5nKDM2KX1yZXR1cm4gdH07ci5iaW5kPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0LGFyZ3VtZW50cyl9fTtyLl9jb252ZXJ0RGF0YT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl7dmFyIG49dC5zcGxpdChcIi1cIik7dmFyIGk9ZTtpZihuLmxlbmd0aD09PTEpe2NvbnRpbnVlfWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdO289by5zdWJzdHJpbmcoMCwxKS50b0xvd2VyQ2FzZSgpK28uc3Vic3RyaW5nKDEpO2lmKCEobyBpbiBpKSl7aVtvXT17fX1pZihyPT1uLmxlbmd0aC0xKXtpW29dPWVbdF19aT1pW29dfWRlbGV0ZSBlW3RdfXJldHVybiBlfTtyLmhhc1Njcm9sbD1mdW5jdGlvbihlLHQpe3ZhciBuPW8odCk7dmFyIGk9dC5zdHlsZS5vdmVyZmxvd1g7dmFyIHI9dC5zdHlsZS5vdmVyZmxvd1k7aWYoaT09PXImJihyPT09XCJoaWRkZW5cInx8cj09PVwidmlzaWJsZVwiKSl7cmV0dXJuIGZhbHNlfWlmKGk9PT1cInNjcm9sbFwifHxyPT09XCJzY3JvbGxcIil7cmV0dXJuIHRydWV9cmV0dXJuIG4uaW5uZXJIZWlnaHQoKTx0LnNjcm9sbEhlaWdodHx8bi5pbm5lcldpZHRoKCk8dC5zY3JvbGxXaWR0aH07ci5lc2NhcGVNYXJrdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9e1wiXFxcXFwiOlwiJiM5MjtcIixcIiZcIjpcIiZhbXA7XCIsXCI8XCI6XCImbHQ7XCIsXCI+XCI6XCImZ3Q7XCIsJ1wiJzpcIiZxdW90O1wiLFwiJ1wiOlwiJiMzOTtcIixcIi9cIjpcIiYjNDc7XCJ9O2lmKHR5cGVvZiBlIT09XCJzdHJpbmdcIil7cmV0dXJuIGV9cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKC9bJjw+XCInXFwvXFxcXF0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfTtyLmFwcGVuZE1hbnk9ZnVuY3Rpb24oZSx0KXtpZihvLmZuLmpxdWVyeS5zdWJzdHIoMCwzKT09PVwiMS43XCIpe3ZhciBuPW8oKTtvLm1hcCh0LGZ1bmN0aW9uKGUpe249bi5hZGQoZSl9KTt0PW59ZS5hcHBlbmQodCl9O3IuX19jYWNoZT17fTt2YXIgbj0wO3IuR2V0VW5pcXVlRWxlbWVudElkPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKFwiZGF0YS1zZWxlY3QyLWlkXCIpO2lmKHQ9PW51bGwpe2lmKGUuaWQpe3Q9ZS5pZDtlLnNldEF0dHJpYnV0ZShcImRhdGEtc2VsZWN0Mi1pZFwiLHQpfWVsc2V7ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXNlbGVjdDItaWRcIiwrK24pO3Q9bi50b1N0cmluZygpfX1yZXR1cm4gdH07ci5TdG9yZURhdGE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXIuR2V0VW5pcXVlRWxlbWVudElkKGUpO2lmKCFyLl9fY2FjaGVbaV0pe3IuX19jYWNoZVtpXT17fX1yLl9fY2FjaGVbaV1bdF09bn07ci5HZXREYXRhPWZ1bmN0aW9uKGUsdCl7dmFyIG49ci5HZXRVbmlxdWVFbGVtZW50SWQoZSk7aWYodCl7aWYoci5fX2NhY2hlW25dKXtpZihyLl9fY2FjaGVbbl1bdF0hPW51bGwpe3JldHVybiByLl9fY2FjaGVbbl1bdF19cmV0dXJuIG8oZSkuZGF0YSh0KX1yZXR1cm4gbyhlKS5kYXRhKHQpfWVsc2V7cmV0dXJuIHIuX19jYWNoZVtuXX19O3IuUmVtb3ZlRGF0YT1mdW5jdGlvbihlKXt2YXIgdD1yLkdldFVuaXF1ZUVsZW1lbnRJZChlKTtpZihyLl9fY2FjaGVbdF0hPW51bGwpe2RlbGV0ZSByLl9fY2FjaGVbdF19ZS5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXNlbGVjdDItaWRcIil9O3JldHVybiByfSk7bi5kZWZpbmUoXCJzZWxlY3QyL3Jlc3VsdHNcIixbXCJqcXVlcnlcIixcIi4vdXRpbHNcIl0sZnVuY3Rpb24ocCxnKXtmdW5jdGlvbiBpKGUsdCxuKXt0aGlzLiRlbGVtZW50PWU7dGhpcy5kYXRhPW47dGhpcy5vcHRpb25zPXQ7aS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1nLkV4dGVuZChpLGcuT2JzZXJ2YWJsZSk7aS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9cCgnPHVsIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zXCIgcm9sZT1cImxpc3Rib3hcIj48L3VsPicpO2lmKHRoaXMub3B0aW9ucy5nZXQoXCJtdWx0aXBsZVwiKSl7ZS5hdHRyKFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIixcInRydWVcIil9dGhpcy4kcmVzdWx0cz1lO3JldHVybiBlfTtpLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuJHJlc3VsdHMuZW1wdHkoKX07aS5wcm90b3R5cGUuZGlzcGxheU1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zLmdldChcImVzY2FwZU1hcmt1cFwiKTt0aGlzLmNsZWFyKCk7dGhpcy5oaWRlTG9hZGluZygpO3ZhciBuPXAoJzxsaSByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIicrJyBjbGFzcz1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uXCI+PC9saT4nKTt2YXIgaT10aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNsYXRpb25zXCIpLmdldChlLm1lc3NhZ2UpO24uYXBwZW5kKHQoaShlLmFyZ3MpKSk7blswXS5jbGFzc05hbWUrPVwiIHNlbGVjdDItcmVzdWx0c19fbWVzc2FnZVwiO3RoaXMuJHJlc3VsdHMuYXBwZW5kKG4pfTtpLnByb3RvdHlwZS5oaWRlTWVzc2FnZXM9ZnVuY3Rpb24oKXt0aGlzLiRyZXN1bHRzLmZpbmQoXCIuc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlXCIpLnJlbW92ZSgpfTtpLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSl7dGhpcy5oaWRlTG9hZGluZygpO3ZhciB0PVtdO2lmKGUucmVzdWx0cz09bnVsbHx8ZS5yZXN1bHRzLmxlbmd0aD09PTApe2lmKHRoaXMuJHJlc3VsdHMuY2hpbGRyZW4oKS5sZW5ndGg9PT0wKXt0aGlzLnRyaWdnZXIoXCJyZXN1bHRzOm1lc3NhZ2VcIix7bWVzc2FnZTpcIm5vUmVzdWx0c1wifSl9cmV0dXJufWUucmVzdWx0cz10aGlzLnNvcnQoZS5yZXN1bHRzKTtmb3IodmFyIG49MDtuPGUucmVzdWx0cy5sZW5ndGg7bisrKXt2YXIgaT1lLnJlc3VsdHNbbl07dmFyIHI9dGhpcy5vcHRpb24oaSk7dC5wdXNoKHIpfXRoaXMuJHJlc3VsdHMuYXBwZW5kKHQpfTtpLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZmluZChcIi5zZWxlY3QyLXJlc3VsdHNcIik7bi5hcHBlbmQoZSl9O2kucHJvdG90eXBlLnNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vcHRpb25zLmdldChcInNvcnRlclwiKTtyZXR1cm4gdChlKX07aS5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kcmVzdWx0cy5maW5kKFwiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdXCIpO3ZhciB0PWUuZmlsdGVyKFwiW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV1cIik7aWYodC5sZW5ndGg+MCl7dC5maXJzdCgpLnRyaWdnZXIoXCJtb3VzZWVudGVyXCIpfWVsc2V7ZS5maXJzdCgpLnRyaWdnZXIoXCJtb3VzZWVudGVyXCIpfXRoaXMuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpfTtpLnByb3RvdHlwZS5zZXRDbGFzc2VzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmRhdGEuY3VycmVudChmdW5jdGlvbihlKXt2YXIgaT1wLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkLnRvU3RyaW5nKCl9KTt2YXIgdD1uLiRyZXN1bHRzLmZpbmQoXCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF1cIik7dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9cCh0aGlzKTt2YXIgdD1nLkdldERhdGEodGhpcyxcImRhdGFcIik7dmFyIG49XCJcIit0LmlkO2lmKHQuZWxlbWVudCE9bnVsbCYmdC5lbGVtZW50LnNlbGVjdGVkfHx0LmVsZW1lbnQ9PW51bGwmJnAuaW5BcnJheShuLGkpPi0xKXtlLmF0dHIoXCJhcmlhLXNlbGVjdGVkXCIsXCJ0cnVlXCIpfWVsc2V7ZS5hdHRyKFwiYXJpYS1zZWxlY3RlZFwiLFwiZmFsc2VcIil9fSl9KX07aS5wcm90b3R5cGUuc2hvd0xvYWRpbmc9ZnVuY3Rpb24oZSl7dGhpcy5oaWRlTG9hZGluZygpO3ZhciB0PXRoaXMub3B0aW9ucy5nZXQoXCJ0cmFuc2xhdGlvbnNcIikuZ2V0KFwic2VhcmNoaW5nXCIpO3ZhciBuPXtkaXNhYmxlZDp0cnVlLGxvYWRpbmc6dHJ1ZSx0ZXh0OnQoZSl9O3ZhciBpPXRoaXMub3B0aW9uKG4pO2kuY2xhc3NOYW1lKz1cIiBsb2FkaW5nLXJlc3VsdHNcIjt0aGlzLiRyZXN1bHRzLnByZXBlbmQoaSl9O2kucHJvdG90eXBlLmhpZGVMb2FkaW5nPWZ1bmN0aW9uKCl7dGhpcy4kcmVzdWx0cy5maW5kKFwiLmxvYWRpbmctcmVzdWx0c1wiKS5yZW1vdmUoKX07aS5wcm90b3R5cGUub3B0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaVwiKTt0LmNsYXNzTmFtZT1cInNlbGVjdDItcmVzdWx0c19fb3B0aW9uXCI7dmFyIG49e3JvbGU6XCJvcHRpb25cIixcImFyaWEtc2VsZWN0ZWRcIjpcImZhbHNlXCJ9O3ZhciBpPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7aWYoZS5lbGVtZW50IT1udWxsJiZpLmNhbGwoZS5lbGVtZW50LFwiOmRpc2FibGVkXCIpfHxlLmVsZW1lbnQ9PW51bGwmJmUuZGlzYWJsZWQpe2RlbGV0ZSBuW1wiYXJpYS1zZWxlY3RlZFwiXTtuW1wiYXJpYS1kaXNhYmxlZFwiXT1cInRydWVcIn1pZihlLmlkPT1udWxsKXtkZWxldGUgbltcImFyaWEtc2VsZWN0ZWRcIl19aWYoZS5fcmVzdWx0SWQhPW51bGwpe3QuaWQ9ZS5fcmVzdWx0SWR9aWYoZS50aXRsZSl7dC50aXRsZT1lLnRpdGxlfWlmKGUuY2hpbGRyZW4pe24ucm9sZT1cImdyb3VwXCI7bltcImFyaWEtbGFiZWxcIl09ZS50ZXh0O2RlbGV0ZSBuW1wiYXJpYS1zZWxlY3RlZFwiXX1mb3IodmFyIHIgaW4gbil7dmFyIG89bltyXTt0LnNldEF0dHJpYnV0ZShyLG8pfWlmKGUuY2hpbGRyZW4pe3ZhciBzPXAodCk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0cm9uZ1wiKTthLmNsYXNzTmFtZT1cInNlbGVjdDItcmVzdWx0c19fZ3JvdXBcIjt2YXIgbD1wKGEpO3RoaXMudGVtcGxhdGUoZSxhKTt2YXIgYz1bXTtmb3IodmFyIHU9MDt1PGUuY2hpbGRyZW4ubGVuZ3RoO3UrKyl7dmFyIGY9ZS5jaGlsZHJlblt1XTt2YXIgZD10aGlzLm9wdGlvbihmKTtjLnB1c2goZCl9dmFyIGg9cChcIjx1bD48L3VsPlwiLHtjbGFzczpcInNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMtLW5lc3RlZFwifSk7aC5hcHBlbmQoYyk7cy5hcHBlbmQoYSk7cy5hcHBlbmQoaCl9ZWxzZXt0aGlzLnRlbXBsYXRlKGUsdCl9Zy5TdG9yZURhdGEodCxcImRhdGFcIixlKTtyZXR1cm4gdH07aS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUpe3ZhciBsPXRoaXM7dmFyIG49dC5pZCtcIi1yZXN1bHRzXCI7dGhpcy4kcmVzdWx0cy5hdHRyKFwiaWRcIixuKTt0Lm9uKFwicmVzdWx0czphbGxcIixmdW5jdGlvbihlKXtsLmNsZWFyKCk7bC5hcHBlbmQoZS5kYXRhKTtpZih0LmlzT3BlbigpKXtsLnNldENsYXNzZXMoKTtsLmhpZ2hsaWdodEZpcnN0SXRlbSgpfX0pO3Qub24oXCJyZXN1bHRzOmFwcGVuZFwiLGZ1bmN0aW9uKGUpe2wuYXBwZW5kKGUuZGF0YSk7aWYodC5pc09wZW4oKSl7bC5zZXRDbGFzc2VzKCl9fSk7dC5vbihcInF1ZXJ5XCIsZnVuY3Rpb24oZSl7bC5oaWRlTWVzc2FnZXMoKTtsLnNob3dMb2FkaW5nKGUpfSk7dC5vbihcInNlbGVjdFwiLGZ1bmN0aW9uKCl7aWYoIXQuaXNPcGVuKCkpe3JldHVybn1sLnNldENsYXNzZXMoKTtpZihsLm9wdGlvbnMuZ2V0KFwic2Nyb2xsQWZ0ZXJTZWxlY3RcIikpe2wuaGlnaGxpZ2h0Rmlyc3RJdGVtKCl9fSk7dC5vbihcInVuc2VsZWN0XCIsZnVuY3Rpb24oKXtpZighdC5pc09wZW4oKSl7cmV0dXJufWwuc2V0Q2xhc3NlcygpO2lmKGwub3B0aW9ucy5nZXQoXCJzY3JvbGxBZnRlclNlbGVjdFwiKSl7bC5oaWdobGlnaHRGaXJzdEl0ZW0oKX19KTt0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7bC4kcmVzdWx0cy5hdHRyKFwiYXJpYS1leHBhbmRlZFwiLFwidHJ1ZVwiKTtsLiRyZXN1bHRzLmF0dHIoXCJhcmlhLWhpZGRlblwiLFwiZmFsc2VcIik7bC5zZXRDbGFzc2VzKCk7bC5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCl9KTt0Lm9uKFwiY2xvc2VcIixmdW5jdGlvbigpe2wuJHJlc3VsdHMuYXR0cihcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpO2wuJHJlc3VsdHMuYXR0cihcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpO2wuJHJlc3VsdHMucmVtb3ZlQXR0cihcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKX0pO3Qub24oXCJyZXN1bHRzOnRvZ2dsZVwiLGZ1bmN0aW9uKCl7dmFyIGU9bC5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtpZihlLmxlbmd0aD09PTApe3JldHVybn1lLnRyaWdnZXIoXCJtb3VzZXVwXCIpfSk7dC5vbihcInJlc3VsdHM6c2VsZWN0XCIsZnVuY3Rpb24oKXt2YXIgZT1sLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO2lmKGUubGVuZ3RoPT09MCl7cmV0dXJufXZhciB0PWcuR2V0RGF0YShlWzBdLFwiZGF0YVwiKTtpZihlLmF0dHIoXCJhcmlhLXNlbGVjdGVkXCIpPT1cInRydWVcIil7bC50cmlnZ2VyKFwiY2xvc2VcIix7fSl9ZWxzZXtsLnRyaWdnZXIoXCJzZWxlY3RcIix7ZGF0YTp0fSl9fSk7dC5vbihcInJlc3VsdHM6cHJldmlvdXNcIixmdW5jdGlvbigpe3ZhciBlPWwuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7dmFyIHQ9bC4kcmVzdWx0cy5maW5kKFwiW2FyaWEtc2VsZWN0ZWRdXCIpO3ZhciBuPXQuaW5kZXgoZSk7aWYobjw9MCl7cmV0dXJufXZhciBpPW4tMTtpZihlLmxlbmd0aD09PTApe2k9MH12YXIgcj10LmVxKGkpO3IudHJpZ2dlcihcIm1vdXNlZW50ZXJcIik7dmFyIG89bC4kcmVzdWx0cy5vZmZzZXQoKS50b3A7dmFyIHM9ci5vZmZzZXQoKS50b3A7dmFyIGE9bC4kcmVzdWx0cy5zY3JvbGxUb3AoKSsocy1vKTtpZihpPT09MCl7bC4kcmVzdWx0cy5zY3JvbGxUb3AoMCl9ZWxzZSBpZihzLW88MCl7bC4kcmVzdWx0cy5zY3JvbGxUb3AoYSl9fSk7dC5vbihcInJlc3VsdHM6bmV4dFwiLGZ1bmN0aW9uKCl7dmFyIGU9bC5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTt2YXIgdD1sLiRyZXN1bHRzLmZpbmQoXCJbYXJpYS1zZWxlY3RlZF1cIik7dmFyIG49dC5pbmRleChlKTt2YXIgaT1uKzE7aWYoaT49dC5sZW5ndGgpe3JldHVybn12YXIgcj10LmVxKGkpO3IudHJpZ2dlcihcIm1vdXNlZW50ZXJcIik7dmFyIG89bC4kcmVzdWx0cy5vZmZzZXQoKS50b3ArbC4kcmVzdWx0cy5vdXRlckhlaWdodChmYWxzZSk7dmFyIHM9ci5vZmZzZXQoKS50b3Arci5vdXRlckhlaWdodChmYWxzZSk7dmFyIGE9bC4kcmVzdWx0cy5zY3JvbGxUb3AoKStzLW87aWYoaT09PTApe2wuJHJlc3VsdHMuc2Nyb2xsVG9wKDApfWVsc2UgaWYocz5vKXtsLiRyZXN1bHRzLnNjcm9sbFRvcChhKX19KTt0Lm9uKFwicmVzdWx0czpmb2N1c1wiLGZ1bmN0aW9uKGUpe2UuZWxlbWVudC5hZGRDbGFzcyhcInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFwiKX0pO3Qub24oXCJyZXN1bHRzOm1lc3NhZ2VcIixmdW5jdGlvbihlKXtsLmRpc3BsYXlNZXNzYWdlKGUpfSk7aWYocC5mbi5tb3VzZXdoZWVsKXt0aGlzLiRyZXN1bHRzLm9uKFwibW91c2V3aGVlbFwiLGZ1bmN0aW9uKGUpe3ZhciB0PWwuJHJlc3VsdHMuc2Nyb2xsVG9wKCk7dmFyIG49bC4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0LXQrZS5kZWx0YVk7dmFyIGk9ZS5kZWx0YVk+MCYmdC1lLmRlbHRhWTw9MDt2YXIgcj1lLmRlbHRhWTwwJiZuPD1sLiRyZXN1bHRzLmhlaWdodCgpO2lmKGkpe2wuJHJlc3VsdHMuc2Nyb2xsVG9wKDApO2UucHJldmVudERlZmF1bHQoKTtlLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgaWYocil7bC4kcmVzdWx0cy5zY3JvbGxUb3AobC4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0LWwuJHJlc3VsdHMuaGVpZ2h0KCkpO2UucHJldmVudERlZmF1bHQoKTtlLnN0b3BQcm9wYWdhdGlvbigpfX0pfXRoaXMuJHJlc3VsdHMub24oXCJtb3VzZXVwXCIsXCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF1cIixmdW5jdGlvbihlKXt2YXIgdD1wKHRoaXMpO3ZhciBuPWcuR2V0RGF0YSh0aGlzLFwiZGF0YVwiKTtpZih0LmF0dHIoXCJhcmlhLXNlbGVjdGVkXCIpPT09XCJ0cnVlXCIpe2lmKGwub3B0aW9ucy5nZXQoXCJtdWx0aXBsZVwiKSl7bC50cmlnZ2VyKFwidW5zZWxlY3RcIix7b3JpZ2luYWxFdmVudDplLGRhdGE6bn0pfWVsc2V7bC50cmlnZ2VyKFwiY2xvc2VcIix7fSl9cmV0dXJufWwudHJpZ2dlcihcInNlbGVjdFwiLHtvcmlnaW5hbEV2ZW50OmUsZGF0YTpufSl9KTt0aGlzLiRyZXN1bHRzLm9uKFwibW91c2VlbnRlclwiLFwiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdXCIsZnVuY3Rpb24oZSl7dmFyIHQ9Zy5HZXREYXRhKHRoaXMsXCJkYXRhXCIpO2wuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCkucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWRcIik7bC50cmlnZ2VyKFwicmVzdWx0czpmb2N1c1wiLHtkYXRhOnQsZWxlbWVudDpwKHRoaXMpfSl9KX07aS5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kcmVzdWx0cy5maW5kKFwiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFwiKTtyZXR1cm4gZX07aS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuJHJlc3VsdHMucmVtb3ZlKCl9O2kucHJvdG90eXBlLmVuc3VyZUhpZ2hsaWdodFZpc2libGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO2lmKGUubGVuZ3RoPT09MCl7cmV0dXJufXZhciB0PXRoaXMuJHJlc3VsdHMuZmluZChcIlthcmlhLXNlbGVjdGVkXVwiKTt2YXIgbj10LmluZGV4KGUpO3ZhciBpPXRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wO3ZhciByPWUub2Zmc2V0KCkudG9wO3ZhciBvPXRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKCkrKHItaSk7dmFyIHM9ci1pO28tPWUub3V0ZXJIZWlnaHQoZmFsc2UpKjI7aWYobjw9Mil7dGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoMCl9ZWxzZSBpZihzPnRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoKXx8czwwKXt0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcChvKX19O2kucHJvdG90eXBlLnRlbXBsYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5vcHRpb25zLmdldChcInRlbXBsYXRlUmVzdWx0XCIpO3ZhciBpPXRoaXMub3B0aW9ucy5nZXQoXCJlc2NhcGVNYXJrdXBcIik7dmFyIHI9bihlLHQpO2lmKHI9PW51bGwpe3Quc3R5bGUuZGlzcGxheT1cIm5vbmVcIn1lbHNlIGlmKHR5cGVvZiByPT09XCJzdHJpbmdcIil7dC5pbm5lckhUTUw9aShyKX1lbHNle3AodCkuYXBwZW5kKHIpfX07cmV0dXJuIGl9KTtuLmRlZmluZShcInNlbGVjdDIva2V5c1wiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9e0JBQ0tTUEFDRTo4LFRBQjo5LEVOVEVSOjEzLFNISUZUOjE2LENUUkw6MTcsQUxUOjE4LEVTQzoyNyxTUEFDRTozMixQQUdFX1VQOjMzLFBBR0VfRE9XTjozNCxFTkQ6MzUsSE9NRTozNixMRUZUOjM3LFVQOjM4LFJJR0hUOjM5LERPV046NDAsREVMRVRFOjQ2fTtyZXR1cm4gZX0pO24uZGVmaW5lKFwic2VsZWN0Mi9zZWxlY3Rpb24vYmFzZVwiLFtcImpxdWVyeVwiLFwiLi4vdXRpbHNcIixcIi4uL2tleXNcIl0sZnVuY3Rpb24ocixvLHMpe2Z1bmN0aW9uIG4oZSx0KXt0aGlzLiRlbGVtZW50PWU7dGhpcy5vcHRpb25zPXQ7bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1vLkV4dGVuZChuLG8uT2JzZXJ2YWJsZSk7bi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9cignPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvblwiIHJvbGU9XCJjb21ib2JveFwiICcrJyBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPicrXCI8L3NwYW4+XCIpO3RoaXMuX3RhYmluZGV4PTA7aWYoby5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sXCJvbGQtdGFiaW5kZXhcIikhPW51bGwpe3RoaXMuX3RhYmluZGV4PW8uR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLFwib2xkLXRhYmluZGV4XCIpfWVsc2UgaWYodGhpcy4kZWxlbWVudC5hdHRyKFwidGFiaW5kZXhcIikhPW51bGwpe3RoaXMuX3RhYmluZGV4PXRoaXMuJGVsZW1lbnQuYXR0cihcInRhYmluZGV4XCIpfWUuYXR0cihcInRpdGxlXCIsdGhpcy4kZWxlbWVudC5hdHRyKFwidGl0bGVcIikpO2UuYXR0cihcInRhYmluZGV4XCIsdGhpcy5fdGFiaW5kZXgpO2UuYXR0cihcImFyaWEtZGlzYWJsZWRcIixcImZhbHNlXCIpO3RoaXMuJHNlbGVjdGlvbj1lO3JldHVybiBlfTtuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczt2YXIgaT1lLmlkK1wiLXJlc3VsdHNcIjt0aGlzLmNvbnRhaW5lcj1lO3RoaXMuJHNlbGVjdGlvbi5vbihcImZvY3VzXCIsZnVuY3Rpb24oZSl7bi50cmlnZ2VyKFwiZm9jdXNcIixlKX0pO3RoaXMuJHNlbGVjdGlvbi5vbihcImJsdXJcIixmdW5jdGlvbihlKXtuLl9oYW5kbGVCbHVyKGUpfSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwia2V5ZG93blwiLGZ1bmN0aW9uKGUpe24udHJpZ2dlcihcImtleXByZXNzXCIsZSk7aWYoZS53aGljaD09PXMuU1BBQ0Upe2UucHJldmVudERlZmF1bHQoKX19KTtlLm9uKFwicmVzdWx0czpmb2N1c1wiLGZ1bmN0aW9uKGUpe24uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsZS5kYXRhLl9yZXN1bHRJZCl9KTtlLm9uKFwic2VsZWN0aW9uOnVwZGF0ZVwiLGZ1bmN0aW9uKGUpe24udXBkYXRlKGUuZGF0YSl9KTtlLm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7bi4kc2VsZWN0aW9uLmF0dHIoXCJhcmlhLWV4cGFuZGVkXCIsXCJ0cnVlXCIpO24uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1vd25zXCIsaSk7bi5fYXR0YWNoQ2xvc2VIYW5kbGVyKGUpfSk7ZS5vbihcImNsb3NlXCIsZnVuY3Rpb24oKXtuLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtZXhwYW5kZWRcIixcImZhbHNlXCIpO24uJHNlbGVjdGlvbi5yZW1vdmVBdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpO24uJHNlbGVjdGlvbi5yZW1vdmVBdHRyKFwiYXJpYS1vd25zXCIpO24uJHNlbGVjdGlvbi50cmlnZ2VyKFwiZm9jdXNcIik7bi5fZGV0YWNoQ2xvc2VIYW5kbGVyKGUpfSk7ZS5vbihcImVuYWJsZVwiLGZ1bmN0aW9uKCl7bi4kc2VsZWN0aW9uLmF0dHIoXCJ0YWJpbmRleFwiLG4uX3RhYmluZGV4KTtuLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtZGlzYWJsZWRcIixcImZhbHNlXCIpfSk7ZS5vbihcImRpc2FibGVcIixmdW5jdGlvbigpe24uJHNlbGVjdGlvbi5hdHRyKFwidGFiaW5kZXhcIixcIi0xXCIpO24uJHNlbGVjdGlvbi5hdHRyKFwiYXJpYS1kaXNhYmxlZFwiLFwidHJ1ZVwiKX0pfTtuLnByb3RvdHlwZS5faGFuZGxlQmx1cj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09dC4kc2VsZWN0aW9uWzBdfHxyLmNvbnRhaW5zKHQuJHNlbGVjdGlvblswXSxkb2N1bWVudC5hY3RpdmVFbGVtZW50KSl7cmV0dXJufXQudHJpZ2dlcihcImJsdXJcIixlKX0sMSl9O24ucHJvdG90eXBlLl9hdHRhY2hDbG9zZUhhbmRsZXI9ZnVuY3Rpb24oZSl7cihkb2N1bWVudC5ib2R5KS5vbihcIm1vdXNlZG93bi5zZWxlY3QyLlwiK2UuaWQsZnVuY3Rpb24oZSl7dmFyIHQ9cihlLnRhcmdldCk7dmFyIG49dC5jbG9zZXN0KFwiLnNlbGVjdDJcIik7dmFyIGk9cihcIi5zZWxlY3QyLnNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpO2kuZWFjaChmdW5jdGlvbigpe2lmKHRoaXM9PW5bMF0pe3JldHVybn12YXIgZT1vLkdldERhdGEodGhpcyxcImVsZW1lbnRcIik7ZS5zZWxlY3QyKFwiY2xvc2VcIil9KX0pfTtuLnByb3RvdHlwZS5fZGV0YWNoQ2xvc2VIYW5kbGVyPWZ1bmN0aW9uKGUpe3IoZG9jdW1lbnQuYm9keSkub2ZmKFwibW91c2Vkb3duLnNlbGVjdDIuXCIrZS5pZCl9O24ucHJvdG90eXBlLnBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5maW5kKFwiLnNlbGVjdGlvblwiKTtuLmFwcGVuZChlKX07bi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2RldGFjaENsb3NlSGFuZGxlcih0aGlzLmNvbnRhaW5lcil9O24ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYHVwZGF0ZWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLlwiKX07bi5wcm90b3R5cGUuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNEaXNhYmxlZCgpfTtuLnByb3RvdHlwZS5pc0Rpc2FibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoXCJkaXNhYmxlZFwiKX07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvc2VsZWN0aW9uL3NpbmdsZVwiLFtcImpxdWVyeVwiLFwiLi9iYXNlXCIsXCIuLi91dGlsc1wiLFwiLi4va2V5c1wiXSxmdW5jdGlvbihlLHQsbixpKXtmdW5jdGlvbiByKCl7ci5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfW4uRXh0ZW5kKHIsdCk7ci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9ci5fX3N1cGVyX18ucmVuZGVyLmNhbGwodGhpcyk7ZS5hZGRDbGFzcyhcInNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGVcIik7ZS5odG1sKCc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiPjwvc3Bhbj4nKyc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19hcnJvd1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nKyc8YiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9iPicrXCI8L3NwYW4+XCIpO3JldHVybiBlfTtyLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgaT10LmlkK1wiLWNvbnRhaW5lclwiO3RoaXMuJHNlbGVjdGlvbi5maW5kKFwiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiKS5hdHRyKFwiaWRcIixpKS5hdHRyKFwicm9sZVwiLFwidGV4dGJveFwiKS5hdHRyKFwiYXJpYS1yZWFkb25seVwiLFwidHJ1ZVwiKTt0aGlzLiRzZWxlY3Rpb24uYXR0cihcImFyaWEtbGFiZWxsZWRieVwiLGkpO3RoaXMuJHNlbGVjdGlvbi5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGUpe2lmKGUud2hpY2ghPT0xKXtyZXR1cm59bi50cmlnZ2VyKFwidG9nZ2xlXCIse29yaWdpbmFsRXZlbnQ6ZX0pfSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwiZm9jdXNcIixmdW5jdGlvbihlKXt9KTt0aGlzLiRzZWxlY3Rpb24ub24oXCJibHVyXCIsZnVuY3Rpb24oZSl7fSk7dC5vbihcImZvY3VzXCIsZnVuY3Rpb24oZSl7aWYoIXQuaXNPcGVuKCkpe24uJHNlbGVjdGlvbi50cmlnZ2VyKFwiZm9jdXNcIil9fSl9O3IucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpO2UuZW1wdHkoKTtlLnJlbW92ZUF0dHIoXCJ0aXRsZVwiKX07ci5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMub3B0aW9ucy5nZXQoXCJ0ZW1wbGF0ZVNlbGVjdGlvblwiKTt2YXIgaT10aGlzLm9wdGlvbnMuZ2V0KFwiZXNjYXBlTWFya3VwXCIpO3JldHVybiBpKG4oZSx0KSl9O3IucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiBlKFwiPHNwYW4+PC9zcGFuPlwiKX07ci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPT09MCl7dGhpcy5jbGVhcigpO3JldHVybn12YXIgdD1lWzBdO3ZhciBuPXRoaXMuJHNlbGVjdGlvbi5maW5kKFwiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiKTt2YXIgaT10aGlzLmRpc3BsYXkodCxuKTtuLmVtcHR5KCkuYXBwZW5kKGkpO3ZhciByPXQudGl0bGV8fHQudGV4dDtpZihyKXtuLmF0dHIoXCJ0aXRsZVwiLHIpfWVsc2V7bi5yZW1vdmVBdHRyKFwidGl0bGVcIil9fTtyZXR1cm4gcn0pO24uZGVmaW5lKFwic2VsZWN0Mi9zZWxlY3Rpb24vbXVsdGlwbGVcIixbXCJqcXVlcnlcIixcIi4vYmFzZVwiLFwiLi4vdXRpbHNcIl0sZnVuY3Rpb24obyxlLGwpe2Z1bmN0aW9uIG4oZSx0KXtuLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9bC5FeHRlbmQobixlKTtuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT1uLl9fc3VwZXJfXy5yZW5kZXIuY2FsbCh0aGlzKTtlLmFkZENsYXNzKFwic2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlXCIpO2UuaHRtbCgnPHVsIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCI+PC91bD4nKTtyZXR1cm4gZX07bi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7bi5fX3N1cGVyX18uYmluZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy4kc2VsZWN0aW9uLm9uKFwiY2xpY2tcIixmdW5jdGlvbihlKXtyLnRyaWdnZXIoXCJ0b2dnbGVcIix7b3JpZ2luYWxFdmVudDplfSl9KTt0aGlzLiRzZWxlY3Rpb24ub24oXCJjbGlja1wiLFwiLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZVwiLGZ1bmN0aW9uKGUpe2lmKHIuaXNEaXNhYmxlZCgpKXtyZXR1cm59dmFyIHQ9byh0aGlzKTt2YXIgbj10LnBhcmVudCgpO3ZhciBpPWwuR2V0RGF0YShuWzBdLFwiZGF0YVwiKTtyLnRyaWdnZXIoXCJ1bnNlbGVjdFwiLHtvcmlnaW5hbEV2ZW50OmUsZGF0YTppfSl9KX07bi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIik7ZS5lbXB0eSgpO2UucmVtb3ZlQXR0cihcInRpdGxlXCIpfTtuLnByb3RvdHlwZS5kaXNwbGF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5vcHRpb25zLmdldChcInRlbXBsYXRlU2VsZWN0aW9uXCIpO3ZhciBpPXRoaXMub3B0aW9ucy5nZXQoXCJlc2NhcGVNYXJrdXBcIik7cmV0dXJuIGkobihlLHQpKX07bi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyPWZ1bmN0aW9uKCl7dmFyIGU9bygnPGxpIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZVwiPicrJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPicrXCImdGltZXM7XCIrXCI8L3NwYW4+XCIrXCI8L2xpPlwiKTtyZXR1cm4gZX07bi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMuY2xlYXIoKTtpZihlLmxlbmd0aD09PTApe3JldHVybn12YXIgdD1bXTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTt2YXIgcj10aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO3ZhciBvPXRoaXMuZGlzcGxheShpLHIpO3IuYXBwZW5kKG8pO3ZhciBzPWkudGl0bGV8fGkudGV4dDtpZihzKXtyLmF0dHIoXCJ0aXRsZVwiLHMpfWwuU3RvcmVEYXRhKHJbMF0sXCJkYXRhXCIsaSk7dC5wdXNoKHIpfXZhciBhPXRoaXMuJHNlbGVjdGlvbi5maW5kKFwiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiKTtsLmFwcGVuZE1hbnkoYSx0KX07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvc2VsZWN0aW9uL3BsYWNlaG9sZGVyXCIsW1wiLi4vdXRpbHNcIl0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsbil7dGhpcy5wbGFjZWhvbGRlcj10aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG4uZ2V0KFwicGxhY2Vob2xkZXJcIikpO2UuY2FsbCh0aGlzLHQsbil9dC5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdD09PVwic3RyaW5nXCIpe3Q9e2lkOlwiXCIsdGV4dDp0fX1yZXR1cm4gdH07dC5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO24uaHRtbCh0aGlzLmRpc3BsYXkodCkpO24uYWRkQ2xhc3MoXCJzZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXJcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlXCIpO3JldHVybiBufTt0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmxlbmd0aD09MSYmdFswXS5pZCE9dGhpcy5wbGFjZWhvbGRlci5pZDt2YXIgaT10Lmxlbmd0aD4xO2lmKGl8fG4pe3JldHVybiBlLmNhbGwodGhpcyx0KX10aGlzLmNsZWFyKCk7dmFyIHI9dGhpcy5jcmVhdGVQbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKTt0aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikuYXBwZW5kKHIpfTtyZXR1cm4gdH0pO24uZGVmaW5lKFwic2VsZWN0Mi9zZWxlY3Rpb24vYWxsb3dDbGVhclwiLFtcImpxdWVyeVwiLFwiLi4va2V5c1wiLFwiLi4vdXRpbHNcIl0sZnVuY3Rpb24ocixpLGEpe2Z1bmN0aW9uIGUoKXt9ZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcztlLmNhbGwodGhpcyx0LG4pO2lmKHRoaXMucGxhY2Vob2xkZXI9PW51bGwpe2lmKHRoaXMub3B0aW9ucy5nZXQoXCJkZWJ1Z1wiKSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3Ipe2NvbnNvbGUuZXJyb3IoXCJTZWxlY3QyOiBUaGUgYGFsbG93Q2xlYXJgIG9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiBcIitcIndpdGggdGhlIGBwbGFjZWhvbGRlcmAgb3B0aW9uLlwiKX19dGhpcy4kc2VsZWN0aW9uLm9uKFwibW91c2Vkb3duXCIsXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIsZnVuY3Rpb24oZSl7aS5faGFuZGxlQ2xlYXIoZSl9KTt0Lm9uKFwia2V5cHJlc3NcIixmdW5jdGlvbihlKXtpLl9oYW5kbGVLZXlib2FyZENsZWFyKGUsdCl9KX07ZS5wcm90b3R5cGUuX2hhbmRsZUNsZWFyPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5pc0Rpc2FibGVkKCkpe3JldHVybn12YXIgbj10aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXJcIik7aWYobi5sZW5ndGg9PT0wKXtyZXR1cm59dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT1hLkdldERhdGEoblswXSxcImRhdGFcIik7dmFyIHI9dGhpcy4kZWxlbWVudC52YWwoKTt0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnBsYWNlaG9sZGVyLmlkKTt2YXIgbz17ZGF0YTppfTt0aGlzLnRyaWdnZXIoXCJjbGVhclwiLG8pO2lmKG8ucHJldmVudGVkKXt0aGlzLiRlbGVtZW50LnZhbChyKTtyZXR1cm59Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspe289e2RhdGE6aVtzXX07dGhpcy50cmlnZ2VyKFwidW5zZWxlY3RcIixvKTtpZihvLnByZXZlbnRlZCl7dGhpcy4kZWxlbWVudC52YWwocik7cmV0dXJufX10aGlzLiRlbGVtZW50LnRyaWdnZXIoXCJpbnB1dFwiKS50cmlnZ2VyKFwiY2hhbmdlXCIpO3RoaXMudHJpZ2dlcihcInRvZ2dsZVwiLHt9KX07ZS5wcm90b3R5cGUuX2hhbmRsZUtleWJvYXJkQ2xlYXI9ZnVuY3Rpb24oZSx0LG4pe2lmKG4uaXNPcGVuKCkpe3JldHVybn1pZih0LndoaWNoPT1pLkRFTEVURXx8dC53aGljaD09aS5CQUNLU1BBQ0Upe3RoaXMuX2hhbmRsZUNsZWFyKHQpfX07ZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7ZS5jYWxsKHRoaXMsdCk7aWYodGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyXCIpLmxlbmd0aD4wfHx0Lmxlbmd0aD09PTApe3JldHVybn12YXIgbj10aGlzLm9wdGlvbnMuZ2V0KFwidHJhbnNsYXRpb25zXCIpLmdldChcInJlbW92ZUFsbEl0ZW1zXCIpO3ZhciBpPXIoJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIgdGl0bGU9XCInK24oKSsnXCI+JytcIiZ0aW1lcztcIitcIjwvc3Bhbj5cIik7YS5TdG9yZURhdGEoaVswXSxcImRhdGFcIix0KTt0aGlzLiRzZWxlY3Rpb24uZmluZChcIi5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIikucHJlcGVuZChpKX07cmV0dXJuIGV9KTtuLmRlZmluZShcInNlbGVjdDIvc2VsZWN0aW9uL3NlYXJjaFwiLFtcImpxdWVyeVwiLFwiLi4vdXRpbHNcIixcIi4uL2tleXNcIl0sZnVuY3Rpb24oaSxhLGwpe2Z1bmN0aW9uIGUoZSx0LG4pe2UuY2FsbCh0aGlzLHQsbil9ZS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWkoJzxsaSBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIj4nKyc8aW5wdXQgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIiB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJysnIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCInKycgc3BlbGxjaGVjaz1cImZhbHNlXCIgcm9sZT1cInNlYXJjaGJveFwiIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiIC8+JytcIjwvbGk+XCIpO3RoaXMuJHNlYXJjaENvbnRhaW5lcj10O3RoaXMuJHNlYXJjaD10LmZpbmQoXCJpbnB1dFwiKTt2YXIgbj1lLmNhbGwodGhpcyk7dGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpO3JldHVybiBufTtlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO3ZhciBpPXQuaWQrXCItcmVzdWx0c1wiO2UuY2FsbCh0aGlzLHQsbik7dC5vbihcIm9wZW5cIixmdW5jdGlvbigpe3IuJHNlYXJjaC5hdHRyKFwiYXJpYS1jb250cm9sc1wiLGkpO3IuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIil9KTt0Lm9uKFwiY2xvc2VcIixmdW5jdGlvbigpe3IuJHNlYXJjaC52YWwoXCJcIik7ci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWNvbnRyb2xzXCIpO3IuJHNlYXJjaC5yZW1vdmVBdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpO3IuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIil9KTt0Lm9uKFwiZW5hYmxlXCIsZnVuY3Rpb24oKXtyLiRzZWFyY2gucHJvcChcImRpc2FibGVkXCIsZmFsc2UpO3IuX3RyYW5zZmVyVGFiSW5kZXgoKX0pO3Qub24oXCJkaXNhYmxlXCIsZnVuY3Rpb24oKXtyLiRzZWFyY2gucHJvcChcImRpc2FibGVkXCIsdHJ1ZSl9KTt0Lm9uKFwiZm9jdXNcIixmdW5jdGlvbihlKXtyLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfSk7dC5vbihcInJlc3VsdHM6Zm9jdXNcIixmdW5jdGlvbihlKXtpZihlLmRhdGEuX3Jlc3VsdElkKXtyLiRzZWFyY2guYXR0cihcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLGUuZGF0YS5fcmVzdWx0SWQpfWVsc2V7ci4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIil9fSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwiZm9jdXNpblwiLFwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIixmdW5jdGlvbihlKXtyLnRyaWdnZXIoXCJmb2N1c1wiLGUpfSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwiZm9jdXNvdXRcIixcIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lXCIsZnVuY3Rpb24oZSl7ci5faGFuZGxlQmx1cihlKX0pO3RoaXMuJHNlbGVjdGlvbi5vbihcImtleWRvd25cIixcIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lXCIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtyLnRyaWdnZXIoXCJrZXlwcmVzc1wiLGUpO3IuX2tleVVwUHJldmVudGVkPWUuaXNEZWZhdWx0UHJldmVudGVkKCk7dmFyIHQ9ZS53aGljaDtpZih0PT09bC5CQUNLU1BBQ0UmJnIuJHNlYXJjaC52YWwoKT09PVwiXCIpe3ZhciBuPXIuJHNlYXJjaENvbnRhaW5lci5wcmV2KFwiLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VcIik7aWYobi5sZW5ndGg+MCl7dmFyIGk9YS5HZXREYXRhKG5bMF0sXCJkYXRhXCIpO3Iuc2VhcmNoUmVtb3ZlQ2hvaWNlKGkpO2UucHJldmVudERlZmF1bHQoKX19fSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwiY2xpY2tcIixcIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lXCIsZnVuY3Rpb24oZSl7aWYoci4kc2VhcmNoLnZhbCgpKXtlLnN0b3BQcm9wYWdhdGlvbigpfX0pO3ZhciBvPWRvY3VtZW50LmRvY3VtZW50TW9kZTt2YXIgcz1vJiZvPD0xMTt0aGlzLiRzZWxlY3Rpb24ub24oXCJpbnB1dC5zZWFyY2hjaGVja1wiLFwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIixmdW5jdGlvbihlKXtpZihzKXtyLiRzZWxlY3Rpb24ub2ZmKFwiaW5wdXQuc2VhcmNoIGlucHV0LnNlYXJjaGNoZWNrXCIpO3JldHVybn1yLiRzZWxlY3Rpb24ub2ZmKFwia2V5dXAuc2VhcmNoXCIpfSk7dGhpcy4kc2VsZWN0aW9uLm9uKFwia2V5dXAuc2VhcmNoIGlucHV0LnNlYXJjaFwiLFwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIixmdW5jdGlvbihlKXtpZihzJiZlLnR5cGU9PT1cImlucHV0XCIpe3IuJHNlbGVjdGlvbi5vZmYoXCJpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2tcIik7cmV0dXJufXZhciB0PWUud2hpY2g7aWYodD09bC5TSElGVHx8dD09bC5DVFJMfHx0PT1sLkFMVCl7cmV0dXJufWlmKHQ9PWwuVEFCKXtyZXR1cm59ci5oYW5kbGVTZWFyY2goZSl9KX07ZS5wcm90b3R5cGUuX3RyYW5zZmVyVGFiSW5kZXg9ZnVuY3Rpb24oZSl7dGhpcy4kc2VhcmNoLmF0dHIoXCJ0YWJpbmRleFwiLHRoaXMuJHNlbGVjdGlvbi5hdHRyKFwidGFiaW5kZXhcIikpO3RoaXMuJHNlbGVjdGlvbi5hdHRyKFwidGFiaW5kZXhcIixcIi0xXCIpfTtlLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlcj1mdW5jdGlvbihlLHQpe3RoaXMuJHNlYXJjaC5hdHRyKFwicGxhY2Vob2xkZXJcIix0LnRleHQpfTtlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRzZWFyY2hbMF09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dGhpcy4kc2VhcmNoLmF0dHIoXCJwbGFjZWhvbGRlclwiLFwiXCIpO2UuY2FsbCh0aGlzLHQpO3RoaXMuJHNlbGVjdGlvbi5maW5kKFwiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZFwiKS5hcHBlbmQodGhpcy4kc2VhcmNoQ29udGFpbmVyKTt0aGlzLnJlc2l6ZVNlYXJjaCgpO2lmKG4pe3RoaXMuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIil9fTtlLnByb3RvdHlwZS5oYW5kbGVTZWFyY2g9ZnVuY3Rpb24oKXt0aGlzLnJlc2l6ZVNlYXJjaCgpO2lmKCF0aGlzLl9rZXlVcFByZXZlbnRlZCl7dmFyIGU9dGhpcy4kc2VhcmNoLnZhbCgpO3RoaXMudHJpZ2dlcihcInF1ZXJ5XCIse3Rlcm06ZX0pfXRoaXMuX2tleVVwUHJldmVudGVkPWZhbHNlfTtlLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2U9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyaWdnZXIoXCJ1bnNlbGVjdFwiLHtkYXRhOnR9KTt0aGlzLiRzZWFyY2gudmFsKHQudGV4dCk7dGhpcy5oYW5kbGVTZWFyY2goKX07ZS5wcm90b3R5cGUucmVzaXplU2VhcmNoPWZ1bmN0aW9uKCl7dGhpcy4kc2VhcmNoLmNzcyhcIndpZHRoXCIsXCIyNXB4XCIpO3ZhciBlPVwiXCI7aWYodGhpcy4kc2VhcmNoLmF0dHIoXCJwbGFjZWhvbGRlclwiKSE9PVwiXCIpe2U9dGhpcy4kc2VsZWN0aW9uLmZpbmQoXCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkXCIpLndpZHRoKCl9ZWxzZXt2YXIgdD10aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoKzE7ZT10Ki43NStcImVtXCJ9dGhpcy4kc2VhcmNoLmNzcyhcIndpZHRoXCIsZSl9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5XCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKHMpe2Z1bmN0aW9uIGUoKXt9ZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpczt2YXIgcj1bXCJvcGVuXCIsXCJvcGVuaW5nXCIsXCJjbG9zZVwiLFwiY2xvc2luZ1wiLFwic2VsZWN0XCIsXCJzZWxlY3RpbmdcIixcInVuc2VsZWN0XCIsXCJ1bnNlbGVjdGluZ1wiLFwiY2xlYXJcIixcImNsZWFyaW5nXCJdO3ZhciBvPVtcIm9wZW5pbmdcIixcImNsb3NpbmdcIixcInNlbGVjdGluZ1wiLFwidW5zZWxlY3RpbmdcIixcImNsZWFyaW5nXCJdO2UuY2FsbCh0aGlzLHQsbik7dC5vbihcIipcIixmdW5jdGlvbihlLHQpe2lmKHMuaW5BcnJheShlLHIpPT09LTEpe3JldHVybn10PXR8fHt9O3ZhciBuPXMuRXZlbnQoXCJzZWxlY3QyOlwiK2Use3BhcmFtczp0fSk7aS4kZWxlbWVudC50cmlnZ2VyKG4pO2lmKHMuaW5BcnJheShlLG8pPT09LTEpe3JldHVybn10LnByZXZlbnRlZD1uLmlzRGVmYXVsdFByZXZlbnRlZCgpfSl9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL3RyYW5zbGF0aW9uXCIsW1wianF1ZXJ5XCIsXCJyZXF1aXJlXCJdLGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gaShlKXt0aGlzLmRpY3Q9ZXx8e319aS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGljdH07aS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpY3RbZV19O2kucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihlKXt0aGlzLmRpY3Q9dC5leHRlbmQoe30sZS5hbGwoKSx0aGlzLmRpY3QpfTtpLl9jYWNoZT17fTtpLmxvYWRQYXRoPWZ1bmN0aW9uKGUpe2lmKCEoZSBpbiBpLl9jYWNoZSkpe3ZhciB0PW4oZSk7aS5fY2FjaGVbZV09dH1yZXR1cm4gbmV3IGkoaS5fY2FjaGVbZV0pfTtyZXR1cm4gaX0pO24uZGVmaW5lKFwic2VsZWN0Mi9kaWFjcml0aWNzXCIsW10sZnVuY3Rpb24oKXt2YXIgZT17XCLikrZcIjpcIkFcIixcIu+8oVwiOlwiQVwiLFwiw4BcIjpcIkFcIixcIsOBXCI6XCJBXCIsXCLDglwiOlwiQVwiLFwi4bqmXCI6XCJBXCIsXCLhuqRcIjpcIkFcIixcIuG6qlwiOlwiQVwiLFwi4bqoXCI6XCJBXCIsXCLDg1wiOlwiQVwiLFwixIBcIjpcIkFcIixcIsSCXCI6XCJBXCIsXCLhurBcIjpcIkFcIixcIuG6rlwiOlwiQVwiLFwi4bq0XCI6XCJBXCIsXCLhurJcIjpcIkFcIixcIsimXCI6XCJBXCIsXCLHoFwiOlwiQVwiLFwiw4RcIjpcIkFcIixcIseeXCI6XCJBXCIsXCLhuqJcIjpcIkFcIixcIsOFXCI6XCJBXCIsXCLHulwiOlwiQVwiLFwix41cIjpcIkFcIixcIsiAXCI6XCJBXCIsXCLIglwiOlwiQVwiLFwi4bqgXCI6XCJBXCIsXCLhuqxcIjpcIkFcIixcIuG6tlwiOlwiQVwiLFwi4biAXCI6XCJBXCIsXCLEhFwiOlwiQVwiLFwiyLpcIjpcIkFcIixcIuKxr1wiOlwiQVwiLFwi6pyyXCI6XCJBQVwiLFwiw4ZcIjpcIkFFXCIsXCLHvFwiOlwiQUVcIixcIseiXCI6XCJBRVwiLFwi6py0XCI6XCJBT1wiLFwi6py2XCI6XCJBVVwiLFwi6py4XCI6XCJBVlwiLFwi6py6XCI6XCJBVlwiLFwi6py8XCI6XCJBWVwiLFwi4pK3XCI6XCJCXCIsXCLvvKJcIjpcIkJcIixcIuG4glwiOlwiQlwiLFwi4biEXCI6XCJCXCIsXCLhuIZcIjpcIkJcIixcIsmDXCI6XCJCXCIsXCLGglwiOlwiQlwiLFwixoFcIjpcIkJcIixcIuKSuFwiOlwiQ1wiLFwi77yjXCI6XCJDXCIsXCLEhlwiOlwiQ1wiLFwixIhcIjpcIkNcIixcIsSKXCI6XCJDXCIsXCLEjFwiOlwiQ1wiLFwiw4dcIjpcIkNcIixcIuG4iFwiOlwiQ1wiLFwixodcIjpcIkNcIixcIsi7XCI6XCJDXCIsXCLqnL5cIjpcIkNcIixcIuKSuVwiOlwiRFwiLFwi77ykXCI6XCJEXCIsXCLhuIpcIjpcIkRcIixcIsSOXCI6XCJEXCIsXCLhuIxcIjpcIkRcIixcIuG4kFwiOlwiRFwiLFwi4biSXCI6XCJEXCIsXCLhuI5cIjpcIkRcIixcIsSQXCI6XCJEXCIsXCLGi1wiOlwiRFwiLFwixopcIjpcIkRcIixcIsaJXCI6XCJEXCIsXCLqnblcIjpcIkRcIixcIsexXCI6XCJEWlwiLFwix4RcIjpcIkRaXCIsXCLHslwiOlwiRHpcIixcIseFXCI6XCJEelwiLFwi4pK6XCI6XCJFXCIsXCLvvKVcIjpcIkVcIixcIsOIXCI6XCJFXCIsXCLDiVwiOlwiRVwiLFwiw4pcIjpcIkVcIixcIuG7gFwiOlwiRVwiLFwi4bq+XCI6XCJFXCIsXCLhu4RcIjpcIkVcIixcIuG7glwiOlwiRVwiLFwi4bq8XCI6XCJFXCIsXCLEklwiOlwiRVwiLFwi4biUXCI6XCJFXCIsXCLhuJZcIjpcIkVcIixcIsSUXCI6XCJFXCIsXCLEllwiOlwiRVwiLFwiw4tcIjpcIkVcIixcIuG6ulwiOlwiRVwiLFwixJpcIjpcIkVcIixcIsiEXCI6XCJFXCIsXCLIhlwiOlwiRVwiLFwi4bq4XCI6XCJFXCIsXCLhu4ZcIjpcIkVcIixcIsioXCI6XCJFXCIsXCLhuJxcIjpcIkVcIixcIsSYXCI6XCJFXCIsXCLhuJhcIjpcIkVcIixcIuG4mlwiOlwiRVwiLFwixpBcIjpcIkVcIixcIsaOXCI6XCJFXCIsXCLikrtcIjpcIkZcIixcIu+8plwiOlwiRlwiLFwi4bieXCI6XCJGXCIsXCLGkVwiOlwiRlwiLFwi6p27XCI6XCJGXCIsXCLikrxcIjpcIkdcIixcIu+8p1wiOlwiR1wiLFwix7RcIjpcIkdcIixcIsScXCI6XCJHXCIsXCLhuKBcIjpcIkdcIixcIsSeXCI6XCJHXCIsXCLEoFwiOlwiR1wiLFwix6ZcIjpcIkdcIixcIsSiXCI6XCJHXCIsXCLHpFwiOlwiR1wiLFwixpNcIjpcIkdcIixcIuqeoFwiOlwiR1wiLFwi6p29XCI6XCJHXCIsXCLqnb5cIjpcIkdcIixcIuKSvVwiOlwiSFwiLFwi77yoXCI6XCJIXCIsXCLEpFwiOlwiSFwiLFwi4biiXCI6XCJIXCIsXCLhuKZcIjpcIkhcIixcIsieXCI6XCJIXCIsXCLhuKRcIjpcIkhcIixcIuG4qFwiOlwiSFwiLFwi4biqXCI6XCJIXCIsXCLEplwiOlwiSFwiLFwi4rGnXCI6XCJIXCIsXCLisbVcIjpcIkhcIixcIuqejVwiOlwiSFwiLFwi4pK+XCI6XCJJXCIsXCLvvKlcIjpcIklcIixcIsOMXCI6XCJJXCIsXCLDjVwiOlwiSVwiLFwiw45cIjpcIklcIixcIsSoXCI6XCJJXCIsXCLEqlwiOlwiSVwiLFwixKxcIjpcIklcIixcIsSwXCI6XCJJXCIsXCLDj1wiOlwiSVwiLFwi4biuXCI6XCJJXCIsXCLhu4hcIjpcIklcIixcIsePXCI6XCJJXCIsXCLIiFwiOlwiSVwiLFwiyIpcIjpcIklcIixcIuG7ilwiOlwiSVwiLFwixK5cIjpcIklcIixcIuG4rFwiOlwiSVwiLFwixpdcIjpcIklcIixcIuKSv1wiOlwiSlwiLFwi77yqXCI6XCJKXCIsXCLEtFwiOlwiSlwiLFwiyYhcIjpcIkpcIixcIuKTgFwiOlwiS1wiLFwi77yrXCI6XCJLXCIsXCLhuLBcIjpcIktcIixcIseoXCI6XCJLXCIsXCLhuLJcIjpcIktcIixcIsS2XCI6XCJLXCIsXCLhuLRcIjpcIktcIixcIsaYXCI6XCJLXCIsXCLisalcIjpcIktcIixcIuqdgFwiOlwiS1wiLFwi6p2CXCI6XCJLXCIsXCLqnYRcIjpcIktcIixcIuqeolwiOlwiS1wiLFwi4pOBXCI6XCJMXCIsXCLvvKxcIjpcIkxcIixcIsS/XCI6XCJMXCIsXCLEuVwiOlwiTFwiLFwixL1cIjpcIkxcIixcIuG4tlwiOlwiTFwiLFwi4bi4XCI6XCJMXCIsXCLEu1wiOlwiTFwiLFwi4bi8XCI6XCJMXCIsXCLhuLpcIjpcIkxcIixcIsWBXCI6XCJMXCIsXCLIvVwiOlwiTFwiLFwi4rGiXCI6XCJMXCIsXCLisaBcIjpcIkxcIixcIuqdiFwiOlwiTFwiLFwi6p2GXCI6XCJMXCIsXCLqnoBcIjpcIkxcIixcIseHXCI6XCJMSlwiLFwix4hcIjpcIkxqXCIsXCLik4JcIjpcIk1cIixcIu+8rVwiOlwiTVwiLFwi4bi+XCI6XCJNXCIsXCLhuYBcIjpcIk1cIixcIuG5glwiOlwiTVwiLFwi4rGuXCI6XCJNXCIsXCLGnFwiOlwiTVwiLFwi4pODXCI6XCJOXCIsXCLvvK5cIjpcIk5cIixcIse4XCI6XCJOXCIsXCLFg1wiOlwiTlwiLFwiw5FcIjpcIk5cIixcIuG5hFwiOlwiTlwiLFwixYdcIjpcIk5cIixcIuG5hlwiOlwiTlwiLFwixYVcIjpcIk5cIixcIuG5ilwiOlwiTlwiLFwi4bmIXCI6XCJOXCIsXCLIoFwiOlwiTlwiLFwixp1cIjpcIk5cIixcIuqekFwiOlwiTlwiLFwi6p6kXCI6XCJOXCIsXCLHilwiOlwiTkpcIixcIseLXCI6XCJOalwiLFwi4pOEXCI6XCJPXCIsXCLvvK9cIjpcIk9cIixcIsOSXCI6XCJPXCIsXCLDk1wiOlwiT1wiLFwiw5RcIjpcIk9cIixcIuG7klwiOlwiT1wiLFwi4buQXCI6XCJPXCIsXCLhu5ZcIjpcIk9cIixcIuG7lFwiOlwiT1wiLFwiw5VcIjpcIk9cIixcIuG5jFwiOlwiT1wiLFwiyKxcIjpcIk9cIixcIuG5jlwiOlwiT1wiLFwixYxcIjpcIk9cIixcIuG5kFwiOlwiT1wiLFwi4bmSXCI6XCJPXCIsXCLFjlwiOlwiT1wiLFwiyK5cIjpcIk9cIixcIsiwXCI6XCJPXCIsXCLDllwiOlwiT1wiLFwiyKpcIjpcIk9cIixcIuG7jlwiOlwiT1wiLFwixZBcIjpcIk9cIixcIseRXCI6XCJPXCIsXCLIjFwiOlwiT1wiLFwiyI5cIjpcIk9cIixcIsagXCI6XCJPXCIsXCLhu5xcIjpcIk9cIixcIuG7mlwiOlwiT1wiLFwi4bugXCI6XCJPXCIsXCLhu55cIjpcIk9cIixcIuG7olwiOlwiT1wiLFwi4buMXCI6XCJPXCIsXCLhu5hcIjpcIk9cIixcIseqXCI6XCJPXCIsXCLHrFwiOlwiT1wiLFwiw5hcIjpcIk9cIixcIse+XCI6XCJPXCIsXCLGhlwiOlwiT1wiLFwixp9cIjpcIk9cIixcIuqdilwiOlwiT1wiLFwi6p2MXCI6XCJPXCIsXCLFklwiOlwiT0VcIixcIsaiXCI6XCJPSVwiLFwi6p2OXCI6XCJPT1wiLFwiyKJcIjpcIk9VXCIsXCLik4VcIjpcIlBcIixcIu+8sFwiOlwiUFwiLFwi4bmUXCI6XCJQXCIsXCLhuZZcIjpcIlBcIixcIsakXCI6XCJQXCIsXCLisaNcIjpcIlBcIixcIuqdkFwiOlwiUFwiLFwi6p2SXCI6XCJQXCIsXCLqnZRcIjpcIlBcIixcIuKThlwiOlwiUVwiLFwi77yxXCI6XCJRXCIsXCLqnZZcIjpcIlFcIixcIuqdmFwiOlwiUVwiLFwiyYpcIjpcIlFcIixcIuKTh1wiOlwiUlwiLFwi77yyXCI6XCJSXCIsXCLFlFwiOlwiUlwiLFwi4bmYXCI6XCJSXCIsXCLFmFwiOlwiUlwiLFwiyJBcIjpcIlJcIixcIsiSXCI6XCJSXCIsXCLhuZpcIjpcIlJcIixcIuG5nFwiOlwiUlwiLFwixZZcIjpcIlJcIixcIuG5nlwiOlwiUlwiLFwiyYxcIjpcIlJcIixcIuKxpFwiOlwiUlwiLFwi6p2aXCI6XCJSXCIsXCLqnqZcIjpcIlJcIixcIuqeglwiOlwiUlwiLFwi4pOIXCI6XCJTXCIsXCLvvLNcIjpcIlNcIixcIuG6nlwiOlwiU1wiLFwixZpcIjpcIlNcIixcIuG5pFwiOlwiU1wiLFwixZxcIjpcIlNcIixcIuG5oFwiOlwiU1wiLFwixaBcIjpcIlNcIixcIuG5plwiOlwiU1wiLFwi4bmiXCI6XCJTXCIsXCLhuahcIjpcIlNcIixcIsiYXCI6XCJTXCIsXCLFnlwiOlwiU1wiLFwi4rG+XCI6XCJTXCIsXCLqnqhcIjpcIlNcIixcIuqehFwiOlwiU1wiLFwi4pOJXCI6XCJUXCIsXCLvvLRcIjpcIlRcIixcIuG5qlwiOlwiVFwiLFwixaRcIjpcIlRcIixcIuG5rFwiOlwiVFwiLFwiyJpcIjpcIlRcIixcIsWiXCI6XCJUXCIsXCLhubBcIjpcIlRcIixcIuG5rlwiOlwiVFwiLFwixaZcIjpcIlRcIixcIsasXCI6XCJUXCIsXCLGrlwiOlwiVFwiLFwiyL5cIjpcIlRcIixcIuqehlwiOlwiVFwiLFwi6pyoXCI6XCJUWlwiLFwi4pOKXCI6XCJVXCIsXCLvvLVcIjpcIlVcIixcIsOZXCI6XCJVXCIsXCLDmlwiOlwiVVwiLFwiw5tcIjpcIlVcIixcIsWoXCI6XCJVXCIsXCLhubhcIjpcIlVcIixcIsWqXCI6XCJVXCIsXCLhubpcIjpcIlVcIixcIsWsXCI6XCJVXCIsXCLDnFwiOlwiVVwiLFwix5tcIjpcIlVcIixcIseXXCI6XCJVXCIsXCLHlVwiOlwiVVwiLFwix5lcIjpcIlVcIixcIuG7plwiOlwiVVwiLFwixa5cIjpcIlVcIixcIsWwXCI6XCJVXCIsXCLHk1wiOlwiVVwiLFwiyJRcIjpcIlVcIixcIsiWXCI6XCJVXCIsXCLGr1wiOlwiVVwiLFwi4buqXCI6XCJVXCIsXCLhu6hcIjpcIlVcIixcIuG7rlwiOlwiVVwiLFwi4busXCI6XCJVXCIsXCLhu7BcIjpcIlVcIixcIuG7pFwiOlwiVVwiLFwi4bmyXCI6XCJVXCIsXCLFslwiOlwiVVwiLFwi4bm2XCI6XCJVXCIsXCLhubRcIjpcIlVcIixcIsmEXCI6XCJVXCIsXCLik4tcIjpcIlZcIixcIu+8tlwiOlwiVlwiLFwi4bm8XCI6XCJWXCIsXCLhub5cIjpcIlZcIixcIsayXCI6XCJWXCIsXCLqnZ5cIjpcIlZcIixcIsmFXCI6XCJWXCIsXCLqnaBcIjpcIlZZXCIsXCLik4xcIjpcIldcIixcIu+8t1wiOlwiV1wiLFwi4bqAXCI6XCJXXCIsXCLhuoJcIjpcIldcIixcIsW0XCI6XCJXXCIsXCLhuoZcIjpcIldcIixcIuG6hFwiOlwiV1wiLFwi4bqIXCI6XCJXXCIsXCLisbJcIjpcIldcIixcIuKTjVwiOlwiWFwiLFwi77y4XCI6XCJYXCIsXCLhuopcIjpcIlhcIixcIuG6jFwiOlwiWFwiLFwi4pOOXCI6XCJZXCIsXCLvvLlcIjpcIllcIixcIuG7slwiOlwiWVwiLFwiw51cIjpcIllcIixcIsW2XCI6XCJZXCIsXCLhu7hcIjpcIllcIixcIsiyXCI6XCJZXCIsXCLhuo5cIjpcIllcIixcIsW4XCI6XCJZXCIsXCLhu7ZcIjpcIllcIixcIuG7tFwiOlwiWVwiLFwixrNcIjpcIllcIixcIsmOXCI6XCJZXCIsXCLhu75cIjpcIllcIixcIuKTj1wiOlwiWlwiLFwi77y6XCI6XCJaXCIsXCLFuVwiOlwiWlwiLFwi4bqQXCI6XCJaXCIsXCLFu1wiOlwiWlwiLFwixb1cIjpcIlpcIixcIuG6klwiOlwiWlwiLFwi4bqUXCI6XCJaXCIsXCLGtVwiOlwiWlwiLFwiyKRcIjpcIlpcIixcIuKxv1wiOlwiWlwiLFwi4rGrXCI6XCJaXCIsXCLqnaJcIjpcIlpcIixcIuKTkFwiOlwiYVwiLFwi772BXCI6XCJhXCIsXCLhuppcIjpcImFcIixcIsOgXCI6XCJhXCIsXCLDoVwiOlwiYVwiLFwiw6JcIjpcImFcIixcIuG6p1wiOlwiYVwiLFwi4bqlXCI6XCJhXCIsXCLhuqtcIjpcImFcIixcIuG6qVwiOlwiYVwiLFwiw6NcIjpcImFcIixcIsSBXCI6XCJhXCIsXCLEg1wiOlwiYVwiLFwi4bqxXCI6XCJhXCIsXCLhuq9cIjpcImFcIixcIuG6tVwiOlwiYVwiLFwi4bqzXCI6XCJhXCIsXCLIp1wiOlwiYVwiLFwix6FcIjpcImFcIixcIsOkXCI6XCJhXCIsXCLHn1wiOlwiYVwiLFwi4bqjXCI6XCJhXCIsXCLDpVwiOlwiYVwiLFwix7tcIjpcImFcIixcIseOXCI6XCJhXCIsXCLIgVwiOlwiYVwiLFwiyINcIjpcImFcIixcIuG6oVwiOlwiYVwiLFwi4bqtXCI6XCJhXCIsXCLhurdcIjpcImFcIixcIuG4gVwiOlwiYVwiLFwixIVcIjpcImFcIixcIuKxpVwiOlwiYVwiLFwiyZBcIjpcImFcIixcIuqcs1wiOlwiYWFcIixcIsOmXCI6XCJhZVwiLFwix71cIjpcImFlXCIsXCLHo1wiOlwiYWVcIixcIuqctVwiOlwiYW9cIixcIuqct1wiOlwiYXVcIixcIuqcuVwiOlwiYXZcIixcIuqcu1wiOlwiYXZcIixcIuqcvVwiOlwiYXlcIixcIuKTkVwiOlwiYlwiLFwi772CXCI6XCJiXCIsXCLhuINcIjpcImJcIixcIuG4hVwiOlwiYlwiLFwi4biHXCI6XCJiXCIsXCLGgFwiOlwiYlwiLFwixoNcIjpcImJcIixcIsmTXCI6XCJiXCIsXCLik5JcIjpcImNcIixcIu+9g1wiOlwiY1wiLFwixIdcIjpcImNcIixcIsSJXCI6XCJjXCIsXCLEi1wiOlwiY1wiLFwixI1cIjpcImNcIixcIsOnXCI6XCJjXCIsXCLhuIlcIjpcImNcIixcIsaIXCI6XCJjXCIsXCLIvFwiOlwiY1wiLFwi6py/XCI6XCJjXCIsXCLihoRcIjpcImNcIixcIuKTk1wiOlwiZFwiLFwi772EXCI6XCJkXCIsXCLhuItcIjpcImRcIixcIsSPXCI6XCJkXCIsXCLhuI1cIjpcImRcIixcIuG4kVwiOlwiZFwiLFwi4biTXCI6XCJkXCIsXCLhuI9cIjpcImRcIixcIsSRXCI6XCJkXCIsXCLGjFwiOlwiZFwiLFwiyZZcIjpcImRcIixcIsmXXCI6XCJkXCIsXCLqnbpcIjpcImRcIixcIsezXCI6XCJkelwiLFwix4ZcIjpcImR6XCIsXCLik5RcIjpcImVcIixcIu+9hVwiOlwiZVwiLFwiw6hcIjpcImVcIixcIsOpXCI6XCJlXCIsXCLDqlwiOlwiZVwiLFwi4buBXCI6XCJlXCIsXCLhur9cIjpcImVcIixcIuG7hVwiOlwiZVwiLFwi4buDXCI6XCJlXCIsXCLhur1cIjpcImVcIixcIsSTXCI6XCJlXCIsXCLhuJVcIjpcImVcIixcIuG4l1wiOlwiZVwiLFwixJVcIjpcImVcIixcIsSXXCI6XCJlXCIsXCLDq1wiOlwiZVwiLFwi4bq7XCI6XCJlXCIsXCLEm1wiOlwiZVwiLFwiyIVcIjpcImVcIixcIsiHXCI6XCJlXCIsXCLhurlcIjpcImVcIixcIuG7h1wiOlwiZVwiLFwiyKlcIjpcImVcIixcIuG4nVwiOlwiZVwiLFwixJlcIjpcImVcIixcIuG4mVwiOlwiZVwiLFwi4bibXCI6XCJlXCIsXCLJh1wiOlwiZVwiLFwiyZtcIjpcImVcIixcIsedXCI6XCJlXCIsXCLik5VcIjpcImZcIixcIu+9hlwiOlwiZlwiLFwi4bifXCI6XCJmXCIsXCLGklwiOlwiZlwiLFwi6p28XCI6XCJmXCIsXCLik5ZcIjpcImdcIixcIu+9h1wiOlwiZ1wiLFwix7VcIjpcImdcIixcIsSdXCI6XCJnXCIsXCLhuKFcIjpcImdcIixcIsSfXCI6XCJnXCIsXCLEoVwiOlwiZ1wiLFwix6dcIjpcImdcIixcIsSjXCI6XCJnXCIsXCLHpVwiOlwiZ1wiLFwiyaBcIjpcImdcIixcIuqeoVwiOlwiZ1wiLFwi4bW5XCI6XCJnXCIsXCLqnb9cIjpcImdcIixcIuKTl1wiOlwiaFwiLFwi772IXCI6XCJoXCIsXCLEpVwiOlwiaFwiLFwi4bijXCI6XCJoXCIsXCLhuKdcIjpcImhcIixcIsifXCI6XCJoXCIsXCLhuKVcIjpcImhcIixcIuG4qVwiOlwiaFwiLFwi4birXCI6XCJoXCIsXCLhupZcIjpcImhcIixcIsSnXCI6XCJoXCIsXCLisahcIjpcImhcIixcIuKxtlwiOlwiaFwiLFwiyaVcIjpcImhcIixcIsaVXCI6XCJodlwiLFwi4pOYXCI6XCJpXCIsXCLvvYlcIjpcImlcIixcIsOsXCI6XCJpXCIsXCLDrVwiOlwiaVwiLFwiw65cIjpcImlcIixcIsSpXCI6XCJpXCIsXCLEq1wiOlwiaVwiLFwixK1cIjpcImlcIixcIsOvXCI6XCJpXCIsXCLhuK9cIjpcImlcIixcIuG7iVwiOlwiaVwiLFwix5BcIjpcImlcIixcIsiJXCI6XCJpXCIsXCLIi1wiOlwiaVwiLFwi4buLXCI6XCJpXCIsXCLEr1wiOlwiaVwiLFwi4bitXCI6XCJpXCIsXCLJqFwiOlwiaVwiLFwixLFcIjpcImlcIixcIuKTmVwiOlwialwiLFwi772KXCI6XCJqXCIsXCLEtVwiOlwialwiLFwix7BcIjpcImpcIixcIsmJXCI6XCJqXCIsXCLik5pcIjpcImtcIixcIu+9i1wiOlwia1wiLFwi4bixXCI6XCJrXCIsXCLHqVwiOlwia1wiLFwi4bizXCI6XCJrXCIsXCLEt1wiOlwia1wiLFwi4bi1XCI6XCJrXCIsXCLGmVwiOlwia1wiLFwi4rGqXCI6XCJrXCIsXCLqnYFcIjpcImtcIixcIuqdg1wiOlwia1wiLFwi6p2FXCI6XCJrXCIsXCLqnqNcIjpcImtcIixcIuKTm1wiOlwibFwiLFwi772MXCI6XCJsXCIsXCLFgFwiOlwibFwiLFwixLpcIjpcImxcIixcIsS+XCI6XCJsXCIsXCLhuLdcIjpcImxcIixcIuG4uVwiOlwibFwiLFwixLxcIjpcImxcIixcIuG4vVwiOlwibFwiLFwi4bi7XCI6XCJsXCIsXCLFv1wiOlwibFwiLFwixYJcIjpcImxcIixcIsaaXCI6XCJsXCIsXCLJq1wiOlwibFwiLFwi4rGhXCI6XCJsXCIsXCLqnYlcIjpcImxcIixcIuqegVwiOlwibFwiLFwi6p2HXCI6XCJsXCIsXCLHiVwiOlwibGpcIixcIuKTnFwiOlwibVwiLFwi772NXCI6XCJtXCIsXCLhuL9cIjpcIm1cIixcIuG5gVwiOlwibVwiLFwi4bmDXCI6XCJtXCIsXCLJsVwiOlwibVwiLFwiya9cIjpcIm1cIixcIuKTnVwiOlwiblwiLFwi772OXCI6XCJuXCIsXCLHuVwiOlwiblwiLFwixYRcIjpcIm5cIixcIsOxXCI6XCJuXCIsXCLhuYVcIjpcIm5cIixcIsWIXCI6XCJuXCIsXCLhuYdcIjpcIm5cIixcIsWGXCI6XCJuXCIsXCLhuYtcIjpcIm5cIixcIuG5iVwiOlwiblwiLFwixp5cIjpcIm5cIixcIsmyXCI6XCJuXCIsXCLFiVwiOlwiblwiLFwi6p6RXCI6XCJuXCIsXCLqnqVcIjpcIm5cIixcIseMXCI6XCJualwiLFwi4pOeXCI6XCJvXCIsXCLvvY9cIjpcIm9cIixcIsOyXCI6XCJvXCIsXCLDs1wiOlwib1wiLFwiw7RcIjpcIm9cIixcIuG7k1wiOlwib1wiLFwi4buRXCI6XCJvXCIsXCLhu5dcIjpcIm9cIixcIuG7lVwiOlwib1wiLFwiw7VcIjpcIm9cIixcIuG5jVwiOlwib1wiLFwiyK1cIjpcIm9cIixcIuG5j1wiOlwib1wiLFwixY1cIjpcIm9cIixcIuG5kVwiOlwib1wiLFwi4bmTXCI6XCJvXCIsXCLFj1wiOlwib1wiLFwiyK9cIjpcIm9cIixcIsixXCI6XCJvXCIsXCLDtlwiOlwib1wiLFwiyKtcIjpcIm9cIixcIuG7j1wiOlwib1wiLFwixZFcIjpcIm9cIixcIseSXCI6XCJvXCIsXCLIjVwiOlwib1wiLFwiyI9cIjpcIm9cIixcIsahXCI6XCJvXCIsXCLhu51cIjpcIm9cIixcIuG7m1wiOlwib1wiLFwi4buhXCI6XCJvXCIsXCLhu59cIjpcIm9cIixcIuG7o1wiOlwib1wiLFwi4buNXCI6XCJvXCIsXCLhu5lcIjpcIm9cIixcIserXCI6XCJvXCIsXCLHrVwiOlwib1wiLFwiw7hcIjpcIm9cIixcIse/XCI6XCJvXCIsXCLJlFwiOlwib1wiLFwi6p2LXCI6XCJvXCIsXCLqnY1cIjpcIm9cIixcIsm1XCI6XCJvXCIsXCLFk1wiOlwib2VcIixcIsajXCI6XCJvaVwiLFwiyKNcIjpcIm91XCIsXCLqnY9cIjpcIm9vXCIsXCLik59cIjpcInBcIixcIu+9kFwiOlwicFwiLFwi4bmVXCI6XCJwXCIsXCLhuZdcIjpcInBcIixcIsalXCI6XCJwXCIsXCLhtb1cIjpcInBcIixcIuqdkVwiOlwicFwiLFwi6p2TXCI6XCJwXCIsXCLqnZVcIjpcInBcIixcIuKToFwiOlwicVwiLFwi772RXCI6XCJxXCIsXCLJi1wiOlwicVwiLFwi6p2XXCI6XCJxXCIsXCLqnZlcIjpcInFcIixcIuKToVwiOlwiclwiLFwi772SXCI6XCJyXCIsXCLFlVwiOlwiclwiLFwi4bmZXCI6XCJyXCIsXCLFmVwiOlwiclwiLFwiyJFcIjpcInJcIixcIsiTXCI6XCJyXCIsXCLhuZtcIjpcInJcIixcIuG5nVwiOlwiclwiLFwixZdcIjpcInJcIixcIuG5n1wiOlwiclwiLFwiyY1cIjpcInJcIixcIsm9XCI6XCJyXCIsXCLqnZtcIjpcInJcIixcIuqep1wiOlwiclwiLFwi6p6DXCI6XCJyXCIsXCLik6JcIjpcInNcIixcIu+9k1wiOlwic1wiLFwiw59cIjpcInNcIixcIsWbXCI6XCJzXCIsXCLhuaVcIjpcInNcIixcIsWdXCI6XCJzXCIsXCLhuaFcIjpcInNcIixcIsWhXCI6XCJzXCIsXCLhuadcIjpcInNcIixcIuG5o1wiOlwic1wiLFwi4bmpXCI6XCJzXCIsXCLImVwiOlwic1wiLFwixZ9cIjpcInNcIixcIsi/XCI6XCJzXCIsXCLqnqlcIjpcInNcIixcIuqehVwiOlwic1wiLFwi4bqbXCI6XCJzXCIsXCLik6NcIjpcInRcIixcIu+9lFwiOlwidFwiLFwi4bmrXCI6XCJ0XCIsXCLhupdcIjpcInRcIixcIsWlXCI6XCJ0XCIsXCLhua1cIjpcInRcIixcIsibXCI6XCJ0XCIsXCLFo1wiOlwidFwiLFwi4bmxXCI6XCJ0XCIsXCLhua9cIjpcInRcIixcIsWnXCI6XCJ0XCIsXCLGrVwiOlwidFwiLFwiyohcIjpcInRcIixcIuKxplwiOlwidFwiLFwi6p6HXCI6XCJ0XCIsXCLqnKlcIjpcInR6XCIsXCLik6RcIjpcInVcIixcIu+9lVwiOlwidVwiLFwiw7lcIjpcInVcIixcIsO6XCI6XCJ1XCIsXCLDu1wiOlwidVwiLFwixalcIjpcInVcIixcIuG5uVwiOlwidVwiLFwixatcIjpcInVcIixcIuG5u1wiOlwidVwiLFwixa1cIjpcInVcIixcIsO8XCI6XCJ1XCIsXCLHnFwiOlwidVwiLFwix5hcIjpcInVcIixcIseWXCI6XCJ1XCIsXCLHmlwiOlwidVwiLFwi4bunXCI6XCJ1XCIsXCLFr1wiOlwidVwiLFwixbFcIjpcInVcIixcIseUXCI6XCJ1XCIsXCLIlVwiOlwidVwiLFwiyJdcIjpcInVcIixcIsawXCI6XCJ1XCIsXCLhu6tcIjpcInVcIixcIuG7qVwiOlwidVwiLFwi4buvXCI6XCJ1XCIsXCLhu61cIjpcInVcIixcIuG7sVwiOlwidVwiLFwi4bulXCI6XCJ1XCIsXCLhubNcIjpcInVcIixcIsWzXCI6XCJ1XCIsXCLhubdcIjpcInVcIixcIuG5tVwiOlwidVwiLFwiyolcIjpcInVcIixcIuKTpVwiOlwidlwiLFwi772WXCI6XCJ2XCIsXCLhub1cIjpcInZcIixcIuG5v1wiOlwidlwiLFwiyotcIjpcInZcIixcIuqdn1wiOlwidlwiLFwiyoxcIjpcInZcIixcIuqdoVwiOlwidnlcIixcIuKTplwiOlwid1wiLFwi772XXCI6XCJ3XCIsXCLhuoFcIjpcIndcIixcIuG6g1wiOlwid1wiLFwixbVcIjpcIndcIixcIuG6h1wiOlwid1wiLFwi4bqFXCI6XCJ3XCIsXCLhuphcIjpcIndcIixcIuG6iVwiOlwid1wiLFwi4rGzXCI6XCJ3XCIsXCLik6dcIjpcInhcIixcIu+9mFwiOlwieFwiLFwi4bqLXCI6XCJ4XCIsXCLhuo1cIjpcInhcIixcIuKTqFwiOlwieVwiLFwi772ZXCI6XCJ5XCIsXCLhu7NcIjpcInlcIixcIsO9XCI6XCJ5XCIsXCLFt1wiOlwieVwiLFwi4bu5XCI6XCJ5XCIsXCLIs1wiOlwieVwiLFwi4bqPXCI6XCJ5XCIsXCLDv1wiOlwieVwiLFwi4bu3XCI6XCJ5XCIsXCLhuplcIjpcInlcIixcIuG7tVwiOlwieVwiLFwixrRcIjpcInlcIixcIsmPXCI6XCJ5XCIsXCLhu79cIjpcInlcIixcIuKTqVwiOlwielwiLFwi772aXCI6XCJ6XCIsXCLFulwiOlwielwiLFwi4bqRXCI6XCJ6XCIsXCLFvFwiOlwielwiLFwixb5cIjpcInpcIixcIuG6k1wiOlwielwiLFwi4bqVXCI6XCJ6XCIsXCLGtlwiOlwielwiLFwiyKVcIjpcInpcIixcIsmAXCI6XCJ6XCIsXCLisaxcIjpcInpcIixcIuqdo1wiOlwielwiLFwizoZcIjpcIs6RXCIsXCLOiFwiOlwizpVcIixcIs6JXCI6XCLOl1wiLFwizopcIjpcIs6ZXCIsXCLOqlwiOlwizplcIixcIs6MXCI6XCLOn1wiLFwizo5cIjpcIs6lXCIsXCLOq1wiOlwizqVcIixcIs6PXCI6XCLOqVwiLFwizqxcIjpcIs6xXCIsXCLOrVwiOlwizrVcIixcIs6uXCI6XCLOt1wiLFwizq9cIjpcIs65XCIsXCLPilwiOlwizrlcIixcIs6QXCI6XCLOuVwiLFwiz4xcIjpcIs6/XCIsXCLPjVwiOlwiz4VcIixcIs+LXCI6XCLPhVwiLFwizrBcIjpcIs+FXCIsXCLPjlwiOlwiz4lcIixcIs+CXCI6XCLPg1wiLFwi4oCZXCI6XCInXCJ9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvYmFzZVwiLFtcIi4uL3V0aWxzXCJdLGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIG4oZSx0KXtuLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfWkuRXh0ZW5kKG4saS5PYnNlcnZhYmxlKTtuLnByb3RvdHlwZS5jdXJyZW50PWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcIlRoZSBgY3VycmVudGAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLlwiKX07bi5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSx0KXt0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYHF1ZXJ5YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuXCIpfTtuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCl7fTtuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7fTtuLnByb3RvdHlwZS5nZW5lcmF0ZVJlc3VsdElkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pZCtcIi1yZXN1bHQtXCI7bis9aS5nZW5lcmF0ZUNoYXJzKDQpO2lmKHQuaWQhPW51bGwpe24rPVwiLVwiK3QuaWQudG9TdHJpbmcoKX1lbHNle24rPVwiLVwiK2kuZ2VuZXJhdGVDaGFycyg0KX1yZXR1cm4gbn07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvZGF0YS9zZWxlY3RcIixbXCIuL2Jhc2VcIixcIi4uL3V0aWxzXCIsXCJqcXVlcnlcIl0sZnVuY3Rpb24oZSxhLGwpe2Z1bmN0aW9uIG4oZSx0KXt0aGlzLiRlbGVtZW50PWU7dGhpcy5vcHRpb25zPXQ7bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1hLkV4dGVuZChuLGUpO24ucHJvdG90eXBlLmN1cnJlbnQ9ZnVuY3Rpb24oZSl7dmFyIG49W107dmFyIGk9dGhpczt0aGlzLiRlbGVtZW50LmZpbmQoXCI6c2VsZWN0ZWRcIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWwodGhpcyk7dmFyIHQ9aS5pdGVtKGUpO24ucHVzaCh0KX0pO2Uobil9O24ucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbihyKXt2YXIgbz10aGlzO3Iuc2VsZWN0ZWQ9dHJ1ZTtpZihsKHIuZWxlbWVudCkuaXMoXCJvcHRpb25cIikpe3IuZWxlbWVudC5zZWxlY3RlZD10cnVlO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihcImlucHV0XCIpLnRyaWdnZXIoXCJjaGFuZ2VcIik7cmV0dXJufWlmKHRoaXMuJGVsZW1lbnQucHJvcChcIm11bHRpcGxlXCIpKXt0aGlzLmN1cnJlbnQoZnVuY3Rpb24oZSl7dmFyIHQ9W107cj1bcl07ci5wdXNoLmFwcGx5KHIsZSk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl0uaWQ7aWYobC5pbkFycmF5KGksdCk9PT0tMSl7dC5wdXNoKGkpfX1vLiRlbGVtZW50LnZhbCh0KTtvLiRlbGVtZW50LnRyaWdnZXIoXCJpbnB1dFwiKS50cmlnZ2VyKFwiY2hhbmdlXCIpfSl9ZWxzZXt2YXIgZT1yLmlkO3RoaXMuJGVsZW1lbnQudmFsKGUpO3RoaXMuJGVsZW1lbnQudHJpZ2dlcihcImlucHV0XCIpLnRyaWdnZXIoXCJjaGFuZ2VcIil9fTtuLnByb3RvdHlwZS51bnNlbGVjdD1mdW5jdGlvbihyKXt2YXIgbz10aGlzO2lmKCF0aGlzLiRlbGVtZW50LnByb3AoXCJtdWx0aXBsZVwiKSl7cmV0dXJufXIuc2VsZWN0ZWQ9ZmFsc2U7aWYobChyLmVsZW1lbnQpLmlzKFwib3B0aW9uXCIpKXtyLmVsZW1lbnQuc2VsZWN0ZWQ9ZmFsc2U7dGhpcy4kZWxlbWVudC50cmlnZ2VyKFwiaW5wdXRcIikudHJpZ2dlcihcImNoYW5nZVwiKTtyZXR1cm59dGhpcy5jdXJyZW50KGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dLmlkO2lmKGkhPT1yLmlkJiZsLmluQXJyYXkoaSx0KT09PS0xKXt0LnB1c2goaSl9fW8uJGVsZW1lbnQudmFsKHQpO28uJGVsZW1lbnQudHJpZ2dlcihcImlucHV0XCIpLnRyaWdnZXIoXCJjaGFuZ2VcIil9KX07bi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7dGhpcy5jb250YWluZXI9ZTtlLm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oZSl7bi5zZWxlY3QoZS5kYXRhKX0pO2Uub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKGUpe24udW5zZWxlY3QoZS5kYXRhKX0pfTtuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5maW5kKFwiKlwiKS5lYWNoKGZ1bmN0aW9uKCl7YS5SZW1vdmVEYXRhKHRoaXMpfSl9O24ucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKGksZSl7dmFyIHI9W107dmFyIG89dGhpczt2YXIgdD10aGlzLiRlbGVtZW50LmNoaWxkcmVuKCk7dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9bCh0aGlzKTtpZighZS5pcyhcIm9wdGlvblwiKSYmIWUuaXMoXCJvcHRncm91cFwiKSl7cmV0dXJufXZhciB0PW8uaXRlbShlKTt2YXIgbj1vLm1hdGNoZXMoaSx0KTtpZihuIT09bnVsbCl7ci5wdXNoKG4pfX0pO2Uoe3Jlc3VsdHM6cn0pfTtuLnByb3RvdHlwZS5hZGRPcHRpb25zPWZ1bmN0aW9uKGUpe2EuYXBwZW5kTWFueSh0aGlzLiRlbGVtZW50LGUpfTtuLnByb3RvdHlwZS5vcHRpb249ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZS5jaGlsZHJlbil7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0Z3JvdXBcIik7dC5sYWJlbD1lLnRleHR9ZWxzZXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIik7aWYodC50ZXh0Q29udGVudCE9PXVuZGVmaW5lZCl7dC50ZXh0Q29udGVudD1lLnRleHR9ZWxzZXt0LmlubmVyVGV4dD1lLnRleHR9fWlmKGUuaWQhPT11bmRlZmluZWQpe3QudmFsdWU9ZS5pZH1pZihlLmRpc2FibGVkKXt0LmRpc2FibGVkPXRydWV9aWYoZS5zZWxlY3RlZCl7dC5zZWxlY3RlZD10cnVlfWlmKGUudGl0bGUpe3QudGl0bGU9ZS50aXRsZX12YXIgbj1sKHQpO3ZhciBpPXRoaXMuX25vcm1hbGl6ZUl0ZW0oZSk7aS5lbGVtZW50PXQ7YS5TdG9yZURhdGEodCxcImRhdGFcIixpKTtyZXR1cm4gbn07bi5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXt2YXIgdD17fTt0PWEuR2V0RGF0YShlWzBdLFwiZGF0YVwiKTtpZih0IT1udWxsKXtyZXR1cm4gdH1pZihlLmlzKFwib3B0aW9uXCIpKXt0PXtpZDplLnZhbCgpLHRleHQ6ZS50ZXh0KCksZGlzYWJsZWQ6ZS5wcm9wKFwiZGlzYWJsZWRcIiksc2VsZWN0ZWQ6ZS5wcm9wKFwic2VsZWN0ZWRcIiksdGl0bGU6ZS5wcm9wKFwidGl0bGVcIil9fWVsc2UgaWYoZS5pcyhcIm9wdGdyb3VwXCIpKXt0PXt0ZXh0OmUucHJvcChcImxhYmVsXCIpLGNoaWxkcmVuOltdLHRpdGxlOmUucHJvcChcInRpdGxlXCIpfTt2YXIgbj1lLmNoaWxkcmVuKFwib3B0aW9uXCIpO3ZhciBpPVtdO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1sKG5bcl0pO3ZhciBzPXRoaXMuaXRlbShvKTtpLnB1c2gocyl9dC5jaGlsZHJlbj1pfXQ9dGhpcy5fbm9ybWFsaXplSXRlbSh0KTt0LmVsZW1lbnQ9ZVswXTthLlN0b3JlRGF0YShlWzBdLFwiZGF0YVwiLHQpO3JldHVybiB0fTtuLnByb3RvdHlwZS5fbm9ybWFsaXplSXRlbT1mdW5jdGlvbihlKXtpZihlIT09T2JqZWN0KGUpKXtlPXtpZDplLHRleHQ6ZX19ZT1sLmV4dGVuZCh7fSx7dGV4dDpcIlwifSxlKTt2YXIgdD17c2VsZWN0ZWQ6ZmFsc2UsZGlzYWJsZWQ6ZmFsc2V9O2lmKGUuaWQhPW51bGwpe2UuaWQ9ZS5pZC50b1N0cmluZygpfWlmKGUudGV4dCE9bnVsbCl7ZS50ZXh0PWUudGV4dC50b1N0cmluZygpfWlmKGUuX3Jlc3VsdElkPT1udWxsJiZlLmlkJiZ0aGlzLmNvbnRhaW5lciE9bnVsbCl7ZS5fcmVzdWx0SWQ9dGhpcy5nZW5lcmF0ZVJlc3VsdElkKHRoaXMuY29udGFpbmVyLGUpfXJldHVybiBsLmV4dGVuZCh7fSx0LGUpfTtuLnByb3RvdHlwZS5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5vcHRpb25zLmdldChcIm1hdGNoZXJcIik7cmV0dXJuIG4oZSx0KX07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvZGF0YS9hcnJheVwiLFtcIi4vc2VsZWN0XCIsXCIuLi91dGlsc1wiLFwianF1ZXJ5XCJdLGZ1bmN0aW9uKGUscCxnKXtmdW5jdGlvbiBpKGUsdCl7dGhpcy5fZGF0YVRvQ29udmVydD10LmdldChcImRhdGFcIil8fFtdO2kuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxlLHQpfXAuRXh0ZW5kKGksZSk7aS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQpe2kuX19zdXBlcl9fLmJpbmQuY2FsbCh0aGlzLGUsdCk7dGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyh0aGlzLl9kYXRhVG9Db252ZXJ0KSl9O2kucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgZT10aGlzLiRlbGVtZW50LmZpbmQoXCJvcHRpb25cIikuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudmFsdWU9PW4uaWQudG9TdHJpbmcoKX0pO2lmKGUubGVuZ3RoPT09MCl7ZT10aGlzLm9wdGlvbihuKTt0aGlzLmFkZE9wdGlvbnMoZSl9aS5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcyxuKX07aS5wcm90b3R5cGUuY29udmVydFRvT3B0aW9ucz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3ZhciBuPXRoaXMuJGVsZW1lbnQuZmluZChcIm9wdGlvblwiKTt2YXIgaT1uLm1hcChmdW5jdGlvbigpe3JldHVybiB0Lml0ZW0oZyh0aGlzKSkuaWR9KS5nZXQoKTt2YXIgcj1bXTtmdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnKHRoaXMpLnZhbCgpPT1lLmlkfX1mb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIGE9dGhpcy5fbm9ybWFsaXplSXRlbShlW3NdKTtpZihnLmluQXJyYXkoYS5pZCxpKT49MCl7dmFyIGw9bi5maWx0ZXIobyhhKSk7dmFyIGM9dGhpcy5pdGVtKGwpO3ZhciB1PWcuZXh0ZW5kKHRydWUse30sYSxjKTt2YXIgZj10aGlzLm9wdGlvbih1KTtsLnJlcGxhY2VXaXRoKGYpO2NvbnRpbnVlfXZhciBkPXRoaXMub3B0aW9uKGEpO2lmKGEuY2hpbGRyZW4pe3ZhciBoPXRoaXMuY29udmVydFRvT3B0aW9ucyhhLmNoaWxkcmVuKTtwLmFwcGVuZE1hbnkoZCxoKX1yLnB1c2goZCl9cmV0dXJuIHJ9O3JldHVybiBpfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvYWpheFwiLFtcIi4vYXJyYXlcIixcIi4uL3V0aWxzXCIsXCJqcXVlcnlcIl0sZnVuY3Rpb24oZSx0LHMpe2Z1bmN0aW9uIG4oZSx0KXt0aGlzLmFqYXhPcHRpb25zPXRoaXMuX2FwcGx5RGVmYXVsdHModC5nZXQoXCJhamF4XCIpKTtpZih0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzIT1udWxsKXt0aGlzLnByb2Nlc3NSZXN1bHRzPXRoaXMuYWpheE9wdGlvbnMucHJvY2Vzc1Jlc3VsdHN9bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLGUsdCl9dC5FeHRlbmQobixlKTtuLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0cz1mdW5jdGlvbihlKXt2YXIgdD17ZGF0YTpmdW5jdGlvbiBlKHQpe3JldHVybiBzLmV4dGVuZCh7fSx0LHtxOnQudGVybX0pfSx0cmFuc3BvcnQ6ZnVuY3Rpb24gZSh0LG4saSl7dmFyIHI9cy5hamF4KHQpO3IudGhlbihuKTtyLmZhaWwoaSk7cmV0dXJuIHJ9fTtyZXR1cm4gcy5leHRlbmQoe30sdCxlLHRydWUpfTtuLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cz1mdW5jdGlvbihlKXtyZXR1cm4gZX07bi5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24obixpKXt2YXIgZT1bXTt2YXIgcj10aGlzO2lmKHRoaXMuX3JlcXVlc3QhPW51bGwpe2lmKHMuaXNGdW5jdGlvbih0aGlzLl9yZXF1ZXN0LmFib3J0KSl7dGhpcy5fcmVxdWVzdC5hYm9ydCgpfXRoaXMuX3JlcXVlc3Q9bnVsbH12YXIgdD1zLmV4dGVuZCh7dHlwZTpcIkdFVFwifSx0aGlzLmFqYXhPcHRpb25zKTtpZih0eXBlb2YgdC51cmw9PT1cImZ1bmN0aW9uXCIpe3QudXJsPXQudXJsLmNhbGwodGhpcy4kZWxlbWVudCxuKX1pZih0eXBlb2YgdC5kYXRhPT09XCJmdW5jdGlvblwiKXt0LmRhdGE9dC5kYXRhLmNhbGwodGhpcy4kZWxlbWVudCxuKX1mdW5jdGlvbiBvKCl7dmFyIGU9dC50cmFuc3BvcnQodCxmdW5jdGlvbihlKXt2YXIgdD1yLnByb2Nlc3NSZXN1bHRzKGUsbik7aWYoci5vcHRpb25zLmdldChcImRlYnVnXCIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvcil7aWYoIXR8fCF0LnJlc3VsdHN8fCFzLmlzQXJyYXkodC5yZXN1bHRzKSl7Y29uc29sZS5lcnJvcihcIlNlbGVjdDI6IFRoZSBBSkFYIHJlc3VsdHMgZGlkIG5vdCByZXR1cm4gYW4gYXJyYXkgaW4gdGhlIFwiK1wiYHJlc3VsdHNgIGtleSBvZiB0aGUgcmVzcG9uc2UuXCIpfX1pKHQpfSxmdW5jdGlvbigpe2lmKFwic3RhdHVzXCJpbiBlJiYoZS5zdGF0dXM9PT0wfHxlLnN0YXR1cz09PVwiMFwiKSl7cmV0dXJufXIudHJpZ2dlcihcInJlc3VsdHM6bWVzc2FnZVwiLHttZXNzYWdlOlwiZXJyb3JMb2FkaW5nXCJ9KX0pO3IuX3JlcXVlc3Q9ZX1pZih0aGlzLmFqYXhPcHRpb25zLmRlbGF5JiZuLnRlcm0hPW51bGwpe2lmKHRoaXMuX3F1ZXJ5VGltZW91dCl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9xdWVyeVRpbWVvdXQpfXRoaXMuX3F1ZXJ5VGltZW91dD13aW5kb3cuc2V0VGltZW91dChvLHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpfWVsc2V7bygpfX07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvZGF0YS90YWdzXCIsW1wianF1ZXJ5XCJdLGZ1bmN0aW9uKHUpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZhciBpPW4uZ2V0KFwidGFnc1wiKTt2YXIgcj1uLmdldChcImNyZWF0ZVRhZ1wiKTtpZihyIT09dW5kZWZpbmVkKXt0aGlzLmNyZWF0ZVRhZz1yfXZhciBvPW4uZ2V0KFwiaW5zZXJ0VGFnXCIpO2lmKG8hPT11bmRlZmluZWQpe3RoaXMuaW5zZXJ0VGFnPW99ZS5jYWxsKHRoaXMsdCxuKTtpZih1LmlzQXJyYXkoaSkpe2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYT1pW3NdO3ZhciBsPXRoaXMuX25vcm1hbGl6ZUl0ZW0oYSk7dmFyIGM9dGhpcy5vcHRpb24obCk7dGhpcy4kZWxlbWVudC5hcHBlbmQoYyl9fX1lLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLGYsZCl7dmFyIGg9dGhpczt0aGlzLl9yZW1vdmVPbGRUYWdzKCk7aWYoZi50ZXJtPT1udWxsfHxmLnBhZ2UhPW51bGwpe2UuY2FsbCh0aGlzLGYsZCk7cmV0dXJufWZ1bmN0aW9uIHAoZSx0KXt2YXIgbj1lLnJlc3VsdHM7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciByPW5baV07dmFyIG89ci5jaGlsZHJlbiE9bnVsbCYmIXAoe3Jlc3VsdHM6ci5jaGlsZHJlbn0sdHJ1ZSk7dmFyIHM9KHIudGV4dHx8XCJcIikudG9VcHBlckNhc2UoKTt2YXIgYT0oZi50ZXJtfHxcIlwiKS50b1VwcGVyQ2FzZSgpO3ZhciBsPXM9PT1hO2lmKGx8fG8pe2lmKHQpe3JldHVybiBmYWxzZX1lLmRhdGE9bjtkKGUpO3JldHVybn19aWYodCl7cmV0dXJuIHRydWV9dmFyIGM9aC5jcmVhdGVUYWcoZik7aWYoYyE9bnVsbCl7dmFyIHU9aC5vcHRpb24oYyk7dS5hdHRyKFwiZGF0YS1zZWxlY3QyLXRhZ1wiLHRydWUpO2guYWRkT3B0aW9ucyhbdV0pO2guaW5zZXJ0VGFnKG4sYyl9ZS5yZXN1bHRzPW47ZChlKX1lLmNhbGwodGhpcyxmLHApfTtlLnByb3RvdHlwZS5jcmVhdGVUYWc9ZnVuY3Rpb24oZSx0KXt2YXIgbj11LnRyaW0odC50ZXJtKTtpZihuPT09XCJcIil7cmV0dXJuIG51bGx9cmV0dXJue2lkOm4sdGV4dDpufX07ZS5wcm90b3R5cGUuaW5zZXJ0VGFnPWZ1bmN0aW9uKGUsdCxuKXt0LnVuc2hpZnQobil9O2UucHJvdG90eXBlLl9yZW1vdmVPbGRUYWdzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJGVsZW1lbnQuZmluZChcIm9wdGlvbltkYXRhLXNlbGVjdDItdGFnXVwiKTt0LmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLnNlbGVjdGVkKXtyZXR1cm59dSh0aGlzKS5yZW1vdmUoKX0pfTtyZXR1cm4gZX0pO24uZGVmaW5lKFwic2VsZWN0Mi9kYXRhL3Rva2VuaXplclwiLFtcImpxdWVyeVwiXSxmdW5jdGlvbihkKXtmdW5jdGlvbiBlKGUsdCxuKXt2YXIgaT1uLmdldChcInRva2VuaXplclwiKTtpZihpIT09dW5kZWZpbmVkKXt0aGlzLnRva2VuaXplcj1pfWUuY2FsbCh0aGlzLHQsbil9ZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbil7ZS5jYWxsKHRoaXMsdCxuKTt0aGlzLiRzZWFyY2g9dC5kcm9wZG93bi4kc2VhcmNofHx0LnNlbGVjdGlvbi4kc2VhcmNofHxuLmZpbmQoXCIuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkXCIpfTtlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztmdW5jdGlvbiBpKGUpe3ZhciB0PXIuX25vcm1hbGl6ZUl0ZW0oZSk7dmFyIG49ci4kZWxlbWVudC5maW5kKFwib3B0aW9uXCIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBkKHRoaXMpLnZhbCgpPT09dC5pZH0pO2lmKCFuLmxlbmd0aCl7dmFyIGk9ci5vcHRpb24odCk7aS5hdHRyKFwiZGF0YS1zZWxlY3QyLXRhZ1wiLHRydWUpO3IuX3JlbW92ZU9sZFRhZ3MoKTtyLmFkZE9wdGlvbnMoW2ldKX1vKHQpfWZ1bmN0aW9uIG8oZSl7ci50cmlnZ2VyKFwic2VsZWN0XCIse2RhdGE6ZX0pfXQudGVybT10LnRlcm18fFwiXCI7dmFyIHM9dGhpcy50b2tlbml6ZXIodCx0aGlzLm9wdGlvbnMsaSk7aWYocy50ZXJtIT09dC50ZXJtKXtpZih0aGlzLiRzZWFyY2gubGVuZ3RoKXt0aGlzLiRzZWFyY2gudmFsKHMudGVybSk7dGhpcy4kc2VhcmNoLnRyaWdnZXIoXCJmb2N1c1wiKX10LnRlcm09cy50ZXJtfWUuY2FsbCh0aGlzLHQsbil9O2UucHJvdG90eXBlLnRva2VuaXplcj1mdW5jdGlvbihlLHQsbixpKXt2YXIgcj1uLmdldChcInRva2VuU2VwYXJhdG9yc1wiKXx8W107dmFyIG89dC50ZXJtO3ZhciBzPTA7dmFyIGE9dGhpcy5jcmVhdGVUYWd8fGZ1bmN0aW9uKGUpe3JldHVybntpZDplLnRlcm0sdGV4dDplLnRlcm19fTt3aGlsZShzPG8ubGVuZ3RoKXt2YXIgbD1vW3NdO2lmKGQuaW5BcnJheShsLHIpPT09LTEpe3MrKztjb250aW51ZX12YXIgYz1vLnN1YnN0cigwLHMpO3ZhciB1PWQuZXh0ZW5kKHt9LHQse3Rlcm06Y30pO3ZhciBmPWEodSk7aWYoZj09bnVsbCl7cysrO2NvbnRpbnVlfWkoZik7bz1vLnN1YnN0cihzKzEpfHxcIlwiO3M9MH1yZXR1cm57dGVybTpvfX07cmV0dXJuIGV9KTtuLmRlZmluZShcInNlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGhcIixbXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3RoaXMubWluaW11bUlucHV0TGVuZ3RoPW4uZ2V0KFwibWluaW11bUlucHV0TGVuZ3RoXCIpO2UuY2FsbCh0aGlzLHQsbil9ZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSx0LG4pe3QudGVybT10LnRlcm18fFwiXCI7aWYodC50ZXJtLmxlbmd0aDx0aGlzLm1pbmltdW1JbnB1dExlbmd0aCl7dGhpcy50cmlnZ2VyKFwicmVzdWx0czptZXNzYWdlXCIse21lc3NhZ2U6XCJpbnB1dFRvb1Nob3J0XCIsYXJnczp7bWluaW11bTp0aGlzLm1pbmltdW1JbnB1dExlbmd0aCxpbnB1dDp0LnRlcm0scGFyYW1zOnR9fSk7cmV0dXJufWUuY2FsbCh0aGlzLHQsbil9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvbWF4aW11bUlucHV0TGVuZ3RoXCIsW10sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLm1heGltdW1JbnB1dExlbmd0aD1uLmdldChcIm1heGltdW1JbnB1dExlbmd0aFwiKTtlLmNhbGwodGhpcyx0LG4pfWUucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKGUsdCxuKXt0LnRlcm09dC50ZXJtfHxcIlwiO2lmKHRoaXMubWF4aW11bUlucHV0TGVuZ3RoPjAmJnQudGVybS5sZW5ndGg+dGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgpe3RoaXMudHJpZ2dlcihcInJlc3VsdHM6bWVzc2FnZVwiLHttZXNzYWdlOlwiaW5wdXRUb29Mb25nXCIsYXJnczp7bWF4aW11bTp0aGlzLm1heGltdW1JbnB1dExlbmd0aCxpbnB1dDp0LnRlcm0scGFyYW1zOnR9fSk7cmV0dXJufWUuY2FsbCh0aGlzLHQsbil9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aFwiLFtdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoPW4uZ2V0KFwibWF4aW11bVNlbGVjdGlvbkxlbmd0aFwiKTtlLmNhbGwodGhpcyx0LG4pfWUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXM7ZS5jYWxsKHRoaXMsdCxuKTt0Lm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oKXtpLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkKCl9KX07ZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXM7dGhpcy5fY2hlY2tJZk1heGltdW1TZWxlY3RlZChmdW5jdGlvbigpe2UuY2FsbChpLHQsbil9KX07ZS5wcm90b3R5cGUuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQ9ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzO3RoaXMuY3VycmVudChmdW5jdGlvbihlKXt2YXIgdD1lIT1udWxsP2UubGVuZ3RoOjA7aWYoaS5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoPjAmJnQ+PWkubWF4aW11bVNlbGVjdGlvbkxlbmd0aCl7aS50cmlnZ2VyKFwicmVzdWx0czptZXNzYWdlXCIse21lc3NhZ2U6XCJtYXhpbXVtU2VsZWN0ZWRcIixhcmdzOnttYXhpbXVtOmkubWF4aW11bVNlbGVjdGlvbkxlbmd0aH19KTtyZXR1cm59aWYobil7bigpfX0pfTtyZXR1cm4gZX0pO24uZGVmaW5lKFwic2VsZWN0Mi9kcm9wZG93blwiLFtcImpxdWVyeVwiLFwiLi91dGlsc1wiXSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSx0KXt0aGlzLiRlbGVtZW50PWU7dGhpcy5vcHRpb25zPXQ7bi5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1lLkV4dGVuZChuLGUuT2JzZXJ2YWJsZSk7bi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dCgnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCI+JysnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNcIj48L3NwYW4+JytcIjwvc3Bhbj5cIik7ZS5hdHRyKFwiZGlyXCIsdGhpcy5vcHRpb25zLmdldChcImRpclwiKSk7dGhpcy4kZHJvcGRvd249ZTtyZXR1cm4gZX07bi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe307bi5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oZSx0KXt9O24ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRkcm9wZG93bi5yZW1vdmUoKX07cmV0dXJuIG59KTtuLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vc2VhcmNoXCIsW1wianF1ZXJ5XCIsXCIuLi91dGlsc1wiXSxmdW5jdGlvbihvLGUpe2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2FsbCh0aGlzKTt2YXIgbj1vKCc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1kcm9wZG93blwiPicrJzxpbnB1dCBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiIHR5cGU9XCJzZWFyY2hcIiB0YWJpbmRleD1cIi0xXCInKycgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicrJyBzcGVsbGNoZWNrPVwiZmFsc2VcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgLz4nK1wiPC9zcGFuPlwiKTt0aGlzLiRzZWFyY2hDb250YWluZXI9bjt0aGlzLiRzZWFyY2g9bi5maW5kKFwiaW5wdXRcIik7dC5wcmVwZW5kKG4pO3JldHVybiB0fTt0LnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzO3ZhciByPXQuaWQrXCItcmVzdWx0c1wiO2UuY2FsbCh0aGlzLHQsbik7dGhpcy4kc2VhcmNoLm9uKFwia2V5ZG93blwiLGZ1bmN0aW9uKGUpe2kudHJpZ2dlcihcImtleXByZXNzXCIsZSk7aS5fa2V5VXBQcmV2ZW50ZWQ9ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKX0pO3RoaXMuJHNlYXJjaC5vbihcImlucHV0XCIsZnVuY3Rpb24oZSl7byh0aGlzKS5vZmYoXCJrZXl1cFwiKX0pO3RoaXMuJHNlYXJjaC5vbihcImtleXVwIGlucHV0XCIsZnVuY3Rpb24oZSl7aS5oYW5kbGVTZWFyY2goZSl9KTt0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7aS4kc2VhcmNoLmF0dHIoXCJ0YWJpbmRleFwiLDApO2kuJHNlYXJjaC5hdHRyKFwiYXJpYS1jb250cm9sc1wiLHIpO2kuJHNlYXJjaC50cmlnZ2VyKFwiZm9jdXNcIik7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfSwwKX0pO3Qub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7aS4kc2VhcmNoLmF0dHIoXCJ0YWJpbmRleFwiLC0xKTtpLiRzZWFyY2gucmVtb3ZlQXR0cihcImFyaWEtY29udHJvbHNcIik7aS4kc2VhcmNoLnJlbW92ZUF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7aS4kc2VhcmNoLnZhbChcIlwiKTtpLiRzZWFyY2gudHJpZ2dlcihcImJsdXJcIil9KTt0Lm9uKFwiZm9jdXNcIixmdW5jdGlvbigpe2lmKCF0LmlzT3BlbigpKXtpLiRzZWFyY2gudHJpZ2dlcihcImZvY3VzXCIpfX0pO3Qub24oXCJyZXN1bHRzOmFsbFwiLGZ1bmN0aW9uKGUpe2lmKGUucXVlcnkudGVybT09bnVsbHx8ZS5xdWVyeS50ZXJtPT09XCJcIil7dmFyIHQ9aS5zaG93U2VhcmNoKGUpO2lmKHQpe2kuJHNlYXJjaENvbnRhaW5lci5yZW1vdmVDbGFzcyhcInNlbGVjdDItc2VhcmNoLS1oaWRlXCIpfWVsc2V7aS4kc2VhcmNoQ29udGFpbmVyLmFkZENsYXNzKFwic2VsZWN0Mi1zZWFyY2gtLWhpZGVcIil9fX0pO3Qub24oXCJyZXN1bHRzOmZvY3VzXCIsZnVuY3Rpb24oZSl7aWYoZS5kYXRhLl9yZXN1bHRJZCl7aS4kc2VhcmNoLmF0dHIoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIixlLmRhdGEuX3Jlc3VsdElkKX1lbHNle2kuJHNlYXJjaC5yZW1vdmVBdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpfX0pfTt0LnByb3RvdHlwZS5oYW5kbGVTZWFyY2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuX2tleVVwUHJldmVudGVkKXt2YXIgdD10aGlzLiRzZWFyY2gudmFsKCk7dGhpcy50cmlnZ2VyKFwicXVlcnlcIix7dGVybTp0fSl9dGhpcy5fa2V5VXBQcmV2ZW50ZWQ9ZmFsc2V9O3QucHJvdG90eXBlLnNob3dTZWFyY2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHJ1ZX07cmV0dXJuIHR9KTtuLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyXCIsW10sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLGkpe3RoaXMucGxhY2Vob2xkZXI9dGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihuLmdldChcInBsYWNlaG9sZGVyXCIpKTtlLmNhbGwodGhpcyx0LG4saSl9ZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUsdCl7dC5yZXN1bHRzPXRoaXMucmVtb3ZlUGxhY2Vob2xkZXIodC5yZXN1bHRzKTtlLmNhbGwodGhpcyx0KX07ZS5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdD09PVwic3RyaW5nXCIpe3Q9e2lkOlwiXCIsdGV4dDp0fX1yZXR1cm4gdH07ZS5wcm90b3R5cGUucmVtb3ZlUGxhY2Vob2xkZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnNsaWNlKDApO2Zvcih2YXIgaT10Lmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgcj10W2ldO2lmKHRoaXMucGxhY2Vob2xkZXIuaWQ9PT1yLmlkKXtuLnNwbGljZShpLDEpfX1yZXR1cm4gbn07cmV0dXJuIGV9KTtuLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vaW5maW5pdGVTY3JvbGxcIixbXCJqcXVlcnlcIl0sZnVuY3Rpb24oaSl7ZnVuY3Rpb24gZShlLHQsbixpKXt0aGlzLmxhc3RQYXJhbXM9e307ZS5jYWxsKHRoaXMsdCxuLGkpO3RoaXMuJGxvYWRpbmdNb3JlPXRoaXMuY3JlYXRlTG9hZGluZ01vcmUoKTt0aGlzLmxvYWRpbmc9ZmFsc2V9ZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUsdCl7dGhpcy4kbG9hZGluZ01vcmUucmVtb3ZlKCk7dGhpcy5sb2FkaW5nPWZhbHNlO2UuY2FsbCh0aGlzLHQpO2lmKHRoaXMuc2hvd0xvYWRpbmdNb3JlKHQpKXt0aGlzLiRyZXN1bHRzLmFwcGVuZCh0aGlzLiRsb2FkaW5nTW9yZSk7dGhpcy5sb2FkTW9yZUlmTmVlZGVkKCl9fTtlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzO2UuY2FsbCh0aGlzLHQsbik7dC5vbihcInF1ZXJ5XCIsZnVuY3Rpb24oZSl7aS5sYXN0UGFyYW1zPWU7aS5sb2FkaW5nPXRydWV9KTt0Lm9uKFwicXVlcnk6YXBwZW5kXCIsZnVuY3Rpb24oZSl7aS5sYXN0UGFyYW1zPWU7aS5sb2FkaW5nPXRydWV9KTt0aGlzLiRyZXN1bHRzLm9uKFwic2Nyb2xsXCIsdGhpcy5sb2FkTW9yZUlmTmVlZGVkLmJpbmQodGhpcykpfTtlLnByb3RvdHlwZS5sb2FkTW9yZUlmTmVlZGVkPWZ1bmN0aW9uKCl7dmFyIGU9aS5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy4kbG9hZGluZ01vcmVbMF0pO2lmKHRoaXMubG9hZGluZ3x8IWUpe3JldHVybn12YXIgdD10aGlzLiRyZXN1bHRzLm9mZnNldCgpLnRvcCt0aGlzLiRyZXN1bHRzLm91dGVySGVpZ2h0KGZhbHNlKTt2YXIgbj10aGlzLiRsb2FkaW5nTW9yZS5vZmZzZXQoKS50b3ArdGhpcy4kbG9hZGluZ01vcmUub3V0ZXJIZWlnaHQoZmFsc2UpO2lmKHQrNTA+PW4pe3RoaXMubG9hZE1vcmUoKX19O2UucHJvdG90eXBlLmxvYWRNb3JlPWZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5nPXRydWU7dmFyIGU9aS5leHRlbmQoe30se3BhZ2U6MX0sdGhpcy5sYXN0UGFyYW1zKTtlLnBhZ2UrKzt0aGlzLnRyaWdnZXIoXCJxdWVyeTphcHBlbmRcIixlKX07ZS5wcm90b3R5cGUuc2hvd0xvYWRpbmdNb3JlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQucGFnaW5hdGlvbiYmdC5wYWdpbmF0aW9uLm1vcmV9O2UucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlPWZ1bmN0aW9uKCl7dmFyIGU9aShcIjxsaSBcIisnY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlXCInKydyb2xlPVwib3B0aW9uXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj48L2xpPicpO3ZhciB0PXRoaXMub3B0aW9ucy5nZXQoXCJ0cmFuc2xhdGlvbnNcIikuZ2V0KFwibG9hZGluZ01vcmVcIik7ZS5odG1sKHQodGhpcy5sYXN0UGFyYW1zKSk7cmV0dXJuIGV9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2Ryb3Bkb3duL2F0dGFjaEJvZHlcIixbXCJqcXVlcnlcIixcIi4uL3V0aWxzXCJdLGZ1bmN0aW9uKGgsYSl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy4kZHJvcGRvd25QYXJlbnQ9aChuLmdldChcImRyb3Bkb3duUGFyZW50XCIpfHxkb2N1bWVudC5ib2R5KTtlLmNhbGwodGhpcyx0LG4pfWUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXM7ZS5jYWxsKHRoaXMsdCxuKTt0Lm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7aS5fc2hvd0Ryb3Bkb3duKCk7aS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpO2kuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyh0KX0pO3Qub24oXCJjbG9zZVwiLGZ1bmN0aW9uKCl7aS5faGlkZURyb3Bkb3duKCk7aS5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKHQpfSk7dGhpcy4kZHJvcGRvd25Db250YWluZXIub24oXCJtb3VzZWRvd25cIixmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfSl9O2UucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZSl7ZS5jYWxsKHRoaXMpO3RoaXMuJGRyb3Bkb3duQ29udGFpbmVyLnJlbW92ZSgpfTtlLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihlLHQsbil7dC5hdHRyKFwiY2xhc3NcIixuLmF0dHIoXCJjbGFzc1wiKSk7dC5yZW1vdmVDbGFzcyhcInNlbGVjdDJcIik7dC5hZGRDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpO3QuY3NzKHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOi05OTk5OTl9KTt0aGlzLiRjb250YWluZXI9bn07ZS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWgoXCI8c3Bhbj48L3NwYW4+XCIpO3ZhciBuPWUuY2FsbCh0aGlzKTt0LmFwcGVuZChuKTt0aGlzLiRkcm9wZG93bkNvbnRhaW5lcj10O3JldHVybiB0fTtlLnByb3RvdHlwZS5faGlkZURyb3Bkb3duPWZ1bmN0aW9uKGUpe3RoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpfTtlLnByb3RvdHlwZS5fYmluZENvbnRhaW5lclJlc3VsdEhhbmRsZXJzPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQpe3JldHVybn12YXIgbj10aGlzO3Qub24oXCJyZXN1bHRzOmFsbFwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpO24uX3Jlc2l6ZURyb3Bkb3duKCl9KTt0Lm9uKFwicmVzdWx0czphcHBlbmRcIixmdW5jdGlvbigpe24uX3Bvc2l0aW9uRHJvcGRvd24oKTtuLl9yZXNpemVEcm9wZG93bigpfSk7dC5vbihcInJlc3VsdHM6bWVzc2FnZVwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpO24uX3Jlc2l6ZURyb3Bkb3duKCl9KTt0Lm9uKFwic2VsZWN0XCIsZnVuY3Rpb24oKXtuLl9wb3NpdGlvbkRyb3Bkb3duKCk7bi5fcmVzaXplRHJvcGRvd24oKX0pO3Qub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpO24uX3Jlc2l6ZURyb3Bkb3duKCl9KTt0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZD10cnVlfTtlLnByb3RvdHlwZS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczt2YXIgaT1cInNjcm9sbC5zZWxlY3QyLlwiK3QuaWQ7dmFyIHI9XCJyZXNpemUuc2VsZWN0Mi5cIit0LmlkO3ZhciBvPVwib3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi5cIit0LmlkO3ZhciBzPXRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKGEuaGFzU2Nyb2xsKTtzLmVhY2goZnVuY3Rpb24oKXthLlN0b3JlRGF0YSh0aGlzLFwic2VsZWN0Mi1zY3JvbGwtcG9zaXRpb25cIix7eDpoKHRoaXMpLnNjcm9sbExlZnQoKSx5OmgodGhpcykuc2Nyb2xsVG9wKCl9KX0pO3Mub24oaSxmdW5jdGlvbihlKXt2YXIgdD1hLkdldERhdGEodGhpcyxcInNlbGVjdDItc2Nyb2xsLXBvc2l0aW9uXCIpO2godGhpcykuc2Nyb2xsVG9wKHQueSl9KTtoKHdpbmRvdykub24oaStcIiBcIityK1wiIFwiK28sZnVuY3Rpb24oZSl7bi5fcG9zaXRpb25Ecm9wZG93bigpO24uX3Jlc2l6ZURyb3Bkb3duKCl9KX07ZS5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlcj1mdW5jdGlvbihlLHQpe3ZhciBuPVwic2Nyb2xsLnNlbGVjdDIuXCIrdC5pZDt2YXIgaT1cInJlc2l6ZS5zZWxlY3QyLlwiK3QuaWQ7dmFyIHI9XCJvcmllbnRhdGlvbmNoYW5nZS5zZWxlY3QyLlwiK3QuaWQ7dmFyIG89dGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoYS5oYXNTY3JvbGwpO28ub2ZmKG4pO2god2luZG93KS5vZmYobitcIiBcIitpK1wiIFwiK3IpfTtlLnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93bj1mdW5jdGlvbigpe3ZhciBlPWgod2luZG93KTt2YXIgdD10aGlzLiRkcm9wZG93bi5oYXNDbGFzcyhcInNlbGVjdDItZHJvcGRvd24tLWFib3ZlXCIpO3ZhciBuPXRoaXMuJGRyb3Bkb3duLmhhc0NsYXNzKFwic2VsZWN0Mi1kcm9wZG93bi0tYmVsb3dcIik7dmFyIGk9bnVsbDt2YXIgcj10aGlzLiRjb250YWluZXIub2Zmc2V0KCk7ci5ib3R0b209ci50b3ArdGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKTt2YXIgbz17aGVpZ2h0OnRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSl9O28udG9wPXIudG9wO28uYm90dG9tPXIudG9wK28uaGVpZ2h0O3ZhciBzPXtoZWlnaHQ6dGhpcy4kZHJvcGRvd24ub3V0ZXJIZWlnaHQoZmFsc2UpfTt2YXIgYT17dG9wOmUuc2Nyb2xsVG9wKCksYm90dG9tOmUuc2Nyb2xsVG9wKCkrZS5oZWlnaHQoKX07dmFyIGw9YS50b3A8ci50b3Atcy5oZWlnaHQ7dmFyIGM9YS5ib3R0b20+ci5ib3R0b20rcy5oZWlnaHQ7dmFyIHU9e2xlZnQ6ci5sZWZ0LHRvcDpvLmJvdHRvbX07dmFyIGY9dGhpcy4kZHJvcGRvd25QYXJlbnQ7aWYoZi5jc3MoXCJwb3NpdGlvblwiKT09PVwic3RhdGljXCIpe2Y9Zi5vZmZzZXRQYXJlbnQoKX12YXIgZD17dG9wOjAsbGVmdDowfTtpZihoLmNvbnRhaW5zKGRvY3VtZW50LmJvZHksZlswXSl8fGZbMF0uaXNDb25uZWN0ZWQpe2Q9Zi5vZmZzZXQoKX11LnRvcC09ZC50b3A7dS5sZWZ0LT1kLmxlZnQ7aWYoIXQmJiFuKXtpPVwiYmVsb3dcIn1pZighYyYmbCYmIXQpe2k9XCJhYm92ZVwifWVsc2UgaWYoIWwmJmMmJnQpe2k9XCJiZWxvd1wifWlmKGk9PVwiYWJvdmVcInx8dCYmaSE9PVwiYmVsb3dcIil7dS50b3A9by50b3AtZC50b3Atcy5oZWlnaHR9aWYoaSE9bnVsbCl7dGhpcy4kZHJvcGRvd24ucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyBzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZVwiKS5hZGRDbGFzcyhcInNlbGVjdDItZHJvcGRvd24tLVwiK2kpO3RoaXMuJGNvbnRhaW5lci5yZW1vdmVDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1iZWxvdyBzZWxlY3QyLWNvbnRhaW5lci0tYWJvdmVcIikuYWRkQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tXCIraSl9dGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKHUpfTtlLnByb3RvdHlwZS5fcmVzaXplRHJvcGRvd249ZnVuY3Rpb24oKXt2YXIgZT17d2lkdGg6dGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoZmFsc2UpK1wicHhcIn07aWYodGhpcy5vcHRpb25zLmdldChcImRyb3Bkb3duQXV0b1dpZHRoXCIpKXtlLm1pbldpZHRoPWUud2lkdGg7ZS5wb3NpdGlvbj1cInJlbGF0aXZlXCI7ZS53aWR0aD1cImF1dG9cIn10aGlzLiRkcm9wZG93bi5jc3MoZSl9O2UucHJvdG90eXBlLl9zaG93RHJvcGRvd249ZnVuY3Rpb24oZSl7dGhpcy4kZHJvcGRvd25Db250YWluZXIuYXBwZW5kVG8odGhpcy4kZHJvcGRvd25QYXJlbnQpO3RoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKTt0aGlzLl9yZXNpemVEcm9wZG93bigpfTtyZXR1cm4gZX0pO24uZGVmaW5lKFwic2VsZWN0Mi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaFwiLFtdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlKXt2YXIgdD0wO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2lmKGkuY2hpbGRyZW4pe3QrPXIoaS5jaGlsZHJlbil9ZWxzZXt0Kyt9fXJldHVybiB0fWZ1bmN0aW9uIGUoZSx0LG4saSl7dGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD1uLmdldChcIm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoXCIpO2lmKHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCl7dGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD1JbmZpbml0eX1lLmNhbGwodGhpcyx0LG4saSl9ZS5wcm90b3R5cGUuc2hvd1NlYXJjaD1mdW5jdGlvbihlLHQpe2lmKHIodC5kYXRhLnJlc3VsdHMpPHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2gpe3JldHVybiBmYWxzZX1yZXR1cm4gZS5jYWxsKHRoaXMsdCl9O3JldHVybiBlfSk7bi5kZWZpbmUoXCJzZWxlY3QyL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2VcIixbXCIuLi91dGlsc1wiXSxmdW5jdGlvbihvKXtmdW5jdGlvbiBlKCl7fWUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXM7ZS5jYWxsKHRoaXMsdCxuKTt0Lm9uKFwiY2xvc2VcIixmdW5jdGlvbihlKXtpLl9oYW5kbGVTZWxlY3RPbkNsb3NlKGUpfSl9O2UucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RPbkNsb3NlPWZ1bmN0aW9uKGUsdCl7aWYodCYmdC5vcmlnaW5hbFNlbGVjdDJFdmVudCE9bnVsbCl7dmFyIG49dC5vcmlnaW5hbFNlbGVjdDJFdmVudDtpZihuLl90eXBlPT09XCJzZWxlY3RcInx8bi5fdHlwZT09PVwidW5zZWxlY3RcIil7cmV0dXJufX12YXIgaT10aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO2lmKGkubGVuZ3RoPDEpe3JldHVybn12YXIgcj1vLkdldERhdGEoaVswXSxcImRhdGFcIik7aWYoci5lbGVtZW50IT1udWxsJiZyLmVsZW1lbnQuc2VsZWN0ZWR8fHIuZWxlbWVudD09bnVsbCYmci5zZWxlY3RlZCl7cmV0dXJufXRoaXMudHJpZ2dlcihcInNlbGVjdFwiLHtkYXRhOnJ9KX07cmV0dXJuIGV9KTtuLmRlZmluZShcInNlbGVjdDIvZHJvcGRvd24vY2xvc2VPblNlbGVjdFwiLFtdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzO2UuY2FsbCh0aGlzLHQsbik7dC5vbihcInNlbGVjdFwiLGZ1bmN0aW9uKGUpe2kuX3NlbGVjdFRyaWdnZXJlZChlKX0pO3Qub24oXCJ1bnNlbGVjdFwiLGZ1bmN0aW9uKGUpe2kuX3NlbGVjdFRyaWdnZXJlZChlKX0pfTtlLnByb3RvdHlwZS5fc2VsZWN0VHJpZ2dlcmVkPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vcmlnaW5hbEV2ZW50O2lmKG4mJihuLmN0cmxLZXl8fG4ubWV0YUtleSkpe3JldHVybn10aGlzLnRyaWdnZXIoXCJjbG9zZVwiLHtvcmlnaW5hbEV2ZW50Om4sb3JpZ2luYWxTZWxlY3QyRXZlbnQ6dH0pfTtyZXR1cm4gZX0pO24uZGVmaW5lKFwic2VsZWN0Mi9pMThuL2VuXCIsW10sZnVuY3Rpb24oKXtyZXR1cm57ZXJyb3JMb2FkaW5nOmZ1bmN0aW9uIGUoKXtyZXR1cm5cIlRoZSByZXN1bHRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuXCJ9LGlucHV0VG9vTG9uZzpmdW5jdGlvbiBlKHQpe3ZhciBuPXQuaW5wdXQubGVuZ3RoLXQubWF4aW11bTt2YXIgaT1cIlBsZWFzZSBkZWxldGUgXCIrbitcIiBjaGFyYWN0ZXJcIjtpZihuIT0xKXtpKz1cInNcIn1yZXR1cm4gaX0saW5wdXRUb29TaG9ydDpmdW5jdGlvbiBlKHQpe3ZhciBuPXQubWluaW11bS10LmlucHV0Lmxlbmd0aDt2YXIgaT1cIlBsZWFzZSBlbnRlciBcIituK1wiIG9yIG1vcmUgY2hhcmFjdGVyc1wiO3JldHVybiBpfSxsb2FkaW5nTW9yZTpmdW5jdGlvbiBlKCl7cmV0dXJuXCJMb2FkaW5nIG1vcmUgcmVzdWx0c+KAplwifSxtYXhpbXVtU2VsZWN0ZWQ6ZnVuY3Rpb24gZSh0KXt2YXIgbj1cIllvdSBjYW4gb25seSBzZWxlY3QgXCIrdC5tYXhpbXVtK1wiIGl0ZW1cIjtpZih0Lm1heGltdW0hPTEpe24rPVwic1wifXJldHVybiBufSxub1Jlc3VsdHM6ZnVuY3Rpb24gZSgpe3JldHVyblwiTm8gcmVzdWx0cyBmb3VuZFwifSxzZWFyY2hpbmc6ZnVuY3Rpb24gZSgpe3JldHVyblwiU2VhcmNoaW5n4oCmXCJ9LHJlbW92ZUFsbEl0ZW1zOmZ1bmN0aW9uIGUoKXtyZXR1cm5cIlJlbW92ZSBhbGwgaXRlbXNcIn19fSk7bi5kZWZpbmUoXCJzZWxlY3QyL2RlZmF1bHRzXCIsW1wianF1ZXJ5XCIsXCJyZXF1aXJlXCIsXCIuL3Jlc3VsdHNcIixcIi4vc2VsZWN0aW9uL3NpbmdsZVwiLFwiLi9zZWxlY3Rpb24vbXVsdGlwbGVcIixcIi4vc2VsZWN0aW9uL3BsYWNlaG9sZGVyXCIsXCIuL3NlbGVjdGlvbi9hbGxvd0NsZWFyXCIsXCIuL3NlbGVjdGlvbi9zZWFyY2hcIixcIi4vc2VsZWN0aW9uL2V2ZW50UmVsYXlcIixcIi4vdXRpbHNcIixcIi4vdHJhbnNsYXRpb25cIixcIi4vZGlhY3JpdGljc1wiLFwiLi9kYXRhL3NlbGVjdFwiLFwiLi9kYXRhL2FycmF5XCIsXCIuL2RhdGEvYWpheFwiLFwiLi9kYXRhL3RhZ3NcIixcIi4vZGF0YS90b2tlbml6ZXJcIixcIi4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGhcIixcIi4vZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGhcIixcIi4vZGF0YS9tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXCIsXCIuL2Ryb3Bkb3duXCIsXCIuL2Ryb3Bkb3duL3NlYXJjaFwiLFwiLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXJcIixcIi4vZHJvcGRvd24vaW5maW5pdGVTY3JvbGxcIixcIi4vZHJvcGRvd24vYXR0YWNoQm9keVwiLFwiLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaFwiLFwiLi9kcm9wZG93bi9zZWxlY3RPbkNsb3NlXCIsXCIuL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3RcIixcIi4vaTE4bi9lblwiXSxmdW5jdGlvbih1LGMsZixkLGgscCxnLG0sdix5LHMsbixfLGIsdyxFLHgsQyxULEEsUyxELE8sayxJLGosTixMLGUpe2Z1bmN0aW9uIHQoKXt0aGlzLnJlc2V0KCl9dC5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oZSl7ZT11LmV4dGVuZCh0cnVlLHt9LHRoaXMuZGVmYXVsdHMsZSk7aWYoZS5kYXRhQWRhcHRlcj09bnVsbCl7aWYoZS5hamF4IT1udWxsKXtlLmRhdGFBZGFwdGVyPXd9ZWxzZSBpZihlLmRhdGEhPW51bGwpe2UuZGF0YUFkYXB0ZXI9Yn1lbHNle2UuZGF0YUFkYXB0ZXI9X31pZihlLm1pbmltdW1JbnB1dExlbmd0aD4wKXtlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixDKX1pZihlLm1heGltdW1JbnB1dExlbmd0aD4wKXtlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixUKX1pZihlLm1heGltdW1TZWxlY3Rpb25MZW5ndGg+MCl7ZS5kYXRhQWRhcHRlcj15LkRlY29yYXRlKGUuZGF0YUFkYXB0ZXIsQSl9aWYoZS50YWdzKXtlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixFKX1pZihlLnRva2VuU2VwYXJhdG9ycyE9bnVsbHx8ZS50b2tlbml6ZXIhPW51bGwpe2UuZGF0YUFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRhdGFBZGFwdGVyLHgpfWlmKGUucXVlcnkhPW51bGwpe3ZhciB0PWMoZS5hbWRCYXNlK1wiY29tcGF0L3F1ZXJ5XCIpO2UuZGF0YUFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRhdGFBZGFwdGVyLHQpfWlmKGUuaW5pdFNlbGVjdGlvbiE9bnVsbCl7dmFyIG49YyhlLmFtZEJhc2UrXCJjb21wYXQvaW5pdFNlbGVjdGlvblwiKTtlLmRhdGFBZGFwdGVyPXkuRGVjb3JhdGUoZS5kYXRhQWRhcHRlcixuKX19aWYoZS5yZXN1bHRzQWRhcHRlcj09bnVsbCl7ZS5yZXN1bHRzQWRhcHRlcj1mO2lmKGUuYWpheCE9bnVsbCl7ZS5yZXN1bHRzQWRhcHRlcj15LkRlY29yYXRlKGUucmVzdWx0c0FkYXB0ZXIsayl9aWYoZS5wbGFjZWhvbGRlciE9bnVsbCl7ZS5yZXN1bHRzQWRhcHRlcj15LkRlY29yYXRlKGUucmVzdWx0c0FkYXB0ZXIsTyl9aWYoZS5zZWxlY3RPbkNsb3NlKXtlLnJlc3VsdHNBZGFwdGVyPXkuRGVjb3JhdGUoZS5yZXN1bHRzQWRhcHRlcixOKX19aWYoZS5kcm9wZG93bkFkYXB0ZXI9PW51bGwpe2lmKGUubXVsdGlwbGUpe2UuZHJvcGRvd25BZGFwdGVyPVN9ZWxzZXt2YXIgaT15LkRlY29yYXRlKFMsRCk7ZS5kcm9wZG93bkFkYXB0ZXI9aX1pZihlLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIT09MCl7ZS5kcm9wZG93bkFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRyb3Bkb3duQWRhcHRlcixqKX1pZihlLmNsb3NlT25TZWxlY3Qpe2UuZHJvcGRvd25BZGFwdGVyPXkuRGVjb3JhdGUoZS5kcm9wZG93bkFkYXB0ZXIsTCl9aWYoZS5kcm9wZG93bkNzc0NsYXNzIT1udWxsfHxlLmRyb3Bkb3duQ3NzIT1udWxsfHxlLmFkYXB0RHJvcGRvd25Dc3NDbGFzcyE9bnVsbCl7dmFyIHI9YyhlLmFtZEJhc2UrXCJjb21wYXQvZHJvcGRvd25Dc3NcIik7ZS5kcm9wZG93bkFkYXB0ZXI9eS5EZWNvcmF0ZShlLmRyb3Bkb3duQWRhcHRlcixyKX1lLmRyb3Bkb3duQWRhcHRlcj15LkRlY29yYXRlKGUuZHJvcGRvd25BZGFwdGVyLEkpfWlmKGUuc2VsZWN0aW9uQWRhcHRlcj09bnVsbCl7aWYoZS5tdWx0aXBsZSl7ZS5zZWxlY3Rpb25BZGFwdGVyPWh9ZWxzZXtlLnNlbGVjdGlvbkFkYXB0ZXI9ZH1pZihlLnBsYWNlaG9sZGVyIT1udWxsKXtlLnNlbGVjdGlvbkFkYXB0ZXI9eS5EZWNvcmF0ZShlLnNlbGVjdGlvbkFkYXB0ZXIscCl9aWYoZS5hbGxvd0NsZWFyKXtlLnNlbGVjdGlvbkFkYXB0ZXI9eS5EZWNvcmF0ZShlLnNlbGVjdGlvbkFkYXB0ZXIsZyl9aWYoZS5tdWx0aXBsZSl7ZS5zZWxlY3Rpb25BZGFwdGVyPXkuRGVjb3JhdGUoZS5zZWxlY3Rpb25BZGFwdGVyLG0pfWlmKGUuY29udGFpbmVyQ3NzQ2xhc3MhPW51bGx8fGUuY29udGFpbmVyQ3NzIT1udWxsfHxlLmFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MhPW51bGwpe3ZhciBvPWMoZS5hbWRCYXNlK1wiY29tcGF0L2NvbnRhaW5lckNzc1wiKTtlLnNlbGVjdGlvbkFkYXB0ZXI9eS5EZWNvcmF0ZShlLnNlbGVjdGlvbkFkYXB0ZXIsbyl9ZS5zZWxlY3Rpb25BZGFwdGVyPXkuRGVjb3JhdGUoZS5zZWxlY3Rpb25BZGFwdGVyLHYpfWUubGFuZ3VhZ2U9dGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGUubGFuZ3VhZ2UpO2UubGFuZ3VhZ2UucHVzaChcImVuXCIpO3ZhciBzPVtdO2Zvcih2YXIgYT0wO2E8ZS5sYW5ndWFnZS5sZW5ndGg7YSsrKXt2YXIgbD1lLmxhbmd1YWdlW2FdO2lmKHMuaW5kZXhPZihsKT09PS0xKXtzLnB1c2gobCl9fWUubGFuZ3VhZ2U9cztlLnRyYW5zbGF0aW9ucz10aGlzLl9wcm9jZXNzVHJhbnNsYXRpb25zKGUubGFuZ3VhZ2UsZS5kZWJ1Zyk7cmV0dXJuIGV9O3QucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBuW2VdfHxlfXJldHVybiBlLnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLHQpfWZ1bmN0aW9uIGMoZSx0KXtpZih1LnRyaW0oZS50ZXJtKT09PVwiXCIpe3JldHVybiB0fWlmKHQuY2hpbGRyZW4mJnQuY2hpbGRyZW4ubGVuZ3RoPjApe3ZhciBuPXUuZXh0ZW5kKHRydWUse30sdCk7Zm9yKHZhciBpPXQuY2hpbGRyZW4ubGVuZ3RoLTE7aT49MDtpLS0pe3ZhciByPXQuY2hpbGRyZW5baV07dmFyIG89YyhlLHIpO2lmKG89PW51bGwpe24uY2hpbGRyZW4uc3BsaWNlKGksMSl9fWlmKG4uY2hpbGRyZW4ubGVuZ3RoPjApe3JldHVybiBufXJldHVybiBjKGUsbil9dmFyIHM9bCh0LnRleHQpLnRvVXBwZXJDYXNlKCk7dmFyIGE9bChlLnRlcm0pLnRvVXBwZXJDYXNlKCk7aWYocy5pbmRleE9mKGEpPi0xKXtyZXR1cm4gdH1yZXR1cm4gbnVsbH10aGlzLmRlZmF1bHRzPXthbWRCYXNlOlwiLi9cIixhbWRMYW5ndWFnZUJhc2U6XCIuL2kxOG4vXCIsY2xvc2VPblNlbGVjdDp0cnVlLGRlYnVnOmZhbHNlLGRyb3Bkb3duQXV0b1dpZHRoOmZhbHNlLGVzY2FwZU1hcmt1cDp5LmVzY2FwZU1hcmt1cCxsYW5ndWFnZTp7fSxtYXRjaGVyOmMsbWluaW11bUlucHV0TGVuZ3RoOjAsbWF4aW11bUlucHV0TGVuZ3RoOjAsbWF4aW11bVNlbGVjdGlvbkxlbmd0aDowLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjAsc2VsZWN0T25DbG9zZTpmYWxzZSxzY3JvbGxBZnRlclNlbGVjdDpmYWxzZSxzb3J0ZXI6ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdH0sdGVtcGxhdGVSZXN1bHQ6ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC50ZXh0fSx0ZW1wbGF0ZVNlbGVjdGlvbjpmdW5jdGlvbiBlKHQpe3JldHVybiB0LnRleHR9LHRoZW1lOlwiZGVmYXVsdFwiLHdpZHRoOlwicmVzb2x2ZVwifX07dC5wcm90b3R5cGUuYXBwbHlGcm9tRWxlbWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPWUubGFuZ3VhZ2U7dmFyIGk9dGhpcy5kZWZhdWx0cy5sYW5ndWFnZTt2YXIgcj10LnByb3AoXCJsYW5nXCIpO3ZhciBvPXQuY2xvc2VzdChcIltsYW5nXVwiKS5wcm9wKFwibGFuZ1wiKTt2YXIgcz1BcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwodGhpcy5fcmVzb2x2ZUxhbmd1YWdlKHIpLHRoaXMuX3Jlc29sdmVMYW5ndWFnZShuKSx0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UoaSksdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG8pKTtlLmxhbmd1YWdlPXM7cmV0dXJuIGV9O3QucHJvdG90eXBlLl9yZXNvbHZlTGFuZ3VhZ2U9ZnVuY3Rpb24oZSl7aWYoIWUpe3JldHVybltdfWlmKHUuaXNFbXB0eU9iamVjdChlKSl7cmV0dXJuW119aWYodS5pc1BsYWluT2JqZWN0KGUpKXtyZXR1cm5bZV19dmFyIHQ7aWYoIXUuaXNBcnJheShlKSl7dD1bZV19ZWxzZXt0PWV9dmFyIG49W107Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe24ucHVzaCh0W2ldKTtpZih0eXBlb2YgdFtpXT09PVwic3RyaW5nXCImJnRbaV0uaW5kZXhPZihcIi1cIik+MCl7dmFyIHI9dFtpXS5zcGxpdChcIi1cIik7dmFyIG89clswXTtuLnB1c2gobyl9fXJldHVybiBufTt0LnByb3RvdHlwZS5fcHJvY2Vzc1RyYW5zbGF0aW9ucz1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBzO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcj1uZXcgczt2YXIgbz1lW2ldO2lmKHR5cGVvZiBvPT09XCJzdHJpbmdcIil7dHJ5e3I9cy5sb2FkUGF0aChvKX1jYXRjaChlKXt0cnl7bz10aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZStvO3I9cy5sb2FkUGF0aChvKX1jYXRjaChlKXtpZih0JiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuKXtjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBsYW5ndWFnZSBmaWxlIGZvciBcIicrbysnXCIgY291bGQgJytcIm5vdCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC4gQSBmYWxsYmFjayB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cIil9fX19ZWxzZSBpZih1LmlzUGxhaW5PYmplY3Qobykpe3I9bmV3IHMobyl9ZWxzZXtyPW99bi5leHRlbmQocil9cmV0dXJuIG59O3QucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciBuPXUuY2FtZWxDYXNlKGUpO3ZhciBpPXt9O2lbbl09dDt2YXIgcj15Ll9jb252ZXJ0RGF0YShpKTt1LmV4dGVuZCh0cnVlLHRoaXMuZGVmYXVsdHMscil9O3ZhciBpPW5ldyB0O3JldHVybiBpfSk7bi5kZWZpbmUoXCJzZWxlY3QyL29wdGlvbnNcIixbXCJyZXF1aXJlXCIsXCJqcXVlcnlcIixcIi4vZGVmYXVsdHNcIixcIi4vdXRpbHNcIl0sZnVuY3Rpb24oaSxkLHIsaCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMub3B0aW9ucz1lO2lmKHQhPW51bGwpe3RoaXMuZnJvbUVsZW1lbnQodCl9aWYodCE9bnVsbCl7dGhpcy5vcHRpb25zPXIuYXBwbHlGcm9tRWxlbWVudCh0aGlzLm9wdGlvbnMsdCl9dGhpcy5vcHRpb25zPXIuYXBwbHkodGhpcy5vcHRpb25zKTtpZih0JiZ0LmlzKFwiaW5wdXRcIikpe3ZhciBuPWkodGhpcy5nZXQoXCJhbWRCYXNlXCIpK1wiY29tcGF0L2lucHV0RGF0YVwiKTt0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXI9aC5EZWNvcmF0ZSh0aGlzLm9wdGlvbnMuZGF0YUFkYXB0ZXIsbil9fWUucHJvdG90eXBlLmZyb21FbGVtZW50PWZ1bmN0aW9uKGUpe3ZhciB0PVtcInNlbGVjdDJcIl07aWYodGhpcy5vcHRpb25zLm11bHRpcGxlPT1udWxsKXt0aGlzLm9wdGlvbnMubXVsdGlwbGU9ZS5wcm9wKFwibXVsdGlwbGVcIil9aWYodGhpcy5vcHRpb25zLmRpc2FibGVkPT1udWxsKXt0aGlzLm9wdGlvbnMuZGlzYWJsZWQ9ZS5wcm9wKFwiZGlzYWJsZWRcIil9aWYodGhpcy5vcHRpb25zLmRpcj09bnVsbCl7aWYoZS5wcm9wKFwiZGlyXCIpKXt0aGlzLm9wdGlvbnMuZGlyPWUucHJvcChcImRpclwiKX1lbHNlIGlmKGUuY2xvc2VzdChcIltkaXJdXCIpLnByb3AoXCJkaXJcIikpe3RoaXMub3B0aW9ucy5kaXI9ZS5jbG9zZXN0KFwiW2Rpcl1cIikucHJvcChcImRpclwiKX1lbHNle3RoaXMub3B0aW9ucy5kaXI9XCJsdHJcIn19ZS5wcm9wKFwiZGlzYWJsZWRcIix0aGlzLm9wdGlvbnMuZGlzYWJsZWQpO2UucHJvcChcIm11bHRpcGxlXCIsdGhpcy5vcHRpb25zLm11bHRpcGxlKTtpZihoLkdldERhdGEoZVswXSxcInNlbGVjdDJUYWdzXCIpKXtpZih0aGlzLm9wdGlvbnMuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4pe2NvbnNvbGUud2FybihcIlNlbGVjdDI6IFRoZSBgZGF0YS1zZWxlY3QyLXRhZ3NgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIFwiKyd1c2UgdGhlIGBkYXRhLWRhdGFgIGFuZCBgZGF0YS10YWdzPVwidHJ1ZVwiYCBhdHRyaWJ1dGVzIGFuZCB3aWxsIGJlICcrXCJyZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTZWxlY3QyLlwiKX1oLlN0b3JlRGF0YShlWzBdLFwiZGF0YVwiLGguR2V0RGF0YShlWzBdLFwic2VsZWN0MlRhZ3NcIikpO2guU3RvcmVEYXRhKGVbMF0sXCJ0YWdzXCIsdHJ1ZSl9aWYoaC5HZXREYXRhKGVbMF0sXCJhamF4VXJsXCIpKXtpZih0aGlzLm9wdGlvbnMuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4pe2NvbnNvbGUud2FybihcIlNlbGVjdDI6IFRoZSBgZGF0YS1hamF4LXVybGAgYXR0cmlidXRlIGhhcyBiZWVuIGNoYW5nZWQgdG8gXCIrXCJgZGF0YS1hamF4LS11cmxgIGFuZCBzdXBwb3J0IGZvciB0aGUgb2xkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWRcIitcIiBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi5cIil9ZS5hdHRyKFwiYWpheC0tdXJsXCIsaC5HZXREYXRhKGVbMF0sXCJhamF4VXJsXCIpKTtoLlN0b3JlRGF0YShlWzBdLFwiYWpheC1VcmxcIixoLkdldERhdGEoZVswXSxcImFqYXhVcmxcIikpfXZhciBuPXt9O2Z1bmN0aW9uIGkoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgcj0wO3I8ZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDtyKyspe3ZhciBvPWVbMF0uYXR0cmlidXRlc1tyXS5uYW1lO3ZhciBzPVwiZGF0YS1cIjtpZihvLnN1YnN0cigwLHMubGVuZ3RoKT09cyl7dmFyIGE9by5zdWJzdHJpbmcocy5sZW5ndGgpO3ZhciBsPWguR2V0RGF0YShlWzBdLGEpO3ZhciBjPWEucmVwbGFjZSgvLShbYS16XSkvZyxpKTtuW2NdPWx9fWlmKGQuZm4uanF1ZXJ5JiZkLmZuLmpxdWVyeS5zdWJzdHIoMCwyKT09XCIxLlwiJiZlWzBdLmRhdGFzZXQpe249ZC5leHRlbmQodHJ1ZSx7fSxlWzBdLmRhdGFzZXQsbil9dmFyIHU9ZC5leHRlbmQodHJ1ZSx7fSxoLkdldERhdGEoZVswXSksbik7dT1oLl9jb252ZXJ0RGF0YSh1KTtmb3IodmFyIGYgaW4gdSl7aWYoZC5pbkFycmF5KGYsdCk+LTEpe2NvbnRpbnVlfWlmKGQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNbZl0pKXtkLmV4dGVuZCh0aGlzLm9wdGlvbnNbZl0sdVtmXSl9ZWxzZXt0aGlzLm9wdGlvbnNbZl09dVtmXX19cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zW2VdfTtlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLm9wdGlvbnNbZV09dH07cmV0dXJuIGV9KTtuLmRlZmluZShcInNlbGVjdDIvY29yZVwiLFtcImpxdWVyeVwiLFwiLi9vcHRpb25zXCIsXCIuL3V0aWxzXCIsXCIuL2tleXNcIl0sZnVuY3Rpb24ocyx1LGYsaSl7dmFyIGE9ZnVuY3Rpb24gZSh0LG4pe2lmKGYuR2V0RGF0YSh0WzBdLFwic2VsZWN0MlwiKSE9bnVsbCl7Zi5HZXREYXRhKHRbMF0sXCJzZWxlY3QyXCIpLmRlc3Ryb3koKX10aGlzLiRlbGVtZW50PXQ7dGhpcy5pZD10aGlzLl9nZW5lcmF0ZUlkKHQpO249bnx8e307dGhpcy5vcHRpb25zPW5ldyB1KG4sdCk7ZS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTt2YXIgaT10LmF0dHIoXCJ0YWJpbmRleFwiKXx8MDtmLlN0b3JlRGF0YSh0WzBdLFwib2xkLXRhYmluZGV4XCIsaSk7dC5hdHRyKFwidGFiaW5kZXhcIixcIi0xXCIpO3ZhciByPXRoaXMub3B0aW9ucy5nZXQoXCJkYXRhQWRhcHRlclwiKTt0aGlzLmRhdGFBZGFwdGVyPW5ldyByKHQsdGhpcy5vcHRpb25zKTt2YXIgbz10aGlzLnJlbmRlcigpO3RoaXMuX3BsYWNlQ29udGFpbmVyKG8pO3ZhciBzPXRoaXMub3B0aW9ucy5nZXQoXCJzZWxlY3Rpb25BZGFwdGVyXCIpO3RoaXMuc2VsZWN0aW9uPW5ldyBzKHQsdGhpcy5vcHRpb25zKTt0aGlzLiRzZWxlY3Rpb249dGhpcy5zZWxlY3Rpb24ucmVuZGVyKCk7dGhpcy5zZWxlY3Rpb24ucG9zaXRpb24odGhpcy4kc2VsZWN0aW9uLG8pO3ZhciBhPXRoaXMub3B0aW9ucy5nZXQoXCJkcm9wZG93bkFkYXB0ZXJcIik7dGhpcy5kcm9wZG93bj1uZXcgYSh0LHRoaXMub3B0aW9ucyk7dGhpcy4kZHJvcGRvd249dGhpcy5kcm9wZG93bi5yZW5kZXIoKTt0aGlzLmRyb3Bkb3duLnBvc2l0aW9uKHRoaXMuJGRyb3Bkb3duLG8pO3ZhciBsPXRoaXMub3B0aW9ucy5nZXQoXCJyZXN1bHRzQWRhcHRlclwiKTt0aGlzLnJlc3VsdHM9bmV3IGwodCx0aGlzLm9wdGlvbnMsdGhpcy5kYXRhQWRhcHRlcik7dGhpcy4kcmVzdWx0cz10aGlzLnJlc3VsdHMucmVuZGVyKCk7dGhpcy5yZXN1bHRzLnBvc2l0aW9uKHRoaXMuJHJlc3VsdHMsdGhpcy4kZHJvcGRvd24pO3ZhciBjPXRoaXM7dGhpcy5fYmluZEFkYXB0ZXJzKCk7dGhpcy5fcmVnaXN0ZXJEb21FdmVudHMoKTt0aGlzLl9yZWdpc3RlckRhdGFFdmVudHMoKTt0aGlzLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cygpO3RoaXMuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMoKTt0aGlzLl9yZWdpc3RlclJlc3VsdHNFdmVudHMoKTt0aGlzLl9yZWdpc3RlckV2ZW50cygpO3RoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbihlKXtjLnRyaWdnZXIoXCJzZWxlY3Rpb246dXBkYXRlXCIse2RhdGE6ZX0pfSk7dC5hZGRDbGFzcyhcInNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGVcIik7dC5hdHRyKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIik7dGhpcy5fc3luY0F0dHJpYnV0ZXMoKTtmLlN0b3JlRGF0YSh0WzBdLFwic2VsZWN0MlwiLHRoaXMpO3QuZGF0YShcInNlbGVjdDJcIix0aGlzKX07Zi5FeHRlbmQoYSxmLk9ic2VydmFibGUpO2EucHJvdG90eXBlLl9nZW5lcmF0ZUlkPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7aWYoZS5hdHRyKFwiaWRcIikhPW51bGwpe3Q9ZS5hdHRyKFwiaWRcIil9ZWxzZSBpZihlLmF0dHIoXCJuYW1lXCIpIT1udWxsKXt0PWUuYXR0cihcIm5hbWVcIikrXCItXCIrZi5nZW5lcmF0ZUNoYXJzKDIpfWVsc2V7dD1mLmdlbmVyYXRlQ2hhcnMoNCl9dD10LnJlcGxhY2UoLyg6fFxcLnxcXFt8XFxdfCwpL2csXCJcIik7dD1cInNlbGVjdDItXCIrdDtyZXR1cm4gdH07YS5wcm90b3R5cGUuX3BsYWNlQ29udGFpbmVyPWZ1bmN0aW9uKGUpe2UuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCk7dmFyIHQ9dGhpcy5fcmVzb2x2ZVdpZHRoKHRoaXMuJGVsZW1lbnQsdGhpcy5vcHRpb25zLmdldChcIndpZHRoXCIpKTtpZih0IT1udWxsKXtlLmNzcyhcIndpZHRoXCIsdCl9fTthLnByb3RvdHlwZS5fcmVzb2x2ZVdpZHRoPWZ1bmN0aW9uKGUsdCl7dmFyIG49L153aWR0aDooKFstK10/KFswLTldKlxcLik/WzAtOV0rKShweHxlbXxleHwlfGlufGNtfG1tfHB0fHBjKSkvaTtpZih0PT1cInJlc29sdmVcIil7dmFyIGk9dGhpcy5fcmVzb2x2ZVdpZHRoKGUsXCJzdHlsZVwiKTtpZihpIT1udWxsKXtyZXR1cm4gaX1yZXR1cm4gdGhpcy5fcmVzb2x2ZVdpZHRoKGUsXCJlbGVtZW50XCIpfWlmKHQ9PVwiZWxlbWVudFwiKXt2YXIgcj1lLm91dGVyV2lkdGgoZmFsc2UpO2lmKHI8PTApe3JldHVyblwiYXV0b1wifXJldHVybiByK1wicHhcIn1pZih0PT1cInN0eWxlXCIpe3ZhciBvPWUuYXR0cihcInN0eWxlXCIpO2lmKHR5cGVvZiBvIT09XCJzdHJpbmdcIil7cmV0dXJuIG51bGx9dmFyIHM9by5zcGxpdChcIjtcIik7Zm9yKHZhciBhPTAsbD1zLmxlbmd0aDthPGw7YT1hKzEpe3ZhciBjPXNbYV0ucmVwbGFjZSgvXFxzL2csXCJcIik7dmFyIHU9Yy5tYXRjaChuKTtpZih1IT09bnVsbCYmdS5sZW5ndGg+PTEpe3JldHVybiB1WzFdfX1yZXR1cm4gbnVsbH1pZih0PT1cImNvbXB1dGVkc3R5bGVcIil7dmFyIGY9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZVswXSk7cmV0dXJuIGYud2lkdGh9cmV0dXJuIHR9O2EucHJvdG90eXBlLl9iaW5kQWRhcHRlcnM9ZnVuY3Rpb24oKXt0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpO3RoaXMuc2VsZWN0aW9uLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpO3RoaXMuZHJvcGRvd24uYmluZCh0aGlzLHRoaXMuJGNvbnRhaW5lcik7dGhpcy5yZXN1bHRzLmJpbmQodGhpcyx0aGlzLiRjb250YWluZXIpfTthLnByb3RvdHlwZS5fcmVnaXN0ZXJEb21FdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuJGVsZW1lbnQub24oXCJjaGFuZ2Uuc2VsZWN0MlwiLGZ1bmN0aW9uKCl7dC5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGUpe3QudHJpZ2dlcihcInNlbGVjdGlvbjp1cGRhdGVcIix7ZGF0YTplfSl9KX0pO3RoaXMuJGVsZW1lbnQub24oXCJmb2N1cy5zZWxlY3QyXCIsZnVuY3Rpb24oZSl7dC50cmlnZ2VyKFwiZm9jdXNcIixlKX0pO3RoaXMuX3N5bmNBPWYuYmluZCh0aGlzLl9zeW5jQXR0cmlidXRlcyx0aGlzKTt0aGlzLl9zeW5jUz1mLmJpbmQodGhpcy5fc3luY1N1YnRyZWUsdGhpcyk7aWYodGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCl7dGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIix0aGlzLl9zeW5jQSl9dmFyIGU9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXJ8fHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuTW96TXV0YXRpb25PYnNlcnZlcjtpZihlIT1udWxsKXt0aGlzLl9vYnNlcnZlcj1uZXcgZShmdW5jdGlvbihlKXt0Ll9zeW5jQSgpO3QuX3N5bmNTKG51bGwsZSl9KTt0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0se2F0dHJpYnV0ZXM6dHJ1ZSxjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOmZhbHNlfSl9ZWxzZSBpZih0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIpe3RoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUF0dHJNb2RpZmllZFwiLHQuX3N5bmNBLGZhbHNlKTt0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Ob2RlSW5zZXJ0ZWRcIix0Ll9zeW5jUyxmYWxzZSk7dGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKFwiRE9NTm9kZVJlbW92ZWRcIix0Ll9zeW5jUyxmYWxzZSl9fTthLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmRhdGFBZGFwdGVyLm9uKFwiKlwiLGZ1bmN0aW9uKGUsdCl7bi50cmlnZ2VyKGUsdCl9KX07YS5wcm90b3R5cGUuX3JlZ2lzdGVyU2VsZWN0aW9uRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt2YXIgaT1bXCJ0b2dnbGVcIixcImZvY3VzXCJdO3RoaXMuc2VsZWN0aW9uLm9uKFwidG9nZ2xlXCIsZnVuY3Rpb24oKXtuLnRvZ2dsZURyb3Bkb3duKCl9KTt0aGlzLnNlbGVjdGlvbi5vbihcImZvY3VzXCIsZnVuY3Rpb24oZSl7bi5mb2N1cyhlKX0pO3RoaXMuc2VsZWN0aW9uLm9uKFwiKlwiLGZ1bmN0aW9uKGUsdCl7aWYocy5pbkFycmF5KGUsaSkhPT0tMSl7cmV0dXJufW4udHJpZ2dlcihlLHQpfSl9O2EucHJvdG90eXBlLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmRyb3Bkb3duLm9uKFwiKlwiLGZ1bmN0aW9uKGUsdCl7bi50cmlnZ2VyKGUsdCl9KX07YS5wcm90b3R5cGUuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cz1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5yZXN1bHRzLm9uKFwiKlwiLGZ1bmN0aW9uKGUsdCl7bi50cmlnZ2VyKGUsdCl9KX07YS5wcm90b3R5cGUuX3JlZ2lzdGVyRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLm9uKFwib3BlblwiLGZ1bmN0aW9uKCl7bi4kY29udGFpbmVyLmFkZENsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLW9wZW5cIil9KTt0aGlzLm9uKFwiY2xvc2VcIixmdW5jdGlvbigpe24uJGNvbnRhaW5lci5yZW1vdmVDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1vcGVuXCIpfSk7dGhpcy5vbihcImVuYWJsZVwiLGZ1bmN0aW9uKCl7bi4kY29udGFpbmVyLnJlbW92ZUNsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkXCIpfSk7dGhpcy5vbihcImRpc2FibGVcIixmdW5jdGlvbigpe24uJGNvbnRhaW5lci5hZGRDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZFwiKX0pO3RoaXMub24oXCJibHVyXCIsZnVuY3Rpb24oKXtuLiRjb250YWluZXIucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXNcIil9KTt0aGlzLm9uKFwicXVlcnlcIixmdW5jdGlvbih0KXtpZighbi5pc09wZW4oKSl7bi50cmlnZ2VyKFwib3BlblwiLHt9KX10aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHQsZnVuY3Rpb24oZSl7bi50cmlnZ2VyKFwicmVzdWx0czphbGxcIix7ZGF0YTplLHF1ZXJ5OnR9KX0pfSk7dGhpcy5vbihcInF1ZXJ5OmFwcGVuZFwiLGZ1bmN0aW9uKHQpe3RoaXMuZGF0YUFkYXB0ZXIucXVlcnkodCxmdW5jdGlvbihlKXtuLnRyaWdnZXIoXCJyZXN1bHRzOmFwcGVuZFwiLHtkYXRhOmUscXVlcnk6dH0pfSl9KTt0aGlzLm9uKFwia2V5cHJlc3NcIixmdW5jdGlvbihlKXt2YXIgdD1lLndoaWNoO2lmKG4uaXNPcGVuKCkpe2lmKHQ9PT1pLkVTQ3x8dD09PWkuVEFCfHx0PT09aS5VUCYmZS5hbHRLZXkpe24uY2xvc2UoZSk7ZS5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgaWYodD09PWkuRU5URVIpe24udHJpZ2dlcihcInJlc3VsdHM6c2VsZWN0XCIse30pO2UucHJldmVudERlZmF1bHQoKX1lbHNlIGlmKHQ9PT1pLlNQQUNFJiZlLmN0cmxLZXkpe24udHJpZ2dlcihcInJlc3VsdHM6dG9nZ2xlXCIse30pO2UucHJldmVudERlZmF1bHQoKX1lbHNlIGlmKHQ9PT1pLlVQKXtuLnRyaWdnZXIoXCJyZXN1bHRzOnByZXZpb3VzXCIse30pO2UucHJldmVudERlZmF1bHQoKX1lbHNlIGlmKHQ9PT1pLkRPV04pe24udHJpZ2dlcihcInJlc3VsdHM6bmV4dFwiLHt9KTtlLnByZXZlbnREZWZhdWx0KCl9fWVsc2V7aWYodD09PWkuRU5URVJ8fHQ9PT1pLlNQQUNFfHx0PT09aS5ET1dOJiZlLmFsdEtleSl7bi5vcGVuKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19KX07YS5wcm90b3R5cGUuX3N5bmNBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnNldChcImRpc2FibGVkXCIsdGhpcy4kZWxlbWVudC5wcm9wKFwiZGlzYWJsZWRcIikpO2lmKHRoaXMuaXNEaXNhYmxlZCgpKXtpZih0aGlzLmlzT3BlbigpKXt0aGlzLmNsb3NlKCl9dGhpcy50cmlnZ2VyKFwiZGlzYWJsZVwiLHt9KX1lbHNle3RoaXMudHJpZ2dlcihcImVuYWJsZVwiLHt9KX19O2EucHJvdG90eXBlLl9pc0NoYW5nZU11dGF0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZmFsc2U7dmFyIGk9dGhpcztpZihlJiZlLnRhcmdldCYmZS50YXJnZXQubm9kZU5hbWUhPT1cIk9QVElPTlwiJiZlLnRhcmdldC5ub2RlTmFtZSE9PVwiT1BUR1JPVVBcIil7cmV0dXJufWlmKCF0KXtuPXRydWV9ZWxzZSBpZih0LmFkZGVkTm9kZXMmJnQuYWRkZWROb2Rlcy5sZW5ndGg+MCl7Zm9yKHZhciByPTA7cjx0LmFkZGVkTm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89dC5hZGRlZE5vZGVzW3JdO2lmKG8uc2VsZWN0ZWQpe249dHJ1ZX19fWVsc2UgaWYodC5yZW1vdmVkTm9kZXMmJnQucmVtb3ZlZE5vZGVzLmxlbmd0aD4wKXtuPXRydWV9ZWxzZSBpZihzLmlzQXJyYXkodCkpe3MuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7aWYoaS5faXNDaGFuZ2VNdXRhdGlvbihlLHQpKXtuPXRydWU7cmV0dXJuIGZhbHNlfX0pfXJldHVybiBufTthLnByb3RvdHlwZS5fc3luY1N1YnRyZWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pc0NoYW5nZU11dGF0aW9uKGUsdCk7dmFyIGk9dGhpcztpZihuKXt0aGlzLmRhdGFBZGFwdGVyLmN1cnJlbnQoZnVuY3Rpb24oZSl7aS50cmlnZ2VyKFwic2VsZWN0aW9uOnVwZGF0ZVwiLHtkYXRhOmV9KX0pfX07YS5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbihlLHQpe3ZhciBuPWEuX19zdXBlcl9fLnRyaWdnZXI7dmFyIGk9e29wZW46XCJvcGVuaW5nXCIsY2xvc2U6XCJjbG9zaW5nXCIsc2VsZWN0Olwic2VsZWN0aW5nXCIsdW5zZWxlY3Q6XCJ1bnNlbGVjdGluZ1wiLGNsZWFyOlwiY2xlYXJpbmdcIn07aWYodD09PXVuZGVmaW5lZCl7dD17fX1pZihlIGluIGkpe3ZhciByPWlbZV07dmFyIG89e3ByZXZlbnRlZDpmYWxzZSxuYW1lOmUsYXJnczp0fTtuLmNhbGwodGhpcyxyLG8pO2lmKG8ucHJldmVudGVkKXt0LnByZXZlbnRlZD10cnVlO3JldHVybn19bi5jYWxsKHRoaXMsZSx0KX07YS5wcm90b3R5cGUudG9nZ2xlRHJvcGRvd249ZnVuY3Rpb24oKXtpZih0aGlzLmlzRGlzYWJsZWQoKSl7cmV0dXJufWlmKHRoaXMuaXNPcGVuKCkpe3RoaXMuY2xvc2UoKX1lbHNle3RoaXMub3BlbigpfX07YS5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe2lmKHRoaXMuaXNPcGVuKCkpe3JldHVybn1pZih0aGlzLmlzRGlzYWJsZWQoKSl7cmV0dXJufXRoaXMudHJpZ2dlcihcInF1ZXJ5XCIse30pfTthLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbihlKXtpZighdGhpcy5pc09wZW4oKSl7cmV0dXJufXRoaXMudHJpZ2dlcihcImNsb3NlXCIse29yaWdpbmFsRXZlbnQ6ZX0pfTthLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0Rpc2FibGVkKCl9O2EucHJvdG90eXBlLmlzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmdldChcImRpc2FibGVkXCIpfTthLnByb3RvdHlwZS5pc09wZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGFpbmVyLmhhc0NsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLW9wZW5cIil9O2EucHJvdG90eXBlLmhhc0ZvY3VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRhaW5lci5oYXNDbGFzcyhcInNlbGVjdDItY29udGFpbmVyLS1mb2N1c1wiKX07YS5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24oZSl7aWYodGhpcy5oYXNGb2N1cygpKXtyZXR1cm59dGhpcy4kY29udGFpbmVyLmFkZENsYXNzKFwic2VsZWN0Mi1jb250YWluZXItLWZvY3VzXCIpO3RoaXMudHJpZ2dlcihcImZvY3VzXCIse30pfTthLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oZSl7aWYodGhpcy5vcHRpb25zLmdldChcImRlYnVnXCIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuKXtjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcImVuYWJsZVwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwnKycgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQucHJvcChcImRpc2FibGVkXCIpJytcIiBpbnN0ZWFkLlwiKX1pZihlPT1udWxsfHxlLmxlbmd0aD09PTApe2U9W3RydWVdfXZhciB0PSFlWzBdO3RoaXMuJGVsZW1lbnQucHJvcChcImRpc2FibGVkXCIsdCl9O2EucHJvdG90eXBlLmRhdGE9ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuZ2V0KFwiZGVidWdcIikmJmFyZ3VtZW50cy5sZW5ndGg+MCYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2Fybil7Y29uc29sZS53YXJuKCdTZWxlY3QyOiBEYXRhIGNhbiBubyBsb25nZXIgYmUgc2V0IHVzaW5nIGBzZWxlY3QyKFwiZGF0YVwiKWAuIFlvdSAnK1wic2hvdWxkIGNvbnNpZGVyIHNldHRpbmcgdGhlIHZhbHVlIGluc3RlYWQgdXNpbmcgYCRlbGVtZW50LnZhbCgpYC5cIil9dmFyIHQ9W107dGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uKGUpe3Q9ZX0pO3JldHVybiB0fTthLnByb3RvdHlwZS52YWw9ZnVuY3Rpb24oZSl7aWYodGhpcy5vcHRpb25zLmdldChcImRlYnVnXCIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuKXtjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MihcInZhbFwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUnK1wiIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnZhbCgpIGluc3RlYWQuXCIpfWlmKGU9PW51bGx8fGUubGVuZ3RoPT09MCl7cmV0dXJuIHRoaXMuJGVsZW1lbnQudmFsKCl9dmFyIHQ9ZVswXTtpZihzLmlzQXJyYXkodCkpe3Q9cy5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygpfSl9dGhpcy4kZWxlbWVudC52YWwodCkudHJpZ2dlcihcImlucHV0XCIpLnRyaWdnZXIoXCJjaGFuZ2VcIil9O2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7aWYodGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCl7dGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIix0aGlzLl9zeW5jQSl9aWYodGhpcy5fb2JzZXJ2ZXIhPW51bGwpe3RoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTt0aGlzLl9vYnNlcnZlcj1udWxsfWVsc2UgaWYodGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKXt0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01BdHRyTW9kaWZpZWRcIix0aGlzLl9zeW5jQSxmYWxzZSk7dGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NTm9kZUluc2VydGVkXCIsdGhpcy5fc3luY1MsZmFsc2UpO3RoaXMuJGVsZW1lbnRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTU5vZGVSZW1vdmVkXCIsdGhpcy5fc3luY1MsZmFsc2UpfXRoaXMuX3N5bmNBPW51bGw7dGhpcy5fc3luY1M9bnVsbDt0aGlzLiRlbGVtZW50Lm9mZihcIi5zZWxlY3QyXCIpO3RoaXMuJGVsZW1lbnQuYXR0cihcInRhYmluZGV4XCIsZi5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sXCJvbGQtdGFiaW5kZXhcIikpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoXCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlXCIpO3RoaXMuJGVsZW1lbnQuYXR0cihcImFyaWEtaGlkZGVuXCIsXCJmYWxzZVwiKTtmLlJlbW92ZURhdGEodGhpcy4kZWxlbWVudFswXSk7dGhpcy4kZWxlbWVudC5yZW1vdmVEYXRhKFwic2VsZWN0MlwiKTt0aGlzLmRhdGFBZGFwdGVyLmRlc3Ryb3koKTt0aGlzLnNlbGVjdGlvbi5kZXN0cm95KCk7dGhpcy5kcm9wZG93bi5kZXN0cm95KCk7dGhpcy5yZXN1bHRzLmRlc3Ryb3koKTt0aGlzLmRhdGFBZGFwdGVyPW51bGw7dGhpcy5zZWxlY3Rpb249bnVsbDt0aGlzLmRyb3Bkb3duPW51bGw7dGhpcy5yZXN1bHRzPW51bGx9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXMoJzxzcGFuIGNsYXNzPVwic2VsZWN0MiBzZWxlY3QyLWNvbnRhaW5lclwiPicrJzxzcGFuIGNsYXNzPVwic2VsZWN0aW9uXCI+PC9zcGFuPicrJzxzcGFuIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj4nK1wiPC9zcGFuPlwiKTtlLmF0dHIoXCJkaXJcIix0aGlzLm9wdGlvbnMuZ2V0KFwiZGlyXCIpKTt0aGlzLiRjb250YWluZXI9ZTt0aGlzLiRjb250YWluZXIuYWRkQ2xhc3MoXCJzZWxlY3QyLWNvbnRhaW5lci0tXCIrdGhpcy5vcHRpb25zLmdldChcInRoZW1lXCIpKTtmLlN0b3JlRGF0YShlWzBdLFwiZWxlbWVudFwiLHRoaXMuJGVsZW1lbnQpO3JldHVybiBlfTtyZXR1cm4gYX0pO24uZGVmaW5lKFwianF1ZXJ5LW1vdXNld2hlZWxcIixbXCJqcXVlcnlcIl0sZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTtuLmRlZmluZShcImpxdWVyeS5zZWxlY3QyXCIsW1wianF1ZXJ5XCIsXCJqcXVlcnktbW91c2V3aGVlbFwiLFwiLi9zZWxlY3QyL2NvcmVcIixcIi4vc2VsZWN0Mi9kZWZhdWx0c1wiLFwiLi9zZWxlY3QyL3V0aWxzXCJdLGZ1bmN0aW9uKHIsZSxvLHQscyl7aWYoci5mbi5zZWxlY3QyPT1udWxsKXt2YXIgYT1bXCJvcGVuXCIsXCJjbG9zZVwiLFwiZGVzdHJveVwiXTtyLmZuLnNlbGVjdDI9ZnVuY3Rpb24obil7bj1ufHx7fTtpZihTKG4pPT09XCJvYmplY3RcIil7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ci5leHRlbmQodHJ1ZSx7fSxuKTt2YXIgdD1uZXcgbyhyKHRoaXMpLGUpfSk7cmV0dXJuIHRoaXN9ZWxzZSBpZih0eXBlb2Ygbj09PVwic3RyaW5nXCIpe3ZhciB0O3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTt0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1zLkdldERhdGEodGhpcyxcInNlbGVjdDJcIik7aWYoZT09bnVsbCYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3Ipe2NvbnNvbGUuZXJyb3IoXCJUaGUgc2VsZWN0MignXCIrbitcIicpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuIFwiK1wiZWxlbWVudCB0aGF0IGlzIG5vdCB1c2luZyBTZWxlY3QyLlwiKX10PWVbbl0uYXBwbHkoZSxpKX0pO2lmKHIuaW5BcnJheShuLGEpPi0xKXtyZXR1cm4gdGhpc31yZXR1cm4gdH1lbHNle3Rocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIGZvciBTZWxlY3QyOiBcIituKX19fWlmKHIuZm4uc2VsZWN0Mi5kZWZhdWx0cz09bnVsbCl7ci5mbi5zZWxlY3QyLmRlZmF1bHRzPXR9cmV0dXJuIG99KTtyZXR1cm57ZGVmaW5lOm4uZGVmaW5lLHJlcXVpcmU6bi5yZXF1aXJlfX0oKSxuPWUucmVxdWlyZShcImpxdWVyeS5zZWxlY3QyXCIpO3JldHVybiB0LmZuLnNlbGVjdDIuYW1kPWUsbn0pP2UuYXBwbHkobyx0KTplKXx8KHIuZXhwb3J0cz1uKX0pLmNhbGwodGhpcyxzKDApKX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihzKXt2YXIgbD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJmkoZS5wcm90b3R5cGUsdCksbiYmaShlLG4pLGV9O2Z1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfShmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBuLGEsdCxlLGk7ZnVuY3Rpb24gcigpe2ModGhpcyxyKX1mdW5jdGlvbiBvKCl7dmFyIGU9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2ModGhpcyxvKSx0aGlzLnJlbmRlcj10aGlzLnJlbmRlci5iaW5kKHRoaXMpLHRoaXMuYmluZD10aGlzLmJpbmQuYmluZCh0aGlzKSx0aGlzLnVuYmluZD10aGlzLnVuYmluZC5iaW5kKHRoaXMpLHRoaXMubW91c2VFbnRlcj10aGlzLm1vdXNlRW50ZXIuYmluZCh0aGlzKSx0aGlzLm1vdXNlTGVhdmU9dGhpcy5tb3VzZUxlYXZlLmJpbmQodGhpcyksdGhpcy5jbGljaz10aGlzLmNsaWNrLmJpbmQodGhpcyksdGhpcy5jbG9zZT10aGlzLmNsb3NlLmJpbmQodGhpcyksdGhpcy5jeWNsZT10aGlzLmN5Y2xlLmJpbmQodGhpcyksdGhpcy53YWl0QW5kRGlzbWlzcz10aGlzLndhaXRBbmREaXNtaXNzLmJpbmQodGhpcyksdGhpcy5wcmVzZW50PXRoaXMucHJlc2VudC5iaW5kKHRoaXMpLHRoaXMuZGlzbWlzcz10aGlzLmRpc21pc3MuYmluZCh0aGlzKSx0aGlzLnJlbW92ZT10aGlzLnJlbW92ZS5iaW5kKHRoaXMpLHRoaXMuYW5pbWF0ZT10aGlzLmFuaW1hdGUuYmluZCh0aGlzKSx0aGlzLiRncm93bHM9dGhpcy4kZ3Jvd2xzLmJpbmQodGhpcyksdGhpcy4kZ3Jvd2w9dGhpcy4kZ3Jvd2wuYmluZCh0aGlzKSx0aGlzLmh0bWw9dGhpcy5odG1sLmJpbmQodGhpcyksdGhpcy5jb250ZW50PXRoaXMuY29udGVudC5iaW5kKHRoaXMpLHRoaXMuY29udGFpbmVyPXRoaXMuY29udGFpbmVyLmJpbmQodGhpcyksdGhpcy5zZXR0aW5ncz1uLmV4dGVuZCh7fSxvLnNldHRpbmdzLGUpLHRoaXMuaW5pdGlhbGl6ZSh0aGlzLnNldHRpbmdzLmxvY2F0aW9uKSx0aGlzLnJlbmRlcigpfW49cyxsKHIsbnVsbCxbe2tleTpcInRyYW5zaXRpb25cIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGk9ZVswXSxyPXRoaXMudHJhbnNpdGlvbnM7Zm9yKG4gaW4gcilpZih0PXJbbl0sbnVsbCE9aS5zdHlsZVtuXSlyZXR1cm4gdH19XSksKGU9cikudHJhbnNpdGlvbnM9e3dlYmtpdFRyYW5zaXRpb246XCJ3ZWJraXRUcmFuc2l0aW9uRW5kXCIsbW96VHJhbnNpdGlvbjpcIm1velRyYW5zaXRpb25FbmRcIixvVHJhbnNpdGlvbjpcIm9UcmFuc2l0aW9uRW5kXCIsdHJhbnNpdGlvbjpcInRyYW5zaXRpb25lbmRcIn0sYT1lLGwobyxudWxsLFt7a2V5OlwiZ3Jvd2xcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8oMDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1lP2U6e30pfX1dKSxsKG8sW3trZXk6XCJpbml0aWFsaXplXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJncm93bHMtXCIrZTtyZXR1cm4gbihcImJvZHk6bm90KDpoYXMoI1wiK3QrXCIpKVwiKS5hcHBlbmQoJzxkaXYgaWQ9XCInK3QrJ1wiIC8+Jyl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRncm93bCgpO3RoaXMuJGdyb3dscyh0aGlzLnNldHRpbmdzLmxvY2F0aW9uKS5hcHBlbmQoZSksdGhpcy5zZXR0aW5ncy5maXhlZD90aGlzLnByZXNlbnQoKTp0aGlzLmN5Y2xlKCl9fSx7a2V5OlwiYmluZFwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09ZT9lOnRoaXMuJGdyb3dsKCk7cmV0dXJuIHQub24oXCJjbGlja1wiLHRoaXMuY2xpY2spLHRoaXMuc2V0dGluZ3MuZGVsYXlPbkhvdmVyJiYodC5vbihcIm1vdXNlZW50ZXJcIix0aGlzLm1vdXNlRW50ZXIpLHQub24oXCJtb3VzZWxlYXZlXCIsdGhpcy5tb3VzZUxlYXZlKSksdC5vbihcImNvbnRleHRtZW51XCIsdGhpcy5jbG9zZSkuZmluZChcIi5cIit0aGlzLnNldHRpbmdzLm5hbWVzcGFjZStcIi1jbG9zZVwiKS5vbihcImNsaWNrXCIsdGhpcy5jbG9zZSl9fSx7a2V5OlwidW5iaW5kXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1lP2U6dGhpcy4kZ3Jvd2woKTtyZXR1cm4gdC5vZmYoXCJjbGlja1wiLHRoaXMuY2xpY2spLHRoaXMuc2V0dGluZ3MuZGVsYXlPbkhvdmVyJiYodC5vZmYoXCJtb3VzZWVudGVyXCIsdGhpcy5tb3VzZUVudGVyKSx0Lm9mZihcIm1vdXNlbGVhdmVcIix0aGlzLm1vdXNlTGVhdmUpKSx0Lm9mZihcImNvbnRleHRtZW51XCIsdGhpcy5jbG9zZSkuZmluZChcIi5cIit0aGlzLnNldHRpbmdzLm5hbWVzcGFjZStcIi1jbG9zZVwiKS5vZmYoXCJjbGlja1wiLHRoaXMuY2xvc2UpfX0se2tleTpcIm1vdXNlRW50ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRncm93bCgpLnN0b3AoITAsITApfX0se2tleTpcIm1vdXNlTGVhdmVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLndhaXRBbmREaXNtaXNzKCl9fSx7a2V5OlwiY2xpY2tcIix2YWx1ZTpmdW5jdGlvbihlKXtpZihudWxsIT10aGlzLnNldHRpbmdzLnVybClyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksd2luZG93Lm9wZW4odGhpcy5zZXR0aW5ncy51cmwpfX0se2tleTpcImNsb3NlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuJGdyb3dsKCkuc3RvcCgpLnF1ZXVlKHRoaXMuZGlzbWlzcykucXVldWUodGhpcy5yZW1vdmUpfX0se2tleTpcImN5Y2xlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZ3Jvd2woKS5xdWV1ZSh0aGlzLnByZXNlbnQpLnF1ZXVlKHRoaXMud2FpdEFuZERpc21pc3MoKSl9fSx7a2V5Olwid2FpdEFuZERpc21pc3NcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRncm93bCgpLmRlbGF5KHRoaXMuc2V0dGluZ3MuZHVyYXRpb24pLnF1ZXVlKHRoaXMuZGlzbWlzcykucXVldWUodGhpcy5yZW1vdmUpfX0se2tleTpcInByZXNlbnRcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLiRncm93bCgpO3JldHVybiB0aGlzLmJpbmQodCksdGhpcy5hbmltYXRlKHQsdGhpcy5zZXR0aW5ncy5uYW1lc3BhY2UrXCItaW5jb21pbmdcIixcIm91dFwiLGUpfX0se2tleTpcImRpc21pc3NcIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLiRncm93bCgpO3JldHVybiB0aGlzLnVuYmluZCh0KSx0aGlzLmFuaW1hdGUodCx0aGlzLnNldHRpbmdzLm5hbWVzcGFjZStcIi1vdXRnb2luZ1wiLFwiaW5cIixlKX19LHtrZXk6XCJyZW1vdmVcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kZ3Jvd2woKS5yZW1vdmUoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UoKTp2b2lkIDB9fSx7a2V5OlwiYW5pbWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09bj9uOlwiaW5cIixvPWkscz1hLnRyYW5zaXRpb24oZSk7ZVtcImluXCI9PT1yP1wicmVtb3ZlQ2xhc3NcIjpcImFkZENsYXNzXCJdKHQpLGUub2Zmc2V0KCkucG9zaXRpb24sZVtcImluXCI9PT1yP1wiYWRkQ2xhc3NcIjpcInJlbW92ZUNsYXNzXCJdKHQpLG51bGwhPW8mJihudWxsIT1zP2Uub25lKHMsbyk6bygpKX19LHtrZXk6XCIkZ3Jvd2xzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PXRoaXMuJF9ncm93bHMmJih0aGlzLiRfZ3Jvd2xzPVtdKSxudWxsIT0odD10aGlzLiRfZ3Jvd2xzKVtlXT90W2VdOnRbZV09bihcIiNncm93bHMtXCIrZSl9fSx7a2V5OlwiJGdyb3dsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy4kX2dyb3dsP3RoaXMuJF9ncm93bDp0aGlzLiRfZ3Jvd2w9bih0aGlzLmh0bWwoKSl9fSx7a2V5OlwiaHRtbFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyKHRoaXMuY29udGVudCgpKX19LHtrZXk6XCJjb250ZW50XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5cIjxkaXYgY2xhc3M9J1wiK3RoaXMuc2V0dGluZ3MubmFtZXNwYWNlK1wiLWNsb3NlJz5cIit0aGlzLnNldHRpbmdzLmNsb3NlK1wiPC9kaXY+XFxuPGRpdiBjbGFzcz0nXCIrdGhpcy5zZXR0aW5ncy5uYW1lc3BhY2UrXCItdGl0bGUnPlwiK3RoaXMuc2V0dGluZ3MudGl0bGUrXCI8L2Rpdj5cXG48ZGl2IGNsYXNzPSdcIit0aGlzLnNldHRpbmdzLm5hbWVzcGFjZStcIi1tZXNzYWdlJz5cIit0aGlzLnNldHRpbmdzLm1lc3NhZ2UrXCI8L2Rpdj5cIn19LHtrZXk6XCJjb250YWluZXJcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm5cIjxkaXYgY2xhc3M9J1wiK3RoaXMuc2V0dGluZ3MubmFtZXNwYWNlK1wiIFwiK3RoaXMuc2V0dGluZ3MubmFtZXNwYWNlK1wiLVwiK3RoaXMuc2V0dGluZ3Muc3R5bGUrXCIgXCIrdGhpcy5zZXR0aW5ncy5uYW1lc3BhY2UrXCItXCIrdGhpcy5zZXR0aW5ncy5zaXplK1wiJz5cXG4gIFwiK2UrXCJcXG48L2Rpdj5cIn19XSksKGk9bykuc2V0dGluZ3M9e25hbWVzcGFjZTpcImdyb3dsXCIsZHVyYXRpb246MzIwMCxjbG9zZTpcIiYjMjE1O1wiLGxvY2F0aW9uOlwiZGVmYXVsdFwiLHN0eWxlOlwiZGVmYXVsdFwiLHNpemU6XCJtZWRpdW1cIixkZWxheU9uSG92ZXI6ITB9LHQ9aSx0aGlzLkdyb3dsPXQsbi5ncm93bD1mdW5jdGlvbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gdC5ncm93bChlKX0sbi5ncm93bC5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PXt0aXRsZTpcIkVycm9yIVwiLHN0eWxlOlwiZXJyb3JcIn07cmV0dXJuIG4uZ3Jvd2wobi5leHRlbmQodCxlKSl9LG4uZ3Jvd2wubm90aWNlPWZ1bmN0aW9uKCl7dmFyIGU9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9e3RpdGxlOlwiTm90aWNlIVwiLHN0eWxlOlwibm90aWNlXCJ9O3JldHVybiBuLmdyb3dsKG4uZXh0ZW5kKHQsZSkpfSxuLmdyb3dsLndhcm5pbmc9ZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD17dGl0bGU6XCJXYXJuaW5nIVwiLHN0eWxlOlwid2FybmluZ1wifTtyZXR1cm4gbi5ncm93bChuLmV4dGVuZCh0LGUpKX19KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLG4oMCkpfSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe3ZhciBzLGEsbCxjLHIsbix1LG8sZixpLGQsaCxwLGcsbSx2LHQseTtyPXt3cmFwcGVyQ2xhc3NBZGRpdGlvbmFsOlwiXCIsdGFnc1dyYXBwZXJDbGFzc0FkZGl0aW9uYWw6XCJcIix0YWdDbGFzc0FkZGl0aW9uYWw6XCJcIixjbG9zaW5nQ3Jvc3NDbGFzc0FkZGl0aW9ubmFsOlwiXCIsdGFnSW5wdXRXcmFwcGVyQ2xhc3NBZGRpdGlvbmFsOlwiXCIsdGFnSW5wdXRDbGFzc0FkZGl0aW9uYWw6XCJcIixkZWxpbWl0ZXI6XCIgXCIsaW5wdXRQbGFjZWhvbGRlcjpcIkFkZCB0YWcgLi4uXCIsY2xvc2luZ0Nyb3NzOiEoYz1hPW51bGwpLGNvbnRleHQ6bnVsbCxjbGVhckFsbEJ0bjohKGw9W10pLGNsZWFyQWxsSWNvbkNsYXNzQWRkaXRpb25hbDpcIlwiLGNsZWFyQWxsU3BhbkNsYXNzQWRkaXRpb25hbDpcIlwiLG9uVGFnc0NoYW5nZWQ6bnVsbCxvblJlc2V0VGFnczpudWxsfSxuPVwicHN0YWdnZXJXcmFwcGVyXCIsdT1cInBzdGFnZ2VyVGFnc1dyYXBwZXJcIixvPVwicHN0YWdnZXJUYWdcIixmPVwicHN0YWdnZXJBZGRUYWdXcmFwcGVyXCIsaT1cInBzdGFnZ2VyQWRkVGFnSW5wdXRcIixkPVwiXCIsaD1cInBzdGFnZ2VyUmVzZXRUYWdzQnRuXCIscD1cInBzdGFnZ2VyQ2xvc2luZ0Nyb3NzXCIsZz1mdW5jdGlvbigpe3ZhciBlPWMudmFsKCksdD1lLnNwbGl0KGEuZGVsaW1pdGVyKTtpZihlLmxlbmd0aCl7Zm9yKHZhciBuIGluIHQpe3ZhciBpPXRbbl07XCJcIiE9PWkmJmwucHVzaChpKX12YXIgcj1cIlwiO2ZvcihuIGluIGwpe3ZhciBvPWxbbl07cis9bShvKX1zKFwiLlwiK3UpLmVtcHR5KCkucHJlcGVuZChyKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxzKFwiLlwiK2YpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIil9ZWxzZSBzKFwiLlwiK3UpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIikscyhcIi5cIitmKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxjLmZvY3VzKCk7bnVsbCE9PWEub25UYWdzQ2hhbmdlZCYmYS5vblRhZ3NDaGFuZ2VkLmNhbGwoYS5jb250ZXh0LGwpfSxtPWZ1bmN0aW9uKGUpe3ZhciB0PSc8c3BhbiBjbGFzcz1cIicrbytcIiBcIithLnRhZ0NsYXNzQWRkaXRpb25hbCsnXCI+PHNwYW4+JytzKFwiPGRpdi8+XCIpLnRleHQoZSkuaHRtbCgpK1wiPC9zcGFuPlwiO3JldHVybiEwPT09YS5jbG9zaW5nQ3Jvc3MmJih0Kz0nPGEgY2xhc3M9XCInK3ArXCIgXCIrYS5jbG9zaW5nQ3Jvc3NDbGFzc0FkZGl0aW9ubmFsKydcIiBocmVmPVwiI1wiPng8L2E+JyksdCs9XCI8L3NwYW4+XCJ9LHY9ZnVuY3Rpb24oKXtzKGRvY3VtZW50KS5kZWxlZ2F0ZShcIi5cIitoLFwiY2xpY2tcIixmdW5jdGlvbigpe3QoITApfSl9LHQ9ZnVuY3Rpb24oZSl7bD1bXSxjLnZhbChcIlwiKSxzKFwiLlwiK3UpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIikscyhcIi5cIitmKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxjLmZvY3VzKCkscyhcIi5cIitvKS5yZW1vdmUoKSxudWxsIT09YS5vblJlc2V0VGFncyYmITA9PT1lJiZhLm9uUmVzZXRUYWdzLmNhbGwoYS5jb250ZXh0KX0seT1mdW5jdGlvbihuKXt2YXIgaT1cIlwiO3JldHVybiBzKFwiLlwiK28pLmVhY2goZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj09cyh0aGlzKS5pbmRleCgpfHx2b2lkKGkrPVwiIFwiK3ModGhpcykuY2hpbGRyZW4oKS5maXJzdCgpLnRleHQoKSl9KSxpfSwocz1lKS5mbi5wc3RhZ2dlcj1mdW5jdGlvbihlKXtyZXR1cm4gYT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKWUuaGFzT3duUHJvcGVydHkoaSk/bltpXT1lW2ldOm5baV09cltpXTtyZXR1cm4gbi5vcmlnaW5hbElucHV0PXQsbn0oZSx0aGlzKSxmdW5jdGlvbigpe2Eub3JpZ2luYWxJbnB1dC5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO3ZhciBlPVwiXCI7ITA9PT1hLmNsZWFyQWxsQnRuJiYoZSs9JzxzcGFuIGNsYXNzPVwiJytoK1wiIFwiK2EuY2xlYXJBbGxTcGFuQ2xhc3NBZGRpdGlvbmFsKydcIj48aSBjbGFzcz1cIicrZCtcIiBcIithLmNsZWFyQWxsSWNvbkNsYXNzQWRkaXRpb25hbCsnXCI+PC9pPjwvc3Bhbj4nLHYoKSk7dmFyIHQ9JzxkaXYgY2xhc3M9XCInK24rXCIgXCIrYS53cmFwcGVyQ2xhc3NBZGRpdGlvbmFsKydcIj4nK2UrJzxkaXYgY2xhc3M9XCInK3UrXCIgXCIrYS50YWdzV3JhcHBlckNsYXNzQWRkaXRpb25hbCsnXCI+PC9kaXY+PGRpdiBjbGFzcz1cIicrZitcIiBcIithLnRhZ0lucHV0V3JhcHBlckNsYXNzQWRkaXRpb25hbCsnXCI+PGlucHV0IGNsYXNzPVwiJytpK1wiIFwiK2EudGFnSW5wdXRDbGFzc0FkZGl0aW9uYWwrJ1wiPjwvZGl2PjwvZGl2Pic7YS5vcmlnaW5hbElucHV0LmFmdGVyKHQpLChjPXMoXCIuXCIraSkpLmF0dHIoXCJwbGFjZWhvbGRlclwiLGEuaW5wdXRQbGFjZWhvbGRlcil9KCksYy5rZXlwcmVzcyhmdW5jdGlvbihlKXsxMz09ZS5rZXlDb2RlJiYobD1bXSxnKCkpfSksYy5mb2N1c291dChmdW5jdGlvbihlKXtyZXR1cm4hcyhcIi5cIitoK1wiOmhvdmVyXCIpLmxlbmd0aCYmdm9pZChjLnZhbCgpLmxlbmd0aCYmKGw9W10sZygpKSl9KSxzKFwiLlwiK3UpLm9uKFwiY2xpY2tcIixmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5jbGFzc05hbWUsbj1uZXcgUmVnRXhwKHAsXCJnXCIpLGk9dC5tYXRjaChuKTtzKFwiLlwiK2YpLmlzKFwiOmhpZGRlblwiKSYmbnVsbD09PWkmJihzKFwiLlwiK3UpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIikscyhcIi5cIitmKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKSxjLmZvY3VzKCkpfSkscyhkb2N1bWVudCkuZGVsZWdhdGUoXCIuXCIrcCxcImNsaWNrXCIsZnVuY3Rpb24oZSl7dmFyIHQ9cyh0aGlzKS5wYXJlbnQoKSxuPXQuaW5kZXgoKSxpPXkobik7Yy52YWwoaSksdC5yZW1vdmUoKSxsPVtdLGcoKX0pLHtyZXNldFRhZ3M6dH19fSkuY2FsbCh0aGlzLG4oMCkpfSxmdW5jdGlvbihlLHQsbil7fV0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJlc3Rhc2hvcC11aS1raXQuanMubWFwIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5jb25zdCBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cbi8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cbmNvbnN0IGJhc2UgPSAzNjtcbmNvbnN0IHRNaW4gPSAxO1xuY29uc3QgdE1heCA9IDI2O1xuY29uc3Qgc2tldyA9IDM4O1xuY29uc3QgZGFtcCA9IDcwMDtcbmNvbnN0IGluaXRpYWxCaWFzID0gNzI7XG5jb25zdCBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxuY29uc3QgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5jb25zdCByZWdleFB1bnljb2RlID0gL154bi0tLztcbmNvbnN0IHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx4N0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG5jb25zdCByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xuY29uc3QgZXJyb3JzID0ge1xuXHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuY29uc3QgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3Qgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGZuKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRyZXN1bHRbbGVuZ3RoXSA9IGZuKGFycmF5W2xlbmd0aF0pO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG4gKiBhZGRyZXNzZXMuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuICogY2hhcmFjdGVyLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXBEb21haW4oc3RyaW5nLCBmbikge1xuXHRjb25zdCBwYXJ0cyA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRsZXQgcmVzdWx0ID0gJyc7XG5cdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Ly8gSW4gZW1haWwgYWRkcmVzc2VzLCBvbmx5IHRoZSBkb21haW4gbmFtZSBzaG91bGQgYmUgcHVueWNvZGVkLiBMZWF2ZVxuXHRcdC8vIHRoZSBsb2NhbCBwYXJ0IChpLmUuIGV2ZXJ5dGhpbmcgdXAgdG8gYEBgKSBpbnRhY3QuXG5cdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0c3RyaW5nID0gcGFydHNbMV07XG5cdH1cblx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShyZWdleFNlcGFyYXRvcnMsICdcXHgyRScpO1xuXHRjb25zdCBsYWJlbHMgPSBzdHJpbmcuc3BsaXQoJy4nKTtcblx0Y29uc3QgZW5jb2RlZCA9IG1hcChsYWJlbHMsIGZuKS5qb2luKCcuJyk7XG5cdHJldHVybiByZXN1bHQgKyBlbmNvZGVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqIEBzZWUgYHB1bnljb2RlLnVjczIuZW5jb2RlYFxuICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZGVjb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIFRoZSBVbmljb2RlIGlucHV0IHN0cmluZyAoVUNTLTIpLlxuICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICovXG5mdW5jdGlvbiB1Y3MyZGVjb2RlKHN0cmluZykge1xuXHRjb25zdCBvdXRwdXQgPSBbXTtcblx0bGV0IGNvdW50ZXIgPSAwO1xuXHRjb25zdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXHR3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuXHRcdGNvbnN0IHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG5cdFx0XHQvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuXHRcdFx0Y29uc3QgZXh0cmEgPSBzdHJpbmcuY2hhckNvZGVBdChjb3VudGVyKyspO1xuXHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIExvdyBzdXJyb2dhdGUuXG5cdFx0XHRcdG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuXHRcdFx0XHQvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRjb3VudGVyLS07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaW5nIGJhc2VkIG9uIGFuIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmRlY29kZWBcbiAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG4gKiBAbmFtZSBlbmNvZGVcbiAqIEBwYXJhbSB7QXJyYXl9IGNvZGVQb2ludHMgVGhlIGFycmF5IG9mIG51bWVyaWMgY29kZSBwb2ludHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG4gKi9cbmNvbnN0IHVjczJlbmNvZGUgPSBhcnJheSA9PiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5hcnJheSk7XG5cbi8qKlxuICogQ29udmVydHMgYSBiYXNpYyBjb2RlIHBvaW50IGludG8gYSBkaWdpdC9pbnRlZ2VyLlxuICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVQb2ludCBUaGUgYmFzaWMgbnVtZXJpYyBjb2RlIHBvaW50IHZhbHVlLlxuICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG4gKiByZXByZXNlbnRpbmcgaW50ZWdlcnMpIGluIHRoZSByYW5nZSBgMGAgdG8gYGJhc2UgLSAxYCwgb3IgYGJhc2VgIGlmXG4gKiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWx1ZS5cbiAqL1xuY29uc3QgYmFzaWNUb0RpZ2l0ID0gZnVuY3Rpb24oY29kZVBvaW50KSB7XG5cdGlmIChjb2RlUG9pbnQgLSAweDMwIDwgMHgwQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDE2O1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDQxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDQxO1xuXHR9XG5cdGlmIChjb2RlUG9pbnQgLSAweDYxIDwgMHgxQSkge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5jb25zdCBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbihkaWdpdCwgZmxhZykge1xuXHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBhZGFwdCA9IGZ1bmN0aW9uKGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHRsZXQgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbmNvbnN0IGRlY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdC8vIERvbid0IHVzZSBVQ1MtMi5cblx0Y29uc3Qgb3V0cHV0ID0gW107XG5cdGNvbnN0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXHRsZXQgaSA9IDA7XG5cdGxldCBuID0gaW5pdGlhbE47XG5cdGxldCBiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdGxldCBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdGlmIChiYXNpYyA8IDApIHtcblx0XHRiYXNpYyA9IDA7XG5cdH1cblxuXHRmb3IgKGxldCBqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAobGV0IGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRsZXQgb2xkaSA9IGk7XG5cdFx0Zm9yIChsZXQgdyA9IDEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXG5cdFx0XHRpZiAoaW5kZXggPj0gaW5wdXRMZW5ndGgpIHtcblx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGlnaXQgPSBiYXNpY1RvRGlnaXQoaW5wdXQuY2hhckNvZGVBdChpbmRleCsrKSk7XG5cblx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0Y29uc3QgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cblx0XHRcdGlmIChkaWdpdCA8IHQpIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdH1cblxuXHRcdGNvbnN0IG91dCA9IG91dHB1dC5sZW5ndGggKyAxO1xuXHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0Ly8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcblx0XHQvLyBpbmNyZW1lbnRpbmcgYG5gIGVhY2ggdGltZSwgc28gd2UnbGwgZml4IHRoYXQgbm93OlxuXHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0aSAlPSBvdXQ7XG5cblx0XHQvLyBJbnNlcnQgYG5gIGF0IHBvc2l0aW9uIGBpYCBvZiB0aGUgb3V0cHV0LlxuXHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblxuXHR9XG5cblx0cmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLm91dHB1dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbmNvbnN0IGVuY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdGNvbnN0IG91dHB1dCA9IFtdO1xuXG5cdC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG5cdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0Ly8gQ2FjaGUgdGhlIGxlbmd0aC5cblx0bGV0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHRsZXQgbiA9IGluaXRpYWxOO1xuXHRsZXQgZGVsdGEgPSAwO1xuXHRsZXQgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdGZvciAoY29uc3QgY3VycmVudFZhbHVlIG9mIGlucHV0KSB7XG5cdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcblx0XHR9XG5cdH1cblxuXHRsZXQgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXHRsZXQgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDtcblxuXHQvLyBgaGFuZGxlZENQQ291bnRgIGlzIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG5cdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG5cdH1cblxuXHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG5cblx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHRsZXQgbSA9IG1heEludDtcblx0XHRmb3IgKGNvbnN0IGN1cnJlbnRWYWx1ZSBvZiBpbnB1dCkge1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcblx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0Ly8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG5cdFx0Y29uc3QgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdG4gPSBtO1xuXG5cdFx0Zm9yIChjb25zdCBjdXJyZW50VmFsdWUgb2YgaW5wdXQpIHtcblx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlID09IG4pIHtcblx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG5cdFx0XHRcdGxldCBxID0gZGVsdGE7XG5cdFx0XHRcdGZvciAobGV0IGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXHRcdFx0XHRcdGNvbnN0IHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT0gYmFzaWNMZW5ndGgpO1xuXHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0KytkZWx0YTtcblx0XHQrK247XG5cblx0fVxuXHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzXG4gKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG4gKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cbiAqIGNvbnZlcnRlZCB0byBVbmljb2RlLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG4gKiBjb252ZXJ0IHRvIFVuaWNvZGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcbiAqIHN0cmluZy5cbiAqL1xuY29uc3QgdG9Vbmljb2RlID0gZnVuY3Rpb24oaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpXG5cdFx0XHQ/IGRlY29kZShzdHJpbmcuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSlcblx0XHRcdDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgYSBkb21haW4gbmFtZSBvciBhbiBlbWFpbCBhZGRyZXNzIHRvXG4gKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcbiAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuICogQVNDSUkuXG4gKiBAbWVtYmVyT2YgcHVueWNvZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG4gKiBVbmljb2RlIHN0cmluZy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3JcbiAqIGVtYWlsIGFkZHJlc3MuXG4gKi9cbmNvbnN0IHRvQVNDSUkgPSBmdW5jdGlvbihpbnB1dCkge1xuXHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZylcblx0XHRcdD8gJ3huLS0nICsgZW5jb2RlKHN0cmluZylcblx0XHRcdDogc3RyaW5nO1xuXHR9KTtcbn07XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiogRGVmaW5lIHRoZSBwdWJsaWMgQVBJICovXG5jb25zdCBwdW55Y29kZSA9IHtcblx0LyoqXG5cdCAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBQdW55Y29kZS5qcyB2ZXJzaW9uIG51bWJlci5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEB0eXBlIFN0cmluZ1xuXHQgKi9cblx0J3ZlcnNpb24nOiAnMi4xLjAnLFxuXHQvKipcblx0ICogQW4gb2JqZWN0IG9mIG1ldGhvZHMgdG8gY29udmVydCBmcm9tIEphdmFTY3JpcHQncyBpbnRlcm5hbCBjaGFyYWN0ZXJcblx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAdHlwZSBPYmplY3Rcblx0ICovXG5cdCd1Y3MyJzoge1xuXHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdH0sXG5cdCdkZWNvZGUnOiBkZWNvZGUsXG5cdCdlbmNvZGUnOiBlbmNvZGUsXG5cdCd0b0FTQ0lJJzogdG9BU0NJSSxcblx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxufTtcblxuZXhwb3J0IHsgdWNzMmRlY29kZSwgdWNzMmVuY29kZSwgZGVjb2RlLCBlbmNvZGUsIHRvQVNDSUksIHRvVW5pY29kZSB9O1xuZXhwb3J0IGRlZmF1bHQgcHVueWNvZGU7XG4iLCIvKiBnbG9iYWwgd2luZG93LCBleHBvcnRzLCBkZWZpbmUgKi9cblxuIWZ1bmN0aW9uKCkge1xuICAgICd1c2Ugc3RyaWN0J1xuXG4gICAgdmFyIHJlID0ge1xuICAgICAgICBub3Rfc3RyaW5nOiAvW15zXS8sXG4gICAgICAgIG5vdF9ib29sOiAvW150XS8sXG4gICAgICAgIG5vdF90eXBlOiAvW15UXS8sXG4gICAgICAgIG5vdF9wcmltaXRpdmU6IC9bXnZdLyxcbiAgICAgICAgbnVtYmVyOiAvW2RpZWZnXS8sXG4gICAgICAgIG51bWVyaWNfYXJnOiAvW2JjZGllZmd1eFhdLyxcbiAgICAgICAganNvbjogL1tqXS8sXG4gICAgICAgIG5vdF9qc29uOiAvW15qXS8sXG4gICAgICAgIHRleHQ6IC9eW15cXHgyNV0rLyxcbiAgICAgICAgbW9kdWxvOiAvXlxceDI1ezJ9LyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IC9eXFx4MjUoPzooWzEtOV1cXGQqKVxcJHxcXCgoW14pXSspXFwpKT8oXFwrKT8oMHwnW14kXSk/KC0pPyhcXGQrKT8oPzpcXC4oXFxkKykpPyhbYi1naWpvc3RUdXZ4WF0pLyxcbiAgICAgICAga2V5OiAvXihbYS16X11bYS16X1xcZF0qKS9pLFxuICAgICAgICBrZXlfYWNjZXNzOiAvXlxcLihbYS16X11bYS16X1xcZF0qKS9pLFxuICAgICAgICBpbmRleF9hY2Nlc3M6IC9eXFxbKFxcZCspXFxdLyxcbiAgICAgICAgc2lnbjogL15bKy1dL1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNwcmludGYoa2V5KSB7XG4gICAgICAgIC8vIGBhcmd1bWVudHNgIGlzIG5vdCBhbiBhcnJheSwgYnV0IHNob3VsZCBiZSBmaW5lIGZvciB0aGlzIGNhbGxcbiAgICAgICAgcmV0dXJuIHNwcmludGZfZm9ybWF0KHNwcmludGZfcGFyc2Uoa2V5KSwgYXJndW1lbnRzKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwgYXJndikge1xuICAgICAgICByZXR1cm4gc3ByaW50Zi5hcHBseShudWxsLCBbZm10XS5jb25jYXQoYXJndiB8fCBbXSkpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3ByaW50Zl9mb3JtYXQocGFyc2VfdHJlZSwgYXJndikge1xuICAgICAgICB2YXIgY3Vyc29yID0gMSwgdHJlZV9sZW5ndGggPSBwYXJzZV90cmVlLmxlbmd0aCwgYXJnLCBvdXRwdXQgPSAnJywgaSwgaywgcGgsIHBhZCwgcGFkX2NoYXJhY3RlciwgcGFkX2xlbmd0aCwgaXNfcG9zaXRpdmUsIHNpZ25cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRyZWVfbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyc2VfdHJlZVtpXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gcGFyc2VfdHJlZVtpXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhcnNlX3RyZWVbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcGggPSBwYXJzZV90cmVlW2ldIC8vIGNvbnZlbmllbmNlIHB1cnBvc2VzIG9ubHlcbiAgICAgICAgICAgICAgICBpZiAocGgua2V5cykgeyAvLyBrZXl3b3JkIGFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3ZbY3Vyc29yXVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgcGgua2V5cy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignW3NwcmludGZdIENhbm5vdCBhY2Nlc3MgcHJvcGVydHkgXCIlc1wiIG9mIHVuZGVmaW5lZCB2YWx1ZSBcIiVzXCInLCBwaC5rZXlzW2tdLCBwaC5rZXlzW2stMV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnW3BoLmtleXNba11dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocGgucGFyYW1fbm8pIHsgLy8gcG9zaXRpb25hbCBhcmd1bWVudCAoZXhwbGljaXQpXG4gICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3ZbcGgucGFyYW1fbm9dXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBwb3NpdGlvbmFsIGFyZ3VtZW50IChpbXBsaWNpdClcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJndltjdXJzb3IrK11cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmUubm90X3R5cGUudGVzdChwaC50eXBlKSAmJiByZS5ub3RfcHJpbWl0aXZlLnRlc3QocGgudHlwZSkgJiYgYXJnIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmUubnVtZXJpY19hcmcudGVzdChwaC50eXBlKSAmJiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgJiYgaXNOYU4oYXJnKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzcHJpbnRmKCdbc3ByaW50Zl0gZXhwZWN0aW5nIG51bWJlciBidXQgZm91bmQgJVQnLCBhcmcpKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZS5udW1iZXIudGVzdChwaC50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICBpc19wb3NpdGl2ZSA9IGFyZyA+PSAwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwaC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gcGFyc2VJbnQoYXJnLCAxMCkudG9TdHJpbmcoMilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChhcmcsIDEwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBhcnNlSW50KGFyZywgMTApXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IEpTT04uc3RyaW5naWZ5KGFyZywgbnVsbCwgcGgud2lkdGggPyBwYXJzZUludChwaC53aWR0aCkgOiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwaC5wcmVjaXNpb24gPyBwYXJzZUZsb2F0KGFyZykudG9FeHBvbmVudGlhbChwaC5wcmVjaXNpb24pIDogcGFyc2VGbG9hdChhcmcpLnRvRXhwb25lbnRpYWwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBwaC5wcmVjaXNpb24gPyBwYXJzZUZsb2F0KGFyZykudG9GaXhlZChwaC5wcmVjaXNpb24pIDogcGFyc2VGbG9hdChhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBoLnByZWNpc2lvbiA/IFN0cmluZyhOdW1iZXIoYXJnLnRvUHJlY2lzaW9uKHBoLnByZWNpc2lvbikpKSA6IHBhcnNlRmxvYXQoYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGFyc2VJbnQoYXJnLCAxMCkgPj4+IDApLnRvU3RyaW5nKDgpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IFN0cmluZyhhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGgucHJlY2lzaW9uID8gYXJnLnN1YnN0cmluZygwLCBwaC5wcmVjaXNpb24pIDogYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBTdHJpbmcoISFhcmcpXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSAocGgucHJlY2lzaW9uID8gYXJnLnN1YnN0cmluZygwLCBwaC5wcmVjaXNpb24pIDogYXJnKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnKS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBoLnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gcGFyc2VJbnQoYXJnLCAxMCkgPj4+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gYXJnLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBoLnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZylcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBhcnNlSW50KGFyZywgMTApID4+PiAwKS50b1N0cmluZygxNilcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKHBhcnNlSW50KGFyZywgMTApID4+PiAwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlLmpzb24udGVzdChwaC50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gYXJnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmUubnVtYmVyLnRlc3QocGgudHlwZSkgJiYgKCFpc19wb3NpdGl2ZSB8fCBwaC5zaWduKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IGlzX3Bvc2l0aXZlID8gJysnIDogJy0nXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcudG9TdHJpbmcoKS5yZXBsYWNlKHJlLnNpZ24sICcnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFkX2NoYXJhY3RlciA9IHBoLnBhZF9jaGFyID8gcGgucGFkX2NoYXIgPT09ICcwJyA/ICcwJyA6IHBoLnBhZF9jaGFyLmNoYXJBdCgxKSA6ICcgJ1xuICAgICAgICAgICAgICAgICAgICBwYWRfbGVuZ3RoID0gcGgud2lkdGggLSAoc2lnbiArIGFyZykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIHBhZCA9IHBoLndpZHRoID8gKHBhZF9sZW5ndGggPiAwID8gcGFkX2NoYXJhY3Rlci5yZXBlYXQocGFkX2xlbmd0aCkgOiAnJykgOiAnJ1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gcGguYWxpZ24gPyBzaWduICsgYXJnICsgcGFkIDogKHBhZF9jaGFyYWN0ZXIgPT09ICcwJyA/IHNpZ24gKyBwYWQgKyBhcmcgOiBwYWQgKyBzaWduICsgYXJnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0XG4gICAgfVxuXG4gICAgdmFyIHNwcmludGZfY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgICBmdW5jdGlvbiBzcHJpbnRmX3BhcnNlKGZtdCkge1xuICAgICAgICBpZiAoc3ByaW50Zl9jYWNoZVtmbXRdKSB7XG4gICAgICAgICAgICByZXR1cm4gc3ByaW50Zl9jYWNoZVtmbXRdXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2ZtdCA9IGZtdCwgbWF0Y2gsIHBhcnNlX3RyZWUgPSBbXSwgYXJnX25hbWVzID0gMFxuICAgICAgICB3aGlsZSAoX2ZtdCkge1xuICAgICAgICAgICAgaWYgKChtYXRjaCA9IHJlLnRleHQuZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJzZV90cmVlLnB1c2gobWF0Y2hbMF0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgobWF0Y2ggPSByZS5tb2R1bG8uZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwYXJzZV90cmVlLnB1c2goJyUnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKG1hdGNoID0gcmUucGxhY2Vob2xkZXIuZXhlYyhfZm10KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hbMl0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnX25hbWVzIHw9IDFcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkX2xpc3QgPSBbXSwgcmVwbGFjZW1lbnRfZmllbGQgPSBtYXRjaFsyXSwgZmllbGRfbWF0Y2ggPSBbXVxuICAgICAgICAgICAgICAgICAgICBpZiAoKGZpZWxkX21hdGNoID0gcmUua2V5LmV4ZWMocmVwbGFjZW1lbnRfZmllbGQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGlzdC5wdXNoKGZpZWxkX21hdGNoWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChyZXBsYWNlbWVudF9maWVsZCA9IHJlcGxhY2VtZW50X2ZpZWxkLnN1YnN0cmluZyhmaWVsZF9tYXRjaFswXS5sZW5ndGgpKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZpZWxkX21hdGNoID0gcmUua2V5X2FjY2Vzcy5leGVjKHJlcGxhY2VtZW50X2ZpZWxkKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGlzdC5wdXNoKGZpZWxkX21hdGNoWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoZmllbGRfbWF0Y2ggPSByZS5pbmRleF9hY2Nlc3MuZXhlYyhyZXBsYWNlbWVudF9maWVsZCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignW3NwcmludGZdIGZhaWxlZCB0byBwYXJzZSBuYW1lZCBhcmd1bWVudCBrZXknKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoWzJdID0gZmllbGRfbGlzdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnX25hbWVzIHw9IDJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFyZ19uYW1lcyA9PT0gMykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tzcHJpbnRmXSBtaXhpbmcgcG9zaXRpb25hbCBhbmQgbmFtZWQgcGxhY2Vob2xkZXJzIGlzIG5vdCAoeWV0KSBzdXBwb3J0ZWQnKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhcnNlX3RyZWUucHVzaChcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fbm86ICAgIG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5czogICAgICAgIG1hdGNoWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbjogICAgICAgIG1hdGNoWzNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkX2NoYXI6ICAgIG1hdGNoWzRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ246ICAgICAgIG1hdGNoWzVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICAgICAgIG1hdGNoWzZdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAgIG1hdGNoWzddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogICAgICAgIG1hdGNoWzhdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSB1bmV4cGVjdGVkIHBsYWNlaG9sZGVyJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9mbXQgPSBfZm10LnN1YnN0cmluZyhtYXRjaFswXS5sZW5ndGgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwcmludGZfY2FjaGVbZm10XSA9IHBhcnNlX3RyZWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBleHBvcnQgdG8gZWl0aGVyIGJyb3dzZXIgb3Igbm9kZS5qc1xuICAgICAqL1xuICAgIC8qIGVzbGludC1kaXNhYmxlIHF1b3RlLXByb3BzICovXG4gICAgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBleHBvcnRzWydzcHJpbnRmJ10gPSBzcHJpbnRmXG4gICAgICAgIGV4cG9ydHNbJ3ZzcHJpbnRmJ10gPSB2c3ByaW50ZlxuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93WydzcHJpbnRmJ10gPSBzcHJpbnRmXG4gICAgICAgIHdpbmRvd1sndnNwcmludGYnXSA9IHZzcHJpbnRmXG5cbiAgICAgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkge1xuICAgICAgICAgICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICdzcHJpbnRmJzogc3ByaW50ZixcbiAgICAgICAgICAgICAgICAgICAgJ3ZzcHJpbnRmJzogdnNwcmludGZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgcXVvdGUtcHJvcHMgKi9cbn0oKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuIiwiLyohIGpxdWVyeS50YWJsZWRuZC5qcyAzMC0xMi0yMDE3ICovXG4hZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9XCJ0b3VjaHN0YXJ0IG1vdXNlZG93blwiLGY9XCJ0b3VjaG1vdmUgbW91c2Vtb3ZlXCIsZz1cInRvdWNoZW5kIG1vdXNldXBcIjthKGMpLnJlYWR5KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhKXtmb3IodmFyIGI9e30sYz1hLm1hdGNoKC8oW147Ol0rKS9nKXx8W107Yy5sZW5ndGg7KWJbYy5zaGlmdCgpXT1jLnNoaWZ0KCkudHJpbSgpO3JldHVybiBifWEoXCJ0YWJsZVwiKS5lYWNoKGZ1bmN0aW9uKCl7XCJkbmRcIj09PWEodGhpcykuZGF0YShcInRhYmxlXCIpJiZhKHRoaXMpLnRhYmxlRG5EKHtvbkRyYWdTdHlsZTphKHRoaXMpLmRhdGEoXCJvbmRyYWdzdHlsZVwiKSYmYihhKHRoaXMpLmRhdGEoXCJvbmRyYWdzdHlsZVwiKSl8fG51bGwsb25Ecm9wU3R5bGU6YSh0aGlzKS5kYXRhKFwib25kcm9wc3R5bGVcIikmJmIoYSh0aGlzKS5kYXRhKFwib25kcm9wc3R5bGVcIikpfHxudWxsLG9uRHJhZ0NsYXNzOmEodGhpcykuZGF0YShcIm9uZHJhZ2NsYXNzXCIpPT09ZCYmXCJ0RG5EX3doaWxlRHJhZ1wifHxhKHRoaXMpLmRhdGEoXCJvbmRyYWdjbGFzc1wiKSxvbkRyb3A6YSh0aGlzKS5kYXRhKFwib25kcm9wXCIpJiZuZXcgRnVuY3Rpb24oXCJ0YWJsZVwiLFwicm93XCIsYSh0aGlzKS5kYXRhKFwib25kcm9wXCIpKSxvbkRyYWdTdGFydDphKHRoaXMpLmRhdGEoXCJvbmRyYWdzdGFydFwiKSYmbmV3IEZ1bmN0aW9uKFwidGFibGVcIixcInJvd1wiLGEodGhpcykuZGF0YShcIm9uZHJhZ3N0YXJ0XCIpKSxvbkRyYWdTdG9wOmEodGhpcykuZGF0YShcIm9uZHJhZ3N0b3BcIikmJm5ldyBGdW5jdGlvbihcInRhYmxlXCIsXCJyb3dcIixhKHRoaXMpLmRhdGEoXCJvbmRyYWdzdG9wXCIpKSxzY3JvbGxBbW91bnQ6YSh0aGlzKS5kYXRhKFwic2Nyb2xsYW1vdW50XCIpfHw1LHNlbnNpdGl2aXR5OmEodGhpcykuZGF0YShcInNlbnNpdGl2aXR5XCIpfHwxMCxoaWVyYXJjaHlMZXZlbDphKHRoaXMpLmRhdGEoXCJoaWVyYXJjaHlsZXZlbFwiKXx8MCxpbmRlbnRBcnRpZmFjdDphKHRoaXMpLmRhdGEoXCJpbmRlbnRhcnRpZmFjdFwiKXx8JzxkaXYgY2xhc3M9XCJpbmRlbnRcIj4mbmJzcDs8L2Rpdj4nLGF1dG9XaWR0aEFkanVzdDphKHRoaXMpLmRhdGEoXCJhdXRvd2lkdGhhZGp1c3RcIil8fCEwLGF1dG9DbGVhblJlbGF0aW9uczphKHRoaXMpLmRhdGEoXCJhdXRvY2xlYW5yZWxhdGlvbnNcIil8fCEwLGpzb25QcmV0aWZ5U2VwYXJhdG9yOmEodGhpcykuZGF0YShcImpzb25wcmV0aWZ5c2VwYXJhdG9yXCIpfHxcIlxcdFwiLHNlcmlhbGl6ZVJlZ2V4cDphKHRoaXMpLmRhdGEoXCJzZXJpYWxpemVyZWdleHBcIikmJm5ldyBSZWdFeHAoYSh0aGlzKS5kYXRhKFwic2VyaWFsaXplcmVnZXhwXCIpKXx8L1teXFwtXSokLyxzZXJpYWxpemVQYXJhbU5hbWU6YSh0aGlzKS5kYXRhKFwic2VyaWFsaXplcGFyYW1uYW1lXCIpfHwhMSxkcmFnSGFuZGxlOmEodGhpcykuZGF0YShcImRyYWdoYW5kbGVcIil8fG51bGx9KX0pfSksalF1ZXJ5LnRhYmxlRG5EPXtjdXJyZW50VGFibGU6bnVsbCxkcmFnT2JqZWN0Om51bGwsbW91c2VPZmZzZXQ6bnVsbCxvbGRYOjAsb2xkWTowLGJ1aWxkOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnRhYmxlRG5EQ29uZmlnPWEuZXh0ZW5kKHtvbkRyYWdTdHlsZTpudWxsLG9uRHJvcFN0eWxlOm51bGwsb25EcmFnQ2xhc3M6XCJ0RG5EX3doaWxlRHJhZ1wiLG9uRHJvcDpudWxsLG9uRHJhZ1N0YXJ0Om51bGwsb25EcmFnU3RvcDpudWxsLHNjcm9sbEFtb3VudDo1LHNlbnNpdGl2aXR5OjEwLGhpZXJhcmNoeUxldmVsOjAsaW5kZW50QXJ0aWZhY3Q6JzxkaXYgY2xhc3M9XCJpbmRlbnRcIj4mbmJzcDs8L2Rpdj4nLGF1dG9XaWR0aEFkanVzdDohMCxhdXRvQ2xlYW5SZWxhdGlvbnM6ITAsanNvblByZXRpZnlTZXBhcmF0b3I6XCJcXHRcIixzZXJpYWxpemVSZWdleHA6L1teXFwtXSokLyxzZXJpYWxpemVQYXJhbU5hbWU6ITEsZHJhZ0hhbmRsZTpudWxsfSxifHx7fSksYS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpLHRoaXMudGFibGVEbkRDb25maWcuaGllcmFyY2h5TGV2ZWwmJmEudGFibGVEbkQubWFrZUluZGVudGVkKHRoaXMpfSksdGhpc30sbWFrZUluZGVudGVkOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZT1iLnRhYmxlRG5EQ29uZmlnLGY9Yi5yb3dzLGc9YShmKS5maXJzdCgpLmZpbmQoXCJ0ZDpmaXJzdFwiKVswXSxoPTAsaT0wO2lmKGEoYikuaGFzQ2xhc3MoXCJpbmR0ZFwiKSlyZXR1cm4gbnVsbDtkPWEoYikuYWRkQ2xhc3MoXCJpbmR0ZFwiKS5hdHRyKFwic3R5bGVcIiksYShiKS5jc3Moe3doaXRlU3BhY2U6XCJub3dyYXBcIn0pO2Zvcih2YXIgaj0wO2o8Zi5sZW5ndGg7aisrKWk8YShmW2pdKS5maW5kKFwidGQ6Zmlyc3RcIikudGV4dCgpLmxlbmd0aCYmKGk9YShmW2pdKS5maW5kKFwidGQ6Zmlyc3RcIikudGV4dCgpLmxlbmd0aCxjPWopO2ZvcihhKGcpLmNzcyh7d2lkdGg6XCJhdXRvXCJ9KSxqPTA7ajxlLmhpZXJhcmNoeUxldmVsO2orKylhKGZbY10pLmZpbmQoXCJ0ZDpmaXJzdFwiKS5wcmVwZW5kKGUuaW5kZW50QXJ0aWZhY3QpO2ZvcihnJiZhKGcpLmNzcyh7d2lkdGg6Zy5vZmZzZXRXaWR0aH0pLGQmJmEoYikuY3NzKGQpLGo9MDtqPGUuaGllcmFyY2h5TGV2ZWw7aisrKWEoZltjXSkuZmluZChcInRkOmZpcnN0XCIpLmNoaWxkcmVuKFwiOmZpcnN0XCIpLnJlbW92ZSgpO3JldHVybiBlLmhpZXJhcmNoeUxldmVsJiZhKGYpLmVhY2goZnVuY3Rpb24oKXsoaD1hKHRoaXMpLmRhdGEoXCJsZXZlbFwiKXx8MCk8PWUuaGllcmFyY2h5TGV2ZWwmJmEodGhpcykuZGF0YShcImxldmVsXCIsaCl8fGEodGhpcykuZGF0YShcImxldmVsXCIsMCk7Zm9yKHZhciBiPTA7YjxhKHRoaXMpLmRhdGEoXCJsZXZlbFwiKTtiKyspYSh0aGlzKS5maW5kKFwidGQ6Zmlyc3RcIikucHJlcGVuZChlLmluZGVudEFydGlmYWN0KX0pLHRoaXN9LG1ha2VEcmFnZ2FibGU6ZnVuY3Rpb24oYil7dmFyIGM9Yi50YWJsZURuRENvbmZpZztjLmRyYWdIYW5kbGUmJmEoYy5kcmFnSGFuZGxlLGIpLmVhY2goZnVuY3Rpb24oKXthKHRoaXMpLmJpbmQoZSxmdW5jdGlvbihkKXtyZXR1cm4gYS50YWJsZURuRC5pbml0aWFsaXNlRHJhZyhhKHRoaXMpLnBhcmVudHMoXCJ0clwiKVswXSxiLHRoaXMsZCxjKSwhMX0pfSl8fGEoYi5yb3dzKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5oYXNDbGFzcyhcIm5vZHJhZ1wiKT9hKHRoaXMpLmNzcyhcImN1cnNvclwiLFwiXCIpOmEodGhpcykuYmluZChlLGZ1bmN0aW9uKGQpe2lmKFwiVERcIj09PWQudGFyZ2V0LnRhZ05hbWUpcmV0dXJuIGEudGFibGVEbkQuaW5pdGlhbGlzZURyYWcodGhpcyxiLHRoaXMsZCxjKSwhMX0pLmNzcyhcImN1cnNvclwiLFwibW92ZVwiKX0pfSxjdXJyZW50T3JkZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmN1cnJlbnRUYWJsZS5yb3dzO3JldHVybiBhLm1hcChiLGZ1bmN0aW9uKGIpe3JldHVybihhKGIpLmRhdGEoXCJsZXZlbFwiKStiLmlkKS5yZXBsYWNlKC9cXHMvZyxcIlwiKX0pLmpvaW4oXCJcIil9LGluaXRpYWxpc2VEcmFnOmZ1bmN0aW9uKGIsZCxlLGgsaSl7dGhpcy5kcmFnT2JqZWN0PWIsdGhpcy5jdXJyZW50VGFibGU9ZCx0aGlzLm1vdXNlT2Zmc2V0PXRoaXMuZ2V0TW91c2VPZmZzZXQoZSxoKSx0aGlzLm9yaWdpbmFsT3JkZXI9dGhpcy5jdXJyZW50T3JkZXIoKSxhKGMpLmJpbmQoZix0aGlzLm1vdXNlbW92ZSkuYmluZChnLHRoaXMubW91c2V1cCksaS5vbkRyYWdTdGFydCYmaS5vbkRyYWdTdGFydChkLGUpfSx1cGRhdGVUYWJsZXM6ZnVuY3Rpb24oKXt0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnRhYmxlRG5EQ29uZmlnJiZhLnRhYmxlRG5ELm1ha2VEcmFnZ2FibGUodGhpcyl9KX0sbW91c2VDb29yZHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlcz97eDphLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCx5OmEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZfTphLnBhZ2VYfHxhLnBhZ2VZP3t4OmEucGFnZVgseTphLnBhZ2VZfTp7eDphLmNsaWVudFgrYy5ib2R5LnNjcm9sbExlZnQtYy5ib2R5LmNsaWVudExlZnQseTphLmNsaWVudFkrYy5ib2R5LnNjcm9sbFRvcC1jLmJvZHkuY2xpZW50VG9wfX0sZ2V0TW91c2VPZmZzZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlO3JldHVybiBjPWN8fGIuZXZlbnQsZT10aGlzLmdldFBvc2l0aW9uKGEpLGQ9dGhpcy5tb3VzZUNvb3JkcyhjKSx7eDpkLngtZS54LHk6ZC55LWUueX19LGdldFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz0wO2ZvcigwPT09YS5vZmZzZXRIZWlnaHQmJihhPWEuZmlyc3RDaGlsZCk7YS5vZmZzZXRQYXJlbnQ7KWIrPWEub2Zmc2V0TGVmdCxjKz1hLm9mZnNldFRvcCxhPWEub2Zmc2V0UGFyZW50O3JldHVybiBiKz1hLm9mZnNldExlZnQsYys9YS5vZmZzZXRUb3Ase3g6Yix5OmN9fSxhdXRvU2Nyb2xsOmZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMuY3VycmVudFRhYmxlLnRhYmxlRG5EQ29uZmlnLGU9Yi5wYWdlWU9mZnNldCxmPWIuaW5uZXJIZWlnaHQ/Yi5pbm5lckhlaWdodDpjLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ/Yy5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OmMuYm9keS5jbGllbnRIZWlnaHQ7Yy5hbGwmJih2b2lkIDAhPT1jLmNvbXBhdE1vZGUmJlwiQmFja0NvbXBhdFwiIT09Yy5jb21wYXRNb2RlP2U9Yy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOnZvaWQgMCE9PWMuYm9keSYmKGU9Yy5ib2R5LnNjcm9sbFRvcCkpLGEueS1lPGQuc2Nyb2xsQW1vdW50JiZiLnNjcm9sbEJ5KDAsLWQuc2Nyb2xsQW1vdW50KXx8Zi0oYS55LWUpPGQuc2Nyb2xsQW1vdW50JiZiLnNjcm9sbEJ5KDAsZC5zY3JvbGxBbW91bnQpfSxtb3ZlVmVydGljbGU6ZnVuY3Rpb24oYSxiKXswIT09YS52ZXJ0aWNhbCYmYiYmdGhpcy5kcmFnT2JqZWN0IT09YiYmdGhpcy5kcmFnT2JqZWN0LnBhcmVudE5vZGU9PT1iLnBhcmVudE5vZGUmJigwPmEudmVydGljYWwmJnRoaXMuZHJhZ09iamVjdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmRyYWdPYmplY3QsYi5uZXh0U2libGluZyl8fDA8YS52ZXJ0aWNhbCYmdGhpcy5kcmFnT2JqZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuZHJhZ09iamVjdCxiKSl9LG1vdmVIb3Jpem9udGFsOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT10aGlzLmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZztpZighZS5oaWVyYXJjaHlMZXZlbHx8MD09PWIuaG9yaXpvbnRhbHx8IWN8fHRoaXMuZHJhZ09iamVjdCE9PWMpcmV0dXJuIG51bGw7ZD1hKGMpLmRhdGEoXCJsZXZlbFwiKSwwPGIuaG9yaXpvbnRhbCYmZD4wJiZhKGMpLmZpbmQoXCJ0ZDpmaXJzdFwiKS5jaGlsZHJlbihcIjpmaXJzdFwiKS5yZW1vdmUoKSYmYShjKS5kYXRhKFwibGV2ZWxcIiwtLWQpLDA+Yi5ob3Jpem9udGFsJiZkPGUuaGllcmFyY2h5TGV2ZWwmJmEoYykucHJldigpLmRhdGEoXCJsZXZlbFwiKT49ZCYmYShjKS5jaGlsZHJlbihcIjpmaXJzdFwiKS5wcmVwZW5kKGUuaW5kZW50QXJ0aWZhY3QpJiZhKGMpLmRhdGEoXCJsZXZlbFwiLCsrZCl9LG1vdXNlbW92ZTpmdW5jdGlvbihiKXt2YXIgYyxkLGUsZixnLGg9YShhLnRhYmxlRG5ELmRyYWdPYmplY3QpLGk9YS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7cmV0dXJuIGImJmIucHJldmVudERlZmF1bHQoKSwhIWEudGFibGVEbkQuZHJhZ09iamVjdCYmKFwidG91Y2htb3ZlXCI9PT1iLnR5cGUmJmV2ZW50LnByZXZlbnREZWZhdWx0KCksaS5vbkRyYWdDbGFzcyYmaC5hZGRDbGFzcyhpLm9uRHJhZ0NsYXNzKXx8aC5jc3MoaS5vbkRyYWdTdHlsZSksZD1hLnRhYmxlRG5ELm1vdXNlQ29vcmRzKGIpLGY9ZC54LWEudGFibGVEbkQubW91c2VPZmZzZXQueCxnPWQueS1hLnRhYmxlRG5ELm1vdXNlT2Zmc2V0LnksYS50YWJsZURuRC5hdXRvU2Nyb2xsKGQpLGM9YS50YWJsZURuRC5maW5kRHJvcFRhcmdldFJvdyhoLGcpLGU9YS50YWJsZURuRC5maW5kRHJhZ0RpcmVjdGlvbihmLGcpLGEudGFibGVEbkQubW92ZVZlcnRpY2xlKGUsYyksYS50YWJsZURuRC5tb3ZlSG9yaXpvbnRhbChlLGMpLCExKX0sZmluZERyYWdEaXJlY3Rpb246ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZy5zZW5zaXRpdml0eSxkPXRoaXMub2xkWCxlPXRoaXMub2xkWSxmPWQtYyxnPWQrYyxoPWUtYyxpPWUrYyxqPXtob3Jpem9udGFsOmE+PWYmJmE8PWc/MDphPmQ/LTE6MSx2ZXJ0aWNhbDpiPj1oJiZiPD1pPzA6Yj5lPy0xOjF9O3JldHVybiAwIT09ai5ob3Jpem9udGFsJiYodGhpcy5vbGRYPWEpLDAhPT1qLnZlcnRpY2FsJiYodGhpcy5vbGRZPWIpLGp9LGZpbmREcm9wVGFyZ2V0Um93OmZ1bmN0aW9uKGIsYyl7Zm9yKHZhciBkPTAsZT10aGlzLmN1cnJlbnRUYWJsZS5yb3dzLGY9dGhpcy5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWcsZz0wLGg9bnVsbCxpPTA7aTxlLmxlbmd0aDtpKyspaWYoaD1lW2ldLGc9dGhpcy5nZXRQb3NpdGlvbihoKS55LGQ9cGFyc2VJbnQoaC5vZmZzZXRIZWlnaHQpLzIsMD09PWgub2Zmc2V0SGVpZ2h0JiYoZz10aGlzLmdldFBvc2l0aW9uKGguZmlyc3RDaGlsZCkueSxkPXBhcnNlSW50KGguZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQpLzIpLGM+Zy1kJiZjPGcrZClyZXR1cm4gYi5pcyhoKXx8Zi5vbkFsbG93RHJvcCYmIWYub25BbGxvd0Ryb3AoYixoKXx8YShoKS5oYXNDbGFzcyhcIm5vZHJvcFwiKT9udWxsOmg7cmV0dXJuIG51bGx9LHByb2Nlc3NNb3VzZXVwOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY3VycmVudFRhYmxlfHwhdGhpcy5kcmFnT2JqZWN0KXJldHVybiBudWxsO3ZhciBiPXRoaXMuY3VycmVudFRhYmxlLnRhYmxlRG5EQ29uZmlnLGQ9dGhpcy5kcmFnT2JqZWN0LGU9MCxoPTA7YShjKS51bmJpbmQoZix0aGlzLm1vdXNlbW92ZSkudW5iaW5kKGcsdGhpcy5tb3VzZXVwKSxiLmhpZXJhcmNoeUxldmVsJiZiLmF1dG9DbGVhblJlbGF0aW9ucyYmYSh0aGlzLmN1cnJlbnRUYWJsZS5yb3dzKS5maXJzdCgpLmZpbmQoXCJ0ZDpmaXJzdFwiKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXsoaD1hKHRoaXMpLnBhcmVudHMoXCJ0cjpmaXJzdFwiKS5kYXRhKFwibGV2ZWxcIikpJiZhKHRoaXMpLnBhcmVudHMoXCJ0cjpmaXJzdFwiKS5kYXRhKFwibGV2ZWxcIiwtLWgpJiZhKHRoaXMpLnJlbW92ZSgpfSkmJmIuaGllcmFyY2h5TGV2ZWw+MSYmYSh0aGlzLmN1cnJlbnRUYWJsZS5yb3dzKS5lYWNoKGZ1bmN0aW9uKCl7aWYoKGg9YSh0aGlzKS5kYXRhKFwibGV2ZWxcIikpPjEpZm9yKGU9YSh0aGlzKS5wcmV2KCkuZGF0YShcImxldmVsXCIpO2g+ZSsxOylhKHRoaXMpLmZpbmQoXCJ0ZDpmaXJzdFwiKS5jaGlsZHJlbihcIjpmaXJzdFwiKS5yZW1vdmUoKSxhKHRoaXMpLmRhdGEoXCJsZXZlbFwiLC0taCl9KSxiLm9uRHJhZ0NsYXNzJiZhKGQpLnJlbW92ZUNsYXNzKGIub25EcmFnQ2xhc3MpfHxhKGQpLmNzcyhiLm9uRHJvcFN0eWxlKSx0aGlzLmRyYWdPYmplY3Q9bnVsbCxiLm9uRHJvcCYmdGhpcy5vcmlnaW5hbE9yZGVyIT09dGhpcy5jdXJyZW50T3JkZXIoKSYmYShkKS5oaWRlKCkuZmFkZUluKFwiZmFzdFwiKSYmYi5vbkRyb3AodGhpcy5jdXJyZW50VGFibGUsZCksYi5vbkRyYWdTdG9wJiZiLm9uRHJhZ1N0b3AodGhpcy5jdXJyZW50VGFibGUsZCksdGhpcy5jdXJyZW50VGFibGU9bnVsbH0sbW91c2V1cDpmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi5wcmV2ZW50RGVmYXVsdCgpLGEudGFibGVEbkQucHJvY2Vzc01vdXNldXAoKSwhMX0sanNvbml6ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmN1cnJlbnRUYWJsZTtyZXR1cm4gYT9KU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlRGF0YShiKSxudWxsLGIudGFibGVEbkRDb25maWcuanNvblByZXRpZnlTZXBhcmF0b3IpOkpTT04uc3RyaW5naWZ5KHRoaXMudGFibGVEYXRhKGIpKX0sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGEucGFyYW0odGhpcy50YWJsZURhdGEodGhpcy5jdXJyZW50VGFibGUpKX0sc2VyaWFsaXplVGFibGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVwiXCIsYz1hLnRhYmxlRG5EQ29uZmlnLnNlcmlhbGl6ZVBhcmFtTmFtZXx8YS5pZCxkPWEucm93cyxlPTA7ZTxkLmxlbmd0aDtlKyspe2IubGVuZ3RoPjAmJihiKz1cIiZcIik7dmFyIGY9ZFtlXS5pZDtmJiZhLnRhYmxlRG5EQ29uZmlnJiZhLnRhYmxlRG5EQ29uZmlnLnNlcmlhbGl6ZVJlZ2V4cCYmKGY9Zi5tYXRjaChhLnRhYmxlRG5EQ29uZmlnLnNlcmlhbGl6ZVJlZ2V4cClbMF0sYis9YytcIltdPVwiK2YpfXJldHVybiBifSxzZXJpYWxpemVUYWJsZXM6ZnVuY3Rpb24oKXt2YXIgYj1bXTtyZXR1cm4gYShcInRhYmxlXCIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkJiZiLnB1c2goYS5wYXJhbShhLnRhYmxlRG5ELnRhYmxlRGF0YSh0aGlzKSkpfSksYi5qb2luKFwiJlwiKX0sdGFibGVEYXRhOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZSxmLGc9Yi50YWJsZURuRENvbmZpZyxoPVtdLGk9MCxqPTAsaz1udWxsLGw9e307aWYoYnx8KGI9dGhpcy5jdXJyZW50VGFibGUpLCFifHwhYi5yb3dzfHwhYi5yb3dzLmxlbmd0aClyZXR1cm57ZXJyb3I6e2NvZGU6NTAwLG1lc3NhZ2U6XCJOb3QgYSB2YWxpZCB0YWJsZS5cIn19O2lmKCFiLmlkJiYhZy5zZXJpYWxpemVQYXJhbU5hbWUpcmV0dXJue2Vycm9yOntjb2RlOjUwMCxtZXNzYWdlOlwiTm8gc2VyaWFsaXphYmxlIHVuaXF1ZSBpZCBwcm92aWRlZC5cIn19O2Y9Zy5hdXRvQ2xlYW5SZWxhdGlvbnMmJmIucm93c3x8YS5tYWtlQXJyYXkoYi5yb3dzKSxkPWcuc2VyaWFsaXplUGFyYW1OYW1lfHxiLmlkLGU9ZCxjPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZnJiZnLnNlcmlhbGl6ZVJlZ2V4cD9hLm1hdGNoKGcuc2VyaWFsaXplUmVnZXhwKVswXTphfSxsW2VdPVtdLCFnLmF1dG9DbGVhblJlbGF0aW9ucyYmYShmWzBdKS5kYXRhKFwibGV2ZWxcIikmJmYudW5zaGlmdCh7aWQ6XCJ1bmRlZmluZWRcIn0pO2Zvcih2YXIgbT0wO208Zi5sZW5ndGg7bSsrKWlmKGcuaGllcmFyY2h5TGV2ZWwpe2lmKDA9PT0oaj1hKGZbbV0pLmRhdGEoXCJsZXZlbFwiKXx8MCkpZT1kLGg9W107ZWxzZSBpZihqPmkpaC5wdXNoKFtlLGldKSxlPWMoZlttLTFdLmlkKTtlbHNlIGlmKGo8aSlmb3IodmFyIG49MDtuPGgubGVuZ3RoO24rKyloW25dWzFdPT09aiYmKGU9aFtuXVswXSksaFtuXVsxXT49aSYmKGhbbl1bMV09MCk7aT1qLGEuaXNBcnJheShsW2VdKXx8KGxbZV09W10pLGs9YyhmW21dLmlkKSxrJiZsW2VdLnB1c2goayl9ZWxzZShrPWMoZlttXS5pZCkpJiZsW2VdLnB1c2goayk7cmV0dXJuIGx9fSxqUXVlcnkuZm4uZXh0ZW5kKHt0YWJsZURuRDphLnRhYmxlRG5ELmJ1aWxkLHRhYmxlRG5EVXBkYXRlOmEudGFibGVEbkQudXBkYXRlVGFibGVzLHRhYmxlRG5EU2VyaWFsaXplOmEucHJveHkoYS50YWJsZURuRC5zZXJpYWxpemUsYS50YWJsZURuRCksdGFibGVEbkRTZXJpYWxpemVBbGw6YS50YWJsZURuRC5zZXJpYWxpemVUYWJsZXMsdGFibGVEbkREYXRhOmEucHJveHkoYS50YWJsZURuRC50YWJsZURhdGEsYS50YWJsZURuRCl9KX0oalF1ZXJ5LHdpbmRvdyx3aW5kb3cuZG9jdW1lbnQpOyIsIi8qIVxuICogdHlwZWFoZWFkLmpzIDAuMTEuMVxuICogaHR0cHM6Ly9naXRodWIuY29tL3R3aXR0ZXIvdHlwZWFoZWFkLmpzXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE1IFR3aXR0ZXIsIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9yczsgTGljZW5zZWQgTUlUXG4gKi9cblxuIWZ1bmN0aW9uKGEsYil7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShcImJsb29kaG91bmRcIixbXCJqcXVlcnlcIl0sZnVuY3Rpb24oYyl7cmV0dXJuIGEuQmxvb2Rob3VuZD1iKGMpfSk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YihyZXF1aXJlKFwianF1ZXJ5XCIpKTphLkJsb29kaG91bmQ9YihqUXVlcnkpfSh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7cmV0dXJue2lzTXNpZTpmdW5jdGlvbigpe3JldHVybi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk/bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKG1zaWUgfHJ2OikoXFxkKyguXFxkKyk/KS9pKVsyXTohMX0saXNCbGFua1N0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4hYXx8L15cXHMqJC8udGVzdChhKX0sZXNjYXBlUmVnRXhDaGFyczpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bXFwtXFxbXFxdXFwvXFx7XFx9XFwoXFwpXFwqXFwrXFw/XFwuXFxcXFxcXlxcJFxcfF0vZyxcIlxcXFwkJlwiKX0saXNTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGF9LGlzTnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBhfSxpc0FycmF5OmEuaXNBcnJheSxpc0Z1bmN0aW9uOmEuaXNGdW5jdGlvbixpc09iamVjdDphLmlzUGxhaW5PYmplY3QsaXNVbmRlZmluZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIGF9LGlzRWxlbWVudDpmdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSl9LGlzSlF1ZXJ5OmZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgYX0sdG9TdHI6ZnVuY3Rpb24oYSl7cmV0dXJuIGIuaXNVbmRlZmluZWQoYSl8fG51bGw9PT1hP1wiXCI6YStcIlwifSxiaW5kOmEucHJveHksZWFjaDpmdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm4gYyhiLGEpfWEuZWFjaChiLGQpfSxtYXA6YS5tYXAsZmlsdGVyOmEuZ3JlcCxldmVyeTpmdW5jdGlvbihiLGMpe3ZhciBkPSEwO3JldHVybiBiPyhhLmVhY2goYixmdW5jdGlvbihhLGUpe3JldHVybihkPWMuY2FsbChudWxsLGUsYSxiKSk/dm9pZCAwOiExfSksISFkKTpkfSxzb21lOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9ITE7cmV0dXJuIGI/KGEuZWFjaChiLGZ1bmN0aW9uKGEsZSl7cmV0dXJuKGQ9Yy5jYWxsKG51bGwsZSxhLGIpKT8hMTp2b2lkIDB9KSwhIWQpOmR9LG1peGluOmEuZXh0ZW5kLGlkZW50aXR5OmZ1bmN0aW9uKGEpe3JldHVybiBhfSxjbG9uZTpmdW5jdGlvbihiKXtyZXR1cm4gYS5leHRlbmQoITAse30sYil9LGdldElkR2VuZXJhdG9yOmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYSsrfX0sdGVtcGxhdGlmeTpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKCl7cmV0dXJuIFN0cmluZyhiKX1yZXR1cm4gYS5pc0Z1bmN0aW9uKGIpP2I6Y30sZGVmZXI6ZnVuY3Rpb24oYSl7c2V0VGltZW91dChhLDApfSxkZWJvdW5jZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZixnLGg9dGhpcyxpPWFyZ3VtZW50cztyZXR1cm4gZj1mdW5jdGlvbigpe2Q9bnVsbCxjfHwoZT1hLmFwcGx5KGgsaSkpfSxnPWMmJiFkLGNsZWFyVGltZW91dChkKSxkPXNldFRpbWVvdXQoZixiKSxnJiYoZT1hLmFwcGx5KGgsaSkpLGV9fSx0aHJvdHRsZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGcsaDtyZXR1cm4gZz0wLGg9ZnVuY3Rpb24oKXtnPW5ldyBEYXRlLGU9bnVsbCxmPWEuYXBwbHkoYyxkKX0sZnVuY3Rpb24oKXt2YXIgaT1uZXcgRGF0ZSxqPWItKGktZyk7cmV0dXJuIGM9dGhpcyxkPWFyZ3VtZW50cywwPj1qPyhjbGVhclRpbWVvdXQoZSksZT1udWxsLGc9aSxmPWEuYXBwbHkoYyxkKSk6ZXx8KGU9c2V0VGltZW91dChoLGopKSxmfX0sc3RyaW5naWZ5OmZ1bmN0aW9uKGEpe3JldHVybiBiLmlzU3RyaW5nKGEpP2E6SlNPTi5zdHJpbmdpZnkoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9fX0oKSxjPVwiMC4xMS4xXCIsZD1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGEoYSl7cmV0dXJuIGE9Yi50b1N0cihhKSxhP2Euc3BsaXQoL1xccysvKTpbXX1mdW5jdGlvbiBjKGEpe3JldHVybiBhPWIudG9TdHIoYSksYT9hLnNwbGl0KC9cXFcrLyk6W119ZnVuY3Rpb24gZChhKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGM9Yi5pc0FycmF5KGMpP2M6W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCksZnVuY3Rpb24oZCl7dmFyIGU9W107cmV0dXJuIGIuZWFjaChjLGZ1bmN0aW9uKGMpe2U9ZS5jb25jYXQoYShiLnRvU3RyKGRbY10pKSl9KSxlfX19cmV0dXJue25vbndvcmQ6Yyx3aGl0ZXNwYWNlOmEsb2JqOntub253b3JkOmQoYyksd2hpdGVzcGFjZTpkKGEpfX19KCksZT1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGMoYyl7dGhpcy5tYXhTaXplPWIuaXNOdW1iZXIoYyk/YzoxMDAsdGhpcy5yZXNldCgpLHRoaXMubWF4U2l6ZTw9MCYmKHRoaXMuc2V0PXRoaXMuZ2V0PWEubm9vcCl9ZnVuY3Rpb24gZCgpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbH1mdW5jdGlvbiBlKGEsYil7dGhpcy5rZXk9YSx0aGlzLnZhbD1iLHRoaXMucHJldj10aGlzLm5leHQ9bnVsbH1yZXR1cm4gYi5taXhpbihjLnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10aGlzLmxpc3QudGFpbDt0aGlzLnNpemU+PXRoaXMubWF4U2l6ZSYmKHRoaXMubGlzdC5yZW1vdmUoZCksZGVsZXRlIHRoaXMuaGFzaFtkLmtleV0sdGhpcy5zaXplLS0pLChjPXRoaXMuaGFzaFthXSk/KGMudmFsPWIsdGhpcy5saXN0Lm1vdmVUb0Zyb250KGMpKTooYz1uZXcgZShhLGIpLHRoaXMubGlzdC5hZGQoYyksdGhpcy5oYXNoW2FdPWMsdGhpcy5zaXplKyspfSxnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5oYXNoW2FdO3JldHVybiBiPyh0aGlzLmxpc3QubW92ZVRvRnJvbnQoYiksYi52YWwpOnZvaWQgMH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLmhhc2g9e30sdGhpcy5saXN0PW5ldyBkfX0pLGIubWl4aW4oZC5wcm90b3R5cGUse2FkZDpmdW5jdGlvbihhKXt0aGlzLmhlYWQmJihhLm5leHQ9dGhpcy5oZWFkLHRoaXMuaGVhZC5wcmV2PWEpLHRoaXMuaGVhZD1hLHRoaXMudGFpbD10aGlzLnRhaWx8fGF9LHJlbW92ZTpmdW5jdGlvbihhKXthLnByZXY/YS5wcmV2Lm5leHQ9YS5uZXh0OnRoaXMuaGVhZD1hLm5leHQsYS5uZXh0P2EubmV4dC5wcmV2PWEucHJldjp0aGlzLnRhaWw9YS5wcmV2fSxtb3ZlVG9Gcm9udDpmdW5jdGlvbihhKXt0aGlzLnJlbW92ZShhKSx0aGlzLmFkZChhKX19KSxjfSgpLGY9ZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBjKGEsYyl7dGhpcy5wcmVmaXg9W1wiX19cIixhLFwiX19cIl0uam9pbihcIlwiKSx0aGlzLnR0bEtleT1cIl9fdHRsX19cIix0aGlzLmtleU1hdGNoZXI9bmV3IFJlZ0V4cChcIl5cIitiLmVzY2FwZVJlZ0V4Q2hhcnModGhpcy5wcmVmaXgpKSx0aGlzLmxzPWN8fGgsIXRoaXMubHMmJnRoaXMuX25vb3AoKX1mdW5jdGlvbiBkKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9ZnVuY3Rpb24gZShhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYi5pc1VuZGVmaW5lZChhKT9udWxsOmEpfWZ1bmN0aW9uIGYoYil7cmV0dXJuIGEucGFyc2VKU09OKGIpfWZ1bmN0aW9uIGcoYSl7dmFyIGIsYyxkPVtdLGU9aC5sZW5ndGg7Zm9yKGI9MDtlPmI7YisrKShjPWgua2V5KGIpKS5tYXRjaChhKSYmZC5wdXNoKGMucmVwbGFjZShhLFwiXCIpKTtyZXR1cm4gZH12YXIgaDt0cnl7aD13aW5kb3cubG9jYWxTdG9yYWdlLGguc2V0SXRlbShcIn5+flwiLFwiIVwiKSxoLnJlbW92ZUl0ZW0oXCJ+fn5cIil9Y2F0Y2goaSl7aD1udWxsfXJldHVybiBiLm1peGluKGMucHJvdG90eXBlLHtfcHJlZml4OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnByZWZpeCthfSxfdHRsS2V5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9wcmVmaXgoYSkrdGhpcy50dGxLZXl9LF9ub29wOmZ1bmN0aW9uKCl7dGhpcy5nZXQ9dGhpcy5zZXQ9dGhpcy5yZW1vdmU9dGhpcy5jbGVhcj10aGlzLmlzRXhwaXJlZD1iLm5vb3B9LF9zYWZlU2V0OmZ1bmN0aW9uKGEsYil7dHJ5e3RoaXMubHMuc2V0SXRlbShhLGIpfWNhdGNoKGMpe1wiUXVvdGFFeGNlZWRlZEVycm9yXCI9PT1jLm5hbWUmJih0aGlzLmNsZWFyKCksdGhpcy5fbm9vcCgpKX19LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc0V4cGlyZWQoYSkmJnRoaXMucmVtb3ZlKGEpLGYodGhpcy5scy5nZXRJdGVtKHRoaXMuX3ByZWZpeChhKSkpfSxzZXQ6ZnVuY3Rpb24oYSxjLGYpe3JldHVybiBiLmlzTnVtYmVyKGYpP3RoaXMuX3NhZmVTZXQodGhpcy5fdHRsS2V5KGEpLGUoZCgpK2YpKTp0aGlzLmxzLnJlbW92ZUl0ZW0odGhpcy5fdHRsS2V5KGEpKSx0aGlzLl9zYWZlU2V0KHRoaXMuX3ByZWZpeChhKSxlKGMpKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxzLnJlbW92ZUl0ZW0odGhpcy5fdHRsS2V5KGEpKSx0aGlzLmxzLnJlbW92ZUl0ZW0odGhpcy5fcHJlZml4KGEpKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBhLGI9Zyh0aGlzLmtleU1hdGNoZXIpO2ZvcihhPWIubGVuZ3RoO2EtLTspdGhpcy5yZW1vdmUoYlthXSk7cmV0dXJuIHRoaXN9LGlzRXhwaXJlZDpmdW5jdGlvbihhKXt2YXIgYz1mKHRoaXMubHMuZ2V0SXRlbSh0aGlzLl90dGxLZXkoYSkpKTtyZXR1cm4gYi5pc051bWJlcihjKSYmZCgpPmM/ITA6ITF9fSksY30oKSxnPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYyhhKXthPWF8fHt9LHRoaXMuY2FuY2VsbGVkPSExLHRoaXMubGFzdFJlcT1udWxsLHRoaXMuX3NlbmQ9YS50cmFuc3BvcnQsdGhpcy5fZ2V0PWEubGltaXRlcj9hLmxpbWl0ZXIodGhpcy5fZ2V0KTp0aGlzLl9nZXQsdGhpcy5fY2FjaGU9YS5jYWNoZT09PSExP25ldyBlKDApOmh9dmFyIGQ9MCxmPXt9LGc9NixoPW5ldyBlKDEwKTtyZXR1cm4gYy5zZXRNYXhQZW5kaW5nUmVxdWVzdHM9ZnVuY3Rpb24oYSl7Zz1hfSxjLnJlc2V0Q2FjaGU9ZnVuY3Rpb24oKXtoLnJlc2V0KCl9LGIubWl4aW4oYy5wcm90b3R5cGUse19maW5nZXJwcmludDpmdW5jdGlvbihiKXtyZXR1cm4gYj1ifHx7fSxiLnVybCtiLnR5cGUrYS5wYXJhbShiLmRhdGF8fHt9KX0sX2dldDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7YihudWxsLGEpLGsuX2NhY2hlLnNldChpLGEpfWZ1bmN0aW9uIGUoKXtiKCEwKX1mdW5jdGlvbiBoKCl7ZC0tLGRlbGV0ZSBmW2ldLGsub25EZWNrUmVxdWVzdEFyZ3MmJihrLl9nZXQuYXBwbHkoayxrLm9uRGVja1JlcXVlc3RBcmdzKSxrLm9uRGVja1JlcXVlc3RBcmdzPW51bGwpfXZhciBpLGosaz10aGlzO2k9dGhpcy5fZmluZ2VycHJpbnQoYSksdGhpcy5jYW5jZWxsZWR8fGkhPT10aGlzLmxhc3RSZXF8fCgoaj1mW2ldKT9qLmRvbmUoYykuZmFpbChlKTpnPmQ/KGQrKyxmW2ldPXRoaXMuX3NlbmQoYSkuZG9uZShjKS5mYWlsKGUpLmFsd2F5cyhoKSk6dGhpcy5vbkRlY2tSZXF1ZXN0QXJncz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LGdldDpmdW5jdGlvbihjLGQpe3ZhciBlLGY7ZD1kfHxhLm5vb3AsYz1iLmlzU3RyaW5nKGMpP3t1cmw6Y306Y3x8e30sZj10aGlzLl9maW5nZXJwcmludChjKSx0aGlzLmNhbmNlbGxlZD0hMSx0aGlzLmxhc3RSZXE9ZiwoZT10aGlzLl9jYWNoZS5nZXQoZikpP2QobnVsbCxlKTp0aGlzLl9nZXQoYyxkKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxsZWQ9ITB9fSksY30oKSxoPXdpbmRvdy5TZWFyY2hJbmRleD1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGMoYyl7Yz1jfHx7fSxjLmRhdHVtVG9rZW5pemVyJiZjLnF1ZXJ5VG9rZW5pemVyfHxhLmVycm9yKFwiZGF0dW1Ub2tlbml6ZXIgYW5kIHF1ZXJ5VG9rZW5pemVyIGFyZSBib3RoIHJlcXVpcmVkXCIpLHRoaXMuaWRlbnRpZnk9Yy5pZGVudGlmeXx8Yi5zdHJpbmdpZnksdGhpcy5kYXR1bVRva2VuaXplcj1jLmRhdHVtVG9rZW5pemVyLHRoaXMucXVlcnlUb2tlbml6ZXI9Yy5xdWVyeVRva2VuaXplcix0aGlzLnJlc2V0KCl9ZnVuY3Rpb24gZChhKXtyZXR1cm4gYT1iLmZpbHRlcihhLGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pLGE9Yi5tYXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfSl9ZnVuY3Rpb24gZSgpe3ZhciBhPXt9O3JldHVybiBhW2ldPVtdLGFbaF09e30sYX1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYj17fSxjPVtdLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYlthW2RdXXx8KGJbYVtkXV09ITAsYy5wdXNoKGFbZF0pKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsYil7dmFyIGM9MCxkPTAsZT1bXTthPWEuc29ydCgpLGI9Yi5zb3J0KCk7Zm9yKHZhciBmPWEubGVuZ3RoLGc9Yi5sZW5ndGg7Zj5jJiZnPmQ7KWFbY108YltkXT9jKys6YVtjXT5iW2RdP2QrKzooZS5wdXNoKGFbY10pLGMrKyxkKyspO3JldHVybiBlfXZhciBoPVwiY1wiLGk9XCJpXCI7cmV0dXJuIGIubWl4aW4oYy5wcm90b3R5cGUse2Jvb3RzdHJhcDpmdW5jdGlvbihhKXt0aGlzLmRhdHVtcz1hLmRhdHVtcyx0aGlzLnRyaWU9YS50cmllfSxhZGQ6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpczthPWIuaXNBcnJheShhKT9hOlthXSxiLmVhY2goYSxmdW5jdGlvbihhKXt2YXIgZixnO2MuZGF0dW1zW2Y9Yy5pZGVudGlmeShhKV09YSxnPWQoYy5kYXR1bVRva2VuaXplcihhKSksYi5lYWNoKGcsZnVuY3Rpb24oYSl7dmFyIGIsZCxnO2ZvcihiPWMudHJpZSxkPWEuc3BsaXQoXCJcIik7Zz1kLnNoaWZ0KCk7KWI9YltoXVtnXXx8KGJbaF1bZ109ZSgpKSxiW2ldLnB1c2goZil9KX0pfSxnZXQ6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcztyZXR1cm4gYi5tYXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYy5kYXR1bXNbYV19KX0sc2VhcmNoOmZ1bmN0aW9uKGEpe3ZhciBjLGUsaj10aGlzO3JldHVybiBjPWQodGhpcy5xdWVyeVRva2VuaXplcihhKSksYi5lYWNoKGMsZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGY7aWYoZSYmMD09PWUubGVuZ3RoKXJldHVybiExO2ZvcihiPWoudHJpZSxjPWEuc3BsaXQoXCJcIik7YiYmKGQ9Yy5zaGlmdCgpKTspYj1iW2hdW2RdO3JldHVybiBiJiYwPT09Yy5sZW5ndGg/KGY9YltpXS5zbGljZSgwKSx2b2lkKGU9ZT9nKGUsZik6ZikpOihlPVtdLCExKX0pLGU/Yi5tYXAoZihlKSxmdW5jdGlvbihhKXtyZXR1cm4gai5kYXR1bXNbYV19KTpbXX0sYWxsOmZ1bmN0aW9uKCl7dmFyIGE9W107Zm9yKHZhciBiIGluIHRoaXMuZGF0dW1zKWEucHVzaCh0aGlzLmRhdHVtc1tiXSk7cmV0dXJuIGF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5kYXR1bXM9e30sdGhpcy50cmllPWUoKX0sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJue2RhdHVtczp0aGlzLmRhdHVtcyx0cmllOnRoaXMudHJpZX19fSksY30oKSxpPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYShhKXt0aGlzLnVybD1hLnVybCx0aGlzLnR0bD1hLnR0bCx0aGlzLmNhY2hlPWEuY2FjaGUsdGhpcy5wcmVwYXJlPWEucHJlcGFyZSx0aGlzLnRyYW5zZm9ybT1hLnRyYW5zZm9ybSx0aGlzLnRyYW5zcG9ydD1hLnRyYW5zcG9ydCx0aGlzLnRodW1icHJpbnQ9YS50aHVtYnByaW50LHRoaXMuc3RvcmFnZT1uZXcgZihhLmNhY2hlS2V5KX12YXIgYztyZXR1cm4gYz17ZGF0YTpcImRhdGFcIixwcm90b2NvbDpcInByb3RvY29sXCIsdGh1bWJwcmludDpcInRodW1icHJpbnRcIn0sYi5taXhpbihhLnByb3RvdHlwZSx7X3NldHRpbmdzOmZ1bmN0aW9uKCl7cmV0dXJue3VybDp0aGlzLnVybCx0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJqc29uXCJ9fSxzdG9yZTpmdW5jdGlvbihhKXt0aGlzLmNhY2hlJiYodGhpcy5zdG9yYWdlLnNldChjLmRhdGEsYSx0aGlzLnR0bCksdGhpcy5zdG9yYWdlLnNldChjLnByb3RvY29sLGxvY2F0aW9uLnByb3RvY29sLHRoaXMudHRsKSx0aGlzLnN0b3JhZ2Uuc2V0KGMudGh1bWJwcmludCx0aGlzLnRodW1icHJpbnQsdGhpcy50dGwpKX0sZnJvbUNhY2hlOmZ1bmN0aW9uKCl7dmFyIGEsYj17fTtyZXR1cm4gdGhpcy5jYWNoZT8oYi5kYXRhPXRoaXMuc3RvcmFnZS5nZXQoYy5kYXRhKSxiLnByb3RvY29sPXRoaXMuc3RvcmFnZS5nZXQoYy5wcm90b2NvbCksYi50aHVtYnByaW50PXRoaXMuc3RvcmFnZS5nZXQoYy50aHVtYnByaW50KSxhPWIudGh1bWJwcmludCE9PXRoaXMudGh1bWJwcmludHx8Yi5wcm90b2NvbCE9PWxvY2F0aW9uLnByb3RvY29sLGIuZGF0YSYmIWE/Yi5kYXRhOm51bGwpOm51bGx9LGZyb21OZXR3b3JrOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXthKCEwKX1mdW5jdGlvbiBjKGIpe2EobnVsbCxlLnRyYW5zZm9ybShiKSl9dmFyIGQsZT10aGlzO2EmJihkPXRoaXMucHJlcGFyZSh0aGlzLl9zZXR0aW5ncygpKSx0aGlzLnRyYW5zcG9ydChkKS5mYWlsKGIpLmRvbmUoYykpfSxjbGVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JhZ2UuY2xlYXIoKSx0aGlzfX0pLGF9KCksaj1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGEoYSl7dGhpcy51cmw9YS51cmwsdGhpcy5wcmVwYXJlPWEucHJlcGFyZSx0aGlzLnRyYW5zZm9ybT1hLnRyYW5zZm9ybSx0aGlzLnRyYW5zcG9ydD1uZXcgZyh7Y2FjaGU6YS5jYWNoZSxsaW1pdGVyOmEubGltaXRlcix0cmFuc3BvcnQ6YS50cmFuc3BvcnR9KX1yZXR1cm4gYi5taXhpbihhLnByb3RvdHlwZSx7X3NldHRpbmdzOmZ1bmN0aW9uKCl7cmV0dXJue3VybDp0aGlzLnVybCx0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJqc29uXCJ9fSxnZXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYyl7YihhP1tdOmUudHJhbnNmb3JtKGMpKX12YXIgZCxlPXRoaXM7aWYoYilyZXR1cm4gYT1hfHxcIlwiLGQ9dGhpcy5wcmVwYXJlKGEsdGhpcy5fc2V0dGluZ3MoKSksdGhpcy50cmFuc3BvcnQuZ2V0KGQsYyl9LGNhbmNlbExhc3RSZXF1ZXN0OmZ1bmN0aW9uKCl7dGhpcy50cmFuc3BvcnQuY2FuY2VsKCl9fSksYX0oKSxrPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZChkKXt2YXIgZTtyZXR1cm4gZD8oZT17dXJsOm51bGwsdHRsOjg2NGU1LGNhY2hlOiEwLGNhY2hlS2V5Om51bGwsdGh1bWJwcmludDpcIlwiLHByZXBhcmU6Yi5pZGVudGl0eSx0cmFuc2Zvcm06Yi5pZGVudGl0eSx0cmFuc3BvcnQ6bnVsbH0sZD1iLmlzU3RyaW5nKGQpP3t1cmw6ZH06ZCxkPWIubWl4aW4oZSxkKSwhZC51cmwmJmEuZXJyb3IoXCJwcmVmZXRjaCByZXF1aXJlcyB1cmwgdG8gYmUgc2V0XCIpLGQudHJhbnNmb3JtPWQuZmlsdGVyfHxkLnRyYW5zZm9ybSxkLmNhY2hlS2V5PWQuY2FjaGVLZXl8fGQudXJsLGQudGh1bWJwcmludD1jK2QudGh1bWJwcmludCxkLnRyYW5zcG9ydD1kLnRyYW5zcG9ydD9oKGQudHJhbnNwb3J0KTphLmFqYXgsZCk6bnVsbH1mdW5jdGlvbiBlKGMpe3ZhciBkO2lmKGMpcmV0dXJuIGQ9e3VybDpudWxsLGNhY2hlOiEwLHByZXBhcmU6bnVsbCxyZXBsYWNlOm51bGwsd2lsZGNhcmQ6bnVsbCxsaW1pdGVyOm51bGwscmF0ZUxpbWl0Qnk6XCJkZWJvdW5jZVwiLHJhdGVMaW1pdFdhaXQ6MzAwLHRyYW5zZm9ybTpiLmlkZW50aXR5LHRyYW5zcG9ydDpudWxsfSxjPWIuaXNTdHJpbmcoYyk/e3VybDpjfTpjLGM9Yi5taXhpbihkLGMpLCFjLnVybCYmYS5lcnJvcihcInJlbW90ZSByZXF1aXJlcyB1cmwgdG8gYmUgc2V0XCIpLGMudHJhbnNmb3JtPWMuZmlsdGVyfHxjLnRyYW5zZm9ybSxjLnByZXBhcmU9ZihjKSxjLmxpbWl0ZXI9ZyhjKSxjLnRyYW5zcG9ydD1jLnRyYW5zcG9ydD9oKGMudHJhbnNwb3J0KTphLmFqYXgsZGVsZXRlIGMucmVwbGFjZSxkZWxldGUgYy53aWxkY2FyZCxkZWxldGUgYy5yYXRlTGltaXRCeSxkZWxldGUgYy5yYXRlTGltaXRXYWl0LGN9ZnVuY3Rpb24gZihhKXtmdW5jdGlvbiBiKGEsYil7cmV0dXJuIGIudXJsPWYoYi51cmwsYSksYn1mdW5jdGlvbiBjKGEsYil7cmV0dXJuIGIudXJsPWIudXJsLnJlcGxhY2UoZyxlbmNvZGVVUklDb21wb25lbnQoYSkpLGJ9ZnVuY3Rpb24gZChhLGIpe3JldHVybiBifXZhciBlLGYsZztyZXR1cm4gZT1hLnByZXBhcmUsZj1hLnJlcGxhY2UsZz1hLndpbGRjYXJkLGU/ZTplPWY/YjphLndpbGRjYXJkP2M6ZH1mdW5jdGlvbiBnKGEpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmRlYm91bmNlKGMsYSl9fWZ1bmN0aW9uIGQoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLnRocm90dGxlKGMsYSl9fXZhciBlLGYsZztyZXR1cm4gZT1hLmxpbWl0ZXIsZj1hLnJhdGVMaW1pdEJ5LGc9YS5yYXRlTGltaXRXYWl0LGV8fChlPS9edGhyb3R0bGUkL2kudGVzdChmKT9kKGcpOmMoZykpLGV9ZnVuY3Rpb24gaChjKXtyZXR1cm4gZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZShhKXtiLmRlZmVyKGZ1bmN0aW9uKCl7Zy5yZXNvbHZlKGEpfSl9ZnVuY3Rpb24gZihhKXtiLmRlZmVyKGZ1bmN0aW9uKCl7Zy5yZWplY3QoYSl9KX12YXIgZz1hLkRlZmVycmVkKCk7cmV0dXJuIGMoZCxlLGYpLGd9fXJldHVybiBmdW5jdGlvbihjKXt2YXIgZixnO3JldHVybiBmPXtpbml0aWFsaXplOiEwLGlkZW50aWZ5OmIuc3RyaW5naWZ5LGRhdHVtVG9rZW5pemVyOm51bGwscXVlcnlUb2tlbml6ZXI6bnVsbCxzdWZmaWNpZW50OjUsc29ydGVyOm51bGwsbG9jYWw6W10scHJlZmV0Y2g6bnVsbCxyZW1vdGU6bnVsbH0sYz1iLm1peGluKGYsY3x8e30pLCFjLmRhdHVtVG9rZW5pemVyJiZhLmVycm9yKFwiZGF0dW1Ub2tlbml6ZXIgaXMgcmVxdWlyZWRcIiksIWMucXVlcnlUb2tlbml6ZXImJmEuZXJyb3IoXCJxdWVyeVRva2VuaXplciBpcyByZXF1aXJlZFwiKSxnPWMuc29ydGVyLGMuc29ydGVyPWc/ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc29ydChnKX06Yi5pZGVudGl0eSxjLmxvY2FsPWIuaXNGdW5jdGlvbihjLmxvY2FsKT9jLmxvY2FsKCk6Yy5sb2NhbCxjLnByZWZldGNoPWQoYy5wcmVmZXRjaCksYy5yZW1vdGU9ZShjLnJlbW90ZSksY319KCksbD1mdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGMoYSl7YT1rKGEpLHRoaXMuc29ydGVyPWEuc29ydGVyLHRoaXMuaWRlbnRpZnk9YS5pZGVudGlmeSx0aGlzLnN1ZmZpY2llbnQ9YS5zdWZmaWNpZW50LHRoaXMubG9jYWw9YS5sb2NhbCx0aGlzLnJlbW90ZT1hLnJlbW90ZT9uZXcgaihhLnJlbW90ZSk6bnVsbCx0aGlzLnByZWZldGNoPWEucHJlZmV0Y2g/bmV3IGkoYS5wcmVmZXRjaCk6bnVsbCx0aGlzLmluZGV4PW5ldyBoKHtpZGVudGlmeTp0aGlzLmlkZW50aWZ5LGRhdHVtVG9rZW5pemVyOmEuZGF0dW1Ub2tlbml6ZXIscXVlcnlUb2tlbml6ZXI6YS5xdWVyeVRva2VuaXplcn0pLGEuaW5pdGlhbGl6ZSE9PSExJiZ0aGlzLmluaXRpYWxpemUoKX12YXIgZTtyZXR1cm4gZT13aW5kb3cmJndpbmRvdy5CbG9vZGhvdW5kLGMubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cmJih3aW5kb3cuQmxvb2Rob3VuZD1lKSxjfSxjLnRva2VuaXplcnM9ZCxiLm1peGluKGMucHJvdG90eXBlLHtfX3R0QWRhcHRlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGQpe3JldHVybiBjLnNlYXJjaChhLGIsZCl9ZnVuY3Rpb24gYihhLGIpe3JldHVybiBjLnNlYXJjaChhLGIpfXZhciBjPXRoaXM7cmV0dXJuIHRoaXMucmVtb3RlP2E6Yn0sX2xvYWRQcmVmZXRjaDpmdW5jdGlvbigpe2Z1bmN0aW9uIGIoYSxiKXtyZXR1cm4gYT9jLnJlamVjdCgpOihlLmFkZChiKSxlLnByZWZldGNoLnN0b3JlKGUuaW5kZXguc2VyaWFsaXplKCkpLHZvaWQgYy5yZXNvbHZlKCkpfXZhciBjLGQsZT10aGlzO3JldHVybiBjPWEuRGVmZXJyZWQoKSx0aGlzLnByZWZldGNoPyhkPXRoaXMucHJlZmV0Y2guZnJvbUNhY2hlKCkpPyh0aGlzLmluZGV4LmJvb3RzdHJhcChkKSxjLnJlc29sdmUoKSk6dGhpcy5wcmVmZXRjaC5mcm9tTmV0d29yayhiKTpjLnJlc29sdmUoKSxjLnByb21pc2UoKX0sX2luaXRpYWxpemU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Yi5hZGQoYi5sb2NhbCl9dmFyIGI9dGhpcztyZXR1cm4gdGhpcy5jbGVhcigpLCh0aGlzLmluaXRQcm9taXNlPXRoaXMuX2xvYWRQcmVmZXRjaCgpKS5kb25lKGEpLHRoaXMuaW5pdFByb21pc2V9LGluaXRpYWxpemU6ZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMuaW5pdFByb21pc2V8fGE/dGhpcy5faW5pdGlhbGl6ZSgpOnRoaXMuaW5pdFByb21pc2V9LGFkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pbmRleC5hZGQoYSksdGhpc30sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPWIuaXNBcnJheShhKT9hOltdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0aGlzLmluZGV4LmdldChhKX0sc2VhcmNoOmZ1bmN0aW9uKGEsYyxkKXtmdW5jdGlvbiBlKGEpe3ZhciBjPVtdO2IuZWFjaChhLGZ1bmN0aW9uKGEpeyFiLnNvbWUoZixmdW5jdGlvbihiKXtyZXR1cm4gZy5pZGVudGlmeShhKT09PWcuaWRlbnRpZnkoYil9KSYmYy5wdXNoKGEpfSksZCYmZChjKX12YXIgZixnPXRoaXM7cmV0dXJuIGY9dGhpcy5zb3J0ZXIodGhpcy5pbmRleC5zZWFyY2goYSkpLGModGhpcy5yZW1vdGU/Zi5zbGljZSgpOmYpLHRoaXMucmVtb3RlJiZmLmxlbmd0aDx0aGlzLnN1ZmZpY2llbnQ/dGhpcy5yZW1vdGUuZ2V0KGEsZSk6dGhpcy5yZW1vdGUmJnRoaXMucmVtb3RlLmNhbmNlbExhc3RSZXF1ZXN0KCksdGhpc30sYWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXguYWxsKCl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXgucmVzZXQoKSx0aGlzfSxjbGVhclByZWZldGNoQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVmZXRjaCYmdGhpcy5wcmVmZXRjaC5jbGVhcigpLHRoaXN9LGNsZWFyUmVtb3RlQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gZy5yZXNldENhY2hlKCksdGhpc30sdHRBZGFwdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190dEFkYXB0ZXIoKX19KSxjfSgpO3JldHVybiBsfSk7IiwiKGZ1bmN0aW9uKGdsb2JhbCkge1xyXG4gIC8qKlxyXG4gICAqIFBvbHlmaWxsIFVSTFNlYXJjaFBhcmFtc1xyXG4gICAqXHJcbiAgICogSW5zcGlyZWQgZnJvbSA6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJSZWZsZWN0aW9uL3VybC1zZWFyY2gtcGFyYW1zL2Jsb2IvbWFzdGVyL3NyYy91cmwtc2VhcmNoLXBhcmFtcy5qc1xyXG4gICAqL1xyXG5cclxuICB2YXIgY2hlY2tJZkl0ZXJhdG9ySXNTdXBwb3J0ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiAhIVN5bWJvbC5pdGVyYXRvcjtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuXHJcbiAgdmFyIGl0ZXJhdG9yU3VwcG9ydGVkID0gY2hlY2tJZkl0ZXJhdG9ySXNTdXBwb3J0ZWQoKTtcclxuXHJcbiAgdmFyIGNyZWF0ZUl0ZXJhdG9yID0gZnVuY3Rpb24oaXRlbXMpIHtcclxuICAgIHZhciBpdGVyYXRvciA9IHtcclxuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKTtcclxuICAgICAgICByZXR1cm4geyBkb25lOiB2YWx1ZSA9PT0gdm9pZCAwLCB2YWx1ZTogdmFsdWUgfTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoaXRlcmF0b3JTdXBwb3J0ZWQpIHtcclxuICAgICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBpdGVyYXRvcjtcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXRlcmF0b3I7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIHBhcmFtIG5hbWUgYW5kIHZhbHVlcyBzaG91bGQgYmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmxlbmNvZGVkLXNlcmlhbGl6aW5nXHJcbiAgICogZW5jb2RlVVJJQ29tcG9uZW50KCkgcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0IGV4Y2VwdCBlbmNvZGluZyBzcGFjZXMgYXMgYCUyMGAgaW5zdGVhZCBvZiBgK2AuXHJcbiAgICovXHJcbiAgdmFyIHNlcmlhbGl6ZVBhcmFtID0gZnVuY3Rpb24odmFsdWUpIHtcclxuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLnJlcGxhY2UoLyUyMC9nLCAnKycpO1xyXG4gIH07XHJcblxyXG4gIHZhciBkZXNlcmlhbGl6ZVBhcmFtID0gZnVuY3Rpb24odmFsdWUpIHtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XHJcbiAgfTtcclxuXHJcbiAgdmFyIHBvbHlmaWxsVVJMU2VhcmNoUGFyYW1zID0gZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgdmFyIFVSTFNlYXJjaFBhcmFtcyA9IGZ1bmN0aW9uKHNlYXJjaFN0cmluZykge1xyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19lbnRyaWVzJywgeyB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IHt9IH0pO1xyXG4gICAgICB2YXIgdHlwZW9mU2VhcmNoU3RyaW5nID0gdHlwZW9mIHNlYXJjaFN0cmluZztcclxuXHJcbiAgICAgIGlmICh0eXBlb2ZTZWFyY2hTdHJpbmcgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgLy8gZG8gbm90aGluZ1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZlNlYXJjaFN0cmluZyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBpZiAoc2VhcmNoU3RyaW5nICE9PSAnJykge1xyXG4gICAgICAgICAgdGhpcy5fZnJvbVN0cmluZyhzZWFyY2hTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChzZWFyY2hTdHJpbmcgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHNlYXJjaFN0cmluZy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XHJcbiAgICAgICAgICBfdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKChzZWFyY2hTdHJpbmcgIT09IG51bGwpICYmICh0eXBlb2ZTZWFyY2hTdHJpbmcgPT09ICdvYmplY3QnKSkge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VhcmNoU3RyaW5nKSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWFyY2hTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGVudHJ5ID0gc2VhcmNoU3RyaW5nW2ldO1xyXG4gICAgICAgICAgICBpZiAoKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbnRyeSkgPT09ICdbb2JqZWN0IEFycmF5XScpIHx8IChlbnRyeS5sZW5ndGggIT09IDIpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBlbmQoZW50cnlbMF0sIGVudHJ5WzFdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBbc3RyaW5nLCBhbnldIGFzIGVudHJ5IGF0IGluZGV4ICcgKyBpICsgJyBvZiBVUkxTZWFyY2hQYXJhbXNcXCdzIGlucHV0Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIHNlYXJjaFN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoc2VhcmNoU3RyaW5nLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFwcGVuZChrZXksIHNlYXJjaFN0cmluZ1trZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBpbnB1dFxcJ3MgdHlwZSBmb3IgVVJMU2VhcmNoUGFyYW1zJyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdmFyIHByb3RvID0gVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcclxuXHJcbiAgICBwcm90by5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xyXG4gICAgICBpZiAobmFtZSBpbiB0aGlzLl9lbnRyaWVzKSB7XHJcbiAgICAgICAgdGhpcy5fZW50cmllc1tuYW1lXS5wdXNoKFN0cmluZyh2YWx1ZSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2VudHJpZXNbbmFtZV0gPSBbU3RyaW5nKHZhbHVlKV07XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcHJvdG8uZGVsZXRlID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICBkZWxldGUgdGhpcy5fZW50cmllc1tuYW1lXTtcclxuICAgIH07XHJcblxyXG4gICAgcHJvdG8uZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICByZXR1cm4gKG5hbWUgaW4gdGhpcy5fZW50cmllcykgPyB0aGlzLl9lbnRyaWVzW25hbWVdWzBdIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgcHJvdG8uZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICByZXR1cm4gKG5hbWUgaW4gdGhpcy5fZW50cmllcykgPyB0aGlzLl9lbnRyaWVzW25hbWVdLnNsaWNlKDApIDogW107XHJcbiAgICB9O1xyXG5cclxuICAgIHByb3RvLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgICAgcmV0dXJuIChuYW1lIGluIHRoaXMuX2VudHJpZXMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcm90by5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9lbnRyaWVzW25hbWVdID0gW1N0cmluZyh2YWx1ZSldO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcm90by5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcclxuICAgICAgdmFyIGVudHJpZXM7XHJcbiAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5fZW50cmllcykge1xyXG4gICAgICAgIGlmICh0aGlzLl9lbnRyaWVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICAgICAgICBlbnRyaWVzID0gdGhpcy5fZW50cmllc1tuYW1lXTtcclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIGVudHJpZXNbaV0sIG5hbWUsIHRoaXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcm90by5rZXlzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgIHZhciBpdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKG5hbWUpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yKGl0ZW1zKTtcclxuICAgIH07XHJcblxyXG4gICAgcHJvdG8udmFsdWVzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgIHZhciBpdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKHZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBjcmVhdGVJdGVyYXRvcihpdGVtcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHByb3RvLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgdmFyIGl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xyXG4gICAgICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3IoaXRlbXMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoaXRlcmF0b3JTdXBwb3J0ZWQpIHtcclxuICAgICAgcHJvdG9bU3ltYm9sLml0ZXJhdG9yXSA9IHByb3RvLmVudHJpZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdG8udG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcclxuICAgICAgdmFyIHNlYXJjaEFycmF5ID0gW107XHJcbiAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xyXG4gICAgICAgIHNlYXJjaEFycmF5LnB1c2goc2VyaWFsaXplUGFyYW0obmFtZSkgKyAnPScgKyBzZXJpYWxpemVQYXJhbSh2YWx1ZSkpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHNlYXJjaEFycmF5LmpvaW4oJyYnKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIGdsb2JhbC5VUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XHJcbiAgfTtcclxuXHJcbiAgdmFyIGNoZWNrSWZVUkxTZWFyY2hQYXJhbXNTdXBwb3J0ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBVUkxTZWFyY2hQYXJhbXMgPSBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zO1xyXG5cclxuICAgICAgcmV0dXJuIChuZXcgVVJMU2VhcmNoUGFyYW1zKCc/YT0xJykudG9TdHJpbmcoKSA9PT0gJ2E9MScpICYmICh0eXBlb2YgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zZXQgPT09ICdmdW5jdGlvbicpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaWYgKCFjaGVja0lmVVJMU2VhcmNoUGFyYW1zU3VwcG9ydGVkKCkpIHtcclxuICAgIHBvbHlmaWxsVVJMU2VhcmNoUGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICB2YXIgcHJvdG8gPSBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcclxuXHJcbiAgaWYgKHR5cGVvZiBwcm90by5zb3J0ICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICBwcm90by5zb3J0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIHZhciBpdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pO1xyXG4gICAgICAgIGlmICghX3RoaXMuX2VudHJpZXMpIHtcclxuICAgICAgICAgIF90aGlzLmRlbGV0ZShuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpdGVtcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcclxuICAgICAgICBpZiAoYVswXSA8IGJbMF0pIHtcclxuICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFbMF0gPiBiWzBdKSB7XHJcbiAgICAgICAgICByZXR1cm4gKzE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChfdGhpcy5fZW50cmllcykgeyAvLyBmb3JjZSByZXNldCBiZWNhdXNlIElFIGtlZXBzIGtleXMgaW5kZXhcclxuICAgICAgICBfdGhpcy5fZW50cmllcyA9IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFwcGVuZChpdGVtc1tpXVswXSwgaXRlbXNbaV1bMV0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaWYgKHR5cGVvZiBwcm90by5fZnJvbVN0cmluZyAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCAnX2Zyb21TdHJpbmcnLCB7XHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiBmdW5jdGlvbihzZWFyY2hTdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5fZW50cmllcykge1xyXG4gICAgICAgICAgdGhpcy5fZW50cmllcyA9IHt9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIga2V5cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XHJcbiAgICAgICAgICAgIGtleXMucHVzaChuYW1lKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlKGtleXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nLnJlcGxhY2UoL15cXD8vLCAnJyk7XHJcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzZWFyY2hTdHJpbmcuc3BsaXQoJyYnKTtcclxuICAgICAgICB2YXIgYXR0cmlidXRlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXS5zcGxpdCgnPScpO1xyXG4gICAgICAgICAgdGhpcy5hcHBlbmQoXHJcbiAgICAgICAgICAgIGRlc2VyaWFsaXplUGFyYW0oYXR0cmlidXRlWzBdKSxcclxuICAgICAgICAgICAgKGF0dHJpYnV0ZS5sZW5ndGggPiAxKSA/IGRlc2VyaWFsaXplUGFyYW0oYXR0cmlidXRlWzFdKSA6ICcnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBIVE1MQW5jaG9yRWxlbWVudFxyXG5cclxufSkoXHJcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSA/IGdsb2JhbFxyXG4gICAgOiAoKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSA/IHdpbmRvd1xyXG4gICAgOiAoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgPyBzZWxmIDogdGhpcykpXHJcbik7XHJcblxyXG4oZnVuY3Rpb24oZ2xvYmFsKSB7XHJcbiAgLyoqXHJcbiAgICogUG9seWZpbGwgVVJMXHJcbiAgICpcclxuICAgKiBJbnNwaXJlZCBmcm9tIDogaHR0cHM6Ly9naXRodWIuY29tL2Fydi9ET00tVVJMLVBvbHlmaWxsL2Jsb2IvbWFzdGVyL3NyYy91cmwuanNcclxuICAgKi9cclxuXHJcbiAgdmFyIGNoZWNrSWZVUkxJc1N1cHBvcnRlZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHUgPSBuZXcgZ2xvYmFsLlVSTCgnYicsICdodHRwOi8vYScpO1xyXG4gICAgICB1LnBhdGhuYW1lID0gJ2MgZCc7XHJcbiAgICAgIHJldHVybiAodS5ocmVmID09PSAnaHR0cDovL2EvYyUyMGQnKSAmJiB1LnNlYXJjaFBhcmFtcztcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG5cclxuICB2YXIgcG9seWZpbGxVUkwgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBfVVJMID0gZ2xvYmFsLlVSTDtcclxuXHJcbiAgICB2YXIgVVJMID0gZnVuY3Rpb24odXJsLCBiYXNlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykgdXJsID0gU3RyaW5nKHVybCk7XHJcblxyXG4gICAgICAvLyBPbmx5IGNyZWF0ZSBhbm90aGVyIGRvY3VtZW50IGlmIHRoZSBiYXNlIGlzIGRpZmZlcmVudCBmcm9tIGN1cnJlbnQgbG9jYXRpb24uXHJcbiAgICAgIHZhciBkb2MgPSBkb2N1bWVudCwgYmFzZUVsZW1lbnQ7XHJcbiAgICAgIGlmIChiYXNlICYmIChnbG9iYWwubG9jYXRpb24gPT09IHZvaWQgMCB8fCBiYXNlICE9PSBnbG9iYWwubG9jYXRpb24uaHJlZikpIHtcclxuICAgICAgICBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoJycpO1xyXG4gICAgICAgIGJhc2VFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2Jhc2UnKTtcclxuICAgICAgICBiYXNlRWxlbWVudC5ocmVmID0gYmFzZTtcclxuICAgICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZChiYXNlRWxlbWVudCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmIChiYXNlRWxlbWVudC5ocmVmLmluZGV4T2YoYmFzZSkgIT09IDApIHRocm93IG5ldyBFcnJvcihiYXNlRWxlbWVudC5ocmVmKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVVJMIHVuYWJsZSB0byBzZXQgYmFzZSAnICsgYmFzZSArICcgZHVlIHRvICcgKyBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBhbmNob3JFbGVtZW50LmhyZWYgPSB1cmw7XHJcbiAgICAgIGlmIChiYXNlRWxlbWVudCkge1xyXG4gICAgICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKGFuY2hvckVsZW1lbnQpO1xyXG4gICAgICAgIGFuY2hvckVsZW1lbnQuaHJlZiA9IGFuY2hvckVsZW1lbnQuaHJlZjsgLy8gZm9yY2UgaHJlZiB0byByZWZyZXNoXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhbmNob3JFbGVtZW50LnByb3RvY29sID09PSAnOicgfHwgIS86Ly50ZXN0KGFuY2hvckVsZW1lbnQuaHJlZikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIFVSTCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19hbmNob3JFbGVtZW50Jywge1xyXG4gICAgICAgIHZhbHVlOiBhbmNob3JFbGVtZW50XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgIC8vIGNyZWF0ZSBhIGxpbmtlZCBzZWFyY2hQYXJhbXMgd2hpY2ggcmVmbGVjdCBpdHMgY2hhbmdlcyBvbiBVUkxcclxuICAgICAgdmFyIHNlYXJjaFBhcmFtcyA9IG5ldyBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zKHRoaXMuc2VhcmNoKTtcclxuICAgICAgdmFyIGVuYWJsZVNlYXJjaFVwZGF0ZSA9IHRydWU7XHJcbiAgICAgIHZhciBlbmFibGVTZWFyY2hQYXJhbXNVcGRhdGUgPSB0cnVlO1xyXG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICBbJ2FwcGVuZCcsICdkZWxldGUnLCAnc2V0J10uZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKSB7XHJcbiAgICAgICAgdmFyIG1ldGhvZCA9IHNlYXJjaFBhcmFtc1ttZXRob2ROYW1lXTtcclxuICAgICAgICBzZWFyY2hQYXJhbXNbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIG1ldGhvZC5hcHBseShzZWFyY2hQYXJhbXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICBpZiAoZW5hYmxlU2VhcmNoVXBkYXRlKSB7XHJcbiAgICAgICAgICAgIGVuYWJsZVNlYXJjaFBhcmFtc1VwZGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBfdGhpcy5zZWFyY2ggPSBzZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgZW5hYmxlU2VhcmNoUGFyYW1zVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2VhcmNoUGFyYW1zJywge1xyXG4gICAgICAgIHZhbHVlOiBzZWFyY2hQYXJhbXMsXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHZhciBzZWFyY2ggPSB2b2lkIDA7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX3VwZGF0ZVNlYXJjaFBhcmFtcycsIHtcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggIT09IHNlYXJjaCkge1xyXG4gICAgICAgICAgICBzZWFyY2ggPSB0aGlzLnNlYXJjaDtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZVNlYXJjaFBhcmFtc1VwZGF0ZSkge1xyXG4gICAgICAgICAgICAgIGVuYWJsZVNlYXJjaFVwZGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoUGFyYW1zLl9mcm9tU3RyaW5nKHRoaXMuc2VhcmNoKTtcclxuICAgICAgICAgICAgICBlbmFibGVTZWFyY2hVcGRhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgdmFyIHByb3RvID0gVVJMLnByb3RvdHlwZTtcclxuXHJcbiAgICB2YXIgbGlua1VSTFdpdGhBbmNob3JBdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyaWJ1dGVOYW1lKSB7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgYXR0cmlidXRlTmFtZSwge1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fYW5jaG9yRWxlbWVudFthdHRyaWJ1dGVOYW1lXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnRbYXR0cmlidXRlTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIFsnaGFzaCcsICdob3N0JywgJ2hvc3RuYW1lJywgJ3BvcnQnLCAncHJvdG9jb2wnXVxyXG4gICAgICAuZm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGVOYW1lKSB7XHJcbiAgICAgICAgbGlua1VSTFdpdGhBbmNob3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgJ3NlYXJjaCcsIHtcclxuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYW5jaG9yRWxlbWVudFsnc2VhcmNoJ107XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9hbmNob3JFbGVtZW50WydzZWFyY2gnXSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaFBhcmFtcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwcm90bywge1xyXG5cclxuICAgICAgJ3RvU3RyaW5nJzoge1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuaHJlZjtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG5cclxuICAgICAgJ2hyZWYnOiB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9hbmNob3JFbGVtZW50LmhyZWYucmVwbGFjZSgvXFw/JC8sICcnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQuaHJlZiA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoUGFyYW1zKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAncGF0aG5hbWUnOiB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLl9hbmNob3JFbGVtZW50LnBhdGhuYW1lLnJlcGxhY2UoLyheXFwvPykvLCAnLycpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5fYW5jaG9yRWxlbWVudC5wYXRobmFtZSA9IHZhbHVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxyXG4gICAgICB9LFxyXG5cclxuICAgICAgJ29yaWdpbic6IHtcclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgLy8gZ2V0IGV4cGVjdGVkIHBvcnQgZnJvbSBwcm90b2NvbFxyXG4gICAgICAgICAgdmFyIGV4cGVjdGVkUG9ydCA9IHsgJ2h0dHA6JzogODAsICdodHRwczonOiA0NDMsICdmdHA6JzogMjEgfVt0aGlzLl9hbmNob3JFbGVtZW50LnByb3RvY29sXTtcclxuICAgICAgICAgIC8vIGFkZCBwb3J0IHRvIG9yaWdpbiBpZiwgZXhwZWN0ZWQgcG9ydCBpcyBkaWZmZXJlbnQgdGhhbiBhY3R1YWwgcG9ydFxyXG4gICAgICAgICAgLy8gYW5kIGl0IGlzIG5vdCBlbXB0eSBmLmUgaHR0cDovL2Zvbzo4MDgwXHJcbiAgICAgICAgICAvLyA4MDgwICE9IDgwICYmIDgwODAgIT0gJydcclxuICAgICAgICAgIHZhciBhZGRQb3J0VG9PcmlnaW4gPSB0aGlzLl9hbmNob3JFbGVtZW50LnBvcnQgIT0gZXhwZWN0ZWRQb3J0ICYmXHJcbiAgICAgICAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQucG9ydCAhPT0gJyc7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2FuY2hvckVsZW1lbnQucHJvdG9jb2wgK1xyXG4gICAgICAgICAgICAnLy8nICtcclxuICAgICAgICAgICAgdGhpcy5fYW5jaG9yRWxlbWVudC5ob3N0bmFtZSArXHJcbiAgICAgICAgICAgIChhZGRQb3J0VG9PcmlnaW4gPyAoJzonICsgdGhpcy5fYW5jaG9yRWxlbWVudC5wb3J0KSA6ICcnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcclxuICAgICAgfSxcclxuXHJcbiAgICAgICdwYXNzd29yZCc6IHsgLy8gVE9ET1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAndXNlcm5hbWUnOiB7IC8vIFRPRE9cclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgVVJMLmNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uKGJsb2IpIHtcclxuICAgICAgcmV0dXJuIF9VUkwuY3JlYXRlT2JqZWN0VVJMLmFwcGx5KF9VUkwsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwgPSBmdW5jdGlvbih1cmwpIHtcclxuICAgICAgcmV0dXJuIF9VUkwucmV2b2tlT2JqZWN0VVJMLmFwcGx5KF9VUkwsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGdsb2JhbC5VUkwgPSBVUkw7XHJcblxyXG4gIH07XHJcblxyXG4gIGlmICghY2hlY2tJZlVSTElzU3VwcG9ydGVkKCkpIHtcclxuICAgIHBvbHlmaWxsVVJMKCk7XHJcbiAgfVxyXG5cclxuICBpZiAoKGdsb2JhbC5sb2NhdGlvbiAhPT0gdm9pZCAwKSAmJiAhKCdvcmlnaW4nIGluIGdsb2JhbC5sb2NhdGlvbikpIHtcclxuICAgIHZhciBnZXRPcmlnaW4gPSBmdW5jdGlvbigpIHtcclxuICAgICAgcmV0dXJuIGdsb2JhbC5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBnbG9iYWwubG9jYXRpb24uaG9zdG5hbWUgKyAoZ2xvYmFsLmxvY2F0aW9uLnBvcnQgPyAoJzonICsgZ2xvYmFsLmxvY2F0aW9uLnBvcnQpIDogJycpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLmxvY2F0aW9uLCAnb3JpZ2luJywge1xyXG4gICAgICAgIGdldDogZ2V0T3JpZ2luLFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5vcmlnaW4gPSBnZXRPcmlnaW4oKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59KShcclxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpID8gZ2xvYmFsXHJcbiAgICA6ICgodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gd2luZG93XHJcbiAgICA6ICgodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSA/IHNlbGYgOiB0aGlzKSlcclxuKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJqUXVlcnlcIl07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5ubWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cblxuLy8gRGVwZW5kZW5jaWVzXG5cbmltcG9ydCAncHJlc3Rha2l0L2Rpc3QvanMvcHJlc3Rhc2hvcC11aS1raXQnO1xuaW1wb3J0ICdqcXVlcnktdWktZGlzdC9qcXVlcnktdWknO1xuaW1wb3J0ICdib290c3RyYXAtdG9rZW5maWVsZCc7XG5pbXBvcnQgJ2VvbmFzZGFuLWJvb3RzdHJhcC1kYXRldGltZXBpY2tlcic7XG5pbXBvcnQgJ2p3ZXJ0eSc7XG5pbXBvcnQgJ21hZ25pZmljLXBvcHVwJztcbmltcG9ydCAnZHJvcHpvbmUnO1xuaW1wb3J0ICd0eXBlYWhlYWQuanMvZGlzdC90eXBlYWhlYWQuanF1ZXJ5JztcbmltcG9ydCAndHlwZWFoZWFkLmpzL2Rpc3QvYmxvb2Rob3VuZC5taW4nO1xuaW1wb3J0ICdzcHJpbnRmLWpzJztcbmltcG9ydCAnanF1ZXJ5LXNlcmlhbGl6ZWpzb24nO1xuXG5pbXBvcnQgJ0BzY3NzL3RoZW1lLnNjc3MnO1xuXG4vLyBUaGVtZSBKYXZhc2NyaXB0XG5pbXBvcnQgTmF2QmFyIGZyb20gJ0Bqcy9uYXZfYmFyJztcblxuLy8gdGhpcyBuZWVkcyB0byBiZSBwb3J0ZWQgaW50byB0aGUgVUkga2l0XG5pbXBvcnQgJ0Bqcy9jbGlja2FibGUtZHJvcGRvd24nO1xuXG5pbXBvcnQgJ0Bqcy9tYWludGVuYW5jZS1wYWdlJztcbmltcG9ydCAnQGpzL3RyYW5zbGF0aW9uLXBhZ2UvaW5kZXgnO1xuXG5pbXBvcnQgSGVhZGVyIGZyb20gJ0Bqcy9oZWFkZXInO1xuXG5pbXBvcnQgaW5pdERhdGVQaWNrZXJzIGZyb20gJ0Bqcy9hcHAvdXRpbHMvZGF0ZXBpY2tlcic7XG5pbXBvcnQgaW5pdEludmFsaWRGaWVsZHMgZnJvbSAnQGpzL2FwcC91dGlscy9maWVsZHMnO1xuaW1wb3J0IGluaXRFbWFpbEZpZWxkcyBmcm9tICdAanMvYXBwL3V0aWxzL2VtYWlsLWlkbic7XG5pbXBvcnQgaW5pdE51bWJlckNvbW1hVHJhbnNmb3JtZXIgZnJvbSAnQGpzL2FwcC91dGlscy9udW1iZXItY29tbWEtdHJhbnNmb3JtZXInO1xuaW1wb3J0IGluaXRQcmVzdGFzaG9wQ29tcG9uZW50cyBmcm9tICdAanMvYXBwL3V0aWxzL2luaXQtY29tcG9uZW50cyc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLy8gVGhlbWUgSmF2YXNjcmlwdFxud2luZG93LkRyb3B6b25lLmF1dG9EaXNjb3ZlciA9IGZhbHNlO1xuXG5uZXcgTmF2QmFyKCk7XG5uZXcgSGVhZGVyKCk7XG5cbiQoKCkgPT4ge1xuICBpbml0UHJlc3Rhc2hvcENvbXBvbmVudHMoKTtcbiAgaW5pdERhdGVQaWNrZXJzKCk7XG4gIGluaXRJbnZhbGlkRmllbGRzKCk7XG4gIGluaXRFbWFpbEZpZWxkcygnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyk7XG4gIGluaXROdW1iZXJDb21tYVRyYW5zZm9ybWVyKCcuanMtY29tbWEtdHJhbnNmb3JtZXInKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==